n9router 0.4.49 → 0.4.50

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 (979) hide show
  1. package/README.md +2 -0
  2. package/app/.next/BUILD_ID +1 -1
  3. package/app/.next/app-path-routes-manifest.json +19 -14
  4. package/app/.next/build-manifest.json +2 -2
  5. package/app/.next/prerender-manifest.json +3 -3
  6. package/app/.next/routes-manifest.json +32 -0
  7. package/app/.next/server/app/(dashboard)/dashboard/basic-chat/page.js +2 -2
  8. package/app/.next/server/app/(dashboard)/dashboard/basic-chat/page.js.nft.json +1 -1
  9. package/app/.next/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
  10. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js +2 -2
  11. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js.nft.json +1 -1
  12. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page_client-reference-manifest.js +1 -1
  13. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page.js +2 -2
  14. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
  15. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  16. package/app/.next/server/app/(dashboard)/dashboard/combos/page.js +2 -2
  17. package/app/.next/server/app/(dashboard)/dashboard/combos/page.js.nft.json +1 -1
  18. package/app/.next/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  19. package/app/.next/server/app/(dashboard)/dashboard/console-log/page.js +2 -2
  20. package/app/.next/server/app/(dashboard)/dashboard/console-log/page.js.nft.json +1 -1
  21. package/app/.next/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
  22. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page.js +2 -2
  23. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
  24. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  25. package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js +2 -2
  26. package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js.nft.json +1 -1
  27. package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
  28. package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js +2 -2
  29. package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js.nft.json +1 -1
  30. package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -1
  31. package/app/.next/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js +2 -2
  32. package/app/.next/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js.nft.json +1 -1
  33. package/app/.next/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +1 -1
  34. package/app/.next/server/app/(dashboard)/dashboard/media-providers/web/page.js +2 -2
  35. package/app/.next/server/app/(dashboard)/dashboard/media-providers/web/page.js.nft.json +1 -1
  36. package/app/.next/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +1 -1
  37. package/app/.next/server/app/(dashboard)/dashboard/mitm/page.js +2 -2
  38. package/app/.next/server/app/(dashboard)/dashboard/mitm/page.js.nft.json +1 -1
  39. package/app/.next/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
  40. package/app/.next/server/app/(dashboard)/dashboard/page.js +2 -2
  41. package/app/.next/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
  42. package/app/.next/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  43. package/app/.next/server/app/(dashboard)/dashboard/profile/page.js +2 -2
  44. package/app/.next/server/app/(dashboard)/dashboard/profile/page.js.nft.json +1 -1
  45. package/app/.next/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  46. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page.js +5 -5
  47. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page.js.nft.json +1 -1
  48. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  49. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page.js +2 -2
  50. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page.js.nft.json +1 -1
  51. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  52. package/app/.next/server/app/(dashboard)/dashboard/providers/page.js +2 -2
  53. package/app/.next/server/app/(dashboard)/dashboard/providers/page.js.nft.json +1 -1
  54. package/app/.next/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  55. package/app/.next/server/app/(dashboard)/dashboard/proxy-pools/page.js +3 -3
  56. package/app/.next/server/app/(dashboard)/dashboard/proxy-pools/page.js.nft.json +1 -1
  57. package/app/.next/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
  58. package/app/.next/server/app/(dashboard)/dashboard/pxpipe/page.js +2 -2
  59. package/app/.next/server/app/(dashboard)/dashboard/pxpipe/page.js.nft.json +1 -1
  60. package/app/.next/server/app/(dashboard)/dashboard/pxpipe/page_client-reference-manifest.js +1 -1
  61. package/app/.next/server/app/(dashboard)/dashboard/quota/page.js +2 -2
  62. package/app/.next/server/app/(dashboard)/dashboard/quota/page.js.nft.json +1 -1
  63. package/app/.next/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
  64. package/app/.next/server/app/(dashboard)/dashboard/skills/page.js +2 -2
  65. package/app/.next/server/app/(dashboard)/dashboard/skills/page.js.nft.json +1 -1
  66. package/app/.next/server/app/(dashboard)/dashboard/skills/page_client-reference-manifest.js +1 -1
  67. package/app/.next/server/app/(dashboard)/dashboard/token-saver/page.js +2 -2
  68. package/app/.next/server/app/(dashboard)/dashboard/token-saver/page.js.nft.json +1 -1
  69. package/app/.next/server/app/(dashboard)/dashboard/token-saver/page_client-reference-manifest.js +1 -1
  70. package/app/.next/server/app/(dashboard)/dashboard/translator/page.js +2 -2
  71. package/app/.next/server/app/(dashboard)/dashboard/translator/page.js.nft.json +1 -1
  72. package/app/.next/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  73. package/app/.next/server/app/(dashboard)/dashboard/usage/page.js +3 -3
  74. package/app/.next/server/app/(dashboard)/dashboard/usage/page.js.nft.json +1 -1
  75. package/app/.next/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  76. package/app/.next/server/app/_global-error/page.js +2 -2
  77. package/app/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  78. package/app/.next/server/app/_global-error.html +1 -1
  79. package/app/.next/server/app/_global-error.rsc +1 -1
  80. package/app/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  81. package/app/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  82. package/app/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  83. package/app/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  84. package/app/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  85. package/app/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  86. package/app/.next/server/app/_not-found/page.js +2 -2
  87. package/app/.next/server/app/_not-found/page.js.nft.json +1 -1
  88. package/app/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  89. package/app/.next/server/app/_not-found.html +1 -1
  90. package/app/.next/server/app/_not-found.rsc +4 -4
  91. package/app/.next/server/app/_not-found.segments/_full.segment.rsc +4 -4
  92. package/app/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  93. package/app/.next/server/app/_not-found.segments/_index.segment.rsc +4 -4
  94. package/app/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  95. package/app/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  96. package/app/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  97. package/app/.next/server/app/api/antigravity-app/route.js +1 -1
  98. package/app/.next/server/app/api/antigravity-app-v2/route.js +1 -1
  99. package/app/.next/server/app/api/antigravity-ide/route.js +1 -1
  100. package/app/.next/server/app/api/antigravity-targets/route.js +1 -1
  101. package/app/.next/server/app/api/antigravity-tools/import/route.js +1 -1
  102. package/app/.next/server/app/api/antigravity-tools/import/route.js.nft.json +1 -1
  103. package/app/.next/server/app/api/antigravity-tools/import-refresh-tokens/route.js +1 -1
  104. package/app/.next/server/app/api/antigravity-tools/import-refresh-tokens/route.js.nft.json +1 -1
  105. package/app/.next/server/app/api/auth/login/route.js +1 -1
  106. package/app/.next/server/app/api/auth/logout/route.js +1 -1
  107. package/app/.next/server/app/api/auth/oidc/callback/route.js +1 -1
  108. package/app/.next/server/app/api/auth/oidc/start/route.js +1 -1
  109. package/app/.next/server/app/api/auth/oidc/test/route.js +1 -1
  110. package/app/.next/server/app/api/auth/reset-password/route.js +1 -1
  111. package/app/.next/server/app/api/auth/status/route.js +1 -1
  112. package/app/.next/server/app/api/cli-tools/all-statuses/route.js +12 -4
  113. package/app/.next/server/app/api/cli-tools/all-statuses/route.js.nft.json +1 -1
  114. package/app/.next/server/app/api/cli-tools/antigravity-mitm/alias/route.js +1 -1
  115. package/app/.next/server/app/api/cli-tools/antigravity-mitm/alias/route.js.nft.json +1 -1
  116. package/app/.next/server/app/api/cli-tools/antigravity-mitm/route.js +1 -1
  117. package/app/.next/server/app/api/cli-tools/antigravity-mitm/route.js.nft.json +1 -1
  118. package/app/.next/server/app/api/cli-tools/claude-settings/route.js +2 -2
  119. package/app/.next/server/app/api/cli-tools/cline-settings/route.js +2 -2
  120. package/app/.next/server/app/api/cli-tools/codex-settings/route.js +1 -1
  121. package/app/.next/server/app/api/cli-tools/copilot-settings/route.js +2 -2
  122. package/app/.next/server/app/api/cli-tools/cowork-mcp-registry/route.js +2 -2
  123. package/app/.next/server/app/api/cli-tools/cowork-mcp-tools/route.js +1 -1
  124. package/app/.next/server/app/api/cli-tools/cowork-settings/route.js +1 -1
  125. package/app/.next/server/app/api/cli-tools/cowork-settings/route.js.nft.json +1 -1
  126. package/app/.next/server/app/api/cli-tools/cursor-byok/jobs/[jobId]/events/route.js +2 -2
  127. package/app/.next/server/app/api/cli-tools/cursor-byok/jobs/[jobId]/sudo/route.js +1 -1
  128. package/app/.next/server/app/api/cli-tools/cursor-byok/jobs/route.js +1 -1
  129. package/app/.next/server/app/api/cli-tools/cursor-byok/route.js +1 -1
  130. package/app/.next/server/app/api/cli-tools/deepseek-tui-settings/route.js +3 -3
  131. package/app/.next/server/app/api/cli-tools/droid-settings/route.js +1 -1
  132. package/app/.next/server/app/api/cli-tools/grok-build-settings/route.js +10 -0
  133. package/app/.next/server/app/api/cli-tools/grok-build-settings/route.js.nft.json +1 -0
  134. package/app/.next/server/app/api/cli-tools/grok-build-settings/route_client-reference-manifest.js +1 -0
  135. package/app/.next/server/app/api/cli-tools/hermes-settings/route.js +2 -2
  136. package/app/.next/server/app/api/cli-tools/jcode-settings/route.js +2 -2
  137. package/app/.next/server/app/api/cli-tools/kilo-settings/route.js +2 -2
  138. package/app/.next/server/app/api/cli-tools/openclaw-settings/route.js +2 -2
  139. package/app/.next/server/app/api/cli-tools/opencode-settings/route.js +1 -1
  140. package/app/.next/server/app/api/combos/[id]/route.js +1 -1
  141. package/app/.next/server/app/api/combos/route.js +1 -1
  142. package/app/.next/server/app/api/donate/route.js +1 -1
  143. package/app/.next/server/app/api/headroom/extras/route.js +1 -1
  144. package/app/.next/server/app/api/headroom/proxy/[...path]/route.js +1 -1
  145. package/app/.next/server/app/api/headroom/restart/route.js +1 -1
  146. package/app/.next/server/app/api/headroom/start/route.js +1 -1
  147. package/app/.next/server/app/api/headroom/status/route.js +1 -1
  148. package/app/.next/server/app/api/headroom/stop/route.js +1 -1
  149. package/app/.next/server/app/api/health/route.js +1 -1
  150. package/app/.next/server/app/api/init/route.js +1 -1
  151. package/app/.next/server/app/api/internal/account-health/route.js +1 -1
  152. package/app/.next/server/app/api/internal/request-detail/route.js +1 -1
  153. package/app/.next/server/app/api/internal/usage/route.js +1 -1
  154. package/app/.next/server/app/api/keys/[id]/reset-usage/route.js +1 -1
  155. package/app/.next/server/app/api/keys/[id]/route.js +1 -1
  156. package/app/.next/server/app/api/keys/[id]/usage/route.js +1 -1
  157. package/app/.next/server/app/api/keys/route.js +1 -1
  158. package/app/.next/server/app/api/locale/route.js +1 -1
  159. package/app/.next/server/app/api/mcp/[plugin]/message/route.js +1 -1
  160. package/app/.next/server/app/api/mcp/[plugin]/sse/route.js +5 -5
  161. package/app/.next/server/app/api/media-providers/tts/deepgram/voices/route.js +1 -1
  162. package/app/.next/server/app/api/media-providers/tts/elevenlabs/voices/route.js +1 -1
  163. package/app/.next/server/app/api/media-providers/tts/elevenlabs/voices/route.js.nft.json +1 -1
  164. package/app/.next/server/app/api/media-providers/tts/inworld/voices/route.js +1 -1
  165. package/app/.next/server/app/api/media-providers/tts/minimax/voices/route.js +1 -1
  166. package/app/.next/server/app/api/media-providers/tts/voices/route.js +1 -1
  167. package/app/.next/server/app/api/media-providers/tts/voices/route.js.nft.json +1 -1
  168. package/app/.next/server/app/api/models/alias/route.js +1 -1
  169. package/app/.next/server/app/api/models/availability/route.js +1 -1
  170. package/app/.next/server/app/api/models/custom/route.js +1 -1
  171. package/app/.next/server/app/api/models/disabled/route.js +1 -1
  172. package/app/.next/server/app/api/models/route.js +1 -1
  173. package/app/.next/server/app/api/models/route.js.nft.json +1 -1
  174. package/app/.next/server/app/api/models/test/route.js +1 -1
  175. package/app/.next/server/app/api/models/test/route.js.nft.json +1 -1
  176. package/app/.next/server/app/api/oauth/[provider]/[action]/route.js +1 -1
  177. package/app/.next/server/app/api/oauth/[provider]/[action]/route.js.nft.json +1 -1
  178. package/app/.next/server/app/api/oauth/codex/bulk-import/route.js +1 -1
  179. package/app/.next/server/app/api/oauth/codex/bulk-import/route.js.nft.json +1 -1
  180. package/app/.next/server/app/api/oauth/codex/import-token/route.js +1 -1
  181. package/app/.next/server/app/api/oauth/codex/import-token/route.js.nft.json +1 -1
  182. package/app/.next/server/app/api/oauth/cursor/auto-import/route.js +2 -2
  183. package/app/.next/server/app/api/oauth/cursor/import/route.js +1 -1
  184. package/app/.next/server/app/api/oauth/cursor/import/route.js.nft.json +1 -1
  185. package/app/.next/server/app/api/oauth/gitlab/pat/route.js +1 -1
  186. package/app/.next/server/app/api/oauth/iflow/cookie/route.js +1 -1
  187. package/app/.next/server/app/api/oauth/kiro/api-key/route.js +1 -1
  188. package/app/.next/server/app/api/oauth/kiro/api-key/route.js.nft.json +1 -1
  189. package/app/.next/server/app/api/oauth/kiro/auto-import/route.js +1 -1
  190. package/app/.next/server/app/api/oauth/kiro/import/route.js +1 -1
  191. package/app/.next/server/app/api/oauth/kiro/import/route.js.nft.json +1 -1
  192. package/app/.next/server/app/api/oauth/kiro/import-cli-proxy/route.js +1 -1
  193. package/app/.next/server/app/api/oauth/kiro/social-authorize/route.js +1 -1
  194. package/app/.next/server/app/api/oauth/kiro/social-authorize/route.js.nft.json +1 -1
  195. package/app/.next/server/app/api/oauth/kiro/social-exchange/route.js +1 -1
  196. package/app/.next/server/app/api/oauth/kiro/social-exchange/route.js.nft.json +1 -1
  197. package/app/.next/server/app/api/pricing/route.js +1 -1
  198. package/app/.next/server/app/api/provider-nodes/[id]/route.js +1 -1
  199. package/app/.next/server/app/api/provider-nodes/route.js +1 -1
  200. package/app/.next/server/app/api/provider-nodes/route.js.nft.json +1 -1
  201. package/app/.next/server/app/api/provider-nodes/validate/route.js +1 -1
  202. package/app/.next/server/app/api/providers/[id]/models/route.js +1 -1
  203. package/app/.next/server/app/api/providers/[id]/models/route.js.nft.json +1 -1
  204. package/app/.next/server/app/api/providers/[id]/route.js +1 -1
  205. package/app/.next/server/app/api/providers/[id]/test/route.js +1 -1
  206. package/app/.next/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
  207. package/app/.next/server/app/api/providers/[id]/test-models/route.js +1 -1
  208. package/app/.next/server/app/api/providers/[id]/test-models/route.js.nft.json +1 -1
  209. package/app/.next/server/app/api/providers/client/route.js +1 -1
  210. package/app/.next/server/app/api/providers/client/route.js.nft.json +1 -1
  211. package/app/.next/server/app/api/providers/kilo/free-models/route.js +1 -1
  212. package/app/.next/server/app/api/providers/route.js +1 -1
  213. package/app/.next/server/app/api/providers/route.js.nft.json +1 -1
  214. package/app/.next/server/app/api/providers/suggested-models/route.js +1 -1
  215. package/app/.next/server/app/api/providers/test-batch/route.js +1 -1
  216. package/app/.next/server/app/api/providers/test-batch/route.js.nft.json +1 -1
  217. package/app/.next/server/app/api/providers/validate/route.js +1 -1
  218. package/app/.next/server/app/api/providers/validate/route.js.nft.json +1 -1
  219. package/app/.next/server/app/api/proxy-pools/[id]/route.js +1 -1
  220. package/app/.next/server/app/api/proxy-pools/[id]/test/route.js +1 -1
  221. package/app/.next/server/app/api/proxy-pools/cloudflare-deploy/route.js +2 -2
  222. package/app/.next/server/app/api/proxy-pools/deno-deploy/route.js +2 -2
  223. package/app/.next/server/app/api/proxy-pools/route.js +1 -1
  224. package/app/.next/server/app/api/proxy-pools/vercel-deploy/route.js +2 -2
  225. package/app/.next/server/app/api/pxpipe/health/route.js +2 -2
  226. package/app/.next/server/app/api/pxpipe/install/route.js +2 -2
  227. package/app/.next/server/app/api/pxpipe/logs/route.js +2 -2
  228. package/app/.next/server/app/api/pxpipe/restart/route.js +2 -2
  229. package/app/.next/server/app/api/pxpipe/start/route.js +2 -2
  230. package/app/.next/server/app/api/pxpipe/stats/route.js +2 -2
  231. package/app/.next/server/app/api/pxpipe/status/route.js +2 -2
  232. package/app/.next/server/app/api/pxpipe/stop/route.js +2 -2
  233. package/app/.next/server/app/api/settings/database/route.js +1 -1
  234. package/app/.next/server/app/api/settings/database/selective/route.js +1 -1
  235. package/app/.next/server/app/api/settings/proxy-test/route.js +1 -1
  236. package/app/.next/server/app/api/settings/require-login/route.js +1 -1
  237. package/app/.next/server/app/api/settings/route.js +1 -1
  238. package/app/.next/server/app/api/settings/route.js.nft.json +1 -1
  239. package/app/.next/server/app/api/shutdown/route.js +1 -1
  240. package/app/.next/server/app/api/tags/route.js +1 -1
  241. package/app/.next/server/app/api/translator/console-logs/route.js +1 -1
  242. package/app/.next/server/app/api/translator/console-logs/route.js.nft.json +1 -1
  243. package/app/.next/server/app/api/translator/console-logs/stream/route.js +2 -2
  244. package/app/.next/server/app/api/translator/console-logs/stream/route.js.nft.json +1 -1
  245. package/app/.next/server/app/api/translator/load/route.js +1 -1
  246. package/app/.next/server/app/api/translator/save/route.js +1 -1
  247. package/app/.next/server/app/api/translator/send/route.js +1 -1
  248. package/app/.next/server/app/api/translator/send/route.js.nft.json +1 -1
  249. package/app/.next/server/app/api/translator/translate/route.js +1 -1
  250. package/app/.next/server/app/api/translator/translate/route.js.nft.json +1 -1
  251. package/app/.next/server/app/api/tunnel/disable/route.js +1 -1
  252. package/app/.next/server/app/api/tunnel/disable/route.js.nft.json +1 -1
  253. package/app/.next/server/app/api/tunnel/enable/route.js +1 -1
  254. package/app/.next/server/app/api/tunnel/enable/route.js.nft.json +1 -1
  255. package/app/.next/server/app/api/tunnel/status/route.js +1 -1
  256. package/app/.next/server/app/api/tunnel/status/route.js.nft.json +1 -1
  257. package/app/.next/server/app/api/tunnel/tailscale-check/route.js +1 -1
  258. package/app/.next/server/app/api/tunnel/tailscale-check/route.js.nft.json +1 -1
  259. package/app/.next/server/app/api/tunnel/tailscale-disable/route.js +1 -1
  260. package/app/.next/server/app/api/tunnel/tailscale-disable/route.js.nft.json +1 -1
  261. package/app/.next/server/app/api/tunnel/tailscale-enable/route.js +1 -1
  262. package/app/.next/server/app/api/tunnel/tailscale-enable/route.js.nft.json +1 -1
  263. package/app/.next/server/app/api/tunnel/tailscale-install/route.js +2 -2
  264. package/app/.next/server/app/api/tunnel/tailscale-install/route.js.nft.json +1 -1
  265. package/app/.next/server/app/api/usage/[connectionId]/codex-reset-credits/route.js +1 -1
  266. package/app/.next/server/app/api/usage/[connectionId]/codex-reset-credits/route.js.nft.json +1 -1
  267. package/app/.next/server/app/api/usage/[connectionId]/route.js +1 -1
  268. package/app/.next/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
  269. package/app/.next/server/app/api/usage/chart/route.js +1 -1
  270. package/app/.next/server/app/api/usage/history/route.js +1 -1
  271. package/app/.next/server/app/api/usage/logs/route.js +1 -1
  272. package/app/.next/server/app/api/usage/providers/route.js +1 -1
  273. package/app/.next/server/app/api/usage/providers/route.js.nft.json +1 -1
  274. package/app/.next/server/app/api/usage/report/route.js +1 -1
  275. package/app/.next/server/app/api/usage/request-details/route.js +1 -1
  276. package/app/.next/server/app/api/usage/request-logs/route.js +1 -1
  277. package/app/.next/server/app/api/usage/stats/route.js +1 -1
  278. package/app/.next/server/app/api/usage/stream/route.js +2 -2
  279. package/app/.next/server/app/api/v1/api/chat/route.js +1 -1
  280. package/app/.next/server/app/api/v1/api/chat/route.js.nft.json +1 -1
  281. package/app/.next/server/app/api/v1/audio/speech/route.js +1 -1
  282. package/app/.next/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
  283. package/app/.next/server/app/api/v1/audio/transcriptions/route.js +1 -1
  284. package/app/.next/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
  285. package/app/.next/server/app/api/v1/audio/voices/route.js +1 -1
  286. package/app/.next/server/app/api/v1/audio/voices/route.js.nft.json +1 -1
  287. package/app/.next/server/app/api/v1/chat/completions/route.js +1 -1
  288. package/app/.next/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
  289. package/app/.next/server/app/api/v1/embeddings/route.js +1 -1
  290. package/app/.next/server/app/api/v1/embeddings/route.js.nft.json +1 -1
  291. package/app/.next/server/app/api/v1/images/generations/route.js +1 -1
  292. package/app/.next/server/app/api/v1/images/generations/route.js.nft.json +1 -1
  293. package/app/.next/server/app/api/v1/messages/count_tokens/route.js +1 -1
  294. package/app/.next/server/app/api/v1/messages/route.js +1 -1
  295. package/app/.next/server/app/api/v1/messages/route.js.nft.json +1 -1
  296. package/app/.next/server/app/api/v1/models/[kind]/route.js +1 -1
  297. package/app/.next/server/app/api/v1/models/[kind]/route.js.nft.json +1 -1
  298. package/app/.next/server/app/api/v1/models/info/route.js +1 -1
  299. package/app/.next/server/app/api/v1/models/info/route.js.nft.json +1 -1
  300. package/app/.next/server/app/api/v1/models/route.js +1 -1
  301. package/app/.next/server/app/api/v1/models/route.js.nft.json +1 -1
  302. package/app/.next/server/app/api/v1/responses/compact/route.js +1 -1
  303. package/app/.next/server/app/api/v1/responses/compact/route.js.nft.json +1 -1
  304. package/app/.next/server/app/api/v1/responses/route.js +1 -1
  305. package/app/.next/server/app/api/v1/responses/route.js.nft.json +1 -1
  306. package/app/.next/server/app/api/v1/route.js +1 -1
  307. package/app/.next/server/app/api/v1/route.js.nft.json +1 -1
  308. package/app/.next/server/app/api/v1/search/route.js +1 -1
  309. package/app/.next/server/app/api/v1/search/route.js.nft.json +1 -1
  310. package/app/.next/server/app/api/v1/videos/[id]/route.js +1 -0
  311. package/app/.next/server/app/api/v1/videos/[id]/route.js.nft.json +1 -0
  312. package/app/.next/server/app/api/v1/videos/[id]/route_client-reference-manifest.js +1 -0
  313. package/app/.next/server/app/api/v1/videos/edits/route.js +1 -0
  314. package/app/.next/server/app/api/v1/videos/edits/route.js.nft.json +1 -0
  315. package/app/.next/server/app/api/v1/videos/edits/route_client-reference-manifest.js +1 -0
  316. package/app/.next/server/app/api/v1/videos/extensions/route.js +1 -0
  317. package/app/.next/server/app/api/v1/videos/extensions/route.js.nft.json +1 -0
  318. package/app/.next/server/app/api/v1/videos/extensions/route_client-reference-manifest.js +1 -0
  319. package/app/.next/server/app/api/v1/videos/generations/route.js +1 -0
  320. package/app/.next/server/app/api/v1/videos/generations/route.js.nft.json +1 -0
  321. package/app/.next/server/app/api/v1/videos/generations/route_client-reference-manifest.js +1 -0
  322. package/app/.next/server/app/api/v1/web/fetch/route.js +1 -1
  323. package/app/.next/server/app/api/v1/web/fetch/route.js.nft.json +1 -1
  324. package/app/.next/server/app/api/v1beta/models/[...path]/route.js +1 -1
  325. package/app/.next/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
  326. package/app/.next/server/app/api/v1beta/models/route.js +1 -1
  327. package/app/.next/server/app/api/v1beta/models/route.js.nft.json +1 -1
  328. package/app/.next/server/app/api/version/route.js +1 -1
  329. package/app/.next/server/app/api/version/shutdown/route.js +1 -1
  330. package/app/.next/server/app/api/version/shutdown/route.js.nft.json +1 -1
  331. package/app/.next/server/app/api/version/update/route.js +1 -1
  332. package/app/.next/server/app/api/version/update/route.js.nft.json +1 -1
  333. package/app/.next/server/app/callback/page.js +2 -2
  334. package/app/.next/server/app/callback/page.js.nft.json +1 -1
  335. package/app/.next/server/app/callback/page_client-reference-manifest.js +1 -1
  336. package/app/.next/server/app/callback.html +1 -1
  337. package/app/.next/server/app/callback.rsc +4 -4
  338. package/app/.next/server/app/callback.segments/_full.segment.rsc +4 -4
  339. package/app/.next/server/app/callback.segments/_head.segment.rsc +1 -1
  340. package/app/.next/server/app/callback.segments/_index.segment.rsc +4 -4
  341. package/app/.next/server/app/callback.segments/_tree.segment.rsc +2 -2
  342. package/app/.next/server/app/callback.segments/callback/__PAGE__.segment.rsc +1 -1
  343. package/app/.next/server/app/callback.segments/callback.segment.rsc +1 -1
  344. package/app/.next/server/app/dashboard/basic-chat.html +1 -1
  345. package/app/.next/server/app/dashboard/basic-chat.rsc +6 -6
  346. package/app/.next/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +2 -2
  347. package/app/.next/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat.segment.rsc +1 -1
  348. package/app/.next/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  349. package/app/.next/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  350. package/app/.next/server/app/dashboard/basic-chat.segments/_full.segment.rsc +6 -6
  351. package/app/.next/server/app/dashboard/basic-chat.segments/_head.segment.rsc +1 -1
  352. package/app/.next/server/app/dashboard/basic-chat.segments/_index.segment.rsc +4 -4
  353. package/app/.next/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +2 -2
  354. package/app/.next/server/app/dashboard/cli-tools.html +1 -1
  355. package/app/.next/server/app/dashboard/cli-tools.rsc +6 -6
  356. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +2 -2
  357. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools.segment.rsc +1 -1
  358. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  359. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  360. package/app/.next/server/app/dashboard/cli-tools.segments/_full.segment.rsc +6 -6
  361. package/app/.next/server/app/dashboard/cli-tools.segments/_head.segment.rsc +1 -1
  362. package/app/.next/server/app/dashboard/cli-tools.segments/_index.segment.rsc +4 -4
  363. package/app/.next/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +2 -2
  364. package/app/.next/server/app/dashboard/combos.html +1 -1
  365. package/app/.next/server/app/dashboard/combos.rsc +6 -6
  366. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +2 -2
  367. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos.segment.rsc +1 -1
  368. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  369. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  370. package/app/.next/server/app/dashboard/combos.segments/_full.segment.rsc +6 -6
  371. package/app/.next/server/app/dashboard/combos.segments/_head.segment.rsc +1 -1
  372. package/app/.next/server/app/dashboard/combos.segments/_index.segment.rsc +4 -4
  373. package/app/.next/server/app/dashboard/combos.segments/_tree.segment.rsc +2 -2
  374. package/app/.next/server/app/dashboard/endpoint.html +1 -1
  375. package/app/.next/server/app/dashboard/endpoint.rsc +6 -6
  376. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +2 -2
  377. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint.segment.rsc +1 -1
  378. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  379. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  380. package/app/.next/server/app/dashboard/endpoint.segments/_full.segment.rsc +6 -6
  381. package/app/.next/server/app/dashboard/endpoint.segments/_head.segment.rsc +1 -1
  382. package/app/.next/server/app/dashboard/endpoint.segments/_index.segment.rsc +4 -4
  383. package/app/.next/server/app/dashboard/endpoint.segments/_tree.segment.rsc +2 -2
  384. package/app/.next/server/app/dashboard/media-providers/web.html +1 -1
  385. package/app/.next/server/app/dashboard/media-providers/web.rsc +6 -6
  386. package/app/.next/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web/__PAGE__.segment.rsc +2 -2
  387. package/app/.next/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web.segment.rsc +1 -1
  388. package/app/.next/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers.segment.rsc +1 -1
  389. package/app/.next/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  390. package/app/.next/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  391. package/app/.next/server/app/dashboard/media-providers/web.segments/_full.segment.rsc +6 -6
  392. package/app/.next/server/app/dashboard/media-providers/web.segments/_head.segment.rsc +1 -1
  393. package/app/.next/server/app/dashboard/media-providers/web.segments/_index.segment.rsc +4 -4
  394. package/app/.next/server/app/dashboard/media-providers/web.segments/_tree.segment.rsc +2 -2
  395. package/app/.next/server/app/dashboard/mitm.html +1 -1
  396. package/app/.next/server/app/dashboard/mitm.rsc +6 -6
  397. package/app/.next/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +2 -2
  398. package/app/.next/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm.segment.rsc +1 -1
  399. package/app/.next/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  400. package/app/.next/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  401. package/app/.next/server/app/dashboard/mitm.segments/_full.segment.rsc +6 -6
  402. package/app/.next/server/app/dashboard/mitm.segments/_head.segment.rsc +1 -1
  403. package/app/.next/server/app/dashboard/mitm.segments/_index.segment.rsc +4 -4
  404. package/app/.next/server/app/dashboard/mitm.segments/_tree.segment.rsc +2 -2
  405. package/app/.next/server/app/dashboard/profile.html +1 -1
  406. package/app/.next/server/app/dashboard/profile.rsc +6 -6
  407. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +2 -2
  408. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile.segment.rsc +1 -1
  409. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  410. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  411. package/app/.next/server/app/dashboard/profile.segments/_full.segment.rsc +6 -6
  412. package/app/.next/server/app/dashboard/profile.segments/_head.segment.rsc +1 -1
  413. package/app/.next/server/app/dashboard/profile.segments/_index.segment.rsc +4 -4
  414. package/app/.next/server/app/dashboard/profile.segments/_tree.segment.rsc +2 -2
  415. package/app/.next/server/app/dashboard/providers/new.html +1 -1
  416. package/app/.next/server/app/dashboard/providers/new.rsc +6 -6
  417. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +2 -2
  418. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new.segment.rsc +1 -1
  419. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  420. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  421. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  422. package/app/.next/server/app/dashboard/providers/new.segments/_full.segment.rsc +6 -6
  423. package/app/.next/server/app/dashboard/providers/new.segments/_head.segment.rsc +1 -1
  424. package/app/.next/server/app/dashboard/providers/new.segments/_index.segment.rsc +4 -4
  425. package/app/.next/server/app/dashboard/providers/new.segments/_tree.segment.rsc +2 -2
  426. package/app/.next/server/app/dashboard/providers.html +1 -1
  427. package/app/.next/server/app/dashboard/providers.rsc +6 -6
  428. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +2 -2
  429. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  430. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  431. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  432. package/app/.next/server/app/dashboard/providers.segments/_full.segment.rsc +6 -6
  433. package/app/.next/server/app/dashboard/providers.segments/_head.segment.rsc +1 -1
  434. package/app/.next/server/app/dashboard/providers.segments/_index.segment.rsc +4 -4
  435. package/app/.next/server/app/dashboard/providers.segments/_tree.segment.rsc +2 -2
  436. package/app/.next/server/app/dashboard/proxy-pools.html +1 -1
  437. package/app/.next/server/app/dashboard/proxy-pools.rsc +6 -6
  438. package/app/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +2 -2
  439. package/app/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools.segment.rsc +1 -1
  440. package/app/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  441. package/app/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  442. package/app/.next/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +6 -6
  443. package/app/.next/server/app/dashboard/proxy-pools.segments/_head.segment.rsc +1 -1
  444. package/app/.next/server/app/dashboard/proxy-pools.segments/_index.segment.rsc +4 -4
  445. package/app/.next/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +2 -2
  446. package/app/.next/server/app/dashboard/pxpipe.html +1 -1
  447. package/app/.next/server/app/dashboard/pxpipe.rsc +6 -6
  448. package/app/.next/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard/pxpipe/__PAGE__.segment.rsc +2 -2
  449. package/app/.next/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard/pxpipe.segment.rsc +1 -1
  450. package/app/.next/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  451. package/app/.next/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  452. package/app/.next/server/app/dashboard/pxpipe.segments/_full.segment.rsc +6 -6
  453. package/app/.next/server/app/dashboard/pxpipe.segments/_head.segment.rsc +1 -1
  454. package/app/.next/server/app/dashboard/pxpipe.segments/_index.segment.rsc +4 -4
  455. package/app/.next/server/app/dashboard/pxpipe.segments/_tree.segment.rsc +2 -2
  456. package/app/.next/server/app/dashboard/quota.html +2 -2
  457. package/app/.next/server/app/dashboard/quota.rsc +7 -7
  458. package/app/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +3 -3
  459. package/app/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota.segment.rsc +1 -1
  460. package/app/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  461. package/app/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  462. package/app/.next/server/app/dashboard/quota.segments/_full.segment.rsc +7 -7
  463. package/app/.next/server/app/dashboard/quota.segments/_head.segment.rsc +1 -1
  464. package/app/.next/server/app/dashboard/quota.segments/_index.segment.rsc +4 -4
  465. package/app/.next/server/app/dashboard/quota.segments/_tree.segment.rsc +2 -2
  466. package/app/.next/server/app/dashboard/settings/pricing/page.js +2 -2
  467. package/app/.next/server/app/dashboard/settings/pricing/page.js.nft.json +1 -1
  468. package/app/.next/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  469. package/app/.next/server/app/dashboard/settings/pricing.html +1 -1
  470. package/app/.next/server/app/dashboard/settings/pricing.rsc +4 -4
  471. package/app/.next/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +4 -4
  472. package/app/.next/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +1 -1
  473. package/app/.next/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +4 -4
  474. package/app/.next/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +2 -2
  475. package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +1 -1
  476. package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing.segment.rsc +1 -1
  477. package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings.segment.rsc +1 -1
  478. package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard.segment.rsc +1 -1
  479. package/app/.next/server/app/dashboard/skills.html +1 -1
  480. package/app/.next/server/app/dashboard/skills.rsc +6 -6
  481. package/app/.next/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills/__PAGE__.segment.rsc +2 -2
  482. package/app/.next/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills.segment.rsc +1 -1
  483. package/app/.next/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  484. package/app/.next/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  485. package/app/.next/server/app/dashboard/skills.segments/_full.segment.rsc +6 -6
  486. package/app/.next/server/app/dashboard/skills.segments/_head.segment.rsc +1 -1
  487. package/app/.next/server/app/dashboard/skills.segments/_index.segment.rsc +4 -4
  488. package/app/.next/server/app/dashboard/skills.segments/_tree.segment.rsc +2 -2
  489. package/app/.next/server/app/dashboard/token-saver.html +1 -1
  490. package/app/.next/server/app/dashboard/token-saver.rsc +6 -6
  491. package/app/.next/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver/__PAGE__.segment.rsc +2 -2
  492. package/app/.next/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver.segment.rsc +1 -1
  493. package/app/.next/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  494. package/app/.next/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  495. package/app/.next/server/app/dashboard/token-saver.segments/_full.segment.rsc +6 -6
  496. package/app/.next/server/app/dashboard/token-saver.segments/_head.segment.rsc +1 -1
  497. package/app/.next/server/app/dashboard/token-saver.segments/_index.segment.rsc +4 -4
  498. package/app/.next/server/app/dashboard/token-saver.segments/_tree.segment.rsc +2 -2
  499. package/app/.next/server/app/dashboard/translator.html +1 -1
  500. package/app/.next/server/app/dashboard/translator.rsc +6 -6
  501. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +2 -2
  502. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator.segment.rsc +1 -1
  503. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  504. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  505. package/app/.next/server/app/dashboard/translator.segments/_full.segment.rsc +6 -6
  506. package/app/.next/server/app/dashboard/translator.segments/_head.segment.rsc +1 -1
  507. package/app/.next/server/app/dashboard/translator.segments/_index.segment.rsc +4 -4
  508. package/app/.next/server/app/dashboard/translator.segments/_tree.segment.rsc +2 -2
  509. package/app/.next/server/app/dashboard/usage.html +1 -1
  510. package/app/.next/server/app/dashboard/usage.rsc +6 -6
  511. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +2 -2
  512. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage.segment.rsc +1 -1
  513. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  514. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  515. package/app/.next/server/app/dashboard/usage.segments/_full.segment.rsc +6 -6
  516. package/app/.next/server/app/dashboard/usage.segments/_head.segment.rsc +1 -1
  517. package/app/.next/server/app/dashboard/usage.segments/_index.segment.rsc +4 -4
  518. package/app/.next/server/app/dashboard/usage.segments/_tree.segment.rsc +2 -2
  519. package/app/.next/server/app/dashboard.html +1 -1
  520. package/app/.next/server/app/dashboard.rsc +6 -6
  521. package/app/.next/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +2 -2
  522. package/app/.next/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  523. package/app/.next/server/app/dashboard.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  524. package/app/.next/server/app/dashboard.segments/_full.segment.rsc +6 -6
  525. package/app/.next/server/app/dashboard.segments/_head.segment.rsc +1 -1
  526. package/app/.next/server/app/dashboard.segments/_index.segment.rsc +4 -4
  527. package/app/.next/server/app/dashboard.segments/_tree.segment.rsc +2 -2
  528. package/app/.next/server/app/favicon.ico/route.js +1 -1
  529. package/app/.next/server/app/index.html +1 -1
  530. package/app/.next/server/app/index.rsc +4 -4
  531. package/app/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  532. package/app/.next/server/app/index.segments/_full.segment.rsc +4 -4
  533. package/app/.next/server/app/index.segments/_head.segment.rsc +1 -1
  534. package/app/.next/server/app/index.segments/_index.segment.rsc +4 -4
  535. package/app/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  536. package/app/.next/server/app/landing/page.js +2 -2
  537. package/app/.next/server/app/landing/page.js.nft.json +1 -1
  538. package/app/.next/server/app/landing/page_client-reference-manifest.js +1 -1
  539. package/app/.next/server/app/landing.html +1 -1
  540. package/app/.next/server/app/landing.rsc +4 -4
  541. package/app/.next/server/app/landing.segments/_full.segment.rsc +4 -4
  542. package/app/.next/server/app/landing.segments/_head.segment.rsc +1 -1
  543. package/app/.next/server/app/landing.segments/_index.segment.rsc +4 -4
  544. package/app/.next/server/app/landing.segments/_tree.segment.rsc +2 -2
  545. package/app/.next/server/app/landing.segments/landing/__PAGE__.segment.rsc +1 -1
  546. package/app/.next/server/app/landing.segments/landing.segment.rsc +1 -1
  547. package/app/.next/server/app/login/page.js +2 -2
  548. package/app/.next/server/app/login/page.js.nft.json +1 -1
  549. package/app/.next/server/app/login/page_client-reference-manifest.js +1 -1
  550. package/app/.next/server/app/login.html +1 -1
  551. package/app/.next/server/app/login.rsc +5 -5
  552. package/app/.next/server/app/login.segments/_full.segment.rsc +5 -5
  553. package/app/.next/server/app/login.segments/_head.segment.rsc +1 -1
  554. package/app/.next/server/app/login.segments/_index.segment.rsc +4 -4
  555. package/app/.next/server/app/login.segments/_tree.segment.rsc +2 -2
  556. package/app/.next/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
  557. package/app/.next/server/app/login.segments/login.segment.rsc +1 -1
  558. package/app/.next/server/app/manifest.webmanifest/route.js +2 -2
  559. package/app/.next/server/app/page.js +2 -2
  560. package/app/.next/server/app/page.js.nft.json +1 -1
  561. package/app/.next/server/app/page_client-reference-manifest.js +1 -1
  562. package/app/.next/server/app-paths-manifest.json +19 -14
  563. package/app/.next/server/chunks/1051.js +1 -1
  564. package/app/.next/server/chunks/1133.js +1 -0
  565. package/app/.next/server/chunks/1185.js +1 -0
  566. package/app/.next/server/chunks/1806.js +1 -0
  567. package/app/.next/server/chunks/2056.js +1 -0
  568. package/app/.next/server/chunks/2251.js +2 -2
  569. package/app/.next/server/chunks/{6675.js → 3000.js} +13 -3
  570. package/app/.next/server/chunks/318.js +1 -1
  571. package/app/.next/server/chunks/3481.js +71 -0
  572. package/app/.next/server/chunks/3588.js +7 -0
  573. package/app/.next/server/chunks/3943.js +1 -0
  574. package/app/.next/server/chunks/3962.js +1 -0
  575. package/app/.next/server/chunks/412.js +1 -1
  576. package/app/.next/server/chunks/4177.js +1 -1
  577. package/app/.next/server/chunks/4676.js +45 -0
  578. package/app/.next/server/chunks/5612.js +1 -1
  579. package/app/.next/server/chunks/5615.js +1 -1
  580. package/app/.next/server/chunks/6306.js +1 -1
  581. package/app/.next/server/chunks/7137.js +1 -0
  582. package/app/.next/server/chunks/7467.js +1 -0
  583. package/app/.next/server/chunks/75.js +1 -0
  584. package/app/.next/server/chunks/7994.js +1 -1
  585. package/app/.next/server/chunks/8056.js +1 -7
  586. package/app/.next/server/chunks/8145.js +1 -0
  587. package/app/.next/server/chunks/8271.js +1 -1
  588. package/app/.next/server/chunks/8833.js +4 -4
  589. package/app/.next/server/chunks/8895.js +6 -50
  590. package/app/.next/server/middleware-build-manifest.js +1 -1
  591. package/app/.next/server/pages/404.html +1 -1
  592. package/app/.next/server/pages/500.html +1 -1
  593. package/app/.next/server/server-reference-manifest.js +1 -1
  594. package/app/.next/server/server-reference-manifest.json +1 -1
  595. package/app/.next/static/chunks/1321-3154ab2bdf03d1b4.js +1 -0
  596. package/app/.next/static/chunks/{5396-a003e096a6013f2e.js → 4028-f3b4a4505d1949d8.js} +18 -8
  597. package/app/.next/static/chunks/5497-696d58587d263478.js +7 -0
  598. package/app/.next/static/chunks/8198-e290466e54954f7b.js +1 -0
  599. package/app/.next/static/chunks/app/(dashboard)/dashboard/cli-tools/[toolId]/{page-199ad55a0a07b99e.js → page-dfb62517e7b61da1.js} +1 -1
  600. package/app/.next/static/chunks/app/(dashboard)/dashboard/cli-tools/{page-891aa409aec4569e.js → page-7aab1b038b0bfe64.js} +1 -1
  601. package/app/.next/static/chunks/app/(dashboard)/dashboard/mitm/{page-5c73d27e6379f748.js → page-a571e53340e18f91.js} +1 -1
  602. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-1039653250f6f4eb.js +12 -0
  603. package/app/.next/static/chunks/app/(dashboard)/dashboard/quota/page-690703b251694b65.js +1 -0
  604. package/app/.next/static/chunks/app/_global-error/page-c1f9120475dadd61.js +1 -0
  605. package/app/.next/static/chunks/app/api/antigravity-app/route-c1f9120475dadd61.js +1 -0
  606. package/app/.next/static/chunks/app/api/antigravity-app-v2/route-c1f9120475dadd61.js +1 -0
  607. package/app/.next/static/chunks/app/api/antigravity-ide/route-c1f9120475dadd61.js +1 -0
  608. package/app/.next/static/chunks/app/api/antigravity-targets/route-c1f9120475dadd61.js +1 -0
  609. package/app/.next/static/chunks/app/api/antigravity-tools/import/route-c1f9120475dadd61.js +1 -0
  610. package/app/.next/static/chunks/app/api/antigravity-tools/import-refresh-tokens/route-c1f9120475dadd61.js +1 -0
  611. package/app/.next/static/chunks/app/api/auth/login/route-c1f9120475dadd61.js +1 -0
  612. package/app/.next/static/chunks/app/api/auth/logout/route-c1f9120475dadd61.js +1 -0
  613. package/app/.next/static/chunks/app/api/auth/oidc/callback/route-c1f9120475dadd61.js +1 -0
  614. package/app/.next/static/chunks/app/api/auth/oidc/start/route-c1f9120475dadd61.js +1 -0
  615. package/app/.next/static/chunks/app/api/auth/oidc/test/route-c1f9120475dadd61.js +1 -0
  616. package/app/.next/static/chunks/app/api/auth/reset-password/route-c1f9120475dadd61.js +1 -0
  617. package/app/.next/static/chunks/app/api/auth/status/route-c1f9120475dadd61.js +1 -0
  618. package/app/.next/static/chunks/app/api/cli-tools/all-statuses/route-c1f9120475dadd61.js +1 -0
  619. package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-c1f9120475dadd61.js +1 -0
  620. package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/route-c1f9120475dadd61.js +1 -0
  621. package/app/.next/static/chunks/app/api/cli-tools/claude-settings/route-c1f9120475dadd61.js +1 -0
  622. package/app/.next/static/chunks/app/api/cli-tools/cline-settings/route-c1f9120475dadd61.js +1 -0
  623. package/app/.next/static/chunks/app/api/cli-tools/codex-settings/route-c1f9120475dadd61.js +1 -0
  624. package/app/.next/static/chunks/app/api/cli-tools/copilot-settings/route-c1f9120475dadd61.js +1 -0
  625. package/app/.next/static/chunks/app/api/cli-tools/cowork-mcp-registry/route-c1f9120475dadd61.js +1 -0
  626. package/app/.next/static/chunks/app/api/cli-tools/cowork-mcp-tools/route-c1f9120475dadd61.js +1 -0
  627. package/app/.next/static/chunks/app/api/cli-tools/cowork-settings/route-c1f9120475dadd61.js +1 -0
  628. package/app/.next/static/chunks/app/api/cli-tools/cursor-byok/jobs/[jobId]/events/route-c1f9120475dadd61.js +1 -0
  629. package/app/.next/static/chunks/app/api/cli-tools/cursor-byok/jobs/[jobId]/sudo/route-c1f9120475dadd61.js +1 -0
  630. package/app/.next/static/chunks/app/api/cli-tools/cursor-byok/jobs/route-c1f9120475dadd61.js +1 -0
  631. package/app/.next/static/chunks/app/api/cli-tools/cursor-byok/route-c1f9120475dadd61.js +1 -0
  632. package/app/.next/static/chunks/app/api/cli-tools/deepseek-tui-settings/route-c1f9120475dadd61.js +1 -0
  633. package/app/.next/static/chunks/app/api/cli-tools/droid-settings/route-c1f9120475dadd61.js +1 -0
  634. package/app/.next/static/chunks/app/api/cli-tools/grok-build-settings/route-c1f9120475dadd61.js +1 -0
  635. package/app/.next/static/chunks/app/api/cli-tools/hermes-settings/route-c1f9120475dadd61.js +1 -0
  636. package/app/.next/static/chunks/app/api/cli-tools/jcode-settings/route-c1f9120475dadd61.js +1 -0
  637. package/app/.next/static/chunks/app/api/cli-tools/kilo-settings/route-c1f9120475dadd61.js +1 -0
  638. package/app/.next/static/chunks/app/api/cli-tools/openclaw-settings/route-c1f9120475dadd61.js +1 -0
  639. package/app/.next/static/chunks/app/api/cli-tools/opencode-settings/route-c1f9120475dadd61.js +1 -0
  640. package/app/.next/static/chunks/app/api/combos/[id]/route-c1f9120475dadd61.js +1 -0
  641. package/app/.next/static/chunks/app/api/combos/route-c1f9120475dadd61.js +1 -0
  642. package/app/.next/static/chunks/app/api/donate/route-c1f9120475dadd61.js +1 -0
  643. package/app/.next/static/chunks/app/api/headroom/extras/route-c1f9120475dadd61.js +1 -0
  644. package/app/.next/static/chunks/app/api/headroom/proxy/[...path]/route-c1f9120475dadd61.js +1 -0
  645. package/app/.next/static/chunks/app/api/headroom/restart/route-c1f9120475dadd61.js +1 -0
  646. package/app/.next/static/chunks/app/api/headroom/start/route-c1f9120475dadd61.js +1 -0
  647. package/app/.next/static/chunks/app/api/headroom/status/route-c1f9120475dadd61.js +1 -0
  648. package/app/.next/static/chunks/app/api/headroom/stop/route-c1f9120475dadd61.js +1 -0
  649. package/app/.next/static/chunks/app/api/health/route-c1f9120475dadd61.js +1 -0
  650. package/app/.next/static/chunks/app/api/init/route-c1f9120475dadd61.js +1 -0
  651. package/app/.next/static/chunks/app/api/internal/account-health/route-c1f9120475dadd61.js +1 -0
  652. package/app/.next/static/chunks/app/api/internal/request-detail/route-c1f9120475dadd61.js +1 -0
  653. package/app/.next/static/chunks/app/api/internal/usage/route-c1f9120475dadd61.js +1 -0
  654. package/app/.next/static/chunks/app/api/keys/[id]/reset-usage/route-c1f9120475dadd61.js +1 -0
  655. package/app/.next/static/chunks/app/api/keys/[id]/route-c1f9120475dadd61.js +1 -0
  656. package/app/.next/static/chunks/app/api/keys/[id]/usage/route-c1f9120475dadd61.js +1 -0
  657. package/app/.next/static/chunks/app/api/keys/route-c1f9120475dadd61.js +1 -0
  658. package/app/.next/static/chunks/app/api/locale/route-c1f9120475dadd61.js +1 -0
  659. package/app/.next/static/chunks/app/api/mcp/[plugin]/message/route-c1f9120475dadd61.js +1 -0
  660. package/app/.next/static/chunks/app/api/mcp/[plugin]/sse/route-c1f9120475dadd61.js +1 -0
  661. package/app/.next/static/chunks/app/api/media-providers/tts/deepgram/voices/route-c1f9120475dadd61.js +1 -0
  662. package/app/.next/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-c1f9120475dadd61.js +1 -0
  663. package/app/.next/static/chunks/app/api/media-providers/tts/inworld/voices/route-c1f9120475dadd61.js +1 -0
  664. package/app/.next/static/chunks/app/api/media-providers/tts/minimax/voices/route-c1f9120475dadd61.js +1 -0
  665. package/app/.next/static/chunks/app/api/media-providers/tts/voices/route-c1f9120475dadd61.js +1 -0
  666. package/app/.next/static/chunks/app/api/models/alias/route-c1f9120475dadd61.js +1 -0
  667. package/app/.next/static/chunks/app/api/models/availability/route-c1f9120475dadd61.js +1 -0
  668. package/app/.next/static/chunks/app/api/models/custom/route-c1f9120475dadd61.js +1 -0
  669. package/app/.next/static/chunks/app/api/models/disabled/route-c1f9120475dadd61.js +1 -0
  670. package/app/.next/static/chunks/app/api/models/route-c1f9120475dadd61.js +1 -0
  671. package/app/.next/static/chunks/app/api/models/test/route-c1f9120475dadd61.js +1 -0
  672. package/app/.next/static/chunks/app/api/oauth/[provider]/[action]/route-c1f9120475dadd61.js +1 -0
  673. package/app/.next/static/chunks/app/api/oauth/codex/bulk-import/route-c1f9120475dadd61.js +1 -0
  674. package/app/.next/static/chunks/app/api/oauth/codex/import-token/route-c1f9120475dadd61.js +1 -0
  675. package/app/.next/static/chunks/app/api/oauth/cursor/auto-import/route-c1f9120475dadd61.js +1 -0
  676. package/app/.next/static/chunks/app/api/oauth/cursor/import/route-c1f9120475dadd61.js +1 -0
  677. package/app/.next/static/chunks/app/api/oauth/gitlab/pat/route-c1f9120475dadd61.js +1 -0
  678. package/app/.next/static/chunks/app/api/oauth/iflow/cookie/route-c1f9120475dadd61.js +1 -0
  679. package/app/.next/static/chunks/app/api/oauth/kiro/api-key/route-c1f9120475dadd61.js +1 -0
  680. package/app/.next/static/chunks/app/api/oauth/kiro/auto-import/route-c1f9120475dadd61.js +1 -0
  681. package/app/.next/static/chunks/app/api/oauth/kiro/import/route-c1f9120475dadd61.js +1 -0
  682. package/app/.next/static/chunks/app/api/oauth/kiro/import-cli-proxy/route-c1f9120475dadd61.js +1 -0
  683. package/app/.next/static/chunks/app/api/oauth/kiro/social-authorize/route-c1f9120475dadd61.js +1 -0
  684. package/app/.next/static/chunks/app/api/oauth/kiro/social-exchange/route-c1f9120475dadd61.js +1 -0
  685. package/app/.next/static/chunks/app/api/pricing/route-c1f9120475dadd61.js +1 -0
  686. package/app/.next/static/chunks/app/api/provider-nodes/[id]/route-c1f9120475dadd61.js +1 -0
  687. package/app/.next/static/chunks/app/api/provider-nodes/route-c1f9120475dadd61.js +1 -0
  688. package/app/.next/static/chunks/app/api/provider-nodes/validate/route-c1f9120475dadd61.js +1 -0
  689. package/app/.next/static/chunks/app/api/providers/[id]/models/route-c1f9120475dadd61.js +1 -0
  690. package/app/.next/static/chunks/app/api/providers/[id]/route-c1f9120475dadd61.js +1 -0
  691. package/app/.next/static/chunks/app/api/providers/[id]/test/route-c1f9120475dadd61.js +1 -0
  692. package/app/.next/static/chunks/app/api/providers/[id]/test-models/route-c1f9120475dadd61.js +1 -0
  693. package/app/.next/static/chunks/app/api/providers/client/route-c1f9120475dadd61.js +1 -0
  694. package/app/.next/static/chunks/app/api/providers/kilo/free-models/route-c1f9120475dadd61.js +1 -0
  695. package/app/.next/static/chunks/app/api/providers/route-c1f9120475dadd61.js +1 -0
  696. package/app/.next/static/chunks/app/api/providers/suggested-models/route-c1f9120475dadd61.js +1 -0
  697. package/app/.next/static/chunks/app/api/providers/test-batch/route-c1f9120475dadd61.js +1 -0
  698. package/app/.next/static/chunks/app/api/providers/validate/route-c1f9120475dadd61.js +1 -0
  699. package/app/.next/static/chunks/app/api/proxy-pools/[id]/route-c1f9120475dadd61.js +1 -0
  700. package/app/.next/static/chunks/app/api/proxy-pools/[id]/test/route-c1f9120475dadd61.js +1 -0
  701. package/app/.next/static/chunks/app/api/proxy-pools/cloudflare-deploy/route-c1f9120475dadd61.js +1 -0
  702. package/app/.next/static/chunks/app/api/proxy-pools/deno-deploy/route-c1f9120475dadd61.js +1 -0
  703. package/app/.next/static/chunks/app/api/proxy-pools/route-c1f9120475dadd61.js +1 -0
  704. package/app/.next/static/chunks/app/api/proxy-pools/vercel-deploy/route-c1f9120475dadd61.js +1 -0
  705. package/app/.next/static/chunks/app/api/pxpipe/health/route-c1f9120475dadd61.js +1 -0
  706. package/app/.next/static/chunks/app/api/pxpipe/install/route-c1f9120475dadd61.js +1 -0
  707. package/app/.next/static/chunks/app/api/pxpipe/logs/route-c1f9120475dadd61.js +1 -0
  708. package/app/.next/static/chunks/app/api/pxpipe/restart/route-c1f9120475dadd61.js +1 -0
  709. package/app/.next/static/chunks/app/api/pxpipe/start/route-c1f9120475dadd61.js +1 -0
  710. package/app/.next/static/chunks/app/api/pxpipe/stats/route-c1f9120475dadd61.js +1 -0
  711. package/app/.next/static/chunks/app/api/pxpipe/status/route-c1f9120475dadd61.js +1 -0
  712. package/app/.next/static/chunks/app/api/pxpipe/stop/route-c1f9120475dadd61.js +1 -0
  713. package/app/.next/static/chunks/app/api/settings/database/route-c1f9120475dadd61.js +1 -0
  714. package/app/.next/static/chunks/app/api/settings/database/selective/route-c1f9120475dadd61.js +1 -0
  715. package/app/.next/static/chunks/app/api/settings/proxy-test/route-c1f9120475dadd61.js +1 -0
  716. package/app/.next/static/chunks/app/api/settings/require-login/route-c1f9120475dadd61.js +1 -0
  717. package/app/.next/static/chunks/app/api/settings/route-c1f9120475dadd61.js +1 -0
  718. package/app/.next/static/chunks/app/api/shutdown/route-c1f9120475dadd61.js +1 -0
  719. package/app/.next/static/chunks/app/api/tags/route-c1f9120475dadd61.js +1 -0
  720. package/app/.next/static/chunks/app/api/translator/console-logs/route-c1f9120475dadd61.js +1 -0
  721. package/app/.next/static/chunks/app/api/translator/console-logs/stream/route-c1f9120475dadd61.js +1 -0
  722. package/app/.next/static/chunks/app/api/translator/load/route-c1f9120475dadd61.js +1 -0
  723. package/app/.next/static/chunks/app/api/translator/save/route-c1f9120475dadd61.js +1 -0
  724. package/app/.next/static/chunks/app/api/translator/send/route-c1f9120475dadd61.js +1 -0
  725. package/app/.next/static/chunks/app/api/translator/translate/route-c1f9120475dadd61.js +1 -0
  726. package/app/.next/static/chunks/app/api/tunnel/disable/route-c1f9120475dadd61.js +1 -0
  727. package/app/.next/static/chunks/app/api/tunnel/enable/route-c1f9120475dadd61.js +1 -0
  728. package/app/.next/static/chunks/app/api/tunnel/status/route-c1f9120475dadd61.js +1 -0
  729. package/app/.next/static/chunks/app/api/tunnel/tailscale-check/route-c1f9120475dadd61.js +1 -0
  730. package/app/.next/static/chunks/app/api/tunnel/tailscale-disable/route-c1f9120475dadd61.js +1 -0
  731. package/app/.next/static/chunks/app/api/tunnel/tailscale-enable/route-c1f9120475dadd61.js +1 -0
  732. package/app/.next/static/chunks/app/api/tunnel/tailscale-install/route-c1f9120475dadd61.js +1 -0
  733. package/app/.next/static/chunks/app/api/usage/[connectionId]/codex-reset-credits/route-c1f9120475dadd61.js +1 -0
  734. package/app/.next/static/chunks/app/api/usage/[connectionId]/route-c1f9120475dadd61.js +1 -0
  735. package/app/.next/static/chunks/app/api/usage/chart/route-c1f9120475dadd61.js +1 -0
  736. package/app/.next/static/chunks/app/api/usage/history/route-c1f9120475dadd61.js +1 -0
  737. package/app/.next/static/chunks/app/api/usage/logs/route-c1f9120475dadd61.js +1 -0
  738. package/app/.next/static/chunks/app/api/usage/providers/route-c1f9120475dadd61.js +1 -0
  739. package/app/.next/static/chunks/app/api/usage/report/route-c1f9120475dadd61.js +1 -0
  740. package/app/.next/static/chunks/app/api/usage/request-details/route-c1f9120475dadd61.js +1 -0
  741. package/app/.next/static/chunks/app/api/usage/request-logs/route-c1f9120475dadd61.js +1 -0
  742. package/app/.next/static/chunks/app/api/usage/stats/route-c1f9120475dadd61.js +1 -0
  743. package/app/.next/static/chunks/app/api/usage/stream/route-c1f9120475dadd61.js +1 -0
  744. package/app/.next/static/chunks/app/api/v1/api/chat/route-c1f9120475dadd61.js +1 -0
  745. package/app/.next/static/chunks/app/api/v1/audio/speech/route-c1f9120475dadd61.js +1 -0
  746. package/app/.next/static/chunks/app/api/v1/audio/transcriptions/route-c1f9120475dadd61.js +1 -0
  747. package/app/.next/static/chunks/app/api/v1/audio/voices/route-c1f9120475dadd61.js +1 -0
  748. package/app/.next/static/chunks/app/api/v1/chat/completions/route-c1f9120475dadd61.js +1 -0
  749. package/app/.next/static/chunks/app/api/v1/embeddings/route-c1f9120475dadd61.js +1 -0
  750. package/app/.next/static/chunks/app/api/v1/images/generations/route-c1f9120475dadd61.js +1 -0
  751. package/app/.next/static/chunks/app/api/v1/messages/count_tokens/route-c1f9120475dadd61.js +1 -0
  752. package/app/.next/static/chunks/app/api/v1/messages/route-c1f9120475dadd61.js +1 -0
  753. package/app/.next/static/chunks/app/api/v1/models/[kind]/route-c1f9120475dadd61.js +1 -0
  754. package/app/.next/static/chunks/app/api/v1/models/info/route-c1f9120475dadd61.js +1 -0
  755. package/app/.next/static/chunks/app/api/v1/models/route-c1f9120475dadd61.js +1 -0
  756. package/app/.next/static/chunks/app/api/v1/responses/compact/route-c1f9120475dadd61.js +1 -0
  757. package/app/.next/static/chunks/app/api/v1/responses/route-c1f9120475dadd61.js +1 -0
  758. package/app/.next/static/chunks/app/api/v1/route-c1f9120475dadd61.js +1 -0
  759. package/app/.next/static/chunks/app/api/v1/search/route-c1f9120475dadd61.js +1 -0
  760. package/app/.next/static/chunks/app/api/v1/videos/[id]/route-c1f9120475dadd61.js +1 -0
  761. package/app/.next/static/chunks/app/api/v1/videos/edits/route-c1f9120475dadd61.js +1 -0
  762. package/app/.next/static/chunks/app/api/v1/videos/extensions/route-c1f9120475dadd61.js +1 -0
  763. package/app/.next/static/chunks/app/api/v1/videos/generations/route-c1f9120475dadd61.js +1 -0
  764. package/app/.next/static/chunks/app/api/v1/web/fetch/route-c1f9120475dadd61.js +1 -0
  765. package/app/.next/static/chunks/app/api/v1beta/models/[...path]/route-c1f9120475dadd61.js +1 -0
  766. package/app/.next/static/chunks/app/api/v1beta/models/route-c1f9120475dadd61.js +1 -0
  767. package/app/.next/static/chunks/app/api/version/route-c1f9120475dadd61.js +1 -0
  768. package/app/.next/static/chunks/app/api/version/shutdown/route-c1f9120475dadd61.js +1 -0
  769. package/app/.next/static/chunks/app/api/version/update/route-c1f9120475dadd61.js +1 -0
  770. package/app/.next/static/chunks/app/manifest.webmanifest/route-c1f9120475dadd61.js +1 -0
  771. package/app/.next/static/chunks/app/page-c1f9120475dadd61.js +1 -0
  772. package/app/.next/static/chunks/next/dist/client/components/builtin/app-error-c1f9120475dadd61.js +1 -0
  773. package/app/.next/static/chunks/next/dist/client/components/builtin/forbidden-c1f9120475dadd61.js +1 -0
  774. package/app/.next/static/chunks/next/dist/client/components/builtin/not-found-c1f9120475dadd61.js +1 -0
  775. package/app/.next/static/chunks/next/dist/client/components/builtin/unauthorized-c1f9120475dadd61.js +1 -0
  776. package/app/.next/static/css/4aeebd461f2f3aec.css +1 -0
  777. package/app/.next/static/lo-GnJQxxRLdCvA2oang1/_buildManifest.js +1 -0
  778. package/app/open-sse/config/grokCli.js +10 -0
  779. package/app/open-sse/config/runtimeConfig.js +2 -0
  780. package/app/open-sse/executors/grok-cli.js +194 -39
  781. package/app/open-sse/handlers/chatCore.js +22 -23
  782. package/app/open-sse/handlers/videoCore.js +166 -0
  783. package/app/open-sse/providers/capabilities.js +24 -4
  784. package/app/open-sse/providers/registry/alicode-intl.js +1 -1
  785. package/app/open-sse/providers/registry/anthropic.js +1 -3
  786. package/app/open-sse/providers/registry/grok-cli.js +28 -18
  787. package/app/open-sse/providers/registry/kiro.js +12 -0
  788. package/app/open-sse/providers/registry/xai.js +5 -1
  789. package/app/open-sse/services/grokCliModels.js +127 -0
  790. package/app/open-sse/services/model.js +7 -1
  791. package/app/open-sse/services/usage/grok-cli.js +61 -7
  792. package/app/package.json +1 -1
  793. package/app/src/shared/constants/cliTools.js +27 -0
  794. package/app/src/shared/constants/providers.js +1 -1
  795. package/package.json +1 -1
  796. package/app/.next/server/chunks/1350.js +0 -1
  797. package/app/.next/server/chunks/1470.js +0 -1
  798. package/app/.next/server/chunks/1719.js +0 -1
  799. package/app/.next/server/chunks/3621.js +0 -1
  800. package/app/.next/server/chunks/6182.js +0 -71
  801. package/app/.next/server/chunks/7444.js +0 -1
  802. package/app/.next/server/chunks/7886.js +0 -1
  803. package/app/.next/server/chunks/8238.js +0 -1
  804. package/app/.next/server/chunks/8794.js +0 -1
  805. package/app/.next/static/4eHcO0iL_6PDYZfGNLlqJ/_buildManifest.js +0 -1
  806. package/app/.next/static/chunks/1321-221797845867fc50.js +0 -1
  807. package/app/.next/static/chunks/5497-fd6ad8ecc491258d.js +0 -7
  808. package/app/.next/static/chunks/8198-34a5f75f939a0642.js +0 -1
  809. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-64902d9374382b6c.js +0 -12
  810. package/app/.next/static/chunks/app/(dashboard)/dashboard/quota/page-d5dd8461c18931fc.js +0 -1
  811. package/app/.next/static/chunks/app/_global-error/page-9ed8f7909a84e383.js +0 -1
  812. package/app/.next/static/chunks/app/api/antigravity-app/route-9ed8f7909a84e383.js +0 -1
  813. package/app/.next/static/chunks/app/api/antigravity-app-v2/route-9ed8f7909a84e383.js +0 -1
  814. package/app/.next/static/chunks/app/api/antigravity-ide/route-9ed8f7909a84e383.js +0 -1
  815. package/app/.next/static/chunks/app/api/antigravity-targets/route-9ed8f7909a84e383.js +0 -1
  816. package/app/.next/static/chunks/app/api/antigravity-tools/import/route-9ed8f7909a84e383.js +0 -1
  817. package/app/.next/static/chunks/app/api/antigravity-tools/import-refresh-tokens/route-9ed8f7909a84e383.js +0 -1
  818. package/app/.next/static/chunks/app/api/auth/login/route-9ed8f7909a84e383.js +0 -1
  819. package/app/.next/static/chunks/app/api/auth/logout/route-9ed8f7909a84e383.js +0 -1
  820. package/app/.next/static/chunks/app/api/auth/oidc/callback/route-9ed8f7909a84e383.js +0 -1
  821. package/app/.next/static/chunks/app/api/auth/oidc/start/route-9ed8f7909a84e383.js +0 -1
  822. package/app/.next/static/chunks/app/api/auth/oidc/test/route-9ed8f7909a84e383.js +0 -1
  823. package/app/.next/static/chunks/app/api/auth/reset-password/route-9ed8f7909a84e383.js +0 -1
  824. package/app/.next/static/chunks/app/api/auth/status/route-9ed8f7909a84e383.js +0 -1
  825. package/app/.next/static/chunks/app/api/cli-tools/all-statuses/route-9ed8f7909a84e383.js +0 -1
  826. package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-9ed8f7909a84e383.js +0 -1
  827. package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/route-9ed8f7909a84e383.js +0 -1
  828. package/app/.next/static/chunks/app/api/cli-tools/claude-settings/route-9ed8f7909a84e383.js +0 -1
  829. package/app/.next/static/chunks/app/api/cli-tools/cline-settings/route-9ed8f7909a84e383.js +0 -1
  830. package/app/.next/static/chunks/app/api/cli-tools/codex-settings/route-9ed8f7909a84e383.js +0 -1
  831. package/app/.next/static/chunks/app/api/cli-tools/copilot-settings/route-9ed8f7909a84e383.js +0 -1
  832. package/app/.next/static/chunks/app/api/cli-tools/cowork-mcp-registry/route-9ed8f7909a84e383.js +0 -1
  833. package/app/.next/static/chunks/app/api/cli-tools/cowork-mcp-tools/route-9ed8f7909a84e383.js +0 -1
  834. package/app/.next/static/chunks/app/api/cli-tools/cowork-settings/route-9ed8f7909a84e383.js +0 -1
  835. package/app/.next/static/chunks/app/api/cli-tools/cursor-byok/jobs/[jobId]/events/route-9ed8f7909a84e383.js +0 -1
  836. package/app/.next/static/chunks/app/api/cli-tools/cursor-byok/jobs/[jobId]/sudo/route-9ed8f7909a84e383.js +0 -1
  837. package/app/.next/static/chunks/app/api/cli-tools/cursor-byok/jobs/route-9ed8f7909a84e383.js +0 -1
  838. package/app/.next/static/chunks/app/api/cli-tools/cursor-byok/route-9ed8f7909a84e383.js +0 -1
  839. package/app/.next/static/chunks/app/api/cli-tools/deepseek-tui-settings/route-9ed8f7909a84e383.js +0 -1
  840. package/app/.next/static/chunks/app/api/cli-tools/droid-settings/route-9ed8f7909a84e383.js +0 -1
  841. package/app/.next/static/chunks/app/api/cli-tools/hermes-settings/route-9ed8f7909a84e383.js +0 -1
  842. package/app/.next/static/chunks/app/api/cli-tools/jcode-settings/route-9ed8f7909a84e383.js +0 -1
  843. package/app/.next/static/chunks/app/api/cli-tools/kilo-settings/route-9ed8f7909a84e383.js +0 -1
  844. package/app/.next/static/chunks/app/api/cli-tools/openclaw-settings/route-9ed8f7909a84e383.js +0 -1
  845. package/app/.next/static/chunks/app/api/cli-tools/opencode-settings/route-9ed8f7909a84e383.js +0 -1
  846. package/app/.next/static/chunks/app/api/combos/[id]/route-9ed8f7909a84e383.js +0 -1
  847. package/app/.next/static/chunks/app/api/combos/route-9ed8f7909a84e383.js +0 -1
  848. package/app/.next/static/chunks/app/api/donate/route-9ed8f7909a84e383.js +0 -1
  849. package/app/.next/static/chunks/app/api/headroom/extras/route-9ed8f7909a84e383.js +0 -1
  850. package/app/.next/static/chunks/app/api/headroom/proxy/[...path]/route-9ed8f7909a84e383.js +0 -1
  851. package/app/.next/static/chunks/app/api/headroom/restart/route-9ed8f7909a84e383.js +0 -1
  852. package/app/.next/static/chunks/app/api/headroom/start/route-9ed8f7909a84e383.js +0 -1
  853. package/app/.next/static/chunks/app/api/headroom/status/route-9ed8f7909a84e383.js +0 -1
  854. package/app/.next/static/chunks/app/api/headroom/stop/route-9ed8f7909a84e383.js +0 -1
  855. package/app/.next/static/chunks/app/api/health/route-9ed8f7909a84e383.js +0 -1
  856. package/app/.next/static/chunks/app/api/init/route-9ed8f7909a84e383.js +0 -1
  857. package/app/.next/static/chunks/app/api/internal/account-health/route-9ed8f7909a84e383.js +0 -1
  858. package/app/.next/static/chunks/app/api/internal/request-detail/route-9ed8f7909a84e383.js +0 -1
  859. package/app/.next/static/chunks/app/api/internal/usage/route-9ed8f7909a84e383.js +0 -1
  860. package/app/.next/static/chunks/app/api/keys/[id]/reset-usage/route-9ed8f7909a84e383.js +0 -1
  861. package/app/.next/static/chunks/app/api/keys/[id]/route-9ed8f7909a84e383.js +0 -1
  862. package/app/.next/static/chunks/app/api/keys/[id]/usage/route-9ed8f7909a84e383.js +0 -1
  863. package/app/.next/static/chunks/app/api/keys/route-9ed8f7909a84e383.js +0 -1
  864. package/app/.next/static/chunks/app/api/locale/route-9ed8f7909a84e383.js +0 -1
  865. package/app/.next/static/chunks/app/api/mcp/[plugin]/message/route-9ed8f7909a84e383.js +0 -1
  866. package/app/.next/static/chunks/app/api/mcp/[plugin]/sse/route-9ed8f7909a84e383.js +0 -1
  867. package/app/.next/static/chunks/app/api/media-providers/tts/deepgram/voices/route-9ed8f7909a84e383.js +0 -1
  868. package/app/.next/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-9ed8f7909a84e383.js +0 -1
  869. package/app/.next/static/chunks/app/api/media-providers/tts/inworld/voices/route-9ed8f7909a84e383.js +0 -1
  870. package/app/.next/static/chunks/app/api/media-providers/tts/minimax/voices/route-9ed8f7909a84e383.js +0 -1
  871. package/app/.next/static/chunks/app/api/media-providers/tts/voices/route-9ed8f7909a84e383.js +0 -1
  872. package/app/.next/static/chunks/app/api/models/alias/route-9ed8f7909a84e383.js +0 -1
  873. package/app/.next/static/chunks/app/api/models/availability/route-9ed8f7909a84e383.js +0 -1
  874. package/app/.next/static/chunks/app/api/models/custom/route-9ed8f7909a84e383.js +0 -1
  875. package/app/.next/static/chunks/app/api/models/disabled/route-9ed8f7909a84e383.js +0 -1
  876. package/app/.next/static/chunks/app/api/models/route-9ed8f7909a84e383.js +0 -1
  877. package/app/.next/static/chunks/app/api/models/test/route-9ed8f7909a84e383.js +0 -1
  878. package/app/.next/static/chunks/app/api/oauth/[provider]/[action]/route-9ed8f7909a84e383.js +0 -1
  879. package/app/.next/static/chunks/app/api/oauth/codex/bulk-import/route-9ed8f7909a84e383.js +0 -1
  880. package/app/.next/static/chunks/app/api/oauth/codex/import-token/route-9ed8f7909a84e383.js +0 -1
  881. package/app/.next/static/chunks/app/api/oauth/cursor/auto-import/route-9ed8f7909a84e383.js +0 -1
  882. package/app/.next/static/chunks/app/api/oauth/cursor/import/route-9ed8f7909a84e383.js +0 -1
  883. package/app/.next/static/chunks/app/api/oauth/gitlab/pat/route-9ed8f7909a84e383.js +0 -1
  884. package/app/.next/static/chunks/app/api/oauth/iflow/cookie/route-9ed8f7909a84e383.js +0 -1
  885. package/app/.next/static/chunks/app/api/oauth/kiro/api-key/route-9ed8f7909a84e383.js +0 -1
  886. package/app/.next/static/chunks/app/api/oauth/kiro/auto-import/route-9ed8f7909a84e383.js +0 -1
  887. package/app/.next/static/chunks/app/api/oauth/kiro/import/route-9ed8f7909a84e383.js +0 -1
  888. package/app/.next/static/chunks/app/api/oauth/kiro/import-cli-proxy/route-9ed8f7909a84e383.js +0 -1
  889. package/app/.next/static/chunks/app/api/oauth/kiro/social-authorize/route-9ed8f7909a84e383.js +0 -1
  890. package/app/.next/static/chunks/app/api/oauth/kiro/social-exchange/route-9ed8f7909a84e383.js +0 -1
  891. package/app/.next/static/chunks/app/api/pricing/route-9ed8f7909a84e383.js +0 -1
  892. package/app/.next/static/chunks/app/api/provider-nodes/[id]/route-9ed8f7909a84e383.js +0 -1
  893. package/app/.next/static/chunks/app/api/provider-nodes/route-9ed8f7909a84e383.js +0 -1
  894. package/app/.next/static/chunks/app/api/provider-nodes/validate/route-9ed8f7909a84e383.js +0 -1
  895. package/app/.next/static/chunks/app/api/providers/[id]/models/route-9ed8f7909a84e383.js +0 -1
  896. package/app/.next/static/chunks/app/api/providers/[id]/route-9ed8f7909a84e383.js +0 -1
  897. package/app/.next/static/chunks/app/api/providers/[id]/test/route-9ed8f7909a84e383.js +0 -1
  898. package/app/.next/static/chunks/app/api/providers/[id]/test-models/route-9ed8f7909a84e383.js +0 -1
  899. package/app/.next/static/chunks/app/api/providers/client/route-9ed8f7909a84e383.js +0 -1
  900. package/app/.next/static/chunks/app/api/providers/kilo/free-models/route-9ed8f7909a84e383.js +0 -1
  901. package/app/.next/static/chunks/app/api/providers/route-9ed8f7909a84e383.js +0 -1
  902. package/app/.next/static/chunks/app/api/providers/suggested-models/route-9ed8f7909a84e383.js +0 -1
  903. package/app/.next/static/chunks/app/api/providers/test-batch/route-9ed8f7909a84e383.js +0 -1
  904. package/app/.next/static/chunks/app/api/providers/validate/route-9ed8f7909a84e383.js +0 -1
  905. package/app/.next/static/chunks/app/api/proxy-pools/[id]/route-9ed8f7909a84e383.js +0 -1
  906. package/app/.next/static/chunks/app/api/proxy-pools/[id]/test/route-9ed8f7909a84e383.js +0 -1
  907. package/app/.next/static/chunks/app/api/proxy-pools/cloudflare-deploy/route-9ed8f7909a84e383.js +0 -1
  908. package/app/.next/static/chunks/app/api/proxy-pools/deno-deploy/route-9ed8f7909a84e383.js +0 -1
  909. package/app/.next/static/chunks/app/api/proxy-pools/route-9ed8f7909a84e383.js +0 -1
  910. package/app/.next/static/chunks/app/api/proxy-pools/vercel-deploy/route-9ed8f7909a84e383.js +0 -1
  911. package/app/.next/static/chunks/app/api/pxpipe/health/route-9ed8f7909a84e383.js +0 -1
  912. package/app/.next/static/chunks/app/api/pxpipe/install/route-9ed8f7909a84e383.js +0 -1
  913. package/app/.next/static/chunks/app/api/pxpipe/logs/route-9ed8f7909a84e383.js +0 -1
  914. package/app/.next/static/chunks/app/api/pxpipe/restart/route-9ed8f7909a84e383.js +0 -1
  915. package/app/.next/static/chunks/app/api/pxpipe/start/route-9ed8f7909a84e383.js +0 -1
  916. package/app/.next/static/chunks/app/api/pxpipe/stats/route-9ed8f7909a84e383.js +0 -1
  917. package/app/.next/static/chunks/app/api/pxpipe/status/route-9ed8f7909a84e383.js +0 -1
  918. package/app/.next/static/chunks/app/api/pxpipe/stop/route-9ed8f7909a84e383.js +0 -1
  919. package/app/.next/static/chunks/app/api/settings/database/route-9ed8f7909a84e383.js +0 -1
  920. package/app/.next/static/chunks/app/api/settings/database/selective/route-9ed8f7909a84e383.js +0 -1
  921. package/app/.next/static/chunks/app/api/settings/proxy-test/route-9ed8f7909a84e383.js +0 -1
  922. package/app/.next/static/chunks/app/api/settings/require-login/route-9ed8f7909a84e383.js +0 -1
  923. package/app/.next/static/chunks/app/api/settings/route-9ed8f7909a84e383.js +0 -1
  924. package/app/.next/static/chunks/app/api/shutdown/route-9ed8f7909a84e383.js +0 -1
  925. package/app/.next/static/chunks/app/api/tags/route-9ed8f7909a84e383.js +0 -1
  926. package/app/.next/static/chunks/app/api/translator/console-logs/route-9ed8f7909a84e383.js +0 -1
  927. package/app/.next/static/chunks/app/api/translator/console-logs/stream/route-9ed8f7909a84e383.js +0 -1
  928. package/app/.next/static/chunks/app/api/translator/load/route-9ed8f7909a84e383.js +0 -1
  929. package/app/.next/static/chunks/app/api/translator/save/route-9ed8f7909a84e383.js +0 -1
  930. package/app/.next/static/chunks/app/api/translator/send/route-9ed8f7909a84e383.js +0 -1
  931. package/app/.next/static/chunks/app/api/translator/translate/route-9ed8f7909a84e383.js +0 -1
  932. package/app/.next/static/chunks/app/api/tunnel/disable/route-9ed8f7909a84e383.js +0 -1
  933. package/app/.next/static/chunks/app/api/tunnel/enable/route-9ed8f7909a84e383.js +0 -1
  934. package/app/.next/static/chunks/app/api/tunnel/status/route-9ed8f7909a84e383.js +0 -1
  935. package/app/.next/static/chunks/app/api/tunnel/tailscale-check/route-9ed8f7909a84e383.js +0 -1
  936. package/app/.next/static/chunks/app/api/tunnel/tailscale-disable/route-9ed8f7909a84e383.js +0 -1
  937. package/app/.next/static/chunks/app/api/tunnel/tailscale-enable/route-9ed8f7909a84e383.js +0 -1
  938. package/app/.next/static/chunks/app/api/tunnel/tailscale-install/route-9ed8f7909a84e383.js +0 -1
  939. package/app/.next/static/chunks/app/api/usage/[connectionId]/codex-reset-credits/route-9ed8f7909a84e383.js +0 -1
  940. package/app/.next/static/chunks/app/api/usage/[connectionId]/route-9ed8f7909a84e383.js +0 -1
  941. package/app/.next/static/chunks/app/api/usage/chart/route-9ed8f7909a84e383.js +0 -1
  942. package/app/.next/static/chunks/app/api/usage/history/route-9ed8f7909a84e383.js +0 -1
  943. package/app/.next/static/chunks/app/api/usage/logs/route-9ed8f7909a84e383.js +0 -1
  944. package/app/.next/static/chunks/app/api/usage/providers/route-9ed8f7909a84e383.js +0 -1
  945. package/app/.next/static/chunks/app/api/usage/report/route-9ed8f7909a84e383.js +0 -1
  946. package/app/.next/static/chunks/app/api/usage/request-details/route-9ed8f7909a84e383.js +0 -1
  947. package/app/.next/static/chunks/app/api/usage/request-logs/route-9ed8f7909a84e383.js +0 -1
  948. package/app/.next/static/chunks/app/api/usage/stats/route-9ed8f7909a84e383.js +0 -1
  949. package/app/.next/static/chunks/app/api/usage/stream/route-9ed8f7909a84e383.js +0 -1
  950. package/app/.next/static/chunks/app/api/v1/api/chat/route-9ed8f7909a84e383.js +0 -1
  951. package/app/.next/static/chunks/app/api/v1/audio/speech/route-9ed8f7909a84e383.js +0 -1
  952. package/app/.next/static/chunks/app/api/v1/audio/transcriptions/route-9ed8f7909a84e383.js +0 -1
  953. package/app/.next/static/chunks/app/api/v1/audio/voices/route-9ed8f7909a84e383.js +0 -1
  954. package/app/.next/static/chunks/app/api/v1/chat/completions/route-9ed8f7909a84e383.js +0 -1
  955. package/app/.next/static/chunks/app/api/v1/embeddings/route-9ed8f7909a84e383.js +0 -1
  956. package/app/.next/static/chunks/app/api/v1/images/generations/route-9ed8f7909a84e383.js +0 -1
  957. package/app/.next/static/chunks/app/api/v1/messages/count_tokens/route-9ed8f7909a84e383.js +0 -1
  958. package/app/.next/static/chunks/app/api/v1/messages/route-9ed8f7909a84e383.js +0 -1
  959. package/app/.next/static/chunks/app/api/v1/models/[kind]/route-9ed8f7909a84e383.js +0 -1
  960. package/app/.next/static/chunks/app/api/v1/models/info/route-9ed8f7909a84e383.js +0 -1
  961. package/app/.next/static/chunks/app/api/v1/models/route-9ed8f7909a84e383.js +0 -1
  962. package/app/.next/static/chunks/app/api/v1/responses/compact/route-9ed8f7909a84e383.js +0 -1
  963. package/app/.next/static/chunks/app/api/v1/responses/route-9ed8f7909a84e383.js +0 -1
  964. package/app/.next/static/chunks/app/api/v1/route-9ed8f7909a84e383.js +0 -1
  965. package/app/.next/static/chunks/app/api/v1/search/route-9ed8f7909a84e383.js +0 -1
  966. package/app/.next/static/chunks/app/api/v1/web/fetch/route-9ed8f7909a84e383.js +0 -1
  967. package/app/.next/static/chunks/app/api/v1beta/models/[...path]/route-9ed8f7909a84e383.js +0 -1
  968. package/app/.next/static/chunks/app/api/v1beta/models/route-9ed8f7909a84e383.js +0 -1
  969. package/app/.next/static/chunks/app/api/version/route-9ed8f7909a84e383.js +0 -1
  970. package/app/.next/static/chunks/app/api/version/shutdown/route-9ed8f7909a84e383.js +0 -1
  971. package/app/.next/static/chunks/app/api/version/update/route-9ed8f7909a84e383.js +0 -1
  972. package/app/.next/static/chunks/app/manifest.webmanifest/route-9ed8f7909a84e383.js +0 -1
  973. package/app/.next/static/chunks/app/page-9ed8f7909a84e383.js +0 -1
  974. package/app/.next/static/chunks/next/dist/client/components/builtin/app-error-9ed8f7909a84e383.js +0 -1
  975. package/app/.next/static/chunks/next/dist/client/components/builtin/forbidden-9ed8f7909a84e383.js +0 -1
  976. package/app/.next/static/chunks/next/dist/client/components/builtin/not-found-9ed8f7909a84e383.js +0 -1
  977. package/app/.next/static/chunks/next/dist/client/components/builtin/unauthorized-9ed8f7909a84e383.js +0 -1
  978. package/app/.next/static/css/79e49d401b07510e.css +0 -1
  979. /package/app/.next/static/{4eHcO0iL_6PDYZfGNLlqJ → lo-GnJQxxRLdCvA2oang1}/_ssgManifest.js +0 -0
