zevairouter 1.0.11 → 1.0.13

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 (540) hide show
  1. package/README.md +125 -44
  2. package/cli/app/.next-cli-build/BUILD_ID +1 -1
  3. package/cli/app/.next-cli-build/app-path-routes-manifest.json +3 -3
  4. package/cli/app/.next-cli-build/build-manifest.json +2 -2
  5. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/automation/page.js +1 -1
  6. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/automation/page.js.nft.json +1 -1
  7. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/automation/page_client-reference-manifest.js +1 -1
  8. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page.js +1 -1
  9. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page.js.nft.json +1 -1
  10. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
  11. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js +1 -1
  12. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js.nft.json +1 -1
  13. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page_client-reference-manifest.js +1 -1
  14. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js +1 -1
  15. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
  16. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  17. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page.js +1 -1
  18. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page.js.nft.json +1 -1
  19. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  20. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page.js +1 -1
  21. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page.js.nft.json +1 -1
  22. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
  23. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js +1 -1
  24. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
  25. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  26. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js +1 -1
  27. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js.nft.json +1 -1
  28. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
  29. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js +1 -1
  30. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js.nft.json +1 -1
  31. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -1
  32. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js +1 -1
  33. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js.nft.json +1 -1
  34. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +1 -1
  35. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page.js +1 -1
  36. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page.js.nft.json +1 -1
  37. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +1 -1
  38. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page.js +1 -1
  39. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page.js.nft.json +1 -1
  40. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
  41. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js +1 -1
  42. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
  43. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  44. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page.js +1 -1
  45. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page.js.nft.json +1 -1
  46. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  47. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js +1 -1
  48. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js.nft.json +1 -1
  49. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  50. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page.js +1 -1
  51. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page.js.nft.json +1 -1
  52. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  53. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page.js +1 -1
  54. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page.js.nft.json +1 -1
  55. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  56. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page.js +1 -1
  57. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page.js.nft.json +1 -1
  58. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
  59. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page.js +2 -2
  60. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page.js.nft.json +1 -1
  61. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
  62. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page.js +1 -1
  63. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page.js.nft.json +1 -1
  64. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page_client-reference-manifest.js +1 -1
  65. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page.js +1 -1
  66. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page.js.nft.json +1 -1
  67. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  68. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page.js +1 -1
  69. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page.js.nft.json +1 -1
  70. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  71. package/cli/app/.next-cli-build/server/app/_global-error/page.js.nft.json +1 -1
  72. package/cli/app/.next-cli-build/server/app/_global-error/page_client-reference-manifest.js +1 -1
  73. package/cli/app/.next-cli-build/server/app/_global-error.html +1 -1
  74. package/cli/app/.next-cli-build/server/app/_global-error.rsc +1 -1
  75. package/cli/app/.next-cli-build/server/app/_global-error.segments/_full.segment.rsc +1 -1
  76. package/cli/app/.next-cli-build/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  77. package/cli/app/.next-cli-build/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  78. package/cli/app/.next-cli-build/server/app/_global-error.segments/_head.segment.rsc +1 -1
  79. package/cli/app/.next-cli-build/server/app/_global-error.segments/_index.segment.rsc +1 -1
  80. package/cli/app/.next-cli-build/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  81. package/cli/app/.next-cli-build/server/app/_not-found/page.js +1 -1
  82. package/cli/app/.next-cli-build/server/app/_not-found/page.js.nft.json +1 -1
  83. package/cli/app/.next-cli-build/server/app/_not-found/page_client-reference-manifest.js +1 -1
  84. package/cli/app/.next-cli-build/server/app/_not-found.html +1 -1
  85. package/cli/app/.next-cli-build/server/app/_not-found.rsc +3 -3
  86. package/cli/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +3 -3
  87. package/cli/app/.next-cli-build/server/app/_not-found.segments/_head.segment.rsc +1 -1
  88. package/cli/app/.next-cli-build/server/app/_not-found.segments/_index.segment.rsc +3 -3
  89. package/cli/app/.next-cli-build/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  90. package/cli/app/.next-cli-build/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  91. package/cli/app/.next-cli-build/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  92. package/cli/app/.next-cli-build/server/app/api/auth/login/route.js.nft.json +1 -1
  93. package/cli/app/.next-cli-build/server/app/api/auth/logout/route.js.nft.json +1 -1
  94. package/cli/app/.next-cli-build/server/app/api/auth/oidc/callback/route.js.nft.json +1 -1
  95. package/cli/app/.next-cli-build/server/app/api/auth/oidc/start/route.js.nft.json +1 -1
  96. package/cli/app/.next-cli-build/server/app/api/auth/oidc/test/route.js.nft.json +1 -1
  97. package/cli/app/.next-cli-build/server/app/api/auth/status/route.js.nft.json +1 -1
  98. package/cli/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js +1 -1
  99. package/cli/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js.nft.json +1 -1
  100. package/cli/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js.nft.json +1 -1
  101. package/cli/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js.nft.json +1 -1
  102. package/cli/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route.js.nft.json +1 -1
  103. package/cli/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js.nft.json +1 -1
  104. package/cli/app/.next-cli-build/server/app/api/cli-tools/codex-gateway/accounts/route.js +1 -1
  105. package/cli/app/.next-cli-build/server/app/api/cli-tools/codex-gateway/accounts/route.js.nft.json +1 -1
  106. package/cli/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js.nft.json +1 -1
  107. package/cli/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js.nft.json +1 -1
  108. package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js.nft.json +1 -1
  109. package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js.nft.json +1 -1
  110. package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js +1 -1
  111. package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js.nft.json +1 -1
  112. package/cli/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js.nft.json +1 -1
  113. package/cli/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js.nft.json +1 -1
  114. package/cli/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js.nft.json +1 -1
  115. package/cli/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js.nft.json +1 -1
  116. package/cli/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js.nft.json +1 -1
  117. package/cli/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js.nft.json +1 -1
  118. package/cli/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js.nft.json +1 -1
  119. package/cli/app/.next-cli-build/server/app/api/combos/[id]/route.js.nft.json +1 -1
  120. package/cli/app/.next-cli-build/server/app/api/combos/route.js.nft.json +1 -1
  121. package/cli/app/.next-cli-build/server/app/api/health/route.js.nft.json +1 -1
  122. package/cli/app/.next-cli-build/server/app/api/init/route.js.nft.json +1 -1
  123. package/cli/app/.next-cli-build/server/app/api/keys/[id]/route.js.nft.json +1 -1
  124. package/cli/app/.next-cli-build/server/app/api/keys/route.js.nft.json +1 -1
  125. package/cli/app/.next-cli-build/server/app/api/locale/route.js.nft.json +1 -1
  126. package/cli/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route.js.nft.json +1 -1
  127. package/cli/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route.js.nft.json +1 -1
  128. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js.nft.json +1 -1
  129. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js.nft.json +1 -1
  130. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js.nft.json +1 -1
  131. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js.nft.json +1 -1
  132. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/voices/route.js.nft.json +1 -1
  133. package/cli/app/.next-cli-build/server/app/api/models/alias/route.js.nft.json +1 -1
  134. package/cli/app/.next-cli-build/server/app/api/models/availability/route.js.nft.json +1 -1
  135. package/cli/app/.next-cli-build/server/app/api/models/custom/route.js.nft.json +1 -1
  136. package/cli/app/.next-cli-build/server/app/api/models/disabled/route.js.nft.json +1 -1
  137. package/cli/app/.next-cli-build/server/app/api/models/route.js +1 -1
  138. package/cli/app/.next-cli-build/server/app/api/models/route.js.nft.json +1 -1
  139. package/cli/app/.next-cli-build/server/app/api/models/test/route.js +1 -1
  140. package/cli/app/.next-cli-build/server/app/api/models/test/route.js.nft.json +1 -1
  141. package/cli/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js +1 -1
  142. package/cli/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js.nft.json +1 -1
  143. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/cancel/route.js +1 -1
  144. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
  145. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/manual/[workerId]/route.js +1 -1
  146. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
  147. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/route.js +1 -1
  148. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/route.js.nft.json +1 -1
  149. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/latest/route.js +1 -1
  150. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/latest/route.js.nft.json +1 -1
  151. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/route.js +1 -1
  152. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/route.js.nft.json +1 -1
  153. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
  154. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
  155. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/route.js.nft.json +1 -1
  156. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/latest/route.js.nft.json +1 -1
  157. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/route.js.nft.json +1 -1
  158. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-token/route.js.nft.json +1 -1
  159. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/quota-cookie/route.js.nft.json +1 -1
  160. package/cli/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js +1 -1
  161. package/cli/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js.nft.json +1 -1
  162. package/cli/app/.next-cli-build/server/app/api/oauth/cursor/auto-import/route.js.nft.json +1 -1
  163. package/cli/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js.nft.json +1 -1
  164. package/cli/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js.nft.json +1 -1
  165. package/cli/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js.nft.json +1 -1
  166. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/auto-import/route.js.nft.json +1 -1
  167. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
  168. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
  169. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/route.js.nft.json +1 -1
  170. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/latest/route.js.nft.json +1 -1
  171. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/route.js.nft.json +1 -1
  172. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js.nft.json +1 -1
  173. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/social-authorize/route.js.nft.json +1 -1
  174. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js.nft.json +1 -1
  175. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
  176. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
  177. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/route.js.nft.json +1 -1
  178. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/latest/route.js.nft.json +1 -1
  179. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/route.js.nft.json +1 -1
  180. package/cli/app/.next-cli-build/server/app/api/pricing/route.js.nft.json +1 -1
  181. package/cli/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js.nft.json +1 -1
  182. package/cli/app/.next-cli-build/server/app/api/provider-nodes/route.js.nft.json +1 -1
  183. package/cli/app/.next-cli-build/server/app/api/provider-nodes/validate/route.js.nft.json +1 -1
  184. package/cli/app/.next-cli-build/server/app/api/providers/[id]/models/route.js +1 -1
  185. package/cli/app/.next-cli-build/server/app/api/providers/[id]/models/route.js.nft.json +1 -1
  186. package/cli/app/.next-cli-build/server/app/api/providers/[id]/route.js.nft.json +1 -1
  187. package/cli/app/.next-cli-build/server/app/api/providers/[id]/test/route.js +1 -1
  188. package/cli/app/.next-cli-build/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
  189. package/cli/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js +1 -1
  190. package/cli/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js.nft.json +1 -1
  191. package/cli/app/.next-cli-build/server/app/api/providers/client/route.js +1 -1
  192. package/cli/app/.next-cli-build/server/app/api/providers/client/route.js.nft.json +1 -1
  193. package/cli/app/.next-cli-build/server/app/api/providers/kilo/free-models/route.js.nft.json +1 -1
  194. package/cli/app/.next-cli-build/server/app/api/providers/route.js +1 -1
  195. package/cli/app/.next-cli-build/server/app/api/providers/route.js.nft.json +1 -1
  196. package/cli/app/.next-cli-build/server/app/api/providers/suggested-models/route.js.nft.json +1 -1
  197. package/cli/app/.next-cli-build/server/app/api/providers/test-batch/route.js +1 -1
  198. package/cli/app/.next-cli-build/server/app/api/providers/test-batch/route.js.nft.json +1 -1
  199. package/cli/app/.next-cli-build/server/app/api/providers/validate/route.js +1 -1
  200. package/cli/app/.next-cli-build/server/app/api/providers/validate/route.js.nft.json +1 -1
  201. package/cli/app/.next-cli-build/server/app/api/proxy-pools/[id]/route.js.nft.json +1 -1
  202. package/cli/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js.nft.json +1 -1
  203. package/cli/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route.js.nft.json +1 -1
  204. package/cli/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route.js.nft.json +1 -1
  205. package/cli/app/.next-cli-build/server/app/api/proxy-pools/route.js.nft.json +1 -1
  206. package/cli/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js.nft.json +1 -1
  207. package/cli/app/.next-cli-build/server/app/api/settings/database/route.js.nft.json +1 -1
  208. package/cli/app/.next-cli-build/server/app/api/settings/proxy-test/route.js.nft.json +1 -1
  209. package/cli/app/.next-cli-build/server/app/api/settings/require-login/route.js.nft.json +1 -1
  210. package/cli/app/.next-cli-build/server/app/api/settings/route.js.nft.json +1 -1
  211. package/cli/app/.next-cli-build/server/app/api/shutdown/route.js.nft.json +1 -1
  212. package/cli/app/.next-cli-build/server/app/api/tags/route.js.nft.json +1 -1
  213. package/cli/app/.next-cli-build/server/app/api/translator/console-logs/route.js +1 -1
  214. package/cli/app/.next-cli-build/server/app/api/translator/console-logs/route.js.nft.json +1 -1
  215. package/cli/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js +2 -2
  216. package/cli/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js.nft.json +1 -1
  217. package/cli/app/.next-cli-build/server/app/api/translator/load/route.js.nft.json +1 -1
  218. package/cli/app/.next-cli-build/server/app/api/translator/save/route.js.nft.json +1 -1
  219. package/cli/app/.next-cli-build/server/app/api/translator/send/route.js +1 -1
  220. package/cli/app/.next-cli-build/server/app/api/translator/send/route.js.nft.json +1 -1
  221. package/cli/app/.next-cli-build/server/app/api/translator/translate/route.js +1 -1
  222. package/cli/app/.next-cli-build/server/app/api/translator/translate/route.js.nft.json +1 -1
  223. package/cli/app/.next-cli-build/server/app/api/tunnel/disable/route.js.nft.json +1 -1
  224. package/cli/app/.next-cli-build/server/app/api/tunnel/enable/route.js.nft.json +1 -1
  225. package/cli/app/.next-cli-build/server/app/api/tunnel/status/route.js.nft.json +1 -1
  226. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-check/route.js.nft.json +1 -1
  227. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route.js.nft.json +1 -1
  228. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route.js.nft.json +1 -1
  229. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js.nft.json +1 -1
  230. package/cli/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js +1 -1
  231. package/cli/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
  232. package/cli/app/.next-cli-build/server/app/api/usage/chart/route.js.nft.json +1 -1
  233. package/cli/app/.next-cli-build/server/app/api/usage/history/route.js.nft.json +1 -1
  234. package/cli/app/.next-cli-build/server/app/api/usage/providers/route.js.nft.json +1 -1
  235. package/cli/app/.next-cli-build/server/app/api/usage/request-details/route.js.nft.json +1 -1
  236. package/cli/app/.next-cli-build/server/app/api/usage/request-logs/route.js.nft.json +1 -1
  237. package/cli/app/.next-cli-build/server/app/api/usage/stats/route.js.nft.json +1 -1
  238. package/cli/app/.next-cli-build/server/app/api/usage/stream/route.js.nft.json +1 -1
  239. package/cli/app/.next-cli-build/server/app/api/v1/api/chat/route.js +1 -1
  240. package/cli/app/.next-cli-build/server/app/api/v1/api/chat/route.js.nft.json +1 -1
  241. package/cli/app/.next-cli-build/server/app/api/v1/audio/speech/route.js +1 -1
  242. package/cli/app/.next-cli-build/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
  243. package/cli/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js +1 -1
  244. package/cli/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
  245. package/cli/app/.next-cli-build/server/app/api/v1/audio/voices/route.js.nft.json +1 -1
  246. package/cli/app/.next-cli-build/server/app/api/v1/chat/completions/route.js +1 -1
  247. package/cli/app/.next-cli-build/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
  248. package/cli/app/.next-cli-build/server/app/api/v1/embeddings/route.js +1 -1
  249. package/cli/app/.next-cli-build/server/app/api/v1/embeddings/route.js.nft.json +1 -1
  250. package/cli/app/.next-cli-build/server/app/api/v1/images/generations/route.js +1 -1
  251. package/cli/app/.next-cli-build/server/app/api/v1/images/generations/route.js.nft.json +1 -1
  252. package/cli/app/.next-cli-build/server/app/api/v1/messages/count_tokens/route.js.nft.json +1 -1
  253. package/cli/app/.next-cli-build/server/app/api/v1/messages/route.js +1 -1
  254. package/cli/app/.next-cli-build/server/app/api/v1/messages/route.js.nft.json +1 -1
  255. package/cli/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js +1 -1
  256. package/cli/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js.nft.json +1 -1
  257. package/cli/app/.next-cli-build/server/app/api/v1/models/info/route.js +1 -1
  258. package/cli/app/.next-cli-build/server/app/api/v1/models/info/route.js.nft.json +1 -1
  259. package/cli/app/.next-cli-build/server/app/api/v1/models/route.js +1 -1
  260. package/cli/app/.next-cli-build/server/app/api/v1/models/route.js.nft.json +1 -1
  261. package/cli/app/.next-cli-build/server/app/api/v1/responses/compact/route.js +1 -1
  262. package/cli/app/.next-cli-build/server/app/api/v1/responses/compact/route.js.nft.json +1 -1
  263. package/cli/app/.next-cli-build/server/app/api/v1/responses/route.js +1 -1
  264. package/cli/app/.next-cli-build/server/app/api/v1/responses/route.js.nft.json +1 -1
  265. package/cli/app/.next-cli-build/server/app/api/v1/route.js +1 -1
  266. package/cli/app/.next-cli-build/server/app/api/v1/route.js.nft.json +1 -1
  267. package/cli/app/.next-cli-build/server/app/api/v1/search/route.js +1 -1
  268. package/cli/app/.next-cli-build/server/app/api/v1/search/route.js.nft.json +1 -1
  269. package/cli/app/.next-cli-build/server/app/api/v1/web/fetch/route.js +1 -1
  270. package/cli/app/.next-cli-build/server/app/api/v1/web/fetch/route.js.nft.json +1 -1
  271. package/cli/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js +1 -1
  272. package/cli/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
  273. package/cli/app/.next-cli-build/server/app/api/v1beta/models/route.js +1 -1
  274. package/cli/app/.next-cli-build/server/app/api/v1beta/models/route.js.nft.json +1 -1
  275. package/cli/app/.next-cli-build/server/app/api/version/route.js +1 -1
  276. package/cli/app/.next-cli-build/server/app/api/version/route.js.nft.json +1 -1
  277. package/cli/app/.next-cli-build/server/app/api/version/shutdown/route.js +1 -1
  278. package/cli/app/.next-cli-build/server/app/api/version/shutdown/route.js.nft.json +1 -1
  279. package/cli/app/.next-cli-build/server/app/api/version/update/route.js +1 -1
  280. package/cli/app/.next-cli-build/server/app/api/version/update/route.js.nft.json +1 -1
  281. package/cli/app/.next-cli-build/server/app/callback/page.js +1 -1
  282. package/cli/app/.next-cli-build/server/app/callback/page.js.nft.json +1 -1
  283. package/cli/app/.next-cli-build/server/app/callback/page_client-reference-manifest.js +1 -1
  284. package/cli/app/.next-cli-build/server/app/callback.html +1 -1
  285. package/cli/app/.next-cli-build/server/app/callback.rsc +3 -3
  286. package/cli/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +3 -3
  287. package/cli/app/.next-cli-build/server/app/callback.segments/_head.segment.rsc +1 -1
  288. package/cli/app/.next-cli-build/server/app/callback.segments/_index.segment.rsc +3 -3
  289. package/cli/app/.next-cli-build/server/app/callback.segments/_tree.segment.rsc +1 -1
  290. package/cli/app/.next-cli-build/server/app/callback.segments/callback/__PAGE__.segment.rsc +1 -1
  291. package/cli/app/.next-cli-build/server/app/callback.segments/callback.segment.rsc +1 -1
  292. package/cli/app/.next-cli-build/server/app/dashboard/automation.html +1 -1
  293. package/cli/app/.next-cli-build/server/app/dashboard/automation.rsc +5 -5
  294. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk/dashboard/automation/__PAGE__.segment.rsc +2 -2
  295. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk/dashboard/automation.segment.rsc +1 -1
  296. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  297. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  298. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_full.segment.rsc +5 -5
  299. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_head.segment.rsc +1 -1
  300. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_index.segment.rsc +3 -3
  301. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_tree.segment.rsc +1 -1
  302. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.html +1 -1
  303. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.rsc +5 -5
  304. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +2 -2
  305. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat.segment.rsc +1 -1
  306. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  307. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  308. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_full.segment.rsc +5 -5
  309. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_head.segment.rsc +1 -1
  310. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_index.segment.rsc +3 -3
  311. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +1 -1
  312. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.html +1 -1
  313. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.rsc +5 -5
  314. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +2 -2
  315. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools.segment.rsc +1 -1
  316. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  317. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  318. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_full.segment.rsc +5 -5
  319. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_head.segment.rsc +1 -1
  320. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_index.segment.rsc +3 -3
  321. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +1 -1
  322. package/cli/app/.next-cli-build/server/app/dashboard/combos.html +1 -1
  323. package/cli/app/.next-cli-build/server/app/dashboard/combos.rsc +5 -5
  324. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +2 -2
  325. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos.segment.rsc +1 -1
  326. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  327. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  328. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_full.segment.rsc +5 -5
  329. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_head.segment.rsc +1 -1
  330. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_index.segment.rsc +3 -3
  331. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_tree.segment.rsc +1 -1
  332. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.html +1 -1
  333. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.rsc +5 -5
  334. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +2 -2
  335. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint.segment.rsc +1 -1
  336. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  337. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  338. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_full.segment.rsc +5 -5
  339. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_head.segment.rsc +1 -1
  340. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_index.segment.rsc +3 -3
  341. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_tree.segment.rsc +1 -1
  342. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.html +1 -1
  343. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.rsc +5 -5
  344. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web/__PAGE__.segment.rsc +2 -2
  345. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web.segment.rsc +1 -1
  346. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers.segment.rsc +1 -1
  347. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  348. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  349. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_full.segment.rsc +5 -5
  350. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_head.segment.rsc +1 -1
  351. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_index.segment.rsc +3 -3
  352. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_tree.segment.rsc +1 -1
  353. package/cli/app/.next-cli-build/server/app/dashboard/mitm.html +1 -1
  354. package/cli/app/.next-cli-build/server/app/dashboard/mitm.rsc +5 -5
  355. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +2 -2
  356. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm.segment.rsc +1 -1
  357. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  358. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  359. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_full.segment.rsc +5 -5
  360. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_head.segment.rsc +1 -1
  361. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_index.segment.rsc +3 -3
  362. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_tree.segment.rsc +1 -1
  363. package/cli/app/.next-cli-build/server/app/dashboard/profile.html +1 -1
  364. package/cli/app/.next-cli-build/server/app/dashboard/profile.rsc +5 -5
  365. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +2 -2
  366. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile.segment.rsc +1 -1
  367. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  368. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  369. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_full.segment.rsc +5 -5
  370. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_head.segment.rsc +1 -1
  371. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_index.segment.rsc +3 -3
  372. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_tree.segment.rsc +1 -1
  373. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.html +1 -1
  374. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.rsc +5 -5
  375. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +2 -2
  376. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new.segment.rsc +1 -1
  377. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  378. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  379. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  380. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_full.segment.rsc +5 -5
  381. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_head.segment.rsc +1 -1
  382. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_index.segment.rsc +3 -3
  383. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_tree.segment.rsc +1 -1
  384. package/cli/app/.next-cli-build/server/app/dashboard/providers.html +1 -1
  385. package/cli/app/.next-cli-build/server/app/dashboard/providers.rsc +5 -5
  386. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +2 -2
  387. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  388. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  389. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  390. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_full.segment.rsc +5 -5
  391. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_head.segment.rsc +1 -1
  392. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_index.segment.rsc +3 -3
  393. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_tree.segment.rsc +1 -1
  394. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.html +1 -1
  395. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.rsc +5 -5
  396. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +2 -2
  397. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools.segment.rsc +1 -1
  398. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  399. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  400. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +5 -5
  401. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_head.segment.rsc +1 -1
  402. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_index.segment.rsc +3 -3
  403. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +1 -1
  404. package/cli/app/.next-cli-build/server/app/dashboard/quota.html +2 -2
  405. package/cli/app/.next-cli-build/server/app/dashboard/quota.rsc +6 -6
  406. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +3 -3
  407. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota.segment.rsc +1 -1
  408. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  409. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  410. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_full.segment.rsc +6 -6
  411. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_head.segment.rsc +1 -1
  412. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_index.segment.rsc +3 -3
  413. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_tree.segment.rsc +1 -1
  414. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing/page.js +1 -1
  415. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing/page.js.nft.json +1 -1
  416. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  417. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.html +1 -1
  418. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.rsc +3 -3
  419. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +3 -3
  420. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +1 -1
  421. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +3 -3
  422. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +1 -1
  423. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +1 -1
  424. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing.segment.rsc +1 -1
  425. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings.segment.rsc +1 -1
  426. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard.segment.rsc +1 -1
  427. package/cli/app/.next-cli-build/server/app/dashboard/skills.html +1 -1
  428. package/cli/app/.next-cli-build/server/app/dashboard/skills.rsc +5 -5
  429. package/cli/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills/__PAGE__.segment.rsc +2 -2
  430. package/cli/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills.segment.rsc +1 -1
  431. package/cli/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  432. package/cli/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  433. package/cli/app/.next-cli-build/server/app/dashboard/skills.segments/_full.segment.rsc +5 -5
  434. package/cli/app/.next-cli-build/server/app/dashboard/skills.segments/_head.segment.rsc +1 -1
  435. package/cli/app/.next-cli-build/server/app/dashboard/skills.segments/_index.segment.rsc +3 -3
  436. package/cli/app/.next-cli-build/server/app/dashboard/skills.segments/_tree.segment.rsc +1 -1
  437. package/cli/app/.next-cli-build/server/app/dashboard/translator.html +1 -1
  438. package/cli/app/.next-cli-build/server/app/dashboard/translator.rsc +5 -5
  439. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +2 -2
  440. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator.segment.rsc +1 -1
  441. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  442. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  443. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_full.segment.rsc +5 -5
  444. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_head.segment.rsc +1 -1
  445. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_index.segment.rsc +3 -3
  446. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_tree.segment.rsc +1 -1
  447. package/cli/app/.next-cli-build/server/app/dashboard/usage.html +1 -1
  448. package/cli/app/.next-cli-build/server/app/dashboard/usage.rsc +5 -5
  449. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +2 -2
  450. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage.segment.rsc +1 -1
  451. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  452. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  453. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_full.segment.rsc +5 -5
  454. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_head.segment.rsc +1 -1
  455. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_index.segment.rsc +3 -3
  456. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_tree.segment.rsc +1 -1
  457. package/cli/app/.next-cli-build/server/app/dashboard.html +1 -1
  458. package/cli/app/.next-cli-build/server/app/dashboard.rsc +5 -5
  459. package/cli/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +2 -2
  460. package/cli/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  461. package/cli/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  462. package/cli/app/.next-cli-build/server/app/dashboard.segments/_full.segment.rsc +5 -5
  463. package/cli/app/.next-cli-build/server/app/dashboard.segments/_head.segment.rsc +1 -1
  464. package/cli/app/.next-cli-build/server/app/dashboard.segments/_index.segment.rsc +3 -3
  465. package/cli/app/.next-cli-build/server/app/dashboard.segments/_tree.segment.rsc +1 -1
  466. package/cli/app/.next-cli-build/server/app/index.html +1 -1
  467. package/cli/app/.next-cli-build/server/app/index.rsc +3 -3
  468. package/cli/app/.next-cli-build/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  469. package/cli/app/.next-cli-build/server/app/index.segments/_full.segment.rsc +3 -3
  470. package/cli/app/.next-cli-build/server/app/index.segments/_head.segment.rsc +1 -1
  471. package/cli/app/.next-cli-build/server/app/index.segments/_index.segment.rsc +3 -3
  472. package/cli/app/.next-cli-build/server/app/index.segments/_tree.segment.rsc +1 -1
  473. package/cli/app/.next-cli-build/server/app/landing/page.js +1 -1
  474. package/cli/app/.next-cli-build/server/app/landing/page.js.nft.json +1 -1
  475. package/cli/app/.next-cli-build/server/app/landing/page_client-reference-manifest.js +1 -1
  476. package/cli/app/.next-cli-build/server/app/landing.html +1 -1
  477. package/cli/app/.next-cli-build/server/app/landing.rsc +3 -3
  478. package/cli/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +3 -3
  479. package/cli/app/.next-cli-build/server/app/landing.segments/_head.segment.rsc +1 -1
  480. package/cli/app/.next-cli-build/server/app/landing.segments/_index.segment.rsc +3 -3
  481. package/cli/app/.next-cli-build/server/app/landing.segments/_tree.segment.rsc +1 -1
  482. package/cli/app/.next-cli-build/server/app/landing.segments/landing/__PAGE__.segment.rsc +1 -1
  483. package/cli/app/.next-cli-build/server/app/landing.segments/landing.segment.rsc +1 -1
  484. package/cli/app/.next-cli-build/server/app/login/page.js +1 -1
  485. package/cli/app/.next-cli-build/server/app/login/page.js.nft.json +1 -1
  486. package/cli/app/.next-cli-build/server/app/login/page_client-reference-manifest.js +1 -1
  487. package/cli/app/.next-cli-build/server/app/login.html +1 -1
  488. package/cli/app/.next-cli-build/server/app/login.rsc +4 -4
  489. package/cli/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +4 -4
  490. package/cli/app/.next-cli-build/server/app/login.segments/_head.segment.rsc +1 -1
  491. package/cli/app/.next-cli-build/server/app/login.segments/_index.segment.rsc +3 -3
  492. package/cli/app/.next-cli-build/server/app/login.segments/_tree.segment.rsc +1 -1
  493. package/cli/app/.next-cli-build/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
  494. package/cli/app/.next-cli-build/server/app/login.segments/login.segment.rsc +1 -1
  495. package/cli/app/.next-cli-build/server/app/manifest.webmanifest/route.js.nft.json +1 -1
  496. package/cli/app/.next-cli-build/server/app/page.js +1 -1
  497. package/cli/app/.next-cli-build/server/app/page.js.nft.json +1 -1
  498. package/cli/app/.next-cli-build/server/app/page_client-reference-manifest.js +1 -1
  499. package/cli/app/.next-cli-build/server/app-paths-manifest.json +3 -3
  500. package/cli/app/.next-cli-build/server/chunks/3104.js +1 -1
  501. package/cli/app/.next-cli-build/server/chunks/3110.js +1 -1
  502. package/cli/app/.next-cli-build/server/chunks/3159.js +1 -0
  503. package/cli/app/.next-cli-build/server/chunks/318.js +1 -1
  504. package/cli/app/.next-cli-build/server/chunks/{7879.js → 3188.js} +3 -3
  505. package/cli/app/.next-cli-build/server/chunks/4161.js +1 -0
  506. package/cli/app/.next-cli-build/server/chunks/4746.js +1 -1
  507. package/cli/app/.next-cli-build/server/chunks/5024.js +1 -0
  508. package/cli/app/.next-cli-build/server/chunks/5949.js +1 -1
  509. package/cli/app/.next-cli-build/server/chunks/6896.js +1 -1
  510. package/cli/app/.next-cli-build/server/chunks/7153.js +1 -1
  511. package/cli/app/.next-cli-build/server/chunks/{1517.js → 8255.js} +1 -1
  512. package/cli/app/.next-cli-build/server/chunks/8590.js +1 -1
  513. package/cli/app/.next-cli-build/server/chunks/891.js +1 -1
  514. package/cli/app/.next-cli-build/server/middleware-build-manifest.js +1 -1
  515. package/cli/app/.next-cli-build/server/pages/404.html +1 -1
  516. package/cli/app/.next-cli-build/server/pages/500.html +1 -1
  517. package/cli/app/.next-cli-build/static/chunks/1321-1ea0cba0e1dc93f9.js +1 -0
  518. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/quota/{page-be4721f0e8d602c8.js → page-bb8cd39cef8dc67a.js} +1 -1
  519. package/cli/app/cli/hooks/camoufoxRuntime.js +66 -14
  520. package/cli/app/package.json +3 -3
  521. package/cli/hooks/camoufoxRuntime.js +66 -14
  522. package/cli/package.json +1 -1
  523. package/open-sse/config/appConstants.js +27 -2
  524. package/open-sse/config/providers.js +2 -1
  525. package/open-sse/executors/antigravity.js +39 -8
  526. package/open-sse/services/antigravityHeaderScrub.js +75 -0
  527. package/open-sse/services/antigravityIdentity.js +115 -0
  528. package/open-sse/services/antigravityObfuscation.js +92 -0
  529. package/open-sse/services/usage.js +150 -45
  530. package/package.json +3 -3
  531. package/src/app/api/oauth/antigravity/bulk-import/route.js +2 -0
  532. package/src/lib/oauth/services/antigravityBulkImportManager.js +1 -1
  533. package/cli/app/.next-cli-build/server/chunks/1051.js +0 -1
  534. package/cli/app/.next-cli-build/server/chunks/1322.js +0 -1
  535. package/cli/app/.next-cli-build/server/chunks/5723.js +0 -1
  536. package/cli/app/.next-cli-build/server/chunks/6064.js +0 -1
  537. package/cli/app/.next-cli-build/server/chunks/6505.js +0 -1
  538. package/cli/app/.next-cli-build/static/chunks/1321-e0f25297ad8cfdb9.js +0 -1
  539. /package/cli/app/.next-cli-build/static/{rFg7NNDeIRDKXofMeqQQ1 → PMzBo5bAkklvn1QHwZSHz}/_buildManifest.js +0 -0
  540. /package/cli/app/.next-cli-build/static/{rFg7NNDeIRDKXofMeqQQ1 → PMzBo5bAkklvn1QHwZSHz}/_ssgManifest.js +0 -0
