zevairouter 1.0.111 → 1.0.113

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 (676) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/cli/app/.next-cli-build/BUILD_ID +1 -1
  3. package/cli/app/.next-cli-build/app-path-routes-manifest.json +6 -6
  4. package/cli/app/.next-cli-build/build-manifest.json +2 -2
  5. package/cli/app/.next-cli-build/prerender-manifest.json +3 -3
  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.nft.json +1 -1
  9. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
  10. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js.nft.json +1 -1
  11. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page_client-reference-manifest.js +1 -1
  12. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
  13. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  14. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page.js.nft.json +1 -1
  15. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  16. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page.js.nft.json +1 -1
  17. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
  18. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/context/page.js.nft.json +1 -1
  19. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/context/page_client-reference-manifest.js +1 -1
  20. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
  21. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  22. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js.nft.json +1 -1
  23. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
  24. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js.nft.json +1 -1
  25. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -1
  26. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js.nft.json +1 -1
  27. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +1 -1
  28. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page.js.nft.json +1 -1
  29. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +1 -1
  30. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page.js.nft.json +1 -1
  31. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
  32. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
  33. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  34. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/playground/page.js.nft.json +1 -1
  35. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/playground/page_client-reference-manifest.js +1 -1
  36. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page.js.nft.json +1 -1
  37. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  38. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js.nft.json +1 -1
  39. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  40. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page.js.nft.json +1 -1
  41. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  42. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page.js.nft.json +1 -1
  43. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  44. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page.js.nft.json +1 -1
  45. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
  46. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page.js.nft.json +1 -1
  47. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page_client-reference-manifest.js +1 -1
  48. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page.js.nft.json +1 -1
  49. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
  50. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/terminal/page.js.nft.json +1 -1
  51. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/terminal/page_client-reference-manifest.js +1 -1
  52. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page.js.nft.json +1 -1
  53. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page_client-reference-manifest.js +1 -1
  54. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page.js.nft.json +1 -1
  55. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  56. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page.js.nft.json +1 -1
  57. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  58. package/cli/app/.next-cli-build/server/app/_global-error/page.js.nft.json +1 -1
  59. package/cli/app/.next-cli-build/server/app/_global-error/page_client-reference-manifest.js +1 -1
  60. package/cli/app/.next-cli-build/server/app/_global-error.html +1 -1
  61. package/cli/app/.next-cli-build/server/app/_global-error.rsc +1 -1
  62. package/cli/app/.next-cli-build/server/app/_global-error.segments/_full.segment.rsc +1 -1
  63. package/cli/app/.next-cli-build/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  64. package/cli/app/.next-cli-build/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  65. package/cli/app/.next-cli-build/server/app/_global-error.segments/_head.segment.rsc +1 -1
  66. package/cli/app/.next-cli-build/server/app/_global-error.segments/_index.segment.rsc +1 -1
  67. package/cli/app/.next-cli-build/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  68. package/cli/app/.next-cli-build/server/app/_not-found/page.js.nft.json +1 -1
  69. package/cli/app/.next-cli-build/server/app/_not-found/page_client-reference-manifest.js +1 -1
  70. package/cli/app/.next-cli-build/server/app/_not-found.html +1 -1
  71. package/cli/app/.next-cli-build/server/app/_not-found.rsc +3 -3
  72. package/cli/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +3 -3
  73. package/cli/app/.next-cli-build/server/app/_not-found.segments/_head.segment.rsc +1 -1
  74. package/cli/app/.next-cli-build/server/app/_not-found.segments/_index.segment.rsc +3 -3
  75. package/cli/app/.next-cli-build/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  76. package/cli/app/.next-cli-build/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  77. package/cli/app/.next-cli-build/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  78. package/cli/app/.next-cli-build/server/app/api/auth/login/route.js +1 -1
  79. package/cli/app/.next-cli-build/server/app/api/auth/login/route.js.nft.json +1 -1
  80. package/cli/app/.next-cli-build/server/app/api/auth/logout/route.js +1 -1
  81. package/cli/app/.next-cli-build/server/app/api/auth/logout/route.js.nft.json +1 -1
  82. package/cli/app/.next-cli-build/server/app/api/auth/oidc/callback/route.js +1 -1
  83. package/cli/app/.next-cli-build/server/app/api/auth/oidc/callback/route.js.nft.json +1 -1
  84. package/cli/app/.next-cli-build/server/app/api/auth/oidc/start/route.js +1 -1
  85. package/cli/app/.next-cli-build/server/app/api/auth/oidc/start/route.js.nft.json +1 -1
  86. package/cli/app/.next-cli-build/server/app/api/auth/oidc/test/route.js +1 -1
  87. package/cli/app/.next-cli-build/server/app/api/auth/oidc/test/route.js.nft.json +1 -1
  88. package/cli/app/.next-cli-build/server/app/api/auth/status/route.js +1 -1
  89. package/cli/app/.next-cli-build/server/app/api/auth/status/route.js.nft.json +1 -1
  90. package/cli/app/.next-cli-build/server/app/api/cache/stats/route.js.nft.json +1 -1
  91. package/cli/app/.next-cli-build/server/app/api/changelog/route.js.nft.json +1 -1
  92. package/cli/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js +4 -4
  93. package/cli/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js.nft.json +1 -1
  94. package/cli/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js +2 -2
  95. package/cli/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js.nft.json +1 -1
  96. package/cli/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js.nft.json +1 -1
  97. package/cli/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route.js +2 -2
  98. package/cli/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route.js.nft.json +1 -1
  99. package/cli/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js +1 -1
  100. package/cli/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js.nft.json +1 -1
  101. package/cli/app/.next-cli-build/server/app/api/cli-tools/codex-gateway/accounts/route.js.nft.json +1 -1
  102. package/cli/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js +1 -1
  103. package/cli/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js.nft.json +1 -1
  104. package/cli/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js +2 -2
  105. package/cli/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js.nft.json +1 -1
  106. package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js +1 -1
  107. package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js.nft.json +1 -1
  108. package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js +2 -2
  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 +2 -2
  113. package/cli/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js.nft.json +1 -1
  114. package/cli/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js +1 -1
  115. package/cli/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js.nft.json +1 -1
  116. package/cli/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js +2 -2
  117. package/cli/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js.nft.json +1 -1
  118. package/cli/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js +2 -2
  119. package/cli/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js.nft.json +1 -1
  120. package/cli/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js +2 -2
  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 +2 -2
  123. package/cli/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js.nft.json +1 -1
  124. package/cli/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js +1 -1
  125. package/cli/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js.nft.json +1 -1
  126. package/cli/app/.next-cli-build/server/app/api/combos/[id]/route.js.nft.json +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/context/[id]/route.js.nft.json +1 -1
  129. package/cli/app/.next-cli-build/server/app/api/context/bulk/route.js.nft.json +1 -1
  130. package/cli/app/.next-cli-build/server/app/api/context/route.js.nft.json +1 -1
  131. package/cli/app/.next-cli-build/server/app/api/dashboard/chat/completions/route.js +1 -1
  132. package/cli/app/.next-cli-build/server/app/api/dashboard/chat/completions/route.js.nft.json +1 -1
  133. package/cli/app/.next-cli-build/server/app/api/headroom/extras/route.js.nft.json +1 -1
  134. package/cli/app/.next-cli-build/server/app/api/headroom/proxy/[...path]/route.js.nft.json +1 -1
  135. package/cli/app/.next-cli-build/server/app/api/headroom/restart/route.js.nft.json +1 -1
  136. package/cli/app/.next-cli-build/server/app/api/headroom/start/route.js.nft.json +1 -1
  137. package/cli/app/.next-cli-build/server/app/api/headroom/status/route.js.nft.json +1 -1
  138. package/cli/app/.next-cli-build/server/app/api/headroom/stop/route.js.nft.json +1 -1
  139. package/cli/app/.next-cli-build/server/app/api/health/route.js.nft.json +1 -1
  140. package/cli/app/.next-cli-build/server/app/api/init/route.js +1 -1
  141. package/cli/app/.next-cli-build/server/app/api/init/route.js.nft.json +1 -1
  142. package/cli/app/.next-cli-build/server/app/api/keys/[id]/route.js.nft.json +1 -1
  143. package/cli/app/.next-cli-build/server/app/api/keys/route.js.nft.json +1 -1
  144. package/cli/app/.next-cli-build/server/app/api/locale/route.js.nft.json +1 -1
  145. package/cli/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route.js.nft.json +1 -1
  146. package/cli/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route.js.nft.json +1 -1
  147. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js.nft.json +1 -1
  148. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js.nft.json +1 -1
  149. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js.nft.json +1 -1
  150. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js.nft.json +1 -1
  151. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/voices/route.js.nft.json +1 -1
  152. package/cli/app/.next-cli-build/server/app/api/models/alias/route.js.nft.json +1 -1
  153. package/cli/app/.next-cli-build/server/app/api/models/availability/route.js.nft.json +1 -1
  154. package/cli/app/.next-cli-build/server/app/api/models/custom/route.js.nft.json +1 -1
  155. package/cli/app/.next-cli-build/server/app/api/models/disabled/route.js.nft.json +1 -1
  156. package/cli/app/.next-cli-build/server/app/api/models/route.js +1 -1
  157. package/cli/app/.next-cli-build/server/app/api/models/route.js.nft.json +1 -1
  158. package/cli/app/.next-cli-build/server/app/api/models/test/route.js +1 -1
  159. package/cli/app/.next-cli-build/server/app/api/models/test/route.js.nft.json +1 -1
  160. package/cli/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js +1 -1
  161. package/cli/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js.nft.json +1 -1
  162. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/cancel/route.js +1 -1
  163. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
  164. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/manual/[workerId]/route.js +1 -1
  165. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
  166. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/route.js +1 -1
  167. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/route.js.nft.json +1 -1
  168. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/latest/route.js +1 -1
  169. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/latest/route.js.nft.json +1 -1
  170. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/route.js +1 -1
  171. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/route.js.nft.json +1 -1
  172. package/cli/app/.next-cli-build/server/app/api/oauth/autoclaw/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
  173. package/cli/app/.next-cli-build/server/app/api/oauth/autoclaw/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
  174. package/cli/app/.next-cli-build/server/app/api/oauth/autoclaw/bulk-import/[jobId]/route.js.nft.json +1 -1
  175. package/cli/app/.next-cli-build/server/app/api/oauth/autoclaw/bulk-import/latest/route.js.nft.json +1 -1
  176. package/cli/app/.next-cli-build/server/app/api/oauth/autoclaw/bulk-import/route.js.nft.json +1 -1
  177. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
  178. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
  179. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/route.js.nft.json +1 -1
  180. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/latest/route.js.nft.json +1 -1
  181. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/route.js.nft.json +1 -1
  182. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/cancel/route.js +1 -1
  183. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
  184. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/manual/[workerId]/route.js +1 -1
  185. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
  186. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/route.js +1 -1
  187. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/route.js.nft.json +1 -1
  188. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/latest/route.js +1 -1
  189. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/latest/route.js.nft.json +1 -1
  190. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/route.js +1 -1
  191. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/route.js.nft.json +1 -1
  192. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-token/route.js.nft.json +1 -1
  193. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/quota-cookie/route.js.nft.json +1 -1
  194. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/cancel/route.js +1 -1
  195. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
  196. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/manual/[workerId]/route.js +1 -1
  197. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
  198. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/route.js +1 -1
  199. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/route.js.nft.json +1 -1
  200. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/latest/route.js +1 -1
  201. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/latest/route.js.nft.json +1 -1
  202. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/route.js +1 -1
  203. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/route.js.nft.json +1 -1
  204. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-token/route.js.nft.json +1 -1
  205. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/quota-cookie/route.js.nft.json +1 -1
  206. package/cli/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js +1 -1
  207. package/cli/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js.nft.json +1 -1
  208. package/cli/app/.next-cli-build/server/app/api/oauth/cursor/auto-import/route.js.nft.json +1 -1
  209. package/cli/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js.nft.json +1 -1
  210. package/cli/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js.nft.json +1 -1
  211. package/cli/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/[jobId]/cancel/route.js +1 -1
  212. package/cli/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
  213. package/cli/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/[jobId]/manual/[workerId]/route.js +1 -1
  214. package/cli/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
  215. package/cli/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/[jobId]/route.js +1 -1
  216. package/cli/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/[jobId]/route.js.nft.json +1 -1
  217. package/cli/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/latest/route.js +1 -1
  218. package/cli/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/latest/route.js.nft.json +1 -1
  219. package/cli/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/route.js +1 -1
  220. package/cli/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/route.js.nft.json +1 -1
  221. package/cli/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js.nft.json +1 -1
  222. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/auto-import/route.js.nft.json +1 -1
  223. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
  224. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
  225. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/route.js.nft.json +1 -1
  226. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/latest/route.js.nft.json +1 -1
  227. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/route.js.nft.json +1 -1
  228. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js.nft.json +1 -1
  229. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/social-authorize/route.js.nft.json +1 -1
  230. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js.nft.json +1 -1
  231. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
  232. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
  233. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/route.js.nft.json +1 -1
  234. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/latest/route.js.nft.json +1 -1
  235. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/route.js.nft.json +1 -1
  236. package/cli/app/.next-cli-build/server/app/api/pricing/route.js.nft.json +1 -1
  237. package/cli/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js.nft.json +1 -1
  238. package/cli/app/.next-cli-build/server/app/api/provider-nodes/route.js.nft.json +1 -1
  239. package/cli/app/.next-cli-build/server/app/api/provider-nodes/validate/route.js.nft.json +1 -1
  240. package/cli/app/.next-cli-build/server/app/api/providers/[id]/models/route.js +1 -1
  241. package/cli/app/.next-cli-build/server/app/api/providers/[id]/models/route.js.nft.json +1 -1
  242. package/cli/app/.next-cli-build/server/app/api/providers/[id]/route.js.nft.json +1 -1
  243. package/cli/app/.next-cli-build/server/app/api/providers/[id]/test/route.js +1 -1
  244. package/cli/app/.next-cli-build/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
  245. package/cli/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js +1 -1
  246. package/cli/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js.nft.json +1 -1
  247. package/cli/app/.next-cli-build/server/app/api/providers/bulk-delete/route.js.nft.json +1 -1
  248. package/cli/app/.next-cli-build/server/app/api/providers/client/route.js +1 -1
  249. package/cli/app/.next-cli-build/server/app/api/providers/client/route.js.nft.json +1 -1
  250. package/cli/app/.next-cli-build/server/app/api/providers/kilo/free-models/route.js.nft.json +1 -1
  251. package/cli/app/.next-cli-build/server/app/api/providers/route.js +1 -1
  252. package/cli/app/.next-cli-build/server/app/api/providers/route.js.nft.json +1 -1
  253. package/cli/app/.next-cli-build/server/app/api/providers/suggested-models/route.js.nft.json +1 -1
  254. package/cli/app/.next-cli-build/server/app/api/providers/test-batch/route.js +1 -1
  255. package/cli/app/.next-cli-build/server/app/api/providers/test-batch/route.js.nft.json +1 -1
  256. package/cli/app/.next-cli-build/server/app/api/providers/validate/route.js +1 -1
  257. package/cli/app/.next-cli-build/server/app/api/providers/validate/route.js.nft.json +1 -1
  258. package/cli/app/.next-cli-build/server/app/api/proxy-pools/[id]/route.js.nft.json +1 -1
  259. package/cli/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js.nft.json +1 -1
  260. package/cli/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route.js.nft.json +1 -1
  261. package/cli/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route.js.nft.json +1 -1
  262. package/cli/app/.next-cli-build/server/app/api/proxy-pools/route.js.nft.json +1 -1
  263. package/cli/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js.nft.json +1 -1
  264. package/cli/app/.next-cli-build/server/app/api/pxpipe/health/route.js.nft.json +1 -1
  265. package/cli/app/.next-cli-build/server/app/api/pxpipe/install/route.js.nft.json +1 -1
  266. package/cli/app/.next-cli-build/server/app/api/pxpipe/restart/route.js.nft.json +1 -1
  267. package/cli/app/.next-cli-build/server/app/api/pxpipe/start/route.js.nft.json +1 -1
  268. package/cli/app/.next-cli-build/server/app/api/pxpipe/stats/route.js.nft.json +1 -1
  269. package/cli/app/.next-cli-build/server/app/api/pxpipe/status/route.js.nft.json +1 -1
  270. package/cli/app/.next-cli-build/server/app/api/pxpipe/stop/route.js.nft.json +1 -1
  271. package/cli/app/.next-cli-build/server/app/api/settings/database/route.js.nft.json +1 -1
  272. package/cli/app/.next-cli-build/server/app/api/settings/proxy-test/route.js.nft.json +1 -1
  273. package/cli/app/.next-cli-build/server/app/api/settings/require-login/route.js.nft.json +1 -1
  274. package/cli/app/.next-cli-build/server/app/api/settings/route.js.nft.json +1 -1
  275. package/cli/app/.next-cli-build/server/app/api/shutdown/route.js.nft.json +1 -1
  276. package/cli/app/.next-cli-build/server/app/api/tags/route.js.nft.json +1 -1
  277. package/cli/app/.next-cli-build/server/app/api/terminal/auth/setup/route.js +1 -1
  278. package/cli/app/.next-cli-build/server/app/api/terminal/auth/setup/route.js.nft.json +1 -1
  279. package/cli/app/.next-cli-build/server/app/api/terminal/auth/status/route.js +1 -1
  280. package/cli/app/.next-cli-build/server/app/api/terminal/auth/status/route.js.nft.json +1 -1
  281. package/cli/app/.next-cli-build/server/app/api/terminal/auth/unlock/route.js +1 -1
  282. package/cli/app/.next-cli-build/server/app/api/terminal/auth/unlock/route.js.nft.json +1 -1
  283. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/input/route.js +1 -17
  284. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/input/route.js.nft.json +1 -1
  285. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/resize/route.js +1 -17
  286. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/resize/route.js.nft.json +1 -1
  287. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/route.js +1 -17
  288. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/route.js.nft.json +1 -1
  289. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/stream/route.js +2 -18
  290. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/stream/route.js.nft.json +1 -1
  291. package/cli/app/.next-cli-build/server/app/api/terminal/session/route.js +1 -17
  292. package/cli/app/.next-cli-build/server/app/api/terminal/session/route.js.nft.json +1 -1
  293. package/cli/app/.next-cli-build/server/app/api/translator/console-logs/route.js +1 -1
  294. package/cli/app/.next-cli-build/server/app/api/translator/console-logs/route.js.nft.json +1 -1
  295. package/cli/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js +1 -1
  296. package/cli/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js.nft.json +1 -1
  297. package/cli/app/.next-cli-build/server/app/api/translator/load/route.js.nft.json +1 -1
  298. package/cli/app/.next-cli-build/server/app/api/translator/save/route.js.nft.json +1 -1
  299. package/cli/app/.next-cli-build/server/app/api/translator/send/route.js +1 -1
  300. package/cli/app/.next-cli-build/server/app/api/translator/send/route.js.nft.json +1 -1
  301. package/cli/app/.next-cli-build/server/app/api/translator/translate/route.js +1 -1
  302. package/cli/app/.next-cli-build/server/app/api/translator/translate/route.js.nft.json +1 -1
  303. package/cli/app/.next-cli-build/server/app/api/tunnel/disable/route.js.nft.json +1 -1
  304. package/cli/app/.next-cli-build/server/app/api/tunnel/enable/route.js.nft.json +1 -1
  305. package/cli/app/.next-cli-build/server/app/api/tunnel/status/route.js.nft.json +1 -1
  306. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-check/route.js.nft.json +1 -1
  307. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route.js.nft.json +1 -1
  308. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route.js.nft.json +1 -1
  309. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js +2 -2
  310. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js.nft.json +1 -1
  311. package/cli/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js +1 -1
  312. package/cli/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
  313. package/cli/app/.next-cli-build/server/app/api/usage/aggregate/route.js.nft.json +1 -1
  314. package/cli/app/.next-cli-build/server/app/api/usage/chart/route.js.nft.json +1 -1
  315. package/cli/app/.next-cli-build/server/app/api/usage/history/route.js.nft.json +1 -1
  316. package/cli/app/.next-cli-build/server/app/api/usage/providers/route.js.nft.json +1 -1
  317. package/cli/app/.next-cli-build/server/app/api/usage/request-details/route.js.nft.json +1 -1
  318. package/cli/app/.next-cli-build/server/app/api/usage/request-logs/route.js.nft.json +1 -1
  319. package/cli/app/.next-cli-build/server/app/api/usage/stats/route.js.nft.json +1 -1
  320. package/cli/app/.next-cli-build/server/app/api/usage/stream/route.js.nft.json +1 -1
  321. package/cli/app/.next-cli-build/server/app/api/v1/api/chat/route.js +1 -1
  322. package/cli/app/.next-cli-build/server/app/api/v1/api/chat/route.js.nft.json +1 -1
  323. package/cli/app/.next-cli-build/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
  324. package/cli/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
  325. package/cli/app/.next-cli-build/server/app/api/v1/audio/voices/route.js.nft.json +1 -1
  326. package/cli/app/.next-cli-build/server/app/api/v1/chat/completions/route.js +1 -1
  327. package/cli/app/.next-cli-build/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
  328. package/cli/app/.next-cli-build/server/app/api/v1/embeddings/route.js +1 -1
  329. package/cli/app/.next-cli-build/server/app/api/v1/embeddings/route.js.nft.json +1 -1
  330. package/cli/app/.next-cli-build/server/app/api/v1/images/generations/route.js +1 -1
  331. package/cli/app/.next-cli-build/server/app/api/v1/images/generations/route.js.nft.json +1 -1
  332. package/cli/app/.next-cli-build/server/app/api/v1/messages/count_tokens/route.js.nft.json +1 -1
  333. package/cli/app/.next-cli-build/server/app/api/v1/messages/route.js +1 -1
  334. package/cli/app/.next-cli-build/server/app/api/v1/messages/route.js.nft.json +1 -1
  335. package/cli/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js +1 -1
  336. package/cli/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js.nft.json +1 -1
  337. package/cli/app/.next-cli-build/server/app/api/v1/models/info/route.js.nft.json +1 -1
  338. package/cli/app/.next-cli-build/server/app/api/v1/models/route.js +1 -1
  339. package/cli/app/.next-cli-build/server/app/api/v1/models/route.js.nft.json +1 -1
  340. package/cli/app/.next-cli-build/server/app/api/v1/responses/compact/route.js +1 -1
  341. package/cli/app/.next-cli-build/server/app/api/v1/responses/compact/route.js.nft.json +1 -1
  342. package/cli/app/.next-cli-build/server/app/api/v1/responses/route.js +1 -1
  343. package/cli/app/.next-cli-build/server/app/api/v1/responses/route.js.nft.json +1 -1
  344. package/cli/app/.next-cli-build/server/app/api/v1/route.js +1 -1
  345. package/cli/app/.next-cli-build/server/app/api/v1/route.js.nft.json +1 -1
  346. package/cli/app/.next-cli-build/server/app/api/v1/search/route.js +1 -1
  347. package/cli/app/.next-cli-build/server/app/api/v1/search/route.js.nft.json +1 -1
  348. package/cli/app/.next-cli-build/server/app/api/v1/web/fetch/route.js +1 -1
  349. package/cli/app/.next-cli-build/server/app/api/v1/web/fetch/route.js.nft.json +1 -1
  350. package/cli/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js +1 -1
  351. package/cli/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
  352. package/cli/app/.next-cli-build/server/app/api/v1beta/models/route.js.nft.json +1 -1
  353. package/cli/app/.next-cli-build/server/app/api/version/route.js +1 -1
  354. package/cli/app/.next-cli-build/server/app/api/version/route.js.nft.json +1 -1
  355. package/cli/app/.next-cli-build/server/app/api/version/shutdown/route.js +1 -1
  356. package/cli/app/.next-cli-build/server/app/api/version/shutdown/route.js.nft.json +1 -1
  357. package/cli/app/.next-cli-build/server/app/api/version/update/route.js +1 -1
  358. package/cli/app/.next-cli-build/server/app/api/version/update/route.js.nft.json +1 -1
  359. package/cli/app/.next-cli-build/server/app/callback/page.js.nft.json +1 -1
  360. package/cli/app/.next-cli-build/server/app/callback/page_client-reference-manifest.js +1 -1
  361. package/cli/app/.next-cli-build/server/app/callback.html +1 -1
  362. package/cli/app/.next-cli-build/server/app/callback.rsc +3 -3
  363. package/cli/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +3 -3
  364. package/cli/app/.next-cli-build/server/app/callback.segments/_head.segment.rsc +1 -1
  365. package/cli/app/.next-cli-build/server/app/callback.segments/_index.segment.rsc +3 -3
  366. package/cli/app/.next-cli-build/server/app/callback.segments/_tree.segment.rsc +1 -1
  367. package/cli/app/.next-cli-build/server/app/callback.segments/callback/__PAGE__.segment.rsc +1 -1
  368. package/cli/app/.next-cli-build/server/app/callback.segments/callback.segment.rsc +1 -1
  369. package/cli/app/.next-cli-build/server/app/dashboard/automation.html +1 -1
  370. package/cli/app/.next-cli-build/server/app/dashboard/automation.rsc +5 -5
  371. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk/dashboard/automation/__PAGE__.segment.rsc +2 -2
  372. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk/dashboard/automation.segment.rsc +1 -1
  373. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  374. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  375. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_full.segment.rsc +5 -5
  376. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_head.segment.rsc +1 -1
  377. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_index.segment.rsc +3 -3
  378. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_tree.segment.rsc +1 -1
  379. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.html +1 -1
  380. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.rsc +5 -5
  381. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +2 -2
  382. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat.segment.rsc +1 -1
  383. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  384. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  385. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_full.segment.rsc +5 -5
  386. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_head.segment.rsc +1 -1
  387. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_index.segment.rsc +3 -3
  388. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +1 -1
  389. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.html +1 -1
  390. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.rsc +5 -5
  391. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +2 -2
  392. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools.segment.rsc +1 -1
  393. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  394. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  395. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_full.segment.rsc +5 -5
  396. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_head.segment.rsc +1 -1
  397. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_index.segment.rsc +3 -3
  398. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +1 -1
  399. package/cli/app/.next-cli-build/server/app/dashboard/combos.html +1 -1
  400. package/cli/app/.next-cli-build/server/app/dashboard/combos.rsc +5 -5
  401. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +2 -2
  402. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos.segment.rsc +1 -1
  403. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  404. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  405. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_full.segment.rsc +5 -5
  406. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_head.segment.rsc +1 -1
  407. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_index.segment.rsc +3 -3
  408. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_tree.segment.rsc +1 -1
  409. package/cli/app/.next-cli-build/server/app/dashboard/context.html +1 -1
  410. package/cli/app/.next-cli-build/server/app/dashboard/context.rsc +5 -5
  411. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/!KGRhc2hib2FyZCk/dashboard/context/__PAGE__.segment.rsc +2 -2
  412. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/!KGRhc2hib2FyZCk/dashboard/context.segment.rsc +1 -1
  413. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  414. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  415. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_full.segment.rsc +5 -5
  416. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_head.segment.rsc +1 -1
  417. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_index.segment.rsc +3 -3
  418. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_tree.segment.rsc +1 -1
  419. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.html +1 -1
  420. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.rsc +5 -5
  421. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +2 -2
  422. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint.segment.rsc +1 -1
  423. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  424. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  425. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_full.segment.rsc +5 -5
  426. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_head.segment.rsc +1 -1
  427. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_index.segment.rsc +3 -3
  428. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_tree.segment.rsc +1 -1
  429. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.html +1 -1
  430. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.rsc +5 -5
  431. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web/__PAGE__.segment.rsc +2 -2
  432. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web.segment.rsc +1 -1
  433. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers.segment.rsc +1 -1
  434. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  435. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  436. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_full.segment.rsc +5 -5
  437. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_head.segment.rsc +1 -1
  438. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_index.segment.rsc +3 -3
  439. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_tree.segment.rsc +1 -1
  440. package/cli/app/.next-cli-build/server/app/dashboard/mitm.html +1 -1
  441. package/cli/app/.next-cli-build/server/app/dashboard/mitm.rsc +5 -5
  442. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +2 -2
  443. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm.segment.rsc +1 -1
  444. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  445. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  446. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_full.segment.rsc +5 -5
  447. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_head.segment.rsc +1 -1
  448. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_index.segment.rsc +3 -3
  449. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_tree.segment.rsc +1 -1
  450. package/cli/app/.next-cli-build/server/app/dashboard/playground.html +1 -1
  451. package/cli/app/.next-cli-build/server/app/dashboard/playground.rsc +5 -5
  452. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk/dashboard/playground/__PAGE__.segment.rsc +2 -2
  453. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk/dashboard/playground.segment.rsc +1 -1
  454. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  455. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  456. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_full.segment.rsc +5 -5
  457. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_head.segment.rsc +1 -1
  458. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_index.segment.rsc +3 -3
  459. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_tree.segment.rsc +1 -1
  460. package/cli/app/.next-cli-build/server/app/dashboard/profile.html +1 -1
  461. package/cli/app/.next-cli-build/server/app/dashboard/profile.rsc +5 -5
  462. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +2 -2
  463. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile.segment.rsc +1 -1
  464. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  465. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  466. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_full.segment.rsc +5 -5
  467. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_head.segment.rsc +1 -1
  468. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_index.segment.rsc +3 -3
  469. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_tree.segment.rsc +1 -1
  470. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.html +1 -1
  471. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.rsc +5 -5
  472. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +2 -2
  473. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new.segment.rsc +1 -1
  474. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  475. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  476. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  477. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_full.segment.rsc +5 -5
  478. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_head.segment.rsc +1 -1
  479. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_index.segment.rsc +3 -3
  480. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_tree.segment.rsc +1 -1
  481. package/cli/app/.next-cli-build/server/app/dashboard/providers.html +1 -1
  482. package/cli/app/.next-cli-build/server/app/dashboard/providers.rsc +5 -5
  483. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +2 -2
  484. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  485. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  486. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  487. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_full.segment.rsc +5 -5
  488. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_head.segment.rsc +1 -1
  489. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_index.segment.rsc +3 -3
  490. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_tree.segment.rsc +1 -1
  491. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.html +1 -1
  492. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.rsc +5 -5
  493. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +2 -2
  494. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools.segment.rsc +1 -1
  495. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  496. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  497. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +5 -5
  498. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_head.segment.rsc +1 -1
  499. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_index.segment.rsc +3 -3
  500. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +1 -1
  501. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.html +1 -1
  502. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.rsc +5 -5
  503. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard/pxpipe/__PAGE__.segment.rsc +2 -2
  504. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard/pxpipe.segment.rsc +1 -1
  505. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  506. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  507. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_full.segment.rsc +5 -5
  508. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_head.segment.rsc +1 -1
  509. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_index.segment.rsc +3 -3
  510. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_tree.segment.rsc +1 -1
  511. package/cli/app/.next-cli-build/server/app/dashboard/quota.html +2 -2
  512. package/cli/app/.next-cli-build/server/app/dashboard/quota.rsc +6 -6
  513. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +3 -3
  514. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota.segment.rsc +1 -1
  515. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  516. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  517. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_full.segment.rsc +6 -6
  518. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_head.segment.rsc +1 -1
  519. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_index.segment.rsc +3 -3
  520. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_tree.segment.rsc +1 -1
  521. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing/page.js.nft.json +1 -1
  522. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  523. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.html +1 -1
  524. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.rsc +3 -3
  525. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +3 -3
  526. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +1 -1
  527. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +3 -3
  528. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +1 -1
  529. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +1 -1
  530. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing.segment.rsc +1 -1
  531. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings.segment.rsc +1 -1
  532. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard.segment.rsc +1 -1
  533. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.html +1 -1
  534. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.rsc +5 -5
  535. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver/__PAGE__.segment.rsc +2 -2
  536. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver.segment.rsc +1 -1
  537. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  538. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  539. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_full.segment.rsc +5 -5
  540. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_head.segment.rsc +1 -1
  541. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_index.segment.rsc +3 -3
  542. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_tree.segment.rsc +1 -1
  543. package/cli/app/.next-cli-build/server/app/dashboard/translator.html +1 -1
  544. package/cli/app/.next-cli-build/server/app/dashboard/translator.rsc +5 -5
  545. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +2 -2
  546. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator.segment.rsc +1 -1
  547. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  548. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  549. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_full.segment.rsc +5 -5
  550. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_head.segment.rsc +1 -1
  551. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_index.segment.rsc +3 -3
  552. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_tree.segment.rsc +1 -1
  553. package/cli/app/.next-cli-build/server/app/dashboard/usage.html +1 -1
  554. package/cli/app/.next-cli-build/server/app/dashboard/usage.rsc +5 -5
  555. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +2 -2
  556. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage.segment.rsc +1 -1
  557. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  558. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  559. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_full.segment.rsc +5 -5
  560. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_head.segment.rsc +1 -1
  561. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_index.segment.rsc +3 -3
  562. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_tree.segment.rsc +1 -1
  563. package/cli/app/.next-cli-build/server/app/dashboard.html +1 -1
  564. package/cli/app/.next-cli-build/server/app/dashboard.rsc +5 -5
  565. package/cli/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +2 -2
  566. package/cli/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  567. package/cli/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  568. package/cli/app/.next-cli-build/server/app/dashboard.segments/_full.segment.rsc +5 -5
  569. package/cli/app/.next-cli-build/server/app/dashboard.segments/_head.segment.rsc +1 -1
  570. package/cli/app/.next-cli-build/server/app/dashboard.segments/_index.segment.rsc +3 -3
  571. package/cli/app/.next-cli-build/server/app/dashboard.segments/_tree.segment.rsc +1 -1
  572. package/cli/app/.next-cli-build/server/app/index.html +1 -1
  573. package/cli/app/.next-cli-build/server/app/index.rsc +3 -3
  574. package/cli/app/.next-cli-build/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  575. package/cli/app/.next-cli-build/server/app/index.segments/_full.segment.rsc +3 -3
  576. package/cli/app/.next-cli-build/server/app/index.segments/_head.segment.rsc +1 -1
  577. package/cli/app/.next-cli-build/server/app/index.segments/_index.segment.rsc +3 -3
  578. package/cli/app/.next-cli-build/server/app/index.segments/_tree.segment.rsc +1 -1
  579. package/cli/app/.next-cli-build/server/app/landing/page.js.nft.json +1 -1
  580. package/cli/app/.next-cli-build/server/app/landing/page_client-reference-manifest.js +1 -1
  581. package/cli/app/.next-cli-build/server/app/landing.html +1 -1
  582. package/cli/app/.next-cli-build/server/app/landing.rsc +3 -3
  583. package/cli/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +3 -3
  584. package/cli/app/.next-cli-build/server/app/landing.segments/_head.segment.rsc +1 -1
  585. package/cli/app/.next-cli-build/server/app/landing.segments/_index.segment.rsc +3 -3
  586. package/cli/app/.next-cli-build/server/app/landing.segments/_tree.segment.rsc +1 -1
  587. package/cli/app/.next-cli-build/server/app/landing.segments/landing/__PAGE__.segment.rsc +1 -1
  588. package/cli/app/.next-cli-build/server/app/landing.segments/landing.segment.rsc +1 -1
  589. package/cli/app/.next-cli-build/server/app/login/page.js.nft.json +1 -1
  590. package/cli/app/.next-cli-build/server/app/login/page_client-reference-manifest.js +1 -1
  591. package/cli/app/.next-cli-build/server/app/login.html +1 -1
  592. package/cli/app/.next-cli-build/server/app/login.rsc +4 -4
  593. package/cli/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +4 -4
  594. package/cli/app/.next-cli-build/server/app/login.segments/_head.segment.rsc +1 -1
  595. package/cli/app/.next-cli-build/server/app/login.segments/_index.segment.rsc +3 -3
  596. package/cli/app/.next-cli-build/server/app/login.segments/_tree.segment.rsc +1 -1
  597. package/cli/app/.next-cli-build/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
  598. package/cli/app/.next-cli-build/server/app/login.segments/login.segment.rsc +1 -1
  599. package/cli/app/.next-cli-build/server/app/manifest.webmanifest/route.js.nft.json +1 -1
  600. package/cli/app/.next-cli-build/server/app/page.js.nft.json +1 -1
  601. package/cli/app/.next-cli-build/server/app/page_client-reference-manifest.js +1 -1
  602. package/cli/app/.next-cli-build/server/app-paths-manifest.json +6 -6
  603. package/cli/app/.next-cli-build/server/chunks/1939.js +12 -4
  604. package/cli/app/.next-cli-build/server/chunks/2478.js +1 -0
  605. package/cli/app/.next-cli-build/server/chunks/2540.js +1 -1
  606. package/cli/app/.next-cli-build/server/chunks/3110.js +2 -2
  607. package/cli/app/.next-cli-build/server/chunks/3155.js +3 -3
  608. package/cli/app/.next-cli-build/server/chunks/318.js +1 -1
  609. package/cli/app/.next-cli-build/server/chunks/3407.js +1 -1
  610. package/cli/app/.next-cli-build/server/chunks/3593.js +1 -9
  611. package/cli/app/.next-cli-build/server/chunks/3831.js +1 -1
  612. package/cli/app/.next-cli-build/server/chunks/4055.js +1 -9
  613. package/cli/app/.next-cli-build/server/chunks/412.js +1 -1
  614. package/cli/app/.next-cli-build/server/chunks/4650.js +17 -0
  615. package/cli/app/.next-cli-build/server/chunks/4739.js +1 -9
  616. package/cli/app/.next-cli-build/server/chunks/4746.js +1 -1
  617. package/cli/app/.next-cli-build/server/chunks/4780.js +1 -9
  618. package/cli/app/.next-cli-build/server/chunks/507.js +1 -9
  619. package/cli/app/.next-cli-build/server/chunks/5217.js +1 -9
  620. package/cli/app/.next-cli-build/server/chunks/5258.js +1 -9
  621. package/cli/app/.next-cli-build/server/chunks/6896.js +1 -1
  622. package/cli/app/.next-cli-build/server/chunks/698.js +1 -9
  623. package/cli/app/.next-cli-build/server/chunks/7965.js +1 -9
  624. package/cli/app/.next-cli-build/server/chunks/8255.js +1 -1
  625. package/cli/app/.next-cli-build/server/chunks/8371.js +1 -1
  626. package/cli/app/.next-cli-build/server/chunks/8450.js +1 -1
  627. package/cli/app/.next-cli-build/server/chunks/8520.js +1 -9
  628. package/cli/app/.next-cli-build/server/chunks/8895.js +3 -3
  629. package/cli/app/.next-cli-build/server/middleware-build-manifest.js +1 -1
  630. package/cli/app/.next-cli-build/server/middleware.js +10 -2
  631. package/cli/app/.next-cli-build/server/pages/404.html +1 -1
  632. package/cli/app/.next-cli-build/server/pages/500.html +1 -1
  633. package/cli/app/.next-cli-build/server/server-reference-manifest.js +1 -1
  634. package/cli/app/.next-cli-build/server/server-reference-manifest.json +1 -1
  635. package/cli/app/.next-cli-build/static/chunks/{3702-9ca011a83b15d8d8.js → 3702-66e1931cc3b6f8a5.js} +1 -1
  636. package/cli/app/.next-cli-build/static/chunks/{5497-3ba9ab4bf3a9facb.js → 5497-54c8b503897135ae.js} +2 -2
  637. package/cli/app/CHANGELOG.md +10 -0
  638. package/cli/app/package.json +1 -1
  639. package/cli/app/src/lib/db/adapters/betterSqliteAdapter.js +1 -1
  640. package/cli/app/src/lib/db/adapters/bunSqliteAdapter.js +1 -1
  641. package/cli/app/src/lib/db/adapters/nodeSqliteAdapter.js +1 -1
  642. package/cli/app/src/lib/db/adapters/sqljsAdapter.js +23 -25
  643. package/cli/app/src/lib/db/migrate.js +19 -14
  644. package/cli/app/src/mitm/server.js +3 -3
  645. package/cli/package.json +1 -1
  646. package/open-sse/executors/base.js +2 -1
  647. package/open-sse/handlers/chatCore/sseToJsonHandler.js +11 -3
  648. package/open-sse/handlers/chatCore.js +3 -2
  649. package/open-sse/transformer/streamToJsonConverter.js +5 -1
  650. package/open-sse/utils/requestLogger.js +9 -18
  651. package/package.json +1 -1
  652. package/src/app/api/auth/oidc/test/route.js +4 -2
  653. package/src/app/api/oauth/[provider]/[action]/route.js +29 -32
  654. package/src/app/api/oauth/codebuddy-cn/bulk-import/route.js +1 -0
  655. package/src/app/api/terminal/session/[id]/input/route.js +4 -1
  656. package/src/app/api/terminal/session/[id]/resize/route.js +4 -1
  657. package/src/app/api/terminal/session/[id]/route.js +9 -4
  658. package/src/app/api/terminal/session/[id]/stream/route.js +10 -2
  659. package/src/app/api/terminal/session/route.js +8 -3
  660. package/src/dashboardGuard.js +1 -1
  661. package/src/lib/auth/oidc.js +76 -7
  662. package/src/lib/auth/terminalSession.js +27 -1
  663. package/src/lib/db/adapters/betterSqliteAdapter.js +1 -1
  664. package/src/lib/db/adapters/bunSqliteAdapter.js +1 -1
  665. package/src/lib/db/adapters/nodeSqliteAdapter.js +1 -1
  666. package/src/lib/db/adapters/sqljsAdapter.js +23 -25
  667. package/src/lib/db/backup.js +2 -1
  668. package/src/lib/db/index.js +19 -1
  669. package/src/lib/db/migrate.js +19 -14
  670. package/src/lib/oauth/services/codebuddyCnBulkImportManager.js +14 -4
  671. package/src/lib/terminal/sessionManager.js +21 -15
  672. package/src/mitm/server.js +13 -1
  673. package/src/shared/components/CodeBuddyCnPhoneRegisterModal.js +17 -2
  674. package/src/shared/components/OAuthModal.js +24 -16
  675. /package/cli/app/.next-cli-build/static/{BEit7P9cwXUO_ME79G3cB → QlR7VAPyBa5sEyFouxrTT}/_buildManifest.js +0 -0
  676. /package/cli/app/.next-cli-build/static/{BEit7P9cwXUO_ME79G3cB → QlR7VAPyBa5sEyFouxrTT}/_ssgManifest.js +0 -0
