zevairouter 1.0.13 → 1.0.15

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 (619) hide show
  1. package/CHANGELOG.md +16 -245
  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 +2 -2
  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 +4 -4
  86. package/cli/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +4 -4
  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 +4 -4
  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 +2 -2
  92. package/cli/app/.next-cli-build/server/app/api/auth/login/route.js +1 -1
  93. package/cli/app/.next-cli-build/server/app/api/auth/login/route.js.nft.json +1 -1
  94. package/cli/app/.next-cli-build/server/app/api/auth/logout/route.js.nft.json +1 -1
  95. package/cli/app/.next-cli-build/server/app/api/auth/oidc/callback/route.js +1 -1
  96. package/cli/app/.next-cli-build/server/app/api/auth/oidc/callback/route.js.nft.json +1 -1
  97. package/cli/app/.next-cli-build/server/app/api/auth/oidc/start/route.js +1 -1
  98. package/cli/app/.next-cli-build/server/app/api/auth/oidc/start/route.js.nft.json +1 -1
  99. package/cli/app/.next-cli-build/server/app/api/auth/oidc/test/route.js +1 -1
  100. package/cli/app/.next-cli-build/server/app/api/auth/oidc/test/route.js.nft.json +1 -1
  101. package/cli/app/.next-cli-build/server/app/api/auth/status/route.js +1 -1
  102. package/cli/app/.next-cli-build/server/app/api/auth/status/route.js.nft.json +1 -1
  103. package/cli/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js.nft.json +1 -1
  104. package/cli/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js +1 -1
  105. package/cli/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js.nft.json +1 -1
  106. package/cli/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js +1 -1
  107. package/cli/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js.nft.json +1 -1
  108. package/cli/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route.js.nft.json +1 -1
  109. package/cli/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js.nft.json +1 -1
  110. package/cli/app/.next-cli-build/server/app/api/cli-tools/codex-gateway/accounts/route.js +1 -1
  111. package/cli/app/.next-cli-build/server/app/api/cli-tools/codex-gateway/accounts/route.js.nft.json +1 -1
  112. package/cli/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js.nft.json +1 -1
  113. package/cli/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js.nft.json +1 -1
  114. package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js.nft.json +1 -1
  115. package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js.nft.json +1 -1
  116. package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js.nft.json +1 -1
  117. package/cli/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js.nft.json +1 -1
  118. package/cli/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js.nft.json +1 -1
  119. package/cli/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js.nft.json +1 -1
  120. package/cli/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js.nft.json +1 -1
  121. package/cli/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js.nft.json +1 -1
  122. package/cli/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js.nft.json +1 -1
  123. package/cli/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js.nft.json +1 -1
  124. package/cli/app/.next-cli-build/server/app/api/combos/[id]/route.js +1 -1
  125. package/cli/app/.next-cli-build/server/app/api/combos/[id]/route.js.nft.json +1 -1
  126. package/cli/app/.next-cli-build/server/app/api/combos/route.js +1 -1
  127. package/cli/app/.next-cli-build/server/app/api/combos/route.js.nft.json +1 -1
  128. package/cli/app/.next-cli-build/server/app/api/health/route.js.nft.json +1 -1
  129. package/cli/app/.next-cli-build/server/app/api/init/route.js +1 -1
  130. package/cli/app/.next-cli-build/server/app/api/init/route.js.nft.json +1 -1
  131. package/cli/app/.next-cli-build/server/app/api/keys/[id]/route.js +1 -1
  132. package/cli/app/.next-cli-build/server/app/api/keys/[id]/route.js.nft.json +1 -1
  133. package/cli/app/.next-cli-build/server/app/api/keys/route.js +1 -1
  134. package/cli/app/.next-cli-build/server/app/api/keys/route.js.nft.json +1 -1
  135. package/cli/app/.next-cli-build/server/app/api/locale/route.js.nft.json +1 -1
  136. package/cli/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route.js.nft.json +1 -1
  137. package/cli/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route.js.nft.json +1 -1
  138. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js +1 -1
  139. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js.nft.json +1 -1
  140. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js +1 -1
  141. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js.nft.json +1 -1
  142. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js +1 -1
  143. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js.nft.json +1 -1
  144. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js +1 -1
  145. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js.nft.json +1 -1
  146. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/voices/route.js.nft.json +1 -1
  147. package/cli/app/.next-cli-build/server/app/api/models/alias/route.js +1 -1
  148. package/cli/app/.next-cli-build/server/app/api/models/alias/route.js.nft.json +1 -1
  149. package/cli/app/.next-cli-build/server/app/api/models/availability/route.js +1 -1
  150. package/cli/app/.next-cli-build/server/app/api/models/availability/route.js.nft.json +1 -1
  151. package/cli/app/.next-cli-build/server/app/api/models/custom/route.js +1 -1
  152. package/cli/app/.next-cli-build/server/app/api/models/custom/route.js.nft.json +1 -1
  153. package/cli/app/.next-cli-build/server/app/api/models/disabled/route.js +1 -1
  154. package/cli/app/.next-cli-build/server/app/api/models/disabled/route.js.nft.json +1 -1
  155. package/cli/app/.next-cli-build/server/app/api/models/route.js +1 -1
  156. package/cli/app/.next-cli-build/server/app/api/models/route.js.nft.json +1 -1
  157. package/cli/app/.next-cli-build/server/app/api/models/test/route.js +1 -1
  158. package/cli/app/.next-cli-build/server/app/api/models/test/route.js.nft.json +1 -1
  159. package/cli/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js +1 -1
  160. package/cli/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js.nft.json +1 -1
  161. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/cancel/route.js +1 -1
  162. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
  163. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/manual/[workerId]/route.js +1 -1
  164. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
  165. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/route.js +1 -1
  166. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/route.js.nft.json +1 -1
  167. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/latest/route.js +1 -1
  168. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/latest/route.js.nft.json +1 -1
  169. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/route.js +1 -1
  170. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/route.js.nft.json +1 -1
  171. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/cancel/route.js +1 -1
  172. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
  173. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/manual/[workerId]/route.js +1 -1
  174. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
  175. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/route.js +1 -1
  176. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/route.js.nft.json +1 -1
  177. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/latest/route.js +1 -1
  178. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/latest/route.js.nft.json +1 -1
  179. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/route.js +1 -1
  180. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/route.js.nft.json +1 -1
  181. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-token/route.js +1 -1
  182. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-token/route.js.nft.json +1 -1
  183. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/quota-cookie/route.js +1 -1
  184. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/quota-cookie/route.js.nft.json +1 -1
  185. package/cli/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js +1 -1
  186. package/cli/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js.nft.json +1 -1
  187. package/cli/app/.next-cli-build/server/app/api/oauth/cursor/auto-import/route.js.nft.json +1 -1
  188. package/cli/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js +1 -1
  189. package/cli/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js.nft.json +1 -1
  190. package/cli/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js +1 -1
  191. package/cli/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js.nft.json +1 -1
  192. package/cli/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js +1 -1
  193. package/cli/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js.nft.json +1 -1
  194. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/auto-import/route.js.nft.json +1 -1
  195. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/cancel/route.js +1 -1
  196. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
  197. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/manual/[workerId]/route.js +1 -1
  198. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
  199. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/route.js +1 -1
  200. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/route.js.nft.json +1 -1
  201. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/latest/route.js +1 -1
  202. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/latest/route.js.nft.json +1 -1
  203. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/route.js +1 -1
  204. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/route.js.nft.json +1 -1
  205. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js +1 -1
  206. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js.nft.json +1 -1
  207. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/social-authorize/route.js.nft.json +1 -1
  208. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js +1 -1
  209. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js.nft.json +1 -1
  210. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/cancel/route.js +1 -1
  211. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
  212. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/manual/[workerId]/route.js +1 -1
  213. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
  214. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/route.js +1 -1
  215. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/route.js.nft.json +1 -1
  216. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/latest/route.js +1 -1
  217. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/latest/route.js.nft.json +1 -1
  218. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/route.js +1 -1
  219. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/route.js.nft.json +1 -1
  220. package/cli/app/.next-cli-build/server/app/api/pricing/route.js +1 -1
  221. package/cli/app/.next-cli-build/server/app/api/pricing/route.js.nft.json +1 -1
  222. package/cli/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js +1 -1
  223. package/cli/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js.nft.json +1 -1
  224. package/cli/app/.next-cli-build/server/app/api/provider-nodes/route.js +1 -1
  225. package/cli/app/.next-cli-build/server/app/api/provider-nodes/route.js.nft.json +1 -1
  226. package/cli/app/.next-cli-build/server/app/api/provider-nodes/validate/route.js.nft.json +1 -1
  227. package/cli/app/.next-cli-build/server/app/api/providers/[id]/models/route.js +1 -1
  228. package/cli/app/.next-cli-build/server/app/api/providers/[id]/models/route.js.nft.json +1 -1
  229. package/cli/app/.next-cli-build/server/app/api/providers/[id]/route.js +1 -1
  230. package/cli/app/.next-cli-build/server/app/api/providers/[id]/route.js.nft.json +1 -1
  231. package/cli/app/.next-cli-build/server/app/api/providers/[id]/test/route.js +1 -1
  232. package/cli/app/.next-cli-build/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
  233. package/cli/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js +1 -1
  234. package/cli/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js.nft.json +1 -1
  235. package/cli/app/.next-cli-build/server/app/api/providers/client/route.js +1 -1
  236. package/cli/app/.next-cli-build/server/app/api/providers/client/route.js.nft.json +1 -1
  237. package/cli/app/.next-cli-build/server/app/api/providers/kilo/free-models/route.js.nft.json +1 -1
  238. package/cli/app/.next-cli-build/server/app/api/providers/route.js +1 -1
  239. package/cli/app/.next-cli-build/server/app/api/providers/route.js.nft.json +1 -1
  240. package/cli/app/.next-cli-build/server/app/api/providers/suggested-models/route.js.nft.json +1 -1
  241. package/cli/app/.next-cli-build/server/app/api/providers/test-batch/route.js +1 -1
  242. package/cli/app/.next-cli-build/server/app/api/providers/test-batch/route.js.nft.json +1 -1
  243. package/cli/app/.next-cli-build/server/app/api/providers/validate/route.js +1 -1
  244. package/cli/app/.next-cli-build/server/app/api/providers/validate/route.js.nft.json +1 -1
  245. package/cli/app/.next-cli-build/server/app/api/proxy-pools/[id]/route.js +1 -1
  246. package/cli/app/.next-cli-build/server/app/api/proxy-pools/[id]/route.js.nft.json +1 -1
  247. package/cli/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js +1 -1
  248. package/cli/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js.nft.json +1 -1
  249. package/cli/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route.js +1 -1
  250. package/cli/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route.js.nft.json +1 -1
  251. package/cli/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route.js +1 -1
  252. package/cli/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route.js.nft.json +1 -1
  253. package/cli/app/.next-cli-build/server/app/api/proxy-pools/route.js +1 -1
  254. package/cli/app/.next-cli-build/server/app/api/proxy-pools/route.js.nft.json +1 -1
  255. package/cli/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js +1 -1
  256. package/cli/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js.nft.json +1 -1
  257. package/cli/app/.next-cli-build/server/app/api/settings/database/route.js +1 -1
  258. package/cli/app/.next-cli-build/server/app/api/settings/database/route.js.nft.json +1 -1
  259. package/cli/app/.next-cli-build/server/app/api/settings/proxy-test/route.js.nft.json +1 -1
  260. package/cli/app/.next-cli-build/server/app/api/settings/require-login/route.js +1 -1
  261. package/cli/app/.next-cli-build/server/app/api/settings/require-login/route.js.nft.json +1 -1
  262. package/cli/app/.next-cli-build/server/app/api/settings/route.js +1 -1
  263. package/cli/app/.next-cli-build/server/app/api/settings/route.js.nft.json +1 -1
  264. package/cli/app/.next-cli-build/server/app/api/shutdown/route.js.nft.json +1 -1
  265. package/cli/app/.next-cli-build/server/app/api/tags/route.js.nft.json +1 -1
  266. package/cli/app/.next-cli-build/server/app/api/translator/console-logs/route.js +1 -1
  267. package/cli/app/.next-cli-build/server/app/api/translator/console-logs/route.js.nft.json +1 -1
  268. package/cli/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js +1 -1
  269. package/cli/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js.nft.json +1 -1
  270. package/cli/app/.next-cli-build/server/app/api/translator/load/route.js.nft.json +1 -1
  271. package/cli/app/.next-cli-build/server/app/api/translator/save/route.js.nft.json +1 -1
  272. package/cli/app/.next-cli-build/server/app/api/translator/send/route.js +1 -1
  273. package/cli/app/.next-cli-build/server/app/api/translator/send/route.js.nft.json +1 -1
  274. package/cli/app/.next-cli-build/server/app/api/translator/translate/route.js +1 -1
  275. package/cli/app/.next-cli-build/server/app/api/translator/translate/route.js.nft.json +1 -1
  276. package/cli/app/.next-cli-build/server/app/api/tunnel/disable/route.js +1 -1
  277. package/cli/app/.next-cli-build/server/app/api/tunnel/disable/route.js.nft.json +1 -1
  278. package/cli/app/.next-cli-build/server/app/api/tunnel/enable/route.js +1 -1
  279. package/cli/app/.next-cli-build/server/app/api/tunnel/enable/route.js.nft.json +1 -1
  280. package/cli/app/.next-cli-build/server/app/api/tunnel/status/route.js +1 -1
  281. package/cli/app/.next-cli-build/server/app/api/tunnel/status/route.js.nft.json +1 -1
  282. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-check/route.js +1 -1
  283. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-check/route.js.nft.json +1 -1
  284. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route.js +1 -1
  285. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route.js.nft.json +1 -1
  286. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route.js +1 -1
  287. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route.js.nft.json +1 -1
  288. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js +1 -1
  289. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js.nft.json +1 -1
  290. package/cli/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js +1 -1
  291. package/cli/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
  292. package/cli/app/.next-cli-build/server/app/api/usage/chart/route.js +1 -1
  293. package/cli/app/.next-cli-build/server/app/api/usage/chart/route.js.nft.json +1 -1
  294. package/cli/app/.next-cli-build/server/app/api/usage/history/route.js +1 -1
  295. package/cli/app/.next-cli-build/server/app/api/usage/history/route.js.nft.json +1 -1
  296. package/cli/app/.next-cli-build/server/app/api/usage/providers/route.js +1 -1
  297. package/cli/app/.next-cli-build/server/app/api/usage/providers/route.js.nft.json +1 -1
  298. package/cli/app/.next-cli-build/server/app/api/usage/request-details/route.js +1 -1
  299. package/cli/app/.next-cli-build/server/app/api/usage/request-details/route.js.nft.json +1 -1
  300. package/cli/app/.next-cli-build/server/app/api/usage/request-logs/route.js +1 -1
  301. package/cli/app/.next-cli-build/server/app/api/usage/request-logs/route.js.nft.json +1 -1
  302. package/cli/app/.next-cli-build/server/app/api/usage/stats/route.js +1 -1
  303. package/cli/app/.next-cli-build/server/app/api/usage/stats/route.js.nft.json +1 -1
  304. package/cli/app/.next-cli-build/server/app/api/usage/stream/route.js +2 -2
  305. package/cli/app/.next-cli-build/server/app/api/usage/stream/route.js.nft.json +1 -1
  306. package/cli/app/.next-cli-build/server/app/api/v1/api/chat/route.js +1 -1
  307. package/cli/app/.next-cli-build/server/app/api/v1/api/chat/route.js.nft.json +1 -1
  308. package/cli/app/.next-cli-build/server/app/api/v1/audio/speech/route.js +1 -1
  309. package/cli/app/.next-cli-build/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
  310. package/cli/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js +1 -1
  311. package/cli/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
  312. package/cli/app/.next-cli-build/server/app/api/v1/audio/voices/route.js.nft.json +1 -1
  313. package/cli/app/.next-cli-build/server/app/api/v1/chat/completions/route.js +1 -1
  314. package/cli/app/.next-cli-build/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
  315. package/cli/app/.next-cli-build/server/app/api/v1/embeddings/route.js +1 -1
  316. package/cli/app/.next-cli-build/server/app/api/v1/embeddings/route.js.nft.json +1 -1
  317. package/cli/app/.next-cli-build/server/app/api/v1/images/generations/route.js +1 -1
  318. package/cli/app/.next-cli-build/server/app/api/v1/images/generations/route.js.nft.json +1 -1
  319. package/cli/app/.next-cli-build/server/app/api/v1/messages/count_tokens/route.js.nft.json +1 -1
  320. package/cli/app/.next-cli-build/server/app/api/v1/messages/route.js +1 -1
  321. package/cli/app/.next-cli-build/server/app/api/v1/messages/route.js.nft.json +1 -1
  322. package/cli/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js +1 -1
  323. package/cli/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js.nft.json +1 -1
  324. package/cli/app/.next-cli-build/server/app/api/v1/models/info/route.js.nft.json +1 -1
  325. package/cli/app/.next-cli-build/server/app/api/v1/models/route.js +1 -1
  326. package/cli/app/.next-cli-build/server/app/api/v1/models/route.js.nft.json +1 -1
  327. package/cli/app/.next-cli-build/server/app/api/v1/responses/compact/route.js +1 -1
  328. package/cli/app/.next-cli-build/server/app/api/v1/responses/compact/route.js.nft.json +1 -1
  329. package/cli/app/.next-cli-build/server/app/api/v1/responses/route.js +1 -1
  330. package/cli/app/.next-cli-build/server/app/api/v1/responses/route.js.nft.json +1 -1
  331. package/cli/app/.next-cli-build/server/app/api/v1/route.js +1 -1
  332. package/cli/app/.next-cli-build/server/app/api/v1/route.js.nft.json +1 -1
  333. package/cli/app/.next-cli-build/server/app/api/v1/search/route.js +1 -1
  334. package/cli/app/.next-cli-build/server/app/api/v1/search/route.js.nft.json +1 -1
  335. package/cli/app/.next-cli-build/server/app/api/v1/web/fetch/route.js +1 -1
  336. package/cli/app/.next-cli-build/server/app/api/v1/web/fetch/route.js.nft.json +1 -1
  337. package/cli/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js +1 -1
  338. package/cli/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
  339. package/cli/app/.next-cli-build/server/app/api/v1beta/models/route.js.nft.json +1 -1
  340. package/cli/app/.next-cli-build/server/app/api/version/route.js +1 -1
  341. package/cli/app/.next-cli-build/server/app/api/version/route.js.nft.json +1 -1
  342. package/cli/app/.next-cli-build/server/app/api/version/shutdown/route.js +1 -1
  343. package/cli/app/.next-cli-build/server/app/api/version/shutdown/route.js.nft.json +1 -1
  344. package/cli/app/.next-cli-build/server/app/api/version/update/route.js +1 -1
  345. package/cli/app/.next-cli-build/server/app/api/version/update/route.js.nft.json +1 -1
  346. package/cli/app/.next-cli-build/server/app/callback/page.js +1 -1
  347. package/cli/app/.next-cli-build/server/app/callback/page.js.nft.json +1 -1
  348. package/cli/app/.next-cli-build/server/app/callback/page_client-reference-manifest.js +1 -1
  349. package/cli/app/.next-cli-build/server/app/callback.html +1 -1
  350. package/cli/app/.next-cli-build/server/app/callback.rsc +4 -4
  351. package/cli/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +4 -4
  352. package/cli/app/.next-cli-build/server/app/callback.segments/_head.segment.rsc +1 -1
  353. package/cli/app/.next-cli-build/server/app/callback.segments/_index.segment.rsc +4 -4
  354. package/cli/app/.next-cli-build/server/app/callback.segments/_tree.segment.rsc +2 -2
  355. package/cli/app/.next-cli-build/server/app/callback.segments/callback/__PAGE__.segment.rsc +1 -1
  356. package/cli/app/.next-cli-build/server/app/callback.segments/callback.segment.rsc +1 -1
  357. package/cli/app/.next-cli-build/server/app/dashboard/automation.html +1 -1
  358. package/cli/app/.next-cli-build/server/app/dashboard/automation.rsc +6 -6
  359. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk/dashboard/automation/__PAGE__.segment.rsc +2 -2
  360. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk/dashboard/automation.segment.rsc +1 -1
  361. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  362. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  363. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_full.segment.rsc +6 -6
  364. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_head.segment.rsc +1 -1
  365. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_index.segment.rsc +4 -4
  366. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_tree.segment.rsc +2 -2
  367. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.html +1 -1
  368. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.rsc +6 -6
  369. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +2 -2
  370. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat.segment.rsc +1 -1
  371. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  372. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  373. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_full.segment.rsc +6 -6
  374. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_head.segment.rsc +1 -1
  375. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_index.segment.rsc +4 -4
  376. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +2 -2
  377. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.html +1 -1
  378. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.rsc +6 -6
  379. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +2 -2
  380. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools.segment.rsc +1 -1
  381. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  382. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  383. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_full.segment.rsc +6 -6
  384. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_head.segment.rsc +1 -1
  385. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_index.segment.rsc +4 -4
  386. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +2 -2
  387. package/cli/app/.next-cli-build/server/app/dashboard/combos.html +1 -1
  388. package/cli/app/.next-cli-build/server/app/dashboard/combos.rsc +6 -6
  389. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +2 -2
  390. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos.segment.rsc +1 -1
  391. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  392. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  393. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_full.segment.rsc +6 -6
  394. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_head.segment.rsc +1 -1
  395. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_index.segment.rsc +4 -4
  396. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_tree.segment.rsc +2 -2
  397. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.html +1 -1
  398. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.rsc +6 -6
  399. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +2 -2
  400. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint.segment.rsc +1 -1
  401. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  402. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  403. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_full.segment.rsc +6 -6
  404. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_head.segment.rsc +1 -1
  405. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_index.segment.rsc +4 -4
  406. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_tree.segment.rsc +2 -2
  407. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.html +1 -1
  408. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.rsc +6 -6
  409. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web/__PAGE__.segment.rsc +2 -2
  410. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web.segment.rsc +1 -1
  411. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers.segment.rsc +1 -1
  412. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  413. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  414. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_full.segment.rsc +6 -6
  415. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_head.segment.rsc +1 -1
  416. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_index.segment.rsc +4 -4
  417. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_tree.segment.rsc +2 -2
  418. package/cli/app/.next-cli-build/server/app/dashboard/mitm.html +1 -1
  419. package/cli/app/.next-cli-build/server/app/dashboard/mitm.rsc +6 -6
  420. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +2 -2
  421. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm.segment.rsc +1 -1
  422. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  423. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  424. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_full.segment.rsc +6 -6
  425. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_head.segment.rsc +1 -1
  426. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_index.segment.rsc +4 -4
  427. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_tree.segment.rsc +2 -2
  428. package/cli/app/.next-cli-build/server/app/dashboard/profile.html +1 -1
  429. package/cli/app/.next-cli-build/server/app/dashboard/profile.rsc +6 -6
  430. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +2 -2
  431. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile.segment.rsc +1 -1
  432. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  433. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  434. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_full.segment.rsc +6 -6
  435. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_head.segment.rsc +1 -1
  436. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_index.segment.rsc +4 -4
  437. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_tree.segment.rsc +2 -2
  438. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.html +1 -1
  439. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.rsc +6 -6
  440. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +2 -2
  441. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new.segment.rsc +1 -1
  442. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  443. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  444. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  445. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_full.segment.rsc +6 -6
  446. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_head.segment.rsc +1 -1
  447. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_index.segment.rsc +4 -4
  448. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_tree.segment.rsc +2 -2
  449. package/cli/app/.next-cli-build/server/app/dashboard/providers.html +1 -1
  450. package/cli/app/.next-cli-build/server/app/dashboard/providers.rsc +6 -6
  451. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +2 -2
  452. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  453. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  454. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  455. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_full.segment.rsc +6 -6
  456. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_head.segment.rsc +1 -1
  457. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_index.segment.rsc +4 -4
  458. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_tree.segment.rsc +2 -2
  459. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.html +1 -1
  460. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.rsc +6 -6
  461. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +2 -2
  462. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools.segment.rsc +1 -1
  463. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  464. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  465. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +6 -6
  466. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_head.segment.rsc +1 -1
  467. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_index.segment.rsc +4 -4
  468. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +2 -2
  469. package/cli/app/.next-cli-build/server/app/dashboard/quota.html +2 -2
  470. package/cli/app/.next-cli-build/server/app/dashboard/quota.rsc +7 -7
  471. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +3 -3
  472. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota.segment.rsc +1 -1
  473. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  474. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  475. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_full.segment.rsc +7 -7
  476. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_head.segment.rsc +1 -1
  477. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_index.segment.rsc +4 -4
  478. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_tree.segment.rsc +2 -2
  479. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing/page.js +1 -1
  480. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing/page.js.nft.json +1 -1
  481. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  482. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.html +1 -1
  483. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.rsc +4 -4
  484. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +4 -4
  485. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +1 -1
  486. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +4 -4
  487. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +2 -2
  488. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +1 -1
  489. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing.segment.rsc +1 -1
  490. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings.segment.rsc +1 -1
  491. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard.segment.rsc +1 -1
  492. package/cli/app/.next-cli-build/server/app/dashboard/skills.html +1 -1
  493. package/cli/app/.next-cli-build/server/app/dashboard/skills.rsc +6 -6
  494. package/cli/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills/__PAGE__.segment.rsc +2 -2
  495. package/cli/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills.segment.rsc +1 -1
  496. package/cli/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  497. package/cli/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  498. package/cli/app/.next-cli-build/server/app/dashboard/skills.segments/_full.segment.rsc +6 -6
  499. package/cli/app/.next-cli-build/server/app/dashboard/skills.segments/_head.segment.rsc +1 -1
  500. package/cli/app/.next-cli-build/server/app/dashboard/skills.segments/_index.segment.rsc +4 -4
  501. package/cli/app/.next-cli-build/server/app/dashboard/skills.segments/_tree.segment.rsc +2 -2
  502. package/cli/app/.next-cli-build/server/app/dashboard/translator.html +1 -1
  503. package/cli/app/.next-cli-build/server/app/dashboard/translator.rsc +6 -6
  504. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +2 -2
  505. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator.segment.rsc +1 -1
  506. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  507. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  508. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_full.segment.rsc +6 -6
  509. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_head.segment.rsc +1 -1
  510. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_index.segment.rsc +4 -4
  511. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_tree.segment.rsc +2 -2
  512. package/cli/app/.next-cli-build/server/app/dashboard/usage.html +1 -1
  513. package/cli/app/.next-cli-build/server/app/dashboard/usage.rsc +6 -6
  514. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +2 -2
  515. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage.segment.rsc +1 -1
  516. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  517. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  518. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_full.segment.rsc +6 -6
  519. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_head.segment.rsc +1 -1
  520. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_index.segment.rsc +4 -4
  521. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_tree.segment.rsc +2 -2
  522. package/cli/app/.next-cli-build/server/app/dashboard.html +1 -1
  523. package/cli/app/.next-cli-build/server/app/dashboard.rsc +6 -6
  524. package/cli/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +2 -2
  525. package/cli/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  526. package/cli/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  527. package/cli/app/.next-cli-build/server/app/dashboard.segments/_full.segment.rsc +6 -6
  528. package/cli/app/.next-cli-build/server/app/dashboard.segments/_head.segment.rsc +1 -1
  529. package/cli/app/.next-cli-build/server/app/dashboard.segments/_index.segment.rsc +4 -4
  530. package/cli/app/.next-cli-build/server/app/dashboard.segments/_tree.segment.rsc +2 -2
  531. package/cli/app/.next-cli-build/server/app/index.html +1 -1
  532. package/cli/app/.next-cli-build/server/app/index.rsc +4 -4
  533. package/cli/app/.next-cli-build/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  534. package/cli/app/.next-cli-build/server/app/index.segments/_full.segment.rsc +4 -4
  535. package/cli/app/.next-cli-build/server/app/index.segments/_head.segment.rsc +1 -1
  536. package/cli/app/.next-cli-build/server/app/index.segments/_index.segment.rsc +4 -4
  537. package/cli/app/.next-cli-build/server/app/index.segments/_tree.segment.rsc +2 -2
  538. package/cli/app/.next-cli-build/server/app/landing/page.js +1 -1
  539. package/cli/app/.next-cli-build/server/app/landing/page.js.nft.json +1 -1
  540. package/cli/app/.next-cli-build/server/app/landing/page_client-reference-manifest.js +1 -1
  541. package/cli/app/.next-cli-build/server/app/landing.html +1 -1
  542. package/cli/app/.next-cli-build/server/app/landing.rsc +4 -4
  543. package/cli/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +4 -4
  544. package/cli/app/.next-cli-build/server/app/landing.segments/_head.segment.rsc +1 -1
  545. package/cli/app/.next-cli-build/server/app/landing.segments/_index.segment.rsc +4 -4
  546. package/cli/app/.next-cli-build/server/app/landing.segments/_tree.segment.rsc +2 -2
  547. package/cli/app/.next-cli-build/server/app/landing.segments/landing/__PAGE__.segment.rsc +1 -1
  548. package/cli/app/.next-cli-build/server/app/landing.segments/landing.segment.rsc +1 -1
  549. package/cli/app/.next-cli-build/server/app/login/page.js +1 -1
  550. package/cli/app/.next-cli-build/server/app/login/page.js.nft.json +1 -1
  551. package/cli/app/.next-cli-build/server/app/login/page_client-reference-manifest.js +1 -1
  552. package/cli/app/.next-cli-build/server/app/login.html +1 -1
  553. package/cli/app/.next-cli-build/server/app/login.rsc +5 -5
  554. package/cli/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +5 -5
  555. package/cli/app/.next-cli-build/server/app/login.segments/_head.segment.rsc +1 -1
  556. package/cli/app/.next-cli-build/server/app/login.segments/_index.segment.rsc +4 -4
  557. package/cli/app/.next-cli-build/server/app/login.segments/_tree.segment.rsc +2 -2
  558. package/cli/app/.next-cli-build/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
  559. package/cli/app/.next-cli-build/server/app/login.segments/login.segment.rsc +1 -1
  560. package/cli/app/.next-cli-build/server/app/manifest.webmanifest/route.js.nft.json +1 -1
  561. package/cli/app/.next-cli-build/server/app/page.js +1 -1
  562. package/cli/app/.next-cli-build/server/app/page.js.nft.json +1 -1
  563. package/cli/app/.next-cli-build/server/app/page_client-reference-manifest.js +1 -1
  564. package/cli/app/.next-cli-build/server/app-paths-manifest.json +3 -3
  565. package/cli/app/.next-cli-build/server/chunks/2777.js +1 -0
  566. package/cli/app/.next-cli-build/server/chunks/3110.js +1 -1
  567. package/cli/app/.next-cli-build/server/chunks/318.js +1 -1
  568. package/cli/app/.next-cli-build/server/chunks/3188.js +1 -1
  569. package/cli/app/.next-cli-build/server/chunks/3593.js +1 -1
  570. package/cli/app/.next-cli-build/server/chunks/4043.js +14 -0
  571. package/cli/app/.next-cli-build/server/chunks/4055.js +1 -1
  572. package/cli/app/.next-cli-build/server/chunks/412.js +2 -2
  573. package/cli/app/.next-cli-build/server/chunks/4161.js +1 -1
  574. package/cli/app/.next-cli-build/server/chunks/4739.js +1 -1
  575. package/cli/app/.next-cli-build/server/chunks/4746.js +1 -1
  576. package/cli/app/.next-cli-build/server/chunks/4780.js +1 -1
  577. package/cli/app/.next-cli-build/server/chunks/507.js +1 -1
  578. package/cli/app/.next-cli-build/server/chunks/5217.js +1 -1
  579. package/cli/app/.next-cli-build/server/chunks/5258.js +1 -1
  580. package/cli/app/.next-cli-build/server/chunks/6896.js +1 -1
  581. package/cli/app/.next-cli-build/server/chunks/698.js +1 -1
  582. package/cli/app/.next-cli-build/server/chunks/7153.js +1 -1
  583. package/cli/app/.next-cli-build/server/chunks/7965.js +1 -1
  584. package/cli/app/.next-cli-build/server/chunks/8255.js +1 -1
  585. package/cli/app/.next-cli-build/server/chunks/8520.js +1 -1
  586. package/cli/app/.next-cli-build/server/chunks/915.js +1 -1
  587. package/cli/app/.next-cli-build/server/chunks/9326.js +1 -1
  588. package/cli/app/.next-cli-build/server/middleware-build-manifest.js +1 -1
  589. package/cli/app/.next-cli-build/server/middleware.js +2 -2
  590. package/cli/app/.next-cli-build/server/pages/404.html +1 -1
  591. package/cli/app/.next-cli-build/server/pages/500.html +1 -1
  592. package/cli/app/.next-cli-build/static/chunks/{1321-1ea0cba0e1dc93f9.js → 1321-a5b3389b48770247.js} +1 -1
  593. package/cli/app/.next-cli-build/static/chunks/5497-c0171a56ecd9ce03.js +7 -0
  594. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/profile/{page-ad6c0d386a0a9e15.js → page-ec740b92f0fead18.js} +1 -1
  595. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/quota/page-00add5a971054c3c.js +1 -0
  596. package/cli/app/.next-cli-build/static/css/{705fa00a1e55feb4.css → 20176eae83d8ef2f.css} +1 -1
  597. package/cli/app/package.json +1 -1
  598. package/cli/package.json +1 -1
  599. package/package.json +1 -1
  600. package/src/app/(dashboard)/dashboard/profile/page.js +15 -0
  601. package/src/app/(dashboard)/dashboard/usage/components/ProviderLimits/index.js +3 -3
  602. package/src/app/(dashboard)/dashboard/usage/components/ProviderTopology.js +3 -3
  603. package/src/app/api/init/route.js +8 -0
  604. package/src/app/api/usage/[connectionId]/route.js +22 -170
  605. package/src/app/globals.css +5 -7
  606. package/src/lib/db/index.js +6 -0
  607. package/src/lib/db/repos/quotaCacheRepo.js +80 -0
  608. package/src/lib/db/schema.js +15 -0
  609. package/src/lib/localDb.js +2 -0
  610. package/src/lib/usage/quotaRefresh.js +61 -0
  611. package/src/lib/usage/quotaService.js +146 -0
  612. package/src/shared/components/BulkAccountAutomationModal.js +2 -2
  613. package/src/shared/components/ChangelogModal.js +1 -1
  614. package/src/sse/services/auth.js +45 -1
  615. package/cli/app/.next-cli-build/server/chunks/4884.js +0 -13
  616. package/cli/app/.next-cli-build/static/chunks/5497-d71a6e184207a85d.js +0 -7
  617. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/quota/page-bb8cd39cef8dc67a.js +0 -1
  618. /package/cli/app/.next-cli-build/static/{PMzBo5bAkklvn1QHwZSHz → gqqkOdgExaEJWMa8h6owJ}/_buildManifest.js +0 -0
  619. /package/cli/app/.next-cli-build/static/{PMzBo5bAkklvn1QHwZSHz → gqqkOdgExaEJWMa8h6owJ}/_ssgManifest.js +0 -0
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zevairouter",
3
- "version": "1.0.13",
3
+ "version": "1.0.15",
4
4
  "description": "ZevaiRouter - AI Router with provider automation, multi-account workflows, and quota tracking",
