zevairouter 1.0.153 → 1.0.155

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 (2314) hide show
  1. package/CHANGELOG.md +47 -0
  2. package/DOCKER.md +403 -0
  3. package/README.md +49 -22
  4. package/README.zh-CN.md +18 -11
  5. package/cli/LICENSE +1 -22
  6. package/cli/app/.next-cli-build/BUILD_ID +1 -1
  7. package/cli/app/.next-cli-build/app-path-routes-manifest.json +13 -11
  8. package/cli/app/.next-cli-build/build-manifest.json +2 -2
  9. package/cli/app/.next-cli-build/required-server-files.json +4 -4
  10. package/cli/app/.next-cli-build/routes-manifest.json +14 -0
  11. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/automation/page.js +2 -2
  12. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/automation/page.js.nft.json +1 -1
  13. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/automation/page_client-reference-manifest.js +1 -1
  14. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page.js +2 -2
  15. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page.js.nft.json +1 -1
  16. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
  17. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js +3 -3
  18. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js.nft.json +1 -1
  19. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page_client-reference-manifest.js +1 -1
  20. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js +2 -2
  21. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
  22. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  23. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page.js +2 -2
  24. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page.js.nft.json +1 -1
  25. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  26. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page.js +2 -2
  27. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page.js.nft.json +1 -1
  28. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
  29. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/context/page.js +2 -2
  30. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/context/page.js.nft.json +1 -1
  31. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/context/page_client-reference-manifest.js +1 -1
  32. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js +2 -2
  33. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
  34. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  35. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js +19 -19
  36. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js.nft.json +1 -1
  37. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
  38. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js +2 -2
  39. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js.nft.json +1 -1
  40. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -1
  41. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js +4 -4
  42. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js.nft.json +1 -1
  43. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +1 -1
  44. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page.js +2 -2
  45. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page.js.nft.json +1 -1
  46. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +1 -1
  47. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page.js +2 -2
  48. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page.js.nft.json +1 -1
  49. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
  50. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js +2 -2
  51. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
  52. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  53. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/playground/page.js +2 -2
  54. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/playground/page.js.nft.json +1 -1
  55. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/playground/page_client-reference-manifest.js +1 -1
  56. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page.js +2 -2
  57. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page.js.nft.json +1 -1
  58. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  59. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js +3 -3
  60. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js.nft.json +1 -1
  61. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  62. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page.js +2 -2
  63. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page.js.nft.json +1 -1
  64. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  65. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page.js +2 -2
  66. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page.js.nft.json +1 -1
  67. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  68. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page.js +4 -4
  69. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page.js.nft.json +1 -1
  70. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
  71. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page.js +2 -2
  72. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page.js.nft.json +1 -1
  73. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page_client-reference-manifest.js +1 -1
  74. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page.js +2 -2
  75. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page.js.nft.json +1 -1
  76. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
  77. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/terminal/page.js +2 -2
  78. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/terminal/page.js.nft.json +1 -1
  79. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/terminal/page_client-reference-manifest.js +1 -1
  80. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page.js +2 -2
  81. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page.js.nft.json +1 -1
  82. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page_client-reference-manifest.js +1 -1
  83. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page.js +2 -2
  84. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page.js.nft.json +1 -1
  85. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  86. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page.js +2 -2
  87. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page.js.nft.json +1 -1
  88. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  89. package/cli/app/.next-cli-build/server/app/_global-error/page.js +3 -3
  90. package/cli/app/.next-cli-build/server/app/_global-error/page.js.nft.json +1 -1
  91. package/cli/app/.next-cli-build/server/app/_global-error/page_client-reference-manifest.js +1 -1
  92. package/cli/app/.next-cli-build/server/app/_global-error.html +1 -1
  93. package/cli/app/.next-cli-build/server/app/_global-error.rsc +1 -1
  94. package/cli/app/.next-cli-build/server/app/_global-error.segments/_full.segment.rsc +1 -1
  95. package/cli/app/.next-cli-build/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  96. package/cli/app/.next-cli-build/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  97. package/cli/app/.next-cli-build/server/app/_global-error.segments/_head.segment.rsc +1 -1
  98. package/cli/app/.next-cli-build/server/app/_global-error.segments/_index.segment.rsc +1 -1
  99. package/cli/app/.next-cli-build/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  100. package/cli/app/.next-cli-build/server/app/_not-found/page.js +2 -2
  101. package/cli/app/.next-cli-build/server/app/_not-found/page.js.nft.json +1 -1
  102. package/cli/app/.next-cli-build/server/app/_not-found/page_client-reference-manifest.js +1 -1
  103. package/cli/app/.next-cli-build/server/app/_not-found.html +1 -1
  104. package/cli/app/.next-cli-build/server/app/_not-found.rsc +3 -3
  105. package/cli/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +3 -3
  106. package/cli/app/.next-cli-build/server/app/_not-found.segments/_head.segment.rsc +1 -1
  107. package/cli/app/.next-cli-build/server/app/_not-found.segments/_index.segment.rsc +3 -3
  108. package/cli/app/.next-cli-build/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  109. package/cli/app/.next-cli-build/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  110. package/cli/app/.next-cli-build/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  111. package/cli/app/.next-cli-build/server/app/api/auth/login/route.js +1 -1
  112. package/cli/app/.next-cli-build/server/app/api/auth/login/route.js.nft.json +1 -1
  113. package/cli/app/.next-cli-build/server/app/api/auth/login/route_client-reference-manifest.js +1 -1
  114. package/cli/app/.next-cli-build/server/app/api/auth/logout/route.js +1 -1
  115. package/cli/app/.next-cli-build/server/app/api/auth/logout/route.js.nft.json +1 -1
  116. package/cli/app/.next-cli-build/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
  117. package/cli/app/.next-cli-build/server/app/api/auth/oidc/callback/route.js +1 -1
  118. package/cli/app/.next-cli-build/server/app/api/auth/oidc/callback/route.js.nft.json +1 -1
  119. package/cli/app/.next-cli-build/server/app/api/auth/oidc/callback/route_client-reference-manifest.js +1 -1
  120. package/cli/app/.next-cli-build/server/app/api/auth/oidc/start/route.js +1 -1
  121. package/cli/app/.next-cli-build/server/app/api/auth/oidc/start/route.js.nft.json +1 -1
  122. package/cli/app/.next-cli-build/server/app/api/auth/oidc/start/route_client-reference-manifest.js +1 -1
  123. package/cli/app/.next-cli-build/server/app/api/auth/oidc/test/route.js +1 -1
  124. package/cli/app/.next-cli-build/server/app/api/auth/oidc/test/route.js.nft.json +1 -1
  125. package/cli/app/.next-cli-build/server/app/api/auth/oidc/test/route_client-reference-manifest.js +1 -1
  126. package/cli/app/.next-cli-build/server/app/api/auth/status/route.js +1 -1
  127. package/cli/app/.next-cli-build/server/app/api/auth/status/route.js.nft.json +1 -1
  128. package/cli/app/.next-cli-build/server/app/api/auth/status/route_client-reference-manifest.js +1 -1
  129. package/cli/app/.next-cli-build/server/app/api/cache/stats/route.js +1 -1
  130. package/cli/app/.next-cli-build/server/app/api/cache/stats/route.js.nft.json +1 -1
  131. package/cli/app/.next-cli-build/server/app/api/cache/stats/route_client-reference-manifest.js +1 -1
  132. package/cli/app/.next-cli-build/server/app/api/changelog/route.js +1 -1
  133. package/cli/app/.next-cli-build/server/app/api/changelog/route.js.nft.json +1 -1
  134. package/cli/app/.next-cli-build/server/app/api/changelog/route_client-reference-manifest.js +1 -1
  135. package/cli/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js +2 -2
  136. package/cli/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js.nft.json +1 -1
  137. package/cli/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route_client-reference-manifest.js +1 -1
  138. package/cli/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js +1 -1
  139. package/cli/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js.nft.json +1 -1
  140. package/cli/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route_client-reference-manifest.js +1 -1
  141. package/cli/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js +1 -1
  142. package/cli/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js.nft.json +1 -1
  143. package/cli/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route_client-reference-manifest.js +1 -1
  144. package/cli/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route.js +1 -1
  145. package/cli/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route.js.nft.json +1 -1
  146. package/cli/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route_client-reference-manifest.js +1 -1
  147. package/cli/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js +1 -1
  148. package/cli/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js.nft.json +1 -1
  149. package/cli/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route_client-reference-manifest.js +1 -1
  150. package/cli/app/.next-cli-build/server/app/api/cli-tools/codex-gateway/accounts/route.js +1 -1
  151. package/cli/app/.next-cli-build/server/app/api/cli-tools/codex-gateway/accounts/route.js.nft.json +1 -1
  152. package/cli/app/.next-cli-build/server/app/api/cli-tools/codex-gateway/accounts/route_client-reference-manifest.js +1 -1
  153. package/cli/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js +1 -1
  154. package/cli/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js.nft.json +1 -1
  155. package/cli/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route_client-reference-manifest.js +1 -1
  156. package/cli/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js +1 -1
  157. package/cli/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js.nft.json +1 -1
  158. package/cli/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route_client-reference-manifest.js +1 -1
  159. package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js +1 -1
  160. package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js.nft.json +1 -1
  161. package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route_client-reference-manifest.js +1 -1
  162. package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js +1 -1
  163. package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js.nft.json +1 -1
  164. package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route_client-reference-manifest.js +1 -1
  165. package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js +1 -1
  166. package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js.nft.json +1 -1
  167. package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route_client-reference-manifest.js +1 -1
  168. package/cli/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js +2 -2
  169. package/cli/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js.nft.json +1 -1
  170. package/cli/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route_client-reference-manifest.js +1 -1
  171. package/cli/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js +2 -2
  172. package/cli/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js.nft.json +1 -1
  173. package/cli/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route_client-reference-manifest.js +1 -1
  174. package/cli/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js +2 -2
  175. package/cli/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js.nft.json +1 -1
  176. package/cli/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route_client-reference-manifest.js +1 -1
  177. package/cli/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js +2 -2
  178. package/cli/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js.nft.json +1 -1
  179. package/cli/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route_client-reference-manifest.js +1 -1
  180. package/cli/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js +2 -2
  181. package/cli/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js.nft.json +1 -1
  182. package/cli/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route_client-reference-manifest.js +1 -1
  183. package/cli/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js +2 -2
  184. package/cli/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js.nft.json +1 -1
  185. package/cli/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route_client-reference-manifest.js +1 -1
  186. package/cli/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js +2 -2
  187. package/cli/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js.nft.json +1 -1
  188. package/cli/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route_client-reference-manifest.js +1 -1
  189. package/cli/app/.next-cli-build/server/app/api/combos/[id]/route.js +1 -1
  190. package/cli/app/.next-cli-build/server/app/api/combos/[id]/route.js.nft.json +1 -1
  191. package/cli/app/.next-cli-build/server/app/api/combos/[id]/route_client-reference-manifest.js +1 -1
  192. package/cli/app/.next-cli-build/server/app/api/combos/route.js +1 -1
  193. package/cli/app/.next-cli-build/server/app/api/combos/route.js.nft.json +1 -1
  194. package/cli/app/.next-cli-build/server/app/api/combos/route_client-reference-manifest.js +1 -1
  195. package/cli/app/.next-cli-build/server/app/api/context/[id]/route.js +1 -1
  196. package/cli/app/.next-cli-build/server/app/api/context/[id]/route.js.nft.json +1 -1
  197. package/cli/app/.next-cli-build/server/app/api/context/[id]/route_client-reference-manifest.js +1 -1
  198. package/cli/app/.next-cli-build/server/app/api/context/bulk/route.js +1 -1
  199. package/cli/app/.next-cli-build/server/app/api/context/bulk/route.js.nft.json +1 -1
  200. package/cli/app/.next-cli-build/server/app/api/context/bulk/route_client-reference-manifest.js +1 -1
  201. package/cli/app/.next-cli-build/server/app/api/context/route.js +1 -1
  202. package/cli/app/.next-cli-build/server/app/api/context/route.js.nft.json +1 -1
  203. package/cli/app/.next-cli-build/server/app/api/context/route_client-reference-manifest.js +1 -1
  204. package/cli/app/.next-cli-build/server/app/api/dashboard/chat/completions/route.js +1 -1
  205. package/cli/app/.next-cli-build/server/app/api/dashboard/chat/completions/route.js.nft.json +1 -1
  206. package/cli/app/.next-cli-build/server/app/api/dashboard/chat/completions/route_client-reference-manifest.js +1 -1
  207. package/cli/app/.next-cli-build/server/app/api/dashboard/cli-tools/keys/route.js +1 -0
  208. package/cli/app/.next-cli-build/server/app/api/dashboard/cli-tools/keys/route.js.nft.json +1 -0
  209. package/cli/app/.next-cli-build/server/app/api/dashboard/cli-tools/keys/route_client-reference-manifest.js +1 -0
  210. package/cli/app/.next-cli-build/server/app/api/dashboard/media/[operation]/route.js +1 -0
  211. package/cli/app/.next-cli-build/server/app/api/dashboard/media/[operation]/route.js.nft.json +1 -0
  212. package/cli/app/.next-cli-build/server/app/api/dashboard/media/[operation]/route_client-reference-manifest.js +1 -0
  213. package/cli/app/.next-cli-build/server/app/api/headroom/extras/route.js +1 -1
  214. package/cli/app/.next-cli-build/server/app/api/headroom/extras/route.js.nft.json +1 -1
  215. package/cli/app/.next-cli-build/server/app/api/headroom/extras/route_client-reference-manifest.js +1 -1
  216. package/cli/app/.next-cli-build/server/app/api/headroom/proxy/[...path]/route.js +1 -1
  217. package/cli/app/.next-cli-build/server/app/api/headroom/proxy/[...path]/route.js.nft.json +1 -1
  218. package/cli/app/.next-cli-build/server/app/api/headroom/proxy/[...path]/route_client-reference-manifest.js +1 -1
  219. package/cli/app/.next-cli-build/server/app/api/headroom/restart/route.js +1 -1
  220. package/cli/app/.next-cli-build/server/app/api/headroom/restart/route.js.nft.json +1 -1
  221. package/cli/app/.next-cli-build/server/app/api/headroom/restart/route_client-reference-manifest.js +1 -1
  222. package/cli/app/.next-cli-build/server/app/api/headroom/start/route.js +1 -1
  223. package/cli/app/.next-cli-build/server/app/api/headroom/start/route.js.nft.json +1 -1
  224. package/cli/app/.next-cli-build/server/app/api/headroom/start/route_client-reference-manifest.js +1 -1
  225. package/cli/app/.next-cli-build/server/app/api/headroom/status/route.js +1 -1
  226. package/cli/app/.next-cli-build/server/app/api/headroom/status/route.js.nft.json +1 -1
  227. package/cli/app/.next-cli-build/server/app/api/headroom/status/route_client-reference-manifest.js +1 -1
  228. package/cli/app/.next-cli-build/server/app/api/headroom/stop/route.js +1 -1
  229. package/cli/app/.next-cli-build/server/app/api/headroom/stop/route.js.nft.json +1 -1
  230. package/cli/app/.next-cli-build/server/app/api/headroom/stop/route_client-reference-manifest.js +1 -1
  231. package/cli/app/.next-cli-build/server/app/api/health/ready/route.js +1 -1
  232. package/cli/app/.next-cli-build/server/app/api/health/ready/route.js.nft.json +1 -1
  233. package/cli/app/.next-cli-build/server/app/api/health/ready/route_client-reference-manifest.js +1 -1
  234. package/cli/app/.next-cli-build/server/app/api/health/route.js +1 -1
  235. package/cli/app/.next-cli-build/server/app/api/health/route.js.nft.json +1 -1
  236. package/cli/app/.next-cli-build/server/app/api/health/route_client-reference-manifest.js +1 -1
  237. package/cli/app/.next-cli-build/server/app/api/init/route.js +1 -1
  238. package/cli/app/.next-cli-build/server/app/api/init/route.js.nft.json +1 -1
  239. package/cli/app/.next-cli-build/server/app/api/init/route_client-reference-manifest.js +1 -1
  240. package/cli/app/.next-cli-build/server/app/api/keys/[id]/rotate/route.js +1 -1
  241. package/cli/app/.next-cli-build/server/app/api/keys/[id]/rotate/route.js.nft.json +1 -1
  242. package/cli/app/.next-cli-build/server/app/api/keys/[id]/rotate/route_client-reference-manifest.js +1 -1
  243. package/cli/app/.next-cli-build/server/app/api/keys/[id]/route.js +1 -1
  244. package/cli/app/.next-cli-build/server/app/api/keys/[id]/route.js.nft.json +1 -1
  245. package/cli/app/.next-cli-build/server/app/api/keys/[id]/route_client-reference-manifest.js +1 -1
  246. package/cli/app/.next-cli-build/server/app/api/keys/route.js +1 -1
  247. package/cli/app/.next-cli-build/server/app/api/keys/route.js.nft.json +1 -1
  248. package/cli/app/.next-cli-build/server/app/api/keys/route_client-reference-manifest.js +1 -1
  249. package/cli/app/.next-cli-build/server/app/api/locale/route.js +1 -1
  250. package/cli/app/.next-cli-build/server/app/api/locale/route.js.nft.json +1 -1
  251. package/cli/app/.next-cli-build/server/app/api/locale/route_client-reference-manifest.js +1 -1
  252. package/cli/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route.js +1 -1
  253. package/cli/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route.js.nft.json +1 -1
  254. package/cli/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route_client-reference-manifest.js +1 -1
  255. package/cli/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route.js +1 -1
  256. package/cli/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route.js.nft.json +1 -1
  257. package/cli/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route_client-reference-manifest.js +1 -1
  258. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js +1 -1
  259. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js.nft.json +1 -1
  260. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route_client-reference-manifest.js +1 -1
  261. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js +1 -1
  262. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js.nft.json +1 -1
  263. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route_client-reference-manifest.js +1 -1
  264. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js +1 -1
  265. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js.nft.json +1 -1
  266. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route_client-reference-manifest.js +1 -1
  267. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js +1 -1
  268. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js.nft.json +1 -1
  269. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route_client-reference-manifest.js +1 -1
  270. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/voices/route.js +1 -1
  271. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/voices/route.js.nft.json +1 -1
  272. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/voices/route_client-reference-manifest.js +1 -1
  273. package/cli/app/.next-cli-build/server/app/api/metrics/route.js +2 -2
  274. package/cli/app/.next-cli-build/server/app/api/metrics/route.js.nft.json +1 -1
  275. package/cli/app/.next-cli-build/server/app/api/metrics/route_client-reference-manifest.js +1 -1
  276. package/cli/app/.next-cli-build/server/app/api/models/alias/route.js +1 -1
  277. package/cli/app/.next-cli-build/server/app/api/models/alias/route.js.nft.json +1 -1
  278. package/cli/app/.next-cli-build/server/app/api/models/alias/route_client-reference-manifest.js +1 -1
  279. package/cli/app/.next-cli-build/server/app/api/models/availability/route.js +1 -1
  280. package/cli/app/.next-cli-build/server/app/api/models/availability/route.js.nft.json +1 -1
  281. package/cli/app/.next-cli-build/server/app/api/models/availability/route_client-reference-manifest.js +1 -1
  282. package/cli/app/.next-cli-build/server/app/api/models/custom/route.js +1 -1
  283. package/cli/app/.next-cli-build/server/app/api/models/custom/route.js.nft.json +1 -1
  284. package/cli/app/.next-cli-build/server/app/api/models/custom/route_client-reference-manifest.js +1 -1
  285. package/cli/app/.next-cli-build/server/app/api/models/disabled/route.js +1 -1
  286. package/cli/app/.next-cli-build/server/app/api/models/disabled/route.js.nft.json +1 -1
  287. package/cli/app/.next-cli-build/server/app/api/models/disabled/route_client-reference-manifest.js +1 -1
  288. package/cli/app/.next-cli-build/server/app/api/models/route.js +1 -1
  289. package/cli/app/.next-cli-build/server/app/api/models/route.js.nft.json +1 -1
  290. package/cli/app/.next-cli-build/server/app/api/models/route_client-reference-manifest.js +1 -1
  291. package/cli/app/.next-cli-build/server/app/api/models/test/route.js +1 -1
  292. package/cli/app/.next-cli-build/server/app/api/models/test/route.js.nft.json +1 -1
  293. package/cli/app/.next-cli-build/server/app/api/models/test/route_client-reference-manifest.js +1 -1
  294. package/cli/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js +1 -1
  295. package/cli/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js.nft.json +1 -1
  296. package/cli/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route_client-reference-manifest.js +1 -1
  297. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/cancel/route.js +1 -1
  298. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
  299. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/cancel/route_client-reference-manifest.js +1 -1
  300. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/manual/[workerId]/route.js +1 -1
  301. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
  302. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/manual/[workerId]/route_client-reference-manifest.js +1 -1
  303. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/route.js +1 -1
  304. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/route.js.nft.json +1 -1
  305. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/route_client-reference-manifest.js +1 -1
  306. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/latest/route.js +1 -1
  307. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/latest/route.js.nft.json +1 -1
  308. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/latest/route_client-reference-manifest.js +1 -1
  309. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/route.js +1 -1
  310. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/route.js.nft.json +1 -1
  311. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/route_client-reference-manifest.js +1 -1
  312. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/cancel/route.js +1 -1
  313. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
  314. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/cancel/route_client-reference-manifest.js +1 -1
  315. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/manual/[workerId]/route.js +1 -1
  316. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
  317. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/manual/[workerId]/route_client-reference-manifest.js +1 -1
  318. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/route.js +1 -1
  319. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/route.js.nft.json +1 -1
  320. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/route_client-reference-manifest.js +1 -1
  321. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/latest/route.js +1 -1
  322. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/latest/route.js.nft.json +1 -1
  323. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/latest/route_client-reference-manifest.js +1 -1
  324. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/route.js +1 -1
  325. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/route.js.nft.json +1 -1
  326. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/route_client-reference-manifest.js +1 -1
  327. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/cancel/route.js +1 -1
  328. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
  329. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/cancel/route_client-reference-manifest.js +1 -1
  330. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/manual/[workerId]/route.js +1 -1
  331. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
  332. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/manual/[workerId]/route_client-reference-manifest.js +1 -1
  333. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/route.js +1 -1
  334. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/route.js.nft.json +1 -1
  335. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/route_client-reference-manifest.js +1 -1
  336. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/latest/route.js +1 -1
  337. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/latest/route.js.nft.json +1 -1
  338. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/latest/route_client-reference-manifest.js +1 -1
  339. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/route.js +1 -1
  340. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/route.js.nft.json +1 -1
  341. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/route_client-reference-manifest.js +1 -1
  342. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-token/route.js +1 -1
  343. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-token/route.js.nft.json +1 -1
  344. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-token/route_client-reference-manifest.js +1 -1
  345. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/quota-cookie/route.js +1 -1
  346. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/quota-cookie/route.js.nft.json +1 -1
  347. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/quota-cookie/route_client-reference-manifest.js +1 -1
  348. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/cancel/route.js +1 -1
  349. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
  350. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/cancel/route_client-reference-manifest.js +1 -1
  351. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/manual/[workerId]/route.js +1 -1
  352. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
  353. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/manual/[workerId]/route_client-reference-manifest.js +1 -1
  354. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/route.js +1 -1
  355. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/route.js.nft.json +1 -1
  356. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/route_client-reference-manifest.js +1 -1
  357. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/latest/route.js +1 -1
  358. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/latest/route.js.nft.json +1 -1
  359. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/latest/route_client-reference-manifest.js +1 -1
  360. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/route.js +1 -1
  361. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/route.js.nft.json +1 -1
  362. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/route_client-reference-manifest.js +1 -1
  363. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-token/route.js +1 -1
  364. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-token/route.js.nft.json +1 -1
  365. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-token/route_client-reference-manifest.js +1 -1
  366. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/quota-cookie/route.js +1 -1
  367. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/quota-cookie/route.js.nft.json +1 -1
  368. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/quota-cookie/route_client-reference-manifest.js +1 -1
  369. package/cli/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js +1 -1
  370. package/cli/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js.nft.json +1 -1
  371. package/cli/app/.next-cli-build/server/app/api/oauth/codex/import-token/route_client-reference-manifest.js +1 -1
  372. package/cli/app/.next-cli-build/server/app/api/oauth/cursor/auto-import/route.js +2 -2
  373. package/cli/app/.next-cli-build/server/app/api/oauth/cursor/auto-import/route.js.nft.json +1 -1
  374. package/cli/app/.next-cli-build/server/app/api/oauth/cursor/auto-import/route_client-reference-manifest.js +1 -1
  375. package/cli/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js +1 -1
  376. package/cli/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js.nft.json +1 -1
  377. package/cli/app/.next-cli-build/server/app/api/oauth/cursor/import/route_client-reference-manifest.js +1 -1
  378. package/cli/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js +1 -1
  379. package/cli/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js.nft.json +1 -1
  380. package/cli/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route_client-reference-manifest.js +1 -1
  381. package/cli/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js +1 -1
  382. package/cli/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js.nft.json +1 -1
  383. package/cli/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route_client-reference-manifest.js +1 -1
  384. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/auto-import/route.js +1 -1
  385. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/auto-import/route.js.nft.json +1 -1
  386. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/auto-import/route_client-reference-manifest.js +1 -1
  387. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/cancel/route.js +1 -1
  388. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
  389. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/cancel/route_client-reference-manifest.js +1 -1
  390. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/manual/[workerId]/route.js +1 -1
  391. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
  392. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/manual/[workerId]/route_client-reference-manifest.js +1 -1
  393. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/route.js +1 -1
  394. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/route.js.nft.json +1 -1
  395. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/route_client-reference-manifest.js +1 -1
  396. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/latest/route.js +1 -1
  397. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/latest/route.js.nft.json +1 -1
  398. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/latest/route_client-reference-manifest.js +1 -1
  399. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/route.js +1 -1
  400. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/route.js.nft.json +1 -1
  401. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/route_client-reference-manifest.js +1 -1
  402. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js +1 -1
  403. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js.nft.json +1 -1
  404. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/import/route_client-reference-manifest.js +1 -1
  405. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/social-authorize/route.js +1 -1
  406. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/social-authorize/route.js.nft.json +1 -1
  407. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/social-authorize/route_client-reference-manifest.js +1 -1
  408. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js +1 -1
  409. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js.nft.json +1 -1
  410. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route_client-reference-manifest.js +1 -1
  411. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/cancel/route.js +1 -1
  412. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
  413. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/cancel/route_client-reference-manifest.js +1 -1
  414. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/manual/[workerId]/route.js +1 -1
  415. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
  416. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/manual/[workerId]/route_client-reference-manifest.js +1 -1
  417. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/route.js +1 -1
  418. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/route.js.nft.json +1 -1
  419. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/route_client-reference-manifest.js +1 -1
  420. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/latest/route.js +1 -1
  421. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/latest/route.js.nft.json +1 -1
  422. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/latest/route_client-reference-manifest.js +1 -1
  423. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/route.js +1 -1
  424. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/route.js.nft.json +1 -1
  425. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/route_client-reference-manifest.js +1 -1
  426. package/cli/app/.next-cli-build/server/app/api/pricing/route.js +1 -1
  427. package/cli/app/.next-cli-build/server/app/api/pricing/route.js.nft.json +1 -1
  428. package/cli/app/.next-cli-build/server/app/api/pricing/route_client-reference-manifest.js +1 -1
  429. package/cli/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js +1 -1
  430. package/cli/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js.nft.json +1 -1
  431. package/cli/app/.next-cli-build/server/app/api/provider-nodes/[id]/route_client-reference-manifest.js +1 -1
  432. package/cli/app/.next-cli-build/server/app/api/provider-nodes/route.js +1 -1
  433. package/cli/app/.next-cli-build/server/app/api/provider-nodes/route.js.nft.json +1 -1
  434. package/cli/app/.next-cli-build/server/app/api/provider-nodes/route_client-reference-manifest.js +1 -1
  435. package/cli/app/.next-cli-build/server/app/api/provider-nodes/validate/route.js +1 -1
  436. package/cli/app/.next-cli-build/server/app/api/provider-nodes/validate/route.js.nft.json +1 -1
  437. package/cli/app/.next-cli-build/server/app/api/provider-nodes/validate/route_client-reference-manifest.js +1 -1
  438. package/cli/app/.next-cli-build/server/app/api/providers/[id]/models/route.js +1 -1
  439. package/cli/app/.next-cli-build/server/app/api/providers/[id]/models/route.js.nft.json +1 -1
  440. package/cli/app/.next-cli-build/server/app/api/providers/[id]/models/route_client-reference-manifest.js +1 -1
  441. package/cli/app/.next-cli-build/server/app/api/providers/[id]/route.js +1 -1
  442. package/cli/app/.next-cli-build/server/app/api/providers/[id]/route.js.nft.json +1 -1
  443. package/cli/app/.next-cli-build/server/app/api/providers/[id]/route_client-reference-manifest.js +1 -1
  444. package/cli/app/.next-cli-build/server/app/api/providers/[id]/test/route.js +1 -1
  445. package/cli/app/.next-cli-build/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
  446. package/cli/app/.next-cli-build/server/app/api/providers/[id]/test/route_client-reference-manifest.js +1 -1
  447. package/cli/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js +1 -1
  448. package/cli/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js.nft.json +1 -1
  449. package/cli/app/.next-cli-build/server/app/api/providers/[id]/test-models/route_client-reference-manifest.js +1 -1
  450. package/cli/app/.next-cli-build/server/app/api/providers/bulk-delete/route.js +1 -1
  451. package/cli/app/.next-cli-build/server/app/api/providers/bulk-delete/route.js.nft.json +1 -1
  452. package/cli/app/.next-cli-build/server/app/api/providers/bulk-delete/route_client-reference-manifest.js +1 -1
  453. package/cli/app/.next-cli-build/server/app/api/providers/client/route.js +1 -1
  454. package/cli/app/.next-cli-build/server/app/api/providers/client/route.js.nft.json +1 -1
  455. package/cli/app/.next-cli-build/server/app/api/providers/client/route_client-reference-manifest.js +1 -1
  456. package/cli/app/.next-cli-build/server/app/api/providers/kilo/free-models/route.js +1 -1
  457. package/cli/app/.next-cli-build/server/app/api/providers/kilo/free-models/route.js.nft.json +1 -1
  458. package/cli/app/.next-cli-build/server/app/api/providers/kilo/free-models/route_client-reference-manifest.js +1 -1
  459. package/cli/app/.next-cli-build/server/app/api/providers/route.js +1 -1
  460. package/cli/app/.next-cli-build/server/app/api/providers/route.js.nft.json +1 -1
  461. package/cli/app/.next-cli-build/server/app/api/providers/route_client-reference-manifest.js +1 -1
  462. package/cli/app/.next-cli-build/server/app/api/providers/suggested-models/route.js +1 -1
  463. package/cli/app/.next-cli-build/server/app/api/providers/suggested-models/route.js.nft.json +1 -1
  464. package/cli/app/.next-cli-build/server/app/api/providers/suggested-models/route_client-reference-manifest.js +1 -1
  465. package/cli/app/.next-cli-build/server/app/api/providers/test-batch/route.js +1 -1
  466. package/cli/app/.next-cli-build/server/app/api/providers/test-batch/route.js.nft.json +1 -1
  467. package/cli/app/.next-cli-build/server/app/api/providers/test-batch/route_client-reference-manifest.js +1 -1
  468. package/cli/app/.next-cli-build/server/app/api/providers/validate/route.js +1 -1
  469. package/cli/app/.next-cli-build/server/app/api/providers/validate/route.js.nft.json +1 -1
  470. package/cli/app/.next-cli-build/server/app/api/providers/validate/route_client-reference-manifest.js +1 -1
  471. package/cli/app/.next-cli-build/server/app/api/proxy-pools/[id]/route.js +1 -1
  472. package/cli/app/.next-cli-build/server/app/api/proxy-pools/[id]/route.js.nft.json +1 -1
  473. package/cli/app/.next-cli-build/server/app/api/proxy-pools/[id]/route_client-reference-manifest.js +1 -1
  474. package/cli/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js +1 -1
  475. package/cli/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js.nft.json +1 -1
  476. package/cli/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route_client-reference-manifest.js +1 -1
  477. package/cli/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route.js +2 -2
  478. package/cli/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route.js.nft.json +1 -1
  479. package/cli/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route_client-reference-manifest.js +1 -1
  480. package/cli/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route.js +2 -2
  481. package/cli/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route.js.nft.json +1 -1
  482. package/cli/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route_client-reference-manifest.js +1 -1
  483. package/cli/app/.next-cli-build/server/app/api/proxy-pools/route.js +1 -1
  484. package/cli/app/.next-cli-build/server/app/api/proxy-pools/route.js.nft.json +1 -1
  485. package/cli/app/.next-cli-build/server/app/api/proxy-pools/route_client-reference-manifest.js +1 -1
  486. package/cli/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js +2 -2
  487. package/cli/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js.nft.json +1 -1
  488. package/cli/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route_client-reference-manifest.js +1 -1
  489. package/cli/app/.next-cli-build/server/app/api/pxpipe/health/route.js +2 -2
  490. package/cli/app/.next-cli-build/server/app/api/pxpipe/health/route.js.nft.json +1 -1
  491. package/cli/app/.next-cli-build/server/app/api/pxpipe/health/route_client-reference-manifest.js +1 -1
  492. package/cli/app/.next-cli-build/server/app/api/pxpipe/install/route.js +2 -2
  493. package/cli/app/.next-cli-build/server/app/api/pxpipe/install/route.js.nft.json +1 -1
  494. package/cli/app/.next-cli-build/server/app/api/pxpipe/install/route_client-reference-manifest.js +1 -1
  495. package/cli/app/.next-cli-build/server/app/api/pxpipe/restart/route.js +2 -2
  496. package/cli/app/.next-cli-build/server/app/api/pxpipe/restart/route.js.nft.json +1 -1
  497. package/cli/app/.next-cli-build/server/app/api/pxpipe/restart/route_client-reference-manifest.js +1 -1
  498. package/cli/app/.next-cli-build/server/app/api/pxpipe/start/route.js +2 -2
  499. package/cli/app/.next-cli-build/server/app/api/pxpipe/start/route.js.nft.json +1 -1
  500. package/cli/app/.next-cli-build/server/app/api/pxpipe/start/route_client-reference-manifest.js +1 -1
  501. package/cli/app/.next-cli-build/server/app/api/pxpipe/stats/route.js +2 -2
  502. package/cli/app/.next-cli-build/server/app/api/pxpipe/stats/route.js.nft.json +1 -1
  503. package/cli/app/.next-cli-build/server/app/api/pxpipe/stats/route_client-reference-manifest.js +1 -1
  504. package/cli/app/.next-cli-build/server/app/api/pxpipe/status/route.js +2 -2
  505. package/cli/app/.next-cli-build/server/app/api/pxpipe/status/route.js.nft.json +1 -1
  506. package/cli/app/.next-cli-build/server/app/api/pxpipe/status/route_client-reference-manifest.js +1 -1
  507. package/cli/app/.next-cli-build/server/app/api/pxpipe/stop/route.js +2 -2
  508. package/cli/app/.next-cli-build/server/app/api/pxpipe/stop/route.js.nft.json +1 -1
  509. package/cli/app/.next-cli-build/server/app/api/pxpipe/stop/route_client-reference-manifest.js +1 -1
  510. package/cli/app/.next-cli-build/server/app/api/settings/database/route.js +1 -1
  511. package/cli/app/.next-cli-build/server/app/api/settings/database/route.js.nft.json +1 -1
  512. package/cli/app/.next-cli-build/server/app/api/settings/database/route_client-reference-manifest.js +1 -1
  513. package/cli/app/.next-cli-build/server/app/api/settings/proxy-test/route.js +1 -1
  514. package/cli/app/.next-cli-build/server/app/api/settings/proxy-test/route.js.nft.json +1 -1
  515. package/cli/app/.next-cli-build/server/app/api/settings/proxy-test/route_client-reference-manifest.js +1 -1
  516. package/cli/app/.next-cli-build/server/app/api/settings/require-login/route.js +1 -1
  517. package/cli/app/.next-cli-build/server/app/api/settings/require-login/route.js.nft.json +1 -1
  518. package/cli/app/.next-cli-build/server/app/api/settings/require-login/route_client-reference-manifest.js +1 -1
  519. package/cli/app/.next-cli-build/server/app/api/settings/route.js +1 -1
  520. package/cli/app/.next-cli-build/server/app/api/settings/route.js.nft.json +1 -1
  521. package/cli/app/.next-cli-build/server/app/api/settings/route_client-reference-manifest.js +1 -1
  522. package/cli/app/.next-cli-build/server/app/api/shutdown/route.js +1 -1
  523. package/cli/app/.next-cli-build/server/app/api/shutdown/route.js.nft.json +1 -1
  524. package/cli/app/.next-cli-build/server/app/api/shutdown/route_client-reference-manifest.js +1 -1
  525. package/cli/app/.next-cli-build/server/app/api/tags/route.js +1 -1
  526. package/cli/app/.next-cli-build/server/app/api/tags/route.js.nft.json +1 -1
  527. package/cli/app/.next-cli-build/server/app/api/tags/route_client-reference-manifest.js +1 -1
  528. package/cli/app/.next-cli-build/server/app/api/terminal/auth/setup/route.js +1 -1
  529. package/cli/app/.next-cli-build/server/app/api/terminal/auth/setup/route.js.nft.json +1 -1
  530. package/cli/app/.next-cli-build/server/app/api/terminal/auth/setup/route_client-reference-manifest.js +1 -1
  531. package/cli/app/.next-cli-build/server/app/api/terminal/auth/status/route.js +1 -1
  532. package/cli/app/.next-cli-build/server/app/api/terminal/auth/status/route.js.nft.json +1 -1
  533. package/cli/app/.next-cli-build/server/app/api/terminal/auth/status/route_client-reference-manifest.js +1 -1
  534. package/cli/app/.next-cli-build/server/app/api/terminal/auth/unlock/route.js +1 -1
  535. package/cli/app/.next-cli-build/server/app/api/terminal/auth/unlock/route.js.nft.json +1 -1
  536. package/cli/app/.next-cli-build/server/app/api/terminal/auth/unlock/route_client-reference-manifest.js +1 -1
  537. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/input/route.js +1 -1
  538. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/input/route.js.nft.json +1 -1
  539. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/input/route_client-reference-manifest.js +1 -1
  540. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/resize/route.js +1 -1
  541. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/resize/route.js.nft.json +1 -1
  542. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/resize/route_client-reference-manifest.js +1 -1
  543. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/route.js +1 -1
  544. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/route.js.nft.json +1 -1
  545. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/route_client-reference-manifest.js +1 -1
  546. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/stream/route.js +2 -2
  547. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/stream/route.js.nft.json +1 -1
  548. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/stream/route_client-reference-manifest.js +1 -1
  549. package/cli/app/.next-cli-build/server/app/api/terminal/session/route.js +1 -1
  550. package/cli/app/.next-cli-build/server/app/api/terminal/session/route.js.nft.json +1 -1
  551. package/cli/app/.next-cli-build/server/app/api/terminal/session/route_client-reference-manifest.js +1 -1
  552. package/cli/app/.next-cli-build/server/app/api/translator/console-logs/route.js +1 -1
  553. package/cli/app/.next-cli-build/server/app/api/translator/console-logs/route.js.nft.json +1 -1
  554. package/cli/app/.next-cli-build/server/app/api/translator/console-logs/route_client-reference-manifest.js +1 -1
  555. package/cli/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js +2 -2
  556. package/cli/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js.nft.json +1 -1
  557. package/cli/app/.next-cli-build/server/app/api/translator/console-logs/stream/route_client-reference-manifest.js +1 -1
  558. package/cli/app/.next-cli-build/server/app/api/translator/load/route.js +1 -1
  559. package/cli/app/.next-cli-build/server/app/api/translator/load/route.js.nft.json +1 -1
  560. package/cli/app/.next-cli-build/server/app/api/translator/load/route_client-reference-manifest.js +1 -1
  561. package/cli/app/.next-cli-build/server/app/api/translator/save/route.js +1 -1
  562. package/cli/app/.next-cli-build/server/app/api/translator/save/route.js.nft.json +1 -1
  563. package/cli/app/.next-cli-build/server/app/api/translator/save/route_client-reference-manifest.js +1 -1
  564. package/cli/app/.next-cli-build/server/app/api/translator/send/route.js +1 -1
  565. package/cli/app/.next-cli-build/server/app/api/translator/send/route.js.nft.json +1 -1
  566. package/cli/app/.next-cli-build/server/app/api/translator/send/route_client-reference-manifest.js +1 -1
  567. package/cli/app/.next-cli-build/server/app/api/translator/translate/route.js +1 -1
  568. package/cli/app/.next-cli-build/server/app/api/translator/translate/route.js.nft.json +1 -1
  569. package/cli/app/.next-cli-build/server/app/api/translator/translate/route_client-reference-manifest.js +1 -1
  570. package/cli/app/.next-cli-build/server/app/api/tunnel/disable/route.js +1 -1
  571. package/cli/app/.next-cli-build/server/app/api/tunnel/disable/route.js.nft.json +1 -1
  572. package/cli/app/.next-cli-build/server/app/api/tunnel/disable/route_client-reference-manifest.js +1 -1
  573. package/cli/app/.next-cli-build/server/app/api/tunnel/enable/route.js +1 -1
  574. package/cli/app/.next-cli-build/server/app/api/tunnel/enable/route.js.nft.json +1 -1
  575. package/cli/app/.next-cli-build/server/app/api/tunnel/enable/route_client-reference-manifest.js +1 -1
  576. package/cli/app/.next-cli-build/server/app/api/tunnel/status/route.js +1 -1
  577. package/cli/app/.next-cli-build/server/app/api/tunnel/status/route.js.nft.json +1 -1
  578. package/cli/app/.next-cli-build/server/app/api/tunnel/status/route_client-reference-manifest.js +1 -1
  579. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-check/route.js +1 -1
  580. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-check/route.js.nft.json +1 -1
  581. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-check/route_client-reference-manifest.js +1 -1
  582. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route.js +1 -1
  583. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route.js.nft.json +1 -1
  584. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route_client-reference-manifest.js +1 -1
  585. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route.js +1 -1
  586. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route.js.nft.json +1 -1
  587. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route_client-reference-manifest.js +1 -1
  588. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js +1 -1
  589. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js.nft.json +1 -1
  590. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route_client-reference-manifest.js +1 -1
  591. package/cli/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js +1 -1
  592. package/cli/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
  593. package/cli/app/.next-cli-build/server/app/api/usage/[connectionId]/route_client-reference-manifest.js +1 -1
  594. package/cli/app/.next-cli-build/server/app/api/usage/aggregate/route.js +1 -1
  595. package/cli/app/.next-cli-build/server/app/api/usage/aggregate/route.js.nft.json +1 -1
  596. package/cli/app/.next-cli-build/server/app/api/usage/aggregate/route_client-reference-manifest.js +1 -1
  597. package/cli/app/.next-cli-build/server/app/api/usage/chart/route.js +1 -1
  598. package/cli/app/.next-cli-build/server/app/api/usage/chart/route.js.nft.json +1 -1
  599. package/cli/app/.next-cli-build/server/app/api/usage/chart/route_client-reference-manifest.js +1 -1
  600. package/cli/app/.next-cli-build/server/app/api/usage/history/route.js +1 -1
  601. package/cli/app/.next-cli-build/server/app/api/usage/history/route.js.nft.json +1 -1
  602. package/cli/app/.next-cli-build/server/app/api/usage/history/route_client-reference-manifest.js +1 -1
  603. package/cli/app/.next-cli-build/server/app/api/usage/providers/route.js +1 -1
  604. package/cli/app/.next-cli-build/server/app/api/usage/providers/route.js.nft.json +1 -1
  605. package/cli/app/.next-cli-build/server/app/api/usage/providers/route_client-reference-manifest.js +1 -1
  606. package/cli/app/.next-cli-build/server/app/api/usage/request-details/route.js +1 -1
  607. package/cli/app/.next-cli-build/server/app/api/usage/request-details/route.js.nft.json +1 -1
  608. package/cli/app/.next-cli-build/server/app/api/usage/request-details/route_client-reference-manifest.js +1 -1
  609. package/cli/app/.next-cli-build/server/app/api/usage/request-logs/route.js +1 -1
  610. package/cli/app/.next-cli-build/server/app/api/usage/request-logs/route.js.nft.json +1 -1
  611. package/cli/app/.next-cli-build/server/app/api/usage/request-logs/route_client-reference-manifest.js +1 -1
  612. package/cli/app/.next-cli-build/server/app/api/usage/stats/route.js +1 -1
  613. package/cli/app/.next-cli-build/server/app/api/usage/stats/route.js.nft.json +1 -1
  614. package/cli/app/.next-cli-build/server/app/api/usage/stats/route_client-reference-manifest.js +1 -1
  615. package/cli/app/.next-cli-build/server/app/api/usage/stream/route.js +3 -5
  616. package/cli/app/.next-cli-build/server/app/api/usage/stream/route.js.nft.json +1 -1
  617. package/cli/app/.next-cli-build/server/app/api/usage/stream/route_client-reference-manifest.js +1 -1
  618. package/cli/app/.next-cli-build/server/app/api/v1/api/chat/route.js +1 -1
  619. package/cli/app/.next-cli-build/server/app/api/v1/api/chat/route.js.nft.json +1 -1
  620. package/cli/app/.next-cli-build/server/app/api/v1/api/chat/route_client-reference-manifest.js +1 -1
  621. package/cli/app/.next-cli-build/server/app/api/v1/audio/speech/route.js +1 -1
  622. package/cli/app/.next-cli-build/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
  623. package/cli/app/.next-cli-build/server/app/api/v1/audio/speech/route_client-reference-manifest.js +1 -1
  624. package/cli/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js +1 -1
  625. package/cli/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
  626. package/cli/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route_client-reference-manifest.js +1 -1
  627. package/cli/app/.next-cli-build/server/app/api/v1/audio/voices/route.js +1 -1
  628. package/cli/app/.next-cli-build/server/app/api/v1/audio/voices/route.js.nft.json +1 -1
  629. package/cli/app/.next-cli-build/server/app/api/v1/audio/voices/route_client-reference-manifest.js +1 -1
  630. package/cli/app/.next-cli-build/server/app/api/v1/chat/completions/route.js +1 -1
  631. package/cli/app/.next-cli-build/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
  632. package/cli/app/.next-cli-build/server/app/api/v1/chat/completions/route_client-reference-manifest.js +1 -1
  633. package/cli/app/.next-cli-build/server/app/api/v1/embeddings/route.js +1 -1
  634. package/cli/app/.next-cli-build/server/app/api/v1/embeddings/route.js.nft.json +1 -1
  635. package/cli/app/.next-cli-build/server/app/api/v1/embeddings/route_client-reference-manifest.js +1 -1
  636. package/cli/app/.next-cli-build/server/app/api/v1/images/generations/route.js +1 -4
  637. package/cli/app/.next-cli-build/server/app/api/v1/images/generations/route.js.nft.json +1 -1
  638. package/cli/app/.next-cli-build/server/app/api/v1/images/generations/route_client-reference-manifest.js +1 -1
  639. package/cli/app/.next-cli-build/server/app/api/v1/messages/count_tokens/route.js +1 -1
  640. package/cli/app/.next-cli-build/server/app/api/v1/messages/count_tokens/route.js.nft.json +1 -1
  641. package/cli/app/.next-cli-build/server/app/api/v1/messages/count_tokens/route_client-reference-manifest.js +1 -1
  642. package/cli/app/.next-cli-build/server/app/api/v1/messages/route.js +1 -1
  643. package/cli/app/.next-cli-build/server/app/api/v1/messages/route.js.nft.json +1 -1
  644. package/cli/app/.next-cli-build/server/app/api/v1/messages/route_client-reference-manifest.js +1 -1
  645. package/cli/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js +1 -1
  646. package/cli/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js.nft.json +1 -1
  647. package/cli/app/.next-cli-build/server/app/api/v1/models/[kind]/route_client-reference-manifest.js +1 -1
  648. package/cli/app/.next-cli-build/server/app/api/v1/models/info/route.js +1 -1
  649. package/cli/app/.next-cli-build/server/app/api/v1/models/info/route.js.nft.json +1 -1
  650. package/cli/app/.next-cli-build/server/app/api/v1/models/info/route_client-reference-manifest.js +1 -1
  651. package/cli/app/.next-cli-build/server/app/api/v1/models/route.js +1 -1
  652. package/cli/app/.next-cli-build/server/app/api/v1/models/route.js.nft.json +1 -1
  653. package/cli/app/.next-cli-build/server/app/api/v1/models/route_client-reference-manifest.js +1 -1
  654. package/cli/app/.next-cli-build/server/app/api/v1/responses/compact/route.js +1 -1
  655. package/cli/app/.next-cli-build/server/app/api/v1/responses/compact/route.js.nft.json +1 -1
  656. package/cli/app/.next-cli-build/server/app/api/v1/responses/compact/route_client-reference-manifest.js +1 -1
  657. package/cli/app/.next-cli-build/server/app/api/v1/responses/route.js +1 -1
  658. package/cli/app/.next-cli-build/server/app/api/v1/responses/route.js.nft.json +1 -1
  659. package/cli/app/.next-cli-build/server/app/api/v1/responses/route_client-reference-manifest.js +1 -1
  660. package/cli/app/.next-cli-build/server/app/api/v1/route.js +1 -1
  661. package/cli/app/.next-cli-build/server/app/api/v1/route.js.nft.json +1 -1
  662. package/cli/app/.next-cli-build/server/app/api/v1/route_client-reference-manifest.js +1 -1
  663. package/cli/app/.next-cli-build/server/app/api/v1/search/route.js +1 -1
  664. package/cli/app/.next-cli-build/server/app/api/v1/search/route.js.nft.json +1 -1
  665. package/cli/app/.next-cli-build/server/app/api/v1/search/route_client-reference-manifest.js +1 -1
  666. package/cli/app/.next-cli-build/server/app/api/v1/web/fetch/route.js +1 -1
  667. package/cli/app/.next-cli-build/server/app/api/v1/web/fetch/route.js.nft.json +1 -1
  668. package/cli/app/.next-cli-build/server/app/api/v1/web/fetch/route_client-reference-manifest.js +1 -1
  669. package/cli/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js +1 -1
  670. package/cli/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
  671. package/cli/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route_client-reference-manifest.js +1 -1
  672. package/cli/app/.next-cli-build/server/app/api/v1beta/models/route.js +1 -1
  673. package/cli/app/.next-cli-build/server/app/api/v1beta/models/route.js.nft.json +1 -1
  674. package/cli/app/.next-cli-build/server/app/api/v1beta/models/route_client-reference-manifest.js +1 -1
  675. package/cli/app/.next-cli-build/server/app/api/version/route.js +1 -1
  676. package/cli/app/.next-cli-build/server/app/api/version/route.js.nft.json +1 -1
  677. package/cli/app/.next-cli-build/server/app/api/version/route_client-reference-manifest.js +1 -1
  678. package/cli/app/.next-cli-build/server/app/api/version/shutdown/route.js +1 -1
  679. package/cli/app/.next-cli-build/server/app/api/version/shutdown/route.js.nft.json +1 -1
  680. package/cli/app/.next-cli-build/server/app/api/version/shutdown/route_client-reference-manifest.js +1 -1
  681. package/cli/app/.next-cli-build/server/app/api/version/update/route.js +1 -1
  682. package/cli/app/.next-cli-build/server/app/api/version/update/route.js.nft.json +1 -1
  683. package/cli/app/.next-cli-build/server/app/api/version/update/route_client-reference-manifest.js +1 -1
  684. package/cli/app/.next-cli-build/server/app/callback/page.js +2 -2
  685. package/cli/app/.next-cli-build/server/app/callback/page.js.nft.json +1 -1
  686. package/cli/app/.next-cli-build/server/app/callback/page_client-reference-manifest.js +1 -1
  687. package/cli/app/.next-cli-build/server/app/callback.html +1 -1
  688. package/cli/app/.next-cli-build/server/app/callback.rsc +3 -3
  689. package/cli/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +3 -3
  690. package/cli/app/.next-cli-build/server/app/callback.segments/_head.segment.rsc +1 -1
  691. package/cli/app/.next-cli-build/server/app/callback.segments/_index.segment.rsc +3 -3
  692. package/cli/app/.next-cli-build/server/app/callback.segments/_tree.segment.rsc +1 -1
  693. package/cli/app/.next-cli-build/server/app/callback.segments/callback/__PAGE__.segment.rsc +1 -1
  694. package/cli/app/.next-cli-build/server/app/callback.segments/callback.segment.rsc +1 -1
  695. package/cli/app/.next-cli-build/server/app/dashboard/automation.html +1 -1
  696. package/cli/app/.next-cli-build/server/app/dashboard/automation.rsc +5 -5
  697. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk/dashboard/automation/__PAGE__.segment.rsc +2 -2
  698. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk/dashboard/automation.segment.rsc +1 -1
  699. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  700. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  701. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_full.segment.rsc +5 -5
  702. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_head.segment.rsc +1 -1
  703. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_index.segment.rsc +3 -3
  704. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_tree.segment.rsc +1 -1
  705. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.html +1 -1
  706. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.rsc +5 -5
  707. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +2 -2
  708. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat.segment.rsc +1 -1
  709. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  710. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  711. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_full.segment.rsc +5 -5
  712. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_head.segment.rsc +1 -1
  713. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_index.segment.rsc +3 -3
  714. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +1 -1
  715. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.html +1 -1
  716. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.rsc +5 -5
  717. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +2 -2
  718. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools.segment.rsc +1 -1
  719. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  720. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  721. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_full.segment.rsc +5 -5
  722. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_head.segment.rsc +1 -1
  723. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_index.segment.rsc +3 -3
  724. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +1 -1
  725. package/cli/app/.next-cli-build/server/app/dashboard/combos.html +1 -1
  726. package/cli/app/.next-cli-build/server/app/dashboard/combos.rsc +5 -5
  727. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +2 -2
  728. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos.segment.rsc +1 -1
  729. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  730. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  731. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_full.segment.rsc +5 -5
  732. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_head.segment.rsc +1 -1
  733. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_index.segment.rsc +3 -3
  734. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_tree.segment.rsc +1 -1
  735. package/cli/app/.next-cli-build/server/app/dashboard/context.html +1 -1
  736. package/cli/app/.next-cli-build/server/app/dashboard/context.rsc +5 -5
  737. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/!KGRhc2hib2FyZCk/dashboard/context/__PAGE__.segment.rsc +2 -2
  738. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/!KGRhc2hib2FyZCk/dashboard/context.segment.rsc +1 -1
  739. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  740. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  741. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_full.segment.rsc +5 -5
  742. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_head.segment.rsc +1 -1
  743. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_index.segment.rsc +3 -3
  744. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_tree.segment.rsc +1 -1
  745. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.html +1 -1
  746. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.rsc +5 -5
  747. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +2 -2
  748. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint.segment.rsc +1 -1
  749. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  750. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  751. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_full.segment.rsc +5 -5
  752. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_head.segment.rsc +1 -1
  753. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_index.segment.rsc +3 -3
  754. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_tree.segment.rsc +1 -1
  755. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.html +1 -1
  756. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.rsc +5 -5
  757. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web/__PAGE__.segment.rsc +2 -2
  758. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web.segment.rsc +1 -1
  759. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers.segment.rsc +1 -1
  760. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  761. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  762. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_full.segment.rsc +5 -5
  763. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_head.segment.rsc +1 -1
  764. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_index.segment.rsc +3 -3
  765. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_tree.segment.rsc +1 -1
  766. package/cli/app/.next-cli-build/server/app/dashboard/mitm.html +1 -1
  767. package/cli/app/.next-cli-build/server/app/dashboard/mitm.rsc +5 -5
  768. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +2 -2
  769. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm.segment.rsc +1 -1
  770. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  771. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  772. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_full.segment.rsc +5 -5
  773. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_head.segment.rsc +1 -1
  774. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_index.segment.rsc +3 -3
  775. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_tree.segment.rsc +1 -1
  776. package/cli/app/.next-cli-build/server/app/dashboard/playground.html +1 -1
  777. package/cli/app/.next-cli-build/server/app/dashboard/playground.rsc +5 -5
  778. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk/dashboard/playground/__PAGE__.segment.rsc +2 -2
  779. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk/dashboard/playground.segment.rsc +1 -1
  780. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  781. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  782. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_full.segment.rsc +5 -5
  783. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_head.segment.rsc +1 -1
  784. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_index.segment.rsc +3 -3
  785. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_tree.segment.rsc +1 -1
  786. package/cli/app/.next-cli-build/server/app/dashboard/profile.html +1 -1
  787. package/cli/app/.next-cli-build/server/app/dashboard/profile.rsc +5 -5
  788. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +2 -2
  789. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile.segment.rsc +1 -1
  790. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  791. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  792. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_full.segment.rsc +5 -5
  793. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_head.segment.rsc +1 -1
  794. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_index.segment.rsc +3 -3
  795. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_tree.segment.rsc +1 -1
  796. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.html +1 -1
  797. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.rsc +5 -5
  798. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +2 -2
  799. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new.segment.rsc +1 -1
  800. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  801. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  802. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  803. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_full.segment.rsc +5 -5
  804. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_head.segment.rsc +1 -1
  805. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_index.segment.rsc +3 -3
  806. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_tree.segment.rsc +1 -1
  807. package/cli/app/.next-cli-build/server/app/dashboard/providers.html +1 -1
  808. package/cli/app/.next-cli-build/server/app/dashboard/providers.rsc +5 -5
  809. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +2 -2
  810. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  811. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  812. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  813. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_full.segment.rsc +5 -5
  814. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_head.segment.rsc +1 -1
  815. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_index.segment.rsc +3 -3
  816. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_tree.segment.rsc +1 -1
  817. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.html +1 -1
  818. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.rsc +5 -5
  819. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +2 -2
  820. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools.segment.rsc +1 -1
  821. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  822. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  823. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +5 -5
  824. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_head.segment.rsc +1 -1
  825. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_index.segment.rsc +3 -3
  826. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +1 -1
  827. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.html +1 -1
  828. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.rsc +5 -5
  829. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard/pxpipe/__PAGE__.segment.rsc +2 -2
  830. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard/pxpipe.segment.rsc +1 -1
  831. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  832. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  833. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_full.segment.rsc +5 -5
  834. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_head.segment.rsc +1 -1
  835. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_index.segment.rsc +3 -3
  836. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_tree.segment.rsc +1 -1
  837. package/cli/app/.next-cli-build/server/app/dashboard/quota.html +2 -2
  838. package/cli/app/.next-cli-build/server/app/dashboard/quota.rsc +6 -6
  839. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +3 -3
  840. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota.segment.rsc +1 -1
  841. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  842. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  843. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_full.segment.rsc +6 -6
  844. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_head.segment.rsc +1 -1
  845. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_index.segment.rsc +3 -3
  846. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_tree.segment.rsc +1 -1
  847. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing/page.js +2 -2
  848. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing/page.js.nft.json +1 -1
  849. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  850. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.html +1 -1
  851. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.rsc +3 -3
  852. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +3 -3
  853. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +1 -1
  854. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +3 -3
  855. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +1 -1
  856. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +1 -1
  857. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing.segment.rsc +1 -1
  858. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings.segment.rsc +1 -1
  859. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard.segment.rsc +1 -1
  860. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.html +1 -1
  861. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.rsc +5 -5
  862. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver/__PAGE__.segment.rsc +2 -2
  863. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver.segment.rsc +1 -1
  864. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  865. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  866. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_full.segment.rsc +5 -5
  867. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_head.segment.rsc +1 -1
  868. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_index.segment.rsc +3 -3
  869. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_tree.segment.rsc +1 -1
  870. package/cli/app/.next-cli-build/server/app/dashboard/translator.html +1 -1
  871. package/cli/app/.next-cli-build/server/app/dashboard/translator.rsc +5 -5
  872. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +2 -2
  873. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator.segment.rsc +1 -1
  874. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  875. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  876. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_full.segment.rsc +5 -5
  877. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_head.segment.rsc +1 -1
  878. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_index.segment.rsc +3 -3
  879. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_tree.segment.rsc +1 -1
  880. package/cli/app/.next-cli-build/server/app/dashboard/usage.html +1 -1
  881. package/cli/app/.next-cli-build/server/app/dashboard/usage.rsc +5 -5
  882. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +2 -2
  883. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage.segment.rsc +1 -1
  884. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  885. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  886. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_full.segment.rsc +5 -5
  887. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_head.segment.rsc +1 -1
  888. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_index.segment.rsc +3 -3
  889. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_tree.segment.rsc +1 -1
  890. package/cli/app/.next-cli-build/server/app/dashboard.html +1 -1
  891. package/cli/app/.next-cli-build/server/app/dashboard.rsc +5 -5
  892. package/cli/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +2 -2
  893. package/cli/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  894. package/cli/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  895. package/cli/app/.next-cli-build/server/app/dashboard.segments/_full.segment.rsc +5 -5
  896. package/cli/app/.next-cli-build/server/app/dashboard.segments/_head.segment.rsc +1 -1
  897. package/cli/app/.next-cli-build/server/app/dashboard.segments/_index.segment.rsc +3 -3
  898. package/cli/app/.next-cli-build/server/app/dashboard.segments/_tree.segment.rsc +1 -1
  899. package/cli/app/.next-cli-build/server/app/index.html +1 -1
  900. package/cli/app/.next-cli-build/server/app/index.rsc +3 -3
  901. package/cli/app/.next-cli-build/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  902. package/cli/app/.next-cli-build/server/app/index.segments/_full.segment.rsc +3 -3
  903. package/cli/app/.next-cli-build/server/app/index.segments/_head.segment.rsc +1 -1
  904. package/cli/app/.next-cli-build/server/app/index.segments/_index.segment.rsc +3 -3
  905. package/cli/app/.next-cli-build/server/app/index.segments/_tree.segment.rsc +1 -1
  906. package/cli/app/.next-cli-build/server/app/landing/page.js +2 -2
  907. package/cli/app/.next-cli-build/server/app/landing/page.js.nft.json +1 -1
  908. package/cli/app/.next-cli-build/server/app/landing/page_client-reference-manifest.js +1 -1
  909. package/cli/app/.next-cli-build/server/app/landing.html +1 -1
  910. package/cli/app/.next-cli-build/server/app/landing.rsc +4 -4
  911. package/cli/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +4 -4
  912. package/cli/app/.next-cli-build/server/app/landing.segments/_head.segment.rsc +1 -1
  913. package/cli/app/.next-cli-build/server/app/landing.segments/_index.segment.rsc +3 -3
  914. package/cli/app/.next-cli-build/server/app/landing.segments/_tree.segment.rsc +1 -1
  915. package/cli/app/.next-cli-build/server/app/landing.segments/landing/__PAGE__.segment.rsc +2 -2
  916. package/cli/app/.next-cli-build/server/app/landing.segments/landing.segment.rsc +1 -1
  917. package/cli/app/.next-cli-build/server/app/login/page.js +2 -2
  918. package/cli/app/.next-cli-build/server/app/login/page.js.nft.json +1 -1
  919. package/cli/app/.next-cli-build/server/app/login/page_client-reference-manifest.js +1 -1
  920. package/cli/app/.next-cli-build/server/app/login.html +1 -1
  921. package/cli/app/.next-cli-build/server/app/login.rsc +4 -4
  922. package/cli/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +4 -4
  923. package/cli/app/.next-cli-build/server/app/login.segments/_head.segment.rsc +1 -1
  924. package/cli/app/.next-cli-build/server/app/login.segments/_index.segment.rsc +3 -3
  925. package/cli/app/.next-cli-build/server/app/login.segments/_tree.segment.rsc +1 -1
  926. package/cli/app/.next-cli-build/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
  927. package/cli/app/.next-cli-build/server/app/login.segments/login.segment.rsc +1 -1
  928. package/cli/app/.next-cli-build/server/app/manifest.webmanifest/route.js +2 -2
  929. package/cli/app/.next-cli-build/server/app/manifest.webmanifest/route.js.nft.json +1 -1
  930. package/cli/app/.next-cli-build/server/app/manifest.webmanifest/route_client-reference-manifest.js +1 -1
  931. package/cli/app/.next-cli-build/server/app/page.js +2 -2
  932. package/cli/app/.next-cli-build/server/app/page.js.nft.json +1 -1
  933. package/cli/app/.next-cli-build/server/app/page_client-reference-manifest.js +1 -1
  934. package/cli/app/.next-cli-build/server/app-paths-manifest.json +13 -11
  935. package/cli/app/.next-cli-build/server/chunks/1188.js +1 -1
  936. package/cli/app/.next-cli-build/server/chunks/2030.js +1 -1
  937. package/cli/app/.next-cli-build/server/chunks/2557.js +1 -0
  938. package/cli/app/.next-cli-build/server/chunks/2732.js +1 -1
  939. package/cli/app/.next-cli-build/server/chunks/3104.js +1 -1
  940. package/cli/app/.next-cli-build/server/chunks/3110.js +9 -8
  941. package/cli/app/.next-cli-build/server/chunks/3155.js +1 -1
  942. package/cli/app/.next-cli-build/server/chunks/318.js +11 -9
  943. package/cli/app/.next-cli-build/server/chunks/319.js +3 -3
  944. package/cli/app/.next-cli-build/server/chunks/3579.js +1 -1
  945. package/cli/app/.next-cli-build/server/chunks/3593.js +1 -1
  946. package/cli/app/.next-cli-build/server/chunks/412.js +2 -2
  947. package/cli/app/.next-cli-build/server/chunks/4229.js +1 -1
  948. package/cli/app/.next-cli-build/server/chunks/4404.js +1 -1
  949. package/cli/app/.next-cli-build/server/chunks/4470.js +1 -1
  950. package/cli/app/.next-cli-build/server/chunks/4566.js +1 -1
  951. package/cli/app/.next-cli-build/server/chunks/4632.js +1 -1
  952. package/cli/app/.next-cli-build/server/chunks/4650.js +1 -1
  953. package/cli/app/.next-cli-build/server/chunks/4720.js +1 -1
  954. package/cli/app/.next-cli-build/server/chunks/4739.js +1 -1
  955. package/cli/app/.next-cli-build/server/chunks/4746.js +1 -1
  956. package/cli/app/.next-cli-build/server/chunks/4780.js +1 -1
  957. package/cli/app/.next-cli-build/server/chunks/507.js +1 -1
  958. package/cli/app/.next-cli-build/server/chunks/5236.js +1 -1
  959. package/cli/app/.next-cli-build/server/chunks/5258.js +1 -1
  960. package/cli/app/.next-cli-build/server/chunks/5307.js +1 -1
  961. package/cli/app/.next-cli-build/server/chunks/5436.js +4 -0
  962. package/cli/app/.next-cli-build/server/chunks/5469.js +1 -1
  963. package/cli/app/.next-cli-build/server/chunks/5949.js +13 -12
  964. package/cli/app/.next-cli-build/server/chunks/6036.js +1 -1
  965. package/cli/app/.next-cli-build/server/chunks/698.js +1 -1
  966. package/cli/app/.next-cli-build/server/chunks/7239.js +1 -1
  967. package/cli/app/.next-cli-build/server/chunks/7965.js +1 -1
  968. package/cli/app/.next-cli-build/server/chunks/8028.js +1 -0
  969. package/cli/app/.next-cli-build/server/chunks/8242.js +1 -1
  970. package/cli/app/.next-cli-build/server/chunks/8255.js +1 -1
  971. package/cli/app/.next-cli-build/server/chunks/8306.js +1 -1
  972. package/cli/app/.next-cli-build/server/chunks/8371.js +1 -1
  973. package/cli/app/.next-cli-build/server/chunks/8520.js +1 -1
  974. package/cli/app/.next-cli-build/server/chunks/877.js +24 -0
  975. package/cli/app/.next-cli-build/server/chunks/8895.js +7 -7
  976. package/cli/app/.next-cli-build/server/chunks/891.js +1 -1
  977. package/cli/app/.next-cli-build/server/chunks/9372.js +1 -1
  978. package/cli/app/.next-cli-build/server/chunks/9489.js +1 -1
  979. package/cli/app/.next-cli-build/server/chunks/9621.js +1 -1
  980. package/cli/app/.next-cli-build/server/functions-config-manifest.json +4 -0
  981. package/cli/app/.next-cli-build/server/middleware-build-manifest.js +1 -1
  982. package/cli/app/.next-cli-build/server/middleware.js +4 -4
  983. package/cli/app/.next-cli-build/server/next-font-manifest.js +1 -1
  984. package/cli/app/.next-cli-build/server/next-font-manifest.json +1 -1
  985. package/cli/app/.next-cli-build/server/pages/404.html +1 -1
  986. package/cli/app/.next-cli-build/server/pages/500.html +1 -1
  987. package/cli/app/.next-cli-build/static/chunks/5497-f1e851d6feffa7c0.js +7 -0
  988. package/cli/app/.next-cli-build/static/chunks/620-90911eeb765ca4bd.js +1 -0
  989. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/cli-tools/[toolId]/page-da4bf4d40037f090.js +1 -0
  990. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/cli-tools/page-19f56d717383fbf9.js +1 -0
  991. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page-59c81d5cf13456ba.js +59 -0
  992. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/media-providers/combo/[id]/page-4c46f9cac4765fc5.js +4 -0
  993. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/mitm/page-57c4b3a5e8b61f18.js +1 -0
  994. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/profile/page-bdcc38dc8f8c5619.js +1 -0
  995. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-b4f4b88642bbe60d.js +3 -0
  996. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/proxy-pools/page-16d3736170202fcd.js +4 -0
  997. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/quota/page-3e2009fdd918191b.js +1 -0
  998. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/usage/page-6062386d726c38dd.js +1 -0
  999. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/layout-203b0a53f7406968.js +1 -0
  1000. package/cli/app/.next-cli-build/static/chunks/app/_global-error/page-f29633932d5ddd5a.js +1 -0
  1001. package/cli/app/.next-cli-build/static/chunks/app/api/auth/login/route-f29633932d5ddd5a.js +1 -0
  1002. package/cli/app/.next-cli-build/static/chunks/app/api/auth/logout/route-f29633932d5ddd5a.js +1 -0
  1003. package/cli/app/.next-cli-build/static/chunks/app/api/auth/oidc/callback/route-f29633932d5ddd5a.js +1 -0
  1004. package/cli/app/.next-cli-build/static/chunks/app/api/auth/oidc/start/route-f29633932d5ddd5a.js +1 -0
  1005. package/cli/app/.next-cli-build/static/chunks/app/api/auth/oidc/test/route-f29633932d5ddd5a.js +1 -0
  1006. package/cli/app/.next-cli-build/static/chunks/app/api/auth/status/route-f29633932d5ddd5a.js +1 -0
  1007. package/cli/app/.next-cli-build/static/chunks/app/api/cache/stats/route-f29633932d5ddd5a.js +1 -0
  1008. package/cli/app/.next-cli-build/static/chunks/app/api/changelog/route-f29633932d5ddd5a.js +1 -0
  1009. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/all-statuses/route-f29633932d5ddd5a.js +1 -0
  1010. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-f29633932d5ddd5a.js +1 -0
  1011. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/route-f29633932d5ddd5a.js +1 -0
  1012. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/claude-settings/route-f29633932d5ddd5a.js +1 -0
  1013. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/cline-settings/route-f29633932d5ddd5a.js +1 -0
  1014. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/codex-gateway/accounts/route-f29633932d5ddd5a.js +1 -0
  1015. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/codex-settings/route-f29633932d5ddd5a.js +1 -0
  1016. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/copilot-settings/route-f29633932d5ddd5a.js +1 -0
  1017. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-registry/route-f29633932d5ddd5a.js +1 -0
  1018. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-tools/route-f29633932d5ddd5a.js +1 -0
  1019. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-settings/route-f29633932d5ddd5a.js +1 -0
  1020. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/deepseek-tui-settings/route-f29633932d5ddd5a.js +1 -0
  1021. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/droid-settings/route-f29633932d5ddd5a.js +1 -0
  1022. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/hermes-settings/route-f29633932d5ddd5a.js +1 -0
  1023. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/jcode-settings/route-f29633932d5ddd5a.js +1 -0
  1024. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/kilo-settings/route-f29633932d5ddd5a.js +1 -0
  1025. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/openclaw-settings/route-f29633932d5ddd5a.js +1 -0
  1026. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/opencode-settings/route-f29633932d5ddd5a.js +1 -0
  1027. package/cli/app/.next-cli-build/static/chunks/app/api/combos/[id]/route-f29633932d5ddd5a.js +1 -0
  1028. package/cli/app/.next-cli-build/static/chunks/app/api/combos/route-f29633932d5ddd5a.js +1 -0
  1029. package/cli/app/.next-cli-build/static/chunks/app/api/context/[id]/route-f29633932d5ddd5a.js +1 -0
  1030. package/cli/app/.next-cli-build/static/chunks/app/api/context/bulk/route-f29633932d5ddd5a.js +1 -0
  1031. package/cli/app/.next-cli-build/static/chunks/app/api/context/route-f29633932d5ddd5a.js +1 -0
  1032. package/cli/app/.next-cli-build/static/chunks/app/api/dashboard/chat/completions/route-f29633932d5ddd5a.js +1 -0
  1033. package/cli/app/.next-cli-build/static/chunks/app/api/dashboard/cli-tools/keys/route-f29633932d5ddd5a.js +1 -0
  1034. package/cli/app/.next-cli-build/static/chunks/app/api/dashboard/media/[operation]/route-f29633932d5ddd5a.js +1 -0
  1035. package/cli/app/.next-cli-build/static/chunks/app/api/headroom/extras/route-f29633932d5ddd5a.js +1 -0
  1036. package/cli/app/.next-cli-build/static/chunks/app/api/headroom/proxy/[...path]/route-f29633932d5ddd5a.js +1 -0
  1037. package/cli/app/.next-cli-build/static/chunks/app/api/headroom/restart/route-f29633932d5ddd5a.js +1 -0
  1038. package/cli/app/.next-cli-build/static/chunks/app/api/headroom/start/route-f29633932d5ddd5a.js +1 -0
  1039. package/cli/app/.next-cli-build/static/chunks/app/api/headroom/status/route-f29633932d5ddd5a.js +1 -0
  1040. package/cli/app/.next-cli-build/static/chunks/app/api/headroom/stop/route-f29633932d5ddd5a.js +1 -0
  1041. package/cli/app/.next-cli-build/static/chunks/app/api/health/ready/route-f29633932d5ddd5a.js +1 -0
  1042. package/cli/app/.next-cli-build/static/chunks/app/api/health/route-f29633932d5ddd5a.js +1 -0
  1043. package/cli/app/.next-cli-build/static/chunks/app/api/init/route-f29633932d5ddd5a.js +1 -0
  1044. package/cli/app/.next-cli-build/static/chunks/app/api/keys/[id]/rotate/route-f29633932d5ddd5a.js +1 -0
  1045. package/cli/app/.next-cli-build/static/chunks/app/api/keys/[id]/route-f29633932d5ddd5a.js +1 -0
  1046. package/cli/app/.next-cli-build/static/chunks/app/api/keys/route-f29633932d5ddd5a.js +1 -0
  1047. package/cli/app/.next-cli-build/static/chunks/app/api/locale/route-f29633932d5ddd5a.js +1 -0
  1048. package/cli/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/message/route-f29633932d5ddd5a.js +1 -0
  1049. package/cli/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/sse/route-f29633932d5ddd5a.js +1 -0
  1050. package/cli/app/.next-cli-build/static/chunks/app/api/media-providers/tts/deepgram/voices/route-f29633932d5ddd5a.js +1 -0
  1051. package/cli/app/.next-cli-build/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-f29633932d5ddd5a.js +1 -0
  1052. package/cli/app/.next-cli-build/static/chunks/app/api/media-providers/tts/inworld/voices/route-f29633932d5ddd5a.js +1 -0
  1053. package/cli/app/.next-cli-build/static/chunks/app/api/media-providers/tts/minimax/voices/route-f29633932d5ddd5a.js +1 -0
  1054. package/cli/app/.next-cli-build/static/chunks/app/api/media-providers/tts/voices/route-f29633932d5ddd5a.js +1 -0
  1055. package/cli/app/.next-cli-build/static/chunks/app/api/metrics/route-f29633932d5ddd5a.js +1 -0
  1056. package/cli/app/.next-cli-build/static/chunks/app/api/models/alias/route-f29633932d5ddd5a.js +1 -0
  1057. package/cli/app/.next-cli-build/static/chunks/app/api/models/availability/route-f29633932d5ddd5a.js +1 -0
  1058. package/cli/app/.next-cli-build/static/chunks/app/api/models/custom/route-f29633932d5ddd5a.js +1 -0
  1059. package/cli/app/.next-cli-build/static/chunks/app/api/models/disabled/route-f29633932d5ddd5a.js +1 -0
  1060. package/cli/app/.next-cli-build/static/chunks/app/api/models/route-f29633932d5ddd5a.js +1 -0
  1061. package/cli/app/.next-cli-build/static/chunks/app/api/models/test/route-f29633932d5ddd5a.js +1 -0
  1062. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/[provider]/[action]/route-f29633932d5ddd5a.js +1 -0
  1063. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/antigravity/bulk-import/[jobId]/cancel/route-f29633932d5ddd5a.js +1 -0
  1064. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/antigravity/bulk-import/[jobId]/manual/[workerId]/route-f29633932d5ddd5a.js +1 -0
  1065. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/antigravity/bulk-import/[jobId]/route-f29633932d5ddd5a.js +1 -0
  1066. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/antigravity/bulk-import/latest/route-f29633932d5ddd5a.js +1 -0
  1067. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/antigravity/bulk-import/route-f29633932d5ddd5a.js +1 -0
  1068. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/cancel/route-f29633932d5ddd5a.js +1 -0
  1069. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/manual/[workerId]/route-f29633932d5ddd5a.js +1 -0
  1070. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/route-f29633932d5ddd5a.js +1 -0
  1071. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cloudflare-ai/bulk-import/latest/route-f29633932d5ddd5a.js +1 -0
  1072. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cloudflare-ai/bulk-import/route-f29633932d5ddd5a.js +1 -0
  1073. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/bulk-import/[jobId]/cancel/route-f29633932d5ddd5a.js +1 -0
  1074. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/bulk-import/[jobId]/manual/[workerId]/route-f29633932d5ddd5a.js +1 -0
  1075. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/bulk-import/[jobId]/route-f29633932d5ddd5a.js +1 -0
  1076. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/bulk-import/latest/route-f29633932d5ddd5a.js +1 -0
  1077. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/bulk-import/route-f29633932d5ddd5a.js +1 -0
  1078. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/bulk-token/route-f29633932d5ddd5a.js +1 -0
  1079. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/quota-cookie/route-f29633932d5ddd5a.js +1 -0
  1080. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/cancel/route-f29633932d5ddd5a.js +1 -0
  1081. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/manual/[workerId]/route-f29633932d5ddd5a.js +1 -0
  1082. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/route-f29633932d5ddd5a.js +1 -0
  1083. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-import/latest/route-f29633932d5ddd5a.js +1 -0
  1084. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-import/route-f29633932d5ddd5a.js +1 -0
  1085. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-token/route-f29633932d5ddd5a.js +1 -0
  1086. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/quota-cookie/route-f29633932d5ddd5a.js +1 -0
  1087. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codex/import-token/route-f29633932d5ddd5a.js +1 -0
  1088. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cursor/auto-import/route-f29633932d5ddd5a.js +1 -0
  1089. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cursor/import/route-f29633932d5ddd5a.js +1 -0
  1090. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/gitlab/pat/route-f29633932d5ddd5a.js +1 -0
  1091. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/iflow/cookie/route-f29633932d5ddd5a.js +1 -0
  1092. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/auto-import/route-f29633932d5ddd5a.js +1 -0
  1093. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/bulk-import/[jobId]/cancel/route-f29633932d5ddd5a.js +1 -0
  1094. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/bulk-import/[jobId]/manual/[workerId]/route-f29633932d5ddd5a.js +1 -0
  1095. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/bulk-import/[jobId]/route-f29633932d5ddd5a.js +1 -0
  1096. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/bulk-import/latest/route-f29633932d5ddd5a.js +1 -0
  1097. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/bulk-import/route-f29633932d5ddd5a.js +1 -0
  1098. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/import/route-f29633932d5ddd5a.js +1 -0
  1099. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-authorize/route-f29633932d5ddd5a.js +1 -0
  1100. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-exchange/route-f29633932d5ddd5a.js +1 -0
  1101. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/qoder/bulk-import/[jobId]/cancel/route-f29633932d5ddd5a.js +1 -0
  1102. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/qoder/bulk-import/[jobId]/manual/[workerId]/route-f29633932d5ddd5a.js +1 -0
  1103. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/qoder/bulk-import/[jobId]/route-f29633932d5ddd5a.js +1 -0
  1104. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/qoder/bulk-import/latest/route-f29633932d5ddd5a.js +1 -0
  1105. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/qoder/bulk-import/route-f29633932d5ddd5a.js +1 -0
  1106. package/cli/app/.next-cli-build/static/chunks/app/api/pricing/route-f29633932d5ddd5a.js +1 -0
  1107. package/cli/app/.next-cli-build/static/chunks/app/api/provider-nodes/[id]/route-f29633932d5ddd5a.js +1 -0
  1108. package/cli/app/.next-cli-build/static/chunks/app/api/provider-nodes/route-f29633932d5ddd5a.js +1 -0
  1109. package/cli/app/.next-cli-build/static/chunks/app/api/provider-nodes/validate/route-f29633932d5ddd5a.js +1 -0
  1110. package/cli/app/.next-cli-build/static/chunks/app/api/providers/[id]/models/route-f29633932d5ddd5a.js +1 -0
  1111. package/cli/app/.next-cli-build/static/chunks/app/api/providers/[id]/route-f29633932d5ddd5a.js +1 -0
  1112. package/cli/app/.next-cli-build/static/chunks/app/api/providers/[id]/test/route-f29633932d5ddd5a.js +1 -0
  1113. package/cli/app/.next-cli-build/static/chunks/app/api/providers/[id]/test-models/route-f29633932d5ddd5a.js +1 -0
  1114. package/cli/app/.next-cli-build/static/chunks/app/api/providers/bulk-delete/route-f29633932d5ddd5a.js +1 -0
  1115. package/cli/app/.next-cli-build/static/chunks/app/api/providers/client/route-f29633932d5ddd5a.js +1 -0
  1116. package/cli/app/.next-cli-build/static/chunks/app/api/providers/kilo/free-models/route-f29633932d5ddd5a.js +1 -0
  1117. package/cli/app/.next-cli-build/static/chunks/app/api/providers/route-f29633932d5ddd5a.js +1 -0
  1118. package/cli/app/.next-cli-build/static/chunks/app/api/providers/suggested-models/route-f29633932d5ddd5a.js +1 -0
  1119. package/cli/app/.next-cli-build/static/chunks/app/api/providers/test-batch/route-f29633932d5ddd5a.js +1 -0
  1120. package/cli/app/.next-cli-build/static/chunks/app/api/providers/validate/route-f29633932d5ddd5a.js +1 -0
  1121. package/cli/app/.next-cli-build/static/chunks/app/api/proxy-pools/[id]/route-f29633932d5ddd5a.js +1 -0
  1122. package/cli/app/.next-cli-build/static/chunks/app/api/proxy-pools/[id]/test/route-f29633932d5ddd5a.js +1 -0
  1123. package/cli/app/.next-cli-build/static/chunks/app/api/proxy-pools/cloudflare-deploy/route-f29633932d5ddd5a.js +1 -0
  1124. package/cli/app/.next-cli-build/static/chunks/app/api/proxy-pools/deno-deploy/route-f29633932d5ddd5a.js +1 -0
  1125. package/cli/app/.next-cli-build/static/chunks/app/api/proxy-pools/route-f29633932d5ddd5a.js +1 -0
  1126. package/cli/app/.next-cli-build/static/chunks/app/api/proxy-pools/vercel-deploy/route-f29633932d5ddd5a.js +1 -0
  1127. package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/health/route-f29633932d5ddd5a.js +1 -0
  1128. package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/install/route-f29633932d5ddd5a.js +1 -0
  1129. package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/restart/route-f29633932d5ddd5a.js +1 -0
  1130. package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/start/route-f29633932d5ddd5a.js +1 -0
  1131. package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/stats/route-f29633932d5ddd5a.js +1 -0
  1132. package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/status/route-f29633932d5ddd5a.js +1 -0
  1133. package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/stop/route-f29633932d5ddd5a.js +1 -0
  1134. package/cli/app/.next-cli-build/static/chunks/app/api/settings/database/route-f29633932d5ddd5a.js +1 -0
  1135. package/cli/app/.next-cli-build/static/chunks/app/api/settings/proxy-test/route-f29633932d5ddd5a.js +1 -0
  1136. package/cli/app/.next-cli-build/static/chunks/app/api/settings/require-login/route-f29633932d5ddd5a.js +1 -0
  1137. package/cli/app/.next-cli-build/static/chunks/app/api/settings/route-f29633932d5ddd5a.js +1 -0
  1138. package/cli/app/.next-cli-build/static/chunks/app/api/shutdown/route-f29633932d5ddd5a.js +1 -0
  1139. package/cli/app/.next-cli-build/static/chunks/app/api/tags/route-f29633932d5ddd5a.js +1 -0
  1140. package/cli/app/.next-cli-build/static/chunks/app/api/terminal/auth/setup/route-f29633932d5ddd5a.js +1 -0
  1141. package/cli/app/.next-cli-build/static/chunks/app/api/terminal/auth/status/route-f29633932d5ddd5a.js +1 -0
  1142. package/cli/app/.next-cli-build/static/chunks/app/api/terminal/auth/unlock/route-f29633932d5ddd5a.js +1 -0
  1143. package/cli/app/.next-cli-build/static/chunks/app/api/terminal/session/[id]/input/route-f29633932d5ddd5a.js +1 -0
  1144. package/cli/app/.next-cli-build/static/chunks/app/api/terminal/session/[id]/resize/route-f29633932d5ddd5a.js +1 -0
  1145. package/cli/app/.next-cli-build/static/chunks/app/api/terminal/session/[id]/route-f29633932d5ddd5a.js +1 -0
  1146. package/cli/app/.next-cli-build/static/chunks/app/api/terminal/session/[id]/stream/route-f29633932d5ddd5a.js +1 -0
  1147. package/cli/app/.next-cli-build/static/chunks/app/api/terminal/session/route-f29633932d5ddd5a.js +1 -0
  1148. package/cli/app/.next-cli-build/static/chunks/app/api/translator/console-logs/route-f29633932d5ddd5a.js +1 -0
  1149. package/cli/app/.next-cli-build/static/chunks/app/api/translator/console-logs/stream/route-f29633932d5ddd5a.js +1 -0
  1150. package/cli/app/.next-cli-build/static/chunks/app/api/translator/load/route-f29633932d5ddd5a.js +1 -0
  1151. package/cli/app/.next-cli-build/static/chunks/app/api/translator/save/route-f29633932d5ddd5a.js +1 -0
  1152. package/cli/app/.next-cli-build/static/chunks/app/api/translator/send/route-f29633932d5ddd5a.js +1 -0
  1153. package/cli/app/.next-cli-build/static/chunks/app/api/translator/translate/route-f29633932d5ddd5a.js +1 -0
  1154. package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/disable/route-f29633932d5ddd5a.js +1 -0
  1155. package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/enable/route-f29633932d5ddd5a.js +1 -0
  1156. package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/status/route-f29633932d5ddd5a.js +1 -0
  1157. package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-check/route-f29633932d5ddd5a.js +1 -0
  1158. package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-disable/route-f29633932d5ddd5a.js +1 -0
  1159. package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-enable/route-f29633932d5ddd5a.js +1 -0
  1160. package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-install/route-f29633932d5ddd5a.js +1 -0
  1161. package/cli/app/.next-cli-build/static/chunks/app/api/usage/[connectionId]/route-f29633932d5ddd5a.js +1 -0
  1162. package/cli/app/.next-cli-build/static/chunks/app/api/usage/aggregate/route-f29633932d5ddd5a.js +1 -0
  1163. package/cli/app/.next-cli-build/static/chunks/app/api/usage/chart/route-f29633932d5ddd5a.js +1 -0
  1164. package/cli/app/.next-cli-build/static/chunks/app/api/usage/history/route-f29633932d5ddd5a.js +1 -0
  1165. package/cli/app/.next-cli-build/static/chunks/app/api/usage/providers/route-f29633932d5ddd5a.js +1 -0
  1166. package/cli/app/.next-cli-build/static/chunks/app/api/usage/request-details/route-f29633932d5ddd5a.js +1 -0
  1167. package/cli/app/.next-cli-build/static/chunks/app/api/usage/request-logs/route-f29633932d5ddd5a.js +1 -0
  1168. package/cli/app/.next-cli-build/static/chunks/app/api/usage/stats/route-f29633932d5ddd5a.js +1 -0
  1169. package/cli/app/.next-cli-build/static/chunks/app/api/usage/stream/route-f29633932d5ddd5a.js +1 -0
  1170. package/cli/app/.next-cli-build/static/chunks/app/api/v1/api/chat/route-f29633932d5ddd5a.js +1 -0
  1171. package/cli/app/.next-cli-build/static/chunks/app/api/v1/audio/speech/route-f29633932d5ddd5a.js +1 -0
  1172. package/cli/app/.next-cli-build/static/chunks/app/api/v1/audio/transcriptions/route-f29633932d5ddd5a.js +1 -0
  1173. package/cli/app/.next-cli-build/static/chunks/app/api/v1/audio/voices/route-f29633932d5ddd5a.js +1 -0
  1174. package/cli/app/.next-cli-build/static/chunks/app/api/v1/chat/completions/route-f29633932d5ddd5a.js +1 -0
  1175. package/cli/app/.next-cli-build/static/chunks/app/api/v1/embeddings/route-f29633932d5ddd5a.js +1 -0
  1176. package/cli/app/.next-cli-build/static/chunks/app/api/v1/images/generations/route-f29633932d5ddd5a.js +1 -0
  1177. package/cli/app/.next-cli-build/static/chunks/app/api/v1/messages/count_tokens/route-f29633932d5ddd5a.js +1 -0
  1178. package/cli/app/.next-cli-build/static/chunks/app/api/v1/messages/route-f29633932d5ddd5a.js +1 -0
  1179. package/cli/app/.next-cli-build/static/chunks/app/api/v1/models/[kind]/route-f29633932d5ddd5a.js +1 -0
  1180. package/cli/app/.next-cli-build/static/chunks/app/api/v1/models/info/route-f29633932d5ddd5a.js +1 -0
  1181. package/cli/app/.next-cli-build/static/chunks/app/api/v1/models/route-f29633932d5ddd5a.js +1 -0
  1182. package/cli/app/.next-cli-build/static/chunks/app/api/v1/responses/compact/route-f29633932d5ddd5a.js +1 -0
  1183. package/cli/app/.next-cli-build/static/chunks/app/api/v1/responses/route-f29633932d5ddd5a.js +1 -0
  1184. package/cli/app/.next-cli-build/static/chunks/app/api/v1/route-f29633932d5ddd5a.js +1 -0
  1185. package/cli/app/.next-cli-build/static/chunks/app/api/v1/search/route-f29633932d5ddd5a.js +1 -0
  1186. package/cli/app/.next-cli-build/static/chunks/app/api/v1/web/fetch/route-f29633932d5ddd5a.js +1 -0
  1187. package/cli/app/.next-cli-build/static/chunks/app/api/v1beta/models/[...path]/route-f29633932d5ddd5a.js +1 -0
  1188. package/cli/app/.next-cli-build/static/chunks/app/api/v1beta/models/route-f29633932d5ddd5a.js +1 -0
  1189. package/cli/app/.next-cli-build/static/chunks/app/api/version/route-f29633932d5ddd5a.js +1 -0
  1190. package/cli/app/.next-cli-build/static/chunks/app/api/version/shutdown/route-f29633932d5ddd5a.js +1 -0
  1191. package/cli/app/.next-cli-build/static/chunks/app/api/version/update/route-f29633932d5ddd5a.js +1 -0
  1192. package/cli/app/.next-cli-build/static/chunks/app/login/page-f7df7d9a053d65b7.js +1 -0
  1193. package/cli/app/.next-cli-build/static/chunks/app/manifest.webmanifest/route-f29633932d5ddd5a.js +1 -0
  1194. package/cli/app/.next-cli-build/static/chunks/app/page-f29633932d5ddd5a.js +1 -0
  1195. package/cli/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/app-error-f29633932d5ddd5a.js +1 -0
  1196. package/cli/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/forbidden-f29633932d5ddd5a.js +1 -0
  1197. package/cli/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/not-found-f29633932d5ddd5a.js +1 -0
  1198. package/cli/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/unauthorized-f29633932d5ddd5a.js +1 -0
  1199. package/cli/app/.next-cli-build/static/sRgS_5eNahHOIlOLEqVvI/_buildManifest.js +1 -0
  1200. package/cli/app/CHANGELOG.md +47 -0
  1201. package/cli/app/cli/hooks/postinstall.js +82 -50
  1202. package/cli/app/cli/hooks/safeGlobalInstall.js +178 -10
  1203. package/cli/app/cli/hooks/startupRuntime.js +31 -0
  1204. package/cli/app/cli/hooks/streamCommand.js +63 -0
  1205. package/cli/app/package.json +46 -37
  1206. package/cli/app/server.js +1 -1
  1207. package/cli/app/src/lib/db/adapters/betterSqliteAdapter.js +6 -3
  1208. package/cli/app/src/lib/db/adapters/bunSqliteAdapter.js +4 -2
  1209. package/cli/app/src/lib/db/adapters/nodeSqliteAdapter.js +4 -2
  1210. package/cli/app/src/lib/db/adapters/sqljsAdapter.js +84 -27
  1211. package/cli/app/src/lib/db/maintenance.js +6 -0
  1212. package/cli/cli.js +708 -248
  1213. package/cli/hooks/postinstall.js +82 -50
  1214. package/cli/hooks/safeGlobalInstall.js +178 -10
  1215. package/cli/hooks/startupRuntime.js +31 -0
  1216. package/cli/hooks/streamCommand.js +63 -0
  1217. package/cli/package.json +6 -5
  1218. package/cli/src/cli/api/client.js +3 -1
  1219. package/cli/src/cli/systemdEnv.js +93 -0
  1220. package/cli/src/cli/tray/autostart.js +55 -21
  1221. package/cli/src/cli/tray/tray.js +1 -1
  1222. package/cli/src/cli/updateRuntimeState.js +976 -0
  1223. package/package.json +46 -37
  1224. package/scripts/start-standalone.mjs +24 -15
  1225. package/cli/app/.next-cli-build/server/chunks/5024.js +0 -1
  1226. package/cli/app/.next-cli-build/server/chunks/601.js +0 -24
  1227. package/cli/app/.next-cli-build/static/chunks/5497-8d0ec2995dc0a392.js +0 -7
  1228. package/cli/app/.next-cli-build/static/chunks/620-abc3c4ad8fcc220a.js +0 -1
  1229. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/cli-tools/[toolId]/page-f16310d2b403445e.js +0 -1
  1230. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/cli-tools/page-27b7575d0d2d59fa.js +0 -1
  1231. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page-a35d16eda369d68e.js +0 -59
  1232. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/media-providers/combo/[id]/page-e7989e6397c3cd28.js +0 -4
  1233. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/mitm/page-81eaa9fe75830559.js +0 -1
  1234. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/profile/page-ceb414eddc31fbfc.js +0 -1
  1235. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-4f6f0b7c3b3da037.js +0 -3
  1236. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/proxy-pools/page-9e3ac0e62a8bba94.js +0 -4
  1237. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/quota/page-579bf915396efc69.js +0 -1
  1238. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/usage/page-bc3ada97fab644b3.js +0 -1
  1239. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/layout-59c5060c7f023ab8.js +0 -1
  1240. package/cli/app/.next-cli-build/static/chunks/app/_global-error/page-915c9a5b78eafa55.js +0 -1
  1241. package/cli/app/.next-cli-build/static/chunks/app/api/auth/login/route-915c9a5b78eafa55.js +0 -1
  1242. package/cli/app/.next-cli-build/static/chunks/app/api/auth/logout/route-915c9a5b78eafa55.js +0 -1
  1243. package/cli/app/.next-cli-build/static/chunks/app/api/auth/oidc/callback/route-915c9a5b78eafa55.js +0 -1
  1244. package/cli/app/.next-cli-build/static/chunks/app/api/auth/oidc/start/route-915c9a5b78eafa55.js +0 -1
  1245. package/cli/app/.next-cli-build/static/chunks/app/api/auth/oidc/test/route-915c9a5b78eafa55.js +0 -1
  1246. package/cli/app/.next-cli-build/static/chunks/app/api/auth/status/route-915c9a5b78eafa55.js +0 -1
  1247. package/cli/app/.next-cli-build/static/chunks/app/api/cache/stats/route-915c9a5b78eafa55.js +0 -1
  1248. package/cli/app/.next-cli-build/static/chunks/app/api/changelog/route-915c9a5b78eafa55.js +0 -1
  1249. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/all-statuses/route-915c9a5b78eafa55.js +0 -1
  1250. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-915c9a5b78eafa55.js +0 -1
  1251. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/route-915c9a5b78eafa55.js +0 -1
  1252. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/claude-settings/route-915c9a5b78eafa55.js +0 -1
  1253. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/cline-settings/route-915c9a5b78eafa55.js +0 -1
  1254. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/codex-gateway/accounts/route-915c9a5b78eafa55.js +0 -1
  1255. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/codex-settings/route-915c9a5b78eafa55.js +0 -1
  1256. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/copilot-settings/route-915c9a5b78eafa55.js +0 -1
  1257. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-registry/route-915c9a5b78eafa55.js +0 -1
  1258. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-tools/route-915c9a5b78eafa55.js +0 -1
  1259. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-settings/route-915c9a5b78eafa55.js +0 -1
  1260. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/deepseek-tui-settings/route-915c9a5b78eafa55.js +0 -1
  1261. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/droid-settings/route-915c9a5b78eafa55.js +0 -1
  1262. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/hermes-settings/route-915c9a5b78eafa55.js +0 -1
  1263. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/jcode-settings/route-915c9a5b78eafa55.js +0 -1
  1264. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/kilo-settings/route-915c9a5b78eafa55.js +0 -1
  1265. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/openclaw-settings/route-915c9a5b78eafa55.js +0 -1
  1266. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/opencode-settings/route-915c9a5b78eafa55.js +0 -1
  1267. package/cli/app/.next-cli-build/static/chunks/app/api/combos/[id]/route-915c9a5b78eafa55.js +0 -1
  1268. package/cli/app/.next-cli-build/static/chunks/app/api/combos/route-915c9a5b78eafa55.js +0 -1
  1269. package/cli/app/.next-cli-build/static/chunks/app/api/context/[id]/route-915c9a5b78eafa55.js +0 -1
  1270. package/cli/app/.next-cli-build/static/chunks/app/api/context/bulk/route-915c9a5b78eafa55.js +0 -1
  1271. package/cli/app/.next-cli-build/static/chunks/app/api/context/route-915c9a5b78eafa55.js +0 -1
  1272. package/cli/app/.next-cli-build/static/chunks/app/api/dashboard/chat/completions/route-915c9a5b78eafa55.js +0 -1
  1273. package/cli/app/.next-cli-build/static/chunks/app/api/headroom/extras/route-915c9a5b78eafa55.js +0 -1
  1274. package/cli/app/.next-cli-build/static/chunks/app/api/headroom/proxy/[...path]/route-915c9a5b78eafa55.js +0 -1
  1275. package/cli/app/.next-cli-build/static/chunks/app/api/headroom/restart/route-915c9a5b78eafa55.js +0 -1
  1276. package/cli/app/.next-cli-build/static/chunks/app/api/headroom/start/route-915c9a5b78eafa55.js +0 -1
  1277. package/cli/app/.next-cli-build/static/chunks/app/api/headroom/status/route-915c9a5b78eafa55.js +0 -1
  1278. package/cli/app/.next-cli-build/static/chunks/app/api/headroom/stop/route-915c9a5b78eafa55.js +0 -1
  1279. package/cli/app/.next-cli-build/static/chunks/app/api/health/ready/route-915c9a5b78eafa55.js +0 -1
  1280. package/cli/app/.next-cli-build/static/chunks/app/api/health/route-915c9a5b78eafa55.js +0 -1
  1281. package/cli/app/.next-cli-build/static/chunks/app/api/init/route-915c9a5b78eafa55.js +0 -1
  1282. package/cli/app/.next-cli-build/static/chunks/app/api/keys/[id]/rotate/route-915c9a5b78eafa55.js +0 -1
  1283. package/cli/app/.next-cli-build/static/chunks/app/api/keys/[id]/route-915c9a5b78eafa55.js +0 -1
  1284. package/cli/app/.next-cli-build/static/chunks/app/api/keys/route-915c9a5b78eafa55.js +0 -1
  1285. package/cli/app/.next-cli-build/static/chunks/app/api/locale/route-915c9a5b78eafa55.js +0 -1
  1286. package/cli/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/message/route-915c9a5b78eafa55.js +0 -1
  1287. package/cli/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/sse/route-915c9a5b78eafa55.js +0 -1
  1288. package/cli/app/.next-cli-build/static/chunks/app/api/media-providers/tts/deepgram/voices/route-915c9a5b78eafa55.js +0 -1
  1289. package/cli/app/.next-cli-build/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-915c9a5b78eafa55.js +0 -1
  1290. package/cli/app/.next-cli-build/static/chunks/app/api/media-providers/tts/inworld/voices/route-915c9a5b78eafa55.js +0 -1
  1291. package/cli/app/.next-cli-build/static/chunks/app/api/media-providers/tts/minimax/voices/route-915c9a5b78eafa55.js +0 -1
  1292. package/cli/app/.next-cli-build/static/chunks/app/api/media-providers/tts/voices/route-915c9a5b78eafa55.js +0 -1
  1293. package/cli/app/.next-cli-build/static/chunks/app/api/metrics/route-915c9a5b78eafa55.js +0 -1
  1294. package/cli/app/.next-cli-build/static/chunks/app/api/models/alias/route-915c9a5b78eafa55.js +0 -1
  1295. package/cli/app/.next-cli-build/static/chunks/app/api/models/availability/route-915c9a5b78eafa55.js +0 -1
  1296. package/cli/app/.next-cli-build/static/chunks/app/api/models/custom/route-915c9a5b78eafa55.js +0 -1
  1297. package/cli/app/.next-cli-build/static/chunks/app/api/models/disabled/route-915c9a5b78eafa55.js +0 -1
  1298. package/cli/app/.next-cli-build/static/chunks/app/api/models/route-915c9a5b78eafa55.js +0 -1
  1299. package/cli/app/.next-cli-build/static/chunks/app/api/models/test/route-915c9a5b78eafa55.js +0 -1
  1300. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/[provider]/[action]/route-915c9a5b78eafa55.js +0 -1
  1301. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/antigravity/bulk-import/[jobId]/cancel/route-915c9a5b78eafa55.js +0 -1
  1302. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/antigravity/bulk-import/[jobId]/manual/[workerId]/route-915c9a5b78eafa55.js +0 -1
  1303. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/antigravity/bulk-import/[jobId]/route-915c9a5b78eafa55.js +0 -1
  1304. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/antigravity/bulk-import/latest/route-915c9a5b78eafa55.js +0 -1
  1305. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/antigravity/bulk-import/route-915c9a5b78eafa55.js +0 -1
  1306. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/cancel/route-915c9a5b78eafa55.js +0 -1
  1307. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/manual/[workerId]/route-915c9a5b78eafa55.js +0 -1
  1308. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/route-915c9a5b78eafa55.js +0 -1
  1309. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cloudflare-ai/bulk-import/latest/route-915c9a5b78eafa55.js +0 -1
  1310. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cloudflare-ai/bulk-import/route-915c9a5b78eafa55.js +0 -1
  1311. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/bulk-import/[jobId]/cancel/route-915c9a5b78eafa55.js +0 -1
  1312. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/bulk-import/[jobId]/manual/[workerId]/route-915c9a5b78eafa55.js +0 -1
  1313. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/bulk-import/[jobId]/route-915c9a5b78eafa55.js +0 -1
  1314. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/bulk-import/latest/route-915c9a5b78eafa55.js +0 -1
  1315. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/bulk-import/route-915c9a5b78eafa55.js +0 -1
  1316. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/bulk-token/route-915c9a5b78eafa55.js +0 -1
  1317. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/quota-cookie/route-915c9a5b78eafa55.js +0 -1
  1318. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/cancel/route-915c9a5b78eafa55.js +0 -1
  1319. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/manual/[workerId]/route-915c9a5b78eafa55.js +0 -1
  1320. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/route-915c9a5b78eafa55.js +0 -1
  1321. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-import/latest/route-915c9a5b78eafa55.js +0 -1
  1322. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-import/route-915c9a5b78eafa55.js +0 -1
  1323. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-token/route-915c9a5b78eafa55.js +0 -1
  1324. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/quota-cookie/route-915c9a5b78eafa55.js +0 -1
  1325. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codex/import-token/route-915c9a5b78eafa55.js +0 -1
  1326. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cursor/auto-import/route-915c9a5b78eafa55.js +0 -1
  1327. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cursor/import/route-915c9a5b78eafa55.js +0 -1
  1328. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/gitlab/pat/route-915c9a5b78eafa55.js +0 -1
  1329. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/iflow/cookie/route-915c9a5b78eafa55.js +0 -1
  1330. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/auto-import/route-915c9a5b78eafa55.js +0 -1
  1331. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/bulk-import/[jobId]/cancel/route-915c9a5b78eafa55.js +0 -1
  1332. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/bulk-import/[jobId]/manual/[workerId]/route-915c9a5b78eafa55.js +0 -1
  1333. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/bulk-import/[jobId]/route-915c9a5b78eafa55.js +0 -1
  1334. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/bulk-import/latest/route-915c9a5b78eafa55.js +0 -1
  1335. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/bulk-import/route-915c9a5b78eafa55.js +0 -1
  1336. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/import/route-915c9a5b78eafa55.js +0 -1
  1337. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-authorize/route-915c9a5b78eafa55.js +0 -1
  1338. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-exchange/route-915c9a5b78eafa55.js +0 -1
  1339. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/qoder/bulk-import/[jobId]/cancel/route-915c9a5b78eafa55.js +0 -1
  1340. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/qoder/bulk-import/[jobId]/manual/[workerId]/route-915c9a5b78eafa55.js +0 -1
  1341. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/qoder/bulk-import/[jobId]/route-915c9a5b78eafa55.js +0 -1
  1342. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/qoder/bulk-import/latest/route-915c9a5b78eafa55.js +0 -1
  1343. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/qoder/bulk-import/route-915c9a5b78eafa55.js +0 -1
  1344. package/cli/app/.next-cli-build/static/chunks/app/api/pricing/route-915c9a5b78eafa55.js +0 -1
  1345. package/cli/app/.next-cli-build/static/chunks/app/api/provider-nodes/[id]/route-915c9a5b78eafa55.js +0 -1
  1346. package/cli/app/.next-cli-build/static/chunks/app/api/provider-nodes/route-915c9a5b78eafa55.js +0 -1
  1347. package/cli/app/.next-cli-build/static/chunks/app/api/provider-nodes/validate/route-915c9a5b78eafa55.js +0 -1
  1348. package/cli/app/.next-cli-build/static/chunks/app/api/providers/[id]/models/route-915c9a5b78eafa55.js +0 -1
  1349. package/cli/app/.next-cli-build/static/chunks/app/api/providers/[id]/route-915c9a5b78eafa55.js +0 -1
  1350. package/cli/app/.next-cli-build/static/chunks/app/api/providers/[id]/test/route-915c9a5b78eafa55.js +0 -1
  1351. package/cli/app/.next-cli-build/static/chunks/app/api/providers/[id]/test-models/route-915c9a5b78eafa55.js +0 -1
  1352. package/cli/app/.next-cli-build/static/chunks/app/api/providers/bulk-delete/route-915c9a5b78eafa55.js +0 -1
  1353. package/cli/app/.next-cli-build/static/chunks/app/api/providers/client/route-915c9a5b78eafa55.js +0 -1
  1354. package/cli/app/.next-cli-build/static/chunks/app/api/providers/kilo/free-models/route-915c9a5b78eafa55.js +0 -1
  1355. package/cli/app/.next-cli-build/static/chunks/app/api/providers/route-915c9a5b78eafa55.js +0 -1
  1356. package/cli/app/.next-cli-build/static/chunks/app/api/providers/suggested-models/route-915c9a5b78eafa55.js +0 -1
  1357. package/cli/app/.next-cli-build/static/chunks/app/api/providers/test-batch/route-915c9a5b78eafa55.js +0 -1
  1358. package/cli/app/.next-cli-build/static/chunks/app/api/providers/validate/route-915c9a5b78eafa55.js +0 -1
  1359. package/cli/app/.next-cli-build/static/chunks/app/api/proxy-pools/[id]/route-915c9a5b78eafa55.js +0 -1
  1360. package/cli/app/.next-cli-build/static/chunks/app/api/proxy-pools/[id]/test/route-915c9a5b78eafa55.js +0 -1
  1361. package/cli/app/.next-cli-build/static/chunks/app/api/proxy-pools/cloudflare-deploy/route-915c9a5b78eafa55.js +0 -1
  1362. package/cli/app/.next-cli-build/static/chunks/app/api/proxy-pools/deno-deploy/route-915c9a5b78eafa55.js +0 -1
  1363. package/cli/app/.next-cli-build/static/chunks/app/api/proxy-pools/route-915c9a5b78eafa55.js +0 -1
  1364. package/cli/app/.next-cli-build/static/chunks/app/api/proxy-pools/vercel-deploy/route-915c9a5b78eafa55.js +0 -1
  1365. package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/health/route-915c9a5b78eafa55.js +0 -1
  1366. package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/install/route-915c9a5b78eafa55.js +0 -1
  1367. package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/restart/route-915c9a5b78eafa55.js +0 -1
  1368. package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/start/route-915c9a5b78eafa55.js +0 -1
  1369. package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/stats/route-915c9a5b78eafa55.js +0 -1
  1370. package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/status/route-915c9a5b78eafa55.js +0 -1
  1371. package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/stop/route-915c9a5b78eafa55.js +0 -1
  1372. package/cli/app/.next-cli-build/static/chunks/app/api/settings/database/route-915c9a5b78eafa55.js +0 -1
  1373. package/cli/app/.next-cli-build/static/chunks/app/api/settings/proxy-test/route-915c9a5b78eafa55.js +0 -1
  1374. package/cli/app/.next-cli-build/static/chunks/app/api/settings/require-login/route-915c9a5b78eafa55.js +0 -1
  1375. package/cli/app/.next-cli-build/static/chunks/app/api/settings/route-915c9a5b78eafa55.js +0 -1
  1376. package/cli/app/.next-cli-build/static/chunks/app/api/shutdown/route-915c9a5b78eafa55.js +0 -1
  1377. package/cli/app/.next-cli-build/static/chunks/app/api/tags/route-915c9a5b78eafa55.js +0 -1
  1378. package/cli/app/.next-cli-build/static/chunks/app/api/terminal/auth/setup/route-915c9a5b78eafa55.js +0 -1
  1379. package/cli/app/.next-cli-build/static/chunks/app/api/terminal/auth/status/route-915c9a5b78eafa55.js +0 -1
  1380. package/cli/app/.next-cli-build/static/chunks/app/api/terminal/auth/unlock/route-915c9a5b78eafa55.js +0 -1
  1381. package/cli/app/.next-cli-build/static/chunks/app/api/terminal/session/[id]/input/route-915c9a5b78eafa55.js +0 -1
  1382. package/cli/app/.next-cli-build/static/chunks/app/api/terminal/session/[id]/resize/route-915c9a5b78eafa55.js +0 -1
  1383. package/cli/app/.next-cli-build/static/chunks/app/api/terminal/session/[id]/route-915c9a5b78eafa55.js +0 -1
  1384. package/cli/app/.next-cli-build/static/chunks/app/api/terminal/session/[id]/stream/route-915c9a5b78eafa55.js +0 -1
  1385. package/cli/app/.next-cli-build/static/chunks/app/api/terminal/session/route-915c9a5b78eafa55.js +0 -1
  1386. package/cli/app/.next-cli-build/static/chunks/app/api/translator/console-logs/route-915c9a5b78eafa55.js +0 -1
  1387. package/cli/app/.next-cli-build/static/chunks/app/api/translator/console-logs/stream/route-915c9a5b78eafa55.js +0 -1
  1388. package/cli/app/.next-cli-build/static/chunks/app/api/translator/load/route-915c9a5b78eafa55.js +0 -1
  1389. package/cli/app/.next-cli-build/static/chunks/app/api/translator/save/route-915c9a5b78eafa55.js +0 -1
  1390. package/cli/app/.next-cli-build/static/chunks/app/api/translator/send/route-915c9a5b78eafa55.js +0 -1
  1391. package/cli/app/.next-cli-build/static/chunks/app/api/translator/translate/route-915c9a5b78eafa55.js +0 -1
  1392. package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/disable/route-915c9a5b78eafa55.js +0 -1
  1393. package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/enable/route-915c9a5b78eafa55.js +0 -1
  1394. package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/status/route-915c9a5b78eafa55.js +0 -1
  1395. package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-check/route-915c9a5b78eafa55.js +0 -1
  1396. package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-disable/route-915c9a5b78eafa55.js +0 -1
  1397. package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-enable/route-915c9a5b78eafa55.js +0 -1
  1398. package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-install/route-915c9a5b78eafa55.js +0 -1
  1399. package/cli/app/.next-cli-build/static/chunks/app/api/usage/[connectionId]/route-915c9a5b78eafa55.js +0 -1
  1400. package/cli/app/.next-cli-build/static/chunks/app/api/usage/aggregate/route-915c9a5b78eafa55.js +0 -1
  1401. package/cli/app/.next-cli-build/static/chunks/app/api/usage/chart/route-915c9a5b78eafa55.js +0 -1
  1402. package/cli/app/.next-cli-build/static/chunks/app/api/usage/history/route-915c9a5b78eafa55.js +0 -1
  1403. package/cli/app/.next-cli-build/static/chunks/app/api/usage/providers/route-915c9a5b78eafa55.js +0 -1
  1404. package/cli/app/.next-cli-build/static/chunks/app/api/usage/request-details/route-915c9a5b78eafa55.js +0 -1
  1405. package/cli/app/.next-cli-build/static/chunks/app/api/usage/request-logs/route-915c9a5b78eafa55.js +0 -1
  1406. package/cli/app/.next-cli-build/static/chunks/app/api/usage/stats/route-915c9a5b78eafa55.js +0 -1
  1407. package/cli/app/.next-cli-build/static/chunks/app/api/usage/stream/route-915c9a5b78eafa55.js +0 -1
  1408. package/cli/app/.next-cli-build/static/chunks/app/api/v1/api/chat/route-915c9a5b78eafa55.js +0 -1
  1409. package/cli/app/.next-cli-build/static/chunks/app/api/v1/audio/speech/route-915c9a5b78eafa55.js +0 -1
  1410. package/cli/app/.next-cli-build/static/chunks/app/api/v1/audio/transcriptions/route-915c9a5b78eafa55.js +0 -1
  1411. package/cli/app/.next-cli-build/static/chunks/app/api/v1/audio/voices/route-915c9a5b78eafa55.js +0 -1
  1412. package/cli/app/.next-cli-build/static/chunks/app/api/v1/chat/completions/route-915c9a5b78eafa55.js +0 -1
  1413. package/cli/app/.next-cli-build/static/chunks/app/api/v1/embeddings/route-915c9a5b78eafa55.js +0 -1
  1414. package/cli/app/.next-cli-build/static/chunks/app/api/v1/images/generations/route-915c9a5b78eafa55.js +0 -1
  1415. package/cli/app/.next-cli-build/static/chunks/app/api/v1/messages/count_tokens/route-915c9a5b78eafa55.js +0 -1
  1416. package/cli/app/.next-cli-build/static/chunks/app/api/v1/messages/route-915c9a5b78eafa55.js +0 -1
  1417. package/cli/app/.next-cli-build/static/chunks/app/api/v1/models/[kind]/route-915c9a5b78eafa55.js +0 -1
  1418. package/cli/app/.next-cli-build/static/chunks/app/api/v1/models/info/route-915c9a5b78eafa55.js +0 -1
  1419. package/cli/app/.next-cli-build/static/chunks/app/api/v1/models/route-915c9a5b78eafa55.js +0 -1
  1420. package/cli/app/.next-cli-build/static/chunks/app/api/v1/responses/compact/route-915c9a5b78eafa55.js +0 -1
  1421. package/cli/app/.next-cli-build/static/chunks/app/api/v1/responses/route-915c9a5b78eafa55.js +0 -1
  1422. package/cli/app/.next-cli-build/static/chunks/app/api/v1/route-915c9a5b78eafa55.js +0 -1
  1423. package/cli/app/.next-cli-build/static/chunks/app/api/v1/search/route-915c9a5b78eafa55.js +0 -1
  1424. package/cli/app/.next-cli-build/static/chunks/app/api/v1/web/fetch/route-915c9a5b78eafa55.js +0 -1
  1425. package/cli/app/.next-cli-build/static/chunks/app/api/v1beta/models/[...path]/route-915c9a5b78eafa55.js +0 -1
  1426. package/cli/app/.next-cli-build/static/chunks/app/api/v1beta/models/route-915c9a5b78eafa55.js +0 -1
  1427. package/cli/app/.next-cli-build/static/chunks/app/api/version/route-915c9a5b78eafa55.js +0 -1
  1428. package/cli/app/.next-cli-build/static/chunks/app/api/version/shutdown/route-915c9a5b78eafa55.js +0 -1
  1429. package/cli/app/.next-cli-build/static/chunks/app/api/version/update/route-915c9a5b78eafa55.js +0 -1
  1430. package/cli/app/.next-cli-build/static/chunks/app/login/page-9ea3f794879db097.js +0 -1
  1431. package/cli/app/.next-cli-build/static/chunks/app/manifest.webmanifest/route-915c9a5b78eafa55.js +0 -1
  1432. package/cli/app/.next-cli-build/static/chunks/app/page-915c9a5b78eafa55.js +0 -1
  1433. package/cli/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/app-error-915c9a5b78eafa55.js +0 -1
  1434. package/cli/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/forbidden-915c9a5b78eafa55.js +0 -1
  1435. package/cli/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/not-found-915c9a5b78eafa55.js +0 -1
  1436. package/cli/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/unauthorized-915c9a5b78eafa55.js +0 -1
  1437. package/cli/app/.next-cli-build/static/gQ1kqTy9hoyJ5eXUJs8MC/_buildManifest.js +0 -1
  1438. package/i18n/README.ja-JP.md +0 -34
  1439. package/i18n/README.ru.md +0 -34
  1440. package/i18n/README.vi.md +0 -34
  1441. package/i18n/README.zh-CN.md +0 -34
  1442. package/images/screenshots/automation.png +0 -0
  1443. package/images/screenshots/endpoint.png +0 -0
  1444. package/images/screenshots/playground.png +0 -0
  1445. package/images/screenshots/providers.png +0 -0
  1446. package/images/screenshots/usage.png +0 -0
  1447. package/images/zevairouter.png +0 -0
  1448. package/jsconfig.json +0 -12
  1449. package/next.config.mjs +0 -96
  1450. package/open-sse/config/appConstants.js +0 -230
  1451. package/open-sse/config/codexInstructions.js +0 -119
  1452. package/open-sse/config/constants.js +0 -4
  1453. package/open-sse/config/defaultThinkingSignature.js +0 -12
  1454. package/open-sse/config/errorConfig.js +0 -92
  1455. package/open-sse/config/googleTtsLanguages.js +0 -62
  1456. package/open-sse/config/kiroConstants.js +0 -360
  1457. package/open-sse/config/models.js +0 -13
  1458. package/open-sse/config/ollamaModels.js +0 -19
  1459. package/open-sse/config/providerModels.js +0 -1058
  1460. package/open-sse/config/providers.js +0 -543
  1461. package/open-sse/config/runtimeConfig.js +0 -72
  1462. package/open-sse/config/ttsModels.js +0 -129
  1463. package/open-sse/context/injectContext.js +0 -82
  1464. package/open-sse/executors/antigravity.js +0 -605
  1465. package/open-sse/executors/autoclaw.js +0 -121
  1466. package/open-sse/executors/azure.js +0 -57
  1467. package/open-sse/executors/base.js +0 -221
  1468. package/open-sse/executors/codebuddy-cn.js +0 -31
  1469. package/open-sse/executors/codex.js +0 -484
  1470. package/open-sse/executors/commandcode.js +0 -88
  1471. package/open-sse/executors/cursor.js +0 -795
  1472. package/open-sse/executors/default.js +0 -532
  1473. package/open-sse/executors/gemini-cli.js +0 -89
  1474. package/open-sse/executors/github.js +0 -379
  1475. package/open-sse/executors/grok-cli.js +0 -397
  1476. package/open-sse/executors/grok-web.js +0 -345
  1477. package/open-sse/executors/iflow.js +0 -108
  1478. package/open-sse/executors/index.js +0 -92
  1479. package/open-sse/executors/kimchi.js +0 -123
  1480. package/open-sse/executors/kiro.js +0 -508
  1481. package/open-sse/executors/mimo-free.js +0 -156
  1482. package/open-sse/executors/ollama-local.js +0 -14
  1483. package/open-sse/executors/opencode-go.js +0 -41
  1484. package/open-sse/executors/opencode.js +0 -32
  1485. package/open-sse/executors/perplexity-web.js +0 -507
  1486. package/open-sse/executors/qoder.js +0 -468
  1487. package/open-sse/executors/qwen.js +0 -129
  1488. package/open-sse/executors/vertex.js +0 -131
  1489. package/open-sse/executors/xiaomi-tokenplan.js +0 -19
  1490. package/open-sse/handlers/chatCore/nonStreamingHandler.js +0 -233
  1491. package/open-sse/handlers/chatCore/requestDetail.js +0 -112
  1492. package/open-sse/handlers/chatCore/sseToJsonHandler.js +0 -245
  1493. package/open-sse/handlers/chatCore/streamingHandler.js +0 -103
  1494. package/open-sse/handlers/chatCore.js +0 -383
  1495. package/open-sse/handlers/embeddingProviders/_base.js +0 -4
  1496. package/open-sse/handlers/embeddingProviders/gemini.js +0 -57
  1497. package/open-sse/handlers/embeddingProviders/index.js +0 -23
  1498. package/open-sse/handlers/embeddingProviders/openai.js +0 -39
  1499. package/open-sse/handlers/embeddingProviders/openaiCompatNode.js +0 -16
  1500. package/open-sse/handlers/embeddingsCore.js +0 -126
  1501. package/open-sse/handlers/fetch/index.js +0 -237
  1502. package/open-sse/handlers/imageGenerationCore.js +0 -189
  1503. package/open-sse/handlers/imageProviders/_base.js +0 -31
  1504. package/open-sse/handlers/imageProviders/blackForestLabs.js +0 -46
  1505. package/open-sse/handlers/imageProviders/cloudflareAi.js +0 -181
  1506. package/open-sse/handlers/imageProviders/codex.js +0 -201
  1507. package/open-sse/handlers/imageProviders/comfyui.js +0 -11
  1508. package/open-sse/handlers/imageProviders/falAi.js +0 -44
  1509. package/open-sse/handlers/imageProviders/gemini.js +0 -28
  1510. package/open-sse/handlers/imageProviders/huggingface.js +0 -25
  1511. package/open-sse/handlers/imageProviders/index.js +0 -40
  1512. package/open-sse/handlers/imageProviders/nanobanana.js +0 -61
  1513. package/open-sse/handlers/imageProviders/openai.js +0 -40
  1514. package/open-sse/handlers/imageProviders/runwayml.js +0 -50
  1515. package/open-sse/handlers/imageProviders/sdwebui.js +0 -20
  1516. package/open-sse/handlers/imageProviders/stabilityAi.js +0 -37
  1517. package/open-sse/handlers/responsesHandler.js +0 -111
  1518. package/open-sse/handlers/search/callers.js +0 -371
  1519. package/open-sse/handlers/search/chatSearch.js +0 -409
  1520. package/open-sse/handlers/search/index.js +0 -201
  1521. package/open-sse/handlers/search/normalizers.js +0 -223
  1522. package/open-sse/handlers/sttCore.js +0 -194
  1523. package/open-sse/handlers/ttsCore.js +0 -74
  1524. package/open-sse/handlers/ttsProviders/_base.js +0 -39
  1525. package/open-sse/handlers/ttsProviders/edgeTts.js +0 -92
  1526. package/open-sse/handlers/ttsProviders/elevenlabs.js +0 -51
  1527. package/open-sse/handlers/ttsProviders/gemini.js +0 -120
  1528. package/open-sse/handlers/ttsProviders/genericFormats.js +0 -169
  1529. package/open-sse/handlers/ttsProviders/googleTts.js +0 -57
  1530. package/open-sse/handlers/ttsProviders/index.js +0 -50
  1531. package/open-sse/handlers/ttsProviders/localDevice.js +0 -90
  1532. package/open-sse/handlers/ttsProviders/minimax.js +0 -59
  1533. package/open-sse/handlers/ttsProviders/openai.js +0 -33
  1534. package/open-sse/handlers/ttsProviders/openrouter.js +0 -73
  1535. package/open-sse/index.js +0 -82
  1536. package/open-sse/rtk/applyFilter.js +0 -15
  1537. package/open-sse/rtk/autodetect.js +0 -111
  1538. package/open-sse/rtk/caveman.js +0 -100
  1539. package/open-sse/rtk/cavemanPrompts.js +0 -78
  1540. package/open-sse/rtk/constants.js +0 -55
  1541. package/open-sse/rtk/filters/buildOutput.js +0 -127
  1542. package/open-sse/rtk/filters/dedupLog.js +0 -44
  1543. package/open-sse/rtk/filters/find.js +0 -49
  1544. package/open-sse/rtk/filters/gitDiff.js +0 -92
  1545. package/open-sse/rtk/filters/gitStatus.js +0 -117
  1546. package/open-sse/rtk/filters/grep.js +0 -48
  1547. package/open-sse/rtk/filters/ls.js +0 -79
  1548. package/open-sse/rtk/filters/readNumbered.js +0 -27
  1549. package/open-sse/rtk/filters/searchList.js +0 -52
  1550. package/open-sse/rtk/filters/smartTruncate.js +0 -15
  1551. package/open-sse/rtk/filters/tree.js +0 -32
  1552. package/open-sse/rtk/headroom.js +0 -348
  1553. package/open-sse/rtk/index.js +0 -155
  1554. package/open-sse/rtk/ponytail.js +0 -91
  1555. package/open-sse/rtk/ponytailPrompts.js +0 -44
  1556. package/open-sse/rtk/pxpipe.js +0 -104
  1557. package/open-sse/rtk/registry.js +0 -38
  1558. package/open-sse/services/accountFallback.js +0 -349
  1559. package/open-sse/services/antigravityHeaderScrub.js +0 -78
  1560. package/open-sse/services/antigravityIdentity.js +0 -115
  1561. package/open-sse/services/antigravityObfuscation.js +0 -92
  1562. package/open-sse/services/clinepassModels.js +0 -63
  1563. package/open-sse/services/combo.js +0 -189
  1564. package/open-sse/services/compact.js +0 -71
  1565. package/open-sse/services/copilotModels.js +0 -155
  1566. package/open-sse/services/kimchiModels.js +0 -176
  1567. package/open-sse/services/kiroModels.js +0 -320
  1568. package/open-sse/services/model.js +0 -281
  1569. package/open-sse/services/oauthCredentialManager.js +0 -151
  1570. package/open-sse/services/projectId.js +0 -463
  1571. package/open-sse/services/provider.js +0 -356
  1572. package/open-sse/services/qoderModels.js +0 -216
  1573. package/open-sse/services/tokenRefresh.js +0 -949
  1574. package/open-sse/services/usage.js +0 -2415
  1575. package/open-sse/transformer/responsesTransformer.js +0 -439
  1576. package/open-sse/transformer/streamToJsonConverter.js +0 -107
  1577. package/open-sse/translator/formats.js +0 -36
  1578. package/open-sse/translator/helpers/claudeHelper.js +0 -216
  1579. package/open-sse/translator/helpers/geminiHelper.js +0 -372
  1580. package/open-sse/translator/helpers/imageHelper.js +0 -34
  1581. package/open-sse/translator/helpers/maxTokensHelper.js +0 -27
  1582. package/open-sse/translator/helpers/openaiHelper.js +0 -130
  1583. package/open-sse/translator/helpers/responsesApiHelper.js +0 -139
  1584. package/open-sse/translator/helpers/toolCallHelper.js +0 -148
  1585. package/open-sse/translator/index.js +0 -251
  1586. package/open-sse/translator/request/antigravity-to-openai.js +0 -229
  1587. package/open-sse/translator/request/claude-to-openai.js +0 -232
  1588. package/open-sse/translator/request/gemini-to-openai.js +0 -147
  1589. package/open-sse/translator/request/openai-responses.js +0 -318
  1590. package/open-sse/translator/request/openai-to-claude.js +0 -401
  1591. package/open-sse/translator/request/openai-to-commandcode.js +0 -170
  1592. package/open-sse/translator/request/openai-to-cursor.js +0 -183
  1593. package/open-sse/translator/request/openai-to-gemini.js +0 -476
  1594. package/open-sse/translator/request/openai-to-kiro.js +0 -629
  1595. package/open-sse/translator/request/openai-to-kiro.old.js +0 -278
  1596. package/open-sse/translator/request/openai-to-ollama.js +0 -192
  1597. package/open-sse/translator/request/openai-to-vertex.js +0 -42
  1598. package/open-sse/translator/response/claude-to-openai.js +0 -206
  1599. package/open-sse/translator/response/commandcode-to-openai.js +0 -197
  1600. package/open-sse/translator/response/cursor-to-openai.js +0 -30
  1601. package/open-sse/translator/response/gemini-to-openai.js +0 -245
  1602. package/open-sse/translator/response/kiro-to-openai.js +0 -195
  1603. package/open-sse/translator/response/ollama-to-openai.js +0 -152
  1604. package/open-sse/translator/response/openai-responses.js +0 -590
  1605. package/open-sse/translator/response/openai-to-antigravity.js +0 -122
  1606. package/open-sse/translator/response/openai-to-claude.js +0 -266
  1607. package/open-sse/utils/bypassHandler.js +0 -298
  1608. package/open-sse/utils/claudeCloaking.js +0 -155
  1609. package/open-sse/utils/claudeHeaderCache.js +0 -70
  1610. package/open-sse/utils/clientDetector.js +0 -64
  1611. package/open-sse/utils/cursorChecksum.js +0 -152
  1612. package/open-sse/utils/cursorProtobuf.js +0 -907
  1613. package/open-sse/utils/debugLog.js +0 -14
  1614. package/open-sse/utils/error.js +0 -147
  1615. package/open-sse/utils/ollamaTransform.js +0 -85
  1616. package/open-sse/utils/proxyFetch.js +0 -369
  1617. package/open-sse/utils/reasoningContentInjector.js +0 -79
  1618. package/open-sse/utils/requestLogger.js +0 -251
  1619. package/open-sse/utils/responsesStreamHelpers.js +0 -49
  1620. package/open-sse/utils/sessionManager.js +0 -231
  1621. package/open-sse/utils/stream.js +0 -480
  1622. package/open-sse/utils/streamHandler.js +0 -262
  1623. package/open-sse/utils/streamHelpers.js +0 -122
  1624. package/open-sse/utils/thinkingSuffix.js +0 -64
  1625. package/open-sse/utils/toolDeduper.js +0 -49
  1626. package/open-sse/utils/usageTracking.js +0 -351
  1627. package/postcss.config.mjs +0 -12
  1628. package/public/favicon.svg +0 -16
  1629. package/public/file.svg +0 -1
  1630. package/public/globe.svg +0 -1
  1631. package/public/i18n/literals/ar.json +0 -195
  1632. package/public/i18n/literals/bn.json +0 -195
  1633. package/public/i18n/literals/cs.json +0 -195
  1634. package/public/i18n/literals/da.json +0 -195
  1635. package/public/i18n/literals/de.json +0 -195
  1636. package/public/i18n/literals/el.json +0 -195
  1637. package/public/i18n/literals/es.json +0 -195
  1638. package/public/i18n/literals/fi.json +0 -195
  1639. package/public/i18n/literals/fr.json +0 -195
  1640. package/public/i18n/literals/he.json +0 -195
  1641. package/public/i18n/literals/hi.json +0 -195
  1642. package/public/i18n/literals/hu.json +0 -195
  1643. package/public/i18n/literals/id.json +0 -195
  1644. package/public/i18n/literals/it.json +0 -195
  1645. package/public/i18n/literals/ja.json +0 -195
  1646. package/public/i18n/literals/ko.json +0 -195
  1647. package/public/i18n/literals/nl.json +0 -195
  1648. package/public/i18n/literals/no.json +0 -195
  1649. package/public/i18n/literals/pl.json +0 -195
  1650. package/public/i18n/literals/pt-BR.json +0 -195
  1651. package/public/i18n/literals/pt-PT.json +0 -195
  1652. package/public/i18n/literals/ro.json +0 -195
  1653. package/public/i18n/literals/ru.json +0 -195
  1654. package/public/i18n/literals/sv.json +0 -195
  1655. package/public/i18n/literals/th.json +0 -195
  1656. package/public/i18n/literals/tl.json +0 -195
  1657. package/public/i18n/literals/tr.json +0 -195
  1658. package/public/i18n/literals/uk.json +0 -195
  1659. package/public/i18n/literals/ur.json +0 -195
  1660. package/public/i18n/literals/vi.json +0 -195
  1661. package/public/i18n/literals/zh-CN.json +0 -772
  1662. package/public/i18n/literals/zh-TW.json +0 -195
  1663. package/public/icons/discord.svg +0 -4
  1664. package/public/icons/icon-192.svg +0 -16
  1665. package/public/icons/icon-512.svg +0 -16
  1666. package/public/next.svg +0 -1
  1667. package/public/providers/alicode-intl.png +0 -0
  1668. package/public/providers/alicode.png +0 -0
  1669. package/public/providers/amp.png +0 -0
  1670. package/public/providers/anthropic-m.png +0 -0
  1671. package/public/providers/anthropic.png +0 -0
  1672. package/public/providers/antigravity.png +0 -0
  1673. package/public/providers/assemblyai.png +0 -0
  1674. package/public/providers/autoclaw.png +0 -0
  1675. package/public/providers/aws-polly.png +0 -0
  1676. package/public/providers/azure.png +0 -0
  1677. package/public/providers/black-forest-labs.png +0 -0
  1678. package/public/providers/blackbox.png +0 -0
  1679. package/public/providers/brave-search.png +0 -0
  1680. package/public/providers/byteplus.png +0 -0
  1681. package/public/providers/cartesia.png +0 -0
  1682. package/public/providers/cerebras.png +0 -0
  1683. package/public/providers/chutes.png +0 -0
  1684. package/public/providers/claude.png +0 -0
  1685. package/public/providers/cline.png +0 -0
  1686. package/public/providers/clinepass.png +0 -0
  1687. package/public/providers/cloudflare-ai.png +0 -0
  1688. package/public/providers/codebuddy-cn.png +0 -0
  1689. package/public/providers/codebuddy.png +0 -0
  1690. package/public/providers/codebuddy.svg +0 -37
  1691. package/public/providers/codex.png +0 -0
  1692. package/public/providers/cohere.png +0 -0
  1693. package/public/providers/comfyui.png +0 -0
  1694. package/public/providers/commandcode.png +0 -0
  1695. package/public/providers/continue.png +0 -0
  1696. package/public/providers/copilot.png +0 -0
  1697. package/public/providers/coqui.png +0 -0
  1698. package/public/providers/cursor.png +0 -0
  1699. package/public/providers/deepgram.png +0 -0
  1700. package/public/providers/deepseek-tui.png +0 -0
  1701. package/public/providers/deepseek.png +0 -0
  1702. package/public/providers/droid.png +0 -0
  1703. package/public/providers/edge-tts.png +0 -0
  1704. package/public/providers/elevenlabs.png +0 -0
  1705. package/public/providers/exa.png +0 -0
  1706. package/public/providers/fal-ai.png +0 -0
  1707. package/public/providers/firecrawl.png +0 -0
  1708. package/public/providers/fireworks.png +0 -0
  1709. package/public/providers/gemini-cli.png +0 -0
  1710. package/public/providers/gemini.png +0 -0
  1711. package/public/providers/github.png +0 -0
  1712. package/public/providers/glm-cn.png +0 -0
  1713. package/public/providers/glm.png +0 -0
  1714. package/public/providers/google-pse.png +0 -0
  1715. package/public/providers/google-tts.png +0 -0
  1716. package/public/providers/grok-cli.png +0 -0
  1717. package/public/providers/grok-web.png +0 -0
  1718. package/public/providers/groq.png +0 -0
  1719. package/public/providers/hermes.png +0 -0
  1720. package/public/providers/huggingface.png +0 -0
  1721. package/public/providers/hyperbolic.png +0 -0
  1722. package/public/providers/iflow.png +0 -0
  1723. package/public/providers/inworld.png +0 -0
  1724. package/public/providers/jcode.png +0 -0
  1725. package/public/providers/jina-ai.png +0 -0
  1726. package/public/providers/jina-reader.png +0 -0
  1727. package/public/providers/kilocode.png +0 -0
  1728. package/public/providers/kimchi.png +0 -0
  1729. package/public/providers/kimchi.svg +0 -4
  1730. package/public/providers/kimi-coding.png +0 -0
  1731. package/public/providers/kimi.png +0 -0
  1732. package/public/providers/kiro.png +0 -0
  1733. package/public/providers/linkup.png +0 -0
  1734. package/public/providers/local-device.png +0 -0
  1735. package/public/providers/mimo-free.png +0 -0
  1736. package/public/providers/minimax-cn.png +0 -0
  1737. package/public/providers/minimax.png +0 -0
  1738. package/public/providers/mistral.png +0 -0
  1739. package/public/providers/nanobanana.png +0 -0
  1740. package/public/providers/nebius.png +0 -0
  1741. package/public/providers/nvidia.png +0 -0
  1742. package/public/providers/oai-cc.png +0 -0
  1743. package/public/providers/oai-r.png +0 -0
  1744. package/public/providers/ollama-local.png +0 -0
  1745. package/public/providers/ollama.png +0 -0
  1746. package/public/providers/openai.png +0 -0
  1747. package/public/providers/openclaw.png +0 -0
  1748. package/public/providers/opencode-go.png +0 -0
  1749. package/public/providers/opencode.png +0 -0
  1750. package/public/providers/openrouter.png +0 -0
  1751. package/public/providers/perplexity-agent.png +0 -0
  1752. package/public/providers/perplexity-web.png +0 -0
  1753. package/public/providers/perplexity.png +0 -0
  1754. package/public/providers/playht.png +0 -0
  1755. package/public/providers/qoder.png +0 -0
  1756. package/public/providers/qwen.png +0 -0
  1757. package/public/providers/recraft.png +0 -0
  1758. package/public/providers/roo.png +0 -0
  1759. package/public/providers/runwayml.png +0 -0
  1760. package/public/providers/sdwebui.png +0 -0
  1761. package/public/providers/searchapi.png +0 -0
  1762. package/public/providers/searxng.png +0 -0
  1763. package/public/providers/serper.png +0 -0
  1764. package/public/providers/siliconflow.png +0 -0
  1765. package/public/providers/stability-ai.png +0 -0
  1766. package/public/providers/tavily.png +0 -0
  1767. package/public/providers/together.png +0 -0
  1768. package/public/providers/topaz.png +0 -0
  1769. package/public/providers/tortoise.png +0 -0
  1770. package/public/providers/vertex-partner.png +0 -0
  1771. package/public/providers/vertex.png +0 -0
  1772. package/public/providers/volcengine-ark.png +0 -0
  1773. package/public/providers/voyage-ai.png +0 -0
  1774. package/public/providers/xai.png +0 -0
  1775. package/public/providers/xiaomi-mimo.png +0 -0
  1776. package/public/providers/xiaomi-tokenplan.png +0 -0
  1777. package/public/providers/youcom.png +0 -0
  1778. package/public/sw.js +0 -22
  1779. package/public/vercel.svg +0 -1
  1780. package/public/window.svg +0 -1
  1781. package/scripts/translate-readme.js +0 -201
  1782. package/src/app/(dashboard)/dashboard/automation/page.js +0 -774
  1783. package/src/app/(dashboard)/dashboard/basic-chat/BasicChatPageClient.js +0 -1592
  1784. package/src/app/(dashboard)/dashboard/basic-chat/page.js +0 -5
  1785. package/src/app/(dashboard)/dashboard/cli-tools/CLIToolsPageClient.js +0 -77
  1786. package/src/app/(dashboard)/dashboard/cli-tools/[toolId]/ToolDetailClient.js +0 -173
  1787. package/src/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js +0 -11
  1788. package/src/app/(dashboard)/dashboard/cli-tools/components/AntigravityToolCard.js +0 -487
  1789. package/src/app/(dashboard)/dashboard/cli-tools/components/ApiKeySelect.js +0 -14
  1790. package/src/app/(dashboard)/dashboard/cli-tools/components/BaseUrlSelect.js +0 -176
  1791. package/src/app/(dashboard)/dashboard/cli-tools/components/ClaudeToolCard.js +0 -396
  1792. package/src/app/(dashboard)/dashboard/cli-tools/components/ClineToolCard.js +0 -307
  1793. package/src/app/(dashboard)/dashboard/cli-tools/components/CodexToolCard.js +0 -466
  1794. package/src/app/(dashboard)/dashboard/cli-tools/components/CopilotToolCard.js +0 -330
  1795. package/src/app/(dashboard)/dashboard/cli-tools/components/CoworkToolCard.js +0 -646
  1796. package/src/app/(dashboard)/dashboard/cli-tools/components/DeepSeekTuiToolCard.js +0 -344
  1797. package/src/app/(dashboard)/dashboard/cli-tools/components/DefaultToolCard.js +0 -271
  1798. package/src/app/(dashboard)/dashboard/cli-tools/components/DroidToolCard.js +0 -421
  1799. package/src/app/(dashboard)/dashboard/cli-tools/components/EndpointPresetControl.js +0 -129
  1800. package/src/app/(dashboard)/dashboard/cli-tools/components/HermesToolCard.js +0 -323
  1801. package/src/app/(dashboard)/dashboard/cli-tools/components/JcodeToolCard.js +0 -386
  1802. package/src/app/(dashboard)/dashboard/cli-tools/components/KiloToolCard.js +0 -280
  1803. package/src/app/(dashboard)/dashboard/cli-tools/components/MitmLinkCard.js +0 -40
  1804. package/src/app/(dashboard)/dashboard/cli-tools/components/MitmServerCard.js +0 -329
  1805. package/src/app/(dashboard)/dashboard/cli-tools/components/MitmToolCard.js +0 -320
  1806. package/src/app/(dashboard)/dashboard/cli-tools/components/OpenClawToolCard.js +0 -394
  1807. package/src/app/(dashboard)/dashboard/cli-tools/components/OpenCodeToolCard.js +0 -512
  1808. package/src/app/(dashboard)/dashboard/cli-tools/components/ToolSummaryCard.js +0 -40
  1809. package/src/app/(dashboard)/dashboard/cli-tools/components/cliEndpointMatch.js +0 -13
  1810. package/src/app/(dashboard)/dashboard/cli-tools/components/index.js +0 -19
  1811. package/src/app/(dashboard)/dashboard/cli-tools/page.js +0 -7
  1812. package/src/app/(dashboard)/dashboard/combos/page.js +0 -615
  1813. package/src/app/(dashboard)/dashboard/console-log/ConsoleLogClient.js +0 -118
  1814. package/src/app/(dashboard)/dashboard/console-log/page.js +0 -8
  1815. package/src/app/(dashboard)/dashboard/context/page.js +0 -276
  1816. package/src/app/(dashboard)/dashboard/endpoint/EndpointPageClient.js +0 -1594
  1817. package/src/app/(dashboard)/dashboard/endpoint/endpointConstants.js +0 -32
  1818. package/src/app/(dashboard)/dashboard/endpoint/page.js +0 -7
  1819. package/src/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js +0 -1913
  1820. package/src/app/(dashboard)/dashboard/media-providers/[kind]/page.js +0 -289
  1821. package/src/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js +0 -413
  1822. package/src/app/(dashboard)/dashboard/media-providers/web/page.js +0 -209
  1823. package/src/app/(dashboard)/dashboard/mitm/MitmPageClient.js +0 -121
  1824. package/src/app/(dashboard)/dashboard/mitm/page.js +0 -5
  1825. package/src/app/(dashboard)/dashboard/page.js +0 -7
  1826. package/src/app/(dashboard)/dashboard/playground/page.js +0 -5
  1827. package/src/app/(dashboard)/dashboard/profile/page.js +0 -1284
  1828. package/src/app/(dashboard)/dashboard/providers/[id]/AddApiKeyModal.js +0 -389
  1829. package/src/app/(dashboard)/dashboard/providers/[id]/AddCustomModelModal.js +0 -126
  1830. package/src/app/(dashboard)/dashboard/providers/[id]/CompatibleModelsSection.js +0 -250
  1831. package/src/app/(dashboard)/dashboard/providers/[id]/ConnectionRow.js +0 -318
  1832. package/src/app/(dashboard)/dashboard/providers/[id]/CooldownTimer.js +0 -42
  1833. package/src/app/(dashboard)/dashboard/providers/[id]/EditCompatibleNodeModal.js +0 -162
  1834. package/src/app/(dashboard)/dashboard/providers/[id]/ModelRow.js +0 -99
  1835. package/src/app/(dashboard)/dashboard/providers/[id]/PassthroughModelsSection.js +0 -183
  1836. package/src/app/(dashboard)/dashboard/providers/[id]/page.js +0 -2171
  1837. package/src/app/(dashboard)/dashboard/providers/[id]/page.new.js +0 -1726
  1838. package/src/app/(dashboard)/dashboard/providers/components/ConnectionsCard.js +0 -499
  1839. package/src/app/(dashboard)/dashboard/providers/components/ModelAvailabilityBadge.js +0 -186
  1840. package/src/app/(dashboard)/dashboard/providers/components/ModelsCard.js +0 -295
  1841. package/src/app/(dashboard)/dashboard/providers/new/page.js +0 -220
  1842. package/src/app/(dashboard)/dashboard/providers/page.js +0 -1518
  1843. package/src/app/(dashboard)/dashboard/proxy-pools/page.js +0 -1095
  1844. package/src/app/(dashboard)/dashboard/pxpipe/PxpipeClient.js +0 -284
  1845. package/src/app/(dashboard)/dashboard/pxpipe/page.js +0 -5
  1846. package/src/app/(dashboard)/dashboard/quota/page.js +0 -11
  1847. package/src/app/(dashboard)/dashboard/terminal/TerminalPageClient.js +0 -735
  1848. package/src/app/(dashboard)/dashboard/terminal/page.js +0 -7
  1849. package/src/app/(dashboard)/dashboard/token-saver/TokenSaverClient.js +0 -1018
  1850. package/src/app/(dashboard)/dashboard/token-saver/page.js +0 -5
  1851. package/src/app/(dashboard)/dashboard/translator/page.js +0 -303
  1852. package/src/app/(dashboard)/dashboard/usage/components/OverviewCards.js +0 -87
  1853. package/src/app/(dashboard)/dashboard/usage/components/ProviderLimits/ProviderLimitCard.js +0 -183
  1854. package/src/app/(dashboard)/dashboard/usage/components/ProviderLimits/QuotaProgressBar.js +0 -127
  1855. package/src/app/(dashboard)/dashboard/usage/components/ProviderLimits/QuotaTable.js +0 -269
  1856. package/src/app/(dashboard)/dashboard/usage/components/ProviderLimits/index.js +0 -1569
  1857. package/src/app/(dashboard)/dashboard/usage/components/ProviderLimits/utils.js +0 -320
  1858. package/src/app/(dashboard)/dashboard/usage/components/ProviderTopology.js +0 -468
  1859. package/src/app/(dashboard)/dashboard/usage/components/RequestDetailsTab.js +0 -435
  1860. package/src/app/(dashboard)/dashboard/usage/components/UsageChart.js +0 -155
  1861. package/src/app/(dashboard)/dashboard/usage/components/UsageTable.js +0 -253
  1862. package/src/app/(dashboard)/dashboard/usage/page.js +0 -75
  1863. package/src/app/(dashboard)/layout.js +0 -6
  1864. package/src/app/api/auth/login/route.js +0 -76
  1865. package/src/app/api/auth/logout/route.js +0 -14
  1866. package/src/app/api/auth/oidc/callback/route.js +0 -87
  1867. package/src/app/api/auth/oidc/start/route.js +0 -52
  1868. package/src/app/api/auth/oidc/test/route.js +0 -86
  1869. package/src/app/api/auth/status/route.js +0 -45
  1870. package/src/app/api/cache/stats/route.js +0 -13
  1871. package/src/app/api/changelog/route.js +0 -48
  1872. package/src/app/api/cli-tools/all-statuses/route.js +0 -46
  1873. package/src/app/api/cli-tools/antigravity-mitm/alias/route.js +0 -53
  1874. package/src/app/api/cli-tools/antigravity-mitm/route.js +0 -202
  1875. package/src/app/api/cli-tools/claude-settings/route.js +0 -203
  1876. package/src/app/api/cli-tools/cline-settings/route.js +0 -133
  1877. package/src/app/api/cli-tools/codex-gateway/accounts/route.js +0 -16
  1878. package/src/app/api/cli-tools/codex-settings/route.js +0 -271
  1879. package/src/app/api/cli-tools/copilot-settings/route.js +0 -153
  1880. package/src/app/api/cli-tools/cowork-mcp-registry/route.js +0 -77
  1881. package/src/app/api/cli-tools/cowork-mcp-tools/route.js +0 -95
  1882. package/src/app/api/cli-tools/cowork-settings/route.js +0 -412
  1883. package/src/app/api/cli-tools/deepseek-tui-settings/route.js +0 -164
  1884. package/src/app/api/cli-tools/droid-settings/route.js +0 -213
  1885. package/src/app/api/cli-tools/hermes-settings/route.js +0 -175
  1886. package/src/app/api/cli-tools/jcode-settings/route.js +0 -216
  1887. package/src/app/api/cli-tools/kilo-settings/route.js +0 -131
  1888. package/src/app/api/cli-tools/openclaw-settings/route.js +0 -292
  1889. package/src/app/api/cli-tools/opencode-settings/route.js +0 -259
  1890. package/src/app/api/combos/[id]/route.js +0 -81
  1891. package/src/app/api/combos/route.js +0 -48
  1892. package/src/app/api/context/[id]/route.js +0 -35
  1893. package/src/app/api/context/bulk/route.js +0 -25
  1894. package/src/app/api/context/route.js +0 -33
  1895. package/src/app/api/dashboard/chat/completions/route.js +0 -74
  1896. package/src/app/api/headroom/extras/route.js +0 -46
  1897. package/src/app/api/headroom/proxy/[...path]/route.js +0 -104
  1898. package/src/app/api/headroom/restart/route.js +0 -35
  1899. package/src/app/api/headroom/start/route.js +0 -35
  1900. package/src/app/api/headroom/status/route.js +0 -18
  1901. package/src/app/api/headroom/stop/route.js +0 -14
  1902. package/src/app/api/health/ready/route.js +0 -21
  1903. package/src/app/api/health/route.js +0 -15
  1904. package/src/app/api/init/route.js +0 -12
  1905. package/src/app/api/keys/[id]/rotate/route.js +0 -14
  1906. package/src/app/api/keys/[id]/route.js +0 -69
  1907. package/src/app/api/keys/route.js +0 -42
  1908. package/src/app/api/locale/route.js +0 -30
  1909. package/src/app/api/mcp/[plugin]/message/route.js +0 -21
  1910. package/src/app/api/mcp/[plugin]/sse/route.js +0 -37
  1911. package/src/app/api/media-providers/tts/deepgram/voices/route.js +0 -65
  1912. package/src/app/api/media-providers/tts/elevenlabs/voices/route.js +0 -71
  1913. package/src/app/api/media-providers/tts/inworld/voices/route.js +0 -61
  1914. package/src/app/api/media-providers/tts/minimax/voices/route.js +0 -113
  1915. package/src/app/api/media-providers/tts/voices/route.js +0 -99
  1916. package/src/app/api/metrics/route.js +0 -32
  1917. package/src/app/api/models/alias/route.js +0 -53
  1918. package/src/app/api/models/availability/route.js +0 -103
  1919. package/src/app/api/models/custom/route.js +0 -48
  1920. package/src/app/api/models/disabled/route.js +0 -50
  1921. package/src/app/api/models/route.js +0 -68
  1922. package/src/app/api/models/test/ping.js +0 -191
  1923. package/src/app/api/models/test/route.js +0 -14
  1924. package/src/app/api/oauth/[provider]/[action]/route.js +0 -340
  1925. package/src/app/api/oauth/antigravity/bulk-import/[jobId]/cancel/route.js +0 -19
  1926. package/src/app/api/oauth/antigravity/bulk-import/[jobId]/manual/[workerId]/route.js +0 -30
  1927. package/src/app/api/oauth/antigravity/bulk-import/[jobId]/route.js +0 -23
  1928. package/src/app/api/oauth/antigravity/bulk-import/latest/route.js +0 -24
  1929. package/src/app/api/oauth/antigravity/bulk-import/route.js +0 -51
  1930. package/src/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/cancel/route.js +0 -19
  1931. package/src/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/manual/[workerId]/route.js +0 -30
  1932. package/src/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/route.js +0 -25
  1933. package/src/app/api/oauth/cloudflare-ai/bulk-import/latest/route.js +0 -27
  1934. package/src/app/api/oauth/cloudflare-ai/bulk-import/route.js +0 -56
  1935. package/src/app/api/oauth/codebuddy/bulk-import/[jobId]/cancel/route.js +0 -19
  1936. package/src/app/api/oauth/codebuddy/bulk-import/[jobId]/manual/[workerId]/route.js +0 -30
  1937. package/src/app/api/oauth/codebuddy/bulk-import/[jobId]/route.js +0 -23
  1938. package/src/app/api/oauth/codebuddy/bulk-import/latest/route.js +0 -25
  1939. package/src/app/api/oauth/codebuddy/bulk-import/route.js +0 -51
  1940. package/src/app/api/oauth/codebuddy/bulk-token/route.js +0 -118
  1941. package/src/app/api/oauth/codebuddy/quota-cookie/route.js +0 -133
  1942. package/src/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/cancel/route.js +0 -19
  1943. package/src/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/manual/[workerId]/route.js +0 -30
  1944. package/src/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/route.js +0 -26
  1945. package/src/app/api/oauth/codebuddy-cn/bulk-import/latest/route.js +0 -27
  1946. package/src/app/api/oauth/codebuddy-cn/bulk-import/route.js +0 -61
  1947. package/src/app/api/oauth/codebuddy-cn/bulk-token/route.js +0 -119
  1948. package/src/app/api/oauth/codebuddy-cn/quota-cookie/route.js +0 -28
  1949. package/src/app/api/oauth/codex/import-token/route.js +0 -96
  1950. package/src/app/api/oauth/cursor/auto-import/route.js +0 -257
  1951. package/src/app/api/oauth/cursor/import/route.js +0 -100
  1952. package/src/app/api/oauth/gitlab/pat/route.js +0 -62
  1953. package/src/app/api/oauth/iflow/cookie/route.js +0 -137
  1954. package/src/app/api/oauth/kiro/auto-import/route.js +0 -85
  1955. package/src/app/api/oauth/kiro/bulk-import/[jobId]/cancel/route.js +0 -19
  1956. package/src/app/api/oauth/kiro/bulk-import/[jobId]/manual/[workerId]/route.js +0 -30
  1957. package/src/app/api/oauth/kiro/bulk-import/[jobId]/route.js +0 -23
  1958. package/src/app/api/oauth/kiro/bulk-import/latest/route.js +0 -25
  1959. package/src/app/api/oauth/kiro/bulk-import/route.js +0 -51
  1960. package/src/app/api/oauth/kiro/import/route.js +0 -110
  1961. package/src/app/api/oauth/kiro/social-authorize/route.js +0 -27
  1962. package/src/app/api/oauth/kiro/social-exchange/route.js +0 -41
  1963. package/src/app/api/oauth/qoder/bulk-import/[jobId]/cancel/route.js +0 -19
  1964. package/src/app/api/oauth/qoder/bulk-import/[jobId]/manual/[workerId]/route.js +0 -30
  1965. package/src/app/api/oauth/qoder/bulk-import/[jobId]/route.js +0 -23
  1966. package/src/app/api/oauth/qoder/bulk-import/latest/route.js +0 -24
  1967. package/src/app/api/oauth/qoder/bulk-import/route.js +0 -49
  1968. package/src/app/api/pricing/route.js +0 -134
  1969. package/src/app/api/provider-nodes/[id]/route.js +0 -101
  1970. package/src/app/api/provider-nodes/route.js +0 -104
  1971. package/src/app/api/provider-nodes/validate/route.js +0 -201
  1972. package/src/app/api/providers/[id]/models/route.js +0 -605
  1973. package/src/app/api/providers/[id]/route.js +0 -189
  1974. package/src/app/api/providers/[id]/test/route.js +0 -23
  1975. package/src/app/api/providers/[id]/test/testUtils.js +0 -811
  1976. package/src/app/api/providers/[id]/test-models/route.js +0 -66
  1977. package/src/app/api/providers/bulk-delete/route.js +0 -60
  1978. package/src/app/api/providers/client/route.js +0 -134
  1979. package/src/app/api/providers/kilo/free-models/route.js +0 -55
  1980. package/src/app/api/providers/route.js +0 -207
  1981. package/src/app/api/providers/suggested-models/filters.js +0 -20
  1982. package/src/app/api/providers/suggested-models/route.js +0 -33
  1983. package/src/app/api/providers/test-batch/route.js +0 -131
  1984. package/src/app/api/providers/validate/route.js +0 -637
  1985. package/src/app/api/proxy-pools/[id]/route.js +0 -123
  1986. package/src/app/api/proxy-pools/[id]/test/route.js +0 -70
  1987. package/src/app/api/proxy-pools/cloudflare-deploy/route.js +0 -145
  1988. package/src/app/api/proxy-pools/deno-deploy/route.js +0 -175
  1989. package/src/app/api/proxy-pools/route.js +0 -93
  1990. package/src/app/api/proxy-pools/vercel-deploy/route.js +0 -142
  1991. package/src/app/api/pxpipe/health/route.js +0 -16
  1992. package/src/app/api/pxpipe/install/route.js +0 -20
  1993. package/src/app/api/pxpipe/logs/route.js +0 -21
  1994. package/src/app/api/pxpipe/restart/route.js +0 -16
  1995. package/src/app/api/pxpipe/start/route.js +0 -26
  1996. package/src/app/api/pxpipe/stats/route.js +0 -17
  1997. package/src/app/api/pxpipe/status/route.js +0 -21
  1998. package/src/app/api/pxpipe/stop/route.js +0 -16
  1999. package/src/app/api/settings/database/route.js +0 -36
  2000. package/src/app/api/settings/proxy-test/route.js +0 -23
  2001. package/src/app/api/settings/require-login/route.js +0 -15
  2002. package/src/app/api/settings/route.js +0 -115
  2003. package/src/app/api/shutdown/route.js +0 -24
  2004. package/src/app/api/tags/route.js +0 -18
  2005. package/src/app/api/terminal/auth/setup/route.js +0 -72
  2006. package/src/app/api/terminal/auth/status/route.js +0 -27
  2007. package/src/app/api/terminal/auth/unlock/route.js +0 -69
  2008. package/src/app/api/terminal/session/[id]/input/route.js +0 -32
  2009. package/src/app/api/terminal/session/[id]/resize/route.js +0 -18
  2010. package/src/app/api/terminal/session/[id]/route.js +0 -37
  2011. package/src/app/api/terminal/session/[id]/stream/route.js +0 -100
  2012. package/src/app/api/terminal/session/route.js +0 -30
  2013. package/src/app/api/translator/console-logs/route.js +0 -24
  2014. package/src/app/api/translator/console-logs/stream/route.js +0 -79
  2015. package/src/app/api/translator/load/route.js +0 -45
  2016. package/src/app/api/translator/save/route.js +0 -44
  2017. package/src/app/api/translator/send/route.js +0 -94
  2018. package/src/app/api/translator/translate/route.js +0 -90
  2019. package/src/app/api/tunnel/disable/route.js +0 -12
  2020. package/src/app/api/tunnel/enable/route.js +0 -16
  2021. package/src/app/api/tunnel/status/route.js +0 -13
  2022. package/src/app/api/tunnel/tailscale-check/route.js +0 -50
  2023. package/src/app/api/tunnel/tailscale-disable/route.js +0 -12
  2024. package/src/app/api/tunnel/tailscale-enable/route.js +0 -12
  2025. package/src/app/api/tunnel/tailscale-install/route.js +0 -72
  2026. package/src/app/api/usage/[connectionId]/route.js +0 -40
  2027. package/src/app/api/usage/aggregate/route.js +0 -120
  2028. package/src/app/api/usage/chart/route.js +0 -21
  2029. package/src/app/api/usage/history/route.js +0 -12
  2030. package/src/app/api/usage/logs/route.js +0 -12
  2031. package/src/app/api/usage/providers/route.js +0 -42
  2032. package/src/app/api/usage/request-details/route.js +0 -57
  2033. package/src/app/api/usage/request-logs/route.js +0 -13
  2034. package/src/app/api/usage/stats/route.js +0 -23
  2035. package/src/app/api/usage/stream/route.js +0 -79
  2036. package/src/app/api/v1/api/chat/route.js +0 -37
  2037. package/src/app/api/v1/audio/speech/route.js +0 -16
  2038. package/src/app/api/v1/audio/transcriptions/route.js +0 -19
  2039. package/src/app/api/v1/audio/voices/route.js +0 -68
  2040. package/src/app/api/v1/chat/completions/route.js +0 -35
  2041. package/src/app/api/v1/embeddings/route.js +0 -21
  2042. package/src/app/api/v1/images/generations/route.js +0 -16
  2043. package/src/app/api/v1/messages/count_tokens/route.js +0 -59
  2044. package/src/app/api/v1/messages/route.js +0 -36
  2045. package/src/app/api/v1/models/[kind]/route.js +0 -55
  2046. package/src/app/api/v1/models/info/route.js +0 -110
  2047. package/src/app/api/v1/models/route.js +0 -497
  2048. package/src/app/api/v1/responses/compact/route.js +0 -37
  2049. package/src/app/api/v1/responses/route.js +0 -30
  2050. package/src/app/api/v1/route.js +0 -1
  2051. package/src/app/api/v1/search/route.js +0 -21
  2052. package/src/app/api/v1/web/fetch/route.js +0 -21
  2053. package/src/app/api/v1beta/models/[...path]/route.js +0 -368
  2054. package/src/app/api/v1beta/models/route.js +0 -44
  2055. package/src/app/api/version/route.js +0 -198
  2056. package/src/app/api/version/shutdown/route.js +0 -15
  2057. package/src/app/api/version/update/route.js +0 -21
  2058. package/src/app/callback/page.js +0 -149
  2059. package/src/app/dashboard/settings/pricing/page.js +0 -174
  2060. package/src/app/globals.css +0 -659
  2061. package/src/app/landing/components/AnimatedBackground.js +0 -57
  2062. package/src/app/landing/components/Features.js +0 -133
  2063. package/src/app/landing/components/FlowAnimation.js +0 -175
  2064. package/src/app/landing/components/Footer.js +0 -61
  2065. package/src/app/landing/components/GetStarted.js +0 -97
  2066. package/src/app/landing/components/HeroSection.js +0 -72
  2067. package/src/app/landing/components/HowItWorks.js +0 -66
  2068. package/src/app/landing/components/Navigation.js +0 -77
  2069. package/src/app/landing/page.js +0 -106
  2070. package/src/app/layout.js +0 -48
  2071. package/src/app/login/page.js +0 -197
  2072. package/src/app/manifest.js +0 -30
  2073. package/src/app/page.js +0 -5
  2074. package/src/dashboardGuard.js +0 -288
  2075. package/src/i18n/RuntimeI18nProvider.js +0 -27
  2076. package/src/i18n/config.js +0 -146
  2077. package/src/i18n/runtime.js +0 -162
  2078. package/src/lib/alerter.js +0 -122
  2079. package/src/lib/appUpdater.js +0 -204
  2080. package/src/lib/auth/dashboardSession.js +0 -68
  2081. package/src/lib/auth/loginLimiter.js +0 -52
  2082. package/src/lib/auth/oidc.js +0 -303
  2083. package/src/lib/auth/terminalSession.js +0 -88
  2084. package/src/lib/autoclaw/constants.js +0 -63
  2085. package/src/lib/consoleLogBuffer.js +0 -79
  2086. package/src/lib/dataDir.js +0 -29
  2087. package/src/lib/db/adapters/betterSqliteAdapter.js +0 -55
  2088. package/src/lib/db/adapters/bunSqliteAdapter.js +0 -63
  2089. package/src/lib/db/adapters/nodeSqliteAdapter.js +0 -84
  2090. package/src/lib/db/adapters/sqljsAdapter.js +0 -150
  2091. package/src/lib/db/backup.js +0 -36
  2092. package/src/lib/db/dataDirMigration.js +0 -52
  2093. package/src/lib/db/driver.js +0 -111
  2094. package/src/lib/db/helpers/jsonCol.js +0 -9
  2095. package/src/lib/db/helpers/kvStore.js +0 -39
  2096. package/src/lib/db/helpers/metaStore.js +0 -22
  2097. package/src/lib/db/index.js +0 -218
  2098. package/src/lib/db/maintenance.js +0 -72
  2099. package/src/lib/db/migrate.js +0 -295
  2100. package/src/lib/db/migrations/001-initial.js +0 -17
  2101. package/src/lib/db/migrations/index.js +0 -10
  2102. package/src/lib/db/paths.js +0 -21
  2103. package/src/lib/db/repos/aliasRepo.js +0 -62
  2104. package/src/lib/db/repos/apiKeysRepo.js +0 -193
  2105. package/src/lib/db/repos/combosRepo.js +0 -73
  2106. package/src/lib/db/repos/connectionsRepo.js +0 -247
  2107. package/src/lib/db/repos/contextFilesRepo.js +0 -124
  2108. package/src/lib/db/repos/disabledModelsRepo.js +0 -56
  2109. package/src/lib/db/repos/nodesRepo.js +0 -95
  2110. package/src/lib/db/repos/pricingRepo.js +0 -108
  2111. package/src/lib/db/repos/proxyPoolsRepo.js +0 -103
  2112. package/src/lib/db/repos/quotaCacheRepo.js +0 -80
  2113. package/src/lib/db/repos/requestDetailsRepo.js +0 -249
  2114. package/src/lib/db/repos/settingsRepo.js +0 -118
  2115. package/src/lib/db/repos/usageRepo.js +0 -796
  2116. package/src/lib/db/schema.js +0 -193
  2117. package/src/lib/db/version.js +0 -21
  2118. package/src/lib/disabledModelsDb.js +0 -4
  2119. package/src/lib/headroom/detect.js +0 -192
  2120. package/src/lib/headroom/process.js +0 -260
  2121. package/src/lib/localDb.js +0 -26
  2122. package/src/lib/mcp/stdioSseBridge.js +0 -198
  2123. package/src/lib/mitmAliasCache.js +0 -46
  2124. package/src/lib/network/connectionProxy.js +0 -187
  2125. package/src/lib/network/initOutboundProxy.js +0 -25
  2126. package/src/lib/network/outboundProxy.js +0 -82
  2127. package/src/lib/network/proxyTest.js +0 -91
  2128. package/src/lib/oauth/constants/oauth.js +0 -337
  2129. package/src/lib/oauth/constants/xai.js +0 -61
  2130. package/src/lib/oauth/providers.js +0 -1821
  2131. package/src/lib/oauth/services/antigravity.js +0 -321
  2132. package/src/lib/oauth/services/antigravityBulkImportManager.js +0 -364
  2133. package/src/lib/oauth/services/autoclawTokenMonitor.js +0 -145
  2134. package/src/lib/oauth/services/bulkImportBrowserEngine.js +0 -646
  2135. package/src/lib/oauth/services/claude.js +0 -136
  2136. package/src/lib/oauth/services/cloudflareAiBulkImportManager.js +0 -503
  2137. package/src/lib/oauth/services/codebuddyAutomation.js +0 -6
  2138. package/src/lib/oauth/services/codebuddyBulkImportManager.js +0 -1033
  2139. package/src/lib/oauth/services/codebuddyCnBulkImportManager.js +0 -1878
  2140. package/src/lib/oauth/services/codebuddyCnPhoneAutomation.js +0 -1234
  2141. package/src/lib/oauth/services/codex.js +0 -144
  2142. package/src/lib/oauth/services/cursor.js +0 -179
  2143. package/src/lib/oauth/services/displayEnv.js +0 -134
  2144. package/src/lib/oauth/services/fiveSimClient.js +0 -370
  2145. package/src/lib/oauth/services/gemini.js +0 -240
  2146. package/src/lib/oauth/services/github.js +0 -225
  2147. package/src/lib/oauth/services/googleAutomation.js +0 -9
  2148. package/src/lib/oauth/services/iflow.js +0 -202
  2149. package/src/lib/oauth/services/index.js +0 -17
  2150. package/src/lib/oauth/services/kiro.js +0 -334
  2151. package/src/lib/oauth/services/kiroBulkImportManager.js +0 -1389
  2152. package/src/lib/oauth/services/kiroConnections.js +0 -93
  2153. package/src/lib/oauth/services/kiroGoogleAutomation.js +0 -2587
  2154. package/src/lib/oauth/services/oauth.js +0 -157
  2155. package/src/lib/oauth/services/openai.js +0 -123
  2156. package/src/lib/oauth/services/proxyUtils.js +0 -26
  2157. package/src/lib/oauth/services/qoder.js +0 -233
  2158. package/src/lib/oauth/services/qoderBulkImportManager.js +0 -340
  2159. package/src/lib/oauth/services/qwen.js +0 -170
  2160. package/src/lib/oauth/services/socksHttpBridge.js +0 -165
  2161. package/src/lib/oauth/services/tempmailClient.js +0 -288
  2162. package/src/lib/oauth/services/xai.js +0 -238
  2163. package/src/lib/oauth/utils/banner.js +0 -63
  2164. package/src/lib/oauth/utils/pkce.js +0 -39
  2165. package/src/lib/oauth/utils/server.js +0 -415
  2166. package/src/lib/oauth/utils/ui.js +0 -48
  2167. package/src/lib/providerNormalization.js +0 -45
  2168. package/src/lib/pxpipe/events.js +0 -125
  2169. package/src/lib/pxpipe/install.js +0 -123
  2170. package/src/lib/pxpipe/loader.js +0 -70
  2171. package/src/lib/pxpipe/service.js +0 -49
  2172. package/src/lib/qoder/constants.js +0 -64
  2173. package/src/lib/qoder/cosy.js +0 -175
  2174. package/src/lib/qoder/encoding.js +0 -55
  2175. package/src/lib/requestDetailsDb.js +0 -4
  2176. package/src/lib/responseCache.js +0 -159
  2177. package/src/lib/safeFetch.js +0 -70
  2178. package/src/lib/systemSpecs.js +0 -167
  2179. package/src/lib/terminal/ptyBridge.py +0 -163
  2180. package/src/lib/terminal/sessionManager.js +0 -434
  2181. package/src/lib/tunnel/cloudflare/cloudflared.js +0 -460
  2182. package/src/lib/tunnel/cloudflare/config.js +0 -9
  2183. package/src/lib/tunnel/cloudflare/healthCheck.js +0 -29
  2184. package/src/lib/tunnel/cloudflare/manager.js +0 -151
  2185. package/src/lib/tunnel/cloudflare/pid.js +0 -23
  2186. package/src/lib/tunnel/index.js +0 -48
  2187. package/src/lib/tunnel/shared/dnsResolver.js +0 -17
  2188. package/src/lib/tunnel/shared/internetCheck.js +0 -26
  2189. package/src/lib/tunnel/shared/state.js +0 -41
  2190. package/src/lib/tunnel/shared/watchdogConfig.js +0 -8
  2191. package/src/lib/tunnel/tailscale/config.js +0 -7
  2192. package/src/lib/tunnel/tailscale/healthCheck.js +0 -29
  2193. package/src/lib/tunnel/tailscale/manager.js +0 -129
  2194. package/src/lib/tunnel/tailscale/tailscale.js +0 -790
  2195. package/src/lib/updater/updater.js +0 -327
  2196. package/src/lib/usage/fetcher.js +0 -208
  2197. package/src/lib/usage/quotaRefresh.js +0 -71
  2198. package/src/lib/usage/quotaService.js +0 -154
  2199. package/src/lib/usageDb.js +0 -7
  2200. package/src/mitm/antigravityIdeVersion.js +0 -50
  2201. package/src/mitm/cert/generate.js +0 -32
  2202. package/src/mitm/cert/install.js +0 -274
  2203. package/src/mitm/cert/rootCA.js +0 -173
  2204. package/src/mitm/config.js +0 -87
  2205. package/src/mitm/dbReader.js +0 -22
  2206. package/src/mitm/dns/dnsConfig.js +0 -266
  2207. package/src/mitm/handlers/antigravity.js +0 -33
  2208. package/src/mitm/handlers/base.js +0 -226
  2209. package/src/mitm/handlers/copilot.js +0 -35
  2210. package/src/mitm/handlers/cursor.js +0 -15
  2211. package/src/mitm/handlers/kiro.js +0 -533
  2212. package/src/mitm/logger.js +0 -106
  2213. package/src/mitm/manager.js +0 -862
  2214. package/src/mitm/paths.js +0 -32
  2215. package/src/mitm/server.js +0 -447
  2216. package/src/mitm/winElevated.js +0 -81
  2217. package/src/models/index.js +0 -38
  2218. package/src/proxy.js +0 -5
  2219. package/src/shared/components/AddCustomEmbeddingModal.js +0 -184
  2220. package/src/shared/components/Avatar.js +0 -88
  2221. package/src/shared/components/Badge.js +0 -54
  2222. package/src/shared/components/BulkAccountAutomationModal.js +0 -644
  2223. package/src/shared/components/Button.js +0 -57
  2224. package/src/shared/components/Card.js +0 -116
  2225. package/src/shared/components/ChangelogModal.js +0 -108
  2226. package/src/shared/components/CodeBuddyCnPhoneRegisterModal.js +0 -565
  2227. package/src/shared/components/CodeBuddyQuotaCookieModal.js +0 -109
  2228. package/src/shared/components/ComboFormModal.js +0 -176
  2229. package/src/shared/components/CursorAuthModal.js +0 -213
  2230. package/src/shared/components/Drawer.js +0 -82
  2231. package/src/shared/components/EditConnectionModal.js +0 -287
  2232. package/src/shared/components/Footer.js +0 -132
  2233. package/src/shared/components/GitLabAuthModal.js +0 -194
  2234. package/src/shared/components/Header.js +0 -399
  2235. package/src/shared/components/HeaderLanguage.js +0 -48
  2236. package/src/shared/components/HeaderMenu.js +0 -127
  2237. package/src/shared/components/IFlowCookieModal.js +0 -132
  2238. package/src/shared/components/Input.js +0 -76
  2239. package/src/shared/components/KiroAuthModal.js +0 -1172
  2240. package/src/shared/components/KiroOAuthWrapper.js +0 -150
  2241. package/src/shared/components/KiroSocialOAuthModal.js +0 -205
  2242. package/src/shared/components/LanguageSwitcher.js +0 -192
  2243. package/src/shared/components/Loading.js +0 -75
  2244. package/src/shared/components/ManualConfigModal.js +0 -44
  2245. package/src/shared/components/McpMarketplaceModal.js +0 -255
  2246. package/src/shared/components/Modal.js +0 -193
  2247. package/src/shared/components/ModelSelectModal.js +0 -547
  2248. package/src/shared/components/NoAuthProxyCard.js +0 -134
  2249. package/src/shared/components/OAuthModal.js +0 -709
  2250. package/src/shared/components/Pagination.js +0 -150
  2251. package/src/shared/components/PricingModal.js +0 -209
  2252. package/src/shared/components/ProviderIcon.js +0 -68
  2253. package/src/shared/components/ProviderInfoCard.js +0 -82
  2254. package/src/shared/components/RequestLogger.js +0 -122
  2255. package/src/shared/components/SegmentedControl.js +0 -53
  2256. package/src/shared/components/Select.js +0 -67
  2257. package/src/shared/components/Sidebar.js +0 -486
  2258. package/src/shared/components/ThemeProvider.js +0 -15
  2259. package/src/shared/components/ThemeToggle.js +0 -42
  2260. package/src/shared/components/Toggle.js +0 -95
  2261. package/src/shared/components/Tooltip.js +0 -25
  2262. package/src/shared/components/UsageStats.js +0 -574
  2263. package/src/shared/components/index.js +0 -46
  2264. package/src/shared/components/layouts/AuthLayout.js +0 -29
  2265. package/src/shared/components/layouts/DashboardLayout.js +0 -121
  2266. package/src/shared/components/layouts/index.js +0 -4
  2267. package/src/shared/constants/automationProviders.js +0 -23
  2268. package/src/shared/constants/cliTools.js +0 -397
  2269. package/src/shared/constants/colors.js +0 -77
  2270. package/src/shared/constants/config.js +0 -98
  2271. package/src/shared/constants/coworkPlugins.js +0 -75
  2272. package/src/shared/constants/index.js +0 -4
  2273. package/src/shared/constants/locales.js +0 -36
  2274. package/src/shared/constants/mitmToolHosts.js +0 -12
  2275. package/src/shared/constants/models.js +0 -38
  2276. package/src/shared/constants/pricing.js +0 -311
  2277. package/src/shared/constants/providers.js +0 -450
  2278. package/src/shared/constants/ttsProviders.js +0 -138
  2279. package/src/shared/hooks/index.js +0 -2
  2280. package/src/shared/hooks/useCopyToClipboard.js +0 -43
  2281. package/src/shared/hooks/useTheme.js +0 -60
  2282. package/src/shared/services/bootstrap.js +0 -12
  2283. package/src/shared/services/initializeApp.js +0 -277
  2284. package/src/shared/utils/api.js +0 -93
  2285. package/src/shared/utils/apiKey.js +0 -98
  2286. package/src/shared/utils/clineAuth.js +0 -37
  2287. package/src/shared/utils/cn.js +0 -11
  2288. package/src/shared/utils/codexCliConfig.js +0 -44
  2289. package/src/shared/utils/connectionStatus.js +0 -162
  2290. package/src/shared/utils/index.js +0 -40
  2291. package/src/shared/utils/machine.js +0 -6
  2292. package/src/shared/utils/machineId.js +0 -66
  2293. package/src/shared/utils/providerModelsFetcher.js +0 -30
  2294. package/src/sse/handlers/chat.js +0 -436
  2295. package/src/sse/handlers/embeddings.js +0 -141
  2296. package/src/sse/handlers/fetch.js +0 -213
  2297. package/src/sse/handlers/imageGeneration.js +0 -142
  2298. package/src/sse/handlers/search.js +0 -206
  2299. package/src/sse/handlers/stt.js +0 -88
  2300. package/src/sse/handlers/tts.js +0 -114
  2301. package/src/sse/services/auth.js +0 -537
  2302. package/src/sse/services/codexGateway.js +0 -215
  2303. package/src/sse/services/model.js +0 -99
  2304. package/src/sse/services/tokenRefresh.js +0 -319
  2305. package/src/sse/utils/logger.js +0 -75
  2306. package/src/store/headerSearchStore.js +0 -19
  2307. package/src/store/index.js +0 -6
  2308. package/src/store/notificationStore.js +0 -45
  2309. package/src/store/providerStore.js +0 -55
  2310. package/src/store/settingsStore.js +0 -51
  2311. package/src/store/themeStore.js +0 -54
  2312. package/src/store/userStore.js +0 -20
  2313. package/start.sh +0 -4
  2314. /package/cli/app/.next-cli-build/static/{gQ1kqTy9hoyJ5eXUJs8MC → sRgS_5eNahHOIlOLEqVvI}/_ssgManifest.js +0 -0
@@ -1,3 +1,3 @@
1
1
  exports.id=8242,exports.ids=[8242],exports.modules={43173:(a,b,c)=>{"use strict";c.d(b,{default:()=>m});var d=c(48249),e=c(67484),f=c(49885),g=c.n(f),h=c(2116),i=c.n(h),j=c(50412),k=c(50377);let l=[{icon:"public",title:"Access Anywhere",desc:"Use your API from any network"},{icon:"group",title:"Share Endpoint",desc:"Share URL with team members"},{icon:"code",title:"Use in Cursor/Cline",desc:"Connect AI tools remotely"},{icon:"lock",title:"Encrypted",desc:"End-to-end TLS via Cloudflare"}];function m({machineId:a}){let[b,c]=(0,e.useState)([]),[f,g]=(0,e.useState)(!0),[h,r]=(0,e.useState)(!1),[s,t]=(0,e.useState)(""),[u,v]=(0,e.useState)(null),[w,x]=(0,e.useState)(null),[y,z]=(0,e.useState)(null),[A,B]=(0,e.useState)(null),[C,D]=(0,e.useState)(()=>new Set),[E,F]=(0,e.useState)(()=>({})),[G,H]=(0,e.useState)(!1),[I,J]=(0,e.useState)(!0),[K,L]=(0,e.useState)(!0),[M,N]=(0,e.useState)(!1),[O,P]=(0,e.useState)(!0),[Q,R]=(0,e.useState)(!1),[S,T]=(0,e.useState)(!1),[U,V]=(0,e.useState)(""),[W,X]=(0,e.useState)(""),[Y,Z]=(0,e.useState)(!1),[$,_]=(0,e.useState)(""),[aa,ab]=(0,e.useState)(null),[ac,ad]=(0,e.useState)(!1),[ae,af]=(0,e.useState)(!1),[ag,ah]=(0,e.useState)(!1),[ai,aj]=(0,e.useState)(!1),[ak,al]=(0,e.useState)(""),[am,an]=(0,e.useState)(!1),[ao,ap]=(0,e.useState)(""),[aq,ar]=(0,e.useState)(null),[as,at]=(0,e.useState)(""),[au,av]=(0,e.useState)(""),[aw,ax]=(0,e.useState)(null),[ay,az]=(0,e.useState)(!1),[aA,aB]=(0,e.useState)([]),[aC,aD]=(0,e.useState)(""),[aE,aF]=(0,e.useState)(!1),[aG,aH]=(0,e.useState)(!1),[aI,aJ]=(0,e.useState)(!1),aK=(0,e.useRef)(null);(0,e.useRef)(0),(0,e.useRef)(0),(0,e.useRef)(!1),(0,e.useRef)(!1),(0,e.useRef)(!1),(0,e.useRef)(!1);let[aL,aM]=(0,e.useState)(!1),[aN,aO]=(0,e.useState)(!1),[aP,aQ]=(0,e.useState)(!1),{copied:aR,copy:aS}=(0,k.C)(),aT=!I||!K,aU=I?"Change the default dashboard password before activating the tunnel.":'Enable "Require login" and set a custom password before activating the tunnel.';(0,e.useCallback)((a,b,c,d,e,f)=>{b.current?(c.current=0,d(!0),e.current||(e.current=!0,f(!0))):(c.current+=1,c.current>=5&&d(!1))},[]);let aV=async a=>{try{(await fetch("/api/settings",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({tunnelDashboardAccess:a})})).ok&&N(a)}catch(a){console.log("Error updating tunnelDashboardAccess:",a)}},aW=async a=>{try{(await fetch("/api/settings",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({requireApiKey:a})})).ok&&H(a)}catch(a){console.log("Error updating requireApiKey:",a)}},aX=async()=>{try{let a=await fetch("/api/keys"),b=await a.json();a.ok&&c(b.keys||[])}catch(a){console.log("Error fetching data:",a)}finally{g(!1)}},aY=async(...a)=>{Z(!0),_("Waiting for tunnel ready...");let b=a.filter(Boolean).map(a=>`${a}/api/health`),c=Date.now();for(;Date.now()-c<3e5;){if(await new Promise(a=>setTimeout(a,2e3)),await Promise.any(b.map(async a=>{if((await fetch(a,{mode:"cors",cache:"no-store"})).ok)return!0;throw Error("not ready")})).catch(()=>!1))return R(!0),Z(!1),_(""),!0;if((Date.now()-c)%1e4<2e3)try{let a=await fetch("/api/tunnel/status");if(a.ok){let b=await a.json();if(!b.tunnel?.enabled)return ab({type:"error",message:"Tunnel process stopped unexpectedly."}),Z(!1),_(""),!1}}catch{}}return ab({type:"error",message:"Tunnel created but not reachable. Please try again."}),Z(!1),_(""),!1},aZ=async()=>{ad(!1),Z(!0),ab(null),_("Creating tunnel...");let a=!0;(async()=>{for(;a;){try{let b=await fetch("/api/tunnel/status");if(b.ok){let c=await b.json();c.download?.downloading?_(`Downloading cloudflared... ${c.download.progress}%`):a&&_("Creating tunnel...")}}catch{}await new Promise(a=>setTimeout(a,1e3))}})();try{let b=await fetch("/api/tunnel/enable",{method:"POST"});a=!1;let c=await b.json();if(!b.ok)return void ab({type:"error",message:c.error||"Failed to enable tunnel"});let d=c.tunnelUrl;if(!d)return void ab({type:"error",message:"No tunnel URL returned"});V(d),X(c.publicUrl||""),await aY(c.publicUrl,d)}catch(a){ab({type:"error",message:a.message})}finally{a=!1,Z(!1),_("")}},a$=async()=>{Z(!0),ab(null);try{let a=await fetch("/api/tunnel/disable",{method:"POST"}),b=await a.json();a.ok?(R(!1),V(""),af(!1),ab({type:"success",message:"Tunnel disabled"})):ab({type:"error",message:b.error||"Failed to disable tunnel"})}catch(a){ab({type:"error",message:a.message})}finally{Z(!1)}},a_=async()=>{ax(null);try{let a=await fetch("/api/tunnel/tailscale-check");if(a.ok){let b=await a.json();return ax(b.installed),b}}catch{}return ax(!1),{installed:!1}},a0=async()=>{az(!0),ar(null),aB([]);try{let a=await fetch("/api/tunnel/tailscale-install",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sudoPassword:aC})});aD("");let b=a.body.getReader(),c=new TextDecoder,d="";for(;;){let{done:a,value:e}=await b.read();if(a)break;let f=(d+=c.decode(e,{stream:!0})).split("\n\n");for(let a of(d=f.pop()||"",f)){let b=a.split("\n"),c="progress",d=null;for(let a of b)if(a.startsWith("event: ")&&(c=a.slice(7).trim()),a.startsWith("data: "))try{d=JSON.parse(a.slice(6))}catch{}if(d)if("progress"===c)aB(a=>[...a.slice(-50),d.message]);else if("done"===c){ax(!0),az(!1),aH(!1),a4();return}else"error"===c&&ar({type:"error",message:d.error||"Install failed"})}}}catch(a){ar({type:"error",message:a.message})}finally{az(!1)}},a1=async a=>{ap("Waiting for Tailscale ready...");let b=`${a}/api/health`,c=Date.now();for(;Date.now()-c<3e5;){await new Promise(a=>setTimeout(a,2e3));try{let a=await fetch(b,{mode:"no-cors",cache:"no-store"});if(a.ok||"opaque"===a.type)return!0}catch{}}return!1},a2=(a,b)=>{at(a),av(b)},a3=()=>{at(""),av("")},a4=async()=>{aH(!1),aF(!0),an(!0),ar(null),ap("Connecting..."),a3();try{let a=await fetch("/api/tunnel/tailscale-enable",{method:"POST"}),b=await a.json();if(a.ok&&b.success){al(b.tunnelUrl||"");let a=await a1(b.tunnelUrl);ah(!0),ar(a?null:{type:"warning",message:"Connected but not reachable yet."});return}if(b.needsLogin&&b.authUrl){a2(b.authUrl,"Open Login Page"),ap('Login required — click "Open Login Page" to continue');for(let a=0;a<40;a++){await new Promise(a=>setTimeout(a,3e3));try{let a=await fetch("/api/tunnel/tailscale-check");if(a.ok&&(await a.json()).loggedIn){a3(),ap("Starting funnel...");let a=await fetch("/api/tunnel/tailscale-enable",{method:"POST"}),b=await a.json();if(a.ok&&b.success){al(b.tunnelUrl||"");let a=await a1(b.tunnelUrl);ah(!0),ar(a?null:{type:"warning",message:"Connected but not reachable yet."})}else b.funnelNotEnabled&&b.enableUrl?await a5(b.enableUrl):ar({type:"error",message:b.error||"Failed to start funnel"});return}}catch{}}a3(),ar({type:"error",message:"Login timed out. Please try again."});return}if(b.funnelNotEnabled&&b.enableUrl)return void await a5(b.enableUrl);ar({type:"error",message:b.error||"Failed to connect"})}catch(a){ar({type:"error",message:a.message})}finally{an(!1),aF(!1),ap(""),a3()}},a5=async a=>{a2(a,"Open Funnel Settings"),ap('Click "Open Funnel Settings" to enable Funnel...');for(let a=0;a<40;a++){await new Promise(a=>setTimeout(a,3e3));try{let a=await fetch("/api/tunnel/tailscale-enable",{method:"POST"}),b=await a.json();if(a.ok&&b.success){a3(),al(b.tunnelUrl||"");let a=await a1(b.tunnelUrl);ah(!0),ar(a?null:{type:"warning",message:"Connected but not reachable yet."});return}if(b.funnelNotEnabled)continue;if(b.error){a3(),ar({type:"error",message:b.error});return}}catch{}}a3(),ar({type:"error",message:"Timed out waiting for Funnel to be enabled."})},a6=async()=>{an(!0),ar(null);try{let a=await fetch("/api/tunnel/tailscale-disable",{method:"POST"}),b=await a.json();a.ok?(ah(!1),al(""),aJ(!1),ar({type:"success",message:"Tailscale disabled"})):ar({type:"error",message:b.error||"Failed to disable Tailscale"})}catch(a){ar({type:"error",message:a.message})}finally{an(!1)}},a7=async()=>{ar(null),aB([]);let a=await a_();a?.installed&&a?.hasCachedPassword?a4():aH(!0)},a8=async a=>{if(a.preventDefault(),s.trim()&&!y){z("create"),B(null);try{let a=await fetch("/api/keys",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:s})}),b=await a.json();if(!a.ok)throw Error(b.error||`Failed to create key (${a.status})`);v(b.key),b.id&&b.key&&F(a=>({...a,[b.id]:b.key})),await aX(),t(""),r(!1),B({type:"success",message:"API key created"})}catch(a){B({type:"error",message:a.message})}finally{z(null)}}},a9=async(a,b)=>{if(!y){z(`toggle:${a}`),B(null);try{let d=await fetch(`/api/keys/${a}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({isActive:b})});if(!d.ok)throw Error(`Failed to update key (${d.status})`);c(c=>c.map(c=>c.id===a?{...c,isActive:b}:c)),B({type:"success",message:"API key updated"})}catch(a){B({type:"error",message:a.message})}finally{z(null)}}},ba=async(a,b,d)=>{if(y)return;let e=""===d?0:Math.max(0,Number(d)||0);z(`budget:${a}`),B(null);try{let d=await fetch(`/api/keys/${a}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({[b]:e})});if(!d.ok)throw Error(`Failed to update budget (${d.status})`);c(c=>c.map(c=>c.id===a?{...c,[b]:e}:c)),B({type:"success",message:"Budget updated"})}catch(a){B({type:"error",message:a.message})}finally{z(null)}},bb=async a=>{if(E[a])return E[a];let b=await fetch(`/api/keys/${a}?reveal=1`,{cache:"no-store"}),c=await b.json().catch(()=>({}));if(!b.ok)throw Error(c.error||`Failed to reveal key (${b.status})`);let d=c.key?.key||c.key;if("string"!=typeof d||!d)throw Error("Key secret is not available");return F(b=>({...b,[a]:d})),d},bc=async a=>{if(C.has(a))return void D(b=>{let c=new Set(b);return c.delete(a),c});try{await bb(a),D(b=>{let c=new Set(b);return c.add(a),c}),B(null)}catch(a){B({type:"error",message:a.message})}},bd=async a=>{try{let b=await bb(a);aS(b,a),B(null)}catch(a){B({type:"error",message:a.message})}},[be,bf]=(0,e.useState)("/v1");return f?(0,d.jsxs)("div",{className:"flex flex-col gap-6 lg:gap-7",children:[(0,d.jsx)(j.Qv,{}),(0,d.jsx)(j.Qv,{})]}):(0,d.jsxs)("div",{className:"flex flex-col gap-6 lg:gap-7",children:[(0,d.jsxs)(j.Zp,{padding:"none",children:[(0,d.jsxs)("div",{className:"flex items-center gap-3 rounded-t-[13px] border-b border-border-subtle bg-linear-to-r from-primary/[0.07] via-primary/[0.025] to-transparent px-4 py-4 sm:px-5",children:[(0,d.jsx)("span",{className:"material-symbols-outlined flex size-11 shrink-0 items-center justify-center rounded-xl bg-primary/12 text-[22px] text-primary ring-1 ring-primary/15",children:"terminal"}),(0,d.jsxs)("div",{children:[(0,d.jsx)("h2",{className:"text-lg font-semibold leading-tight",children:"API Endpoint"}),(0,d.jsx)("p",{className:"mt-0.5 text-xs text-text-muted",children:"Choose how local and remote clients connect to Zevai Router."})]})]}),(0,d.jsxs)("div",{className:"p-4 sm:p-5",children:[(0,d.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,d.jsx)(n,{label:"Local",url:be,copyId:"local_url",copied:aR,onCopy:aS}),(0,d.jsxs)("div",{className:"grid min-w-0 grid-cols-[minmax(0,1fr)_auto_auto] items-center gap-2.5 rounded-xl border border-border-subtle bg-bg/55 p-3 transition-colors hover:border-primary/20 sm:flex",children:[(0,d.jsx)("span",{className:`col-span-full inline-flex min-h-8 w-full shrink-0 items-center justify-center rounded-lg px-2.5 text-[11px] font-semibold uppercase tracking-[0.08em] sm:w-[96px] ${Q?"bg-primary/10 text-primary":"bg-surface-2 text-text-muted"}`,children:"Tunnel"}),Q&&!Y&&S?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(j.pd,{"aria-label":"Cloudflare Tunnel endpoint URL",value:`${W||U}/v1`,readOnly:!0,className:"w-full min-w-0 font-mono text-sm sm:flex-1"}),(0,d.jsx)("button",{onClick:()=>aS(`${W||U}/v1`,"tunnel_url"),className:"flex size-11 shrink-0 items-center justify-center rounded-xl text-text-muted transition-colors hover:bg-black/5 hover:text-primary dark:hover:bg-white/5 sm:size-9 sm:rounded-lg",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"tunnel_url"===aR?"check":"content_copy"})}),(0,d.jsx)("button",{onClick:()=>af(!0),className:"flex size-11 shrink-0 items-center justify-center rounded-xl text-red-500 transition-colors hover:bg-red-500/10 sm:size-9 sm:rounded-lg",title:"Disable Tunnel",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"power_settings_new"})})]}):!Q||Y||S?Y?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"flex-1 flex items-center gap-2 px-3 py-1.5 rounded border border-border bg-input text-sm text-text-muted",children:[(0,d.jsx)("span",{className:"material-symbols-outlined animate-spin text-sm",children:"progress_activity"}),$||"Creating tunnel..."]}),(0,d.jsx)("button",{onClick:()=>{Z(!1),_("")},className:"flex size-11 shrink-0 items-center justify-center rounded-xl text-red-500 transition-colors hover:bg-red-500/10 sm:size-9 sm:rounded-lg",title:"Stop",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"power_settings_new"})})]}):aa?.type==="error"?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"flex-1 flex items-center gap-2 px-3 py-1.5 rounded border border-red-300 dark:border-red-800 bg-red-500/5 text-sm text-red-600 dark:text-red-400",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-sm",children:"error"}),aa.message]}),(0,d.jsx)(j.$n,{size:"sm",icon:"cloud_upload",className:"min-h-11 sm:min-h-8",onClick:()=>ad(!0),children:"Enable"})]}):O?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"flex-1 flex items-center gap-2 px-3 py-1.5 rounded border border-border bg-input text-sm text-text-muted",children:[(0,d.jsx)("span",{className:"material-symbols-outlined animate-spin text-sm",children:"progress_activity"}),"Checking..."]}),(0,d.jsx)("button",{onClick:()=>P(!1),className:"flex size-11 shrink-0 items-center justify-center rounded-xl text-red-500 transition-colors hover:bg-red-500/10 sm:size-9 sm:rounded-lg",title:"Stop",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"power_settings_new"})})]}):(0,d.jsx)(j.$n,{size:"sm",icon:"cloud_upload",className:"min-h-11 sm:min-h-8",onClick:()=>{aT?ab({type:"error",message:`Security required: ${aU}`}):G?ad(!0):ab({type:"error",message:'Security required: Enable "Require API key" before activating the tunnel.'})},children:"Enable"}):(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"flex-1 flex items-center gap-2 px-3 py-1.5 rounded border border-amber-300 dark:border-amber-800 bg-amber-500/5 text-sm text-amber-600 dark:text-amber-400",children:[(0,d.jsx)("span",{className:"material-symbols-outlined animate-spin text-sm",children:"progress_activity"}),aL?"Tunnel reconnecting...":"Tunnel checking..."]}),(0,d.jsx)("button",{onClick:()=>af(!0),className:"flex size-11 shrink-0 items-center justify-center rounded-xl text-red-500 transition-colors hover:bg-red-500/10 sm:size-9 sm:rounded-lg",title:"Disable Tunnel",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"power_settings_new"})})]})]}),(0,d.jsxs)("div",{className:"grid min-w-0 grid-cols-[minmax(0,1fr)_auto_auto] items-center gap-2.5 rounded-xl border border-border-subtle bg-bg/55 p-3 transition-colors hover:border-primary/20 sm:flex",children:[(0,d.jsx)("span",{className:`col-span-full inline-flex min-h-8 w-full shrink-0 items-center justify-center rounded-lg px-2.5 text-[11px] font-semibold uppercase tracking-[0.08em] sm:w-[96px] ${ag?"bg-primary/10 text-primary":"bg-surface-2 text-text-muted"}`,children:"Tailscale"}),ag&&!am&&ai?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(j.pd,{"aria-label":"Tailscale endpoint URL",value:`${ak}/v1`,readOnly:!0,className:"w-full min-w-0 font-mono text-sm sm:flex-1"}),(0,d.jsx)("button",{onClick:()=>aS(`${ak}/v1`,"ts_url"),className:"flex size-11 shrink-0 items-center justify-center rounded-xl text-text-muted transition-colors hover:bg-black/5 hover:text-primary dark:hover:bg-white/5 sm:size-9 sm:rounded-lg",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"ts_url"===aR?"check":"content_copy"})}),(0,d.jsx)("button",{onClick:()=>aJ(!0),className:"flex size-11 shrink-0 items-center justify-center rounded-xl text-red-500 transition-colors hover:bg-red-500/10 sm:size-9 sm:rounded-lg",title:"Disable Tailscale",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"power_settings_new"})})]}):!ag||am||ai?am||aE?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"flex-1 flex items-center gap-2 px-3 py-1.5 rounded border border-border bg-input text-sm text-text-muted",children:[(0,d.jsx)("span",{className:"material-symbols-outlined animate-spin text-sm",children:"progress_activity"}),ao||"Connecting..."]}),as&&(0,d.jsx)(j.$n,{size:"sm",icon:"open_in_new",onClick:()=>window.open(as,"tailscale_auth","width=600,height=700,noopener,noreferrer"),children:au||"Open"}),(0,d.jsx)("button",{onClick:()=>{an(!1),aF(!1),ap(""),a3()},className:"flex size-11 shrink-0 items-center justify-center rounded-xl text-red-500 transition-colors hover:bg-red-500/10 sm:size-9 sm:rounded-lg",title:"Stop",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"power_settings_new"})})]}):aq?.type==="error"?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"flex-1 flex items-center gap-2 px-3 py-1.5 rounded border border-red-300 dark:border-red-800 bg-red-500/5 text-sm text-red-600 dark:text-red-400",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-sm",children:"error"}),aq.message]}),(0,d.jsx)(j.$n,{size:"sm",icon:"vpn_lock",className:"min-h-11 sm:min-h-8",onClick:a7,children:"Enable"})]}):(0,d.jsx)(j.$n,{size:"sm",icon:"vpn_lock",onClick:()=>{aT?ar({type:"error",message:`Security required: ${aU}`}):a7()},className:"min-h-11 sm:min-h-8",children:"Enable"}):(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"flex-1 flex items-center gap-2 px-3 py-1.5 rounded border border-amber-300 dark:border-amber-800 bg-amber-500/5 text-sm text-amber-600 dark:text-amber-400",children:[(0,d.jsx)("span",{className:"material-symbols-outlined animate-spin text-sm",children:"progress_activity"}),aN?"Tailscale reconnecting...":"Tailscale checking..."]}),(0,d.jsx)("button",{onClick:()=>aJ(!0),className:"flex size-11 shrink-0 items-center justify-center rounded-xl text-red-500 transition-colors hover:bg-red-500/10 sm:size-9 sm:rounded-lg",title:"Disable Tailscale",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"power_settings_new"})})]})]})]}),aT&&!Q&&!ag&&(0,d.jsx)("div",{className:"mt-4",children:(0,d.jsx)(q,{message:aU,action:{label:"Open settings",href:"/dashboard/profile"}})}),(Q||ag)&&(0,d.jsxs)("div",{className:"mt-4 flex flex-col gap-2",children:[!G&&(0,d.jsx)(q,{message:"Require API key is disabled — your endpoint is publicly accessible without authentication.",action:{label:"Enable",href:"#require-api-key"}}),(!I||!K)&&(0,d.jsx)(q,{message:I?"Dashboard uses the default password — change it in Profile settings.":"Require login is disabled — anyone can access your dashboard via tunnel.",action:{label:I?"Change password":"Enable",href:"/dashboard/profile"}})]}),(Q||ag)&&(0,d.jsxs)("div",{className:"mt-4 pt-4 border-t border-border flex items-center gap-3",children:[(0,d.jsx)(j.lM,{touchTarget:!0,label:"Allow dashboard access via tunnel",checked:M,onChange:()=>aV(!M)}),(0,d.jsx)(p,{text:"When enabled, the dashboard can be accessed through your tunnel or Tailscale URL (login still required). When disabled, dashboard access via tunnel/Tailscale is completely blocked."})]})]})]}),(0,d.jsx)(j.Zp,{id:"rtk",padding:"none",className:"relative overflow-hidden border-primary/20 bg-linear-to-br from-primary/[0.08] via-surface to-surface",children:(0,d.jsxs)("div",{className:"relative flex flex-col gap-4 p-5 sm:flex-row sm:items-center sm:justify-between",children:[(0,d.jsxs)("div",{className:"flex min-w-0 items-center gap-3.5",children:[(0,d.jsx)("span",{className:"material-symbols-outlined flex size-11 shrink-0 items-center justify-center rounded-xl bg-primary text-[22px] text-white shadow-[0_10px_24px_-14px_rgba(229,106,74,0.9)]",children:"bolt"}),(0,d.jsxs)("div",{className:"min-w-0",children:[(0,d.jsx)("h2",{className:"text-lg font-semibold leading-tight",children:"Token Saver"}),(0,d.jsx)("p",{className:"mt-1 text-sm text-text-muted",children:"Tune RTK, Caveman, Ponytail, Headroom, and PXPIPE in one workspace."})]})]}),(0,d.jsxs)(i(),{href:"/dashboard/token-saver",className:"inline-flex min-h-11 w-full shrink-0 items-center justify-center gap-1.5 rounded-xl border border-primary/25 bg-surface/80 px-3.5 py-2 text-sm font-semibold text-text-main shadow-sm transition-[border-color,color,transform] hover:translate-x-0.5 hover:border-primary/50 hover:text-primary sm:min-h-0 sm:w-auto sm:rounded-lg",children:["Open workspace",(0,d.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"arrow_forward"})]})]})}),(0,d.jsxs)(j.Zp,{id:"require-api-key",children:[(0,d.jsxs)("div",{className:"mb-5 flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between",children:[(0,d.jsxs)("div",{className:"flex min-w-0 items-center gap-3",children:[(0,d.jsx)("span",{className:"material-symbols-outlined flex size-11 shrink-0 items-center justify-center rounded-xl bg-primary/10 text-[21px] text-primary ring-1 ring-primary/15",children:"vpn_key"}),(0,d.jsxs)("div",{className:"min-w-0",children:[(0,d.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,d.jsx)("h2",{className:"text-lg font-semibold leading-tight",children:"API Keys"}),(0,d.jsxs)("span",{className:"rounded-full bg-surface-2 px-2 py-0.5 text-[10px] font-semibold text-text-muted ring-1 ring-border-subtle",children:[b.length," ",1===b.length?"key":"keys"]})]}),(0,d.jsx)("p",{className:"mt-0.5 text-xs text-text-muted",children:"Control authentication and spending per client."})]})]}),(0,d.jsx)(j.$n,{icon:"add",onClick:()=>r(!0),className:"w-full sm:w-auto",children:"Create Key"})]}),A&&(0,d.jsx)("p",{role:"status",className:`mb-4 text-sm ${"error"===A.type?"text-red-500":"text-green-500"}`,children:A.message}),(0,d.jsxs)("div",{className:"mb-4 flex flex-col gap-3 rounded-xl border border-primary/15 bg-primary/[0.045] p-4 sm:flex-row sm:items-center sm:justify-between",children:[(0,d.jsxs)("div",{className:"flex items-start gap-3",children:[(0,d.jsx)("span",{className:"material-symbols-outlined mt-0.5 flex size-8 shrink-0 items-center justify-center rounded-lg bg-surface text-[17px] text-primary ring-1 ring-border-subtle",children:"shield_lock"}),(0,d.jsxs)("div",{children:[(0,d.jsx)("p",{className:"font-medium",children:"Require API key"}),(0,d.jsx)("p",{className:"mt-0.5 text-sm text-text-muted",children:"Reject requests that do not include a valid client key."})]})]}),(0,d.jsx)("div",{className:"shrink-0 self-end sm:self-auto",children:(0,d.jsx)(j.lM,{touchTarget:!0,label:"Require API key",checked:G,onChange:()=>aW(!G)})})]}),aP&&!G&&(0,d.jsx)("div",{className:"mb-4 -mt-2",children:(0,d.jsx)(q,{message:"Endpoint is exposed without an API key."})}),0===b.length?(0,d.jsxs)("div",{className:"rounded-xl border border-dashed border-border bg-surface-2/25 py-12 text-center",children:[(0,d.jsx)("div",{className:"inline-flex items-center justify-center w-16 h-16 rounded-full bg-primary/10 text-primary mb-4",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[32px]",children:"vpn_key"})}),(0,d.jsx)("p",{className:"text-text-main font-medium mb-1",children:"No API keys yet"}),(0,d.jsx)("p",{className:"text-sm text-text-muted mb-4",children:"Create your first API key to get started"}),(0,d.jsx)(j.$n,{icon:"add",onClick:()=>r(!0),children:"Create Key"})]}):(0,d.jsx)("div",{className:"grid grid-cols-1 gap-3 lg:grid-cols-2",children:b.map(a=>{var b,e;return(0,d.jsxs)("div",{className:`group flex min-w-0 flex-wrap items-center justify-between gap-3 rounded-xl border border-border-subtle bg-surface-2/25 p-4 transition-[border-color,box-shadow,opacity] hover:border-primary/20 hover:shadow-[0_14px_28px_-26px_rgba(15,23,42,0.65)] ${!1===a.isActive?"opacity-60":""}`,children:[(0,d.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,d.jsx)("p",{className:"text-sm font-medium",children:a.name}),(0,d.jsxs)("div",{className:"flex items-center gap-2 mt-1 min-w-0",children:[(0,d.jsx)("code",{className:"text-xs text-text-muted font-mono truncate max-w-[min(100%,28rem)]",children:(b=a,C.has(b.id)&&E[b.id]?E[b.id]:b.maskedKey||((e=b.key)?e.length>8?e.slice(0,8)+"...":e:"")||"••••••••")}),(0,d.jsx)("button",{type:"button",onClick:()=>bc(a.id),className:"flex size-11 shrink-0 items-center justify-center rounded-xl text-text-muted opacity-100 transition-all hover:bg-black/5 hover:text-primary dark:hover:bg-white/5 sm:size-7 sm:rounded-lg sm:opacity-0 sm:group-hover:opacity-100",title:C.has(a.id)?"Hide key":"Show key","aria-label":C.has(a.id)?"Hide API key":"Show API key",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:C.has(a.id)?"visibility_off":"visibility"})}),(0,d.jsx)("button",{type:"button",onClick:()=>bd(a.id),className:"flex size-11 shrink-0 items-center justify-center rounded-xl text-text-muted opacity-100 transition-all hover:bg-black/5 hover:text-primary dark:hover:bg-white/5 sm:size-7 sm:rounded-lg sm:opacity-0 sm:group-hover:opacity-100",title:"Copy key","aria-label":"Copy API key",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:aR===a.id?"check":"content_copy"})})]}),(0,d.jsxs)("p",{className:"text-xs text-text-muted mt-1",children:["Created ",new Date(a.createdAt).toLocaleDateString()]}),!1===a.isActive&&(0,d.jsx)("p",{className:"text-xs text-orange-500 mt-1",children:"Paused"}),(0,d.jsxs)("div",{className:"mt-3 flex flex-wrap items-center gap-3",children:[(0,d.jsxs)("label",{className:"flex items-center gap-1 text-[11px] text-text-muted",children:["Daily $",(0,d.jsx)("input",{type:"number",min:"0",step:"0.01",disabled:y===`budget:${a.id}`,defaultValue:a.budgetDaily||0,onBlur:b=>ba(a.id,"budgetDaily",b.target.value),className:"w-16 rounded border border-border bg-surface px-1 py-0.5 text-[11px]",title:"Daily budget cap in USD (0 = unlimited)"})]}),(0,d.jsxs)("label",{className:"flex items-center gap-1 text-[11px] text-text-muted",children:["Monthly $",(0,d.jsx)("input",{type:"number",min:"0",step:"0.01",disabled:y===`budget:${a.id}`,defaultValue:a.budgetMonthly||0,onBlur:b=>ba(a.id,"budgetMonthly",b.target.value),className:"w-16 rounded border border-border bg-surface px-1 py-0.5 text-[11px]",title:"Monthly budget cap in USD (0 = unlimited)"})]})]})]}),(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsx)("div",{className:"flex size-11 items-center justify-center sm:size-auto",children:(0,d.jsx)(j.lM,{size:"sm",touchTarget:!0,disabled:y===`toggle:${a.id}`,checked:a.isActive??!0,onChange:b=>{a.isActive&&!b?x({title:"Pause API Key",message:`Pause API key "${a.name}"?
2
2
 
3
- This key will stop working immediately but can be resumed later.`,onConfirm:async()=>{x(null),a9(a.id,b)}}):a9(a.id,b)},title:a.isActive?"Pause key":"Resume key"})}),(0,d.jsx)("button",{disabled:y===`delete:${a.id}`,onClick:()=>{var b;return b=a.id,void(!y&&x({title:"Delete API Key",message:"Delete this API key?",onConfirm:async()=>{x(null),z(`delete:${b}`),B(null);try{let a=await fetch(`/api/keys/${b}`,{method:"DELETE"});if(!a.ok)throw Error(`Failed to delete key (${a.status})`);c(a=>a.filter(a=>a.id!==b)),D(a=>{let c=new Set(a);return c.delete(b),c}),F(a=>{if(!(b in a))return a;let c={...a};return delete c[b],c}),B({type:"success",message:"API key deleted"})}catch(a){B({type:"error",message:a.message})}finally{z(null)}}}))},className:"flex size-11 items-center justify-center rounded-xl text-red-500 opacity-100 transition-all hover:bg-red-500/10 sm:size-9 sm:rounded-lg sm:opacity-0 sm:group-hover:opacity-100","aria-label":`Delete ${a.name}`,children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"delete"})})]})]},a.id)})})]}),(0,d.jsx)(j.aF,{isOpen:h,title:"Create API Key",onClose:()=>{r(!1),t("")},children:(0,d.jsxs)("form",{className:"flex flex-col gap-4",onSubmit:a8,children:[(0,d.jsx)(j.pd,{label:"Key Name",value:s,onChange:a=>t(a.target.value),placeholder:"Production Key"}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(j.$n,{type:"submit",fullWidth:!0,disabled:!s.trim()||"create"===y,children:"create"===y?"Creating...":"Create"}),(0,d.jsx)(j.$n,{type:"button",onClick:()=>{r(!1),t("")},variant:"ghost",fullWidth:!0,children:"Cancel"})]})]})}),(0,d.jsx)(j.aF,{isOpen:!!u,title:"API Key Created",onClose:()=>v(null),children:(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,d.jsxs)("div",{className:"bg-yellow-50 dark:bg-yellow-900/20 border border-yellow-200 dark:border-yellow-800 rounded-lg p-4",children:[(0,d.jsx)("p",{className:"text-sm text-yellow-800 dark:text-yellow-200 mb-2 font-medium",children:"Save this key now!"}),(0,d.jsx)("p",{className:"text-sm text-yellow-700 dark:text-yellow-300",children:"This is the only time you will see this key. Store it securely."})]}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(j.pd,{value:u||"",readOnly:!0,className:"flex-1 font-mono text-sm"}),(0,d.jsx)(j.$n,{variant:"secondary",icon:"created_key"===aR?"check":"content_copy",onClick:()=>aS(u,"created_key"),children:"created_key"===aR?"Copied!":"Copy"})]}),(0,d.jsx)(j.$n,{onClick:()=>v(null),fullWidth:!0,children:"Done"})]})}),(0,d.jsx)(j.aF,{isOpen:ac,title:"Enable Tunnel",onClose:()=>ad(!1),children:(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,d.jsx)("div",{className:"bg-surface-2 border border-border-subtle rounded-lg p-4",children:(0,d.jsxs)("div",{className:"flex items-start gap-3",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-primary",children:"cloud_upload"}),(0,d.jsxs)("div",{children:[(0,d.jsx)("p",{className:"text-sm text-text-main font-medium mb-1",children:"Cloudflare Tunnel"}),(0,d.jsx)("p",{className:"text-sm text-text-muted",children:"Expose your local ZevaiRouter to the internet. No port forwarding, no static IP needed. Share endpoint URL with your team or use it in Cursor, Cline, and other AI tools from anywhere."})]})]})}),(0,d.jsx)("div",{className:"grid grid-cols-2 gap-3",children:l.map(a=>(0,d.jsxs)("div",{className:"flex flex-col items-center text-center p-3 rounded-lg bg-sidebar/50",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-xl text-primary mb-1",children:a.icon}),(0,d.jsx)("p",{className:"text-xs font-semibold",children:a.title}),(0,d.jsx)("p",{className:"text-xs text-text-muted",children:a.desc})]},a.title))}),(0,d.jsx)("p",{className:"text-xs text-text-muted",children:"Requires outbound port 7844 (TCP/UDP). Connection may take 10-30s."}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(j.$n,{onClick:aZ,fullWidth:!0,children:"Start Tunnel"}),(0,d.jsx)(j.$n,{onClick:()=>ad(!1),variant:"ghost",fullWidth:!0,children:"Cancel"})]})]})}),(0,d.jsx)(j.aF,{isOpen:ae,title:"Disable Tunnel",onClose:()=>!Y&&af(!1),children:(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,d.jsx)("p",{className:"text-sm text-text-muted",children:"The Cloudflare tunnel will be disconnected. Remote access via tunnel URL will stop working."}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(j.$n,{onClick:a$,fullWidth:!0,disabled:Y,variant:"danger",children:Y?"Disabling...":"Disable"}),(0,d.jsx)(j.$n,{onClick:()=>af(!1),variant:"ghost",fullWidth:!0,disabled:Y,children:"Cancel"})]})]})}),(0,d.jsx)(j.aF,{isOpen:aG,title:"Tailscale Funnel",onClose:()=>{ay||(aH(!1),aD(""),ar(null))},children:(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[null===aw&&(0,d.jsxs)("p",{className:"text-sm text-text-muted flex items-center gap-2",children:[(0,d.jsx)("span",{className:"material-symbols-outlined animate-spin text-sm",children:"progress_activity"}),"Checking..."]}),!1===aw&&!ay&&(0,d.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,d.jsx)("p",{className:"text-sm text-text-muted",children:"Tailscale is not installed. Install it to enable Funnel."}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(j.$n,{onClick:a0,fullWidth:!0,children:"Install Tailscale"}),(0,d.jsx)(j.$n,{onClick:()=>aH(!1),variant:"ghost",fullWidth:!0,children:"Cancel"})]})]}),ay&&(0,d.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,d.jsxs)("div",{className:"flex items-center gap-2 text-sm text-text-muted",children:[(0,d.jsx)("span",{className:"material-symbols-outlined animate-spin text-sm",children:"progress_activity"}),"Installing Tailscale..."]}),aA.length>0&&(0,d.jsx)("div",{ref:aK,className:"bg-black/5 dark:bg-white/5 rounded p-2 max-h-40 overflow-y-auto font-mono text-xs text-text-muted",children:aA.map((a,b)=>(0,d.jsx)("div",{children:a},b))})]}),!0===aw&&!ay&&(0,d.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,d.jsxs)("div",{className:"flex items-center gap-2 text-sm text-green-600 dark:text-green-400",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"check_circle"}),"Tailscale installed"]}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(j.$n,{onClick:()=>a4(),fullWidth:!0,children:"Connect"}),(0,d.jsx)(j.$n,{onClick:()=>aH(!1),variant:"ghost",fullWidth:!0,children:"Cancel"})]})]}),aq&&(0,d.jsx)(o,{status:aq})]})}),(0,d.jsx)(j.aF,{isOpen:aI,title:"Disable Tailscale",onClose:()=>!am&&aJ(!1),children:(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,d.jsx)("p",{className:"text-sm text-text-muted",children:"Tailscale Funnel will be stopped. Remote access via Tailscale URL will stop working."}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(j.$n,{onClick:a6,fullWidth:!0,disabled:am,variant:"danger",children:am?"Disabling...":"Disable"}),(0,d.jsx)(j.$n,{onClick:()=>aJ(!1),variant:"ghost",fullWidth:!0,disabled:am,children:"Cancel"})]})]})}),(0,d.jsx)(j.uo,{isOpen:!!w,onClose:()=>x(null),onConfirm:w?.onConfirm,title:w?.title||"Confirm",message:w?.message,variant:"danger"})]})}function n({label:a,url:b,copyId:c,copied:e,onCopy:f,badge:g,actions:h}){return(0,d.jsxs)("div",{className:"grid min-w-0 grid-cols-[minmax(0,1fr)_auto_auto] items-center gap-2.5 rounded-xl border border-border-subtle bg-bg/55 p-3 transition-colors hover:border-primary/20 sm:flex",children:[(0,d.jsx)("span",{className:`col-span-full inline-flex min-h-8 w-full shrink-0 items-center justify-center rounded-lg px-2.5 text-[11px] font-semibold uppercase tracking-[0.08em] sm:w-[96px] ${"CF"===g||"TS"===g?"bg-primary/10 text-primary":"bg-surface-2 text-text-muted"}`,children:a}),(0,d.jsx)(j.pd,{"aria-label":`${a} endpoint URL`,value:b,readOnly:!0,className:"w-full min-w-0 font-mono text-sm sm:flex-1"}),(0,d.jsx)("button",{onClick:()=>f(b,c),className:"flex size-11 shrink-0 items-center justify-center rounded-xl text-text-muted transition-colors hover:bg-black/5 hover:text-primary dark:hover:bg-white/5 sm:size-9 sm:rounded-lg","aria-label":`Copy ${a} endpoint URL`,children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:e===c?"check":"content_copy"})}),h]})}function o({status:a,className:b=""}){return(0,d.jsx)("div",{className:`p-2 rounded text-sm ${b} ${"success"===a.type?"bg-green-500/10 text-green-600 dark:text-green-400":"warning"===a.type?"bg-yellow-500/10 text-yellow-600 dark:text-yellow-400":"info"===a.type?"bg-blue-500/10 text-blue-600 dark:text-blue-400":"bg-red-500/10 text-red-600 dark:text-red-400"}`,children:a.message.split(/(https?:\/\/[^\s]+)/g).map((a,b)=>/^https?:\/\//.test(a)?(0,d.jsx)("a",{href:a,target:"_blank",rel:"noreferrer",className:"underline font-medium",children:a},b):a)})}function p({text:a}){return(0,d.jsxs)("span",{className:"relative group inline-flex items-center",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px] text-text-muted cursor-help",children:"help"}),(0,d.jsx)("span",{className:"pointer-events-none absolute right-0 top-full z-50 mt-2 w-[min(16rem,calc(100vw-2rem))] rounded bg-gray-900 px-2.5 py-1.5 text-xs text-white opacity-0 shadow-lg transition-opacity group-hover:opacity-100 dark:bg-gray-800",children:a})]})}function q({message:a,action:b}){return(0,d.jsxs)("div",{className:"flex items-center gap-2 px-3 py-2 rounded-lg bg-amber-500/10 border border-amber-500/20 text-amber-700 dark:text-amber-400",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[16px] shrink-0 mt-0.5",children:"warning"}),(0,d.jsx)("p",{className:"text-xs flex-1",children:a}),b&&(0,d.jsx)("a",{href:b.href,className:"inline-flex min-h-11 shrink-0 items-center text-xs font-medium underline hover:opacity-80 sm:min-h-0",onClick:b.href.startsWith("#")?a=>{a.preventDefault(),document.getElementById(b.href.slice(1))?.scrollIntoView({behavior:"smooth"})}:void 0,children:b.label})]})}m.propTypes={machineId:g().string.isRequired}},51747:(a,b,c)=>{"use strict";c.d(b,{default:()=>d});let d=(0,c(77943).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/Users/firda/zevairouter/src/app/(dashboard)/dashboard/endpoint/EndpointPageClient.js\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/Users/firda/zevairouter/src/app/(dashboard)/dashboard/endpoint/EndpointPageClient.js","default")},71885:(a,b,c)=>{Promise.resolve().then(c.bind(c,51747))},87250:(a,b,c)=>{"use strict";c.d(b,{D:()=>e});var d=c(54603);async function e(){return await (0,d.Xj)()}},95853:(a,b,c)=>{Promise.resolve().then(c.bind(c,43173))}};
3
+ This key will stop working immediately but can be resumed later.`,onConfirm:async()=>{x(null),a9(a.id,b)}}):a9(a.id,b)},title:a.isActive?"Pause key":"Resume key"})}),(0,d.jsx)("button",{disabled:y===`delete:${a.id}`,onClick:()=>{var b;return b=a.id,void(!y&&x({title:"Delete API Key",message:"Delete this API key?",onConfirm:async()=>{x(null),z(`delete:${b}`),B(null);try{let a=await fetch(`/api/keys/${b}`,{method:"DELETE"});if(!a.ok)throw Error(`Failed to delete key (${a.status})`);c(a=>a.filter(a=>a.id!==b)),D(a=>{let c=new Set(a);return c.delete(b),c}),F(a=>{if(!(b in a))return a;let c={...a};return delete c[b],c}),B({type:"success",message:"API key deleted"})}catch(a){B({type:"error",message:a.message})}finally{z(null)}}}))},className:"flex size-11 items-center justify-center rounded-xl text-red-500 opacity-100 transition-all hover:bg-red-500/10 sm:size-9 sm:rounded-lg sm:opacity-0 sm:group-hover:opacity-100","aria-label":`Delete ${a.name}`,children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"delete"})})]})]},a.id)})})]}),(0,d.jsx)(j.aF,{isOpen:h,title:"Create API Key",onClose:()=>{r(!1),t("")},children:(0,d.jsxs)("form",{className:"flex flex-col gap-4",onSubmit:a8,children:[(0,d.jsx)(j.pd,{label:"Key Name",value:s,onChange:a=>t(a.target.value),placeholder:"Production Key"}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(j.$n,{type:"submit",fullWidth:!0,disabled:!s.trim()||"create"===y,children:"create"===y?"Creating...":"Create"}),(0,d.jsx)(j.$n,{type:"button",onClick:()=>{r(!1),t("")},variant:"ghost",fullWidth:!0,children:"Cancel"})]})]})}),(0,d.jsx)(j.aF,{isOpen:!!u,title:"API Key Created",onClose:()=>v(null),children:(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,d.jsxs)("div",{className:"bg-yellow-50 dark:bg-yellow-900/20 border border-yellow-200 dark:border-yellow-800 rounded-lg p-4",children:[(0,d.jsx)("p",{className:"text-sm text-yellow-800 dark:text-yellow-200 mb-2 font-medium",children:"Save this key now!"}),(0,d.jsx)("p",{className:"text-sm text-yellow-700 dark:text-yellow-300",children:"This is the only time you will see this key. Store it securely."})]}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(j.pd,{value:u||"",readOnly:!0,className:"flex-1 font-mono text-sm"}),(0,d.jsx)(j.$n,{variant:"secondary",icon:"created_key"===aR?"check":"content_copy",onClick:()=>aS(u,"created_key"),children:"created_key"===aR?"Copied!":"Copy"})]}),(0,d.jsx)(j.$n,{onClick:()=>v(null),fullWidth:!0,children:"Done"})]})}),(0,d.jsx)(j.aF,{isOpen:ac,title:"Enable Tunnel",onClose:()=>ad(!1),children:(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,d.jsx)("div",{className:"bg-surface-2 border border-border-subtle rounded-lg p-4",children:(0,d.jsxs)("div",{className:"flex items-start gap-3",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-primary",children:"cloud_upload"}),(0,d.jsxs)("div",{children:[(0,d.jsx)("p",{className:"text-sm text-text-main font-medium mb-1",children:"Cloudflare Tunnel"}),(0,d.jsx)("p",{className:"text-sm text-text-muted",children:"Expose your local ZevaiRouter to the internet. No port forwarding, no static IP needed. Share endpoint URL with your team or use it in Cursor, Cline, and other AI tools from anywhere."})]})]})}),(0,d.jsx)("div",{className:"grid grid-cols-2 gap-3",children:l.map(a=>(0,d.jsxs)("div",{className:"flex flex-col items-center text-center p-3 rounded-lg bg-sidebar/50",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-xl text-primary mb-1",children:a.icon}),(0,d.jsx)("p",{className:"text-xs font-semibold",children:a.title}),(0,d.jsx)("p",{className:"text-xs text-text-muted",children:a.desc})]},a.title))}),(0,d.jsx)("p",{className:"text-xs text-text-muted",children:"Requires outbound port 7844 (TCP/UDP). Connection may take 10-30s."}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(j.$n,{onClick:aZ,fullWidth:!0,children:"Start Tunnel"}),(0,d.jsx)(j.$n,{onClick:()=>ad(!1),variant:"ghost",fullWidth:!0,children:"Cancel"})]})]})}),(0,d.jsx)(j.aF,{isOpen:ae,title:"Disable Tunnel",onClose:()=>!Y&&af(!1),children:(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,d.jsx)("p",{className:"text-sm text-text-muted",children:"The Cloudflare tunnel will be disconnected. Remote access via tunnel URL will stop working."}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(j.$n,{onClick:a$,fullWidth:!0,disabled:Y,variant:"danger",children:Y?"Disabling...":"Disable"}),(0,d.jsx)(j.$n,{onClick:()=>af(!1),variant:"ghost",fullWidth:!0,disabled:Y,children:"Cancel"})]})]})}),(0,d.jsx)(j.aF,{isOpen:aG,title:"Tailscale Funnel",onClose:()=>{ay||(aH(!1),aD(""),ar(null))},children:(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[null===aw&&(0,d.jsxs)("p",{className:"text-sm text-text-muted flex items-center gap-2",children:[(0,d.jsx)("span",{className:"material-symbols-outlined animate-spin text-sm",children:"progress_activity"}),"Checking..."]}),!1===aw&&!ay&&(0,d.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,d.jsx)("p",{className:"text-sm text-text-muted",children:"Tailscale is not installed. Install it to enable Funnel."}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(j.$n,{onClick:a0,fullWidth:!0,children:"Install Tailscale"}),(0,d.jsx)(j.$n,{onClick:()=>aH(!1),variant:"ghost",fullWidth:!0,children:"Cancel"})]})]}),ay&&(0,d.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,d.jsxs)("div",{className:"flex items-center gap-2 text-sm text-text-muted",children:[(0,d.jsx)("span",{className:"material-symbols-outlined animate-spin text-sm",children:"progress_activity"}),"Installing Tailscale..."]}),aA.length>0&&(0,d.jsx)("div",{ref:aK,className:"bg-black/5 dark:bg-white/5 rounded p-2 max-h-40 overflow-y-auto font-mono text-xs text-text-muted",children:aA.map((a,b)=>(0,d.jsx)("div",{children:a},b))})]}),!0===aw&&!ay&&(0,d.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,d.jsxs)("div",{className:"flex items-center gap-2 text-sm text-green-600 dark:text-green-400",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"check_circle"}),"Tailscale installed"]}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(j.$n,{onClick:()=>a4(),fullWidth:!0,children:"Connect"}),(0,d.jsx)(j.$n,{onClick:()=>aH(!1),variant:"ghost",fullWidth:!0,children:"Cancel"})]})]}),aq&&(0,d.jsx)(o,{status:aq})]})}),(0,d.jsx)(j.aF,{isOpen:aI,title:"Disable Tailscale",onClose:()=>!am&&aJ(!1),children:(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,d.jsx)("p",{className:"text-sm text-text-muted",children:"Tailscale Funnel will be stopped. Remote access via Tailscale URL will stop working."}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(j.$n,{onClick:a6,fullWidth:!0,disabled:am,variant:"danger",children:am?"Disabling...":"Disable"}),(0,d.jsx)(j.$n,{onClick:()=>aJ(!1),variant:"ghost",fullWidth:!0,disabled:am,children:"Cancel"})]})]})}),(0,d.jsx)(j.uo,{isOpen:!!w,onClose:()=>x(null),onConfirm:w?.onConfirm,title:w?.title||"Confirm",message:w?.message,variant:"danger"})]})}function n({label:a,url:b,copyId:c,copied:e,onCopy:f,badge:g,actions:h}){return(0,d.jsxs)("div",{className:"grid min-w-0 grid-cols-[minmax(0,1fr)_auto_auto] items-center gap-2.5 rounded-xl border border-border-subtle bg-bg/55 p-3 transition-colors hover:border-primary/20 sm:flex",children:[(0,d.jsx)("span",{className:`col-span-full inline-flex min-h-8 w-full shrink-0 items-center justify-center rounded-lg px-2.5 text-[11px] font-semibold uppercase tracking-[0.08em] sm:w-[96px] ${"CF"===g||"TS"===g?"bg-primary/10 text-primary":"bg-surface-2 text-text-muted"}`,children:a}),(0,d.jsx)(j.pd,{"aria-label":`${a} endpoint URL`,value:b,readOnly:!0,className:"w-full min-w-0 font-mono text-sm sm:flex-1"}),(0,d.jsx)("button",{onClick:()=>f(b,c),className:"flex size-11 shrink-0 items-center justify-center rounded-xl text-text-muted transition-colors hover:bg-black/5 hover:text-primary dark:hover:bg-white/5 sm:size-9 sm:rounded-lg","aria-label":`Copy ${a} endpoint URL`,children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:e===c?"check":"content_copy"})}),h]})}function o({status:a,className:b=""}){return(0,d.jsx)("div",{className:`p-2 rounded text-sm ${b} ${"success"===a.type?"bg-green-500/10 text-green-600 dark:text-green-400":"warning"===a.type?"bg-yellow-500/10 text-yellow-600 dark:text-yellow-400":"info"===a.type?"bg-blue-500/10 text-blue-600 dark:text-blue-400":"bg-red-500/10 text-red-600 dark:text-red-400"}`,children:a.message.split(/(https?:\/\/[^\s]+)/g).map((a,b)=>/^https?:\/\//.test(a)?(0,d.jsx)("a",{href:a,target:"_blank",rel:"noreferrer",className:"underline font-medium",children:a},b):a)})}function p({text:a}){return(0,d.jsxs)("span",{className:"relative group inline-flex items-center",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px] text-text-muted cursor-help",children:"help"}),(0,d.jsx)("span",{className:"pointer-events-none absolute right-0 top-full z-50 mt-2 w-[min(16rem,calc(100vw-2rem))] rounded bg-gray-900 px-2.5 py-1.5 text-xs text-white opacity-0 shadow-lg transition-opacity group-hover:opacity-100 dark:bg-gray-800",children:a})]})}function q({message:a,action:b}){return(0,d.jsxs)("div",{className:"flex items-center gap-2 px-3 py-2 rounded-lg bg-amber-500/10 border border-amber-500/20 text-amber-700 dark:text-amber-400",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[16px] shrink-0 mt-0.5",children:"warning"}),(0,d.jsx)("p",{className:"text-xs flex-1",children:a}),b&&(0,d.jsx)("a",{href:b.href,className:"inline-flex min-h-11 shrink-0 items-center text-xs font-medium underline hover:opacity-80 sm:min-h-0",onClick:b.href.startsWith("#")?a=>{a.preventDefault(),document.getElementById(b.href.slice(1))?.scrollIntoView({behavior:"smooth"})}:void 0,children:b.label})]})}m.propTypes={machineId:g().string.isRequired}},51747:(a,b,c)=>{"use strict";c.d(b,{default:()=>d});let d=(0,c(77943).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/zevairouter-build/src/app/(dashboard)/dashboard/endpoint/EndpointPageClient.js\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/zevairouter-build/src/app/(dashboard)/dashboard/endpoint/EndpointPageClient.js","default")},71885:(a,b,c)=>{Promise.resolve().then(c.bind(c,51747))},87250:(a,b,c)=>{"use strict";c.d(b,{D:()=>e});var d=c(54603);async function e(){return await (0,d.Xj)()}},95853:(a,b,c)=>{Promise.resolve().then(c.bind(c,43173))}};
@@ -1 +1 @@
1
- "use strict";exports.id=8255,exports.ids=[8255],exports.modules={2574:(a,b,c)=>{c.r(b),c.d(b,{GET:()=>v,OPTIONS:()=>u,buildModelsList:()=>t});var d=c(81329),e=c(75681),f=c(89718),g=c(16655),h=c(29679),i=c(53225),j=c(52007),k=c(28948),l=c(84534),m=c(3359);let n={kiro:async a=>{let b=await (0,h.cW)({accessToken:a.accessToken,refreshToken:a.refreshToken,providerSpecificData:a.providerSpecificData||{}},{log:console});return b?.models?.length?{models:b.models}:null},qoder:async a=>{let b=await (0,i.EV)({accessToken:a.accessToken,refreshToken:a.refreshToken,email:a.email,displayName:a.displayName,providerSpecificData:a.providerSpecificData||{}});return b?.models?.length?{models:b.models.map(a=>({id:a.id,name:a.name}))}:null},kimchi:async a=>{let b=await (0,j.av)({accessToken:a.accessToken,apiKey:a.apiKey,providerSpecificData:a.providerSpecificData||{}},{log:console});return b?.models?.length?{models:b.models}:null},clinepass:async a=>{let b=await (0,k.P)({accessToken:a.accessToken,apiKey:a.apiKey});return b?.models?.length?{models:b.models}:null},cline:async a=>{let b=a.apiKey||a.accessToken;if(!b)return null;try{let{buildClineHeaders:a}=await Promise.resolve().then(c.bind(c,15626)),d=await fetch("https://api.cline.bot/api/v1/models",{headers:a(b,{Accept:"application/json"})});if(!d.ok)return null;let e=await d.json(),f=Array.isArray(e)?e:e?.data;if(!Array.isArray(f)||0===f.length)return null;let g=f.filter(a=>"string"==typeof a?.id).map(a=>({id:a.id,name:a.name||a.id}));return g.length?{models:g}:null}catch{return null}},github:async a=>{let b=await (0,l.v)({accessToken:a.accessToken,refreshToken:a.refreshToken,providerSpecificData:a.providerSpecificData||{}},{log:console});return b?.models?.length?{models:b.models}:null}},o=/[-_][0-9a-f]{8,}$/i,p={image:"image",tts:"tts",embedding:"embedding",stt:"stt",imageToText:"imageToText"};function q(a){return a?.type&&p[a.type]||"llm"}async function r(a){if(!a?.apiKey)return[];let b="string"==typeof a?.providerSpecificData?.baseUrl?a.providerSpecificData.baseUrl.trim().replace(/\/$/,""):"";if(!b)return[];let c=`${b}/models`,d={"Content-Type":"application/json"};if((0,e.mq)(a.provider))d.Authorization=`Bearer ${a.apiKey}`;else{if(!(0,e.gb)(a.provider))return[];c.endsWith("/messages/models")?c=c.slice(0,-9):c.endsWith("/messages")&&(c=`${c.slice(0,-9)}/models`),d["x-api-key"]=a.apiKey,d["anthropic-version"]="2023-06-01",d.Authorization=`Bearer ${a.apiKey}`}try{var f;let a=new AbortController,b=setTimeout(()=>a.abort(),5e3),e=await fetch(c,{method:"GET",headers:d,cache:"no-store",signal:a.signal});if(clearTimeout(b),!e.ok)return[];let g=(f=await e.json(),Array.isArray(f)?f:f?.data||f?.models||f?.results||[]);return Array.from(new Set(g.map(a=>a?.id||a?.name||a?.model).filter(a=>"string"==typeof a&&""!==a.trim())))}catch{return[]}}function s(a,b){let c=e.AI_PROVIDERS[a],d=Array.isArray(c?.serviceKinds)&&c.serviceKinds.length>0?c.serviceKinds:["llm"];return b.some(a=>d.includes(a))}async function t(a){let b=[];try{b=(b=await (0,f.getProviderConnections)()).filter(a=>!1!==a.isActive)}catch(a){console.log("Could not fetch providers, returning all models")}let c=[];try{c=await (0,f.Uv)()}catch(a){console.log("Could not fetch combos")}let h=[];try{h=await (0,f.uv)()}catch(a){console.log("Could not fetch custom models")}let i={};try{i=await (0,f.getModelAliases)()}catch(a){console.log("Could not fetch model aliases")}let j={};try{j=await (0,g.vF)()}catch(a){console.log("Could not fetch disabled models")}let k=(a,b)=>Array.isArray(j[a])&&j[a].includes(b),l=new Map;for(let a of b)l.has(a.provider)||l.set(a.provider,a);let p=[];for(let b of c){if(!function(a,b){let c=a?.kind||"llm";return b.includes(c)}(b,a))continue;let c={id:b.name,object:"model",owned_by:"combo"};("webSearch"===b.kind||"webFetch"===b.kind)&&(c.kind=b.kind),p.push(c)}if(0===b.length){let b=Object.fromEntries(Object.entries(d.Xg).map(([a,b])=>[b,a]));for(let[c,e]of Object.entries(d.vq))if(s(b[c]||c,a))for(let b of e)a.includes(q(b))&&(k(c,b.id)||p.push({id:`${c}/${b.id}`,object:"model",owned_by:c}));for(let b of h){if(!b?.id||b.type&&"llm"!==b.type||!a.includes("llm"))continue;let c=b.providerAlias;if(!c)continue;let d=String(b.id).trim();d&&p.push({id:`${c}/${d}`,object:"model",owned_by:c})}}else for(let[b,c]of l.entries()){if(!s(b,a))continue;let f=d.Xg[b]||b,g=(c?.providerSpecificData?.prefix||(0,e.wG)(b)||f).trim(),j=d.vq[f]||[],l=c?.providerSpecificData?.enabledModels,m=Array.isArray(l)&&l.length>0,t=(0,e.mq)(b)||(0,e.gb)(b),u=new Map(j.map(a=>[a.id,q(a)])),v=m?Array.from(new Set(l.filter(a=>"string"==typeof a&&""!==a.trim()))):j.map(a=>a.id);t&&0===v.length&&!o.test(b)&&(v=await r(c));let w=n[b];if(w&&!m)try{let a=await w(c);a?.models?.length&&(v=a.models.map(a=>a.id))}catch(a){console.log(`Live model fetch failed for ${b}: ${a?.message||a}`)}for(let c of Array.from(new Set([...v.map(a=>a.startsWith(`${g}/`)?a.slice(g.length+1):a.startsWith(`${f}/`)?a.slice(f.length+1):a.startsWith(`${b}/`)?a.slice(b.length+1):a).filter(a=>"string"==typeof a&&""!==a.trim()),...h.filter(a=>{if(!a?.id||a.type&&"llm"!==a.type)return!1;let c=a.providerAlias;return c===f||c===g||c===b}).map(a=>String(a.id).trim()).filter(a=>""!==a),...Object.values(i||{}).filter(a=>"string"==typeof a&&!!a.includes("/")&&(a.startsWith(`${g}/`)||a.startsWith(`${f}/`)||a.startsWith(`${b}/`))).map(a=>a.startsWith(`${g}/`)?a.slice(g.length+1):a.startsWith(`${f}/`)?a.slice(f.length+1):a.startsWith(`${b}/`)?a.slice(b.length+1):a).filter(a=>"string"==typeof a&&""!==a.trim())]))){let b=u.get(c)||function(a){let b=String(a).toLowerCase();return/embed/.test(b)?"embedding":/tts|speech|audio|voice/.test(b)?"tts":/image|imagen|dall-?e|flux|sdxl|sd-|stable-diffusion/.test(b)?"image":"llm"}(c);a.includes(b)&&(k(g,c)||k(f,c)||p.push({id:`${g}/${c}`,object:"model",owned_by:g}))}let x=e.AI_PROVIDERS[b],y=[];if(a.includes("tts")&&Array.isArray(x?.ttsConfig?.models))for(let a of x.ttsConfig.models)a?.id&&y.push(a.id);if(a.includes("embedding")&&Array.isArray(x?.embeddingConfig?.models))for(let a of x.embeddingConfig.models)a?.id&&y.push(a.id);for(let a of y)k(g,a)||k(f,a)||p.push({id:`${g}/${a}`,object:"model",owned_by:g});a.includes("webSearch")&&x?.searchConfig&&p.push({id:`${g}/search`,object:"model",kind:"webSearch",owned_by:g}),a.includes("webFetch")&&x?.fetchConfig&&p.push({id:`${g}/fetch`,object:"model",kind:"webFetch",owned_by:g})}a.includes("llm")&&p.push(...(0,m.lL)(b));let t=[],u=new Set;for(let a of p)!a?.id||u.has(a.id)||(u.add(a.id),t.push(a));return t}async function u(){return new Response(null,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET, OPTIONS","Access-Control-Allow-Headers":"*"}})}async function v(){try{let a=await t(["llm"]);return Response.json({object:"list",data:a},{headers:{"Access-Control-Allow-Origin":"*"}})}catch(a){return console.log("Error fetching models:",a),Response.json({error:{message:a.message,type:"server_error"}},{status:500})}}},3359:(a,b,c)=>{c.d(b,{K0:()=>j,Oh:()=>n,c9:()=>q,lL:()=>r,s9:()=>i});var d=c(89718),e=c(44404);let f="gpt-5.6";function g(a){return String(a||"").trim().replace(/^\/+|\/+$/g,"")}function h(a){let b;return`cx/${(b=g(a)).startsWith("cx/")?b.slice(3):b.startsWith("codex/")?b.slice(6):b||f}`}function i(a){let b=g(a);if(!b)return null;if("auto-codex"===b)return{mode:"router",modelString:`cx/${f}`,strictAccount:!1,label:"Auto Codex"};if(b.startsWith("router/")){let a;return{mode:"router",modelString:(a=g(b.slice(7))||f).includes("/")?a:`cx/${a}`,strictAccount:!1,label:"Router Pool"}}if(b.startsWith("original/"))return{mode:"original",modelString:h(b.slice(9)),strictAccount:!0,label:"Original Codex"};if("original"===b)return{mode:"original",modelString:`cx/${f}`,strictAccount:!0,label:"Original Codex"};let c=b.startsWith("account/")?"account/":b.startsWith("codex-account/")?"codex-account/":null;if(c){let a=b.slice(c.length),d=a.indexOf("/"),e=-1===d?a:a.slice(0,d),g=-1===d?f:a.slice(d+1);return e?{mode:"account",accountRef:e,modelString:h(g),strictAccount:!0,label:"Pinned Codex Account"}:null}return null}function j(a){return a?.displayName||a?.name||a?.email||a?.id||"Codex account"}function k(a){let b=String(j(a)).toLowerCase().replace(/@/g,"-").replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,48)||"account";return`${b}-${String(a?.id||"").slice(0,8)}`}function l(a){return String(a||"").trim().toLowerCase()}function m(a){let b=a?.providerSpecificData||{};return"GPTJson"===b.importedFrom||String(b.tokenSource||"").startsWith("ChatGPT_team")}async function n(a=5e3){let b=await (0,d.getProviderConnections)({provider:"codex",isActive:!0}),c=b.slice(0,a).map(a=>({id:a.id,slug:k(a),label:j(a),email:a.email||null,imported:m(a),priority:a.priority||null})),e=o(b);return{accounts:c,original:e?{id:e.id,slug:k(e),label:j(e),email:e.email||null,imported:m(e),priority:e.priority||null}:null}}function o(a){return Array.isArray(a)&&0!==a.length?a.find(a=>!m(a))||a[0]:null}async function p(a){let b=l(a);if(!b)return null;let c=await (0,d.getProviderConnections)({provider:"codex",isActive:!0}),e=c.find(a=>l(a.id)===b||k(a)===b||l(a.email)===b||l(a.name)===b||l(a.displayName)===b);if(e)return e;let f=c.filter(a=>l(a.id).startsWith(b)||k(a).startsWith(b));return 1===f.length?f[0]:null}async function q(a){if(!a||"original"!==a.mode&&"account"!==a.mode)return null;if("account"===a.mode)return p(a.accountRef);let b=await (0,d.mt)(),c=b.codexGatewayOriginalConnectionId||b.codexOriginalConnectionId||"";if(c){let a=await p(c);if(a)return a}return o(await (0,d.getProviderConnections)({provider:"codex",isActive:!0}))}function r(a=[]){if(!a.some(a=>"codex"===a.provider&&!1!==a.isActive))return[];let b=[{id:"auto-codex",object:"model",owned_by:"zevai-codex-gateway"},...(e.vq.cx||[]).filter(a=>!a.type||"llm"===a.type).map(a=>a.id).flatMap(a=>[{id:`router/${a}`,object:"model",owned_by:"zevai-codex-gateway"},{id:`original/${a}`,object:"model",owned_by:"zevai-codex-gateway"}])];for(let c of a.filter(a=>"codex"===a.provider&&!1!==a.isActive))b.push({id:`account/${k(c)}`,object:"model",owned_by:"zevai-codex-account"});return b}},16655:(a,b,c)=>{c.d(b,{oF:()=>d.oF,tm:()=>d.tm,vF:()=>d.vF});var d=c(80601)},19225:(a,b,c)=>{a.exports=c(44870)},81329:(a,b,c)=>{c.d(b,{Xg:()=>d.Xg,eh:()=>e,vq:()=>d.vq});var d=c(44404);Object.entries(c(75681).AI_PROVIDERS).filter(([,a])=>a.passthroughModels).map(([a])=>a);let e=Object.entries(d.vq).flatMap(([a,b])=>b.map(b=>({provider:a,model:b.id,name:b.name})))},92280:(a,b,c)=>{Object.defineProperty(b,"I",{enumerable:!0,get:function(){return g}});let d=c(28208),e=c(47617),f=c(62018);async function g(a,b,c,g){if((0,d.isNodeNextResponse)(b)){var h;b.statusCode=c.status,b.statusMessage=c.statusText;let d=["set-cookie","www-authenticate","proxy-authenticate","vary"];null==(h=c.headers)||h.forEach((a,c)=>{if("x-middleware-set-cookie"!==c.toLowerCase())if("set-cookie"===c.toLowerCase())for(let d of(0,f.splitCookiesString)(a))b.appendHeader(c,d);else{let e=void 0!==b.getHeader(c);(d.includes(c.toLowerCase())||!e)&&b.appendHeader(c,a)}});let{originalResponse:i}=b;c.body&&"HEAD"!==a.method?await (0,e.pipeToNodeResponse)(c.body,i,g):i.end()}}}};
1
+ "use strict";exports.id=8255,exports.ids=[8255],exports.modules={2574:(a,b,c)=>{c.r(b),c.d(b,{GET:()=>v,OPTIONS:()=>u,buildModelsList:()=>t});var d=c(81329),e=c(75681),f=c(89718),g=c(16655),h=c(29679),i=c(53225),j=c(52007),k=c(28948),l=c(84534),m=c(3359);let n={kiro:async a=>{let b=await (0,h.cW)({accessToken:a.accessToken,refreshToken:a.refreshToken,providerSpecificData:a.providerSpecificData||{}},{log:console});return b?.models?.length?{models:b.models}:null},qoder:async a=>{let b=await (0,i.EV)({accessToken:a.accessToken,refreshToken:a.refreshToken,email:a.email,displayName:a.displayName,providerSpecificData:a.providerSpecificData||{}});return b?.models?.length?{models:b.models.map(a=>({id:a.id,name:a.name}))}:null},kimchi:async a=>{let b=await (0,j.av)({accessToken:a.accessToken,apiKey:a.apiKey,providerSpecificData:a.providerSpecificData||{}},{log:console});return b?.models?.length?{models:b.models}:null},clinepass:async a=>{let b=await (0,k.P)({accessToken:a.accessToken,apiKey:a.apiKey});return b?.models?.length?{models:b.models}:null},cline:async a=>{let b=a.apiKey||a.accessToken;if(!b)return null;try{let{buildClineHeaders:a}=await Promise.resolve().then(c.bind(c,15626)),d=await fetch("https://api.cline.bot/api/v1/models",{headers:a(b,{Accept:"application/json"})});if(!d.ok)return null;let e=await d.json(),f=Array.isArray(e)?e:e?.data;if(!Array.isArray(f)||0===f.length)return null;let g=f.filter(a=>"string"==typeof a?.id).map(a=>({id:a.id,name:a.name||a.id}));return g.length?{models:g}:null}catch{return null}},github:async a=>{let b=await (0,l.v)({accessToken:a.accessToken,refreshToken:a.refreshToken,providerSpecificData:a.providerSpecificData||{}},{log:console});return b?.models?.length?{models:b.models}:null}},o=/[-_][0-9a-f]{8,}$/i,p={image:"image",tts:"tts",embedding:"embedding",stt:"stt",imageToText:"imageToText"};function q(a){return a?.type&&p[a.type]||"llm"}async function r(a){if(!a?.apiKey)return[];let b="string"==typeof a?.providerSpecificData?.baseUrl?a.providerSpecificData.baseUrl.trim().replace(/\/$/,""):"";if(!b)return[];let c=`${b}/models`,d={"Content-Type":"application/json"};if((0,e.mq)(a.provider))d.Authorization=`Bearer ${a.apiKey}`;else{if(!(0,e.gb)(a.provider))return[];c.endsWith("/messages/models")?c=c.slice(0,-9):c.endsWith("/messages")&&(c=`${c.slice(0,-9)}/models`),d["x-api-key"]=a.apiKey,d["anthropic-version"]="2023-06-01",d.Authorization=`Bearer ${a.apiKey}`}try{var f;let a=new AbortController,b=setTimeout(()=>a.abort(),5e3),e=await fetch(c,{method:"GET",headers:d,cache:"no-store",signal:a.signal});if(clearTimeout(b),!e.ok)return[];let g=(f=await e.json(),Array.isArray(f)?f:f?.data||f?.models||f?.results||[]);return Array.from(new Set(g.map(a=>a?.id||a?.name||a?.model).filter(a=>"string"==typeof a&&""!==a.trim())))}catch{return[]}}function s(a,b){let c=e.AI_PROVIDERS[a],d=Array.isArray(c?.serviceKinds)&&c.serviceKinds.length>0?c.serviceKinds:["llm"];return b.some(a=>d.includes(a))}async function t(a){let b=[];try{b=(b=await (0,f.getProviderConnections)()).filter(a=>!1!==a.isActive)}catch(a){console.log("Could not fetch providers, returning all models")}let c=[];try{c=await (0,f.Uv)()}catch(a){console.log("Could not fetch combos")}let h=[];try{h=await (0,f.uv)()}catch(a){console.log("Could not fetch custom models")}let i={};try{i=await (0,f.getModelAliases)()}catch(a){console.log("Could not fetch model aliases")}let j={};try{j=await (0,g.vF)()}catch(a){console.log("Could not fetch disabled models")}let k=(a,b)=>Array.isArray(j[a])&&j[a].includes(b),l=new Map;for(let a of b)l.has(a.provider)||l.set(a.provider,a);let p=[];for(let b of c){if(!function(a,b){let c=a?.kind||"llm";return b.includes(c)}(b,a))continue;let c={id:b.name,object:"model",owned_by:"combo"};("webSearch"===b.kind||"webFetch"===b.kind)&&(c.kind=b.kind),p.push(c)}if(0===b.length){let b=Object.fromEntries(Object.entries(d.Xg).map(([a,b])=>[b,a]));for(let[c,e]of Object.entries(d.vq))if(s(b[c]||c,a))for(let b of e)a.includes(q(b))&&(k(c,b.id)||p.push({id:`${c}/${b.id}`,object:"model",owned_by:c}));for(let b of h){if(!b?.id||b.type&&"llm"!==b.type||!a.includes("llm"))continue;let c=b.providerAlias;if(!c)continue;let d=String(b.id).trim();d&&p.push({id:`${c}/${d}`,object:"model",owned_by:c})}}else for(let[b,c]of l.entries()){if(!s(b,a))continue;let f=d.Xg[b]||b,g=(c?.providerSpecificData?.prefix||(0,e.wG)(b)||f).trim(),j=d.vq[f]||[],l=c?.providerSpecificData?.enabledModels,m=Array.isArray(l)&&l.length>0,t=(0,e.mq)(b)||(0,e.gb)(b),u=new Map(j.map(a=>[a.id,q(a)])),v=m?Array.from(new Set(l.filter(a=>"string"==typeof a&&""!==a.trim()))):j.map(a=>a.id);t&&0===v.length&&!o.test(b)&&(v=await r(c));let w=n[b];if(w&&!m)try{let a=await w(c);a?.models?.length&&(v=a.models.map(a=>a.id))}catch(a){console.log(`Live model fetch failed for ${b}: ${a?.message||a}`)}for(let c of Array.from(new Set([...v.map(a=>a.startsWith(`${g}/`)?a.slice(g.length+1):a.startsWith(`${f}/`)?a.slice(f.length+1):a.startsWith(`${b}/`)?a.slice(b.length+1):a).filter(a=>"string"==typeof a&&""!==a.trim()),...h.filter(a=>{if(!a?.id||a.type&&"llm"!==a.type)return!1;let c=a.providerAlias;return c===f||c===g||c===b}).map(a=>String(a.id).trim()).filter(a=>""!==a),...Object.values(i||{}).filter(a=>"string"==typeof a&&!!a.includes("/")&&(a.startsWith(`${g}/`)||a.startsWith(`${f}/`)||a.startsWith(`${b}/`))).map(a=>a.startsWith(`${g}/`)?a.slice(g.length+1):a.startsWith(`${f}/`)?a.slice(f.length+1):a.startsWith(`${b}/`)?a.slice(b.length+1):a).filter(a=>"string"==typeof a&&""!==a.trim())]))){let b=u.get(c)||function(a){let b=String(a).toLowerCase();return/embed/.test(b)?"embedding":/tts|speech|audio|voice/.test(b)?"tts":/image|imagen|dall-?e|flux|sdxl|sd-|stable-diffusion/.test(b)?"image":"llm"}(c);a.includes(b)&&(k(g,c)||k(f,c)||p.push({id:`${g}/${c}`,object:"model",owned_by:g}))}let x=e.AI_PROVIDERS[b],y=[];if(a.includes("tts")&&Array.isArray(x?.ttsConfig?.models))for(let a of x.ttsConfig.models)a?.id&&y.push(a.id);if(a.includes("embedding")&&Array.isArray(x?.embeddingConfig?.models))for(let a of x.embeddingConfig.models)a?.id&&y.push(a.id);for(let a of y)k(g,a)||k(f,a)||p.push({id:`${g}/${a}`,object:"model",owned_by:g});a.includes("webSearch")&&x?.searchConfig&&p.push({id:`${g}/search`,object:"model",kind:"webSearch",owned_by:g}),a.includes("webFetch")&&x?.fetchConfig&&p.push({id:`${g}/fetch`,object:"model",kind:"webFetch",owned_by:g})}a.includes("llm")&&p.push(...(0,m.lL)(b));let t=[],u=new Set;for(let a of p)!a?.id||u.has(a.id)||(u.add(a.id),t.push(a));return t}async function u(){return new Response(null,{headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET, OPTIONS","Access-Control-Allow-Headers":"*"}})}async function v(){try{let a=await t(["llm"]);return Response.json({object:"list",data:a},{headers:{"Access-Control-Allow-Origin":"*"}})}catch(a){return console.log("Error fetching models:",a),Response.json({error:{message:a.message,type:"server_error"}},{status:500})}}},3359:(a,b,c)=>{c.d(b,{K0:()=>j,Oh:()=>n,c9:()=>q,lL:()=>r,s9:()=>i});var d=c(89718),e=c(44404);let f="gpt-5.6";function g(a){return String(a||"").trim().replace(/^\/+|\/+$/g,"")}function h(a){let b;return`cx/${(b=g(a)).startsWith("cx/")?b.slice(3):b.startsWith("codex/")?b.slice(6):b||f}`}function i(a){let b=g(a);if(!b)return null;if("auto-codex"===b)return{mode:"router",modelString:`cx/${f}`,strictAccount:!1,label:"Auto Codex"};if(b.startsWith("router/")){let a;return{mode:"router",modelString:(a=g(b.slice(7))||f).includes("/")?a:`cx/${a}`,strictAccount:!1,label:"Router Pool"}}if(b.startsWith("original/"))return{mode:"original",modelString:h(b.slice(9)),strictAccount:!0,label:"Original Codex"};if("original"===b)return{mode:"original",modelString:`cx/${f}`,strictAccount:!0,label:"Original Codex"};let c=b.startsWith("account/")?"account/":b.startsWith("codex-account/")?"codex-account/":null;if(c){let a=b.slice(c.length),d=a.indexOf("/"),e=-1===d?a:a.slice(0,d),g=-1===d?f:a.slice(d+1);return e?{mode:"account",accountRef:e,modelString:h(g),strictAccount:!0,label:"Pinned Codex Account"}:null}return null}function j(a){return a?.displayName||a?.name||a?.email||a?.id||"Codex account"}function k(a){let b=String(j(a)).toLowerCase().replace(/@/g,"-").replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"").slice(0,48)||"account";return`${b}-${String(a?.id||"").slice(0,8)}`}function l(a){return String(a||"").trim().toLowerCase()}function m(a){let b=a?.providerSpecificData||{};return"GPTJson"===b.importedFrom||String(b.tokenSource||"").startsWith("ChatGPT_team")}async function n(a=5e3){let b=await (0,d.getProviderConnections)({provider:"codex",isActive:!0}),c=b.slice(0,a).map(a=>({id:a.id,slug:k(a),label:j(a),email:a.email||null,imported:m(a),priority:a.priority||null})),e=o(b);return{accounts:c,original:e?{id:e.id,slug:k(e),label:j(e),email:e.email||null,imported:m(e),priority:e.priority||null}:null}}function o(a){return Array.isArray(a)&&0!==a.length?a.find(a=>!m(a))||a[0]:null}async function p(a){let b=l(a);if(!b)return null;let c=await (0,d.getProviderConnections)({provider:"codex",isActive:!0}),e=c.find(a=>l(a.id)===b||k(a)===b||l(a.email)===b||l(a.name)===b||l(a.displayName)===b);if(e)return e;let f=c.filter(a=>l(a.id).startsWith(b)||k(a).startsWith(b));return 1===f.length?f[0]:null}async function q(a){if(!a||"original"!==a.mode&&"account"!==a.mode)return null;if("account"===a.mode)return p(a.accountRef);let b=await (0,d.mt)(),c=b.codexGatewayOriginalConnectionId||b.codexOriginalConnectionId||"";if(c){let a=await p(c);if(a)return a}return o(await (0,d.getProviderConnections)({provider:"codex",isActive:!0}))}function r(a=[]){if(!a.some(a=>"codex"===a.provider&&!1!==a.isActive))return[];let b=[{id:"auto-codex",object:"model",owned_by:"zevai-codex-gateway"},...(e.vq.cx||[]).filter(a=>!a.type||"llm"===a.type).map(a=>a.id).flatMap(a=>[{id:`router/${a}`,object:"model",owned_by:"zevai-codex-gateway"},{id:`original/${a}`,object:"model",owned_by:"zevai-codex-gateway"}])];for(let c of a.filter(a=>"codex"===a.provider&&!1!==a.isActive))b.push({id:`account/${k(c)}`,object:"model",owned_by:"zevai-codex-account"});return b}},16655:(a,b,c)=>{c.d(b,{oF:()=>d.oF,tm:()=>d.tm,vF:()=>d.vF});var d=c(70877)},19225:(a,b,c)=>{a.exports=c(44870)},81329:(a,b,c)=>{c.d(b,{Xg:()=>d.Xg,eh:()=>e,vq:()=>d.vq});var d=c(44404);Object.entries(c(75681).AI_PROVIDERS).filter(([,a])=>a.passthroughModels).map(([a])=>a);let e=Object.entries(d.vq).flatMap(([a,b])=>b.map(b=>({provider:a,model:b.id,name:b.name})))},92280:(a,b,c)=>{Object.defineProperty(b,"I",{enumerable:!0,get:function(){return g}});let d=c(28208),e=c(47617),f=c(62018);async function g(a,b,c,g){if((0,d.isNodeNextResponse)(b)){var h;b.statusCode=c.status,b.statusMessage=c.statusText;let d=["set-cookie","www-authenticate","proxy-authenticate","vary"];null==(h=c.headers)||h.forEach((a,c)=>{if("x-middleware-set-cookie"!==c.toLowerCase())if("set-cookie"===c.toLowerCase())for(let d of(0,f.splitCookiesString)(a))b.appendHeader(c,d);else{let e=void 0!==b.getHeader(c);(d.includes(c.toLowerCase())||!e)&&b.appendHeader(c,a)}});let{originalResponse:i}=b;c.body&&"HEAD"!==a.method?await (0,e.pipeToNodeResponse)(c.body,i,g):i.end()}}}};
@@ -1 +1 @@
1
- exports.id=8306,exports.ids=[8306],exports.modules={30869:(a,b,c)=>{"use strict";c.d(b,{UY:()=>h,X3:()=>i,eh:()=>f.eh,fg:()=>e.fg,h0:()=>g});var d=c(39006),e=c(75681),f=c(81329);d.version;let g={npmPackageName:"zevairouter",installCmd:"npm i -g zevairouter",installCmdLatest:"npm i -g zevairouter@latest --prefer-online",shutdownCountdownSec:3,exitDelayMs:500,statusPort:20129,statusPollIntervalMs:1e3,statusLogTailLines:8,installRetries:3,installRetryDelayMs:5e3,lingerAfterDoneMs:3e4,waitForExitMinMs:5e3,waitForExitMaxMs:2e4,waitForExitCheckMs:500,appPort:1997},h={maxLines:200,pollIntervalMs:1e3},i={openrouter:"https://openrouter.ai/api/v1/chat/completions",glm:"https://api.z.ai/api/anthropic/v1/messages","glm-cn":"https://open.bigmodel.cn/api/coding/paas/v4/chat/completions",kimi:"https://api.kimi.com/coding/v1/messages",minimax:"https://api.minimax.io/anthropic/v1/messages","minimax-cn":"https://api.minimaxi.com/anthropic/v1/messages",alicode:"https://coding.dashscope.aliyuncs.com/v1/chat/completions","alicode-intl":"https://coding-intl.dashscope.aliyuncs.com/v1/chat/completions","volcengine-ark":"https://ark.cn-beijing.volces.com/api/coding/v3/chat/completions",byteplus:"https://ark.ap-southeast.bytepluses.com/api/coding/v3/chat/completions",openai:"https://api.openai.com/v1/chat/completions","vercel-ai-gateway":"https://ai-gateway.vercel.sh/v1/chat/completions",anthropic:"https://api.anthropic.com/v1/messages",gemini:"https://generativelanguage.googleapis.com/v1beta/models",ollama:"https://ollama.com/api/chat","ollama-local":"http://localhost:11434/api/chat"}},38238:(a,b,c)=>{"use strict";c.d(b,{P:()=>h});var d=c(89718),e=c(30869),f=c(54603);async function g(){let a=null;try{let b=await (0,d.PX)(!0);a=b.find(a=>!1!==a.isActive)?.key||null}catch{}let b={"Content-Type":"application/json"};return a&&(b.Authorization=`Bearer ${a}`),b["x-zevai-cli-token"]=await (0,f.Xj)("zevai-cli-auth"),b}async function h(a,b,c=`http://127.0.0.1:${process.env.PORT||e.h0.appPort}`){let d=await g(),f=Date.now();if("embedding"===b){let b=await fetch(`${c}/api/v1/embeddings`,{method:"POST",headers:d,body:JSON.stringify({model:a,input:"test"}),signal:AbortSignal.timeout(15e3)}),e=Date.now()-f,g=await b.text().catch(()=>""),h=null;try{h=g?JSON.parse(g):null}catch{}if(!b.ok){let a=h?.error?.message||h?.error||g;return{ok:!1,latencyMs:e,error:`HTTP ${b.status}${a?`: ${String(a).slice(0,240)}`:""}`,status:b.status}}return Array.isArray(h?.data)&&h.data.length>0&&Array.isArray(h.data[0]?.embedding)?{ok:!0,latencyMs:e,error:null,status:b.status}:{ok:!1,latencyMs:e,status:b.status,error:"Provider returned no embedding data"}}if("image"===b){let b=await fetch(`${c}/api/v1/images/generations`,{method:"POST",headers:d,body:JSON.stringify({model:a,prompt:"test"}),signal:AbortSignal.timeout(15e3)}),e=Date.now()-f,g=await b.text().catch(()=>""),h=null;try{h=g?JSON.parse(g):null}catch{}if(!b.ok){let a=h?.error?.message||h?.msg||h?.message||h?.error||g;return{ok:!1,latencyMs:e,error:`HTTP ${b.status}${a?`: ${String(a).slice(0,240)}`:""}`,status:b.status}}return Array.isArray(h?.data)&&h.data.length>0?{ok:!0,latencyMs:e,error:null,status:b.status}:{ok:!1,latencyMs:e,status:b.status,error:"Provider returned no image data for this model"}}if("stt"===b){let b,e,g,h,i=new FormData,j=(g=new DataView(e=new ArrayBuffer(44+(b=2*Math.max(1,Math.floor(4e3))))),(h=(a,b)=>{for(let c=0;c<b.length;c+=1)g.setUint8(a+c,b.charCodeAt(c))})(0,"RIFF"),g.setUint32(4,36+b,!0),h(8,"WAVE"),h(12,"fmt "),g.setUint32(16,16,!0),g.setUint16(20,1,!0),g.setUint16(22,1,!0),g.setUint32(24,16e3,!0),g.setUint32(28,32e3,!0),g.setUint16(32,2,!0),g.setUint16(34,16,!0),h(36,"data"),g.setUint32(40,b,!0),new Blob([e],{type:"audio/wav"}));i.append("file",j,"test.wav"),i.append("model",a);let k=await fetch(`${c}/api/v1/audio/transcriptions`,{method:"POST",headers:Object.fromEntries(Object.entries(d).filter(([a])=>"content-type"!==a.toLowerCase())),body:i,signal:AbortSignal.timeout(15e3)}),l=Date.now()-f,m=await k.text().catch(()=>""),n=null;try{n=m?JSON.parse(m):null}catch{}if(!k.ok){let a=n?.error?.message||n?.msg||n?.message||n?.error||m;return{ok:!1,latencyMs:l,error:`HTTP ${k.status}${a?`: ${String(a).slice(0,240)}`:""}`,status:k.status}}return("string"==typeof n?.text?n.text:"").trim()?{ok:!0,latencyMs:l,error:null,status:k.status}:{ok:!1,latencyMs:l,status:k.status,error:"Provider returned no transcription text for this model"}}let i=await fetch(`${c}/api/v1/chat/completions`,{method:"POST",headers:d,body:JSON.stringify({model:a,max_tokens:1,stream:!1,messages:[{role:"user",content:"hi"}]}),signal:AbortSignal.timeout(15e3)}),j=Date.now()-f,k=await i.text().catch(()=>""),l=null;try{l=k?JSON.parse(k):null}catch{}if(!i.ok){let a=l?.error?.message||l?.msg||l?.message||l?.error||k;return{ok:!1,latencyMs:j,error:`HTTP ${i.status}${a?`: ${String(a).slice(0,240)}`:""}`,status:i.status}}let m=l?.status,n=l?.msg||l?.message;if(null!=m&&"200"!==String(m)&&"0"!==String(m)&&n)return{ok:!1,latencyMs:j,status:i.status,error:`Provider status ${m}: ${String(n).slice(0,240)}`};if(l?.error){let a=l?.error?.message||l?.error||"Provider returned an error";return{ok:!1,latencyMs:j,status:i.status,error:String(a).slice(0,240)}}return Array.isArray(l?.choices)&&l.choices.length>0?{ok:!0,latencyMs:j,error:null,status:i.status}:{ok:!1,latencyMs:j,status:i.status,error:"Provider returned no completion choices for this model"}}},39006:a=>{"use strict";a.exports=JSON.parse('{"name":"zevairouter","version":"1.0.153","description":"Self-hosted AI router: many providers, one OpenAI-compatible /v1 endpoint and dashboard","bin":{"zevai":"./cli/cli.js"},"files":["cli/","src/","public/","scripts/","i18n/","assets/","images/","open-sse/","next.config.mjs","postcss.config.mjs","jsconfig.json","start.sh","package.json","README.md","LICENSE","CHANGELOG.md"],"scripts":{"dev":"next dev --webpack --port 1997","build":"next build --webpack","start":"node ./scripts/start-standalone.mjs","dev:bun":"bun --bun next dev --webpack --port 1997","build:bun":"bun --bun next build --webpack","start:bun":"bun ./.next/standalone/server.js","build:cli":"node cli/scripts/build-cli.js","release":"node cli/scripts/release.js","prepack":"node cli/scripts/build-cli.js","postinstall":"node cli/hooks/postinstall.js || exit 0"},"dependencies":{"@dnd-kit/core":"^6.3.1","@dnd-kit/modifiers":"^9.0.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@monaco-editor/react":"^4.7.0","@xterm/addon-fit":"^0.11.0","@xterm/addon-web-links":"^0.12.0","@xterm/xterm":"^6.0.0","@xyflow/react":"^12.10.1","bcryptjs":"^3.0.3","confbox":"^0.2.4","express":"^5.2.1","http-proxy-middleware":"^3.0.7","jose":"^6.1.3","marked":"^18.0.1","material-symbols":"^0.45.1","monaco-editor":"^0.55.1","next":"^16.2.12","node-forge":"^1.3.3","node-machine-id":"^1.1.12","open":"^11.0.0","ora":"^9.1.0","react":"19.2.4","react-dom":"19.2.4","react-is":"^19.2.7","recharts":"^3.7.0","selfsigned":"^5.5.0","socks":"^2.8.9","socks-proxy-agent":"^10.1.0","sql.js":"^1.14.1","undici":"^8.7.0","uuid":"^14.0.1","zustand":"^5.0.10"},"comment_optional_runtime":"Heavy packages are installed into ~/.zevai/runtime instead of the published tarball. Automation uses Playwright Chromium only; ZEVAI_MINIMAL_POSTINSTALL=1 skips its browser download. Other lazy runtimes are better-sqlite3 and node-pty.","overrides":{"dompurify":"^3.4.12","postcss":"^8.5.10"},"comment_overrides":"dompurify: monaco-editor@0.55.1 pins vulnerable dompurify@3.2.7 (multiple mXSS advisories, all fixed in 3.4.x). Override forces the patched 3.4.12 until monaco ships a stable release with the fix (currently only in 0.56.0-dev). We don\'t use dompurify directly; monaco only uses it to sanitize HTML hover/completion output.","devDependencies":{"@tailwindcss/postcss":"^4.1.18","better-sqlite3":"^12.6.2","esbuild":"^0.28.1","eslint":"^9","eslint-config-next":"16.2.9","postcss":"^8.5.10","tailwindcss":"^4"},"engines":{"node":">=22.5.0"},"keywords":["zevairouter","zevai","ai","router","proxy","kiro","codebuddy","claude","openai","api","quota","automation"],"license":"MIT","repository":{"type":"git","url":"https://github.com/Verifiedlabs/zevairouter"},"homepage":"https://github.com/Verifiedlabs/zevairouter"}')},54603:(a,b,c)=>{"use strict";c.d(b,{Xj:()=>q});var d=c(19713),e=c(73024),f=c.n(e),g=c(76760),h=c.n(g),i=c(77598),j=c.n(i),k=c(49120);let l=h().join(k.DATA_DIR,"machine-id"),m=h().join(k.DATA_DIR,"auth"),n=h().join(m,"cli-secret"),o=null,p=null;async function q(a=null){let b=a||process.env.MACHINE_ID_SALT||"endpoint-proxy-salt",c=function(){if(o)return o;try{if(o=f().readFileSync(l,"utf8").trim())return o}catch{}try{o=(0,d.machineIdSync)()}catch{o=j().randomUUID()}try{f().mkdirSync(k.DATA_DIR,{recursive:!0}),f().writeFileSync(l,o,{mode:384})}catch{}return o}(),e="zevai-cli-auth"===b?function(){if(p)return p;try{if(p=f().readFileSync(n,"utf8").trim())return p}catch{}p=j().randomBytes(32).toString("hex");try{f().mkdirSync(m,{recursive:!0}),f().writeFileSync(n,p,{mode:384})}catch{}return p}():"";return j().createHash("sha256").update(c+b+e).digest("hex").substring(0,16)}},78335:()=>{},81329:(a,b,c)=>{"use strict";c.d(b,{Xg:()=>d.Xg,eh:()=>e,vq:()=>d.vq});var d=c(44404);Object.entries(c(75681).AI_PROVIDERS).filter(([,a])=>a.passthroughModels).map(([a])=>a);let e=Object.entries(d.vq).flatMap(([a,b])=>b.map(b=>({provider:a,model:b.id,name:b.name})))},89718:(a,b,c)=>{"use strict";c.d(b,{CG:()=>d.CG,Dj:()=>d.Dj,Fh:()=>d.Fh,Iq:()=>d.Iq,K1:()=>d.K1,KJ:()=>d.KJ,KK:()=>d.KK,L:()=>d.L,L9:()=>d.L9,Lh:()=>d.Lh,Mc:()=>d.Mc,NR:()=>d.NR,PX:()=>d.PX,Pb:()=>d.Pb,Pc:()=>d.Pc,QI:()=>d.QI,Q_:()=>d.Q_,Qu:()=>d.Qu,S8:()=>d.S8,Uv:()=>d.Uv,VT:()=>d.VT,XW:()=>d.XW,Xx:()=>d.Xx,Yd:()=>d.Yd,ZO:()=>d.ZO,bI:()=>d.bI,c:()=>d.c,dK:()=>d.dK,deleteModelAlias:()=>d.fv,ek:()=>d.ek,fK:()=>d.fK,getModelAliases:()=>d.OM,getProviderConnections:()=>d.P,getQuotaSnapshot:()=>d.LF,ho:()=>d.ho,hr:()=>d.hr,i0:()=>d.i0,iE:()=>d.iE,jd:()=>d.jd,mt:()=>d.mt,o5:()=>d.o5,oG:()=>d.oG,op:()=>d.op,p3:()=>d.p3,qd:()=>d.qd,r4:()=>d.r4,tV:()=>d.tV,uL:()=>d.uL,ui:()=>d.ui,updateProviderConnection:()=>d.rj,uv:()=>d.uv,yF:()=>d.yF,yW:()=>d.yW,yg:()=>d.yg,zP:()=>d.zP,zY:()=>d.zY});var d=c(80601)},96487:()=>{}};
1
+ exports.id=8306,exports.ids=[8306],exports.modules={30869:(a,b,c)=>{"use strict";c.d(b,{UY:()=>h,X3:()=>i,eh:()=>f.eh,fg:()=>e.fg,h0:()=>g});var d=c(39006),e=c(75681),f=c(81329);d.version;let g={npmPackageName:"zevairouter",installCmd:"npm i -g zevairouter",installCmdLatest:"npm i -g zevairouter@latest --prefer-online",shutdownCountdownSec:3,exitDelayMs:500,statusPort:20129,statusPollIntervalMs:1e3,statusLogTailLines:8,installRetries:3,installRetryDelayMs:5e3,lingerAfterDoneMs:3e4,waitForExitMinMs:5e3,waitForExitMaxMs:2e4,waitForExitCheckMs:500,appPort:1997},h={maxLines:200,pollIntervalMs:1e3},i={openrouter:"https://openrouter.ai/api/v1/chat/completions",glm:"https://api.z.ai/api/anthropic/v1/messages","glm-cn":"https://open.bigmodel.cn/api/coding/paas/v4/chat/completions",kimi:"https://api.kimi.com/coding/v1/messages",minimax:"https://api.minimax.io/anthropic/v1/messages","minimax-cn":"https://api.minimaxi.com/anthropic/v1/messages",alicode:"https://coding.dashscope.aliyuncs.com/v1/chat/completions","alicode-intl":"https://coding-intl.dashscope.aliyuncs.com/v1/chat/completions","volcengine-ark":"https://ark.cn-beijing.volces.com/api/coding/v3/chat/completions",byteplus:"https://ark.ap-southeast.bytepluses.com/api/coding/v3/chat/completions",openai:"https://api.openai.com/v1/chat/completions","vercel-ai-gateway":"https://ai-gateway.vercel.sh/v1/chat/completions",anthropic:"https://api.anthropic.com/v1/messages",gemini:"https://generativelanguage.googleapis.com/v1beta/models",ollama:"https://ollama.com/api/chat","ollama-local":"http://localhost:11434/api/chat"}},38238:(a,b,c)=>{"use strict";c.d(b,{P:()=>h});var d=c(89718),e=c(30869),f=c(54603);async function g(){let a=null;try{let b=await (0,d.PX)(!0);a=b.find(a=>!1!==a.isActive)?.key||null}catch{}let b={"Content-Type":"application/json"};return a&&(b.Authorization=`Bearer ${a}`),b["x-zevai-cli-token"]=await (0,f.Xj)("zevai-cli-auth"),b}async function h(a,b,c=`http://127.0.0.1:${process.env.PORT||e.h0.appPort}`){let d=await g(),f=Date.now();if("embedding"===b){let b=await fetch(`${c}/api/v1/embeddings`,{method:"POST",headers:d,body:JSON.stringify({model:a,input:"test"}),signal:AbortSignal.timeout(15e3)}),e=Date.now()-f,g=await b.text().catch(()=>""),h=null;try{h=g?JSON.parse(g):null}catch{}if(!b.ok){let a=h?.error?.message||h?.error||g;return{ok:!1,latencyMs:e,error:`HTTP ${b.status}${a?`: ${String(a).slice(0,240)}`:""}`,status:b.status}}return Array.isArray(h?.data)&&h.data.length>0&&Array.isArray(h.data[0]?.embedding)?{ok:!0,latencyMs:e,error:null,status:b.status}:{ok:!1,latencyMs:e,status:b.status,error:"Provider returned no embedding data"}}if("image"===b){let b=await fetch(`${c}/api/v1/images/generations`,{method:"POST",headers:d,body:JSON.stringify({model:a,prompt:"test"}),signal:AbortSignal.timeout(15e3)}),e=Date.now()-f,g=await b.text().catch(()=>""),h=null;try{h=g?JSON.parse(g):null}catch{}if(!b.ok){let a=h?.error?.message||h?.msg||h?.message||h?.error||g;return{ok:!1,latencyMs:e,error:`HTTP ${b.status}${a?`: ${String(a).slice(0,240)}`:""}`,status:b.status}}return Array.isArray(h?.data)&&h.data.length>0?{ok:!0,latencyMs:e,error:null,status:b.status}:{ok:!1,latencyMs:e,status:b.status,error:"Provider returned no image data for this model"}}if("stt"===b){let b,e,g,h,i=new FormData,j=(g=new DataView(e=new ArrayBuffer(44+(b=2*Math.max(1,Math.floor(4e3))))),(h=(a,b)=>{for(let c=0;c<b.length;c+=1)g.setUint8(a+c,b.charCodeAt(c))})(0,"RIFF"),g.setUint32(4,36+b,!0),h(8,"WAVE"),h(12,"fmt "),g.setUint32(16,16,!0),g.setUint16(20,1,!0),g.setUint16(22,1,!0),g.setUint32(24,16e3,!0),g.setUint32(28,32e3,!0),g.setUint16(32,2,!0),g.setUint16(34,16,!0),h(36,"data"),g.setUint32(40,b,!0),new Blob([e],{type:"audio/wav"}));i.append("file",j,"test.wav"),i.append("model",a);let k=await fetch(`${c}/api/v1/audio/transcriptions`,{method:"POST",headers:Object.fromEntries(Object.entries(d).filter(([a])=>"content-type"!==a.toLowerCase())),body:i,signal:AbortSignal.timeout(15e3)}),l=Date.now()-f,m=await k.text().catch(()=>""),n=null;try{n=m?JSON.parse(m):null}catch{}if(!k.ok){let a=n?.error?.message||n?.msg||n?.message||n?.error||m;return{ok:!1,latencyMs:l,error:`HTTP ${k.status}${a?`: ${String(a).slice(0,240)}`:""}`,status:k.status}}return("string"==typeof n?.text?n.text:"").trim()?{ok:!0,latencyMs:l,error:null,status:k.status}:{ok:!1,latencyMs:l,status:k.status,error:"Provider returned no transcription text for this model"}}let i=await fetch(`${c}/api/v1/chat/completions`,{method:"POST",headers:d,body:JSON.stringify({model:a,max_tokens:1,stream:!1,messages:[{role:"user",content:"hi"}]}),signal:AbortSignal.timeout(15e3)}),j=Date.now()-f,k=await i.text().catch(()=>""),l=null;try{l=k?JSON.parse(k):null}catch{}if(!i.ok){let a=l?.error?.message||l?.msg||l?.message||l?.error||k;return{ok:!1,latencyMs:j,error:`HTTP ${i.status}${a?`: ${String(a).slice(0,240)}`:""}`,status:i.status}}let m=l?.status,n=l?.msg||l?.message;if(null!=m&&"200"!==String(m)&&"0"!==String(m)&&n)return{ok:!1,latencyMs:j,status:i.status,error:`Provider status ${m}: ${String(n).slice(0,240)}`};if(l?.error){let a=l?.error?.message||l?.error||"Provider returned an error";return{ok:!1,latencyMs:j,status:i.status,error:String(a).slice(0,240)}}return Array.isArray(l?.choices)&&l.choices.length>0?{ok:!0,latencyMs:j,error:null,status:i.status}:{ok:!1,latencyMs:j,status:i.status,error:"Provider returned no completion choices for this model"}}},39006:a=>{"use strict";a.exports=JSON.parse('{"name":"zevairouter","version":"1.0.155","description":"Self-hosted AI router: many providers, one OpenAI-compatible /v1 endpoint and dashboard","bin":{"zevai":"./cli/cli.js"},"files":["cli/cli.js","cli/app/","cli/hooks/","cli/src/","cli/package.json","cli/README.md","cli/LICENSE","scripts/start-standalone.mjs","README.md","README.zh-CN.md","DOCKER.md","LICENSE","CHANGELOG.md"],"scripts":{"dev":"next dev --webpack --port 1997","build":"node scripts/build-app.mjs","start":"node ./scripts/start-standalone.mjs","dev:bun":"bun --bun next dev --webpack --port 1997","build:bun":"bun --bun next build --webpack","start:bun":"bun ./.next/standalone/server.js","lint":"eslint .","test":"vitest run --config tests/vitest.config.js","build:cli":"node cli/scripts/build-cli.js","audit:package":"node cli/scripts/audit-package.mjs","smoke:package":"node cli/scripts/smoke-package.mjs","release":"node cli/scripts/release.js","prepack":"npm run build:cli && npm run audit:package","postinstall":"node cli/hooks/postinstall.js"},"dependencies":{"next":"16.2.12","node-machine-id":"1.1.12","react":"19.2.4","react-dom":"19.2.4","sql.js":"1.14.1"},"comment_optional_runtime":"Optional packages are installed into ~/.zevai/runtime instead of the published tarball. Automation uses CloakBrowser with playwright-core; ZEVAI_MINIMAL_POSTINSTALL=1 skips its browser download. Other lazy runtimes are better-sqlite3, node-pty, and systray2.","overrides":{"body-parser":"^2.3.0","brace-expansion":"5.0.8","dompurify":"^3.4.12","postcss":"^8.5.10","sharp":"^0.35.0"},"comment_overrides":"Security floors for transitive dependencies. ESLint\'s legacy minimatch is a private, source-pinned 3.1.5 compatibility package backed by brace-expansion 5.0.8; modern minimatch uses 5.0.8 directly. Monaco still pins an old DOMPurify; Express and Next may resolve vulnerable body-parser/sharp releases. Recheck and remove overrides once parent packages require fixed versions.","devDependencies":{"@dnd-kit/core":"^6.3.1","@dnd-kit/modifiers":"^9.0.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@monaco-editor/react":"^4.7.0","@tailwindcss/postcss":"^4.1.18","@xterm/addon-fit":"^0.11.0","@xterm/addon-web-links":"^0.12.0","@xterm/xterm":"^6.0.0","@xyflow/react":"^12.10.1","bcryptjs":"^3.0.3","better-sqlite3":"^12.6.2","minimatch":"file:vendor/minimatch3-secure","confbox":"^0.2.4","esbuild":"^0.28.1","eslint":"^9","eslint-config-next":"16.2.9","express":"^5.2.1","http-proxy-middleware":"^3.0.7","jose":"^6.1.3","marked":"^18.0.1","material-symbols":"^0.45.1","monaco-editor":"^0.55.1","node-forge":"^1.3.3","open":"^11.0.0","ora":"^9.1.0","postcss":"^8.5.10","react-is":"^19.2.7","recharts":"^3.7.0","selfsigned":"^5.5.0","socks":"^2.8.9","socks-proxy-agent":"^10.1.0","tailwindcss":"^4","undici":"^8.7.0","uuid":"^14.0.1","vitest":"^4.1.10","zustand":"^5.0.10"},"engines":{"node":">=22.5.0"},"keywords":["zevairouter","zevai","ai","router","proxy","kiro","codebuddy","claude","openai","api","quota","automation"],"license":"MIT","repository":{"type":"git","url":"https://github.com/Verifiedlabs/zevairouter"},"bugs":{"url":"https://github.com/Verifiedlabs/zevairouter/issues"},"homepage":"https://github.com/Verifiedlabs/zevairouter"}')},54603:(a,b,c)=>{"use strict";c.d(b,{Xj:()=>q});var d=c(19713),e=c(73024),f=c.n(e),g=c(76760),h=c.n(g),i=c(77598),j=c.n(i),k=c(49120);let l=h().join(k.DATA_DIR,"machine-id"),m=h().join(k.DATA_DIR,"auth"),n=h().join(m,"cli-secret"),o=null,p=null;async function q(a=null){let b=a||process.env.MACHINE_ID_SALT||"endpoint-proxy-salt",c=function(){if(o)return o;try{if(o=f().readFileSync(l,"utf8").trim())return o}catch{}try{o=(0,d.machineIdSync)()}catch{o=j().randomUUID()}try{f().mkdirSync(k.DATA_DIR,{recursive:!0}),f().writeFileSync(l,o,{mode:384})}catch{}return o}(),e="zevai-cli-auth"===b?function(){if(p)return p;try{if(p=f().readFileSync(n,"utf8").trim())return p}catch{}p=j().randomBytes(32).toString("hex");try{f().mkdirSync(m,{recursive:!0}),f().writeFileSync(n,p,{mode:384})}catch{}return p}():"";return j().createHash("sha256").update(c+b+e).digest("hex").substring(0,16)}},78335:()=>{},81329:(a,b,c)=>{"use strict";c.d(b,{Xg:()=>d.Xg,eh:()=>e,vq:()=>d.vq});var d=c(44404);Object.entries(c(75681).AI_PROVIDERS).filter(([,a])=>a.passthroughModels).map(([a])=>a);let e=Object.entries(d.vq).flatMap(([a,b])=>b.map(b=>({provider:a,model:b.id,name:b.name})))},89718:(a,b,c)=>{"use strict";c.d(b,{CG:()=>d.CG,Dj:()=>d.Dj,Fh:()=>d.Fh,Iq:()=>d.Iq,K1:()=>d.K1,KJ:()=>d.KJ,KK:()=>d.KK,L:()=>d.L,L9:()=>d.L9,Lh:()=>d.Lh,Mc:()=>d.Mc,NR:()=>d.NR,PX:()=>d.PX,Pb:()=>d.Pb,Pc:()=>d.Pc,QI:()=>d.QI,Q_:()=>d.Q_,Qu:()=>d.Qu,S8:()=>d.S8,Uv:()=>d.Uv,VT:()=>d.VT,XW:()=>d.XW,Xx:()=>d.Xx,Yd:()=>d.Yd,ZO:()=>d.ZO,bI:()=>d.bI,c:()=>d.c,dK:()=>d.dK,deleteModelAlias:()=>d.fv,ek:()=>d.ek,fK:()=>d.fK,getModelAliases:()=>d.OM,getProviderConnections:()=>d.P,getQuotaSnapshot:()=>d.LF,ho:()=>d.ho,hr:()=>d.hr,i0:()=>d.i0,iE:()=>d.iE,jd:()=>d.jd,mt:()=>d.mt,o5:()=>d.o5,oG:()=>d.oG,op:()=>d.op,p3:()=>d.p3,qd:()=>d.qd,r4:()=>d.r4,tV:()=>d.tV,uL:()=>d.uL,ui:()=>d.ui,updateProviderConnection:()=>d.rj,uv:()=>d.uv,yF:()=>d.yF,yW:()=>d.yW,yg:()=>d.yg,zP:()=>d.zP,zY:()=>d.zY});var d=c(70877)},96487:()=>{}};
@@ -1 +1 @@
1
- "use strict";exports.id=8371,exports.ids=[8371],exports.modules={48371:(a,b,c)=>{c.d(b,{xM:()=>_,t9:()=>ae,TK:()=>ad,cO:()=>e.cO,VU:()=>au});var d=c(55511),e=c(13868),f=c(71998),g=c(89718),h=c(20116),i=c(92990),j=c(39609);let k=globalThis.fetch,l=new Set(["a timeout","is cancelled","is complete","number banned, when number already used"]);class m extends Error{constructor(a,{status:b,body:c}={}){super(a),this.name="FiveSimError",this.status=b,this.body=c}}class n extends m{constructor(a){super(`5sim order ${a} timed out waiting for SMS`),this.name="FiveSimTimeoutError",this.orderId=a}}class o extends m{constructor(a,b){super(`5sim order ${a} cancelled: ${b}`),this.name="FiveSimCancelledError",this.orderId=a}}class p extends m{constructor(a){super(`5sim order ${a} number was already used (banned)`),this.name="FiveSimBannedError",this.orderId=a}}class q{constructor({apiKey:a,proxyOptions:b=null}={}){if(!a||"string"!=typeof a||!a.trim())throw new m("5sim API key is required");this.apiKey=a.trim(),this.proxyOptions=b}_headers(a={}){return{Authorization:`Bearer ${this.apiKey}`,Accept:"application/json",...a}}async _get(a,{headers:b,...c}={}){let d=`https://5sim.net/v1${a}`,e=this.proxyOptions?.enabled?j.proxyAwareFetch:k,f=await e(d,{method:"GET",headers:this._headers(b),...c},this.proxyOptions);if(!f.ok){let b=await f.text().catch(()=>"");throw new m(`5sim request to ${a} failed (HTTP ${f.status}): ${b.slice(0,200)}`,{status:f.status,body:b})}let g=await f.text();try{return JSON.parse(g)}catch{if(g&&!g.startsWith("{"))throw new m(`5sim ${a} returned non-JSON: ${g.slice(0,200)}`,{status:f.status,body:g});return null}}async buyNumber({country:a="hongkong",operator:b="any",product:c="codebuddy",allowProductFallback:d=!1}={}){let e="codebuddy"===c&&d?["codebuddy","other"]:[c],f=null;for(let c of e){let g=`/user/buy/activation/${encodeURIComponent(a)}/${encodeURIComponent(b)}/${encodeURIComponent(c)}`;try{let a=await this._get(g);if(!a||!a.id||!a.phone)throw new m(`5sim buyNumber returned unexpected shape: ${JSON.stringify(a).slice(0,200)}`,{body:a});return a}catch(g){f=g;let a=g?.status,b=String(g?.body||g?.message||"").toLowerCase();if(!(d&&"codebuddy"===c&&e.includes("other")&&(400===a||404===a||b.includes("no free")||b.includes("not enough")||b.includes("no product"))))throw g}}throw f||new m("5sim buyNumber failed for all product candidates")}async checkOrder(a){return this._get(`/user/check/${a}`)}async pollCode(a,{timeoutMs:b=9e5,intervalMs:c=6e3,signal:d}={}){let e=Math.max(5e3,c),f=Date.now()+b,g=0;for(;Date.now()<f;){let b;if(d?.aborted)throw new o(a,"aborted by caller");try{b=await this.checkOrder(a)}catch(a){if(a instanceof m&&a.status>=500){if(++g>5)throw a;await s(e);continue}throw a}if(g=0,Array.isArray(b.sms)&&b.sms.length>0){let a=r(b.sms[b.sms.length-1]);if(a)return a}if(b.status&&l.has(b.status)){if("a timeout"===b.status)throw new n(a);if("number banned, when number already used"===b.status)throw new p(a);if("is cancelled"===b.status)throw new o(a,b.status);if("is complete"===b.status){let c=function(a){if(!Array.isArray(a))return null;for(let b=a.length-1;b>=0;b--){let c=r(a[b]);if(c)return c}return null}(b.sms);if(c)return c;throw new m(`5sim order ${a} completed but no SMS code found`,{body:b})}}await s(e)}throw new n(a)}async finishOrder(a){try{return await this._get(`/user/finish/${a}`),!0}catch(b){return console.warn(`[5sim] finishOrder(${a}) failed (best-effort): ${b.message}`),!1}}async cancelOrder(a){try{return await this._get(`/user/cancel/${a}`),!0}catch(b){return console.warn(`[5sim] cancelOrder(${a}) failed (best-effort): ${b.message}`),!1}}async banOrder(a){try{return await this._get(`/user/ban/${a}`),!0}catch(b){return console.warn(`[5sim] banOrder(${a}) failed (best-effort): ${b.message}`),!1}}async getBalance(){try{let a=await this._get("/user/profile");return{balance:a?.balance??null,rating:a?.rating??null}}catch(a){return console.warn(`[5sim] getBalance failed: ${a.message}`),{balance:null,rating:null}}}}function r(a){return a?a.code&&/\d{4,8}/.test(String(a.code))?String(a.code).match(/\d{4,8}/)[0]:a.text?function(a){if(!a)return null;let b=String(a).match(/\b(\d{4,8})\b/);return b?b[1]:null}(a.text):null:null}function s(a){return new Promise(b=>setTimeout(b,a))}let t=["https://www.codebuddy.cn/login/","https://www.codebuddy.cn/login","https://www.codebuddy.cn/register/","https://copilot.tencent.com/login/"],u=["text=手机号","div:has-text('手机号')","span:has-text('手机号')","[class*='phone']:has-text('手机号')","div.kc-phone-tab:has-text('手机号')"],v=["text=手机号","text=其他登录方式","text=微信","#phone-iframe",".login-phone-box"],w=["button:has-text('同意')","text=同意并继续","text=同意"],x="#phone-iframe",y="#phoneNumber",z=".kc-country-option",A=".kc-country-code-text",B="#code",C=['iframe[src*="captcha"]','iframe[src*="tcaptcha"]',"#tcaptcha","#tcaptcha_transform",".nc_iconfont",".nc_wrapper",'[class*="captcha"]','[id*="captcha"]',"text=滑块","text=拖动"],D=['[class*="avatar"]','[class*="user-info"]','[class*="logout"]',"text=退出登录","text=Logout","text=Sign out"],E=["#input-error",".pf-c-form__helper-text.pf-m-error",".kc-feedback-text"],F=new Set(["login_risk_state"]),G=["账号访问受限","安全策略限制","访问受限","account restricted","access restricted"];function H(a=[]){return a.some(a=>F.has(a?.name))}function I(a="Tencent risk policy rejected the post-OTP session"){return{status:"failed_restricted",error:`Account restricted after OTP (${a}). Use a different residential CN/HK proxy with concurrency 1; do not retry this number on the same egress IP.`}}async function J({page:a,phone:b,resolvePhone:c,pollSmsPromise:d,waitForSms:e,onStep:f,phoneFormatter:g=a=>a,timeouts:h={},signal:i=null,isCancelled:j=null}){let k=h.nav??3e4,l=h.action??15e3,m=h.codeWait??9e5,n=h.postSubmit??1e4,o=(a,b)=>f?.(a,b),p=()=>{if(i?.aborted||"function"==typeof j&&j()){let a=Error("Job cancelled");throw a.code="JOB_CANCELLED",a}};try{var q;let f,h;o("cn_opening_login_page","Opening CodeBuddy CN login page"),p();try{a.setDefaultNavigationTimeout(k),a.setDefaultTimeout(l)}catch{}try{await a.context().route("**/*",a=>{var b,c;let d,e=a.request();return(b=e.url(),c=e.resourceType(),d=String(b||""),/googletagmanager|googleadservices|google-analytics|doubleclick|facebook|hotjar|clarity\.ms|hm\.baidu|google\.com\/rmkt/i.test(d)||"media"===c||"image"===c&&!/captcha|tcaptcha|challenge|verify|qrcode/i.test(d))?a.abort():a.continue()})}catch{}let i=null,j=[];for(let b=1;b<=2;b++){p();try{let c=t[(b-1)%t.length];o("cn_nav_attempt",`Navigation attempt ${b}/2 → ${c}`),b>1&&(await a.context().clearCookies().catch(()=>{}),await a.waitForTimeout(800)),await a.goto(c,{waitUntil:"commit",timeout:k}),p(),await a.waitForFunction(()=>"loading"!==document.readyState,{timeout:1e4}).catch(()=>{}),p();let d=await M(a,w,{timeout:6e3});d&&(await d.click().catch(()=>{}),o("cn_consent_dismissed","Privacy consent dialog dismissed (同意)"),await a.waitForTimeout(1e3));let e=await N(a,v,25e3);if(p(),!e){let b=await a.locator("body").innerText().catch(()=>""),d=await a.evaluate(()=>document.documentElement?.outerHTML?.length||0).catch(()=>0),e=a.url();o("cn_spa_not_ready",`SPA not ready after 25s (url=${e}, body=${String(b).slice(0,80)}, html=${d})`),!b&&d<200?(o("cn_proxy_empty_page","Empty page body — proxy may be blocking codebuddy.cn"),j.push({code:"proxy_empty",detail:`empty page via ${c} (html=${d})`})):j.push({code:"spa_timeout",detail:`SPA not ready url=${e} html=${d}`});continue}o("cn_spa_ready","Login SPA ready"),o("cn_selecting_phone_tab","Selecting phone-number tab");let f=await M(a,u,{timeout:12e3});if(f?(await f.click().catch(()=>{}),o("cn_phone_tab_selected","Phone tab selected"),await a.waitForTimeout(800)):o("cn_phone_tab_not_found","Phone tab not found — checking if iframe already present"),o("cn_waiting_for_iframe","Waiting for phone iframe to load"),await a.locator(x).waitFor({state:"attached",timeout:18e3}).catch(()=>{}),i=await K(a)){if(await i.waitForSelector(y,{state:"visible",timeout:15e3}).then(()=>!0).catch(()=>!1)){o("cn_iframe_ready","Phone iframe + #phoneNumber ready");break}o("cn_iframe_empty","Iframe found but #phoneNumber not visible yet"),j.push({code:"iframe_empty",detail:"phone iframe attached but #phoneNumber not visible"}),i=null}else o("cn_iframe_missing",`No #phone-iframe (attempt ${b}/2)`),j.push({code:"iframe_missing",detail:"SPA loaded but #phone-iframe never appeared"})}catch(e){if(e?.code==="JOB_CANCELLED")throw e;let a=String(e?.message||e||"");o("cn_nav_retry",`Navigation attempt ${b}/2 failed: ${a.slice(0,120)}`);let c=/timeout|exceeded|ETIMEDOUT|net::ERR/i.test(a),d=/ERR_PROXY|ERR_TUNNEL|ERR_CONNECTION|NS_ERROR_PROXY|proxy/i.test(a);j.push({code:d?"proxy_network":c?"nav_timeout":"nav_error",detail:a.slice(0,160)})}}if(!i)return{status:"failed",error:function(a=[],b=2){let c=a.map(a=>a.code),d=a[a.length-1],e="Fix: use a live residential CN proxy (proxyPoolMode=single), concurrency 1, then retry. 5sim is not charged until the form loads.";return c.includes("proxy_empty")||c.includes("proxy_network")?`CodeBuddy CN login page empty/blocked via proxy after ${b} attempts (${d?.detail||"proxy blackhole"}). ${e}`:c.includes("nav_timeout")?`CodeBuddy CN navigation timed out after ${b} attempts (${d?.detail||"goto timeout"}). Proxy is too slow or dead. ${e}`:c.includes("spa_timeout")?`CodeBuddy CN SPA did not boot after ${b} attempts (${d?.detail||"no login UI"}). Proxy/CDN may be filtering JS. ${e}`:c.includes("iframe_missing")||c.includes("iframe_empty")?`CodeBuddy CN page opened but phone form iframe never appeared after ${b} attempts (${d?.detail||"no #phone-iframe"}). Site layout change or half-loaded SPA — retry with another CN exit IP. ${e}`:c.includes("nav_error")&&d?.detail?`CodeBuddy CN phone form failed after ${b} attempts: ${d.detail}. ${e}`:`Could not load CodeBuddy CN phone form after ${b} attempts (${d?.code||"unknown"}: ${d?.detail||"proxy/SPA"}). ${e}`}(j,2)};await i.waitForSelector("#kc-form-login",{timeout:l}).catch(()=>{}),await i.waitForSelector(y,{state:"visible",timeout:l}).catch(()=>{});let r=b;if("function"==typeof c&&(o("cn_ordering_after_form","Login form ready — ordering 5sim number now (not before nav)"),r=await c()),!r)return{status:"failed",error:"No phone number available (resolvePhone/phone missing)"};let s=g(r),{countryCode:z,localNumber:A}=(q=s,(!(h=String(q).replace(/[\s\-()]/g,"")).startsWith("+")&&/^\d+$/.test(h)&&(h="+"+h),h.startsWith("+852"))?{countryCode:"+852",localNumber:h.slice(4)}:h.startsWith("+86")?{countryCode:"+86",localNumber:h.slice(3)}:h.startsWith("+1")?{countryCode:"+1",localNumber:h.slice(2)}:{countryCode:"",localNumber:h.replace(/^\+/,"")});o("cn_selecting_country",`Selecting country code ${z} for phone ${s}`),await L(i,z,l,o),o("cn_entering_phone",`Entering phone number: ${A}`);let C=i.locator(y).first();try{await C.waitFor({state:"visible",timeout:l})}catch{return{status:"failed",error:"Could not find the phone number input (#phoneNumber) inside the iframe"}}await O(C,A),o("cn_phone_entered",`Phone number entered: ${A}`);try{let b=a.locator(".t-checkbox").last();await b.isVisible({timeout:3e3}).catch(()=>!1)&&(await b.click().catch(()=>{}),o("cn_agreement_checked","Agreement checkbox checked"))}catch{}o("cn_clicking_send_code","Clicking send SMS code button");let D=i.locator("input.btn-lg.code-btn").first(),E=!1;try{await D.waitFor({state:"visible",timeout:5e3}),E=!0}catch{let a=i.locator(".code-btn").first();try{await a.waitFor({state:"visible",timeout:5e3}),E=!0}catch{E=!1}}if(!E)return{status:"failed",error:"Could not find the send-SMS-code button (.code-btn) inside the iframe"};await D.click().catch(()=>{}),o("cn_send_code_clicked","Send code button clicked"),await i.waitForSelector(B,{state:"visible",timeout:5e3}).catch(()=>{});let F=await W(i);if(F)return{status:"failed",error:`Form error after sending code: ${F}`};o("cn_waiting_for_sms","Waiting for SMS verification code from 5sim (timer starts now)");try{let a;if("function"==typeof e)a=Promise.resolve().then(()=>e());else if(d)a=d;else throw Error("No waitForSms/pollSmsPromise provided");let b=new Promise((a,b)=>setTimeout(()=>b(Error("Timed out waiting for SMS code")),m));f=await Promise.race([a,b])}catch(a){if(a&&"FiveSimTimeoutError"===a.name)throw a;return{status:"failed",error:`Failed to receive SMS code: ${a.message}`}}if(!f)return{status:"failed",error:"Received empty SMS code from 5sim"};o("cn_sms_received",`SMS code received: ${f}`),o("cn_entering_code","Entering SMS verification code");let G=i.locator(B).first();try{await G.waitFor({state:"visible",timeout:l})}catch{return{status:"failed",error:"Could not find the verification code input (#code) inside the iframe"}}await O(G,f),o("cn_code_entered","Verification code entered");let J=1200+Math.floor(1800*Math.random());o("cn_pre_submit_pause",`Waiting ${J}ms before submit (humanize)`),await a.waitForTimeout(J);let P=Math.max(n,12e3),Q=!1;for(let b=0;b<2;b++){o("cn_submitting",`Clicking submit button (attempt ${b+1}/2)`);let c=await K(a);if(!c){let b=await R(a,{timeoutMs:5e3,reportStep:o});if(b.ok)return o("cn_session_cookies",`Keycloak session after iframe detach (${b.cookie})`),{status:"success"};if(H(b.cookies))return o("cn_account_restricted","Tencent login_risk_state present after iframe detached"),I("login_risk_state cookie present");return{status:"failed",error:"Lost phone iframe after submit"}}if(await c.locator(y).first().isVisible({timeout:3e3}).catch(()=>!1)&&b>0){o("cn_re_entering_after_refresh",`Re-entering phone + code after refresh (retry ${b})`),await L(c,z,l,o);let d=c.locator(y).first();await O(d,A);try{let b=a.locator(".t-checkbox").first();await b.isVisible({timeout:2e3}).catch(()=>!1)&&await b.click().catch(()=>{})}catch{}let e=c.locator(B).first();await e.isVisible({timeout:3e3}).catch(()=>!1)&&await O(e,f),await a.waitForTimeout(800+Math.floor(700*Math.random()))}if(await S(c,l),o("cn_submitted",`Registration form submitted (attempt ${b+1})`),await a.waitForLoadState("domcontentloaded",{timeout:5e3}).catch(()=>{}),await a.waitForTimeout(1800),c=await K(a)||c,await V(a,c))return o("cn_account_restricted",`Account restricted after submit (attempt ${b+1}) — stopping automatic retries`),I("restriction message detected");if(o("cn_checking_captcha","Checking for captcha"),await X(a,c,3e3))return o("cn_captcha_detected","Captcha appeared during registration — manual assist needed"),{status:"needs_manual",error:"A captcha appeared during registration. Please complete it manually in the opened browser window.",captcha:!0};let d=await W(c);if(d)return{status:"failed",error:`Form error after submit: ${d}`};o("cn_waiting_session",`Waiting up to ${Math.round(P/1e3)}s for Keycloak session cookies`);let e=await R(a,{timeoutMs:P,reportStep:o,alsoCheckFrame:()=>K(a)});if(e.ok)return o("cn_session_cookies",`Keycloak session cookies present (${e.cookie}) — registration success`),{status:"success"};if("restricted"===e.reason)return o("cn_account_restricted","Restriction detected while waiting for Keycloak session"),I("restriction message detected during session handoff");if(await T(a)&&b<1){o("cn_submit_no_effect","Login form still visible after submit — retrying");continue}o("cn_session_nudge","No session yet — navigating to home to complete OIDC handoff"),await a.goto("https://www.codebuddy.cn/",{waitUntil:"domcontentloaded",timeout:k}).catch(()=>{}),await a.waitForTimeout(2e3);let g=await R(a,{timeoutMs:1e4,reportStep:o});if(g.ok)return o("cn_session_cookies",`Keycloak session after home nudge (${g.cookie})`),{status:"success"};if("restricted"===g.reason)return o("cn_account_restricted","Restriction detected after home handoff"),I("restriction message detected after OIDC handoff");if(H(g.cookies))return o("cn_account_restricted","Home handoff returned no authenticated session and login_risk_state is present"),I("login_risk_state persisted after OIDC handoff");Q=!0;break}if(!Q)return o("cn_submit_retries_exhausted","Account restricted after 2 retries — needs manual"),{status:"needs_manual",error:"Account restricted after 2 refresh retries. Please try with a different VPN/proxy or complete manually."};o("cn_confirming_success","Confirming registration success");let Z=await R(a,{timeoutMs:5e3});if(Z.ok)return o("cn_registration_success",`Phone registration completed (Keycloak session: ${Z.cookie})`),{status:"success"};if(H(Z.cookies))return o("cn_account_restricted","No authenticated session and Tencent login_risk_state is present — account restricted"),I("login_risk_state without an authenticated session");if(await Y(a,i,1e4))return o("cn_registration_success","Phone registration completed successfully (UI markers)"),{status:"success"};let $=await U(a);return o("cn_success_unconfirmed",`No Keycloak session after submit — ${$.summary}`),{status:"needs_manual",error:`Login submit finished but no Keycloak session yet (${$.summary}). Complete login in the headed browser or retry with a fresh China proxy.`}}catch(a){if(a&&"FiveSimTimeoutError"===a.name)throw a;return o("cn_automation_error",`Phone registration automation error: ${a.message}`),{status:"failed",error:a.message||"Unexpected error during phone registration"}}}async function K(a){try{await a.locator(x).waitFor({state:"attached",timeout:5e3});let b=await a.locator(x).elementHandle({timeout:2e3});if(b){let a=await b.contentFrame();if(a)return a}}catch{}for(let b of a.frames()){let a=b.url();if(a.includes("codebuddy.cn/auth/realms/copilot")||a.includes("protocol/openid-connect"))return b}return null}async function L(a,b,c,d){if(!b)return;let e=Math.min(Number(c)||15e3,1e4),f=async()=>{let c=a.locator(A).first(),f=String(await c.textContent({timeout:3e3}).catch(()=>"")).trim();if(f===b)return void d?.("cn_country_already_selected",`Country code already ${b}`);d?.("cn_opening_country_dropdown",`Opening country dropdown (current: ${f}, target: ${b})`);let g=a.locator(".kc-country-selector").first();for(let c of(await g.waitFor({state:"visible",timeout:Math.min(e,5e3)}),await g.click({timeout:3e3}).catch(()=>{}),await a.locator(z).first().waitFor({state:"visible",timeout:3e3}).catch(()=>{}),({"+852":["中国香港","香港","Hong Kong","+852"],"+86":["中国大陆","中国","China","+86"],"+853":["中国澳门","澳门","Macau","+853"],"+886":["中国台湾","台湾","Taiwan","+886"]})[b]||[b]))for(let e of[a.locator(`${z}:has-text("${c}")`).first(),a.getByText(c,{exact:!1}).first()]){if(!await e.isVisible({timeout:1500}).catch(()=>!1))continue;let f=await e.textContent({timeout:1500}).catch(()=>c);await e.click({timeout:2e3}).catch(()=>{}),await a.locator(A).filter({hasText:b}).first().waitFor({state:"visible",timeout:2e3}).catch(()=>{}),d?.("cn_country_selected",`Country selected: ${String(f||c).trim()}`);return}d?.("cn_country_not_found",`Country code ${b} not found in dropdown; using default`),await a.locator("body").click({timeout:1e3}).catch(()=>{})};try{await Promise.race([f(),new Promise((a,b)=>{let c=setTimeout(()=>b(Error(`selectCountry timed out after ${e}ms`)),e);"function"==typeof c.unref&&c.unref()})])}catch(a){d?.("cn_country_select_error",`Country selection error: ${a.message}`)}}async function M(a,b,{timeout:c=1e4}={}){for(let d of b)try{let b=a.locator(d).first();return await b.waitFor({state:"visible",timeout:Math.min(c,5e3)}),b}catch{}return null}async function N(a,b,c=15e3){let d=Date.now()+c;for(;Date.now()<d;){for(let c of b)try{let b=a.locator(c).first();if(await b.isVisible().catch(()=>!1))return!0}catch{}await new Promise(a=>setTimeout(a,250))}return!1}async function O(a,b){try{return await a.click(),await a.fill(""),await a.fill(b),!0}catch{try{return await a.click(),await a.press("Control+a"),await a.type(b,{delay:50}),!0}catch{return!1}}}let P=["KEYCLOAK_IDENTITY","KEYCLOAK_SESSION","KEYCLOAK_IDENTITY_LEGACY","KEYCLOAK_SESSION_LEGACY"];function Q(a=[]){for(let b of P)if(a.some(a=>a.name===b))return b;let b=a.find(a=>a.name.startsWith("KEYCLOAK_")&&!/locale|theme|restart/i.test(a.name));return b?.name||null}async function R(a,{timeoutMs:b=2e4,reportStep:c,alsoCheckFrame:d}={}){let e=Date.now()+b,f=0;for(;Date.now()<e;){let b=await a.context().cookies().catch(()=>[]),g=Q(b);if(g)return{ok:!0,cookie:g,cookies:b};try{let c=a.url();if(c&&!c.includes("/login")&&!c.includes("/auth/realms")){let a=b.find(a=>/^(access_token|cb_token|codebuddy)/i.test(a.name)||"token"===a.name&&a.domain?.includes("codebuddy"));if(a)return{ok:!0,cookie:a.name,cookies:b}}}catch{}let h=d?await d().catch(()=>null):null;if(await V(a,h))return{ok:!1,cookies:b,reason:"restricted"};if(h){let a=await W(h);if(a)return{ok:!1,cookies:b,reason:`form_error:${a}`}}if(c&&Date.now()-f>4e3){f=Date.now();let a=Math.max(0,Math.round((e-Date.now())/1e3));c("cn_waiting_session",`Still waiting for Keycloak session… ${a}s left`)}await a.waitForTimeout(500)}return{ok:!1,cookies:await a.context().cookies().catch(()=>[])}}async function S(a,b=15e3){let c=a.locator("#kc-login").first();try{await c.waitFor({state:"visible",timeout:b}),await c.click({timeout:5e3}).catch(()=>{})}catch{}try{await a.evaluate(()=>{let a=document.querySelector("#kc-form-login")||document.querySelector("form");if(a)if("function"==typeof a.requestSubmit){let b=a.querySelector("#kc-login")||a.querySelector('[type="submit"]');b?a.requestSubmit(b):a.requestSubmit()}else a.submit()})}catch{await a.locator(B).first().press("Enter").catch(()=>{})}}async function T(a){let b=await K(a);return!!b&&b.locator(y).first().isVisible({timeout:1500}).catch(()=>!1)}async function U(a){let b="";try{b=a.url()}catch{b="(unknown)"}let c=(await a.context().cookies().catch(()=>[])).map(a=>a.name).slice(0,20).join(",")||"(none)",d="";try{d=await a.evaluate(()=>(document.body?.innerText||"").replace(/\s+/g," ").trim().slice(0,120))}catch{d=""}let e=await K(a),f="no-iframe";if(e)try{f=(await e.url()).slice(0,80)}catch{f="iframe-detached"}return{summary:`url=${b.slice(0,60)} cookies=[${c}] frame=${f}${d?` text="${d}"`:""}`,url:b,cookieNames:c,bodySnippet:d}}async function V(a,b){for(let c of[b,a])if(c)try{let a=await c.evaluate(()=>document.body?.innerText||"");if(function(a){let b=String(a||"").toLowerCase();return G.some(a=>b.includes(a.toLowerCase()))}(a))return!0}catch{}return!1}async function W(a){for(let b of E)try{let c=a.locator(b).first();if(await c.isVisible({timeout:1500}).catch(()=>!1)){let a=await c.textContent().catch(()=>""),b=String(a).trim();if(b&&b.length>1)return b}}catch{}try{let b=await a.evaluate(()=>(document.body?.innerText||"").replace(/\s+/g," ").trim());for(let a of["验证码错误","验证码已过期","验证码无效","请输入正确的验证码","手机号格式","发送过于频繁","Invalid","incorrect"])if(b.includes(a)){let c=b.indexOf(a);return b.slice(Math.max(0,c-10),c+a.length+40).trim()}}catch{}return null}async function X(a,b,c=5e3){for(let b of C)try{let d=a.locator(b).first();if(await d.isVisible({timeout:Math.min(c,2e3)}).catch(()=>!1))return!0}catch{}if(b)for(let a of C)try{let d=b.locator(a).first();if(await d.isVisible({timeout:Math.min(c,2e3)}).catch(()=>!1))return!0}catch{}return!1}async function Y(a,b,c=15e3){let d=[];try{if(d=await a.context().cookies().catch(()=>[]),Q(d))return!0}catch{}if(H(d)||await T(a).catch(()=>!1))return!1;for(let b of D)try{let d=a.locator(b).first();if(await d.isVisible({timeout:Math.min(c,2e3)}).catch(()=>!1))return!0}catch{}try{let b=a.url(),c=new Set(d.map(a=>a.name));if(b&&!b.includes("/login")&&!b.includes("/auth/realms")&&(c.has("qcloud_uid")||c.has("qcmainCSRFToken"))&&!c.has("login_risk_state")&&!await T(a).catch(()=>!1))return!0}catch{}return!1}var Z=c(40891),$=c(75949);let _=200,aa=Number.parseInt(process.env.ZEVAI_CN_ACCOUNT_TIMEOUT_MS||"",10)||3e5,ab="CN_API_KEY_OUTCOME_UNKNOWN",ac="CN_ACCOUNT_RESTRICTED",ad=new Set(["hongkong","china","any"]),ae="hongkong";function af(a){return String(a||"").trim()}function ag(){try{let{totalMemGb:a}=(0,h.si)();return Number.isFinite(a)&&a>0&&a<3}catch{return!1}}async function ah(a,{timeoutMs:b=6e3}={}){let c=null;try{c=a?.request||null}catch{c=null}if(!c||"function"!=typeof c.get)return{ok:!1,ip:null,ips:[],samples:0,error:"context request unavailable"};let d=[],e=null;for(let a of $.PROXY_EGRESS_ECHO_URLS){d.push(a);let g=null;try{var f;if(g=await c.get(a,{timeout:b,failOnStatusCode:!1,headers:{Accept:"text/plain, application/json;q=0.9, */*;q=0.1","Cache-Control":"no-cache"}}),200>g.status()||g.status()>=300){e=`HTTP ${g.status()}`;continue}let h=(f=await g.text().catch(()=>""),(0,$.parseProxyEgressIp)(f));if(!h){e="exit-IP response was not recognized";continue}return{ok:!0,ip:h,ips:[h],samples:1,attempts:d.length,attemptedUrls:d,unstable:!1,error:null}}catch(a){e=a?.name==="TimeoutError"?`timed out after ${b}ms`:"request failed"}finally{"function"==typeof g?.dispose&&await Promise.resolve(g.dispose()).catch(()=>null)}}return{ok:!1,ip:null,ips:[],samples:0,attempts:d.length,attemptedUrls:d,unstable:!1,error:e||"all exit-IP services failed"}}function ai(a,b=null){if(a?.unstable)throw Object.assign(Error("Manual proxy rotated between exit IPs during preflight; no phone number was purchased"),{code:"CN_PROXY_EGRESS_UNSTABLE"});if(!a?.ok||!a?.ip)throw Object.assign(Error(`Manual proxy exit IP could not be verified (${a?.error||"no response"}); no phone number was purchased`),{code:"CN_PROXY_EGRESS_UNVERIFIED"});if(b&&a.ip!==b)throw Object.assign(Error("Manual proxy exit IP changed after CloakBrowser GeoIP alignment; no phone number was purchased"),{code:"CN_PROXY_EGRESS_CHANGED"});return a.ip}async function aj(a,{timeoutMs:b,message:c,code:d,onTimeout:e,onLateResolve:f}){let g=Promise.resolve(a),h=null,i=!1,j=new Promise((a,f)=>{"function"==typeof(h=setTimeout(()=>{i=!0;try{"function"==typeof e&&e()}catch{}f(Object.assign(Error(c),{code:d}))},b)).unref&&h.unref()});try{return await Promise.race([g,j])}finally{h&&clearTimeout(h),i&&"function"==typeof f&&g.then(f).catch(()=>null)}}function ak(a){let b=`${a?.text||""} ${a?.data?._raw||""} ${a?.url||""}`;return/<!doctype html|<html|login-pf|\/auth\/realms\//i.test(b)}function al(a,b=[]){let c=b instanceof Set?b:new Set(b),d=`${a?.text||""} ${a?.data?._raw||""}`;return!!/账号访问受限|安全策略限制|访问受限|account restricted|access restricted/i.test(d)||!!c.has("login_risk_state")&&(ak(a)||a?.status===0||a?.status===401||a?.status===403)}async function am({context:a,page:b,timeoutMs:c=1e4}){let d={Accept:"application/json, text/plain, */*","x-requested-with":"XMLHttpRequest","X-Domain":"www.codebuddy.cn","X-Product":"SaaS"},e=null;try{e=a?.request||null}catch{e=null}if(e&&"function"==typeof e.get)try{let a=await e.get("https://www.codebuddy.cn/console/accounts",{headers:d,timeout:c,failOnStatusCode:!1}),b=await a.text().catch(()=>"");return function(a,b,c={}){let d=String(b||""),e=null;try{e=d?JSON.parse(d):null}catch{e={_raw:d.slice(0,240),_notJson:!0}}return{status:Number(a)||0,data:e,text:d.slice(0,240),...c}}(a.status(),b,{source:"context-request",url:a.url(),contentType:a.headers()?.["content-type"]||""})}catch{}return aj(b.evaluate(async({requestTimeoutMs:a,requestHeaders:b})=>{let c=new AbortController,d=setTimeout(()=>c.abort(),a);try{let a=window.location.hostname||"www.codebuddy.cn",d="www.codebuddy.cn"===a?`${window.location.origin}`:"https://www.codebuddy.cn",e=await fetch(`${d}/console/accounts`,{credentials:"include",signal:c.signal,headers:b}),f=await e.text().catch(()=>""),g=null;try{g=f?JSON.parse(f):null}catch{g={_raw:String(f||"").slice(0,240),_notJson:!0}}return{status:e.status,data:g,text:String(f||"").slice(0,240),source:"page-fetch",url:e.url,contentType:e.headers.get("content-type")||""}}catch(a){return{status:0,timedOut:a?.name==="AbortError",error:a?.message||String(a),source:"page-fetch"}}finally{clearTimeout(d)}},{requestTimeoutMs:c,requestHeaders:d}),{timeoutMs:c,message:`Console account probe timed out after ${c/1e3}s`,code:"CN_CONSOLE_PROBE_TIMEOUT"}).catch(a=>({status:0,timedOut:a?.code==="CN_CONSOLE_PROBE_TIMEOUT",error:a?.message||String(a),source:"page-fetch"}))}async function an(a){if(!a||"function"!=typeof a.close)return!0;try{return await aj(Promise.resolve().then(()=>a.close()),{timeoutMs:5e3,message:"Browser resource close timed out after 5s",code:"CN_RESOURCE_CLOSE_TIMEOUT"}),!0}catch{return!1}}async function ao(a,b){if(await an(a)||!b?.browser)return;let c=b.browser;b.browser=null,await (0,$.forceCloseBrowser)(c).catch(()=>null)}async function ap(a){try{return await aj(Promise.resolve().then(a),{timeoutMs:12e3,message:"5sim order settlement timed out after 12s",code:"CN_FIVESIM_SETTLE_TIMEOUT"})}catch{return!1}}async function aq({apiKey:a,phone:b,region:d,fiveSimOrderId:e,account:f}){let{createProviderConnection:g}=await Promise.resolve().then(c.bind(c,71998)),h={provider:"codebuddy-cn",authType:"apikey",apiKey:a,accessToken:a,name:b||`5sim-${e}`,email:b||`5sim-${e}`,providerSpecificData:{domain:"www.codebuddy.cn",phoneNumber:b,fiveSimOrderId:e,region:d,automation:"5sim-phone-bulk"},testStatus:"active"};return{connection:await g(h)}}class ar extends e.Q6{constructor({browserLauncher:a,requestDeviceCodeFn:b=Z.cT,pollToken:d=Z.ZV,fetchLoginAccountFn:e=Z.w8,saveConnection:f=aq,fiveSimClientFactory:g=as,phoneAutomation:h=J,phoneFormatter:j=af,pollIntervalMs:k=i.ne.pollInterval,storageName:l="codebuddy-cn-bulk-import"}={}){super({browserLauncher:a||(async a=>{let{forceCloseBrowser:b,launchBulkImportBrowser:d}=await Promise.resolve().then(c.bind(c,75949)),e=Array.isArray(a?.proxyUrls)&&a.proxyUrls.length?a.proxyUrls[0]:null,f=process.env.ZEVAI_CN_HEADLESS,g=!1;return("0"===f||"false"===f)&&(g=!1),("1"===f||"true"===f)&&(g=!0),aj(d({engine:a?.engine||"cloakbrowser",proxyUrl:e,headless:g,windowSize:{width:1280,height:900},requireProxyGeoip:a?.proxyPoolMode==="manual"&&!!e}),{timeoutMs:9e4,message:"CloakBrowser launch timed out after 90s",code:"CN_BROWSER_LAUNCH_TIMEOUT",onLateResolve:a=>b(a)})}),storageName:l}),this.requestDeviceCode=b,this.pollToken=d,this.fetchLoginAccount=e,this.saveConnection=f,this.fiveSimClientFactory=g,this.phoneAutomation=h,this.phoneFormatter=j,this.pollIntervalMs=k}async startJob({count:a,concurrency:b,proxyPoolMode:c,proxyPoolId:g,manualProxyUrl:i,region:j}){let k=Number.parseInt(a,10);if(!Number.isFinite(k)||k<1)throw Object.assign(Error("At least one account is required (count >= 1)"),{error:"At least one account is required (count >= 1)"});if(k>_)throw Object.assign(Error(`Count exceeds maximum of ${_}`),{error:`Count exceeds maximum of ${_}`});let l=[...this.jobs.values()].find(a=>a&&("running"===a.status||"queued"===a.status||"needs_manual"===a.status)&&!a.cancelRequested);if(l)throw Object.assign(Error(`Another CodeBuddy CN job is still active (${l.jobId}). Cancel it or wait before starting again.`),{error:`Another CodeBuddy CN job is still active (${l.jobId}). Cancel it or wait before starting again.`});let m=ad.has(j)?j:ae,n=[],o="string"==typeof i?i.trim():"";if(o){if(!/^(https?|socks4|socks5):\/\/.+/i.test(o))throw Object.assign(Error("manualProxyUrl must be a valid proxy URL (http://, https://, socks4://, or socks5://)"),{error:"manualProxyUrl must be a valid proxy URL (http://, https://, socks4://, or socks5://)"});n=[o]}else if("all"===c)n=(await (0,f.ui)({isActive:!0})).map(a=>a.proxyUrl).filter(Boolean);else if("single"===c&&g){let a=await (0,f.hr)(g);a?.isActive&&a?.proxyUrl&&(n=[a.proxyUrl])}let p=(0,d.randomUUID)(),q=(0,e.kF)(),r={jobId:p,status:"running",concurrency:function(a,{manualProxy:b=!1}={}){return b?1:function(a){let b=ag()?1:8;if((0,h.uT)(a))return Math.min(b,Math.max(1,(0,h.q)()));let c=Number.parseInt(a,10);return Number.isFinite(c)?Math.min(b,Math.max(1,c)):Math.min(b,1)}(a)}(b,{manualProxy:!!o}),proxyPoolMode:o?"manual":c||"none",proxyUrls:n,region:m,createdAt:q,startedAt:q,finishedAt:null,error:null,cancelRequested:!1,browser:null,nextIndex:0,manualFollowups:new Set,persistPromise:Promise.resolve(),lastPreview:null,lastPreviewCapturedAt:0,accounts:Array.from({length:k},(a,b)=>({line:b+1,region:m,phone:null,fiveSimOrderId:null,fiveSimActivationId:null,fingerprintSeed:(0,d.randomUUID)(),proxyUrl:null,egressIp:null,proxyTimezone:null,proxyLocale:null,abortController:new AbortController,status:"queued",error:null,connectionId:null,workerId:null,manualSession:null,runtimeSession:null,currentStep:"queued",updatedAt:q,logs:[(0,e.hn)("queued","Queued and waiting for an available worker")]}))};return this.jobs.set(p,r),this.latestJobId=p,await this.persistJobSnapshot(r,{forcePreview:!1}),this.runJob(p),at(r)}getJob(a){let b=this.jobs.get(a);return b?at(b):null}async getJobWithPreview(a){let b=this.jobs.get(a);return b?(await this.persistJobSnapshot(b,{forcePreview:!1}),at(b,{preview:b.lastPreview||null})):null}async processAccount(a,b,c){if(a.cancelRequested||!a.browser)return void this.finalizeAccount(b,"cancelled",{error:"Job cancelled"});let d=null,f=null,h=!1,i=null,j=null;try{let c;this.setAccountStep(b,"reading_settings","Reading 5sim API key from settings"),await this.persistJobSnapshot(a,{forcePreview:!0});let k=(await (0,g.mt)()).fiveSimApiKey;if(!k||!k.trim()){this.finalizeAccount(b,"failed",{error:"5sim API key not configured. Set it in the automation modal or dashboard settings.",step:"failed",message:"5sim API key not configured"}),await this.persistJobSnapshot(a,{forcePreview:!0});return}d=this.fiveSimClientFactory({apiKey:k,proxyOptions:null}),this.setAccountStep(b,"creating_browser","Creating browser context (before 5sim order)"),await this.persistJobSnapshot(a,{forcePreview:!0});let l=(0,e.go)(a.browser,b.proxyUrl,{profile:"codebuddy-cn",region:a.region||"hongkong",fingerprintSeed:b.fingerprintSeed,lowMemory:ag(),nativeCloakProfile:"manual"===a.proxyPoolMode}),m=await aj(l,{timeoutMs:3e4,message:"Browser context creation timed out after 30s",code:"CN_CONTEXT_TIMEOUT",onLateResolve:a=>Promise.resolve(a?.context?.close?.()).catch(()=>null)});i=m.context;let n=m.page;if(b.runtimeSession={context:i,page:n},"manual"===a.proxyPoolMode&&b.proxyUrl){this.setAccountStep(b,"checking_proxy_egress","Verifying pasted proxy exit IP before opening the registration form"),await this.persistJobSnapshot(a,{forcePreview:!1});let c=(0,$.getCloakProxyProfile)(a.browser),d=await ah(i);b.egressIp=j=ai(d,c?.egressIp||null),b.proxyTimezone=c?.timezone||null,b.proxyLocale=c?.locale||null,this.setAccountStep(b,"proxy_egress_ready",`Manual proxy verified: ${j} (${d.samples} checks, ${b.proxyTimezone||"timezone unknown"}, ${b.proxyLocale||"locale unknown"})`),await this.persistJobSnapshot(a,{forcePreview:!1})}if(a.cancelRequested)throw Error("Job cancelled before ordering phone number");this.setAccountStep(b,"registering","Running phone registration on CodeBuddy CN"),await this.persistJobSnapshot(a,{forcePreview:!0});try{n.setDefaultTimeout(2e4),n.setDefaultNavigationTimeout(45e3)}catch{}let o=null,p=new Promise((a,b)=>{o=setTimeout(()=>{b(Object.assign(Error(`CodeBuddy CN account hard timeout after ${Math.round(aa/1e3)}s (browser will be force-closed)`),{code:"CN_ACCOUNT_HARD_TIMEOUT"}))},aa),"function"==typeof o.unref&&o.unref()});try{c=await Promise.race([this.phoneAutomation({page:n,signal:b.abortController?.signal,isCancelled:()=>!0===a.cancelRequested,resolvePhone:async()=>{if(a.cancelRequested)throw Error("Job cancelled before ordering phone number");if("manual"===a.proxyPoolMode&&b.proxyUrl){this.setAccountStep(b,"rechecking_proxy_egress","Registration form is ready — confirming the pasted proxy stayed sticky"),await this.persistJobSnapshot(a,{forcePreview:!1});let c=await ah(i);ai(c,j),this.setAccountStep(b,"proxy_egress_confirmed",`Manual proxy remained on ${j}; safe to purchase one phone number`),await this.persistJobSnapshot(a,{forcePreview:!1})}this.setAccountStep(b,"ordering_number",`Form ready — ordering ${a.region} phone from 5sim (single buy)`),await this.persistJobSnapshot(a,{forcePreview:!0});let c=await d.buyNumber({country:a.region,product:"codebuddy",allowProductFallback:!1});return f=c.id,b.phone=c.phone,b.fiveSimOrderId=c.id,b.fiveSimActivationId=c.id,this.setAccountStep(b,"number_ordered",`Phone number ordered: ${c.phone} (1 buy, no re-order)`),await this.persistJobSnapshot(a,{forcePreview:!0}),c.phone},waitForSms:async()=>{if(!f)throw Error("Cannot poll SMS — no 5sim order id");this.setAccountStep(b,"sms_poll_started","SMS poll started (full 90s window after send-code)"),await this.persistJobSnapshot(a,{forcePreview:!1});let c=await d.pollCode(f,{timeoutMs:9e4,signal:b.abortController?.signal});return h=!0,c},onStep:(c,d)=>{this.setAccountStep(b,c,d),this.persistJobSnapshot(a,{forcePreview:!1})},phoneFormatter:this.phoneFormatter}),p])}finally{o&&clearTimeout(o)}if(String(c.status||"").startsWith("failed")){let e=c.error||"Phone registration failed before submit",g=c.status||"failed";this.finalizeAccount(b,g,{error:e,step:g,message:e}),d&&f&&(h?await ap(()=>d.finishOrder(f)):await ap(()=>d.cancelOrder(f))),b.runtimeSession=null,await ao(i,a),await this.persistJobSnapshot(a,{forcePreview:!0});return}await this.captureApiKey(a,b,i,n,d,f);return}catch(g){let c=g instanceof n,e=c?"SMS OTP not received within 90s — number banned":g.message||"Unexpected CodeBuddy CN bulk import failure";if(this.finalizeAccount(b,"failed",{error:e,step:c?"sms_timeout":"failed",message:e}),d&&f&&(h?await ap(()=>d.finishOrder(f)):c?await ap(()=>d.banOrder(f)):await ap(()=>d.cancelOrder(f))),b.runtimeSession=null,await ao(i,a),(g?.code==="CN_ACCOUNT_HARD_TIMEOUT"||g?.code==="CN_CONTEXT_TIMEOUT"||a.cancelRequested)&&a.browser){let b=a.browser;a.browser=null,await (0,$.forceCloseBrowser)(b).catch(()=>null)}await this.persistJobSnapshot(a,{forcePreview:!0})}}async captureApiKey(a,b,c,d,e,f){let g="personal-edition-user-id",h=async(a,{timeout:b=12e3,interval:c=150}={})=>{let d=Date.now()+b;for(;Date.now()<d;){try{if(await a())return!0}catch{}await new Promise(a=>setTimeout(a,c))}return!1};try{this.setAccountStep(b,"waiting_session","Establishing CodeBuddy console session (probe APIs, not just cookies)"),await this.persistJobSnapshot(a,{forcePreview:!0});let i=async()=>{let a=await c.cookies().catch(()=>[]);return{cookies:a,names:new Set(a.map(a=>a.name)),list:a.map(a=>a.name)}},j=a=>a.has("KEYCLOAK_IDENTITY")||a.has("KEYCLOAK_SESSION")||a.has("KEYCLOAK_IDENTITY_LEGACY")||a.has("KEYCLOAK_SESSION_LEGACY"),k=a=>a.has("AUTH_SESSION_ID")||a.has("session")||a.has("qcloud_uid")||a.has("qcmainCSRFToken")||a.has("x_host_key_access"),l=()=>am({context:c,page:d}),m=a=>{let b=a?.data;if(!b||"object"!=typeof b)return[];for(let a of[b?.data?.accounts,b?.accounts,b?.data?.list,b?.list,b?.data?.result,b?.result,b?.data?.items,b?.items,Array.isArray(b?.data)?b.data:null,Array.isArray(b)?b:null])if(Array.isArray(a)&&a.length>0)return a;return[]},n=async(a=2500)=>{let b=!1,c=null;try{await Promise.race([d.waitForLoadState("domcontentloaded",{timeout:a}).catch(()=>null),h(async()=>{if(b)return!0;let a=await i();return j(a.names)},{timeout:a,interval:200}),new Promise(b=>{c=setTimeout(b,a)})])}finally{b=!0,c&&clearTimeout(c)}},o=async a=>{let b=Date.now();try{await d.goto(a,{waitUntil:"commit",timeout:18e3});let c=18e3-(Date.now()-b);return c>0&&await n(Math.min(2500,c)),!0}catch{return!1}},p=["https://www.codebuddy.cn/","https://www.codebuddy.cn/console","https://www.codebuddy.cn/console/","https://www.codebuddy.cn/profile","https://www.codebuddy.cn/profile/keys"],q=[],r=null,s=!1,t="",u=null,v=0;for(let c=0;c<6;c+=1){if(a.cancelRequested)throw Error("Job cancelled while establishing session");let e=await i(),f=j(e.names),g=k(e.names),h=p[Math.min(c,p.length-1)];c<3||c%2==0||!g?(this.setAccountStep(b,"waiting_session",`OIDC handoff ${c+1}/6 → ${h.replace("https://www.codebuddy.cn","")} (${f?"KEYCLOAK":g?"soft-session":"weak"})`),await this.persistJobSnapshot(a,{forcePreview:!1}),await o(h)):await new Promise(a=>setTimeout(a,300)),/^https:\/\/www\.codebuddy\.cn(?:[/:]|$)/i.test(d.url?.()||"")||await o("https://www.codebuddy.cn/console"),r=await l(),q=m(r),(r?.status>0||r?.text||r?.data)&&(u=r),t=JSON.stringify(r?.data??r?.text??r?.error??null).slice(0,180);let n=ak(r),w=await i();if(!j(w.names)&&al(r,w.names)?v+=1:v=0,v>=2)throw Object.assign(Error(`Tencent restricted the post-OTP session (${v} console probes returned login/risk evidence; source=${r?.source||"unknown"})`),{code:ac});if(r?.status===200&&!n&&Array.isArray(q)&&q.length>0){s=!0,this.setAccountStep(b,"session_ready",`Console session accepted (HTTP 200, ${q.length} account(s)${f?", KEYCLOAK ok":", soft session"})`),await this.persistJobSnapshot(a,{forcePreview:!0});break}if(g&&r?.status===200&&!n&&r?.data?._notJson!==!0&&Array.isArray(q)&&0===q.length&&c>=3){this.setAccountStep(b,"session_soft","Console HTTP 200 but 0 accounts — trying personal API key with soft session (cookies ok)"),await this.persistJobSnapshot(a,{forcePreview:!0}),s=!0;break}this.setAccountStep(b,"resolving_enterprise",`Console not ready (HTTP ${r?.status||0}, accounts=${q.length}${n?", login HTML":""}, source=${r?.source||"unknown"}) — ${c+1}/6 body=${t.slice(0,80)}`),await this.persistJobSnapshot(a,{forcePreview:!1})}if(!s){let a=await i(),b=u||r,c=al(b,a.names)||a.names.has("login_risk_state")&&v>0;throw Object.assign(Error(c?`Tencent restricted the post-OTP session (HTTP ${b?.status||0}; login_risk_state present; source=${b?.source||"unknown"})`:`Console accounts unavailable after login (HTTP ${b?.status||0}; cookies: ${a.list.slice(0,18).join(",")||"(none)"}; body=${t.slice(0,120)}; probeError=${r?.error||"none"}) — session not accepted for API key`),{code:c?ac:"CN_CONSOLE_SESSION_UNAVAILABLE"})}let w=g;if(Array.isArray(q)&&q.length>0){let a=q.find(a=>a?.lastLogin)||q[0];a?.type&&"personal"!==a.type&&a.enterpriseId?w=a.enterpriseId:a?.enterpriseId&&a?.type!=="personal"&&(w=a.enterpriseId)}this.setAccountStep(b,"creating_api_key",`Creating API key (enterprise=${w}, accounts=${q.length})`),await this.persistJobSnapshot(a,{forcePreview:!0});let x=`zevai-router-${b.workerId||"account"}-${Date.now()}`,y=async a=>d.evaluate(async({enterpriseId:a,keyName:b,timeoutMs:c})=>{let d=new AbortController,e=setTimeout(()=>d.abort(),c);try{let c=window.location.hostname||"www.codebuddy.cn",e="www.codebuddy.cn"===c?window.location.origin:"https://www.codebuddy.cn",f=await fetch(`${e}/console/api/client/v1/api-keys`,{method:"POST",credentials:"include",signal:d.signal,headers:{"Content-Type":"application/json",Accept:"application/json, text/plain, */*","x-requested-with":"XMLHttpRequest","X-Domain":"www.codebuddy.cn","X-Product":"SaaS"},body:JSON.stringify({name:b,expire_in_days:365,user_enterprise_id:a})}),g=await f.text().catch(()=>""),h=null;try{h=g?JSON.parse(g):null}catch{h={_raw:String(g||"").slice(0,200)}}return{ok:f.ok,status:f.status,data:h}}catch(a){return{ok:!1,status:0,outcomeUnknown:!0,timedOut:a?.name==="AbortError",error:a?.message||String(a)}}finally{clearTimeout(e)}},{enterpriseId:a,keyName:x,timeoutMs:6e4}),z=async(c,d)=>{let e,f=Date.now(),g=null,h=setInterval(()=>{if(g)return;let c=Math.max(5,Math.round((Date.now()-f)/1e3));this.setAccountStep(b,"creating_api_key",`${d} — waiting for CodeBuddy (${c}s)`),g=this.persistJobSnapshot(a,{forcePreview:!1}).catch(()=>null).finally(()=>{g=null})},5e3);"function"==typeof h.unref&&h.unref();try{e=await aj(y(c),{timeoutMs:6e4,message:"API key request timed out after 60s; creation outcome is unknown",code:ab})}catch(a){if(a?.code===ab)throw a;throw Object.assign(Error(`API key request lost its response; creation outcome is unknown: ${a?.message||String(a)}`),{code:ab})}finally{clearInterval(h),g&&await g.catch(()=>null)}if(e?.outcomeUnknown){let a=e.timedOut?"timed out after 60s":`lost its response (${e.error||"network error"})`;throw Object.assign(Error(`API key request ${a}; creation outcome is unknown`),{code:ab})}return e};if(!await o("https://www.codebuddy.cn/profile/keys"))throw Object.assign(Error("Keys page navigation timed out after 18s"),{code:"CN_CONSOLE_NAV_TIMEOUT"});let A=await z(w,"Creating API key");A?.status===400&&w!==g&&(this.setAccountStep(b,"retrying_api_key","Retrying with personal-edition enterprise id"),await this.persistJobSnapshot(a,{forcePreview:!1}),A=await z(g,"Retrying personal API key"));let B=a=>a?.ok===!1&&(401===a.status||403===a.status);for(let c=1;c<=2&&B(A);c+=1){for(let d of(this.setAccountStep(b,"retrying_api_key",`API key 401/403 — OIDC re-handoff round ${c}/2 (waiting strong session)`),await this.persistJobSnapshot(a,{forcePreview:!0}),["https://www.codebuddy.cn/","https://www.codebuddy.cn/console","https://www.codebuddy.cn/profile/keys"]))await o(d);await h(async()=>{let a=await i();return j(a.names)},{timeout:8e3*c,interval:300}).catch(()=>null),A=await z(g,`Retrying API key after OIDC handoff ${c}/2`)}let C=A?.data?.code;if(!A||!A.ok||!A.data||0!==C&&200!==C&&void 0!==C){let a="string"==typeof A?.data?._raw?A.data._raw.replace(/\s+/g," ").slice(0,120):null,b=a&&/openresty|nginx|Authorization Required/i.test(a)?" [edge proxy blocked — session half-baked]":"";throw Error(`API key creation failed (HTTP ${A?.status??"no-response"}, code=${C??"n/a"})${b}: ${JSON.stringify(A?.data??null).slice(0,200)}`)}let D=A.data?.data||A.data,E=D?.apiKey||D?.key||D?.token||D?.secret||D?.api_key||("string"==typeof D?D:null)||A.data.apiKey||A.data.key||A.data.token||A.data.secret;if(!E||"string"!=typeof E)throw Object.assign(Error(`API key response did not contain a key field; creation outcome is unknown: ${JSON.stringify(A.data).slice(0,300)}`),{code:ab});this.setAccountStep(b,"api_key_created","API key created successfully"),await this.persistJobSnapshot(a,{forcePreview:!0}),this.setAccountStep(b,"saving_connection","Saving CodeBuddy CN connection"),await this.persistJobSnapshot(a,{forcePreview:!0});let{connection:F}=await this.saveConnection({apiKey:E,phone:b.phone,region:b.region,fiveSimOrderId:f,account:b});await ap(()=>e.finishOrder(f)),this.finalizeAccount(b,"success",{connectionId:F.id,step:"connection_saved",message:`CodeBuddy CN connection saved (phone: ${b.phone})`}),b.runtimeSession=null,await ao(c,a),await this.persistJobSnapshot(a,{forcePreview:!0})}catch(j){let g=j?.code===ac,h=j?.code===ab;if(g){this.finalizeAccount(b,"failed_restricted",{error:`${j.message}. Use a different residential CN/HK proxy with concurrency 1.`,step:"failed_restricted",message:"Tencent restricted the post-OTP session; API-key capture was not attempted"}),await ap(()=>e.finishOrder(f)),b.runtimeSession=null,await ao(c,a),await this.persistJobSnapshot(a,{forcePreview:!0});return}let i=h?`${j.message}. Check the CodeBuddy keys page before creating another key.`:j.message;if(this.finalizeAccount(b,"needs_manual",{error:`Registration succeeded but API key capture failed: ${i}`,step:h?"api_key_outcome_unknown":"awaiting_manual",message:h?"Registration done; API key request outcome is unknown. Check existing keys before retrying.":`Registration done, API key capture failed: ${j.message}`}),await ap(()=>e.finishOrder(f)),await this.persistJobSnapshot(a,{forcePreview:!0}),h){b.runtimeSession=null,await ao(c,a);return}await this.runCnManualFollowup(a,b,b.workerId,c,d,e,f)}}async runCnManualFollowup(a,b,c,d,e,f,g){let h=(async()=>{let c=async()=>{let c=b.manualSession,e=c?.context||d,f=c?.headedBrowser||null;await ao(e,a),f&&await (0,$.forceCloseBrowser)(f).catch(()=>null)};try{this.setAccountStep(b,"manual_waiting","Waiting for operator to complete in headed browser"),await this.persistJobSnapshot(a,{forcePreview:!0});let c=ag()?18e4:48e4,d=Date.now()+c,f=null,h=`zevai-router-manual-${b.workerId||"account"}-${Date.now()}`;for(;Date.now()<d&&!a.cancelRequested;){await new Promise(a=>setTimeout(a,1e4));try{if(!e.url().includes("codebuddy.cn"))continue;let a=await aj(e.evaluate(async({keyName:a,timeoutMs:b})=>{let c=new AbortController,d=setTimeout(()=>c.abort(),b);try{let b=window.location.hostname||"www.codebuddy.cn",d="www.codebuddy.cn"===b?window.location.origin:"https://www.codebuddy.cn",e=await fetch(`${d}/console/api/client/v1/api-keys`,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json, text/plain, */*","x-requested-with":"XMLHttpRequest","X-Domain":"www.codebuddy.cn","X-Product":"SaaS"},credentials:"include",signal:c.signal,body:JSON.stringify({name:a,expire_in_days:365,user_enterprise_id:"personal-edition-user-id"})}),f=await e.json().catch(()=>null);return{ok:e.ok,status:e.status,data:f}}catch(a){return{ok:!1,status:0,outcomeUnknown:!0,error:a?.message||String(a)}}finally{clearTimeout(d)}},{keyName:h,timeoutMs:6e4}),{timeoutMs:6e4,message:"Manual API key request timed out; creation outcome is unknown",code:ab});if(a?.outcomeUnknown)throw Object.assign(Error(`Manual API key request lost its response; creation outcome is unknown: ${a.error||"network error"}`),{code:ab});if(a?.ok){let b=a.data?.data||a.data;if((f=b?.apiKey||b?.key||b?.token||b?.secret||b?.api_key||("string"==typeof b?b:null))&&"string"==typeof f)break;throw Object.assign(Error("Manual API key response was successful but did not contain the key; creation outcome is unknown"),{code:ab})}}catch(a){if(a?.code===ab)throw a}}if(a.cancelRequested){this.finalizeAccount(b,"cancelled",{error:"Job cancelled",step:"cancelled",message:"Job cancelled while waiting for manual completion"}),await this.persistJobSnapshot(a,{forcePreview:!0});return}if(!f)throw Error("Manual assist timed out — could not capture API key");this.setAccountStep(b,"saving_connection","Saving CodeBuddy CN connection (manual)"),await this.persistJobSnapshot(a,{forcePreview:!0});let{connection:i}=await this.saveConnection({apiKey:f,phone:b.phone,region:b.region,fiveSimOrderId:g,account:b});this.finalizeAccount(b,"success",{connectionId:i.id,step:"connection_saved",message:`CodeBuddy CN connection saved via manual assist (phone: ${b.phone||"N/A"})`}),await this.persistJobSnapshot(a,{forcePreview:!0})}catch(c){a.cancelRequested?this.finalizeAccount(b,"cancelled",{error:"Job cancelled",step:"cancelled",message:"Job cancelled while waiting for manual completion"}):c?.code===ab?this.finalizeAccount(b,"needs_manual",{error:`${c.message}. Check existing CodeBuddy keys before retrying.`,step:"api_key_outcome_unknown",message:"Manual API key request outcome is unknown; automatic retries stopped"}):this.finalizeAccount(b,"failed",{error:c.message||"Manual assist flow failed",step:"failed",message:c.message||"Manual assist flow failed"}),await this.persistJobSnapshot(a,{forcePreview:!0})}finally{await c(),b.manualSession=null,b.runtimeSession=null,a.manualFollowups.delete(h),await this.persistJobSnapshot(a,{forcePreview:!0})}})();a.manualFollowups.add(h)}async runWorker(a,b){if("manual"!==a.proxyPoolMode)return super.runWorker(a,b);for(;!a.cancelRequested;){let c=this.dequeueAccount(a,b);if(!c)return;if(!a.browser)try{a.browser=await this.browserLauncher({...a,proxyUrls:c.proxyUrl?[c.proxyUrl]:a.proxyUrls})}catch(b){this.finalizeAccount(c,"failed",{error:b?.message||"Manual proxy browser launch failed",step:"failed",message:b?.message||"Manual proxy browser launch failed"}),await this.persistJobSnapshot(a,{forcePreview:!0});continue}try{await this.processAccount(a,c,b)}catch(b){"running"===c.status&&(this.finalizeAccount(c,"failed",{error:b?.message||"Unexpected manual proxy worker failure",step:"failed",message:b?.message||"Unexpected manual proxy worker failure"}),await this.persistJobSnapshot(a,{forcePreview:!0}))}finally{if(a.manualFollowups.size>0&&await Promise.allSettled([...a.manualFollowups]),a.browser){let b=a.browser;a.browser=null,await (0,$.forceCloseBrowser)(b).catch(()=>null)}}}}cancelJob(a){let b=this.jobs.get(a);if(!b)return null;for(let a of(b.cancelRequested=!0,b.accounts)){a.abortController&&!a.abortController.signal.aborted&&a.abortController.abort();let b=a.runtimeSession?.context;b&&b.close().catch(()=>null),a.runtimeSession=null,a.manualSession=null}if(b.browser){let a=b.browser;b.browser=null,(0,$.forceCloseBrowser)(a).catch(()=>null)}return"queued"===b.status&&(b.status="cancelled",b.finishedAt=(0,e.kF)(),b.accounts.forEach(a=>{"queued"===a.status&&(a.status="cancelled")})),this.persistJobSnapshot(b,{forcePreview:!0}),at(b)}}function as({apiKey:a,proxyOptions:b}){return new q({apiKey:a,proxyOptions:b})}function at(a,b={}){return a?{jobId:a.jobId,status:a.status,summary:function(a=[]){let b={total:a.length,queued:0,running:0,completed:0,success:0,failed:0,needs_manual:0,cancelled:0};for(let c of a){let a=c.status||"queued";"success"===a?(b.success+=1,b.completed+=1):a.startsWith("failed")?(b.failed+=1,b.completed+=1):"needs_manual"===a?b.needs_manual+=1:"cancelled"===a?(b.cancelled+=1,b.completed+=1):"running"===a?b.running+=1:b.queued+=1}return b}(a.accounts),concurrency:a.concurrency,proxyPoolMode:a.proxyPoolMode,region:a.region,createdAt:a.createdAt,startedAt:a.startedAt,finishedAt:a.finishedAt,error:a.error,cancelRequested:a.cancelRequested,accounts:(a.accounts||[]).map(a=>({line:a.line,region:a.region,phone:a.phone,fiveSimOrderId:a.fiveSimOrderId,proxyUrl:a.proxyUrl?function(a){if(!a)return null;try{let b=new URL(a);return b.password&&(b.password="***"),b.toString()}catch{return a}}(a.proxyUrl):null,egressIp:a.egressIp||null,proxyTimezone:a.proxyTimezone||null,proxyLocale:a.proxyLocale||null,status:a.status,error:a.error,connectionId:a.connectionId,workerId:a.workerId,manualSessionAvailable:!!a.manualSession,currentStep:a.currentStep,updatedAt:a.updatedAt,logs:a.logs||[]})),preview:void 0!==b.preview?b.preview:a.lastPreview||null,...b}:null}function au(){return(!globalThis.__codeBuddyCnBulkImportSingleton&&(globalThis.__codeBuddyCnBulkImportSingleton={manager:new ar}),globalThis.__codeBuddyCnBulkImportSingleton).manager}}};
1
+ "use strict";exports.id=8371,exports.ids=[8371],exports.modules={48371:(a,b,c)=>{c.d(b,{xM:()=>aj,t9:()=>ap,TK:()=>ao,cO:()=>i.cO,VU:()=>aL});var d=c(55511),e=c(73024),f=c.n(e),g=c(76760),h=c.n(g),i=c(13868),j=c(71998),k=c(89718),l=c(20116),m=c(90715),n=c(92990),o=c(39609);let p=globalThis.fetch,q=new Set(["ECONNABORTED","ECONNREFUSED","ECONNRESET","EHOSTUNREACH","ENETDOWN","ENETUNREACH","ENOTFOUND","EPIPE","ETIMEDOUT"]),r=new Set(["a timeout","is cancelled","is complete","number banned, when number already used"]);class s extends Error{constructor(a,{status:b,body:c}={}){super(a),this.name="FiveSimError",this.status=b,this.body=c}}class t extends s{constructor(a){super(`5sim order ${a} timed out waiting for SMS`),this.name="FiveSimTimeoutError",this.orderId=a}}class u extends s{constructor(a,b){super(`5sim request to ${a} timed out after ${b}ms`),this.name="FiveSimRequestTimeoutError",this.code="FIVESIM_REQUEST_TIMEOUT",this.path=a,this.timeoutMs=b}}class v extends s{constructor(a){super(a),this.name="FiveSimUnknownOutcomeError",this.code="FIVESIM_BUY_OUTCOME_UNKNOWN",this.outcomeUnknown=!0}}class w extends s{constructor(a,b){super(`5sim order ${a} cancelled: ${b}`),this.name="FiveSimCancelledError",this.orderId=a}}class x extends s{constructor(a){super(`5sim order ${a} number was already used (banned)`),this.name="FiveSimBannedError",this.orderId=a}}class y{constructor({apiKey:a,proxyOptions:b=null,fetchImpl:c=null}={}){if(!a||"string"!=typeof a||!a.trim())throw new s("5sim API key is required");this.apiKey=a.trim(),this.proxyOptions=b,this.fetchImpl="function"==typeof c?c:null}_headers(a={}){return{Authorization:`Bearer ${this.apiKey}`,Accept:"application/json",...a}}async _get(a,{headers:b,timeoutMs:c=15e3,signal:d,...e}={}){let f,g=`https://5sim.net/v1${a}`,h=this.fetchImpl||(this.proxyOptions?.enabled?o.proxyAwareFetch:p),i=Number.isFinite(c)&&c>0?new AbortController:null,j=i?.signal||null,k=i?setTimeout(()=>i.abort(),c):null;k?.unref?.();let l=function(a){let b=a.filter(Boolean);if(0===b.length)return null;if(1===b.length)return b[0];if("function"==typeof AbortSignal.any)return AbortSignal.any(b);let c=new AbortController;for(let a of b){if(a.aborted){c.abort(a.reason);break}a.addEventListener("abort",()=>c.abort(a.reason),{once:!0})}return c.signal}([d,j]),m=b=>{if(d?.aborted){let c=new s(`5sim request to ${a} was aborted`);return c.code="FIVESIM_REQUEST_ABORTED",c.cause=b,c}if(j?.aborted){let d=new u(a,c);return d.cause=b,d}return b};try{let c;try{f=await h(g,{method:"GET",headers:this._headers(b),...e,...l?{signal:l}:{}},this.proxyOptions)}catch(a){throw m(a)}try{c=await f.text()}catch(a){throw m(a)}if(!f.ok)throw new s(`5sim request to ${a} failed (HTTP ${f.status}): ${c.slice(0,200)}`,{status:f.status,body:c});try{return JSON.parse(c)}catch{if(c&&!c.startsWith("{"))throw new s(`5sim ${a} returned non-JSON: ${c.slice(0,200)}`,{status:f.status,body:c});return null}}finally{k&&clearTimeout(k)}}async buyNumber({country:a="hongkong",operator:b="any",product:c="codebuddy",allowProductFallback:d=!1,responseTimeoutMs:e=2e4,lateAbortTimeoutMs:f=45e3,signal:g=null}={}){if(g?.aborted){let a=new s("5sim purchase cancelled before the request started");throw a.code="FIVESIM_REQUEST_ABORTED",a}let h="codebuddy"===c&&d?["codebuddy","other"]:[c],i=null;for(let c of h){let j=`/user/buy/activation/${encodeURIComponent(a)}/${encodeURIComponent(b)}/${encodeURIComponent(c)}`;try{let a,b=Math.max(Number(f)||45e3,(Number(e)||2e4)+1e3),c=this._get(j,{timeoutMs:b});try{a=await A(c,e,g)}catch(a){throw a?.code==="FIVESIM_BUY_OUTCOME_UNKNOWN"&&c.then(a=>a?.id?this.cancelOrder(a.id):null).catch(()=>null),a}if(!a||!a.id||!a.phone)throw new s(`5sim buyNumber returned unexpected shape: ${JSON.stringify(a).slice(0,200)}`,{body:a});return a}catch(e){i=e;let a=e?.status,b=String(e?.body||e?.message||"").toLowerCase();if(!(d&&"codebuddy"===c&&h.includes("other")&&(400===a||404===a||b.includes("no free")||b.includes("not enough")||b.includes("no product"))))throw e}}throw i||new s("5sim buyNumber failed for all product candidates")}async checkOrder(a,b={}){return this._get(`/user/check/${a}`,b)}async pollCode(a,{timeoutMs:b=9e5,intervalMs:c=6e3,signal:d}={}){let e=Number(c),f=Number.isFinite(e)?Math.max(5e3,e):6e3,g=Number(b),h=Number.isFinite(g)&&g>0?g:9e5,i=Date.now()+h,j=0,k=async()=>{try{await function(a,b=null){return b?.aborted?Promise.reject(b.reason||Error("Aborted")):new Promise((c,d)=>{let e=()=>b?.removeEventListener("abort",g),f=setTimeout(()=>{e(),c()},a),g=()=>{clearTimeout(f),e(),d(b.reason||Error("Aborted"))};b?.addEventListener("abort",g,{once:!0})})}(f,d)}catch(b){if(d?.aborted)throw new w(a,"aborted by caller");throw b}};for(;Date.now()<i;){let b;if(d?.aborted)throw new w(a,"aborted by caller");try{b=await this.checkOrder(a,{signal:d})}catch(b){if(d?.aborted||b?.code==="FIVESIM_REQUEST_ABORTED")throw new w(a,"aborted by caller");if(b instanceof u||function(a){if(a instanceof s)return 408===a.status||429===a.status||a.status>=500;if(a instanceof TypeError)return!0;let b=a?.code||a?.cause?.code;return q.has(b)}(b)){if(++j>5)throw b;await k();continue}throw b}if(j=0,Array.isArray(b.sms)&&b.sms.length>0){let a=z(b.sms[b.sms.length-1]);if(a)return a}if(b.status&&r.has(b.status)){if("a timeout"===b.status)throw new t(a);if("number banned, when number already used"===b.status)throw new x(a);if("is cancelled"===b.status)throw new w(a,b.status);if("is complete"===b.status){let c=function(a){if(!Array.isArray(a))return null;for(let b=a.length-1;b>=0;b--){let c=z(a[b]);if(c)return c}return null}(b.sms);if(c)return c;throw new s(`5sim order ${a} completed but no SMS code found`,{body:b})}}await k()}throw new t(a)}async finishOrder(a){try{return await this._get(`/user/finish/${a}`),!0}catch(b){return console.warn(`[5sim] finishOrder(${a}) failed (best-effort): ${b.message}`),!1}}async cancelOrder(a){try{return await this._get(`/user/cancel/${a}`),!0}catch(b){return console.warn(`[5sim] cancelOrder(${a}) failed (best-effort): ${b.message}`),!1}}async banOrder(a){try{return await this._get(`/user/ban/${a}`),!0}catch(b){return console.warn(`[5sim] banOrder(${a}) failed (best-effort): ${b.message}`),!1}}async getBalance(){try{let a=await this._get("/user/profile");return{balance:a?.balance??null,rating:a?.rating??null}}catch(a){return console.warn(`[5sim] getBalance failed: ${a.message}`),{balance:null,rating:null}}}}function z(a){return a?a.code&&/\d{4,8}/.test(String(a.code))?String(a.code).match(/\d{4,8}/)[0]:a.text?function(a){if(!a)return null;let b=String(a).match(/\b(\d{4,8})\b/);return b?b[1]:null}(a.text):null:null}async function A(a,b,c=null){let d=Number(b)||2e4,e=null,f=null,g=new Promise((a,b)=>{let g=a=>b(new v(`5sim buy request ${a}; purchase outcome is unknown and any late successful order will be cancelled automatically`));e=setTimeout(()=>{g(`did not answer within ${d}ms`)},d),e.unref?.(),f=()=>g("was interrupted by the caller"),c?.aborted?f():c?.addEventListener("abort",f,{once:!0})});try{return await Promise.race([a,g])}finally{e&&clearTimeout(e),f&&c?.removeEventListener("abort",f)}}let B=["https://www.codebuddy.cn/login/","https://www.codebuddy.cn/login","https://www.codebuddy.cn/register/","https://copilot.tencent.com/login/"],C=["text=手机号","div:has-text('手机号')","span:has-text('手机号')","[class*='phone']:has-text('手机号')","div.kc-phone-tab:has-text('手机号')"],D=["text=手机号","text=其他登录方式","text=微信","#phone-iframe",".login-phone-box"],E=["button:has-text('同意')","text=同意并继续","text=同意"],F="#phone-iframe",G="#phoneNumber",H=".kc-country-option",I=".kc-country-code-text",J="#code",K=['iframe[src*="captcha"]','iframe[src*="tcaptcha"]',"#tcaptcha","#tcaptcha_transform",".nc_iconfont",".nc_wrapper",'[class*="captcha"]','[id*="captcha"]',"text=滑块","text=拖动"],L=['[class*="avatar"]','[class*="user-info"]','[class*="logout"]',"text=退出登录","text=Logout","text=Sign out"],M=["#input-error",".pf-c-form__helper-text.pf-m-error",".kc-feedback-text"],N=new Set(["login_risk_state"]),O=["账号访问受限","安全策略限制","访问受限","account restricted","access restricted"];function P(a=[]){return a.some(a=>N.has(a?.name))}function Q(a="Tencent risk policy rejected the post-OTP session"){return{status:"failed_restricted",error:`Account restricted after OTP (${a}). Use a different residential CN/HK proxy with concurrency 1; do not retry this number on the same egress IP.`}}async function R(a){let b=a.locator("input.btn-lg.code-btn").first(),c=null;try{await b.waitFor({state:"visible",timeout:5e3}),c=b}catch{let b=a.locator(".code-btn").first();try{await b.waitFor({state:"visible",timeout:5e3}),c=b}catch{c=null}}if(!c)return{ok:!1,reason:"missing"};let d=await c.click().then(()=>!0).catch(()=>!1);return{ok:d,reason:d?null:"click_failed"}}async function S(a,{timeoutMs:b,signal:c=null}={}){let d=null,e=null,f=new Promise((a,c)=>{d=setTimeout(()=>c(Error("Timed out waiting for SMS code")),b),d.unref?.()}),g=c?new Promise((a,b)=>{e=()=>b(c.reason||Object.assign(Error("Job cancelled"),{code:"JOB_CANCELLED"})),c.aborted?e():c.addEventListener("abort",e,{once:!0})}):null;try{return await Promise.race([a,f,...g?[g]:[]])}finally{d&&clearTimeout(d),e&&c?.removeEventListener("abort",e)}}async function T({page:a,phone:b,resolvePhone:c,pollSmsPromise:d,waitForSms:e,onStep:f,phoneFormatter:g=a=>a,timeouts:h={},signal:i=null,isCancelled:j=null}){let k=h.nav??3e4,l=h.action??15e3,m=h.codeWait??9e5,n=h.postSubmit??1e4,o=(a,b)=>f?.(a,b),p=()=>{if(i?.aborted){if(i.reason?.code==="CN_ACCOUNT_HARD_TIMEOUT")throw i.reason;let a=Error("Job cancelled");throw a.code="JOB_CANCELLED",a}if("function"==typeof j&&j()){let a=Error("Job cancelled");throw a.code="JOB_CANCELLED",a}};try{var q;let f,h;o("cn_opening_login_page","Opening CodeBuddy CN login page"),p();try{a.setDefaultNavigationTimeout(k),a.setDefaultTimeout(l)}catch{}try{await a.context().route("**/*",a=>{var b,c;let d,e=a.request();return(b=e.url(),c=e.resourceType(),d=String(b||""),/googletagmanager|googleadservices|google-analytics|doubleclick|facebook|hotjar|clarity\.ms|hm\.baidu|google\.com\/rmkt/i.test(d)||"media"===c||"image"===c&&!/captcha|tcaptcha|challenge|verify|qrcode/i.test(d))?a.abort():a.continue()})}catch{}let j=null,r=[];for(let b=1;b<=2;b++){p();try{let c=B[(b-1)%B.length];o("cn_nav_attempt",`Navigation attempt ${b}/2 → ${c}`),b>1&&(await a.context().clearCookies().catch(()=>{}),await a.waitForTimeout(800)),await a.goto(c,{waitUntil:"commit",timeout:k}),p(),await a.waitForFunction(()=>"loading"!==document.readyState,{timeout:1e4}).catch(()=>{}),p();let d=await W(a,E,{timeout:6e3});d&&(await d.click().catch(()=>{}),o("cn_consent_dismissed","Privacy consent dialog dismissed (同意)"),await a.waitForTimeout(1e3));let e=await X(a,D,25e3);if(p(),!e){let b=await a.locator("body").innerText().catch(()=>""),d=await a.evaluate(()=>document.documentElement?.outerHTML?.length||0).catch(()=>0),e=a.url();o("cn_spa_not_ready",`SPA not ready after 25s (url=${e}, body=${String(b).slice(0,80)}, html=${d})`),!b&&d<200?(o("cn_proxy_empty_page","Empty page body — proxy may be blocking codebuddy.cn"),r.push({code:"proxy_empty",detail:`empty page via ${c} (html=${d})`})):r.push({code:"spa_timeout",detail:`SPA not ready url=${e} html=${d}`});continue}o("cn_spa_ready","Login SPA ready"),o("cn_selecting_phone_tab","Selecting phone-number tab");let f=await W(a,C,{timeout:12e3});if(f?(await f.click().catch(()=>{}),o("cn_phone_tab_selected","Phone tab selected"),await a.waitForTimeout(800)):o("cn_phone_tab_not_found","Phone tab not found — checking if iframe already present"),o("cn_waiting_for_iframe","Waiting for phone iframe to load"),await a.locator(F).waitFor({state:"attached",timeout:18e3}).catch(()=>{}),j=await U(a)){if(await j.waitForSelector(G,{state:"visible",timeout:15e3}).then(()=>!0).catch(()=>!1)){o("cn_iframe_ready","Phone iframe + #phoneNumber ready");break}o("cn_iframe_empty","Iframe found but #phoneNumber not visible yet"),r.push({code:"iframe_empty",detail:"phone iframe attached but #phoneNumber not visible"}),j=null}else o("cn_iframe_missing",`No #phone-iframe (attempt ${b}/2)`),r.push({code:"iframe_missing",detail:"SPA loaded but #phone-iframe never appeared"})}catch(e){if(e?.code==="JOB_CANCELLED")throw e;let a=String(e?.message||e||"");o("cn_nav_retry",`Navigation attempt ${b}/2 failed: ${a.slice(0,120)}`);let c=/timeout|exceeded|ETIMEDOUT|net::ERR/i.test(a),d=/ERR_PROXY|ERR_TUNNEL|ERR_CONNECTION|NS_ERROR_PROXY|proxy/i.test(a);r.push({code:d?"proxy_network":c?"nav_timeout":"nav_error",detail:a.slice(0,160)})}}if(!j)return{status:"failed",error:function(a=[],b=2){let c=a.map(a=>a.code),d=a[a.length-1],e="Fix: use a live residential CN proxy (proxyPoolMode=single), concurrency 1, then retry. 5sim is not charged until the form loads.";return c.includes("proxy_empty")||c.includes("proxy_network")?`CodeBuddy CN login page empty/blocked via proxy after ${b} attempts (${d?.detail||"proxy blackhole"}). ${e}`:c.includes("nav_timeout")?`CodeBuddy CN navigation timed out after ${b} attempts (${d?.detail||"goto timeout"}). Proxy is too slow or dead. ${e}`:c.includes("spa_timeout")?`CodeBuddy CN SPA did not boot after ${b} attempts (${d?.detail||"no login UI"}). Proxy/CDN may be filtering JS. ${e}`:c.includes("iframe_missing")||c.includes("iframe_empty")?`CodeBuddy CN page opened but phone form iframe never appeared after ${b} attempts (${d?.detail||"no #phone-iframe"}). Site layout change or half-loaded SPA — retry with another CN exit IP. ${e}`:c.includes("nav_error")&&d?.detail?`CodeBuddy CN phone form failed after ${b} attempts: ${d.detail}. ${e}`:`Could not load CodeBuddy CN phone form after ${b} attempts (${d?.code||"unknown"}: ${d?.detail||"proxy/SPA"}). ${e}`}(r,2)};await j.waitForSelector("#kc-form-login",{timeout:l}).catch(()=>{}),await j.waitForSelector(G,{state:"visible",timeout:l}).catch(()=>{});let s=b;if("function"==typeof c&&(o("cn_ordering_after_form","Login form ready — ordering 5sim number now (not before nav)"),s=await c()),!s)return{status:"failed",error:"No phone number available (resolvePhone/phone missing)"};let t=g(s),{countryCode:u,localNumber:v}=(q=t,(!(h=String(q).replace(/[\s\-()]/g,"")).startsWith("+")&&/^\d+$/.test(h)&&(h="+"+h),h.startsWith("+852"))?{countryCode:"+852",localNumber:h.slice(4)}:h.startsWith("+86")?{countryCode:"+86",localNumber:h.slice(3)}:h.startsWith("+1")?{countryCode:"+1",localNumber:h.slice(2)}:{countryCode:"",localNumber:h.replace(/^\+/,"")});o("cn_selecting_country",`Selecting country code ${u} for phone ${t}`),await V(j,u,l,o),o("cn_entering_phone",`Entering phone number: ${v}`);let w=j.locator(G).first();try{await w.waitFor({state:"visible",timeout:l})}catch{return{status:"failed",error:"Could not find the phone number input (#phoneNumber) inside the iframe"}}await Y(w,v),o("cn_phone_entered",`Phone number entered: ${v}`);try{let b=a.locator(".t-checkbox").last();await b.isVisible({timeout:3e3}).catch(()=>!1)&&(await b.click().catch(()=>{}),o("cn_agreement_checked","Agreement checkbox checked"))}catch{}o("cn_clicking_send_code","Clicking send SMS code button");let x=await R(j);if("missing"===x.reason)return{status:"failed",error:"Could not find the send-SMS-code button (.code-btn) inside the iframe"};if(!x.ok)return{status:"failed",error:"Could not click the send-SMS-code button (.code-btn) inside the iframe"};o("cn_send_code_clicked","Send code button clicked"),await j.waitForSelector(J,{state:"visible",timeout:5e3}).catch(()=>{});let y=await ae(j);if(y)return{status:"failed",error:`Form error after sending code: ${y}`};o("cn_waiting_for_sms","Waiting for SMS verification code from 5sim (timer starts now)");try{let a;if("function"==typeof e)a=Promise.resolve().then(()=>e());else if(d)a=d;else throw Error("No waitForSms/pollSmsPromise provided");f=await S(a,{timeoutMs:m,signal:i})}catch(a){if(a&&"FiveSimTimeoutError"===a.name)throw a;return(i?.aborted||a?.code==="JOB_CANCELLED")&&p(),{status:"failed",error:`Failed to receive SMS code: ${a.message}`}}if(!f)return{status:"failed",error:"Received empty SMS code from 5sim"};o("cn_sms_received",`SMS code received: ${f}`),o("cn_entering_code","Entering SMS verification code");let z=j.locator(J).first();try{await z.waitFor({state:"visible",timeout:l})}catch{return{status:"failed",error:"Could not find the verification code input (#code) inside the iframe"}}await Y(z,f),o("cn_code_entered","Verification code entered");let A=1200+Math.floor(1800*Math.random());o("cn_pre_submit_pause",`Waiting ${A}ms before submit (humanize)`),await a.waitForTimeout(A);let H=Math.max(n,12e3),I=!1;for(let b=0;b<2;b++){o("cn_submitting",`Clicking submit button (attempt ${b+1}/2)`);let c=await U(a);if(!c){let b=await _(a,{timeoutMs:5e3,reportStep:o});if(b.ok)return o("cn_session_cookies",`Keycloak session after iframe detach (${b.cookie})`),{status:"success"};if(P(b.cookies))return o("cn_account_restricted","Tencent login_risk_state present after iframe detached"),Q("login_risk_state cookie present");return{status:"failed",error:"Lost phone iframe after submit"}}if(await c.locator(G).first().isVisible({timeout:3e3}).catch(()=>!1)&&b>0){o("cn_re_entering_after_refresh",`Re-entering phone + code after refresh (retry ${b})`),await V(c,u,l,o);let d=c.locator(G).first();await Y(d,v);try{let b=a.locator(".t-checkbox").first();await b.isVisible({timeout:2e3}).catch(()=>!1)&&await b.click().catch(()=>{})}catch{}let e=c.locator(J).first();await e.isVisible({timeout:3e3}).catch(()=>!1)&&await Y(e,f),await a.waitForTimeout(800+Math.floor(700*Math.random()))}if(await aa(c,l),o("cn_submitted",`Registration form submitted (attempt ${b+1})`),await a.waitForLoadState("domcontentloaded",{timeout:5e3}).catch(()=>{}),await a.waitForTimeout(1800),c=await U(a)||c,await ad(a,c))return o("cn_account_restricted",`Account restricted after submit (attempt ${b+1}) — stopping automatic retries`),Q("restriction message detected");if(o("cn_checking_captcha","Checking for captcha"),await af(a,c,3e3))return o("cn_captcha_detected","Captcha appeared during registration — manual assist needed"),{status:"needs_manual",error:"A captcha appeared during registration. Please complete it manually in the opened browser window.",captcha:!0};let d=await ae(c);if(d)return{status:"failed",error:`Form error after submit: ${d}`};o("cn_waiting_session",`Waiting up to ${Math.round(H/1e3)}s for Keycloak session cookies`);let e=await _(a,{timeoutMs:H,reportStep:o,alsoCheckFrame:()=>U(a)});if(e.ok)return o("cn_session_cookies",`Keycloak session cookies present (${e.cookie}) — registration success`),{status:"success"};if("restricted"===e.reason)return o("cn_account_restricted","Restriction detected while waiting for Keycloak session"),Q("restriction message detected during session handoff");if(await ab(a)&&b<1){o("cn_submit_no_effect","Login form still visible after submit — retrying");continue}o("cn_session_nudge","No session yet — navigating to home to complete OIDC handoff"),await a.goto("https://www.codebuddy.cn/",{waitUntil:"domcontentloaded",timeout:k}).catch(()=>{}),await a.waitForTimeout(2e3);let g=await _(a,{timeoutMs:1e4,reportStep:o});if(g.ok)return o("cn_session_cookies",`Keycloak session after home nudge (${g.cookie})`),{status:"success"};if("restricted"===g.reason)return o("cn_account_restricted","Restriction detected after home handoff"),Q("restriction message detected after OIDC handoff");if(P(g.cookies))return o("cn_account_restricted","Home handoff returned no authenticated session and login_risk_state is present"),Q("login_risk_state persisted after OIDC handoff");I=!0;break}if(!I)return o("cn_submit_retries_exhausted","Account restricted after 2 retries — needs manual"),{status:"needs_manual",error:"Account restricted after 2 refresh retries. Please try with a different VPN/proxy or complete manually."};o("cn_confirming_success","Confirming registration success");let K=await _(a,{timeoutMs:5e3});if(K.ok)return o("cn_registration_success",`Phone registration completed (Keycloak session: ${K.cookie})`),{status:"success"};if(P(K.cookies))return o("cn_account_restricted","No authenticated session and Tencent login_risk_state is present — account restricted"),Q("login_risk_state without an authenticated session");if(await ag(a,j,1e4))return o("cn_registration_success","Phone registration completed successfully (UI markers)"),{status:"success"};let L=await ac(a);return o("cn_success_unconfirmed",`No Keycloak session after submit — ${L.summary}`),{status:"needs_manual",error:`Login submit finished but no Keycloak session yet (${L.summary}). Complete login in the headed browser or retry with a fresh China proxy.`}}catch(a){if((i?.aborted||"function"==typeof j&&j())&&p(),a&&"FiveSimTimeoutError"===a.name||a?.code==="JOB_CANCELLED"||a?.code==="CN_ACCOUNT_HARD_TIMEOUT")throw a;return o("cn_automation_error",`Phone registration automation error: ${a.message}`),{status:"failed",error:a.message||"Unexpected error during phone registration"}}}async function U(a){try{await a.locator(F).waitFor({state:"attached",timeout:5e3});let b=await a.locator(F).elementHandle({timeout:2e3});if(b){let a=await b.contentFrame();if(a)return a}}catch{}for(let b of a.frames()){let a=b.url();if(a.includes("codebuddy.cn/auth/realms/copilot")||a.includes("protocol/openid-connect"))return b}return null}async function V(a,b,c,d){if(!b)return;let e=Math.min(Number(c)||15e3,1e4),f=async()=>{let c=a.locator(I).first(),f=String(await c.textContent({timeout:3e3}).catch(()=>"")).trim();if(f===b)return void d?.("cn_country_already_selected",`Country code already ${b}`);d?.("cn_opening_country_dropdown",`Opening country dropdown (current: ${f}, target: ${b})`);let g=a.locator(".kc-country-selector").first();for(let c of(await g.waitFor({state:"visible",timeout:Math.min(e,5e3)}),await g.click({timeout:3e3}).catch(()=>{}),await a.locator(H).first().waitFor({state:"visible",timeout:3e3}).catch(()=>{}),({"+852":["中国香港","香港","Hong Kong","+852"],"+86":["中国大陆","中国","China","+86"],"+853":["中国澳门","澳门","Macau","+853"],"+886":["中国台湾","台湾","Taiwan","+886"]})[b]||[b]))for(let e of[a.locator(`${H}:has-text("${c}")`).first(),a.getByText(c,{exact:!1}).first()]){if(!await e.isVisible({timeout:1500}).catch(()=>!1))continue;let f=await e.textContent({timeout:1500}).catch(()=>c);await e.click({timeout:2e3}).catch(()=>{}),await a.locator(I).filter({hasText:b}).first().waitFor({state:"visible",timeout:2e3}).catch(()=>{}),d?.("cn_country_selected",`Country selected: ${String(f||c).trim()}`);return}d?.("cn_country_not_found",`Country code ${b} not found in dropdown; using default`),await a.locator("body").click({timeout:1e3}).catch(()=>{})},g=null;try{await Promise.race([f(),new Promise((a,b)=>{g=setTimeout(()=>b(Error(`selectCountry timed out after ${e}ms`)),e),g.unref?.()})])}catch(a){d?.("cn_country_select_error",`Country selection error: ${a.message}`)}finally{g&&clearTimeout(g)}}async function W(a,b,{timeout:c=1e4}={}){for(let d of b)try{let b=a.locator(d).first();return await b.waitFor({state:"visible",timeout:Math.min(c,5e3)}),b}catch{}return null}async function X(a,b,c=15e3){let d=Date.now()+c;for(;Date.now()<d;){for(let c of b)try{let b=a.locator(c).first();if(await b.isVisible().catch(()=>!1))return!0}catch{}await new Promise(a=>setTimeout(a,250))}return!1}async function Y(a,b){try{return await a.click(),await a.fill(""),await a.fill(b),!0}catch{try{return await a.click(),await a.press("Control+a"),await a.type(b,{delay:50}),!0}catch{return!1}}}let Z=["KEYCLOAK_IDENTITY","KEYCLOAK_SESSION","KEYCLOAK_IDENTITY_LEGACY","KEYCLOAK_SESSION_LEGACY"];function $(a=[]){for(let b of Z)if(a.some(a=>a.name===b))return b;let b=a.find(a=>a.name.startsWith("KEYCLOAK_")&&!/locale|theme|restart/i.test(a.name));return b?.name||null}async function _(a,{timeoutMs:b=2e4,reportStep:c,alsoCheckFrame:d}={}){let e=Date.now()+b,f=0;for(;Date.now()<e;){let b=await a.context().cookies().catch(()=>[]),g=$(b);if(g)return{ok:!0,cookie:g,cookies:b};try{let c=a.url();if(c&&!c.includes("/login")&&!c.includes("/auth/realms")){let a=b.find(a=>/^(access_token|cb_token|codebuddy)/i.test(a.name)||"token"===a.name&&a.domain?.includes("codebuddy"));if(a)return{ok:!0,cookie:a.name,cookies:b}}}catch{}let h=d?await d().catch(()=>null):null;if(await ad(a,h))return{ok:!1,cookies:b,reason:"restricted"};if(h){let a=await ae(h);if(a)return{ok:!1,cookies:b,reason:`form_error:${a}`}}if(c&&Date.now()-f>4e3){f=Date.now();let a=Math.max(0,Math.round((e-Date.now())/1e3));c("cn_waiting_session",`Still waiting for Keycloak session… ${a}s left`)}await a.waitForTimeout(500)}return{ok:!1,cookies:await a.context().cookies().catch(()=>[])}}async function aa(a,b=15e3){let c=a.locator("#kc-login").first();try{await c.waitFor({state:"visible",timeout:b}),await c.click({timeout:5e3}).catch(()=>{})}catch{}try{await a.evaluate(()=>{let a=document.querySelector("#kc-form-login")||document.querySelector("form");if(a)if("function"==typeof a.requestSubmit){let b=a.querySelector("#kc-login")||a.querySelector('[type="submit"]');b?a.requestSubmit(b):a.requestSubmit()}else a.submit()})}catch{await a.locator(J).first().press("Enter").catch(()=>{})}}async function ab(a){let b=await U(a);return!!b&&b.locator(G).first().isVisible({timeout:1500}).catch(()=>!1)}async function ac(a){let b="";try{b=a.url()}catch{b="(unknown)"}let c=(await a.context().cookies().catch(()=>[])).map(a=>a.name).slice(0,20).join(",")||"(none)",d="";try{d=await a.evaluate(()=>(document.body?.innerText||"").replace(/\s+/g," ").trim().slice(0,120))}catch{d=""}let e=await U(a),f="no-iframe";if(e)try{f=(await e.url()).slice(0,80)}catch{f="iframe-detached"}return{summary:`url=${b.slice(0,60)} cookies=[${c}] frame=${f}${d?` text="${d}"`:""}`,url:b,cookieNames:c,bodySnippet:d}}async function ad(a,b){for(let c of[b,a])if(c)try{let a=await c.evaluate(()=>document.body?.innerText||"");if(function(a){let b=String(a||"").toLowerCase();return O.some(a=>b.includes(a.toLowerCase()))}(a))return!0}catch{}return!1}async function ae(a){for(let b of M)try{let c=a.locator(b).first();if(await c.isVisible({timeout:1500}).catch(()=>!1)){let a=await c.textContent().catch(()=>""),b=String(a).trim();if(b&&b.length>1)return b}}catch{}try{let b=await a.evaluate(()=>(document.body?.innerText||"").replace(/\s+/g," ").trim());for(let a of["验证码错误","验证码已过期","验证码无效","请输入正确的验证码","手机号格式","发送过于频繁","Invalid","incorrect"])if(b.includes(a)){let c=b.indexOf(a);return b.slice(Math.max(0,c-10),c+a.length+40).trim()}}catch{}return null}async function af(a,b,c=5e3){for(let b of K)try{let d=a.locator(b).first();if(await d.isVisible({timeout:Math.min(c,2e3)}).catch(()=>!1))return!0}catch{}if(b)for(let a of K)try{let d=b.locator(a).first();if(await d.isVisible({timeout:Math.min(c,2e3)}).catch(()=>!1))return!0}catch{}return!1}async function ag(a,b,c=15e3){let d=[];try{if(d=await a.context().cookies().catch(()=>[]),$(d))return!0}catch{}if(P(d)||await ab(a).catch(()=>!1))return!1;for(let b of L)try{let d=a.locator(b).first();if(await d.isVisible({timeout:Math.min(c,2e3)}).catch(()=>!1))return!0}catch{}try{let b=a.url(),c=new Set(d.map(a=>a.name));if(b&&!b.includes("/login")&&!b.includes("/auth/realms")&&(c.has("qcloud_uid")||c.has("qcmainCSRFToken"))&&!c.has("login_risk_state")&&!await ab(a).catch(()=>!1))return!0}catch{}return!1}var ah=c(40891),ai=c(75949);let aj=200,ak=Number.parseInt(process.env.ZEVAI_CN_ACCOUNT_TIMEOUT_MS||"",10)||3e5,al="CN_API_KEY_OUTCOME_UNKNOWN",am="CN_API_KEY_AUTOMATIC_RETRY_STOPPED",an="CN_ACCOUNT_RESTRICTED",ao=new Set(["hongkong","china","any"]),ap="hongkong",aq=new Set(["queued","running","needs_manual"]),ar=new Set(["queued","running","needs_manual"]);function as(a){return String(a||"").trim()}function at(){try{let{totalMemGb:a}=(0,l.si)();return Number.isFinite(a)&&a>0&&a<3}catch{return!1}}function au(a){return!!a?.proxyUrls?.length&&["manual","all","single"].includes(a?.proxyPoolMode)}async function av(a,{timeoutMs:b=6e3}={}){let c=null;try{c=a?.request||null}catch{c=null}if(!c||"function"!=typeof c.get)return{ok:!1,ip:null,ips:[],samples:0,error:"context request unavailable"};let d=[],e=null;for(let a of ai.PROXY_EGRESS_ECHO_URLS){d.push(a);let g=null;try{var f;if(g=await c.get(a,{timeout:b,failOnStatusCode:!1,headers:{Accept:"text/plain, application/json;q=0.9, */*;q=0.1","Cache-Control":"no-cache"}}),200>g.status()||g.status()>=300){e=`HTTP ${g.status()}`;continue}let h=(f=await g.text().catch(()=>""),(0,ai.parseProxyEgressIp)(f));if(!h){e="exit-IP response was not recognized";continue}return{ok:!0,ip:h,ips:[h],samples:1,attempts:d.length,attemptedUrls:d,unstable:!1,error:null}}catch(a){e=a?.name==="TimeoutError"?`timed out after ${b}ms`:"request failed"}finally{"function"==typeof g?.dispose&&await Promise.resolve(g.dispose()).catch(()=>null)}}return{ok:!1,ip:null,ips:[],samples:0,attempts:d.length,attemptedUrls:d,unstable:!1,error:e||"all exit-IP services failed"}}function aw(a,b=null){if(a?.unstable)throw Object.assign(Error("Manual proxy rotated between exit IPs during preflight; no phone number was purchased"),{code:"CN_PROXY_EGRESS_UNSTABLE"});if(!a?.ok||!a?.ip)throw Object.assign(Error(`Manual proxy exit IP could not be verified (${a?.error||"no response"}); no phone number was purchased`),{code:"CN_PROXY_EGRESS_UNVERIFIED"});if(b&&a.ip!==b)throw Object.assign(Error("Manual proxy exit IP changed after CloakBrowser GeoIP alignment; no phone number was purchased"),{code:"CN_PROXY_EGRESS_CHANGED"});return a.ip}async function ax(a,{timeoutMs:b,message:c,code:d,onTimeout:e,onLateResolve:f}){let g=Promise.resolve(a),h=null,i=!1,j=new Promise((a,f)=>{"function"==typeof(h=setTimeout(()=>{i=!0;try{"function"==typeof e&&e()}catch{}f(Object.assign(Error(c),{code:d}))},b)).unref&&h.unref()});try{return await Promise.race([g,j])}finally{h&&clearTimeout(h),i&&"function"==typeof f&&g.then(f).catch(()=>null)}}function ay(a,b="API key request"){let c=Number(a?.status);if(429===c)throw Object.assign(Error(`${b} was rate limited (HTTP 429); automatic POST retries stopped`),{code:am});if(Number.isFinite(c)&&c>=500)throw Object.assign(Error(`${b} returned HTTP ${c}; creation outcome may be unknown and automatic POST retries stopped`),{code:al});return a}function az(a){return a?.code===al||a?.code===am}function aA(a){let b=`${a?.text||""} ${a?.data?._raw||""} ${a?.url||""}`;return/<!doctype html|<html|login-pf|\/auth\/realms\//i.test(b)}function aB(a,b=[]){let c=b instanceof Set?b:new Set(b),d=`${a?.text||""} ${a?.data?._raw||""}`;return!!/账号访问受限|安全策略限制|访问受限|account restricted|access restricted/i.test(d)||!!c.has("login_risk_state")&&(aA(a)||a?.status===0||a?.status===401||a?.status===403)}async function aC({context:a,page:b,timeoutMs:c=1e4}){let d={Accept:"application/json, text/plain, */*","x-requested-with":"XMLHttpRequest","X-Domain":"www.codebuddy.cn","X-Product":"SaaS"},e=null;try{e=a?.request||null}catch{e=null}if(e&&"function"==typeof e.get)try{let a=await e.get("https://www.codebuddy.cn/console/accounts",{headers:d,timeout:c,failOnStatusCode:!1}),b=await a.text().catch(()=>"");return function(a,b,c={}){let d=String(b||""),e=null;try{e=d?JSON.parse(d):null}catch{e={_raw:d.slice(0,240),_notJson:!0}}return{status:Number(a)||0,data:e,text:d.slice(0,240),...c}}(a.status(),b,{source:"context-request",url:a.url(),contentType:a.headers()?.["content-type"]||""})}catch{}return ax(b.evaluate(async({requestTimeoutMs:a,requestHeaders:b})=>{let c=new AbortController,d=setTimeout(()=>c.abort(),a);try{let a=window.location.hostname||"www.codebuddy.cn",d="www.codebuddy.cn"===a?`${window.location.origin}`:"https://www.codebuddy.cn",e=await fetch(`${d}/console/accounts`,{credentials:"include",signal:c.signal,headers:b}),f=await e.text().catch(()=>""),g=null;try{g=f?JSON.parse(f):null}catch{g={_raw:String(f||"").slice(0,240),_notJson:!0}}return{status:e.status,data:g,text:String(f||"").slice(0,240),source:"page-fetch",url:e.url,contentType:e.headers.get("content-type")||""}}catch(a){return{status:0,timedOut:a?.name==="AbortError",error:a?.message||String(a),source:"page-fetch"}}finally{clearTimeout(d)}},{requestTimeoutMs:c,requestHeaders:d}),{timeoutMs:c,message:`Console account probe timed out after ${c/1e3}s`,code:"CN_CONSOLE_PROBE_TIMEOUT"}).catch(a=>({status:0,timedOut:a?.code==="CN_CONSOLE_PROBE_TIMEOUT",error:a?.message||String(a),source:"page-fetch"}))}async function aD(a){if(!a||"function"!=typeof a.close)return!0;try{return await ax(Promise.resolve().then(()=>a.close()),{timeoutMs:5e3,message:"Browser resource close timed out after 5s",code:"CN_RESOURCE_CLOSE_TIMEOUT"}),!0}catch{return!1}}async function aE(a,b){if(await aD(a)||!b?.browser)return;let c=b.browser;b.browser=null,await (0,ai.forceCloseBrowser)(c).catch(()=>null)}async function aF(a){try{return await ax(Promise.resolve().then(a),{timeoutMs:12e3,message:"5sim order settlement timed out after 12s",code:"CN_FIVESIM_SETTLE_TIMEOUT"})}catch{return!1}}async function aG({apiKey:a,phone:b,region:d,fiveSimOrderId:e,account:f}){let{createProviderConnection:g}=await Promise.resolve().then(c.bind(c,71998)),h={provider:"codebuddy-cn",authType:"apikey",apiKey:a,accessToken:a,name:b||`5sim-${e}`,email:b||`5sim-${e}`,providerSpecificData:{domain:"www.codebuddy.cn",phoneNumber:b,fiveSimOrderId:e,region:d,automation:"5sim-phone-bulk"},testStatus:"active"};return{connection:await g(h)}}class aH extends i.Q6{constructor({browserLauncher:a,requestDeviceCodeFn:b=ah.cT,pollToken:d=ah.ZV,fetchLoginAccountFn:e=ah.w8,saveConnection:g=aG,fiveSimClientFactory:i=aI,phoneAutomation:j=T,phoneFormatter:k=as,pollIntervalMs:l=n.ne.pollInterval,storageName:m="codebuddy-cn-bulk-import"}={}){super({browserLauncher:a||(async a=>{let{forceCloseBrowser:b,launchBulkImportBrowser:d}=await Promise.resolve().then(c.bind(c,75949)),e=Array.isArray(a?.proxyUrls)&&a.proxyUrls.length?a.proxyUrls[0]:null,f=process.env.ZEVAI_CN_HEADLESS,g=!1;return("0"===f||"false"===f)&&(g=!1),("1"===f||"true"===f)&&(g=!0),ax(d({engine:a?.engine||"cloakbrowser",proxyUrl:e,headless:g,windowSize:{width:1280,height:900},requireProxyGeoip:a?.proxyPoolMode==="manual"&&!!e}),{timeoutMs:9e4,message:"CloakBrowser launch timed out after 90s",code:"CN_BROWSER_LAUNCH_TIMEOUT",onLateResolve:a=>b(a)})}),storageName:m}),this.latestJobId&&this.readPersistedJob(this.latestJobId)||(this.latestJobId=function(a){try{let b=f().readdirSync(a).filter(a=>a.endsWith(".json")&&"meta.json"!==a).map(b=>{let c=h().join(a,b);try{let a=JSON.parse(f().readFileSync(c,"utf8"));if(!a?.jobId)return null;let b=Date.parse(a.createdAt||""),d=Number.isFinite(b)?b:f().statSync(c).mtimeMs;return{jobId:a.jobId,sortTime:d}}catch{return null}}).filter(Boolean).sort((a,b)=>b.sortTime-a.sortTime);return b[0]?.jobId||null}catch{return null}}(this.storageDir),this.latestJobId&&this.persistLatestJobId(this.latestJobId)),this.requestDeviceCode=b,this.pollToken=d,this.fetchLoginAccount=e,this.saveConnection=g,this.fiveSimClientFactory=i,this.phoneAutomation=j,this.phoneFormatter=k,this.pollIntervalMs=l}async startJob({count:a,concurrency:b,proxyPoolMode:c,proxyPoolId:e,manualProxyUrl:f,region:g}){let h=Number.parseInt(a,10);if(!Number.isFinite(h)||h<1)throw Object.assign(Error("At least one account is required (count >= 1)"),{error:"At least one account is required (count >= 1)"});if(h>aj)throw Object.assign(Error(`Count exceeds maximum of ${aj}`),{error:`Count exceeds maximum of ${aj}`});this.latestJobId&&!this.jobs.has(this.latestJobId)&&this.getJob(this.latestJobId);let k=[...this.jobs.values()].find(a=>a&&("running"===a.status||"queued"===a.status||"needs_manual"===a.status)&&!a.cancelRequested);if(k)throw Object.assign(Error(`Another CodeBuddy CN job is still active (${k.jobId}). Cancel it or wait before starting again.`),{error:`Another CodeBuddy CN job is still active (${k.jobId}). Cancel it or wait before starting again.`});let m=ao.has(g)?g:ap,n=[],o="string"==typeof f?f.trim():"";if(o){if(!/^(https?|socks4|socks5):\/\/.+/i.test(o))throw Object.assign(Error("manualProxyUrl must be a valid proxy URL (http://, https://, socks4://, or socks5://)"),{error:"manualProxyUrl must be a valid proxy URL (http://, https://, socks4://, or socks5://)"});n=[o]}else if("all"===c)n=(await (0,j.ui)({isActive:!0})).map(a=>a.proxyUrl).filter(Boolean);else if("single"===c&&e){let a=await (0,j.hr)(e);a?.isActive&&a?.proxyUrl&&(n=[a.proxyUrl])}o||function(a,b){if(!["all","single"].includes(a)||b.length>0)return;let c="single"===a?"Selected proxy is missing or inactive; no automation was started":"No active proxies are available in the selected pool; no automation was started";throw Object.assign(Error(c),{error:c,code:"CN_PROXY_SELECTION_EMPTY"})}(c,n);let p=(0,d.randomUUID)(),q=(0,i.kF)(),r={jobId:p,status:"running",concurrency:function(a,{manualProxy:b=!1,processBoundProxy:c=!1}={}){return b||c?1:function(a){let b=at()?1:8;if((0,l.uT)(a))return Math.min(b,Math.max(1,(0,l.q)()));let c=Number.parseInt(a,10);return Number.isFinite(c)?Math.min(b,Math.max(1,c)):Math.min(b,1)}(a)}(b,{manualProxy:!!o,processBoundProxy:n.length>0}),proxyPoolMode:o?"manual":c||"none",proxyUrls:n,region:m,createdAt:q,startedAt:q,finishedAt:null,error:null,cancelRequested:!1,browser:null,nextIndex:0,manualFollowups:new Set,persistPromise:Promise.resolve(),lastPreview:null,lastPreviewCapturedAt:0,accounts:Array.from({length:h},(a,b)=>({line:b+1,region:m,phone:null,fiveSimOrderId:null,fiveSimActivationId:null,fingerprintSeed:(0,d.randomUUID)(),proxyUrl:null,egressIp:null,proxyTimezone:null,proxyLocale:null,abortController:new AbortController,status:"queued",error:null,connectionId:null,workerId:null,manualSession:null,runtimeSession:null,currentStep:"queued",updatedAt:q,logs:[(0,i.hn)("queued","Queued and waiting for an available worker")]}))};return this.jobs.set(p,r),this.latestJobId=p,this.persistLatestJobId(p),await this.persistJobSnapshot(r,{forcePreview:!1}),this.runJob(p),aK(r)}buildPersistedSnapshot(a){return aK(a,{preview:a.lastPreview||null})}terminalizeInterruptedSnapshot(a){if(!a||!aq.has(a.status))return a;let b="CodeBuddy CN job was interrupted by a service restart. Browser and OTP sessions cannot be resumed safely; start a new job.",c=(a.accounts||[]).map(a=>{if(!ar.has(a.status))return a;let c=(0,i.hn)("failed",b,"error");return{...a,status:"failed",error:b,currentStep:"failed",updatedAt:c.at,manualSessionAvailable:!1,logs:[...a.logs||[],c].slice(-40)}}),d={...a,status:"failed",error:a.error||b,finishedAt:a.finishedAt||(0,i.kF)(),accounts:c,summary:aJ(c),preview:null};return this.writePersistedJob(a.jobId,d),d}getJob(a){let b=this.jobs.get(a);if(b)return aK(b);let c=this.readPersistedJob(a);return c?this.terminalizeInterruptedSnapshot(c):null}async getJobWithPreview(a){let b=this.jobs.get(a);return b?(await this.persistJobSnapshot(b,{forcePreview:!1}),aK(b,{preview:b.lastPreview||null})):this.getJob(a)}async processAccount(a,b,c){if(a.cancelRequested||!a.browser)return void this.finalizeAccount(b,"cancelled",{error:"Job cancelled"});let d=null,e=null,f=!1,g=null,h=null;try{let c;this.setAccountStep(b,"reading_settings","Reading 5sim API key from settings"),await this.persistJobSnapshot(a,{forcePreview:!0});let j=(await (0,k.mt)()).fiveSimApiKey;if(!j||!j.trim()){this.finalizeAccount(b,"failed",{error:"5sim API key not configured. Set it in the automation modal or dashboard settings.",step:"failed",message:"5sim API key not configured"}),await this.persistJobSnapshot(a,{forcePreview:!0});return}d=this.fiveSimClientFactory({apiKey:j,proxyOptions:null}),this.setAccountStep(b,"creating_browser","Creating browser context (before 5sim order)"),await this.persistJobSnapshot(a,{forcePreview:!0});let l=(0,i.go)(a.browser,b.proxyUrl,{profile:"codebuddy-cn",region:a.region||"hongkong",fingerprintSeed:b.fingerprintSeed,lowMemory:at(),nativeCloakProfile:au(a)&&!!b.proxyUrl}),m=await ax(l,{timeoutMs:3e4,message:"Browser context creation timed out after 30s",code:"CN_CONTEXT_TIMEOUT",onLateResolve:a=>Promise.resolve(a?.context?.close?.()).catch(()=>null)});g=m.context;let n=m.page;if(b.runtimeSession={context:g,page:n},"manual"===a.proxyPoolMode&&b.proxyUrl){this.setAccountStep(b,"checking_proxy_egress","Verifying pasted proxy exit IP before opening the registration form"),await this.persistJobSnapshot(a,{forcePreview:!1});let c=(0,ai.getCloakProxyProfile)(a.browser),d=await av(g);b.egressIp=h=aw(d,c?.egressIp||null),b.proxyTimezone=c?.timezone||null,b.proxyLocale=c?.locale||null,this.setAccountStep(b,"proxy_egress_ready",`Manual proxy verified: ${h} (${d.samples} checks, ${b.proxyTimezone||"timezone unknown"}, ${b.proxyLocale||"locale unknown"})`),await this.persistJobSnapshot(a,{forcePreview:!1})}if(a.cancelRequested)throw Error("Job cancelled before ordering phone number");this.setAccountStep(b,"registering","Running phone registration on CodeBuddy CN"),await this.persistJobSnapshot(a,{forcePreview:!0});try{n.setDefaultTimeout(2e4),n.setDefaultNavigationTimeout(45e3)}catch{}let o=null,p=new Promise((a,c)=>{o=setTimeout(()=>{let a=Object.assign(Error(`CodeBuddy CN account hard timeout after ${Math.round(ak/1e3)}s (browser will be force-closed)`),{code:"CN_ACCOUNT_HARD_TIMEOUT"});b.abortController&&!b.abortController.signal.aborted&&b.abortController.abort(a),c(a)},ak),"function"==typeof o.unref&&o.unref()});try{c=await Promise.race([this.phoneAutomation({page:n,signal:b.abortController?.signal,isCancelled:()=>!0===a.cancelRequested,resolvePhone:async()=>{if(a.cancelRequested)throw Error("Job cancelled before ordering phone number");if("manual"===a.proxyPoolMode&&b.proxyUrl){this.setAccountStep(b,"rechecking_proxy_egress","Registration form is ready — confirming the pasted proxy stayed sticky"),await this.persistJobSnapshot(a,{forcePreview:!1});let c=await av(g);aw(c,h),this.setAccountStep(b,"proxy_egress_confirmed",`Manual proxy remained on ${h}; safe to purchase one phone number`),await this.persistJobSnapshot(a,{forcePreview:!1})}this.setAccountStep(b,"ordering_number",`Form ready — ordering ${a.region} phone from 5sim (single buy)`),await this.persistJobSnapshot(a,{forcePreview:!0});let c=await d.buyNumber({country:a.region,product:"codebuddy",allowProductFallback:!1,signal:b.abortController?.signal});return e=c.id,b.phone=c.phone,b.fiveSimOrderId=c.id,b.fiveSimActivationId=c.id,this.setAccountStep(b,"number_ordered",`Phone number ordered: ${c.phone} (1 buy, no re-order)`),await this.persistJobSnapshot(a,{forcePreview:!0}),c.phone},waitForSms:async()=>{if(!e)throw Error("Cannot poll SMS — no 5sim order id");this.setAccountStep(b,"sms_poll_started","SMS poll started (full 90s window after send-code)"),await this.persistJobSnapshot(a,{forcePreview:!1});let c=await d.pollCode(e,{timeoutMs:9e4,signal:b.abortController?.signal});return f=!0,c},onStep:(c,d)=>{this.setAccountStep(b,c,d),this.persistJobSnapshot(a,{forcePreview:!1})},phoneFormatter:this.phoneFormatter}),p])}finally{o&&clearTimeout(o)}if(String(c.status||"").startsWith("failed")){let h=c.error||"Phone registration failed before submit",i=c.status||"failed";this.finalizeAccount(b,i,{error:h,step:i,message:h}),d&&e&&(f?await aF(()=>d.finishOrder(e)):await aF(()=>d.cancelOrder(e))),b.runtimeSession=null,await aE(g,a),await this.persistJobSnapshot(a,{forcePreview:!0});return}await this.captureApiKey(a,b,g,n,d,e);return}catch(j){let c=j instanceof t,h=a.cancelRequested||j?.code==="JOB_CANCELLED",i=h?"Job cancelled":c?"SMS OTP not received within 90s — number banned":j.message||"Unexpected CodeBuddy CN bulk import failure";if(this.finalizeAccount(b,h?"cancelled":"failed",{error:i,step:h?"cancelled":c?"sms_timeout":"failed",message:i}),d&&e&&(f?await aF(()=>d.finishOrder(e)):c?await aF(()=>d.banOrder(e)):await aF(()=>d.cancelOrder(e))),b.runtimeSession=null,await aE(g,a),(j?.code==="CN_ACCOUNT_HARD_TIMEOUT"||j?.code==="CN_CONTEXT_TIMEOUT"||a.cancelRequested)&&a.browser){let b=a.browser;a.browser=null,await (0,ai.forceCloseBrowser)(b).catch(()=>null)}await this.persistJobSnapshot(a,{forcePreview:!0})}}async captureApiKey(a,b,c,d,e,f){let g="personal-edition-user-id",h=null,i=async(a,{timeout:b=12e3,interval:c=150}={})=>{let d=Date.now()+b;for(;Date.now()<d;){try{if(await a())return!0}catch{}await new Promise(a=>setTimeout(a,c))}return!1};try{this.setAccountStep(b,"waiting_session","Establishing CodeBuddy console session (probe APIs, not just cookies)"),await this.persistJobSnapshot(a,{forcePreview:!0});let j=async()=>{let a=await c.cookies().catch(()=>[]);return{cookies:a,names:new Set(a.map(a=>a.name)),list:a.map(a=>a.name)}},k=a=>a.has("KEYCLOAK_IDENTITY")||a.has("KEYCLOAK_SESSION")||a.has("KEYCLOAK_IDENTITY_LEGACY")||a.has("KEYCLOAK_SESSION_LEGACY"),l=a=>a.has("AUTH_SESSION_ID")||a.has("session")||a.has("qcloud_uid")||a.has("qcmainCSRFToken")||a.has("x_host_key_access"),m=()=>aC({context:c,page:d}),n=a=>{let b=a?.data;if(!b||"object"!=typeof b)return[];for(let a of[b?.data?.accounts,b?.accounts,b?.data?.list,b?.list,b?.data?.result,b?.result,b?.data?.items,b?.items,Array.isArray(b?.data)?b.data:null,Array.isArray(b)?b:null])if(Array.isArray(a)&&a.length>0)return a;return[]},o=async(a=2500)=>{let b=!1,c=null;try{await Promise.race([d.waitForLoadState("domcontentloaded",{timeout:a}).catch(()=>null),i(async()=>{if(b)return!0;let a=await j();return k(a.names)},{timeout:a,interval:200}),new Promise(b=>{c=setTimeout(b,a)})])}finally{b=!0,c&&clearTimeout(c)}},p=async a=>{let b=Date.now();try{await d.goto(a,{waitUntil:"commit",timeout:18e3});let c=18e3-(Date.now()-b);return c>0&&await o(Math.min(2500,c)),!0}catch{return!1}},q=["https://www.codebuddy.cn/","https://www.codebuddy.cn/console","https://www.codebuddy.cn/console/","https://www.codebuddy.cn/profile","https://www.codebuddy.cn/profile/keys"],r=[],s=null,t=!1,u="",v=null,w=0;for(let c=0;c<6;c+=1){if(a.cancelRequested)throw Error("Job cancelled while establishing session");let e=await j(),f=k(e.names),g=l(e.names),h=q[Math.min(c,q.length-1)];c<3||c%2==0||!g?(this.setAccountStep(b,"waiting_session",`OIDC handoff ${c+1}/6 → ${h.replace("https://www.codebuddy.cn","")} (${f?"KEYCLOAK":g?"soft-session":"weak"})`),await this.persistJobSnapshot(a,{forcePreview:!1}),await p(h)):await new Promise(a=>setTimeout(a,300)),/^https:\/\/www\.codebuddy\.cn(?:[/:]|$)/i.test(d.url?.()||"")||await p("https://www.codebuddy.cn/console"),s=await m(),r=n(s),(s?.status>0||s?.text||s?.data)&&(v=s),u=JSON.stringify(s?.data??s?.text??s?.error??null).slice(0,180);let i=aA(s),o=await j();if(!k(o.names)&&aB(s,o.names)?w+=1:w=0,w>=2)throw Object.assign(Error(`Tencent restricted the post-OTP session (${w} console probes returned login/risk evidence; source=${s?.source||"unknown"})`),{code:an});if(s?.status===200&&!i&&Array.isArray(r)&&r.length>0){t=!0,this.setAccountStep(b,"session_ready",`Console session accepted (HTTP 200, ${r.length} account(s)${f?", KEYCLOAK ok":", soft session"})`),await this.persistJobSnapshot(a,{forcePreview:!0});break}if(g&&s?.status===200&&!i&&s?.data?._notJson!==!0&&Array.isArray(r)&&0===r.length&&c>=3){this.setAccountStep(b,"session_soft","Console HTTP 200 but 0 accounts — trying personal API key with soft session (cookies ok)"),await this.persistJobSnapshot(a,{forcePreview:!0}),t=!0;break}this.setAccountStep(b,"resolving_enterprise",`Console not ready (HTTP ${s?.status||0}, accounts=${r.length}${i?", login HTML":""}, source=${s?.source||"unknown"}) — ${c+1}/6 body=${u.slice(0,80)}`),await this.persistJobSnapshot(a,{forcePreview:!1})}if(!t){let a=await j(),b=v||s,c=aB(b,a.names)||a.names.has("login_risk_state")&&w>0;throw Object.assign(Error(c?`Tencent restricted the post-OTP session (HTTP ${b?.status||0}; login_risk_state present; source=${b?.source||"unknown"})`:`Console accounts unavailable after login (HTTP ${b?.status||0}; cookies: ${a.list.slice(0,18).join(",")||"(none)"}; body=${u.slice(0,120)}; probeError=${s?.error||"none"}) — session not accepted for API key`),{code:c?an:"CN_CONSOLE_SESSION_UNAVAILABLE"})}let x=g;if(Array.isArray(r)&&r.length>0){let a=r.find(a=>a?.lastLogin)||r[0];a?.type&&"personal"!==a.type&&a.enterpriseId?x=a.enterpriseId:a?.enterpriseId&&a?.type!=="personal"&&(x=a.enterpriseId)}this.setAccountStep(b,"creating_api_key",`Creating API key (enterprise=${x}, accounts=${r.length})`),await this.persistJobSnapshot(a,{forcePreview:!0});let y=`zevai-router-${b.workerId||"account"}-${Date.now()}`,z=async a=>d.evaluate(async({enterpriseId:a,keyName:b,timeoutMs:c})=>{let d=new AbortController,e=setTimeout(()=>d.abort(),c);try{let c=window.location.hostname||"www.codebuddy.cn",e="www.codebuddy.cn"===c?window.location.origin:"https://www.codebuddy.cn",f=await fetch(`${e}/console/api/client/v1/api-keys`,{method:"POST",credentials:"include",signal:d.signal,headers:{"Content-Type":"application/json",Accept:"application/json, text/plain, */*","x-requested-with":"XMLHttpRequest","X-Domain":"www.codebuddy.cn","X-Product":"SaaS"},body:JSON.stringify({name:b,expire_in_days:365,user_enterprise_id:a})}),g=await f.text().catch(()=>""),h=null;try{h=g?JSON.parse(g):null}catch{h={_raw:String(g||"").slice(0,200)}}return{ok:f.ok,status:f.status,data:h}}catch(a){return{ok:!1,status:0,outcomeUnknown:!0,timedOut:a?.name==="AbortError",error:a?.message||String(a)}}finally{clearTimeout(e)}},{enterpriseId:a,keyName:y,timeoutMs:6e4}),A=async(c,d)=>{let e,f=Date.now(),g=null,h=setInterval(()=>{if(g)return;let c=Math.max(5,Math.round((Date.now()-f)/1e3));this.setAccountStep(b,"creating_api_key",`${d} — waiting for CodeBuddy (${c}s)`),g=this.persistJobSnapshot(a,{forcePreview:!1}).catch(()=>null).finally(()=>{g=null})},5e3);"function"==typeof h.unref&&h.unref();try{e=await ax(z(c),{timeoutMs:6e4,message:"API key request timed out after 60s; creation outcome is unknown",code:al})}catch(a){if(a?.code===al)throw a;throw Object.assign(Error(`API key request lost its response; creation outcome is unknown: ${a?.message||String(a)}`),{code:al})}finally{clearInterval(h),g&&await g.catch(()=>null)}if(e?.outcomeUnknown){let a=e.timedOut?"timed out after 60s":`lost its response (${e.error||"network error"})`;throw Object.assign(Error(`API key request ${a}; creation outcome is unknown`),{code:al})}return ay(e,d)};if(!await p("https://www.codebuddy.cn/profile/keys"))throw Object.assign(Error("Keys page navigation timed out after 18s"),{code:"CN_CONSOLE_NAV_TIMEOUT"});let B=await A(x,"Creating API key");B?.status===400&&x!==g&&(this.setAccountStep(b,"retrying_api_key","Retrying with personal-edition enterprise id"),await this.persistJobSnapshot(a,{forcePreview:!1}),B=await A(g,"Retrying personal API key"));let C=a=>a?.ok===!1&&(401===a.status||403===a.status);for(let c=1;c<=2&&C(B);c+=1){for(let d of(this.setAccountStep(b,"retrying_api_key",`API key 401/403 — OIDC re-handoff round ${c}/2 (waiting strong session)`),await this.persistJobSnapshot(a,{forcePreview:!0}),["https://www.codebuddy.cn/","https://www.codebuddy.cn/console","https://www.codebuddy.cn/profile/keys"]))await p(d);await i(async()=>{let a=await j();return k(a.names)},{timeout:8e3*c,interval:300}).catch(()=>null),B=await A(g,`Retrying API key after OIDC handoff ${c}/2`)}let D=B?.data?.code;if(!B||!B.ok||!B.data||0!==D&&200!==D&&void 0!==D){let a="string"==typeof B?.data?._raw?B.data._raw.replace(/\s+/g," ").slice(0,120):null,b=a&&/openresty|nginx|Authorization Required/i.test(a)?" [edge proxy blocked — session half-baked]":"";throw Error(`API key creation failed (HTTP ${B?.status??"no-response"}, code=${D??"n/a"})${b}: ${JSON.stringify(B?.data??null).slice(0,200)}`)}let E=B.data?.data||B.data,F=E?.apiKey||E?.key||E?.token||E?.secret||E?.api_key||("string"==typeof E?E:null)||B.data.apiKey||B.data.key||B.data.token||B.data.secret;if(!F||"string"!=typeof F)throw Object.assign(Error(`API key response did not contain a key field; creation outcome is unknown: ${JSON.stringify(B.data).slice(0,300)}`),{code:al});h=F,this.setAccountStep(b,"api_key_created","API key created successfully"),await this.persistJobSnapshot(a,{forcePreview:!0}),this.setAccountStep(b,"saving_connection","Saving CodeBuddy CN connection"),await this.persistJobSnapshot(a,{forcePreview:!0});let{connection:G}=await this.saveConnection({apiKey:F,phone:b.phone,region:b.region,fiveSimOrderId:f,account:b});await aF(()=>e.finishOrder(f)),this.finalizeAccount(b,"success",{connectionId:G.id,step:"connection_saved",message:`CodeBuddy CN connection saved (phone: ${b.phone})`}),b.runtimeSession=null,await aE(c,a),await this.persistJobSnapshot(a,{forcePreview:!0})}catch(m){let g=m?.code===an,i=m?.code===al,j=m?.code===am,k=i||j;if(g){this.finalizeAccount(b,"failed_restricted",{error:`${m.message}. Use a different residential CN/HK proxy with concurrency 1.`,step:"failed_restricted",message:"Tencent restricted the post-OTP session; API-key capture was not attempted"}),await aF(()=>e.finishOrder(f)),b.runtimeSession=null,await aE(c,a),await this.persistJobSnapshot(a,{forcePreview:!0});return}let l=i?`${m.message}. Check the CodeBuddy keys page before creating another key.`:m.message;if(k||(b.manualSession={context:c,page:d,opened:!1,openedAt:null},b.manualSession),this.finalizeAccount(b,"needs_manual",{error:`Registration succeeded but API key capture failed: ${l}`,step:i?"api_key_outcome_unknown":j?"api_key_retry_stopped":"awaiting_manual",message:i?"Registration done; API key request outcome is unknown. Check existing keys before retrying.":j?"Registration done; API key request was rate limited. Automatic POST retries stopped.":h?`API key captured; retrying local connection save without creating another key: ${m.message}`:`Registration done, API key capture failed: ${m.message}`}),await aF(()=>e.finishOrder(f)),await this.persistJobSnapshot(a,{forcePreview:!0}),k){b.runtimeSession=null,await aE(c,a);return}await this.runCnManualFollowup(a,b,b.workerId,c,d,e,f,h)}}async runCnManualFollowup(a,b,c,d,e,f,g,h=null){let i=(async()=>{let c=async()=>{let c=b.manualSession,e=c?.context||d,f=c?.headedBrowser||null;await aE(e,a),f&&await (0,ai.forceCloseBrowser)(f).catch(()=>null)};try{this.setAccountStep(b,"manual_waiting","Waiting for operator to complete in headed browser"),await this.persistJobSnapshot(a,{forcePreview:!0});let c=at()?18e4:48e4,d=Date.now()+c,f="string"==typeof h&&h?h:null,i=`zevai-router-manual-${b.workerId||"account"}-${Date.now()}`;for(;!f&&Date.now()<d&&!a.cancelRequested;){await new Promise(a=>setTimeout(a,1e4));try{if(!e.url().includes("codebuddy.cn"))continue;let a=await ax(e.evaluate(async({keyName:a,timeoutMs:b})=>{let c=new AbortController,d=setTimeout(()=>c.abort(),b);try{let b=window.location.hostname||"www.codebuddy.cn",d="www.codebuddy.cn"===b?window.location.origin:"https://www.codebuddy.cn",e=await fetch(`${d}/console/api/client/v1/api-keys`,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json, text/plain, */*","x-requested-with":"XMLHttpRequest","X-Domain":"www.codebuddy.cn","X-Product":"SaaS"},credentials:"include",signal:c.signal,body:JSON.stringify({name:a,expire_in_days:365,user_enterprise_id:"personal-edition-user-id"})}),f=await e.json().catch(()=>null);return{ok:e.ok,status:e.status,data:f}}catch(a){return{ok:!1,status:0,outcomeUnknown:!0,error:a?.message||String(a)}}finally{clearTimeout(d)}},{keyName:i,timeoutMs:6e4}),{timeoutMs:6e4,message:"Manual API key request timed out; creation outcome is unknown",code:al});if(a?.outcomeUnknown)throw Object.assign(Error(`Manual API key request lost its response; creation outcome is unknown: ${a.error||"network error"}`),{code:al});if(ay(a,"Manual API key request"),a?.ok){let b=a.data?.data||a.data;if((f=b?.apiKey||b?.key||b?.token||b?.secret||b?.api_key||("string"==typeof b?b:null))&&"string"==typeof f)break;throw Object.assign(Error("Manual API key response was successful but did not contain the key; creation outcome is unknown"),{code:al})}}catch(a){if(az(a))throw a}}if(a.cancelRequested){this.finalizeAccount(b,"cancelled",{error:"Job cancelled",step:"cancelled",message:"Job cancelled while waiting for manual completion"}),await this.persistJobSnapshot(a,{forcePreview:!0});return}if(!f)throw Error("Manual assist timed out — could not capture API key");this.setAccountStep(b,"saving_connection","Saving CodeBuddy CN connection (manual)"),await this.persistJobSnapshot(a,{forcePreview:!0});let{connection:j}=await this.saveConnection({apiKey:f,phone:b.phone,region:b.region,fiveSimOrderId:g,account:b});this.finalizeAccount(b,"success",{connectionId:j.id,step:"connection_saved",message:`CodeBuddy CN connection saved via manual assist (phone: ${b.phone||"N/A"})`}),await this.persistJobSnapshot(a,{forcePreview:!0})}catch(c){a.cancelRequested?this.finalizeAccount(b,"cancelled",{error:"Job cancelled",step:"cancelled",message:"Job cancelled while waiting for manual completion"}):az(c)?this.finalizeAccount(b,"needs_manual",{error:`${c.message}. Check existing CodeBuddy keys before retrying manually.`,step:c?.code===al?"api_key_outcome_unknown":"api_key_retry_stopped",message:"Manual API key POST retries stopped"}):this.finalizeAccount(b,"failed",{error:c.message||"Manual assist flow failed",step:"failed",message:c.message||"Manual assist flow failed"}),await this.persistJobSnapshot(a,{forcePreview:!0})}finally{await c(),b.manualSession=null,b.runtimeSession=null,a.manualFollowups.delete(i),await this.persistJobSnapshot(a,{forcePreview:!0})}})();a.manualFollowups.add(i)}async runWorker(a,b){if(!au(a))return super.runWorker(a,b);for(;!a.cancelRequested;){let c=this.dequeueAccount(a,b);if(!c)return;if(!a.browser)try{a.browser=await this.browserLauncher({...a,proxyUrls:c.proxyUrl?[c.proxyUrl]:a.proxyUrls})}catch(b){this.finalizeAccount(c,"failed",{error:b?.message||"Manual proxy browser launch failed",step:"failed",message:b?.message||"Manual proxy browser launch failed"}),await this.persistJobSnapshot(a,{forcePreview:!0});continue}try{await this.processAccount(a,c,b)}catch(b){"running"===c.status&&(this.finalizeAccount(c,"failed",{error:b?.message||"Unexpected manual proxy worker failure",step:"failed",message:b?.message||"Unexpected manual proxy worker failure"}),await this.persistJobSnapshot(a,{forcePreview:!0}))}finally{if(a.manualFollowups.size>0&&await Promise.allSettled([...a.manualFollowups]),a.browser){let b=a.browser;a.browser=null,await (0,ai.forceCloseBrowser)(b).catch(()=>null)}}}}shouldPrelaunchBrowser(a){return!au(a)}cancelJob(a){let b=this.jobs.get(a);if(!b)return null;for(let a of(b.cancelRequested=!0,b.accounts)){a.abortController&&!a.abortController.signal.aborted&&a.abortController.abort();let b=a.manualSession,c=a.runtimeSession,d=new Set([b?.context,c?.context].filter(Boolean)),e=new Set([b?.headedBrowser,b?.ownedBrowser].filter(Boolean));Promise.allSettled([...[...d].map(a=>aD(a)),...[...e].map(a=>(0,ai.forceCloseBrowser)(a))]),a.runtimeSession=null,a.manualSession=null,ar.has(a.status)&&this.finalizeAccount(a,"cancelled",{error:"Job cancelled",step:"cancelled",message:"Job cancelled by user"})}if(b.browser){let a=b.browser;b.browser=null,(0,ai.forceCloseBrowser)(a).catch(()=>null)}return aq.has(b.status)&&(b.status="cancelled",b.finishedAt=b.finishedAt||(0,i.kF)()),this.persistJobSnapshot(b,{forcePreview:!0}),aK(b)}}function aI({apiKey:a,proxyOptions:b}){return new y({apiKey:a,proxyOptions:b})}function aJ(a=[]){let b={total:a.length,queued:0,running:0,completed:0,success:0,failed:0,needs_manual:0,cancelled:0};for(let c of a){let a=c.status||"queued";"success"===a?(b.success+=1,b.completed+=1):a.startsWith("failed")?(b.failed+=1,b.completed+=1):"needs_manual"===a?b.needs_manual+=1:"cancelled"===a?(b.cancelled+=1,b.completed+=1):"running"===a?b.running+=1:b.queued+=1}return b}function aK(a,b={}){return a?{jobId:a.jobId,status:a.status,summary:aJ(a.accounts),concurrency:a.concurrency,proxyPoolMode:a.proxyPoolMode,region:a.region,createdAt:a.createdAt,startedAt:a.startedAt,finishedAt:a.finishedAt,error:(0,m.yr)(a.error),cancelRequested:a.cancelRequested,accounts:(a.accounts||[]).map(a=>({line:a.line,region:a.region,phone:a.phone,fiveSimOrderId:a.fiveSimOrderId,proxyUrl:a.proxyUrl?function(a){if(!a)return null;let b=String(a),c=()=>b.length>20?`${b.slice(0,10)}***${b.slice(-10)}`:"***";try{let a=new URL(b);if(!/^(https?|socks4|socks5):$/.test(a.protocol))return c();return(0,m.Eq)(b)}catch{return c()}}(a.proxyUrl):null,egressIp:a.egressIp||null,proxyTimezone:a.proxyTimezone||null,proxyLocale:a.proxyLocale||null,status:a.status,error:(0,m.yr)(a.error),connectionId:a.connectionId,workerId:a.workerId,manualSessionAvailable:!!a.manualSession,currentStep:a.currentStep,updatedAt:a.updatedAt,logs:(a.logs||[]).map(a=>({...a,message:(0,m.yr)(a.message)}))})),preview:void 0!==b.preview?b.preview:a.lastPreview||null,...b}:null}function aL(){return(!globalThis.__codeBuddyCnBulkImportSingleton&&(globalThis.__codeBuddyCnBulkImportSingleton={manager:new aH}),globalThis.__codeBuddyCnBulkImportSingleton).manager}}};