@@ -1,3 +1,13 @@
1
+ # v1.0.113 (2026-07-23)
2
+
3
+ ## Fixes
4
+ - **Full-code audit — security, durability, cancellation, and streaming fixes**: closes verified auth bypasses and credential leaks, hardens OIDC against SSRF and DNS rebinding, isolates terminal sessions per owner, makes SQLite backups/imports and sql.js writes durable and transactional, stops retries and MITM requests after cancellation, and rejects malformed or truncated SSE responses.
5
+
6
+ # v1.0.112 (2026-07-21)
7
+
8
+ ## Features
9
+ - **CodeBuddy CN bulk import — manual proxy URL**: the automation previously only accepted proxies from DB proxy pools (`proxyPoolMode` + `proxyPoolId`). The register modal now has a "Manual Proxy URL" field — paste any `http(s)://` or `socks4/5://` proxy (e.g. a sticky residential URL you haven't added to a pool) and it takes precedence over pool selection (dropdown auto-disables). The manager validates the scheme, marks the job `proxyPoolMode: "manual"`, and every account in the job runs through that proxy.
10
+
1
11
  # v1.0.111 (2026-07-21)
2
12
 
3
13
  ## Fixes
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zevairouter",
3
- "version": "1.0.111",
3
+ "version": "1.0.113",
4
4
  "description": "Self-hosted AI router: many providers, one OpenAI-compatible /v1 endpoint and dashboard",
5
5
  "bin": {
6
6
  "zevai": "./cli/cli.js"
@@ -45,7 +45,7 @@ export function createBetterSqliteAdapter(filePath) {
45
45
  all(sql, params = []) { return prepare(sql).all(params); },
46
46
  exec(sql) { return db.exec(sql); },
47
47
  transaction(fn) { return db.transaction(fn)(); },
48
- checkpoint() { try { db.pragma("wal_checkpoint(TRUNCATE)"); } catch {} },
48
+ checkpoint() { db.pragma("wal_checkpoint(TRUNCATE)"); },
49
49
  close() {
50
50
  clearInterval(checkpointTimer);
51
51
  gracefulClose();
@@ -53,7 +53,7 @@ export async function createBunSqliteAdapter(filePath) {
53
53
  const tx = db.transaction(fn);
54
54
  return tx();
55
55
  },
56
- checkpoint() { try { db.exec("PRAGMA wal_checkpoint(TRUNCATE)"); } catch {} },
56
+ checkpoint() { db.exec("PRAGMA wal_checkpoint(TRUNCATE)"); },
57
57
  close() {
58
58
  clearInterval(checkpointTimer);
59
59
  gracefulClose();
@@ -74,7 +74,7 @@ export async function createNodeSqliteAdapter(filePath) {
74
74
  throw e;
75
75
  }
76
76
  },
77
- checkpoint() { try { db.exec("PRAGMA wal_checkpoint(TRUNCATE)"); } catch {} },
77
+ checkpoint() { db.exec("PRAGMA wal_checkpoint(TRUNCATE)"); },
78
78
  close() {
79
79
  clearInterval(checkpointTimer);
80
80
  gracefulClose();
@@ -13,29 +13,25 @@ async function loadSql() {
13
13
  export async function createSqlJsAdapter(filePath) {
14
14
  const SQLLib = await loadSql();
15
15
  const buf = fs.existsSync(filePath) ? fs.readFileSync(filePath) : null;
16
- const db = new SQLLib.Database(buf);
16
+ let db = new SQLLib.Database(buf);
17
17
  db.exec(PRAGMA_SQL);
18
18
  // Schema is created/synced by migrate.js after adapter init
19
19
 
20
20
  let dirty = false;
21
- let saveTimer = null;
22
- const SAVE_DEBOUNCE_MS = 100;
21
+ let transactionDepth = 0;
23
22
 
24
23
  function persist() {
25
24
  const data = db.export();
26
- fs.writeFileSync(filePath, Buffer.from(data));
27
- dirty = false;
28
- }
29
-
30
- function scheduleSave() {
25
+ const tempPath = `${filePath}.tmp-${process.pid}`;
31
26
  dirty = true;
32
- if (saveTimer) clearTimeout(saveTimer);
33
- saveTimer = setTimeout(() => {
34
- saveTimer = null;
35
- if (dirty) {
36
- try { persist(); } catch (e) { console.error("[sqljs] save failed:", e); }
37
- }
38
- }, SAVE_DEBOUNCE_MS);
27
+ try {
28
+ fs.writeFileSync(tempPath, Buffer.from(data));
29
+ fs.renameSync(tempPath, filePath);
30
+ dirty = false;
31
+ } catch (error) {
32
+ try { fs.rmSync(tempPath, { force: true }); } catch {}
33
+ throw error;
34
+ }
39
35
  }
40
36
 
41
37
  function paramsObj(params) {
@@ -50,7 +46,7 @@ export async function createSqlJsAdapter(filePath) {
50
46
  stmt.step();
51
47
  const changes = db.getRowsModified();
52
48
  const lastInsertRowid = db.exec("SELECT last_insert_rowid() as id")[0]?.values?.[0]?.[0] ?? null;
53
- scheduleSave();
49
+ if (transactionDepth === 0) persist();
54
50
  return { changes, lastInsertRowid };
55
51
  } finally {
56
52
  stmt.free();
@@ -82,34 +78,36 @@ export async function createSqlJsAdapter(filePath) {
82
78
 
83
79
  function exec(sql) {
84
80
  db.exec(sql);
85
- scheduleSave();
81
+ if (transactionDepth === 0) persist();
86
82
  }
87
83
 
88
84
  function transaction(fn) {
89
85
  const sp = `sp_${Math.random().toString(36).slice(2)}`;
86
+ const snapshot = transactionDepth === 0 ? db.export() : null;
90
87
  db.exec(`SAVEPOINT ${sp}`);
88
+ transactionDepth++;
91
89
  try {
92
90
  const result = fn();
93
91
  db.exec(`RELEASE ${sp}`);
94
- scheduleSave();
92
+ transactionDepth--;
93
+ if (transactionDepth === 0) persist();
95
94
  return result;
96
95
  } catch (e) {
96
+ transactionDepth--;
97
97
  try { db.exec(`ROLLBACK TO ${sp}`); db.exec(`RELEASE ${sp}`); } catch {}
98
+ if (snapshot) {
99
+ db.close();
100
+ db = new SQL.Database(snapshot);
101
+ dirty = false;
102
+ }
98
103
  throw e;
99
104
  }
100
105
  }
101
106
 
102
107
  function close() {
103
- if (saveTimer) clearTimeout(saveTimer);
104
108
  if (dirty) persist();
105
109
  db.close();
106
110
  }
107
111
 
108
- // Flush on shutdown
109
- const flush = () => { if (dirty) try { persist(); } catch {} };
110
- process.on("beforeExit", flush);
111
- process.on("SIGINT", flush);
112
- process.on("SIGTERM", flush);
113
-
114
112
  return { driver: "sql.js", run, get, all, exec, transaction, close, raw: db };
115
113
  }
@@ -215,11 +215,22 @@ function importLegacyDetails(adapter, data) {
215
215
  // ─── Main entry ──────────────────────────────────────────────────────────
216
216
  export async function runMigrationOnce(adapter) {
217
217
  if (_migratedAdapters.has(adapter)) return;
218
- _migratedAdapters.add(adapter);
219
218
 
220
219
  // Capture freshness BEFORE migrations stamp _meta (otherwise we'd misclassify
221
220
  // a brand-new DB as non-fresh once schemaVersion is written).
222
221
  const fresh = isFreshDb(adapter);
222
+ const oldSchemaVersion = Number(getMetaSync(adapter, "schemaVersion", 0));
223
+ const oldAppVersion = getMetaSync(adapter, "appVersion", null);
224
+ const newAppVersion = getAppVersion();
225
+ let preMigrationBackup = null;
226
+ if (!fresh && (oldSchemaVersion < latestVersion() || (oldAppVersion && oldAppVersion !== newAppVersion))) {
227
+ preMigrationBackup = makeBackupDir(
228
+ oldSchemaVersion < latestVersion()
229
+ ? `schema-${oldSchemaVersion}-to-${latestVersion()}`
230
+ : `upgrade-${oldAppVersion}-to-${newAppVersion}`
231
+ );
232
+ backupFile(DATA_FILE, preMigrationBackup, null, adapter);
233
+ }
223
234
 
224
235
  // 1. Always run versioned migrations chain (skip-version safe)
225
236
  const migInfo = runVersionedMigrations(adapter);
@@ -260,27 +271,21 @@ export async function runMigrationOnce(adapter) {
260
271
  try { fs.writeFileSync(MIGRATED_MARKER, new Date().toISOString()); } catch {}
261
272
  pruneOldBackups();
262
273
  console.log(`[DB][migrate] JSON → SQLite in ${Date.now() - t0}ms | legacy JSON kept at DATA_DIR | backup: ${backupDir}`);
274
+ _migratedAdapters.add(adapter);
263
275
  return;
264
276
  }
265
277
 
266
278
  if (fresh) {
267
279
  setMetaSync(adapter, "appVersion", getAppVersion());
280
+ _migratedAdapters.add(adapter);
268
281
  return;
269
282
  }
270
283
 
271
- // 4. App version bump backup data.sqlite (safety net before user-side upgrade)
272
- const oldVer = getMetaSync(adapter, "appVersion", null);
273
- const newVer = getAppVersion();
274
- if (oldVer && oldVer !== newVer) {
275
- const backupDir = makeBackupDir(`upgrade-${oldVer}-to-${newVer}`);
276
- try { backupFile(DATA_FILE, backupDir); } catch {}
277
- setMetaSync(adapter, "appVersion", newVer);
278
- pruneOldBackups();
279
- console.log(`[DB][migrate] App ${oldVer} → ${newVer} | schema ${migInfo.from} → ${migInfo.to} | backup: ${backupDir}`);
280
- } else if (migInfo.applied > 0) {
281
- // Schema upgrade without app version bump — still backup
282
- const backupDir = makeBackupDir(`schema-${migInfo.from}-to-${migInfo.to}`);
283
- try { backupFile(DATA_FILE, backupDir); } catch {}
284
+ // 4. Record the app version after the pre-migration backup and successful migration.
285
+ if (oldAppVersion !== newAppVersion) setMetaSync(adapter, "appVersion", newAppVersion);
286
+ if (preMigrationBackup) {
284
287
  pruneOldBackups();
288
+ console.log(`[DB][migrate] App ${oldAppVersion} → ${newAppVersion} | schema ${migInfo.from} → ${migInfo.to} | backup: ${preMigrationBackup}`);
285
289
  }
290
+ _migratedAdapters.add(adapter);
286
291
  }
@@ -56,7 +56,7 @@ ${pu}`});Ln.set(e,r),t(null,r)}catch(a){ot(`SNI error for ${e}: ${a.message}`),t
56
56
  [ERROR h2] ${g.message}
57
57
  `),i.end()),t.headersSent||t.writeHead(502),t.writableEnded||t.end("Bad Gateway");try{f.close()}catch{}l()});let c=f.request(u,{endStream:a.length===0});a.length>0&&c.end(a),c.once("response",g=>{let v=g[":status"],y={};for(let[S,I]of Object.entries(g))S.startsWith(":")||S==="connection"||S==="keep-alive"||S==="transfer-encoding"||(y[S]=I);t.writeHead(v,y),i&&i.writeHeader(v,y);let x=[];c.on("data",S=>{i&&i.writeChunk(S),s&&x.push(S),t.write(S)}),c.on("end",()=>{if(i&&i.end(),t.writableEnded||t.end(),s)try{s(Buffer.concat(x),y)}catch{}try{f.close()}catch{}l()})}),c.once("error",g=>{ot(`[mitm] http2 stream error: ${g.message}`),i&&(i.writeChunk(`
58
58
  [ERROR h2-stream] ${g.message}
59
- `),i.end()),t.headersSent||t.writeHead(502),t.writableEnded||t.end();try{f.close()}catch{}l()})})}async function Zd(e,t,a,r,n,s,i){let o=await Pn(n),u=fu.request({hostname:o,port:443,path:e.url,method:e.method,headers:r,servername:n,rejectUnauthorized:!1},l=>{if(t.writeHead(l.statusCode,l.headers),i&&i.writeHeader(l.statusCode,l.headers),!s&&!i){l.pipe(t);return}let f=[];l.on("data",c=>{i&&i.writeChunk(c),s&&f.push(c),t.write(c)}),l.on("end",()=>{if(i&&i.end(),t.end(),s)try{s(Buffer.concat(f),l.headers)}catch{}})});u.on("error",l=>{ot(`Passthrough error: ${l.message}`),i&&(i.writeChunk(`
60
- [ERROR] ${l.message}
61
- `),i.end()),t.headersSent||t.writeHead(502),t.end("Bad Gateway")}),a.length>0&&u.write(a),u.end()}var On=fu.createServer(gu,async(e,t)=>{try{if(e.url==="/_mitm_health"){t.writeHead(200,{"Content-Type":"application/json"}),t.end(JSON.stringify({ok:!0,pid:process.pid}));return}let a=await Yd(e);if(hu&&Rd(e,a,"raw"),e.headers[ou.name]===ou.value)return er(e,t,a);let r=du(e.headers.host);if(!r||!(Od[r]||[]).some(u=>e.url.includes(u)))return er(e,t,a);if(r==="cursor")return uu[r].intercept(e,t,a,null,er);let i=$d(e.url,a);if(i&&(Kd[r]||[]).some(u=>u.test(i)))return er(e,t,a);let o=Wd(r,i);return o?uu[r].intercept(e,t,a,o,er):er(e,t,a)}catch(a){ot(`Unhandled error: ${a.message}`),t.headersSent||t.writeHead(500,{"Content-Type":"application/json"}),t.end(JSON.stringify({error:{message:a.message,type:"mitm_error"}}))}});function eh(e){try{let t=[];if(su){let a=`powershell -NonInteractive -WindowStyle Hidden -Command "Get-NetTCPConnection -LocalPort ${e} -State Listen -ErrorAction SilentlyContinue | Select-Object -ExpandProperty OwningProcess"`,r=Rn(a,{encoding:"utf-8",windowsHide:!0}).trim();if(!r)return;t=r.split(/\r?\n/).map(n=>n.trim()).filter(n=>n&&Number(n)!==process.pid&&Number(n)>4)}else{let a=Rn(`${Ud} -nP -iTCP:${e} -sTCP:LISTEN -t`,{encoding:"utf-8",windowsHide:!0}).trim();if(!a)return;t=a.split(`
59
+ `),i.end()),t.headersSent||t.writeHead(502),t.writableEnded||t.end();try{f.close()}catch{}l()})})}async function Zd(e,t,a,r,n,s,i){let o=await Pn(n),u=new AbortController,l=()=>u.abort();e.once("aborted",l),t.once("close",l);let f=fu.request({hostname:o,port:443,path:e.url,method:e.method,headers:r,servername:n,rejectUnauthorized:!1,signal:u.signal},g=>{if(t.writeHead(g.statusCode,g.headers),i&&i.writeHeader(g.statusCode,g.headers),!s&&!i){g.pipe(t);return}let v=[];g.on("data",y=>{i&&i.writeChunk(y),s&&v.push(y),t.write(y)}),g.on("end",()=>{if(i&&i.end(),t.end(),s)try{s(Buffer.concat(v),g.headers)}catch{}})}),c=()=>{e.removeListener("aborted",l),t.removeListener("close",l)};f.once("close",c),f.on("error",g=>{c(),!u.signal.aborted&&(ot(`Passthrough error: ${g.message}`),i&&(i.writeChunk(`
60
+ [ERROR] ${g.message}
61
+ `),i.end()),t.headersSent||t.writeHead(502),t.end("Bad Gateway"))}),a.length>0&&f.write(a),f.end()}var On=fu.createServer(gu,async(e,t)=>{try{if(e.url==="/_mitm_health"){t.writeHead(200,{"Content-Type":"application/json"}),t.end(JSON.stringify({ok:!0,pid:process.pid}));return}let a=await Yd(e);if(hu&&Rd(e,a,"raw"),e.headers[ou.name]===ou.value)return er(e,t,a);let r=du(e.headers.host);if(!r||!(Od[r]||[]).some(u=>e.url.includes(u)))return er(e,t,a);if(r==="cursor")return uu[r].intercept(e,t,a,null,er);let i=$d(e.url,a);if(i&&(Kd[r]||[]).some(u=>u.test(i)))return er(e,t,a);let o=Wd(r,i);return o?uu[r].intercept(e,t,a,o,er):er(e,t,a)}catch(a){ot(`Unhandled error: ${a.message}`),t.headersSent||t.writeHead(500,{"Content-Type":"application/json"}),t.end(JSON.stringify({error:{message:a.message,type:"mitm_error"}}))}});function eh(e){try{let t=[];if(su){let a=`powershell -NonInteractive -WindowStyle Hidden -Command "Get-NetTCPConnection -LocalPort ${e} -State Listen -ErrorAction SilentlyContinue | Select-Object -ExpandProperty OwningProcess"`,r=Rn(a,{encoding:"utf-8",windowsHide:!0}).trim();if(!r)return;t=r.split(/\r?\n/).map(n=>n.trim()).filter(n=>n&&Number(n)!==process.pid&&Number(n)>4)}else{let a=Rn(`${Ud} -nP -iTCP:${e} -sTCP:LISTEN -t`,{encoding:"utf-8",windowsHide:!0}).trim();if(!a)return;t=a.split(`
62
62
  `).filter(r=>r&&Number(r)!==process.pid)}if(t.length===0)return;t.forEach(a=>{try{su?Rn(`taskkill /F /PID ${a}`,{windowsHide:!0}):process.kill(Number(a),"SIGKILL")}catch(r){ot(`Failed to kill PID ${a}: ${r.message}`)}}),Un(`Killed ${t.length} process(es) on port ${e}`)}catch(t){if(t.status!==1)throw t}}try{eh(Cr)}catch(e){ot(`Cannot kill process on port ${Cr}: ${e.message}`),process.exit(1)}On.listen(Cr,()=>Un(`\u{1F680} Server ready on :${Cr}`));On.on("error",e=>{e.code==="EADDRINUSE"?ot(`Port ${Cr} already in use`):e.code==="EACCES"?ot(`Permission denied for port ${Cr}`):ot(e.message),process.exit(1)});var{removeAllDNSEntriesSync:th}=ru(),lu=!1,Vn=()=>{if(lu)return;lu=!0,th();let e=setTimeout(()=>process.exit(0),1500);On.close(()=>{clearTimeout(e),process.exit(0)})};process.on("SIGTERM",Vn);process.on("SIGINT",Vn);process.platform==="win32"&&process.on("SIGBREAK",Vn);
package/cli/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zevairouter-cli",
3
- "version": "1.0.111",
3
+ "version": "1.0.113",
4
4
  "description": "ZevaiRouter CLI - Start and manage ZevaiRouter server",
5
5
  "bin": {
6
6
  "zevai": "./cli.js"
@@ -1,3 +1,4 @@
1
+ import { setTimeout as delay } from "node:timers/promises";
1
2
  import { HTTP_STATUS, RETRY_CONFIG, DEFAULT_RETRY_CONFIG, resolveRetryEntry, FETCH_CONNECT_TIMEOUT_MS } from "../config/runtimeConfig.js";
2
3
  import { shouldRefreshCredentials } from "../services/oauthCredentialManager.js";
3
4
  import { proxyAwareFetch } from "../utils/proxyFetch.js";
@@ -115,7 +116,7 @@ export class BaseExecutor {
115
116
  if (attempts <= 0 || retryAttemptsByUrl[urlIndex] >= attempts) return false;
116
117
  retryAttemptsByUrl[urlIndex]++;
117
118
  log?.debug?.("RETRY", `${reason} retry ${retryAttemptsByUrl[urlIndex]}/${attempts} after ${delayMs / 1000}s`);
118
- await new Promise(resolve => setTimeout(resolve, delayMs));
119
+ await delay(delayMs, undefined, { signal });
119
120
  return true;
120
121
  };
121
122
 
@@ -36,16 +36,24 @@ function pickAssistantMessageForChatCompletion(output) {
36
36
  */
37
37
  export function parseSSEToOpenAIResponse(rawSSE, fallbackModel) {
38
38
  const chunks = [];
39
+ let terminated = false;
39
40
 
40
41
  for (const line of String(rawSSE || "").split("\n")) {
41
42
  const trimmed = line.trim();
42
43
  if (!trimmed.startsWith("data:")) continue;
43
44
  const payload = trimmed.slice(5).trim();
44
- if (!payload || payload === "[DONE]") continue;
45
- try { chunks.push(JSON.parse(payload)); } catch { /* ignore malformed lines */ }
45
+ if (!payload) continue;
46
+ if (payload === "[DONE]") {
47
+ terminated = true;
48
+ continue;
49
+ }
50
+ let chunk;
51
+ try { chunk = JSON.parse(payload); } catch { return null; }
52
+ chunks.push(chunk);
53
+ if (chunk?.choices?.some((choice) => choice?.finish_reason)) terminated = true;
46
54
  }
47
55
 
48
- if (chunks.length === 0) return null;
56
+ if (chunks.length === 0 || !terminated) return null;
49
57
 
50
58
  const first = chunks[0];
51
59
  const contentParts = [];
@@ -1,3 +1,4 @@
1
+ import { setTimeout as delay } from "node:timers/promises";
1
2
  import { detectFormat, getTargetFormat } from "../services/provider.js";
2
3
  import { translateRequest } from "../translator/index.js";
3
4
  import { FORMATS } from "../translator/formats.js";
@@ -267,13 +268,13 @@ export async function handleChatCore({ body, modelInfo, credentials, log, onCred
267
268
  lastResult = result;
268
269
  const backoff = retryBaseMs * Math.pow(2, attempt);
269
270
  log?.info?.("RETRY", `${provider.toUpperCase()} | ${model} | HTTP ${result.response.status}, retry ${attempt + 1}/${maxRetries} in ${backoff}ms`);
270
- await new Promise((r) => setTimeout(r, backoff));
271
+ await delay(backoff, undefined, { signal: streamController.signal });
271
272
  } catch (e) {
272
273
  lastErr = e;
273
274
  if (!isRetryableError(e) || attempt === maxRetries) throw e;
274
275
  const backoff = retryBaseMs * Math.pow(2, attempt);
275
276
  log?.info?.("RETRY", `${provider.toUpperCase()} | ${model} | ${e.name}, retry ${attempt + 1}/${maxRetries} in ${backoff}ms`);
276
- await new Promise((r) => setTimeout(r, backoff));
277
+ await delay(backoff, undefined, { signal: streamController.signal });
277
278
  }
278
279
  }
279
280
  if (lastResult) return lastResult;
@@ -20,7 +20,7 @@ function processSSEMessage(msg, state) {
20
20
 
21
21
  let parsed;
22
22
  try { parsed = JSON.parse(dataStr); }
23
- catch { return; }
23
+ catch { throw new Error(`Malformed SSE data for ${eventType}`); }
24
24
 
25
25
  if (eventType === "response.created") {
26
26
  state.responseId = parsed.response?.id || state.responseId;
@@ -85,6 +85,10 @@ export async function convertResponsesStreamToJson(stream) {
85
85
  reader.releaseLock();
86
86
  }
87
87
 
88
+ if (state.status !== "completed") {
89
+ throw new Error(`Responses SSE ended without successful termination (status: ${state.status})`);
90
+ }
91
+
88
92
  // Build output array from accumulated items (ordered by index)
89
93
  const output = [];
90
94
  const maxIndex = state.items.size > 0 ? Math.max(...state.items.keys()) : -1;
@@ -69,25 +69,16 @@ function writeJsonFile(sessionPath, filename, data) {
69
69
  }
70
70
  }
71
71
 
72
- // Mask sensitive data in headers (DISABLED - keep full token for testing)
72
+ // Mask credentials while preserving non-sensitive headers for debugging
73
73
  function maskSensitiveHeaders(headers) {
74
74
  if (!headers) return {};
75
- return { ...headers };
76
-
77
- // Old masking code (disabled):
78
- // const masked = { ...headers };
79
- // const sensitiveKeys = ["authorization", "x-api-key", "cookie", "token"];
80
- //
81
- // for (const key of Object.keys(masked)) {
82
- // const lowerKey = key.toLowerCase();
83
- // if (sensitiveKeys.some(sk => lowerKey.includes(sk))) {
84
- // const value = masked[key];
85
- // if (value && value.length > 20) {
86
- // masked[key] = value.slice(0, 10) + "..." + value.slice(-5);
87
- // }
88
- // }
89
- // }
90
- // return masked;
75
+ const masked = { ...headers };
76
+ const sensitiveKeys = ["authorization", "proxy-authorization", "x-api-key", "cookie", "set-cookie"];
77
+
78
+ for (const key of Object.keys(masked)) {
79
+ if (sensitiveKeys.includes(key.toLowerCase())) masked[key] = "[REDACTED]";
80
+ }
81
+ return masked;
91
82
  }
92
83
 
93
84
  // No-op logger when logging is disabled
@@ -170,7 +161,7 @@ export async function createRequestLogger(sourceFormat, targetFormat, model) {
170
161
  timestamp: new Date().toISOString(),
171
162
  status,
172
163
  statusText,
173
- headers: headers ? (typeof headers.entries === "function" ? Object.fromEntries(headers.entries()) : headers) : {},
164
+ headers: maskSensitiveHeaders(headers ? (typeof headers.entries === "function" ? Object.fromEntries(headers.entries()) : headers) : {}),
174
165
  body
175
166
  });
176
167
  },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zevairouter",
3
- "version": "1.0.111",
3
+ "version": "1.0.113",
4
4
  "description": "Self-hosted AI router: many providers, one OpenAI-compatible /v1 endpoint and dashboard",
5
5
  "bin": {
6
6
  "zevai": "./cli/cli.js"
@@ -22,13 +22,15 @@ export async function POST(request) {
22
22
  const body = await request.json().catch(() => ({}));
23
23
  const settings = await getSettings();
24
24
 
25
- const issuerUrl = String(body.issuerUrl || settings.oidcIssuerUrl || "").trim();
25
+ const requestedIssuer = String(body.issuerUrl || "").trim();
26
+ const issuerUrl = requestedIssuer || String(settings.oidcIssuerUrl || "").trim();
26
27
  const clientId = String(body.clientId || settings.oidcClientId || "").trim();
27
28
  const scopes = String(body.scopes || settings.oidcScopes || "openid profile email").trim() || "openid profile email";
29
+ const sameIssuer = issuerUrl.replace(/\/+$/, "") === String(settings.oidcIssuerUrl || "").trim().replace(/\/+$/, "");
28
30
  const clientSecret = String(
29
31
  Object.prototype.hasOwnProperty.call(body, "clientSecret")
30
32
  ? body.clientSecret
31
- : settings.oidcClientSecret || ""
33
+ : sameIssuer ? settings.oidcClientSecret || "" : ""
32
34
  ).trim();
33
35
 
34
36
  if (!issuerUrl) {
@@ -81,29 +81,6 @@ export async function GET(request, { params }) {
81
81
  return NextResponse.json(authData);
82
82
  }
83
83
 
84
- if (action === "start-proxy") {
85
- if (!["codex", "xai"].includes(provider)) {
86
- return NextResponse.json({ error: "Proxy only supported for codex/xai" }, { status: 400 });
87
- }
88
- const appPort = searchParams.get("app_port");
89
- if (!appPort) {
90
- return NextResponse.json({ error: "Missing app_port" }, { status: 400 });
91
- }
92
- const state = searchParams.get("state");
93
- const codeVerifier = searchParams.get("code_verifier");
94
- const redirectUri = searchParams.get("redirect_uri");
95
- const result = provider === "xai"
96
- ? await startXaiProxy(Number(appPort))
97
- : await startCodexProxy(Number(appPort));
98
- let serverSide = false;
99
- if (result.success && state && codeVerifier && redirectUri) {
100
- serverSide = provider === "xai"
101
- ? registerXaiSession({ state, codeVerifier, redirectUri })
102
- : registerCodexSession({ state, codeVerifier, redirectUri });
103
- }
104
- return NextResponse.json({ ...result, serverSide });
105
- }
106
-
107
84
  if (action === "poll-status") {
108
85
  if (!["codex", "xai"].includes(provider)) {
109
86
  return NextResponse.json({ error: "Poll only supported for codex/xai" }, { status: 400 });
@@ -123,15 +100,6 @@ export async function GET(request, { params }) {
123
100
  return NextResponse.json({ status: session.status });
124
101
  }
125
102
 
126
- if (action === "stop-proxy") {
127
- if (!["codex", "xai"].includes(provider)) {
128
- return NextResponse.json({ error: "Proxy only supported for codex/xai" }, { status: 400 });
129
- }
130
- if (provider === "xai") stopXaiProxy();
131
- else stopCodexProxy();
132
- return NextResponse.json({ success: true });
133
- }
134
-
135
103
  if (action === "device-code") {
136
104
  const providerData = getProvider(provider);
137
105
  if (providerData.flowType !== "device_code") {
@@ -187,6 +155,35 @@ export async function POST(request, { params }) {
187
155
  return NextResponse.json({ error: "Invalid or empty request body" }, { status: 400 });
188
156
  }
189
157
 
158
+ if (action === "start-proxy") {
159
+ if (!["codex", "xai"].includes(provider)) {
160
+ return NextResponse.json({ error: "Proxy only supported for codex/xai" }, { status: 400 });
161
+ }
162
+ const { appPort, state, codeVerifier, redirectUri } = body;
163
+ if (!appPort) {
164
+ return NextResponse.json({ error: "Missing app_port" }, { status: 400 });
165
+ }
166
+ const result = provider === "xai"
167
+ ? await startXaiProxy(Number(appPort))
168
+ : await startCodexProxy(Number(appPort));
169
+ let serverSide = false;
170
+ if (result.success && state && codeVerifier && redirectUri) {
171
+ serverSide = provider === "xai"
172
+ ? registerXaiSession({ state, codeVerifier, redirectUri })
173
+ : registerCodexSession({ state, codeVerifier, redirectUri });
174
+ }
175
+ return NextResponse.json({ ...result, serverSide });
176
+ }
177
+
178
+ if (action === "stop-proxy") {
179
+ if (!["codex", "xai"].includes(provider)) {
180
+ return NextResponse.json({ error: "Proxy only supported for codex/xai" }, { status: 400 });
181
+ }
182
+ if (provider === "xai") stopXaiProxy();
183
+ else stopCodexProxy();
184
+ return NextResponse.json({ success: true });
185
+ }
186
+
190
187
  if (action === "exchange") {
191
188
  const { code, redirectUri, codeVerifier, state, meta } = body;
192
189
 
@@ -44,6 +44,7 @@ export async function POST(request) {
44
44
  engine: body?.engine,
45
45
  proxyPoolMode: body?.proxyPoolMode,
46
46
  proxyPoolId: body?.proxyPoolId,
47
+ manualProxyUrl: typeof body?.manualProxyUrl === "string" && body.manualProxyUrl.trim() ? body.manualProxyUrl.trim() : null,
47
48
  region,
48
49
  });
49
50
 
@@ -1,10 +1,13 @@
1
1
  import { NextResponse } from "next/server";
2
+ import { getTerminalOwner } from "@/lib/auth/terminalSession";
2
3
  import { writeTerminalInput } from "@/lib/terminal/sessionManager";
3
4
 
4
5
  export const dynamic = "force-dynamic";
5
6
  export const runtime = "nodejs";
6
7
 
7
8
  export async function POST(request, { params }) {
9
+ const owner = await getTerminalOwner(request);
10
+ if (!owner) return NextResponse.json({ error: "Unauthorized" }, { status: 401 });
8
11
  const { id } = await params;
9
12
  let data = "";
10
13
 
@@ -21,7 +24,7 @@ export async function POST(request, { params }) {
21
24
  return NextResponse.json({ error: "Input too large" }, { status: 413 });
22
25
  }
23
26
 
24
- const result = writeTerminalInput(id, data);
27
+ const result = writeTerminalInput(id, owner, data);
25
28
  if (!result.ok) {
26
29
  return NextResponse.json({ error: result.error || "Write failed" }, { status: 404 });
27
30
  }
@@ -1,13 +1,16 @@
1
1
  import { NextResponse } from "next/server";
2
+ import { getTerminalOwner } from "@/lib/auth/terminalSession";
2
3
  import { resizeTerminalSession } from "@/lib/terminal/sessionManager";
3
4
 
4
5
  export const dynamic = "force-dynamic";
5
6
  export const runtime = "nodejs";
6
7
 
7
8
  export async function POST(request, { params }) {
9
+ const owner = await getTerminalOwner(request);
10
+ if (!owner) return NextResponse.json({ error: "Unauthorized" }, { status: 401 });
8
11
  const { id } = await params;
9
12
  const body = await request.json().catch(() => ({}));
10
- const result = resizeTerminalSession(id, body?.cols, body?.rows);
13
+ const result = resizeTerminalSession(id, owner, body?.cols, body?.rows);
11
14
  if (!result.ok) {
12
15
  return NextResponse.json({ error: result.error || "Resize failed" }, { status: 404 });
13
16
  }
@@ -1,12 +1,15 @@
1
1
  import { NextResponse } from "next/server";
2
+ import { getTerminalOwner } from "@/lib/auth/terminalSession";
2
3
  import { getTerminalSession, killTerminalSession } from "@/lib/terminal/sessionManager";
3
4
 
4
5
  export const dynamic = "force-dynamic";
5
6
  export const runtime = "nodejs";
6
7
 
7
- export async function GET(_request, { params }) {
8
+ export async function GET(request, { params }) {
9
+ const owner = await getTerminalOwner(request);
10
+ if (!owner) return NextResponse.json({ error: "Unauthorized" }, { status: 401 });
8
11
  const { id } = await params;
9
- const session = getTerminalSession(id);
12
+ const session = getTerminalSession(id, owner);
10
13
  if (!session) {
11
14
  return NextResponse.json({ error: "Session not found" }, { status: 404 });
12
15
  }
@@ -22,9 +25,11 @@ export async function GET(_request, { params }) {
22
25
  });
23
26
  }
24
27
 
25
- export async function DELETE(_request, { params }) {
28
+ export async function DELETE(request, { params }) {
29
+ const owner = await getTerminalOwner(request);
30
+ if (!owner) return NextResponse.json({ error: "Unauthorized" }, { status: 401 });
26
31
  const { id } = await params;
27
- const killed = killTerminalSession(id);
32
+ const killed = killTerminalSession(id, owner);
28
33
  if (!killed) {
29
34
  return NextResponse.json({ error: "Session not found" }, { status: 404 });
30
35
  }
@@ -1,11 +1,19 @@
1
+ import { getTerminalOwner } from "@/lib/auth/terminalSession";
1
2
  import { getTerminalSession, subscribeTerminalOutput } from "@/lib/terminal/sessionManager";
2
3
 
3
4
  export const dynamic = "force-dynamic";
4
5
  export const runtime = "nodejs";
5
6
 
6
7
  export async function GET(request, { params }) {
8
+ const owner = await getTerminalOwner(request);
9
+ if (!owner) {
10
+ return new Response(JSON.stringify({ error: "Unauthorized" }), {
11
+ status: 401,
12
+ headers: { "Content-Type": "application/json" },
13
+ });
14
+ }
7
15
  const { id } = await params;
8
- const session = getTerminalSession(id);
16
+ const session = getTerminalSession(id, owner);
9
17
 
10
18
  if (!session) {
11
19
  return new Response(JSON.stringify({ error: "Session not found" }), {
@@ -54,7 +62,7 @@ export async function GET(request, { params }) {
54
62
  alive: session.alive,
55
63
  });
56
64
 
57
- state.unsubscribe = subscribeTerminalOutput(id, {
65
+ state.unsubscribe = subscribeTerminalOutput(id, owner, {
58
66
  onData: (text) => send({ type: "data", data: text }),
59
67
  onExit: (info) => {
60
68
  send({ type: "exit", ...info });
@@ -1,19 +1,24 @@
1
1
  import { NextResponse } from "next/server";
2
+ import { getTerminalOwner } from "@/lib/auth/terminalSession";
2
3
  import { createTerminalSession, listTerminalSessions } from "@/lib/terminal/sessionManager";
3
4
 
4
5
  export const dynamic = "force-dynamic";
5
6
  export const runtime = "nodejs";
6
7
 
7
- export async function GET() {
8
- return NextResponse.json({ sessions: listTerminalSessions() });
8
+ export async function GET(request) {
9
+ const owner = await getTerminalOwner(request);
10
+ if (!owner) return NextResponse.json({ error: "Unauthorized" }, { status: 401 });
11
+ return NextResponse.json({ sessions: listTerminalSessions(owner) });
9
12
  }
10
13
 
11
14
  export async function POST(request) {
12
15
  try {
16
+ const owner = await getTerminalOwner(request);
17
+ if (!owner) return NextResponse.json({ error: "Unauthorized" }, { status: 401 });
13
18
  const body = await request.json().catch(() => ({}));
14
19
  const cols = Number(body?.cols) || 120;
15
20
  const rows = Number(body?.rows) || 40;
16
- const session = createTerminalSession({ cols, rows });
21
+ const session = createTerminalSession({ cols, rows, owner });
17
22
  return NextResponse.json({ ok: true, session });
18
23
  } catch (error) {
19
24
  const status = error?.code === "MAX_SESSIONS" ? 429 : 500;
@@ -44,6 +44,7 @@ const ALWAYS_PROTECTED = [
44
44
  "/api/oauth/cursor/auto-import",
45
45
  "/api/oauth/kiro/auto-import",
46
46
  "/api/terminal",
47
+ "/api/headroom/proxy",
47
48
  ];
48
49
 
49
50
  // Require auth, but allow through if requireLogin is disabled
@@ -132,7 +133,6 @@ async function hasValidApiKey(request) {
132
133
  }
133
134
 
134
135
  async function canAccessPublicLlmApi(request) {
135
- if (isLocalRequest(request)) return true;
136
136
  if (await hasValidCliToken(request)) return true;
137
137
  return await hasValidApiKey(request);
138
138
  }