5
5
  "bin": {
6
6
  "zevai": "./cli/cli.js"
package/cli/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zevairouter-cli",
3
- "version": "1.0.13",
3
+ "version": "1.0.15",
4
4
  "description": "ZevaiRouter CLI - Start and manage ZevaiRouter server",
5
5
  "bin": {
6
6
  "zevai": "./cli.js"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zevairouter",
3
- "version": "1.0.13",
3
+ "version": "1.0.15",
4
4
  "description": "ZevaiRouter - AI Router with provider automation, multi-account workflows, and quota tracking",
5
5
  "bin": {
6
6
  "zevai": "./cli/cli.js"
@@ -946,6 +946,21 @@ export default function ProfilePage() {
946
946
  </div>
947
947
  )}
948
948
 
949
+ {/* Most Quota (smart routing) */}
950
+ <div className="flex items-start sm:items-center justify-between gap-4 pt-4 border-t border-border/50">
951
+ <div className="flex-1 min-w-0">
952
+ <p className="font-medium text-sm sm:text-base">Most Quota</p>
953
+ <p className="text-xs sm:text-sm text-text-muted">
954
+ Pick the account with the most remaining quota (uses cached usage)
955
+ </p>
956
+ </div>
957
+ <Toggle
958
+ checked={settings.fallbackStrategy === "most-quota"}
959
+ onChange={() => updateFallbackStrategy(settings.fallbackStrategy === "most-quota" ? "fill-first" : "most-quota")}
960
+ disabled={loading}
961
+ />
962
+ </div>
963
+
949
964
  {/* Combo Round Robin */}
950
965
  <div className="flex items-start sm:items-center justify-between gap-4 pt-4 border-t border-border/50">
951
966
  <div className="flex-1 min-w-0">
@@ -403,7 +403,7 @@ export default function ProviderLimits() {
403
403
  );
404
404
 
405
405
  // Fetch quota for a specific connection
406
- const fetchQuota = useCallback(async (connectionId, provider) => {
406
+ const fetchQuota = useCallback(async (connectionId, provider, force = false) => {
407
407
  setLoading((prev) => ({ ...prev, [connectionId]: true }));
408
408
  setErrors((prev) => ({ ...prev, [connectionId]: null }));
409
409
 
@@ -411,7 +411,7 @@ export default function ProviderLimits() {
411
411
  console.log(
412
412
  `[ProviderLimits] Fetching quota for ${provider} (${connectionId})`,
413
413
  );
414
- const response = await fetch(`/api/usage/${connectionId}`);
414
+ const response = await fetch(`/api/usage/${connectionId}${force ? "?refresh=1" : ""}`);
415
415
 
416
416
  if (!response.ok) {
417
417
  const errorData = await response.json().catch(() => ({}));
@@ -636,7 +636,7 @@ export default function ProviderLimits() {
636
636
  );
637
637
 
638
638
  await Promise.all(
639
- visibleConnections.map((conn) => fetchQuota(conn.id, conn.provider)),
639
+ visibleConnections.map((conn) => fetchQuota(conn.id, conn.provider, true)),
640
640
  );
641
641
 
642
642
  setLastUpdated(new Date());
@@ -77,7 +77,7 @@ ProviderNode.propTypes = {
77
77
  data: PropTypes.object.isRequired,
78
78
  };
79
79
 
80
- // Center 9Router node
80
+ // Center ZevaiRouter node
81
81
  function RouterNode({ data }) {
82
82
  return (
83
83
  <div className="flex items-center justify-center px-5 py-3 rounded-xl border-2 border-primary bg-primary/5 shadow-md min-w-[130px]">
@@ -86,8 +86,8 @@ function RouterNode({ data }) {
86
86
  <Handle type="source" position={Position.Left} id="left" className="!bg-transparent !border-0 !w-0 !h-0" />
87
87
  <Handle type="source" position={Position.Right} id="right" className="!bg-transparent !border-0 !w-0 !h-0" />
88
88
 
89
- <img src="/favicon.svg" alt="9Router" className="w-6 h-6 mr-2" />
90
- <span className="text-sm font-bold text-primary">9Router</span>
89
+ <img src="/favicon.svg" alt="ZevaiRouter" className="w-6 h-6 mr-2" />
90
+ <span className="text-sm font-bold text-primary">ZevaiRouter</span>
91
91
  {data.activeCount > 0 && (
92
92
  <span className="ml-2 px-1.5 py-0.5 rounded-full bg-primary text-white text-xs font-bold">
93
93
  {data.activeCount}
@@ -1,4 +1,12 @@
1
1
  // This API route is called automatically to initialize app
2
+ import { startQuotaRefreshLoop } from "@/lib/usage/quotaRefresh";
3
+
2
4
  export async function GET() {
5
+ // Start the background quota-refresh loop (guarded so it only starts once).
6
+ try {
7
+ startQuotaRefreshLoop();
8
+ } catch (e) {
9
+ console.warn(`[Init] quota refresh loop start failed: ${e.message}`);
10
+ }
3
11
  return new Response("Initialized", { status: 200 });
4
12
  }
@@ -1,188 +1,40 @@
1
1
  // Ensure proxyFetch is loaded to patch globalThis.fetch
2
2
  import "open-sse/index.js";
3
3
 
4
- import { getProviderConnectionById, updateProviderConnection } from "@/lib/localDb";
5
- import { getUsageForProvider } from "open-sse/services/usage.js";
6
- import { getExecutor } from "open-sse/executors/index.js";
7
- import { resolveConnectionProxyConfig } from "@/lib/network/connectionProxy";
8
- import { USAGE_APIKEY_PROVIDERS } from "@/shared/constants/providers";
4
+ import { getQuotaSnapshot } from "@/lib/localDb";
5
+ import { resolveUsageForConnection } from "@/lib/usage/quotaService";
9
6
 
10
- // Detect auth-expired messages returned by usage providers instead of throwing
11
- const AUTH_EXPIRED_PATTERNS = ["expired", "authentication", "unauthorized", "401", "re-authorize"];
12
- function isAuthExpiredMessage(usage) {
13
- if (!usage?.message) return false;
14
- const msg = usage.message.toLowerCase();
15
- return AUTH_EXPIRED_PATTERNS.some((p) => msg.includes(p));
16
- }
17
-
18
- /**
19
- * Refresh credentials using executor and update database
20
- * @param {boolean} force - Skip needsRefresh check and always attempt refresh
21
- * @returns Promise<{ connection, refreshed: boolean }>
22
- */
23
- async function refreshAndUpdateCredentials(connection, force = false, proxyOptions = null) {
24
- const executor = getExecutor(connection.provider);
25
-
26
- // Build credentials object from connection
27
- const credentials = {
28
- accessToken: connection.accessToken,
29
- refreshToken: connection.refreshToken,
30
- idToken: connection.idToken,
31
- expiresAt: connection.expiresAt || connection.tokenExpiresAt,
32
- lastRefreshAt: connection.lastRefreshAt,
33
- connectionId: connection.id,
34
- providerSpecificData: connection.providerSpecificData,
35
- // For GitHub
36
- copilotToken: connection.providerSpecificData?.copilotToken,
37
- copilotTokenExpiresAt: connection.providerSpecificData?.copilotTokenExpiresAt,
38
- };
39
-
40
- // Check if refresh is needed (skip when force=true)
41
- const needsRefresh = force || executor.needsRefresh(credentials);
42
-
43
- if (!needsRefresh) {
44
- return { connection, refreshed: false };
45
- }
46
-
47
- // Use executor's refreshCredentials method (with optional proxy)
48
- const refreshResult = await executor.refreshCredentials(credentials, console, proxyOptions);
49
-
50
- if (!refreshResult) {
51
- // Refresh failed but we still have an accessToken — try with existing token
52
- if (connection.accessToken) {
53
- return { connection, refreshed: false };
54
- }
55
- throw new Error("Failed to refresh credentials. Please re-authorize the connection.");
56
- }
57
-
58
- // Build update object
59
- const now = new Date().toISOString();
60
- const updateData = {
61
- updatedAt: now,
62
- };
63
-
64
- // Update accessToken if present
65
- if (refreshResult.accessToken) {
66
- updateData.accessToken = refreshResult.accessToken;
67
- }
68
-
69
- // Update refreshToken if present
70
- if (refreshResult.refreshToken) {
71
- updateData.refreshToken = refreshResult.refreshToken;
72
- }
73
-
74
- if (refreshResult.idToken) {
75
- updateData.idToken = refreshResult.idToken;
76
- }
77
-
78
- if (refreshResult.lastRefreshAt) {
79
- updateData.lastRefreshAt = refreshResult.lastRefreshAt;
80
- }
81
-
82
- // Update token expiry
83
- if (refreshResult.expiresIn) {
84
- updateData.expiresAt = new Date(Date.now() + refreshResult.expiresIn * 1000).toISOString();
85
- updateData.expiresIn = refreshResult.expiresIn;
86
- } else if (refreshResult.expiresAt) {
87
- updateData.expiresAt = refreshResult.expiresAt;
88
- }
89
-
90
- // Handle provider-specific data (copilotToken for GitHub, etc.)
91
- const providerSpecificUpdates = {
92
- ...(refreshResult.providerSpecificData || {}),
93
- ...(refreshResult.copilotToken ? { copilotToken: refreshResult.copilotToken } : {}),
94
- ...(refreshResult.copilotTokenExpiresAt ? { copilotTokenExpiresAt: refreshResult.copilotTokenExpiresAt } : {}),
95
- };
96
- if (Object.keys(providerSpecificUpdates).length > 0) {
97
- updateData.providerSpecificData = {
98
- ...(connection.providerSpecificData || {}),
99
- ...providerSpecificUpdates,
100
- };
101
- }
102
-
103
- // Update database
104
- await updateProviderConnection(connection.id, updateData);
105
-
106
- // Return updated connection
107
- const updatedConnection = {
108
- ...connection,
109
- ...updateData,
110
- providerSpecificData: updateData.providerSpecificData || connection.providerSpecificData,
111
- };
112
-
113
- return {
114
- connection: updatedConnection,
115
- refreshed: true,
116
- };
117
- }
7
+ // Serve cached quota when it's fresher than this; otherwise fetch live.
8
+ const CACHE_FRESH_MS = 60 * 1000;
118
9
 
119
10
  /**
120
- * GET /api/usage/[connectionId] - Get usage data for a specific connection
11
+ * GET /api/usage/[connectionId] - Get usage data for a specific connection.
12
+ *
13
+ * Reads the server-side quota cache first (instant); only hits the upstream API
14
+ * when the cache is stale or `?refresh=1` is passed. Live fetches also write the
15
+ * cache so routing + dashboard stay in sync.
121
16
  */
122
17
  export async function GET(request, { params }) {
123
- let connection;
18
+ let connectionId;
124
19
  try {
125
- const { connectionId } = await params;
126
-
127
-
128
- // Get connection from database
129
- connection = await getProviderConnectionById(connectionId);
130
- if (!connection) {
131
- return Response.json({ error: "Connection not found" }, { status: 404 });
132
- }
133
-
134
- // Allow OAuth connections, plus whitelisted apikey providers (glm/minimax/...)
135
- const isOAuth = connection.authType === "oauth";
136
- const isApikeyEligible =
137
- connection.authType === "apikey" &&
138
- USAGE_APIKEY_PROVIDERS.includes(connection.provider);
139
-
140
- if (!isOAuth && !isApikeyEligible) {
141
- return Response.json({ message: "Usage not available for this connection" });
142
- }
143
-
144
- // Resolve connection proxy config; force strictProxy=false so quota/refresh fall back to direct on failure
145
- const proxyConfig = await resolveConnectionProxyConfig(connection.providerSpecificData);
146
- const proxyOptions = {
147
- connectionProxyEnabled: proxyConfig.connectionProxyEnabled === true,
148
- connectionProxyUrl: proxyConfig.connectionProxyUrl || "",
149
- connectionNoProxy: proxyConfig.connectionNoProxy || "",
150
- vercelRelayUrl: proxyConfig.vercelRelayUrl || "",
151
- strictProxy: false,
152
- };
153
-
154
- // Refresh credentials only for OAuth connections (apikey has no token refresh)
155
- if (isOAuth) {
156
- try {
157
- const result = await refreshAndUpdateCredentials(connection, false, proxyOptions);
158
- connection = result.connection;
159
- } catch (refreshError) {
160
- console.error("[Usage API] Credential refresh failed:", refreshError);
161
- return Response.json({
162
- error: `Credential refresh failed: ${refreshError.message}`
163
- }, { status: 401 });
20
+ ({ connectionId } = await params);
21
+ const url = new URL(request.url);
22
+ const force = url.searchParams.get("refresh") === "1";
23
+
24
+ if (!force) {
25
+ const snap = await getQuotaSnapshot(connectionId);
26
+ if (snap?.usage && Date.now() - new Date(snap.fetchedAt).getTime() < CACHE_FRESH_MS) {
27
+ return Response.json({ ...snap.usage, cached: true, fetchedAt: snap.fetchedAt });
164
28
  }
165
29
  }
166
30
 
167
- // Fetch usage from provider API
168
- let usage = await getUsageForProvider(connection, proxyOptions);
169
-
170
- // If provider returned an auth-expired message instead of throwing,
171
- // force-refresh token and retry once (OAuth only)
172
- if (isOAuth && isAuthExpiredMessage(usage) && connection.refreshToken) {
173
- try {
174
- const retryResult = await refreshAndUpdateCredentials(connection, true, proxyOptions);
175
- connection = retryResult.connection;
176
- usage = await getUsageForProvider(connection, proxyOptions);
177
- } catch (retryError) {
178
- console.warn(`[Usage] ${connection.provider}: force refresh failed: ${retryError.message}`);
179
- }
31
+ const usage = await resolveUsageForConnection(connectionId, { writeCache: true, force });
32
+ if (usage?.notFound) {
33
+ return Response.json({ error: "Connection not found" }, { status: 404 });
180
34
  }
181
-
182
35
  return Response.json(usage);
183
36
  } catch (error) {
184
- const provider = connection?.provider ?? "unknown";
185
- console.warn(`[Usage] ${provider}: ${error.message}`);
37
+ console.warn(`[Usage] ${connectionId || "unknown"}: ${error.message}`);
186
38
  return Response.json({ error: error.message }, { status: 500 });
187
39
  }
188
40
  }
@@ -510,11 +510,9 @@ button {
510
510
  0 1px 2px rgba(15, 23, 42, 0.05),
511
511
  0 10px 24px -10px rgba(15, 23, 42, 0.18),
512
512
  0 24px 48px -24px rgba(15, 23, 42, 0.22);
513
- transform: perspective(1200px) translateZ(0);
514
- transform-style: preserve-3d;
515
- transition: transform 0.35s cubic-bezier(0.22, 1, 0.36, 1),
513
+ transform: translateY(0);
514
+ transition: transform 0.3s cubic-bezier(0.22, 1, 0.36, 1),
516
515
  box-shadow 0.35s cubic-bezier(0.22, 1, 0.36, 1);
517
- will-change: transform;
518
516
  }
519
517
  .card-3d::before {
520
518
  content: "";
@@ -527,7 +525,7 @@ button {
527
525
  }
528
526
  .card-3d > * { position: relative; z-index: 1; }
529
527
  .card-3d:hover {
530
- transform: perspective(1200px) translateY(-3px) rotateX(1deg) rotateY(-1deg);
528
+ transform: translateY(-3px);
531
529
  box-shadow:
532
530
  inset 0 1px 0 0 rgba(255, 255, 255, 0.6),
533
531
  0 2px 4px rgba(15, 23, 42, 0.06),
@@ -568,8 +566,8 @@ button {
568
566
  0 44px 80px -28px rgba(0, 0, 0, 0.72);
569
567
  }
570
568
 
571
- /* Respect reduced-motion: keep depth, drop the tilt/scale animation */
569
+ /* Respect reduced-motion: keep depth, drop the movement */
572
570
  @media (prefers-reduced-motion: reduce) {
573
571
  .card-3d { transition: box-shadow 0.3s ease; }
574
- .card-3d:hover { transform: perspective(1200px) translateY(-2px); }
572
+ .card-3d:hover { transform: none; }
575
573
  }
@@ -27,6 +27,12 @@ export {
27
27
  createProxyPool, updateProxyPool, deleteProxyPool,
28
28
  } from "./repos/proxyPoolsRepo.js";
29
29
 
30
+ // Quota cache (server-side per-account quota snapshots for routing)
31
+ export {
32
+ saveQuotaSnapshot, getQuotaSnapshot, getAllQuotaSnapshots,
33
+ deleteQuotaSnapshot, getCachedRemainingPercent,
34
+ } from "./repos/quotaCacheRepo.js";
35
+
30
36
  // API keys
31
37
  export {
32
38
  getApiKeys, getApiKeyById, createApiKey, updateApiKey, deleteApiKey, validateApiKey,
@@ -0,0 +1,80 @@
1
+ import { getAdapter } from "../driver.js";
2
+ import { parseJson, stringifyJson } from "../helpers/jsonCol.js";
3
+
4
+ /**
5
+ * Quota cache repo — server-side snapshots of upstream per-account quota.
6
+ *
7
+ * A background loop (see open-sse/services/quotaRefresh.js) periodically calls
8
+ * getUsageForProvider() and writes the result here so request routing can read
9
+ * remaining quota synchronously (one SQLite lookup) instead of a live network
10
+ * call. One row per connection.
11
+ */
12
+
13
+ /**
14
+ * Upsert a quota snapshot for a connection.
15
+ * @param {string} connectionId
16
+ * @param {string} provider
17
+ * @param {object} usage - the object returned by getUsageForProvider (quotas, plan, message, accountDead...)
18
+ */
19
+ export async function saveQuotaSnapshot(connectionId, provider, usage) {
20
+ if (!connectionId) return;
21
+ const db = await getAdapter();
22
+ const fetchedAt = new Date().toISOString();
23
+ db.run(
24
+ `INSERT INTO quotaCache(connectionId, provider, data, fetchedAt) VALUES(?, ?, ?, ?)
25
+ ON CONFLICT(connectionId) DO UPDATE SET provider = excluded.provider, data = excluded.data, fetchedAt = excluded.fetchedAt`,
26
+ [connectionId, provider || "", stringifyJson(usage || {}), fetchedAt]
27
+ );
28
+ }
29
+
30
+ function rowToSnapshot(row) {
31
+ if (!row) return null;
32
+ return {
33
+ connectionId: row.connectionId,
34
+ provider: row.provider,
35
+ fetchedAt: row.fetchedAt,
36
+ usage: parseJson(row.data, {}),
37
+ };
38
+ }
39
+
40
+ /** Get one connection's cached snapshot, or null. */
41
+ export async function getQuotaSnapshot(connectionId) {
42
+ if (!connectionId) return null;
43
+ const db = await getAdapter();
44
+ const row = db.get(
45
+ `SELECT connectionId, provider, data, fetchedAt FROM quotaCache WHERE connectionId = ?`,
46
+ [connectionId]
47
+ );
48
+ return rowToSnapshot(row);
49
+ }
50
+
51
+ /** Get all cached snapshots (optionally filtered by provider). */
52
+ export async function getAllQuotaSnapshots(provider = null) {
53
+ const db = await getAdapter();
54
+ const rows = provider
55
+ ? db.all(`SELECT connectionId, provider, data, fetchedAt FROM quotaCache WHERE provider = ?`, [provider])
56
+ : db.all(`SELECT connectionId, provider, data, fetchedAt FROM quotaCache`);
57
+ return rows.map(rowToSnapshot);
58
+ }
59
+
60
+ /** Delete a connection's snapshot (e.g. when the connection is removed). */
61
+ export async function deleteQuotaSnapshot(connectionId) {
62
+ if (!connectionId) return;
63
+ const db = await getAdapter();
64
+ db.run(`DELETE FROM quotaCache WHERE connectionId = ?`, [connectionId]);
65
+ }
66
+
67
+ /**
68
+ * Read the best remaining-quota percentage for a connection+model from cache.
69
+ * Returns a number 0..100, or null when unknown (no snapshot / model absent).
70
+ * Used by the router's "most-quota" strategy.
71
+ */
72
+ export async function getCachedRemainingPercent(connectionId, model) {
73
+ const snap = await getQuotaSnapshot(connectionId);
74
+ if (!snap) return null;
75
+ const quotas = snap.usage?.quotas;
76
+ if (!quotas || typeof quotas !== "object") return null;
77
+ const q = quotas[model];
78
+ if (!q || typeof q.remainingPercentage !== "number") return null;
79
+ return q.remainingPercentage;
80
+ }
@@ -148,6 +148,21 @@ export const TABLES = {
148
148
  "CREATE INDEX IF NOT EXISTS idx_rd_conn ON requestDetails(connectionId)",
149
149
  ],
150
150
  },
151
+ // Server-side snapshot of upstream per-account quota, refreshed by a
152
+ // background loop. Lets routing read remaining quota synchronously without a
153
+ // live network call. One row per connection; `data` holds the quotas map +
154
+ // plan/message from getUsageForProvider.
155
+ quotaCache: {
156
+ columns: {
157
+ connectionId: "TEXT PRIMARY KEY",
158
+ provider: "TEXT",
159
+ data: "TEXT NOT NULL",
160
+ fetchedAt: "TEXT NOT NULL",
161
+ },
162
+ indexes: [
163
+ "CREATE INDEX IF NOT EXISTS idx_qc_provider ON quotaCache(provider)",
164
+ ],
165
+ },
151
166
  };
152
167
 
153
168
  export function buildCreateTableSql(name, def) {
@@ -10,6 +10,8 @@ export {
10
10
  createProviderNode, updateProviderNode, deleteProviderNode,
11
11
  getProxyPools, getProxyPoolById,
12
12
  createProxyPool, updateProxyPool, deleteProxyPool,
13
+ saveQuotaSnapshot, getQuotaSnapshot, getAllQuotaSnapshots,
14
+ deleteQuotaSnapshot, getCachedRemainingPercent,
13
15
  getApiKeys, getApiKeyById, createApiKey, updateApiKey, deleteApiKey, validateApiKey,
14
16
  getCombos, getComboById, getComboByName,
15
17
  createCombo, updateCombo, deleteCombo,
@@ -0,0 +1,61 @@
1
+ // Background quota refresh loop.
2
+ //
3
+ // Periodically snapshots each active, usage-eligible connection's upstream quota
4
+ // into the server-side quota cache (quotaCache table) so request routing can read
5
+ // remaining quota synchronously. Requests are staggered to avoid a burst of
6
+ // upstream calls. Guarded via globalThis so Next.js hot-reload / multiple imports
7
+ // don't start duplicate loops.
8
+
9
+ import { getProviderConnections } from "@/lib/localDb";
10
+ import { resolveUsageForConnection, isUsageEligible } from "./quotaService.js";
11
+
12
+ const REFRESH_INTERVAL_MS = 5 * 60 * 1000; // full sweep cadence per connection
13
+ const STAGGER_MS = 4 * 1000; // gap between connections in a sweep
14
+ const MIN_START_DELAY_MS = 15 * 1000; // let the server settle before first sweep
15
+
16
+ if (!globalThis._quotaRefreshState) {
17
+ globalThis._quotaRefreshState = { started: false, timer: null, running: false };
18
+ }
19
+ const state = globalThis._quotaRefreshState;
20
+
21
+ async function sweepOnce() {
22
+ if (state.running) return;
23
+ state.running = true;
24
+ try {
25
+ let connections = [];
26
+ try {
27
+ connections = await getProviderConnections({ isActive: true });
28
+ } catch (e) {
29
+ console.warn(`[QuotaRefresh] failed to list connections: ${e.message}`);
30
+ return;
31
+ }
32
+ const eligible = connections.filter(isUsageEligible);
33
+ for (const conn of eligible) {
34
+ try {
35
+ await resolveUsageForConnection(conn.id, { writeCache: true });
36
+ } catch (e) {
37
+ console.warn(`[QuotaRefresh] ${conn.provider}/${conn.id}: ${e.message}`);
38
+ }
39
+ // Stagger to avoid hammering upstreams all at once.
40
+ await new Promise((r) => setTimeout(r, STAGGER_MS));
41
+ }
42
+ } finally {
43
+ state.running = false;
44
+ }
45
+ }
46
+
47
+ /** Start the background loop once per process. Safe to call repeatedly. */
48
+ export function startQuotaRefreshLoop() {
49
+ if (state.started) return;
50
+ state.started = true;
51
+ setTimeout(() => {
52
+ void sweepOnce();
53
+ state.timer = setInterval(() => void sweepOnce(), REFRESH_INTERVAL_MS);
54
+ if (state.timer.unref) state.timer.unref();
55
+ }, MIN_START_DELAY_MS);
56
+ }
57
+
58
+ /** Trigger an immediate one-off sweep (fire-and-forget). */
59
+ export function refreshQuotaNow() {
60
+ void sweepOnce();
61
+ }