@@ -57,8 +57,10 @@ function findCamoufoxCli() {
57
57
 
58
58
  function getCamoufoxBinaryDir() {
59
59
  const homeDir = os.homedir();
60
+ // Mirror camoufox-js's userCacheDir() exactly (dist/pkgman.js) so we look in
61
+ // the same place it installs to, on every platform.
60
62
  if (process.platform === "win32") {
61
- return path.join(process.env.LOCALAPPDATA || path.join(homeDir, "AppData", "Local"), "camoufox");
63
+ return path.join(homeDir, "AppData", "Local", "camoufox", "camoufox", "Cache");
62
64
  }
63
65
  if (process.platform === "darwin") {
64
66
  return path.join(homeDir, "Library", "Caches", "camoufox");
@@ -66,20 +68,21 @@ function getCamoufoxBinaryDir() {
66
68
  return path.join(homeDir, ".cache", "camoufox");
67
69
  }
68
70
 
69
- function isCamoufoxBinaryAvailable() {
71
+ // The launch binary camoufox-js resolves per OS (dist/pkgman.js LAUNCH_FILE),
72
+ // relative to the install dir. Linux is the primary target (Ubuntu VPS).
73
+ function getCamoufoxLaunchBinary() {
70
74
  const dir = getCamoufoxBinaryDir();
71
- if (!fs.existsSync(dir)) return false;
72
- const candidates = [
73
- path.join(dir, "camoufox.exe"),
74
- path.join(dir, "camoufox"),
75
- path.join(dir, "camoufox", "camoufox.exe"),
76
- path.join(dir, "camoufox", "camoufox"),
77
- // macOS ships the browser as an .app bundle, not a bare binary.
78
- path.join(dir, "Camoufox.app", "Contents", "MacOS", "camoufox"),
79
- ];
80
- return candidates.some((p) => {
81
- try { return fs.existsSync(p); } catch { return false; }
82
- });
75
+ if (process.platform === "win32") return path.join(dir, "camoufox.exe");
76
+ if (process.platform === "darwin") return path.join(dir, "Camoufox.app", "Contents", "MacOS", "camoufox");
77
+ return path.join(dir, "camoufox-bin");
78
+ }
79
+
80
+ function isCamoufoxBinaryAvailable() {
81
+ try {
82
+ return fs.existsSync(getCamoufoxLaunchBinary());
83
+ } catch {
84
+ return false;
85
+ }
83
86
  }
84
87
 
85
88
  function ensureCamoufoxPackage({ silent = false } = {}) {
@@ -132,6 +135,50 @@ function fetchCamoufoxBinary({ silent = false, timeout = 600_000 } = {}) {
132
135
  return { ok: false, reason };
133
136
  }
134
137
 
138
+ function findPlaywrightCli() {
139
+ const candidates = [];
140
+ for (const pkg of ["playwright", "playwright-core"]) {
141
+ try {
142
+ candidates.push(path.join(path.dirname(nodeRequire.resolve(`${pkg}/package.json`)), "cli.js"));
143
+ } catch {}
144
+ try {
145
+ candidates.push(path.join(getRuntimeNodeModules(), pkg, "cli.js"));
146
+ } catch {}
147
+ }
148
+ for (const candidate of candidates) {
149
+ if (candidate && fs.existsSync(candidate)) return candidate;
150
+ }
151
+ return null;
152
+ }
153
+
154
+ // Camoufox is a patched Firefox; on a fresh Linux host it fails to launch with
155
+ // "libgtk-3.so.0: cannot open shared object file" because the GUI/X libraries
156
+ // aren't present. `playwright install-deps firefox` apt-installs them. This is
157
+ // idempotent (no-op once satisfied) and only attempted on Linux as root, where
158
+ // apt is available without a sudo prompt. Non-fatal: a missing lib surfaces as
159
+ // a clear launch error later, and the user can run the command themselves.
160
+ function ensureLinuxBrowserDeps({ silent = false } = {}) {
161
+ if (process.platform !== "linux") return { ok: true, skipped: "not-linux" };
162
+ if (typeof process.getuid === "function" && process.getuid() !== 0) {
163
+ if (!silent) console.log("\u2139 Skipping auto-install of Camoufox system libs (not root). If Camoufox fails to launch, run: npx playwright install-deps firefox");
164
+ return { ok: true, skipped: "not-root" };
165
+ }
166
+ const cliPath = findPlaywrightCli();
167
+ if (!cliPath) return { ok: true, skipped: "no-playwright-cli" };
168
+ if (!silent) console.log("\u23f3 Installing Camoufox system libraries (Linux, first run)...");
169
+ const res = spawnSync(process.execPath, [cliPath, "install-deps", "firefox"], {
170
+ stdio: silent ? ["ignore", "pipe", "pipe"] : "inherit",
171
+ timeout: 300_000,
172
+ encoding: "utf8",
173
+ });
174
+ if (res.status === 0) {
175
+ if (!silent) console.log("\u2705 Camoufox system libraries ready");
176
+ return { ok: true };
177
+ }
178
+ if (!silent) console.log("\u26a0 Could not auto-install system libs; if Camoufox fails to launch run: npx playwright install-deps firefox");
179
+ return { ok: false, reason: String(res.stderr || "").trim().split(/\r?\n/).pop()?.slice(0, 200) };
180
+ }
181
+
135
182
  function ensureCamoufoxRuntime({ silent = false } = {}) {
136
183
  if (cachedReady === true) return { ok: true };
137
184
 
@@ -161,6 +208,11 @@ function ensureCamoufoxRuntime({ silent = false } = {}) {
161
208
  }
162
209
  }
163
210
 
211
+ // Ensure Linux GUI libraries are present (idempotent). Runs even when the
212
+ // binary already existed — a host can have the binary but miss the libs (the
213
+ // libgtk-3.so.0 launch failure). Non-fatal; we cache readiness regardless.
214
+ ensureLinuxBrowserDeps({ silent });
215
+
164
216
  cachedReady = true;
165
217
  return { ok: true, module: pkg.module };
166
218
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zevairouter",
3
- "version": "1.0.11",
3
+ "version": "1.0.13",
4
4
  "description": "ZevaiRouter - AI Router with provider automation, multi-account workflows, and quota tracking",
5
5
  "bin": {
6
6
  "zevai": "./cli/cli.js"
@@ -62,7 +62,7 @@
62
62
  "socks-proxy-agent": "^10.1.0",
63
63
  "sql.js": "^1.14.1",
64
64
  "undici": "^8.4.1",
65
- "uuid": "^13.0.0",
65
+ "uuid": "^14.0.1",
66
66
  "zustand": "^5.0.10"
67
67
  },
68
68
  "optionalDependencies": {
@@ -74,7 +74,7 @@
74
74
  "comment_camoufox_js": "optional stealth-Firefox engine for bulk-import; runtime auto-installs to user data dir if user picks Camoufox in the modal but the package is missing — Chromium remains the default and works without this dep",
75
75
  "devDependencies": {
76
76
  "@tailwindcss/postcss": "^4.1.18",
77
- "esbuild": "^0.25.12",
77
+ "esbuild": "^0.28.1",
78
78
  "eslint": "^9",
79
79
  "eslint-config-next": "16.2.9",
80
80
  "postcss": "^8.5.6",
@@ -57,8 +57,10 @@ function findCamoufoxCli() {
57
57
 
58
58
  function getCamoufoxBinaryDir() {
59
59
  const homeDir = os.homedir();
60
+ // Mirror camoufox-js's userCacheDir() exactly (dist/pkgman.js) so we look in
61
+ // the same place it installs to, on every platform.
60
62
  if (process.platform === "win32") {
61
- return path.join(process.env.LOCALAPPDATA || path.join(homeDir, "AppData", "Local"), "camoufox");
63
+ return path.join(homeDir, "AppData", "Local", "camoufox", "camoufox", "Cache");
62
64
  }
63
65
  if (process.platform === "darwin") {
64
66
  return path.join(homeDir, "Library", "Caches", "camoufox");
@@ -66,20 +68,21 @@ function getCamoufoxBinaryDir() {
66
68
  return path.join(homeDir, ".cache", "camoufox");
67
69
  }
68
70
 
69
- function isCamoufoxBinaryAvailable() {
71
+ // The launch binary camoufox-js resolves per OS (dist/pkgman.js LAUNCH_FILE),
72
+ // relative to the install dir. Linux is the primary target (Ubuntu VPS).
73
+ function getCamoufoxLaunchBinary() {
70
74
  const dir = getCamoufoxBinaryDir();
71
- if (!fs.existsSync(dir)) return false;
72
- const candidates = [
73
- path.join(dir, "camoufox.exe"),
74
- path.join(dir, "camoufox"),
75
- path.join(dir, "camoufox", "camoufox.exe"),
76
- path.join(dir, "camoufox", "camoufox"),
77
- // macOS ships the browser as an .app bundle, not a bare binary.
78
- path.join(dir, "Camoufox.app", "Contents", "MacOS", "camoufox"),
79
- ];
80
- return candidates.some((p) => {
81
- try { return fs.existsSync(p); } catch { return false; }
82
- });
75
+ if (process.platform === "win32") return path.join(dir, "camoufox.exe");
76
+ if (process.platform === "darwin") return path.join(dir, "Camoufox.app", "Contents", "MacOS", "camoufox");
77
+ return path.join(dir, "camoufox-bin");
78
+ }
79
+
80
+ function isCamoufoxBinaryAvailable() {
81
+ try {
82
+ return fs.existsSync(getCamoufoxLaunchBinary());
83
+ } catch {
84
+ return false;
85
+ }
83
86
  }
84
87
 
85
88
  function ensureCamoufoxPackage({ silent = false } = {}) {
@@ -132,6 +135,50 @@ function fetchCamoufoxBinary({ silent = false, timeout = 600_000 } = {}) {
132
135
  return { ok: false, reason };
133
136
  }
134
137
 
138
+ function findPlaywrightCli() {
139
+ const candidates = [];
140
+ for (const pkg of ["playwright", "playwright-core"]) {
141
+ try {
142
+ candidates.push(path.join(path.dirname(nodeRequire.resolve(`${pkg}/package.json`)), "cli.js"));
143
+ } catch {}
144
+ try {
145
+ candidates.push(path.join(getRuntimeNodeModules(), pkg, "cli.js"));
146
+ } catch {}
147
+ }
148
+ for (const candidate of candidates) {
149
+ if (candidate && fs.existsSync(candidate)) return candidate;
150
+ }
151
+ return null;
152
+ }
153
+
154
+ // Camoufox is a patched Firefox; on a fresh Linux host it fails to launch with
155
+ // "libgtk-3.so.0: cannot open shared object file" because the GUI/X libraries
156
+ // aren't present. `playwright install-deps firefox` apt-installs them. This is
157
+ // idempotent (no-op once satisfied) and only attempted on Linux as root, where
158
+ // apt is available without a sudo prompt. Non-fatal: a missing lib surfaces as
159
+ // a clear launch error later, and the user can run the command themselves.
160
+ function ensureLinuxBrowserDeps({ silent = false } = {}) {
161
+ if (process.platform !== "linux") return { ok: true, skipped: "not-linux" };
162
+ if (typeof process.getuid === "function" && process.getuid() !== 0) {
163
+ if (!silent) console.log("\u2139 Skipping auto-install of Camoufox system libs (not root). If Camoufox fails to launch, run: npx playwright install-deps firefox");
164
+ return { ok: true, skipped: "not-root" };
165
+ }
166
+ const cliPath = findPlaywrightCli();
167
+ if (!cliPath) return { ok: true, skipped: "no-playwright-cli" };
168
+ if (!silent) console.log("\u23f3 Installing Camoufox system libraries (Linux, first run)...");
169
+ const res = spawnSync(process.execPath, [cliPath, "install-deps", "firefox"], {
170
+ stdio: silent ? ["ignore", "pipe", "pipe"] : "inherit",
171
+ timeout: 300_000,
172
+ encoding: "utf8",
173
+ });
174
+ if (res.status === 0) {
175
+ if (!silent) console.log("\u2705 Camoufox system libraries ready");
176
+ return { ok: true };
177
+ }
178
+ if (!silent) console.log("\u26a0 Could not auto-install system libs; if Camoufox fails to launch run: npx playwright install-deps firefox");
179
+ return { ok: false, reason: String(res.stderr || "").trim().split(/\r?\n/).pop()?.slice(0, 200) };
180
+ }
181
+
135
182
  function ensureCamoufoxRuntime({ silent = false } = {}) {
136
183
  if (cachedReady === true) return { ok: true };
137
184
 
@@ -161,6 +208,11 @@ function ensureCamoufoxRuntime({ silent = false } = {}) {
161
208
  }
162
209
  }
163
210
 
211
+ // Ensure Linux GUI libraries are present (idempotent). Runs even when the
212
+ // binary already existed — a host can have the binary but miss the libs (the
213
+ // libgtk-3.so.0 launch failure). Non-fatal; we cache readiness regardless.
214
+ ensureLinuxBrowserDeps({ silent });
215
+
164
216
  cachedReady = true;
165
217
  return { ok: true, module: pkg.module };
166
218
  }
package/cli/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zevairouter-cli",
3
- "version": "1.0.11",
3
+ "version": "1.0.13",
4
4
  "description": "ZevaiRouter CLI - Start and manage ZevaiRouter server",
5
5
  "bin": {
6
6
  "zevai": "./cli.js"
@@ -56,7 +56,7 @@ export function getPlatformEnum() {
56
56
  }
57
57
 
58
58
  export function getPlatformUserAgent() {
59
- return `antigravity/1.104.0 ${platform()}/${arch()}`;
59
+ return antigravityUserAgent();
60
60
  }
61
61
 
62
62
  export const CLIENT_METADATA = {
@@ -124,9 +124,34 @@ export const AG_DEFAULT_TOOLS = new Set([
124
124
  "write_to_file"
125
125
  ]);
126
126
 
127
+ // Antigravity desktop client fingerprint. The real Antigravity app is an
128
+ // Electron/Chromium build; matching its User-Agent (instead of a bare
129
+ // "antigravity/x.y.z linux/x64") avoids the third-party-client signal Google
130
+ // uses to flag accounts. Chrome/Electron versions synced with the Antigravity
131
+ // desktop build (see OmniRoute antigravityHeaders.ts).
132
+ export const ANTIGRAVITY_VERSION = "1.107.0";
133
+ export const ANTIGRAVITY_CHROME_VERSION = "142.0.7444.175";
134
+ export const ANTIGRAVITY_ELECTRON_VERSION = "39.2.3";
135
+
136
+ function antigravityPlatformInfo() {
137
+ switch (platform()) {
138
+ case "darwin":
139
+ return "Macintosh; Intel Mac OS X 10_15_7";
140
+ case "win32":
141
+ return "Windows NT 10.0; Win64; x64";
142
+ case "linux":
143
+ default:
144
+ return "X11; Linux x86_64";
145
+ }
146
+ }
147
+
148
+ export function antigravityUserAgent() {
149
+ return `Antigravity/${ANTIGRAVITY_VERSION} (${antigravityPlatformInfo()}) Chrome/${ANTIGRAVITY_CHROME_VERSION} Electron/${ANTIGRAVITY_ELECTRON_VERSION}`;
150
+ }
151
+
127
152
  // Antigravity chat/stream headers
128
153
  export const ANTIGRAVITY_HEADERS = {
129
- "User-Agent": `antigravity/1.107.0 ${platform()}/${arch()}`
154
+ "User-Agent": antigravityUserAgent()
130
155
  };
131
156
 
132
157
  // Cloud Code Assist API
@@ -1,4 +1,5 @@
1
1
  import { platform, arch } from "os";
2
+ import { antigravityUserAgent } from "./appConstants.js";
2
3
 
3
4
  // === OS/Arch helpers ===
4
5
  function mapStainlessOs() {
@@ -108,7 +109,7 @@ export const PROVIDERS = {
108
109
  "https://daily-cloudcode-pa.sandbox.googleapis.com",
109
110
  ],
110
111
  format: "antigravity",
111
- headers: { "User-Agent": `antigravity/1.107.0 ${platform()}/${arch()}` },
112
+ headers: { "User-Agent": antigravityUserAgent() },
112
113
  clientId: "1071006060591-tmhssin2h21lcre235vtolojh4g403ep.apps.googleusercontent.com",
113
114
  clientSecret: "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"
114
115
  },
@@ -3,9 +3,16 @@ import { BaseExecutor } from "./base.js";
3
3
  import { PROVIDERS } from "../config/providers.js";
4
4
  import { OAUTH_ENDPOINTS, ANTIGRAVITY_HEADERS, INTERNAL_REQUEST_HEADER, AG_DEFAULT_TOOLS, AG_TOOL_SUFFIX } from "../config/appConstants.js";
5
5
  import { HTTP_STATUS } from "../config/runtimeConfig.js";
6
- import { deriveSessionId } from "../utils/sessionManager.js";
7
6
  import { proxyAwareFetch } from "../utils/proxyFetch.js";
8
7
  import { cleanJSONSchemaForAntigravity } from "../translator/helpers/geminiHelper.js";
8
+ import { obfuscateRequestBody } from "../services/antigravityObfuscation.js";
9
+ import { scrubProxyAndFingerprintHeaders } from "../services/antigravityHeaderScrub.js";
10
+ import {
11
+ getAntigravitySessionId,
12
+ generateAntigravityRequestId,
13
+ getAntigravityEnvelopeUserAgent,
14
+ deriveAntigravityMachineId,
15
+ } from "../services/antigravityIdentity.js";
9
16
 
10
17
  // Sanitize function name: Gemini requires [a-zA-Z_][a-zA-Z0-9_.:\-]{0,63}
11
18
  function sanitizeFunctionName(name) {
@@ -31,11 +38,13 @@ export class AntigravityExecutor extends BaseExecutor {
31
38
  }
32
39
 
33
40
  buildHeaders(credentials, stream = true, sessionId = null) {
41
+ const machineId = deriveAntigravityMachineId();
34
42
  return {
35
43
  "Content-Type": "application/json",
36
44
  "Authorization": `Bearer ${credentials.accessToken}`,
37
45
  "User-Agent": this.config.headers?.["User-Agent"] || ANTIGRAVITY_HEADERS["User-Agent"],
38
46
  [INTERNAL_REQUEST_HEADER.name]: INTERNAL_REQUEST_HEADER.value,
47
+ ...(machineId && { "x-machine-id": machineId }),
39
48
  ...(sessionId && { "X-Machine-Session-Id": sessionId }),
40
49
  "Accept": stream ? "text/event-stream" : "application/json"
41
50
  };
@@ -91,7 +100,7 @@ export class AntigravityExecutor extends BaseExecutor {
91
100
  generationConfig,
92
101
  ...(contents && { contents }),
93
102
  ...(tools && { tools }),
94
- sessionId: body.request?.sessionId || deriveSessionId(credentials?.email || credentials?.connectionId),
103
+ sessionId: body.request?.sessionId || getAntigravitySessionId(credentials),
95
104
  safetySettings: undefined,
96
105
  ...(tools?.length > 0 && { toolConfig: { functionCallingConfig: { mode: "VALIDATED" } } })
97
106
  };
@@ -100,9 +109,9 @@ export class AntigravityExecutor extends BaseExecutor {
100
109
  ...body,
101
110
  project: projectId,
102
111
  model: model,
103
- userAgent: "antigravity",
112
+ userAgent: getAntigravityEnvelopeUserAgent(credentials),
104
113
  requestType: "agent",
105
- requestId: `agent-${crypto.randomUUID()}`,
114
+ requestId: generateAntigravityRequestId(),
106
115
  request: transformedRequest
107
116
  };
108
117
  }
@@ -204,12 +213,20 @@ export class AntigravityExecutor extends BaseExecutor {
204
213
  const MAX_RETRY_AFTER_RETRIES = 3;
205
214
  const retryAttemptsByUrl = {}; // Track retry attempts per URL
206
215
  const retryAfterAttemptsByUrl = {}; // Track Retry-After retries per URL
216
+ let creditsRetried = false; // GOOGLE_ONE_AI credits fallback attempted once per request
217
+ let injectCredits = false; // when true, transformRequest output gets enabledCreditTypes
207
218
 
208
219
  for (let urlIndex = 0; urlIndex < fallbackCount; urlIndex++) {
209
220
  const url = this.buildUrl(model, stream, urlIndex);
210
- const transformedBody = this.transformRequest(model, body, stream, credentials);
221
+ let transformedBody = this.transformRequest(model, body, stream, credentials);
222
+ // On a quota_exhausted 429, retry once using the account's Google One AI
223
+ // credit balance (often available on Pro accounts) instead of giving up.
224
+ if (injectCredits && transformedBody.request) {
225
+ transformedBody.enabledCreditTypes = ["GOOGLE_ONE_AI"];
226
+ }
227
+ transformedBody = obfuscateRequestBody(transformedBody);
211
228
  const sessionId = transformedBody.request?.sessionId;
212
- const headers = this.buildHeaders(credentials, stream, sessionId);
229
+ const headers = scrubProxyAndFingerprintHeaders(this.buildHeaders(credentials, stream, sessionId));
213
230
 
214
231
  // Initialize retry counters for this URL
215
232
  if (!retryAttemptsByUrl[urlIndex]) {
@@ -232,17 +249,31 @@ export class AntigravityExecutor extends BaseExecutor {
232
249
  let retryMs = this.parseRetryHeaders(response.headers);
233
250
 
234
251
  // If no retry time in headers, try to parse from error message body
252
+ let errorMessageText = "";
235
253
  if (!retryMs) {
236
254
  try {
237
255
  const errorBody = await response.clone().text();
238
256
  const errorJson = JSON.parse(errorBody);
239
- const errorMessage = errorJson?.error?.message || errorJson?.message || "";
240
- retryMs = this.parseRetryFromErrorMessage(errorMessage);
257
+ errorMessageText = errorJson?.error?.message || errorJson?.message || "";
258
+ retryMs = this.parseRetryFromErrorMessage(errorMessageText);
241
259
  } catch (e) {
242
260
  // Ignore parse errors, will fall back to exponential backoff
243
261
  }
244
262
  }
245
263
 
264
+ // Quota exhausted → retry once with Google One AI credits injected.
265
+ if (
266
+ response.status === HTTP_STATUS.RATE_LIMITED &&
267
+ !creditsRetried &&
268
+ /quota[_ ]?exhausted|quota reached|individual quota|enable overages/i.test(errorMessageText)
269
+ ) {
270
+ creditsRetried = true;
271
+ injectCredits = true;
272
+ log?.debug?.("RETRY", "429 quota exhausted → retrying once with GOOGLE_ONE_AI credits");
273
+ urlIndex--;
274
+ continue;
275
+ }
276
+
246
277
  if (retryMs && retryMs <= MAX_RETRY_AFTER_MS && retryAfterAttemptsByUrl[urlIndex] < MAX_RETRY_AFTER_RETRIES) {
247
278
  retryAfterAttemptsByUrl[urlIndex]++;
248
279
  log?.debug?.("RETRY", `${response.status} with Retry-After: ${Math.ceil(retryMs / 1000)}s, waiting... (${retryAfterAttemptsByUrl[urlIndex]}/${MAX_RETRY_AFTER_RETRIES})`);
@@ -0,0 +1,75 @@
1
+ /**
2
+ * Antigravity header scrubbing.
3
+ *
4
+ * Real Antigravity is a Node.js desktop app. Its outbound HTTP requests never
5
+ * include proxy-tracing headers, Stainless SDK headers, or Chromium Sec-Ch-*
6
+ * fingerprint headers. Sending any of these reveals that the request came
7
+ * through a third-party proxy/tool, which Google can use to flag the account.
8
+ *
9
+ * Ported from OmniRoute's antigravityHeaderScrub.ts (mirrors CLIProxyAPI's
10
+ * ScrubProxyAndFingerprintHeaders in misc/header_utils.go).
11
+ */
12
+
13
+ const HEADERS_TO_REMOVE = new Set([
14
+ // Proxy tracing
15
+ "x-forwarded-for",
16
+ "x-forwarded-host",
17
+ "x-forwarded-proto",
18
+ "x-forwarded-port",
19
+ "x-real-ip",
20
+ "forwarded",
21
+ "via",
22
+ // Client identity (Stainless SDK — Claude Code specific, not Antigravity)
23
+ "x-title",
24
+ "x-stainless-lang",
25
+ "x-stainless-package-version",
26
+ "x-stainless-os",
27
+ "x-stainless-arch",
28
+ "x-stainless-runtime",
29
+ "x-stainless-runtime-version",
30
+ "x-stainless-timeout",
31
+ "x-stainless-retry-count",
32
+ "x-stainless-helper-method",
33
+ "http-referer",
34
+ "referer",
35
+ // Browser / Chromium fingerprint (Electron clients, NOT Node.js)
36
+ "sec-ch-ua",
37
+ "sec-ch-ua-mobile",
38
+ "sec-ch-ua-platform",
39
+ "sec-fetch-mode",
40
+ "sec-fetch-site",
41
+ "sec-fetch-dest",
42
+ "priority",
43
+ // Encoding: Antigravity (Node.js) sends "gzip, deflate, br"; Electron adds
44
+ // "zstd" which is a fingerprint mismatch.
45
+ "accept-encoding",
46
+ ]);
47
+
48
+ /**
49
+ * Remove headers that reveal proxy infrastructure or a non-native client
50
+ * identity from an outgoing Antigravity upstream request. Returns a new object;
51
+ * the input is not mutated. Authorization is deferred so it serializes last,
52
+ * matching the native Antigravity request fingerprint.
53
+ */
54
+ export function scrubProxyAndFingerprintHeaders(headers) {
55
+ const cleaned = {};
56
+ let authorizationValue;
57
+ for (const [key, value] of Object.entries(headers || {})) {
58
+ const lowerKey = key.toLowerCase();
59
+ if (lowerKey.startsWith("x-zevai-") || HEADERS_TO_REMOVE.has(lowerKey)) {
60
+ continue;
61
+ }
62
+ if (lowerKey === "authorization") {
63
+ authorizationValue = value;
64
+ continue;
65
+ }
66
+ cleaned[key] = value;
67
+ }
68
+ cleaned["Accept-Encoding"] = "gzip, deflate, br";
69
+ if (authorizationValue !== undefined) {
70
+ cleaned["Authorization"] = authorizationValue;
71
+ }
72
+ return cleaned;
73
+ }
74
+
75
+ export const __HEADERS_SCRUBBED = HEADERS_TO_REMOVE;
@@ -0,0 +1,115 @@
1
+ /**
2
+ * Antigravity request identity helpers.
3
+ *
4
+ * Antigravity's real client sends a stable per-account session id, a machine id,
5
+ * a request id, and an "envelope" client tag (antigravity vs jetski). Matching
6
+ * these makes our requests look like the native client instead of a proxy.
7
+ *
8
+ * Ported from OmniRoute's antigravityIdentity.ts (mirrors Antigravity-Manager).
9
+ */
10
+
11
+ import crypto from "crypto";
12
+ import { createRequire } from "module";
13
+
14
+ // 64-bit FNV-1a constants (as signed int64) — must match Antigravity-Manager's
15
+ // session-id derivation so the same email always yields the same session id.
16
+ const FNV_OFFSET_I64 = -3750763034362895579n;
17
+ const FNV_PRIME_I64 = 1099511628211n;
18
+
19
+ // One random VS Code session id per process, like a running IDE instance.
20
+ const PROCESS_SESSION_ID = crypto.randomUUID();
21
+
22
+ const nodeRequire = createRequire(import.meta.url);
23
+ let systemMachineIdSync = null;
24
+ try {
25
+ const mod = nodeRequire("node-machine-id");
26
+ systemMachineIdSync = mod.machineIdSync || mod.default?.machineIdSync || null;
27
+ } catch {
28
+ systemMachineIdSync = null;
29
+ }
30
+
31
+ function toNonEmptyString(value) {
32
+ return typeof value === "string" && value.trim().length > 0 ? value.trim() : null;
33
+ }
34
+
35
+ function getProviderDataString(credentials, key) {
36
+ const data = credentials?.providerSpecificData;
37
+ return data && typeof data === "object" ? toNonEmptyString(data[key]) : null;
38
+ }
39
+
40
+ /** Stable key identifying the account (email preferred, then id). */
41
+ export function getAntigravityAccountKey(credentials) {
42
+ return (
43
+ toNonEmptyString(credentials?.email) ||
44
+ getProviderDataString(credentials, "email") ||
45
+ getProviderDataString(credentials, "accountId") ||
46
+ toNonEmptyString(credentials?.connectionId) ||
47
+ null
48
+ );
49
+ }
50
+
51
+ /** Non-gmail accounts are treated as enterprise ("jetski" envelope). */
52
+ export function isAntigravityEnterpriseAccount(credentials) {
53
+ const email =
54
+ toNonEmptyString(credentials?.email) || getProviderDataString(credentials, "email") || "";
55
+ return !!email && !/@(?:gmail|googlemail)\.com$/i.test(email);
56
+ }
57
+
58
+ /** Envelope client tag the native client sends per account type. */
59
+ export function getAntigravityEnvelopeUserAgent(credentials) {
60
+ return isAntigravityEnterpriseAccount(credentials) ? "jetski" : "antigravity";
61
+ }
62
+
63
+ /** Request id: "agent/<epoch-ms>/<hex>" — matches the native client format. */
64
+ export function generateAntigravityRequestId() {
65
+ return `agent/${Date.now()}/${crypto.randomBytes(4).toString("hex")}`;
66
+ }
67
+
68
+ /** Random signed-int64-ish session id (used only when no account key exists). */
69
+ export function generateAntigravitySessionId() {
70
+ const max = 18446744073709551615n; // 2^64 - 1
71
+ const target = 9_000_000_000_000_000_000n;
72
+ // Rejection sampling to avoid modulo bias.
73
+ const limit = max - (max % target);
74
+ let value;
75
+ do {
76
+ value = crypto.randomBytes(8).readBigUInt64BE();
77
+ } while (value >= limit);
78
+ return `-${(value % target).toString()}`;
79
+ }
80
+
81
+ /** Deterministic session id derived from the account key via 64-bit FNV-1a. */
82
+ export function deriveAntigravitySessionId(accountKey) {
83
+ const key = toNonEmptyString(accountKey);
84
+ if (!key) return null;
85
+ let hash = FNV_OFFSET_I64;
86
+ for (const byte of Buffer.from(key, "utf8")) {
87
+ hash = BigInt.asIntN(64, hash ^ BigInt(byte));
88
+ hash = BigInt.asIntN(64, hash * FNV_PRIME_I64);
89
+ }
90
+ return hash.toString();
91
+ }
92
+
93
+ /** Session id for a request: derived-from-account → fallback → random. */
94
+ export function getAntigravitySessionId(credentials, fallback) {
95
+ return (
96
+ deriveAntigravitySessionId(getAntigravityAccountKey(credentials)) ||
97
+ toNonEmptyString(fallback) ||
98
+ generateAntigravitySessionId()
99
+ );
100
+ }
101
+
102
+ /** OS machine id, or null (native client omits x-machine-id when unavailable). */
103
+ export function deriveAntigravityMachineId() {
104
+ try {
105
+ const id = toNonEmptyString(systemMachineIdSync?.(true));
106
+ if (id) return id;
107
+ } catch {
108
+ // omit header when the OS machine id can't be read
109
+ }
110
+ return null;
111
+ }
112
+
113
+ export function getAntigravityVscodeSessionId() {
114
+ return PROCESS_SESSION_ID;
115
+ }