@@ -7,6 +7,12 @@ import {
7
7
  } from "../services/oauthCredentialManager.js";
8
8
  import { normalizeResponsesInput } from "../translator/formats/responsesApi.js";
9
9
  import { getModelUpstreamId } from "../config/providerModels.js";
10
+ import {
11
+ GROK_CLI_CLIENT_IDENTIFIER,
12
+ GROK_CLI_VERSION,
13
+ supportsGrokCliReasoningEffort,
14
+ } from "../config/grokCli.js";
15
+ import { MEMORY_CONFIG } from "../config/runtimeConfig.js";
10
16
  import { resolveSessionId } from "../utils/sessionManager.js";
11
17
  import { getConsistentMachineId } from "../shared/machineId.js";
12
18
 
@@ -45,10 +51,18 @@ const RESPONSES_API_ALLOWLIST = new Set([
45
51
  "prompt_cache_key",
46
52
  ]);
47
53
 
48
- const EFFORT_LEVELS = ["low", "medium", "high"];
54
+ const EFFORT_LEVELS = ["low", "medium", "high", "xhigh"];
55
+ const GROK_CLI_TURN_STORE_MAX = 5000;
56
+ const GROK_CLI_NATIVE_ITEM_ID = /^(?:rs|msg|fc)_[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
57
+ const GROK_CLI_FREEFORM_TOOL_PARAMETERS = {
58
+ type: "object",
59
+ properties: { input: { type: "string" } },
60
+ required: ["input"],
61
+ };
49
62
 
50
63
  // Per-session last turn index so multi-turn headers never go backwards within this process
51
64
  const sessionTurnStore = new Map();
65
+ let requestTurnStore = new WeakMap();
52
66
 
53
67
  /**
54
68
  * Count user turns in a Responses `input` array.
@@ -72,18 +86,138 @@ export function countGrokCliUserTurns(input) {
72
86
  * Prefers user-message count from the payload (full history clients), but never
73
87
  * decreases vs the last index observed for the same sessionId in this process.
74
88
  */
75
- export function resolveGrokCliTurnIdx(sessionId, input) {
89
+ export function resolveGrokCliTurnIdx(sessionId, input, requestKey = null) {
76
90
  const fromInput = countGrokCliUserTurns(input);
77
91
  if (!sessionId) return fromInput;
78
- const prev = sessionTurnStore.get(sessionId) || 0;
79
- const turn = Math.max(fromInput, prev);
80
- sessionTurnStore.set(sessionId, turn);
92
+
93
+ if (requestKey && requestTurnStore.has(requestKey)) {
94
+ return requestTurnStore.get(requestKey);
95
+ }
96
+
97
+ const now = Date.now();
98
+ const existing = sessionTurnStore.get(sessionId);
99
+ const prev = existing && now - existing.lastUsed <= MEMORY_CONFIG.sessionTtlMs
100
+ ? existing.turn
101
+ : 0;
102
+ if (existing) sessionTurnStore.delete(sessionId);
103
+
104
+ // A new delta-style request advances the turn; retries reuse requestKey.
105
+ const turn = prev > 0 ? Math.max(fromInput, prev + (requestKey ? 1 : 0)) : fromInput;
106
+ while (sessionTurnStore.size >= GROK_CLI_TURN_STORE_MAX) {
107
+ sessionTurnStore.delete(sessionTurnStore.keys().next().value);
108
+ }
109
+ sessionTurnStore.set(sessionId, { turn, lastUsed: now });
110
+ if (requestKey) requestTurnStore.set(requestKey, turn);
81
111
  return turn;
82
112
  }
83
113
 
84
114
  /** Test helper — clear in-memory turn counters */
85
115
  export function _resetGrokCliTurnStore() {
86
116
  sessionTurnStore.clear();
117
+ requestTurnStore = new WeakMap();
118
+ }
119
+
120
+ export function _getGrokCliTurnStoreSize() {
121
+ return sessionTurnStore.size;
122
+ }
123
+
124
+ export function normalizeGrokCliEffort(value) {
125
+ const effort = typeof value === "string" ? value.trim().toLowerCase() : "";
126
+ if (effort === "max") return "xhigh";
127
+ if (EFFORT_LEVELS.includes(effort)) return effort;
128
+ return "high";
129
+ }
130
+
131
+ export { supportsGrokCliReasoningEffort } from "../config/grokCli.js";
132
+
133
+ export function resolveGrokCliSessionId(credentials, body) {
134
+ // ponytail: clients without stable thread metadata share one connection session;
135
+ // split further when their wire format exposes a durable conversation id.
136
+ const explicitSessionBody = {
137
+ prompt_cache_key: body?.prompt_cache_key,
138
+ session_id: body?.session_id,
139
+ conversation_id: body?.conversation_id,
140
+ metadata: body?.metadata,
141
+ };
142
+ return resolveSessionId({
143
+ headers: credentials?.rawHeaders,
144
+ body: explicitSessionBody,
145
+ connectionId: credentials?.connectionId || credentials?.id,
146
+ workspaceId: credentials?.providerSpecificData?.workspaceId,
147
+ scope: "grok-cli",
148
+ });
149
+ }
150
+
151
+ function stringifyGrokCliToolOutput(output) {
152
+ if (typeof output === "string") return output;
153
+ if (output === undefined) return "";
154
+ return JSON.stringify(output);
155
+ }
156
+
157
+ function isNativeGrokCliItemId(id) {
158
+ return typeof id === "string" && GROK_CLI_NATIVE_ITEM_ID.test(id);
159
+ }
160
+
161
+ function normalizeGrokCliInputItem(item) {
162
+ if (!item || typeof item !== "object" || Array.isArray(item)) return item;
163
+ const { internal_chat_message_metadata_passthrough: _metadata, ...clean } = item;
164
+
165
+ if (item.type === "reasoning") {
166
+ if (!isNativeGrokCliItemId(item.id) || typeof item.encrypted_content !== "string") return null;
167
+ return clean;
168
+ }
169
+
170
+ if (item.type === "custom_tool_call") {
171
+ const callId = item.call_id || item.id;
172
+ const name = typeof item.name === "string" ? item.name.trim() : "";
173
+ if (!callId || !name) return null;
174
+ return {
175
+ type: "function_call",
176
+ call_id: callId,
177
+ name,
178
+ arguments: JSON.stringify({ input: stringifyGrokCliToolOutput(item.input ?? item.arguments) }),
179
+ };
180
+ }
181
+
182
+ if (item.type === "custom_tool_call_output" || item.type === "function_call_output") {
183
+ const callId = item.call_id || item.id;
184
+ if (!callId) return null;
185
+ return {
186
+ type: "function_call_output",
187
+ call_id: callId,
188
+ output: stringifyGrokCliToolOutput(item.output),
189
+ };
190
+ }
191
+
192
+ if (item.type === "function_call") {
193
+ const callId = item.call_id || item.id;
194
+ const name = typeof item.name === "string" ? item.name.trim() : "";
195
+ if (!callId || !name) return null;
196
+ return {
197
+ type: "function_call",
198
+ ...(isNativeGrokCliItemId(item.id) ? { id: item.id } : {}),
199
+ call_id: callId,
200
+ name,
201
+ arguments: typeof item.arguments === "string" ? item.arguments : JSON.stringify(item.arguments ?? {}),
202
+ ...(typeof item.status === "string" ? { status: item.status } : {}),
203
+ };
204
+ }
205
+
206
+ return clean;
207
+ }
208
+
209
+ export function normalizeGrokCliInput(body) {
210
+ if (!Array.isArray(body?.input)) return body;
211
+ const normalized = body.input.map(normalizeGrokCliInputItem).filter(Boolean);
212
+ const callIds = new Set(
213
+ normalized
214
+ .filter((item) => item?.type === "function_call" && item.call_id)
215
+ .map((item) => item.call_id)
216
+ );
217
+ body.input = normalized.filter(
218
+ (item) => item?.type !== "function_call_output" || callIds.has(item.call_id)
219
+ );
220
+ return body;
87
221
  }
88
222
 
89
223
  function stripStoredItemReferences(body) {
@@ -92,7 +226,11 @@ function stripStoredItemReferences(body) {
92
226
  if (typeof item === "string" && SERVER_ID_PATTERN.test(item)) return false;
93
227
  if (item && typeof item === "object" && !Array.isArray(item)) {
94
228
  if (item.type === "item_reference") return false;
95
- if (typeof item.id === "string" && SERVER_ID_PATTERN.test(item.id)) delete item.id;
229
+ if (
230
+ typeof item.id === "string" &&
231
+ SERVER_ID_PATTERN.test(item.id) &&
232
+ !isNativeGrokCliItemId(item.id)
233
+ ) delete item.id;
96
234
  }
97
235
  return true;
98
236
  });
@@ -103,15 +241,23 @@ function stripStoredItemReferences(body) {
103
241
  * Keep hosted tools (web_search / x_search) passthrough.
104
242
  */
105
243
  function normalizeGrokCliTools(body) {
106
- if (!Array.isArray(body.tools)) return;
244
+ if (!Array.isArray(body.tools) || body.tools.length === 0) {
245
+ delete body.tools;
246
+ delete body.tool_choice;
247
+ return;
248
+ }
107
249
  const validNames = new Set();
250
+ const hostedTypes = new Set();
108
251
  body.tools = body.tools.filter((tool) => {
109
252
  if (!tool || typeof tool !== "object" || Array.isArray(tool)) return false;
110
253
  const type = typeof tool.type === "string" ? tool.type : "";
111
254
 
112
255
  if (type !== "function") {
113
256
  // Hosted tools: { type: "web_search" } / { type: "x_search" }
114
- if (HOSTED_TOOL_TYPES.has(type)) return true;
257
+ if (HOSTED_TOOL_TYPES.has(type)) {
258
+ hostedTypes.add(type);
259
+ return true;
260
+ }
115
261
  // Nested function shape without type
116
262
  if (!type && tool.function) {
117
263
  // fall through to function flatten below
@@ -143,8 +289,9 @@ function normalizeGrokCliTools(body) {
143
289
  : typeof fn?.description === "string"
144
290
  ? fn.description
145
291
  : "";
146
- const parameters =
147
- tool.parameters && typeof tool.parameters === "object" && !Array.isArray(tool.parameters)
292
+ const parameters = type === "custom"
293
+ ? GROK_CLI_FREEFORM_TOOL_PARAMETERS
294
+ : tool.parameters && typeof tool.parameters === "object" && !Array.isArray(tool.parameters)
148
295
  ? tool.parameters
149
296
  : fn?.parameters && typeof fn.parameters === "object" && !Array.isArray(fn.parameters)
150
297
  ? fn.parameters
@@ -155,14 +302,25 @@ function normalizeGrokCliTools(body) {
155
302
  tool.name = name.slice(0, 128);
156
303
  if (description) tool.description = description;
157
304
  tool.parameters = parameters;
158
- validNames.add(name);
305
+ validNames.add(tool.name);
159
306
  return true;
160
307
  });
161
308
 
309
+ if (body.tools.length === 0) {
310
+ delete body.tools;
311
+ delete body.tool_choice;
312
+ return;
313
+ }
314
+
162
315
  if (body.tool_choice && typeof body.tool_choice === "object" && !Array.isArray(body.tool_choice)) {
163
- if (body.tool_choice.type === "function") {
164
- const n = typeof body.tool_choice.name === "string" ? body.tool_choice.name.trim() : "";
165
- if (!n || !validNames.has(n)) delete body.tool_choice;
316
+ const choiceType = typeof body.tool_choice.type === "string" ? body.tool_choice.type : "";
317
+ if (choiceType === "function" || choiceType === "custom") {
318
+ const rawName = body.tool_choice.name ?? body.tool_choice.function?.name;
319
+ const name = typeof rawName === "string" ? rawName.trim().slice(0, 128) : "";
320
+ if (!name || !validNames.has(name)) delete body.tool_choice;
321
+ else body.tool_choice = { type: "function", name };
322
+ } else if (!hostedTypes.has(choiceType)) {
323
+ delete body.tool_choice;
166
324
  }
167
325
  }
168
326
  }
@@ -192,9 +350,9 @@ export class GrokCliExecutor extends BaseExecutor {
192
350
  return this.config.baseUrl;
193
351
  }
194
352
 
195
- async refreshCredentials(credentials, log) {
353
+ async refreshCredentials(credentials, log, proxyOptions = null) {
196
354
  if (!credentials?.refreshToken) return null;
197
- return refreshProviderCredentials("grok-cli", credentials, log);
355
+ return refreshProviderCredentials("grok-cli", credentials, log, proxyOptions);
198
356
  }
199
357
 
200
358
  needsRefresh(credentials) {
@@ -210,13 +368,10 @@ export class GrokCliExecutor extends BaseExecutor {
210
368
  if (v != null && headers[k] === undefined) headers[k] = v;
211
369
  }
212
370
 
213
- // Ensure token-auth marker is present even if headers map was overridden
214
- headers["x-xai-token-auth"] = this.config.tokenAuth || "xai-grok-cli";
215
371
  headers["x-grok-client-identifier"] =
216
- this.config.clientIdentifier || headers["x-grok-client-identifier"] || "grok-pager";
372
+ this.config.clientIdentifier || headers["x-grok-client-identifier"] || GROK_CLI_CLIENT_IDENTIFIER;
217
373
  headers["x-grok-client-version"] =
218
- this.config.clientVersion || headers["x-grok-client-version"] || "0.2.93";
219
- headers["x-authenticateresponse"] = "authenticate-response";
374
+ this.config.clientVersion || headers["x-grok-client-version"] || GROK_CLI_VERSION;
220
375
 
221
376
  const sessionId = this._currentSessionId || credentials?.connectionId || crypto.randomUUID();
222
377
  const reqId = this._currentReqId || crypto.randomUUID();
@@ -231,10 +386,6 @@ export class GrokCliExecutor extends BaseExecutor {
231
386
  // Surface model override (CLI always sets this)
232
387
  if (this._currentModel) headers["x-grok-model-override"] = this._currentModel;
233
388
 
234
- if (this.config.compactionAt) {
235
- headers["x-compaction-at"] = String(this.config.compactionAt);
236
- }
237
-
238
389
  // Identity: mapTokens stores email top-level AND in providerSpecificData;
239
390
  // fall back either way so OAuth connections always fingerprint like the CLI.
240
391
  const psd = credentials?.providerSpecificData || {};
@@ -267,13 +418,8 @@ export class GrokCliExecutor extends BaseExecutor {
267
418
 
268
419
  transformRequest(model, body, stream, credentials) {
269
420
  // Session / request ids for headers — stable per client conversation when possible
270
- this._currentSessionId = resolveSessionId({
271
- headers: credentials?.rawHeaders,
272
- body,
273
- connectionId: credentials?.connectionId || credentials?.id,
274
- workspaceId: credentials?.providerSpecificData?.workspaceId,
275
- scope: "grok-cli",
276
- });
421
+ const requestKey = body;
422
+ this._currentSessionId = resolveGrokCliSessionId(credentials, body);
277
423
  this._currentReqId = crypto.randomUUID();
278
424
  this._agentId =
279
425
  credentials?.providerSpecificData?.deviceId ||
@@ -302,11 +448,12 @@ export class GrokCliExecutor extends BaseExecutor {
302
448
 
303
449
  // Keep role:"system" as-is — official grok-pager HAR sends system, not developer
304
450
  // (Codex converts system→developer; Grok CLI does not).
451
+ normalizeGrokCliInput(body);
305
452
  stripStoredItemReferences(body);
306
453
  normalizeGrokCliTools(body);
307
454
 
308
455
  // Turn index after input is finalized (user-message count, monotonic per session)
309
- this._currentTurnIdx = resolveGrokCliTurnIdx(this._currentSessionId, body.input);
456
+ this._currentTurnIdx = resolveGrokCliTurnIdx(this._currentSessionId, body.input, requestKey);
310
457
 
311
458
  body.stream = true;
312
459
  body.store = false;
@@ -325,20 +472,28 @@ export class GrokCliExecutor extends BaseExecutor {
325
472
  body.model = resolvedModel;
326
473
  this._currentModel = resolvedModel;
327
474
 
328
- // Reasoning effort priority: explicit > reasoning_effort > model suffix > default high
475
+ // Reasoning effort priority: explicit > reasoning_effort > model suffix > default high.
476
+ // grok-build and Composer reject reasoningEffort but still accept summary/encrypted continuity.
477
+ const supportsReasoningEffort = supportsGrokCliReasoningEffort(resolvedModel);
329
478
  if (!body.reasoning || typeof body.reasoning !== "object") {
330
- const effort = body.reasoning_effort || modelEffort || "high";
331
- body.reasoning = { effort, summary: "concise" };
479
+ body.reasoning = { summary: "concise" };
480
+ if (supportsReasoningEffort) {
481
+ body.reasoning.effort = normalizeGrokCliEffort(body.reasoning_effort || modelEffort);
482
+ }
332
483
  } else {
333
- if (!body.reasoning.effort) {
334
- body.reasoning.effort = body.reasoning_effort || modelEffort || "high";
484
+ if (supportsReasoningEffort) {
485
+ body.reasoning.effort = normalizeGrokCliEffort(
486
+ body.reasoning.effort || body.reasoning_effort || modelEffort,
487
+ );
488
+ } else {
489
+ delete body.reasoning.effort;
335
490
  }
336
491
  if (!body.reasoning.summary) body.reasoning.summary = "concise";
337
492
  }
338
493
  delete body.reasoning_effort;
339
494
 
340
495
  // Encrypted reasoning for multi-turn continuity (CLI always requests this)
341
- if (body.reasoning?.effort && body.reasoning.effort !== "none") {
496
+ if (body.reasoning && body.reasoning.effort !== "none") {
342
497
  const include = Array.isArray(body.include) ? body.include : [];
343
498
  if (!include.includes("reasoning.encrypted_content")) {
344
499
  include.push("reasoning.encrypted_content");
@@ -9,10 +9,11 @@ import { createRequestLogger } from "../utils/requestLogger.js";
9
9
  import { getModelTargetFormat, getModelStrip, getModelUpstreamId, getModelType, PROVIDER_ID_TO_ALIAS } from "../config/providerModels.js";
10
10
  import { PROVIDERS } from "../config/providers.js";
11
11
  import { createErrorResult, parseUpstreamError, formatProviderError } from "../utils/error.js";
12
- import { HTTP_STATUS } from "../config/runtimeConfig.js";
12
+ import { HTTP_STATUS, TOKEN_SAVER_HEADER } from "../config/runtimeConfig.js";
13
13
  import { handleBypassRequest } from "../utils/bypassHandler.js";
14
14
  import { trackPendingRequest, appendRequestLog, saveRequestDetail } from "@/lib/usageDb.js";
15
15
  import { getExecutor } from "../executors/index.js";
16
+ import { supportsGrokCliReasoningEffort } from "../config/grokCli.js";
16
17
  import { buildRequestDetail, extractRequestConfig } from "./chatCore/requestDetail.js";
17
18
  import { handleForcedSSEToJson } from "./chatCore/sseToJsonHandler.js";
18
19
  import { handleNonStreamingResponse } from "./chatCore/nonStreamingHandler.js";
@@ -21,8 +22,8 @@ import { detectClientTool, isNativePassthrough } from "../utils/clientDetector.j
21
22
  import { dedupeTools } from "../utils/toolDeduper.js";
22
23
  import { injectCaveman } from "../rtk/caveman.js";
23
24
  import { injectPonytail } from "../rtk/ponytail.js";
24
- import { compressMessages } from "../rtk/index.js";
25
- import { compressWithHeadroom, formatHeadroomSizeLog, isHeadroomPhantomSavings } from "../rtk/headroom.js";
25
+ import { compressMessages, formatRtkLog } from "../rtk/index.js";
26
+ import { compressWithHeadroom, formatHeadroomLog, formatHeadroomSizeLog, isHeadroomPhantomSavings } from "../rtk/headroom.js";
26
27
  import { compressWithPxpipe } from "../rtk/pxpipe.js";
27
28
  import { getCapabilitiesForModel } from "../providers/capabilities.js";
28
29
  import { stripUnsupportedModalities } from "../translator/concerns/modality.js";
@@ -168,7 +169,8 @@ export async function handleChatCore({ body, modelInfo, credentials, log, onCred
168
169
  const msgN = translatedBody.messages?.length || translatedBody.input?.length || translatedBody.contents?.length || body.messages?.length || body.input?.length || 0;
169
170
  const toolN = translatedBody.tools?.length || body.tools?.length || 0;
170
171
  const fmtStr = passthrough ? `FMT: ${sourceFormat} (passthrough)` : `FMT: ${sourceFormat}→${targetFormat}`;
171
- const think = log.fmtThink?.(extractThinking(translatedBody));
172
+ const showThinking = provider !== "grok-cli" || supportsGrokCliReasoningEffort(model);
173
+ const think = showThinking ? log.fmtThink?.(extractThinking(translatedBody)) : null;
172
174
  const acc = credentials?.connectionName || credentials?.connectionId?.slice(0, 8) || "-";
173
175
  const parts = [
174
176
  `POST ${clientModel} → ${provider}/${model}`,
@@ -188,40 +190,37 @@ export async function handleChatCore({ body, modelInfo, credentials, log, onCred
188
190
  delete translatedBody.tools;
189
191
  }
190
192
 
191
- // Token-saver summary parts, printed as one "⚙" line at the end (only active ones)
192
- const xf = [];
193
+ // Per-request opt-out: client can bypass all token savers via header
194
+ const tokenSaverEnabled = clientRawRequest?.headers?.[TOKEN_SAVER_HEADER]?.toLowerCase() !== "off";
193
195
 
194
196
  // RTK: compress tool_result content
195
- const rtkStats = compressMessages(translatedBody, rtkEnabled);
196
- if (rtkStats?.hits?.length) {
197
- const saved = rtkStats.bytesBefore - rtkStats.bytesAfter;
198
- const pct = rtkStats.bytesBefore > 0 ? ((saved / rtkStats.bytesBefore) * 100).toFixed(0) : "0";
199
- xf.push(`RTK −${saved}B(${pct}%)`);
200
- }
197
+ const rtkStats = compressMessages(translatedBody, tokenSaverEnabled && rtkEnabled);
198
+ const rtkLine = formatRtkLog(rtkStats);
199
+ if (rtkLine) console.log(rtkLine);
201
200
 
202
201
  // Headroom: optional external proxy compression; fail open if proxy is absent.
203
202
  const headroomDiagnostics = {};
204
- const headroomStats = await compressWithHeadroom(translatedBody, { enabled: headroomEnabled, url: headroomUrl, model: upstreamModel, format: finalFormat, compressUserMessages: headroomCompressUserMessages, diagnostics: headroomDiagnostics });
205
- if (headroomStats) {
206
- const before = headroomStats.tokens_before || 0;
207
- const delta = headroomStats.tokens_saved || 0;
208
- const pct = before > 0 ? ((delta / before) * 100).toFixed(1) : "0";
209
- xf.push(`HEADROOM −${delta}tok(${pct}%)`);
203
+ const headroomStats = await compressWithHeadroom(translatedBody, { enabled: tokenSaverEnabled && headroomEnabled, url: headroomUrl, model: upstreamModel, format: finalFormat, compressUserMessages: headroomCompressUserMessages, diagnostics: headroomDiagnostics });
204
+ const headroomLine = formatHeadroomLog(headroomStats);
205
+ const headroomSizeLine = formatHeadroomSizeLog(headroomDiagnostics);
206
+ if (headroomLine) {
207
+ log?.info?.("HEADROOM", `${headroomLine}${headroomSizeLine ? ` | ${headroomSizeLine}` : ""}`);
210
208
  if (isHeadroomPhantomSavings(headroomStats, headroomDiagnostics)) {
211
209
  log?.warn?.("HEADROOM", `reported token delta, but outbound JSON shrank <5%; provider may bill near-original payload | ${formatHeadroomSizeLog(headroomDiagnostics)}`);
212
210
  }
213
- } else if (headroomEnabled) {
214
- log?.warn?.("HEADROOM", `skipped: ${headroomDiagnostics.reason || "compression unavailable"}${headroomDiagnostics.endpoint ? ` (${headroomDiagnostics.endpoint})` : ""}`);
215
- }
211
+ } else if (tokenSaverEnabled && headroomEnabled) log?.warn?.("HEADROOM", `skipped: ${headroomDiagnostics.reason || "compression unavailable"}${headroomDiagnostics.endpoint ? ` (${headroomDiagnostics.endpoint})` : ""}`);
212
+
213
+ // Token-saver flags accumulator for the single "⚙" log line below.
214
+ const xf = [];
216
215
 
217
216
  // Caveman: inject terse-style system prompt
218
- if (cavemanEnabled && cavemanLevel) {
217
+ if (tokenSaverEnabled && cavemanEnabled && cavemanLevel) {
219
218
  injectCaveman(translatedBody, finalFormat, cavemanLevel);
220
219
  xf.push(`CAVEMAN:${cavemanLevel}`);
221
220
  }
222
221
 
223
222
  // Ponytail: inject lazy-senior-dev system prompt
224
- if (ponytailEnabled && ponytailLevel) {
223
+ if (tokenSaverEnabled && ponytailEnabled && ponytailLevel) {
225
224
  injectPonytail(translatedBody, finalFormat, ponytailLevel);
226
225
  xf.push(`PONYTAIL:${ponytailLevel}`);
227
226
  }
@@ -0,0 +1,166 @@
1
+ import { createErrorResult } from "../utils/error.js";
2
+ import { HTTP_STATUS } from "../config/runtimeConfig.js";
3
+ import { refreshTokenByProvider } from "../services/tokenRefresh.js";
4
+ import { PROVIDER_MEDIA } from "../providers/index.js";
5
+
6
+ // Upstream fetch deadline for video job submission/polling (the job itself is
7
+ // async upstream — this only bounds the HTTP round-trip, not video rendering).
8
+ const VIDEO_FETCH_TIMEOUT_MS = Number(process.env.VIDEO_FETCH_TIMEOUT_MS || 120000);
9
+
10
+ // POST /videos/* creates a billable upstream job. A network error after the
11
+ // request left the socket may still have created the job, so creation is NEVER
12
+ // auto-retried (the only re-send is the auth retry after a 401/403 refresh,
13
+ // which upstream rejects before job creation).
14
+ export const VIDEO_ACTIONS = new Set(["generations", "edits", "extensions"]);
15
+
16
+ export function getVideoConfig(provider) {
17
+ return PROVIDER_MEDIA[provider]?.videoConfig || null;
18
+ }
19
+
20
+ /** Strip bearer tokens / obvious secrets from text destined for clients or logs. */
21
+ export function sanitizeSecrets(text, credentials = null) {
22
+ if (!text) return text;
23
+ let out = String(text).replace(/Bearer\s+[A-Za-z0-9._~+/=-]{8,}/gi, "Bearer [redacted]");
24
+ for (const key of ["accessToken", "refreshToken", "apiKey"]) {
25
+ const secret = credentials?.[key];
26
+ if (typeof secret === "string" && secret.length >= 8) {
27
+ out = out.split(secret).join("[redacted]");
28
+ }
29
+ }
30
+ return out;
31
+ }
32
+
33
+ function buildUpstreamUrl(config, action, requestId) {
34
+ const base = config.baseUrl.replace(/\/$/, "");
35
+ return requestId ? `${base}/${encodeURIComponent(requestId)}` : `${base}/${action}`;
36
+ }
37
+
38
+ function buildHeaders({ token, contentType, idempotencyKey }) {
39
+ const headers = { Accept: "application/json" };
40
+ if (token) headers.Authorization = `Bearer ${token}`;
41
+ if (contentType) headers["Content-Type"] = contentType;
42
+ if (idempotencyKey) headers["Idempotency-Key"] = idempotencyKey;
43
+ return headers;
44
+ }
45
+
46
+ function combineSignals(signal, timeoutMs) {
47
+ const timeoutSignal = typeof AbortSignal?.timeout === "function" ? AbortSignal.timeout(timeoutMs) : null;
48
+ if (signal && timeoutSignal && typeof AbortSignal.any === "function") {
49
+ return AbortSignal.any([signal, timeoutSignal]);
50
+ }
51
+ return signal || timeoutSignal || undefined;
52
+ }
53
+
54
+ /**
55
+ * Transparent proxy for async video jobs (xAI Grok Imagine shape).
56
+ *
57
+ * - Forwards the raw body byte-for-byte (JSON or multipart) — no reshaping.
58
+ * - Passes upstream JSON (request_id, status, video.url, error) back verbatim.
59
+ * - 401/403 with a refresh token: refresh ONCE, retry ONCE. No other retry.
60
+ * - Upstream error text is sanitized before it reaches the client.
61
+ *
62
+ * @param {object} options
63
+ * @param {string} options.provider - Provider id (must have registry videoConfig)
64
+ * @param {"generations"|"edits"|"extensions"|null} options.action - Creation action (POST)
65
+ * @param {string|null} [options.requestId] - Poll target (GET /videos/{id})
66
+ * @param {Buffer|string|null} [options.rawBody] - Exact body to forward
67
+ * @param {string|null} [options.contentType] - Original Content-Type header
68
+ * @param {string|null} [options.idempotencyKey] - Forwarded Idempotency-Key
69
+ * @param {object} options.credentials - { accessToken?, apiKey?, refreshToken?, authType? }
70
+ * @param {AbortSignal} [options.signal] - Client cancellation signal
71
+ * @param {number} [options.timeoutMs]
72
+ * @param {object} [options.log]
73
+ * @param {function} [options.onCredentialsRefreshed]
74
+ * @returns {Promise<{ success: boolean, response: Response, status?: number, error?: string }>}
75
+ */
76
+ export async function handleVideoProxyCore({
77
+ provider,
78
+ action = null,
79
+ requestId = null,
80
+ rawBody = null,
81
+ contentType = null,
82
+ idempotencyKey = null,
83
+ credentials,
84
+ signal,
85
+ timeoutMs = VIDEO_FETCH_TIMEOUT_MS,
86
+ log,
87
+ onCredentialsRefreshed,
88
+ }) {
89
+ const config = getVideoConfig(provider);
90
+ if (!config) {
91
+ return createErrorResult(HTTP_STATUS.BAD_REQUEST, `Provider '${provider}' does not support video generation`);
92
+ }
93
+ if (!requestId && !VIDEO_ACTIONS.has(action)) {
94
+ return createErrorResult(HTTP_STATUS.BAD_REQUEST, `Unknown video action: ${action}`);
95
+ }
96
+
97
+ const method = requestId ? "GET" : "POST";
98
+ const url = buildUpstreamUrl(config, action, requestId);
99
+ const fetchSignal = combineSignals(signal, timeoutMs);
100
+
101
+ const doFetch = (token) =>
102
+ fetch(url, {
103
+ method,
104
+ headers: buildHeaders({ token, contentType: method === "POST" ? contentType : null, idempotencyKey: method === "POST" ? idempotencyKey : null }),
105
+ body: method === "POST" ? rawBody : undefined,
106
+ signal: fetchSignal,
107
+ });
108
+
109
+ let upstream;
110
+ try {
111
+ upstream = await doFetch(credentials?.accessToken || credentials?.apiKey);
112
+ } catch (error) {
113
+ if (error?.name === "AbortError" || error?.name === "TimeoutError") {
114
+ return createErrorResult(HTTP_STATUS.REQUEST_TIMEOUT, `[${provider}] video ${method} aborted: ${error.message}`);
115
+ }
116
+ // Never re-send a creation POST on network error — the job may already exist upstream.
117
+ return createErrorResult(HTTP_STATUS.BAD_GATEWAY, sanitizeSecrets(`[${provider}] video upstream fetch failed: ${error.message}`, credentials));
118
+ }
119
+
120
+ // 401/403 → refresh once → retry once (OAuth accounts only; API keys can't refresh)
121
+ if (
122
+ (upstream.status === HTTP_STATUS.UNAUTHORIZED || upstream.status === HTTP_STATUS.FORBIDDEN) &&
123
+ credentials?.refreshToken
124
+ ) {
125
+ let refreshed = null;
126
+ try {
127
+ refreshed = await refreshTokenByProvider(provider, credentials, log);
128
+ } catch (error) {
129
+ log?.warn?.("TOKEN", `${provider} | video refresh error: ${sanitizeSecrets(error.message, credentials)}`);
130
+ }
131
+ if (refreshed?.accessToken) {
132
+ log?.info?.("TOKEN", `${provider.toUpperCase()} | refreshed for video ${method}`);
133
+ Object.assign(credentials, refreshed);
134
+ if (onCredentialsRefreshed) await onCredentialsRefreshed(refreshed);
135
+ try {
136
+ await upstream.body?.cancel?.();
137
+ } catch { /* noop */ }
138
+ try {
139
+ upstream = await doFetch(credentials.accessToken || credentials.apiKey);
140
+ } catch (error) {
141
+ return createErrorResult(HTTP_STATUS.BAD_GATEWAY, sanitizeSecrets(`[${provider}] video retry after refresh failed: ${error.message}`, credentials));
142
+ }
143
+ } else {
144
+ log?.warn?.("TOKEN", `${provider.toUpperCase()} | video refresh failed — account needs re-auth`);
145
+ }
146
+ }
147
+
148
+ const bodyText = await upstream.text().catch(() => "");
149
+
150
+ if (!upstream.ok) {
151
+ const message = sanitizeSecrets(bodyText || `HTTP ${upstream.status}`, credentials);
152
+ return createErrorResult(upstream.status, `[${provider}] ${message.slice(0, 2000)}`);
153
+ }
154
+
155
+ // Success: pass the upstream JSON through untouched (request_id / status / video.url).
156
+ return {
157
+ success: true,
158
+ response: new Response(bodyText, {
159
+ status: upstream.status,
160
+ headers: {
161
+ "Content-Type": upstream.headers.get("content-type") || "application/json",
162
+ "Access-Control-Allow-Origin": "*",
163
+ },
164
+ }),
165
+ };
166
+ }
@@ -98,6 +98,8 @@ export const MODEL_CAPABILITIES = {
98
98
  "coder-model": { reasoning: true, thinkingFormat: "qwen", contextWindow: 1000000 },
99
99
  };
100
100
 
101
+ const KIRO_GPT_5_6_CAPABILITIES = { vision: true, reasoning: true, search: true, thinkingFormat: "openai", contextWindow: 272000, maxOutput: 128000 };
102
+
101
103
  /**
102
104
  * Provider-specific capability overrides. Keyed by provider alias/id.
103
105
  */
@@ -111,6 +113,20 @@ export const PROVIDER_CAPABILITIES = {
111
113
  "deepseek-ai/deepseek-v4-pro": { reasoning: true, thinkingFormat: "openai", contextWindow: 1000000, maxOutput: 65536 },
112
114
  "deepseek-ai/deepseek-v4-flash": { reasoning: true, thinkingFormat: "openai", contextWindow: 1000000, maxOutput: 65536 },
113
115
  },
116
+ "kiro": {
117
+ "gpt-5.6-sol": KIRO_GPT_5_6_CAPABILITIES,
118
+ "gpt-5.6-terra": KIRO_GPT_5_6_CAPABILITIES,
119
+ "gpt-5.6-luna": KIRO_GPT_5_6_CAPABILITIES,
120
+ "gpt-5.6-sol-thinking": KIRO_GPT_5_6_CAPABILITIES,
121
+ "gpt-5.6-terra-thinking": KIRO_GPT_5_6_CAPABILITIES,
122
+ "gpt-5.6-luna-thinking": KIRO_GPT_5_6_CAPABILITIES,
123
+ "gpt-5.6-sol-agentic": KIRO_GPT_5_6_CAPABILITIES,
124
+ "gpt-5.6-terra-agentic": KIRO_GPT_5_6_CAPABILITIES,
125
+ "gpt-5.6-luna-agentic": KIRO_GPT_5_6_CAPABILITIES,
126
+ "gpt-5.6-sol-thinking-agentic": KIRO_GPT_5_6_CAPABILITIES,
127
+ "gpt-5.6-terra-thinking-agentic": KIRO_GPT_5_6_CAPABILITIES,
128
+ "gpt-5.6-luna-thinking-agentic": KIRO_GPT_5_6_CAPABILITIES,
129
+ },
114
130
  // CodeBuddy.cn — authoritative per-model metadata from the gateway's model
115
131
  // config (contextWindow=maxInputTokens, maxOutput=maxOutputTokens, vision=
116
132
  // supportsImages). Every model reasons via OpenAI-style reasoning_effort
@@ -271,13 +287,17 @@ export const PATTERN_CAPABILITIES = [
271
287
  export function getCapabilitiesForModel(provider, model) {
272
288
  if (!model) return { ...DEFAULT_CAPABILITIES };
273
289
 
290
+ // Canonical exact lookup strips vendor prefix: "anthropic/claude-opus-4.7" -> "claude-opus-4.7".
291
+ const baseModel = model.includes("/") ? model.split("/").pop() : model;
292
+
274
293
  // 1. Provider-specific override
275
- if (provider && PROVIDER_CAPABILITIES[provider]?.[model]) {
276
- return { ...DEFAULT_CAPABILITIES, ...PROVIDER_CAPABILITIES[provider][model] };
294
+ if (provider) {
295
+ const providerCaps = PROVIDER_CAPABILITIES[provider];
296
+ if (providerCaps?.[model]) return { ...DEFAULT_CAPABILITIES, ...providerCaps[model] };
297
+ if (providerCaps?.[baseModel]) return { ...DEFAULT_CAPABILITIES, ...providerCaps[baseModel] };
277
298
  }
278
299
 
279
- // 2. Canonical exact (strip vendor prefix: "anthropic/claude-opus-4.7" -> "claude-opus-4.7")
280
- const baseModel = model.includes("/") ? model.split("/").pop() : model;
300
+ // 2. Canonical exact
281
301
  if (MODEL_CAPABILITIES[baseModel]) return { ...DEFAULT_CAPABILITIES, ...MODEL_CAPABILITIES[baseModel] };
282
302
  if (MODEL_CAPABILITIES[model]) return { ...DEFAULT_CAPABILITIES, ...MODEL_CAPABILITIES[model] };
283
303