zevairouter 1.0.154 → 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 (1857) hide show
  1. package/CHANGELOG.md +29 -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 +9 -9
  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/server/app/(dashboard)/dashboard/automation/page.js +2 -2
  11. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/automation/page.js.nft.json +1 -1
  12. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/automation/page_client-reference-manifest.js +1 -1
  13. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page.js +1 -1
  14. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page.js.nft.json +1 -1
  15. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
  16. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js +2 -2
  17. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js.nft.json +1 -1
  18. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page_client-reference-manifest.js +1 -1
  19. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js +2 -2
  20. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
  21. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  22. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page.js +1 -1
  23. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page.js.nft.json +1 -1
  24. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  25. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page.js +2 -2
  26. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page.js.nft.json +1 -1
  27. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
  28. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/context/page.js +2 -2
  29. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/context/page.js.nft.json +1 -1
  30. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/context/page_client-reference-manifest.js +1 -1
  31. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js +1 -1
  32. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
  33. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  34. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js +2 -2
  35. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js.nft.json +1 -1
  36. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
  37. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js +1 -1
  38. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js.nft.json +1 -1
  39. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -1
  40. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js +2 -2
  41. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js.nft.json +1 -1
  42. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +1 -1
  43. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page.js +2 -2
  44. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page.js.nft.json +1 -1
  45. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +1 -1
  46. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page.js +1 -1
  47. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page.js.nft.json +1 -1
  48. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
  49. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js +1 -1
  50. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
  51. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  52. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/playground/page.js +1 -1
  53. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/playground/page.js.nft.json +1 -1
  54. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/playground/page_client-reference-manifest.js +1 -1
  55. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page.js +1 -1
  56. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page.js.nft.json +1 -1
  57. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  58. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js +2 -2
  59. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js.nft.json +1 -1
  60. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  61. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page.js +1 -1
  62. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page.js.nft.json +1 -1
  63. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  64. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page.js +1 -1
  65. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page.js.nft.json +1 -1
  66. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  67. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page.js +1 -1
  68. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page.js.nft.json +1 -1
  69. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
  70. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page.js +1 -1
  71. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page.js.nft.json +1 -1
  72. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page_client-reference-manifest.js +1 -1
  73. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page.js +1 -1
  74. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page.js.nft.json +1 -1
  75. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
  76. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/terminal/page.js +2 -2
  77. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/terminal/page.js.nft.json +1 -1
  78. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/terminal/page_client-reference-manifest.js +1 -1
  79. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page.js +1 -1
  80. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page.js.nft.json +1 -1
  81. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page_client-reference-manifest.js +1 -1
  82. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page.js +1 -1
  83. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page.js.nft.json +1 -1
  84. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  85. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page.js +2 -2
  86. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page.js.nft.json +1 -1
  87. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  88. package/cli/app/.next-cli-build/server/app/_global-error/page.js.nft.json +1 -1
  89. package/cli/app/.next-cli-build/server/app/_global-error/page_client-reference-manifest.js +1 -1
  90. package/cli/app/.next-cli-build/server/app/_global-error.html +1 -1
  91. package/cli/app/.next-cli-build/server/app/_global-error.rsc +1 -1
  92. package/cli/app/.next-cli-build/server/app/_global-error.segments/_full.segment.rsc +1 -1
  93. package/cli/app/.next-cli-build/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  94. package/cli/app/.next-cli-build/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  95. package/cli/app/.next-cli-build/server/app/_global-error.segments/_head.segment.rsc +1 -1
  96. package/cli/app/.next-cli-build/server/app/_global-error.segments/_index.segment.rsc +1 -1
  97. package/cli/app/.next-cli-build/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  98. package/cli/app/.next-cli-build/server/app/_not-found/page.js +1 -1
  99. package/cli/app/.next-cli-build/server/app/_not-found/page.js.nft.json +1 -1
  100. package/cli/app/.next-cli-build/server/app/_not-found/page_client-reference-manifest.js +1 -1
  101. package/cli/app/.next-cli-build/server/app/_not-found.html +1 -1
  102. package/cli/app/.next-cli-build/server/app/_not-found.rsc +3 -3
  103. package/cli/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +3 -3
  104. package/cli/app/.next-cli-build/server/app/_not-found.segments/_head.segment.rsc +1 -1
  105. package/cli/app/.next-cli-build/server/app/_not-found.segments/_index.segment.rsc +3 -3
  106. package/cli/app/.next-cli-build/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  107. package/cli/app/.next-cli-build/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  108. package/cli/app/.next-cli-build/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  109. package/cli/app/.next-cli-build/server/app/api/auth/login/route.js +1 -1
  110. package/cli/app/.next-cli-build/server/app/api/auth/login/route.js.nft.json +1 -1
  111. package/cli/app/.next-cli-build/server/app/api/auth/login/route_client-reference-manifest.js +1 -1
  112. package/cli/app/.next-cli-build/server/app/api/auth/logout/route.js +1 -1
  113. package/cli/app/.next-cli-build/server/app/api/auth/logout/route.js.nft.json +1 -1
  114. package/cli/app/.next-cli-build/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
  115. package/cli/app/.next-cli-build/server/app/api/auth/oidc/callback/route.js +1 -1
  116. package/cli/app/.next-cli-build/server/app/api/auth/oidc/callback/route.js.nft.json +1 -1
  117. package/cli/app/.next-cli-build/server/app/api/auth/oidc/callback/route_client-reference-manifest.js +1 -1
  118. package/cli/app/.next-cli-build/server/app/api/auth/oidc/start/route.js +1 -1
  119. package/cli/app/.next-cli-build/server/app/api/auth/oidc/start/route.js.nft.json +1 -1
  120. package/cli/app/.next-cli-build/server/app/api/auth/oidc/start/route_client-reference-manifest.js +1 -1
  121. package/cli/app/.next-cli-build/server/app/api/auth/oidc/test/route.js +1 -1
  122. package/cli/app/.next-cli-build/server/app/api/auth/oidc/test/route.js.nft.json +1 -1
  123. package/cli/app/.next-cli-build/server/app/api/auth/oidc/test/route_client-reference-manifest.js +1 -1
  124. package/cli/app/.next-cli-build/server/app/api/auth/status/route.js +1 -1
  125. package/cli/app/.next-cli-build/server/app/api/auth/status/route.js.nft.json +1 -1
  126. package/cli/app/.next-cli-build/server/app/api/auth/status/route_client-reference-manifest.js +1 -1
  127. package/cli/app/.next-cli-build/server/app/api/cache/stats/route.js +1 -1
  128. package/cli/app/.next-cli-build/server/app/api/cache/stats/route.js.nft.json +1 -1
  129. package/cli/app/.next-cli-build/server/app/api/cache/stats/route_client-reference-manifest.js +1 -1
  130. package/cli/app/.next-cli-build/server/app/api/changelog/route.js +1 -1
  131. package/cli/app/.next-cli-build/server/app/api/changelog/route.js.nft.json +1 -1
  132. package/cli/app/.next-cli-build/server/app/api/changelog/route_client-reference-manifest.js +1 -1
  133. package/cli/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js +1 -1
  134. package/cli/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js.nft.json +1 -1
  135. package/cli/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route_client-reference-manifest.js +1 -1
  136. package/cli/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js +1 -1
  137. package/cli/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js.nft.json +1 -1
  138. package/cli/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route_client-reference-manifest.js +1 -1
  139. package/cli/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js +1 -1
  140. package/cli/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js.nft.json +1 -1
  141. package/cli/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route_client-reference-manifest.js +1 -1
  142. package/cli/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route.js +1 -1
  143. package/cli/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route.js.nft.json +1 -1
  144. package/cli/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route_client-reference-manifest.js +1 -1
  145. package/cli/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js +1 -1
  146. package/cli/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js.nft.json +1 -1
  147. package/cli/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route_client-reference-manifest.js +1 -1
  148. package/cli/app/.next-cli-build/server/app/api/cli-tools/codex-gateway/accounts/route.js +1 -1
  149. package/cli/app/.next-cli-build/server/app/api/cli-tools/codex-gateway/accounts/route.js.nft.json +1 -1
  150. package/cli/app/.next-cli-build/server/app/api/cli-tools/codex-gateway/accounts/route_client-reference-manifest.js +1 -1
  151. package/cli/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js +1 -1
  152. package/cli/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js.nft.json +1 -1
  153. package/cli/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route_client-reference-manifest.js +1 -1
  154. package/cli/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js +1 -1
  155. package/cli/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js.nft.json +1 -1
  156. package/cli/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route_client-reference-manifest.js +1 -1
  157. package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js +1 -1
  158. package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js.nft.json +1 -1
  159. package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route_client-reference-manifest.js +1 -1
  160. package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js +1 -1
  161. package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js.nft.json +1 -1
  162. package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route_client-reference-manifest.js +1 -1
  163. package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js +1 -1
  164. package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js.nft.json +1 -1
  165. package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route_client-reference-manifest.js +1 -1
  166. package/cli/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js +1 -1
  167. package/cli/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js.nft.json +1 -1
  168. package/cli/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route_client-reference-manifest.js +1 -1
  169. package/cli/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js +1 -1
  170. package/cli/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js.nft.json +1 -1
  171. package/cli/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route_client-reference-manifest.js +1 -1
  172. package/cli/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js +1 -1
  173. package/cli/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js.nft.json +1 -1
  174. package/cli/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route_client-reference-manifest.js +1 -1
  175. package/cli/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js +1 -1
  176. package/cli/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js.nft.json +1 -1
  177. package/cli/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route_client-reference-manifest.js +1 -1
  178. package/cli/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js +1 -1
  179. package/cli/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js.nft.json +1 -1
  180. package/cli/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route_client-reference-manifest.js +1 -1
  181. package/cli/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js +1 -1
  182. package/cli/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js.nft.json +1 -1
  183. package/cli/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route_client-reference-manifest.js +1 -1
  184. package/cli/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js +1 -1
  185. package/cli/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js.nft.json +1 -1
  186. package/cli/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route_client-reference-manifest.js +1 -1
  187. package/cli/app/.next-cli-build/server/app/api/combos/[id]/route.js +1 -1
  188. package/cli/app/.next-cli-build/server/app/api/combos/[id]/route.js.nft.json +1 -1
  189. package/cli/app/.next-cli-build/server/app/api/combos/[id]/route_client-reference-manifest.js +1 -1
  190. package/cli/app/.next-cli-build/server/app/api/combos/route.js +1 -1
  191. package/cli/app/.next-cli-build/server/app/api/combos/route.js.nft.json +1 -1
  192. package/cli/app/.next-cli-build/server/app/api/combos/route_client-reference-manifest.js +1 -1
  193. package/cli/app/.next-cli-build/server/app/api/context/[id]/route.js +1 -1
  194. package/cli/app/.next-cli-build/server/app/api/context/[id]/route.js.nft.json +1 -1
  195. package/cli/app/.next-cli-build/server/app/api/context/[id]/route_client-reference-manifest.js +1 -1
  196. package/cli/app/.next-cli-build/server/app/api/context/bulk/route.js +1 -1
  197. package/cli/app/.next-cli-build/server/app/api/context/bulk/route.js.nft.json +1 -1
  198. package/cli/app/.next-cli-build/server/app/api/context/bulk/route_client-reference-manifest.js +1 -1
  199. package/cli/app/.next-cli-build/server/app/api/context/route.js +1 -1
  200. package/cli/app/.next-cli-build/server/app/api/context/route.js.nft.json +1 -1
  201. package/cli/app/.next-cli-build/server/app/api/context/route_client-reference-manifest.js +1 -1
  202. package/cli/app/.next-cli-build/server/app/api/dashboard/chat/completions/route.js +1 -1
  203. package/cli/app/.next-cli-build/server/app/api/dashboard/chat/completions/route.js.nft.json +1 -1
  204. package/cli/app/.next-cli-build/server/app/api/dashboard/chat/completions/route_client-reference-manifest.js +1 -1
  205. package/cli/app/.next-cli-build/server/app/api/dashboard/cli-tools/keys/route.js +1 -1
  206. package/cli/app/.next-cli-build/server/app/api/dashboard/cli-tools/keys/route.js.nft.json +1 -1
  207. package/cli/app/.next-cli-build/server/app/api/dashboard/cli-tools/keys/route_client-reference-manifest.js +1 -1
  208. package/cli/app/.next-cli-build/server/app/api/dashboard/media/[operation]/route.js +1 -1
  209. package/cli/app/.next-cli-build/server/app/api/dashboard/media/[operation]/route.js.nft.json +1 -1
  210. package/cli/app/.next-cli-build/server/app/api/dashboard/media/[operation]/route_client-reference-manifest.js +1 -1
  211. package/cli/app/.next-cli-build/server/app/api/headroom/extras/route.js +1 -1
  212. package/cli/app/.next-cli-build/server/app/api/headroom/extras/route.js.nft.json +1 -1
  213. package/cli/app/.next-cli-build/server/app/api/headroom/extras/route_client-reference-manifest.js +1 -1
  214. package/cli/app/.next-cli-build/server/app/api/headroom/proxy/[...path]/route.js +1 -1
  215. package/cli/app/.next-cli-build/server/app/api/headroom/proxy/[...path]/route.js.nft.json +1 -1
  216. package/cli/app/.next-cli-build/server/app/api/headroom/proxy/[...path]/route_client-reference-manifest.js +1 -1
  217. package/cli/app/.next-cli-build/server/app/api/headroom/restart/route.js +1 -1
  218. package/cli/app/.next-cli-build/server/app/api/headroom/restart/route.js.nft.json +1 -1
  219. package/cli/app/.next-cli-build/server/app/api/headroom/restart/route_client-reference-manifest.js +1 -1
  220. package/cli/app/.next-cli-build/server/app/api/headroom/start/route.js +1 -1
  221. package/cli/app/.next-cli-build/server/app/api/headroom/start/route.js.nft.json +1 -1
  222. package/cli/app/.next-cli-build/server/app/api/headroom/start/route_client-reference-manifest.js +1 -1
  223. package/cli/app/.next-cli-build/server/app/api/headroom/status/route.js +1 -1
  224. package/cli/app/.next-cli-build/server/app/api/headroom/status/route.js.nft.json +1 -1
  225. package/cli/app/.next-cli-build/server/app/api/headroom/status/route_client-reference-manifest.js +1 -1
  226. package/cli/app/.next-cli-build/server/app/api/headroom/stop/route.js +1 -1
  227. package/cli/app/.next-cli-build/server/app/api/headroom/stop/route.js.nft.json +1 -1
  228. package/cli/app/.next-cli-build/server/app/api/headroom/stop/route_client-reference-manifest.js +1 -1
  229. package/cli/app/.next-cli-build/server/app/api/health/ready/route.js +1 -1
  230. package/cli/app/.next-cli-build/server/app/api/health/ready/route.js.nft.json +1 -1
  231. package/cli/app/.next-cli-build/server/app/api/health/ready/route_client-reference-manifest.js +1 -1
  232. package/cli/app/.next-cli-build/server/app/api/health/route.js +1 -1
  233. package/cli/app/.next-cli-build/server/app/api/health/route.js.nft.json +1 -1
  234. package/cli/app/.next-cli-build/server/app/api/health/route_client-reference-manifest.js +1 -1
  235. package/cli/app/.next-cli-build/server/app/api/init/route.js +1 -1
  236. package/cli/app/.next-cli-build/server/app/api/init/route.js.nft.json +1 -1
  237. package/cli/app/.next-cli-build/server/app/api/init/route_client-reference-manifest.js +1 -1
  238. package/cli/app/.next-cli-build/server/app/api/keys/[id]/rotate/route.js +1 -1
  239. package/cli/app/.next-cli-build/server/app/api/keys/[id]/rotate/route.js.nft.json +1 -1
  240. package/cli/app/.next-cli-build/server/app/api/keys/[id]/rotate/route_client-reference-manifest.js +1 -1
  241. package/cli/app/.next-cli-build/server/app/api/keys/[id]/route.js +1 -1
  242. package/cli/app/.next-cli-build/server/app/api/keys/[id]/route.js.nft.json +1 -1
  243. package/cli/app/.next-cli-build/server/app/api/keys/[id]/route_client-reference-manifest.js +1 -1
  244. package/cli/app/.next-cli-build/server/app/api/keys/route.js +1 -1
  245. package/cli/app/.next-cli-build/server/app/api/keys/route.js.nft.json +1 -1
  246. package/cli/app/.next-cli-build/server/app/api/keys/route_client-reference-manifest.js +1 -1
  247. package/cli/app/.next-cli-build/server/app/api/locale/route.js +1 -1
  248. package/cli/app/.next-cli-build/server/app/api/locale/route.js.nft.json +1 -1
  249. package/cli/app/.next-cli-build/server/app/api/locale/route_client-reference-manifest.js +1 -1
  250. package/cli/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route.js +1 -1
  251. package/cli/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route.js.nft.json +1 -1
  252. package/cli/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route_client-reference-manifest.js +1 -1
  253. package/cli/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route.js +1 -1
  254. package/cli/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route.js.nft.json +1 -1
  255. package/cli/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route_client-reference-manifest.js +1 -1
  256. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js +1 -1
  257. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js.nft.json +1 -1
  258. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route_client-reference-manifest.js +1 -1
  259. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js +1 -1
  260. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js.nft.json +1 -1
  261. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route_client-reference-manifest.js +1 -1
  262. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js +1 -1
  263. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js.nft.json +1 -1
  264. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route_client-reference-manifest.js +1 -1
  265. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js +1 -1
  266. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js.nft.json +1 -1
  267. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route_client-reference-manifest.js +1 -1
  268. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/voices/route.js +1 -1
  269. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/voices/route.js.nft.json +1 -1
  270. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/voices/route_client-reference-manifest.js +1 -1
  271. package/cli/app/.next-cli-build/server/app/api/metrics/route.js +1 -1
  272. package/cli/app/.next-cli-build/server/app/api/metrics/route.js.nft.json +1 -1
  273. package/cli/app/.next-cli-build/server/app/api/metrics/route_client-reference-manifest.js +1 -1
  274. package/cli/app/.next-cli-build/server/app/api/models/alias/route.js +1 -1
  275. package/cli/app/.next-cli-build/server/app/api/models/alias/route.js.nft.json +1 -1
  276. package/cli/app/.next-cli-build/server/app/api/models/alias/route_client-reference-manifest.js +1 -1
  277. package/cli/app/.next-cli-build/server/app/api/models/availability/route.js +1 -1
  278. package/cli/app/.next-cli-build/server/app/api/models/availability/route.js.nft.json +1 -1
  279. package/cli/app/.next-cli-build/server/app/api/models/availability/route_client-reference-manifest.js +1 -1
  280. package/cli/app/.next-cli-build/server/app/api/models/custom/route.js +1 -1
  281. package/cli/app/.next-cli-build/server/app/api/models/custom/route.js.nft.json +1 -1
  282. package/cli/app/.next-cli-build/server/app/api/models/custom/route_client-reference-manifest.js +1 -1
  283. package/cli/app/.next-cli-build/server/app/api/models/disabled/route.js +1 -1
  284. package/cli/app/.next-cli-build/server/app/api/models/disabled/route.js.nft.json +1 -1
  285. package/cli/app/.next-cli-build/server/app/api/models/disabled/route_client-reference-manifest.js +1 -1
  286. package/cli/app/.next-cli-build/server/app/api/models/route.js +1 -1
  287. package/cli/app/.next-cli-build/server/app/api/models/route.js.nft.json +1 -1
  288. package/cli/app/.next-cli-build/server/app/api/models/route_client-reference-manifest.js +1 -1
  289. package/cli/app/.next-cli-build/server/app/api/models/test/route.js +1 -1
  290. package/cli/app/.next-cli-build/server/app/api/models/test/route.js.nft.json +1 -1
  291. package/cli/app/.next-cli-build/server/app/api/models/test/route_client-reference-manifest.js +1 -1
  292. package/cli/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js +1 -1
  293. package/cli/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js.nft.json +1 -1
  294. package/cli/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route_client-reference-manifest.js +1 -1
  295. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/cancel/route.js +1 -1
  296. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
  297. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/cancel/route_client-reference-manifest.js +1 -1
  298. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/manual/[workerId]/route.js +1 -1
  299. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
  300. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/manual/[workerId]/route_client-reference-manifest.js +1 -1
  301. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/route.js +1 -1
  302. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/route.js.nft.json +1 -1
  303. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/route_client-reference-manifest.js +1 -1
  304. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/latest/route.js +1 -1
  305. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/latest/route.js.nft.json +1 -1
  306. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/latest/route_client-reference-manifest.js +1 -1
  307. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/route.js +1 -1
  308. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/route.js.nft.json +1 -1
  309. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/route_client-reference-manifest.js +1 -1
  310. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/cancel/route.js +1 -1
  311. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
  312. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/cancel/route_client-reference-manifest.js +1 -1
  313. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/manual/[workerId]/route.js +1 -1
  314. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
  315. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/manual/[workerId]/route_client-reference-manifest.js +1 -1
  316. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/route.js +1 -1
  317. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/route.js.nft.json +1 -1
  318. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/route_client-reference-manifest.js +1 -1
  319. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/latest/route.js +1 -1
  320. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/latest/route.js.nft.json +1 -1
  321. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/latest/route_client-reference-manifest.js +1 -1
  322. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/route.js +1 -1
  323. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/route.js.nft.json +1 -1
  324. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/route_client-reference-manifest.js +1 -1
  325. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/cancel/route.js +1 -1
  326. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
  327. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/cancel/route_client-reference-manifest.js +1 -1
  328. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/manual/[workerId]/route.js +1 -1
  329. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
  330. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/manual/[workerId]/route_client-reference-manifest.js +1 -1
  331. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/route.js +1 -1
  332. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/route.js.nft.json +1 -1
  333. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/route_client-reference-manifest.js +1 -1
  334. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/latest/route.js +1 -1
  335. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/latest/route.js.nft.json +1 -1
  336. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/latest/route_client-reference-manifest.js +1 -1
  337. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/route.js +1 -1
  338. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/route.js.nft.json +1 -1
  339. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/route_client-reference-manifest.js +1 -1
  340. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-token/route.js +1 -1
  341. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-token/route.js.nft.json +1 -1
  342. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-token/route_client-reference-manifest.js +1 -1
  343. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/quota-cookie/route.js +1 -1
  344. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/quota-cookie/route.js.nft.json +1 -1
  345. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/quota-cookie/route_client-reference-manifest.js +1 -1
  346. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/cancel/route.js +1 -1
  347. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
  348. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/cancel/route_client-reference-manifest.js +1 -1
  349. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/manual/[workerId]/route.js +1 -1
  350. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
  351. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/manual/[workerId]/route_client-reference-manifest.js +1 -1
  352. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/route.js +1 -1
  353. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/route.js.nft.json +1 -1
  354. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/route_client-reference-manifest.js +1 -1
  355. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/latest/route.js +1 -1
  356. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/latest/route.js.nft.json +1 -1
  357. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/latest/route_client-reference-manifest.js +1 -1
  358. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/route.js +1 -1
  359. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/route.js.nft.json +1 -1
  360. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/route_client-reference-manifest.js +1 -1
  361. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-token/route.js +1 -1
  362. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-token/route.js.nft.json +1 -1
  363. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-token/route_client-reference-manifest.js +1 -1
  364. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/quota-cookie/route.js +1 -1
  365. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/quota-cookie/route.js.nft.json +1 -1
  366. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/quota-cookie/route_client-reference-manifest.js +1 -1
  367. package/cli/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js +1 -1
  368. package/cli/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js.nft.json +1 -1
  369. package/cli/app/.next-cli-build/server/app/api/oauth/codex/import-token/route_client-reference-manifest.js +1 -1
  370. package/cli/app/.next-cli-build/server/app/api/oauth/cursor/auto-import/route.js +1 -1
  371. package/cli/app/.next-cli-build/server/app/api/oauth/cursor/auto-import/route.js.nft.json +1 -1
  372. package/cli/app/.next-cli-build/server/app/api/oauth/cursor/auto-import/route_client-reference-manifest.js +1 -1
  373. package/cli/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js +1 -1
  374. package/cli/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js.nft.json +1 -1
  375. package/cli/app/.next-cli-build/server/app/api/oauth/cursor/import/route_client-reference-manifest.js +1 -1
  376. package/cli/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js +1 -1
  377. package/cli/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js.nft.json +1 -1
  378. package/cli/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route_client-reference-manifest.js +1 -1
  379. package/cli/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js +1 -1
  380. package/cli/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js.nft.json +1 -1
  381. package/cli/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route_client-reference-manifest.js +1 -1
  382. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/auto-import/route.js +1 -1
  383. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/auto-import/route.js.nft.json +1 -1
  384. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/auto-import/route_client-reference-manifest.js +1 -1
  385. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/cancel/route.js +1 -1
  386. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
  387. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/cancel/route_client-reference-manifest.js +1 -1
  388. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/manual/[workerId]/route.js +1 -1
  389. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
  390. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/manual/[workerId]/route_client-reference-manifest.js +1 -1
  391. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/route.js +1 -1
  392. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/route.js.nft.json +1 -1
  393. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/route_client-reference-manifest.js +1 -1
  394. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/latest/route.js +1 -1
  395. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/latest/route.js.nft.json +1 -1
  396. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/latest/route_client-reference-manifest.js +1 -1
  397. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/route.js +1 -1
  398. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/route.js.nft.json +1 -1
  399. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/route_client-reference-manifest.js +1 -1
  400. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js +1 -1
  401. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js.nft.json +1 -1
  402. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/import/route_client-reference-manifest.js +1 -1
  403. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/social-authorize/route.js +1 -1
  404. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/social-authorize/route.js.nft.json +1 -1
  405. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/social-authorize/route_client-reference-manifest.js +1 -1
  406. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js +1 -1
  407. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js.nft.json +1 -1
  408. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route_client-reference-manifest.js +1 -1
  409. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/cancel/route.js +1 -1
  410. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
  411. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/cancel/route_client-reference-manifest.js +1 -1
  412. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/manual/[workerId]/route.js +1 -1
  413. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
  414. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/manual/[workerId]/route_client-reference-manifest.js +1 -1
  415. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/route.js +1 -1
  416. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/route.js.nft.json +1 -1
  417. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/route_client-reference-manifest.js +1 -1
  418. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/latest/route.js +1 -1
  419. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/latest/route.js.nft.json +1 -1
  420. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/latest/route_client-reference-manifest.js +1 -1
  421. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/route.js +1 -1
  422. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/route.js.nft.json +1 -1
  423. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/route_client-reference-manifest.js +1 -1
  424. package/cli/app/.next-cli-build/server/app/api/pricing/route.js +1 -1
  425. package/cli/app/.next-cli-build/server/app/api/pricing/route.js.nft.json +1 -1
  426. package/cli/app/.next-cli-build/server/app/api/pricing/route_client-reference-manifest.js +1 -1
  427. package/cli/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js +1 -1
  428. package/cli/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js.nft.json +1 -1
  429. package/cli/app/.next-cli-build/server/app/api/provider-nodes/[id]/route_client-reference-manifest.js +1 -1
  430. package/cli/app/.next-cli-build/server/app/api/provider-nodes/route.js +1 -1
  431. package/cli/app/.next-cli-build/server/app/api/provider-nodes/route.js.nft.json +1 -1
  432. package/cli/app/.next-cli-build/server/app/api/provider-nodes/route_client-reference-manifest.js +1 -1
  433. package/cli/app/.next-cli-build/server/app/api/provider-nodes/validate/route.js +1 -1
  434. package/cli/app/.next-cli-build/server/app/api/provider-nodes/validate/route.js.nft.json +1 -1
  435. package/cli/app/.next-cli-build/server/app/api/provider-nodes/validate/route_client-reference-manifest.js +1 -1
  436. package/cli/app/.next-cli-build/server/app/api/providers/[id]/models/route.js +1 -1
  437. package/cli/app/.next-cli-build/server/app/api/providers/[id]/models/route.js.nft.json +1 -1
  438. package/cli/app/.next-cli-build/server/app/api/providers/[id]/models/route_client-reference-manifest.js +1 -1
  439. package/cli/app/.next-cli-build/server/app/api/providers/[id]/route.js +1 -1
  440. package/cli/app/.next-cli-build/server/app/api/providers/[id]/route.js.nft.json +1 -1
  441. package/cli/app/.next-cli-build/server/app/api/providers/[id]/route_client-reference-manifest.js +1 -1
  442. package/cli/app/.next-cli-build/server/app/api/providers/[id]/test/route.js +1 -1
  443. package/cli/app/.next-cli-build/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
  444. package/cli/app/.next-cli-build/server/app/api/providers/[id]/test/route_client-reference-manifest.js +1 -1
  445. package/cli/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js +1 -1
  446. package/cli/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js.nft.json +1 -1
  447. package/cli/app/.next-cli-build/server/app/api/providers/[id]/test-models/route_client-reference-manifest.js +1 -1
  448. package/cli/app/.next-cli-build/server/app/api/providers/bulk-delete/route.js +1 -1
  449. package/cli/app/.next-cli-build/server/app/api/providers/bulk-delete/route.js.nft.json +1 -1
  450. package/cli/app/.next-cli-build/server/app/api/providers/bulk-delete/route_client-reference-manifest.js +1 -1
  451. package/cli/app/.next-cli-build/server/app/api/providers/client/route.js +1 -1
  452. package/cli/app/.next-cli-build/server/app/api/providers/client/route.js.nft.json +1 -1
  453. package/cli/app/.next-cli-build/server/app/api/providers/client/route_client-reference-manifest.js +1 -1
  454. package/cli/app/.next-cli-build/server/app/api/providers/kilo/free-models/route.js +1 -1
  455. package/cli/app/.next-cli-build/server/app/api/providers/kilo/free-models/route.js.nft.json +1 -1
  456. package/cli/app/.next-cli-build/server/app/api/providers/kilo/free-models/route_client-reference-manifest.js +1 -1
  457. package/cli/app/.next-cli-build/server/app/api/providers/route.js +1 -1
  458. package/cli/app/.next-cli-build/server/app/api/providers/route.js.nft.json +1 -1
  459. package/cli/app/.next-cli-build/server/app/api/providers/route_client-reference-manifest.js +1 -1
  460. package/cli/app/.next-cli-build/server/app/api/providers/suggested-models/route.js +1 -1
  461. package/cli/app/.next-cli-build/server/app/api/providers/suggested-models/route.js.nft.json +1 -1
  462. package/cli/app/.next-cli-build/server/app/api/providers/suggested-models/route_client-reference-manifest.js +1 -1
  463. package/cli/app/.next-cli-build/server/app/api/providers/test-batch/route.js +1 -1
  464. package/cli/app/.next-cli-build/server/app/api/providers/test-batch/route.js.nft.json +1 -1
  465. package/cli/app/.next-cli-build/server/app/api/providers/test-batch/route_client-reference-manifest.js +1 -1
  466. package/cli/app/.next-cli-build/server/app/api/providers/validate/route.js +1 -1
  467. package/cli/app/.next-cli-build/server/app/api/providers/validate/route.js.nft.json +1 -1
  468. package/cli/app/.next-cli-build/server/app/api/providers/validate/route_client-reference-manifest.js +1 -1
  469. package/cli/app/.next-cli-build/server/app/api/proxy-pools/[id]/route.js +1 -1
  470. package/cli/app/.next-cli-build/server/app/api/proxy-pools/[id]/route.js.nft.json +1 -1
  471. package/cli/app/.next-cli-build/server/app/api/proxy-pools/[id]/route_client-reference-manifest.js +1 -1
  472. package/cli/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js +1 -1
  473. package/cli/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js.nft.json +1 -1
  474. package/cli/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route_client-reference-manifest.js +1 -1
  475. package/cli/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route.js +1 -1
  476. package/cli/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route.js.nft.json +1 -1
  477. package/cli/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route_client-reference-manifest.js +1 -1
  478. package/cli/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route.js +1 -1
  479. package/cli/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route.js.nft.json +1 -1
  480. package/cli/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route_client-reference-manifest.js +1 -1
  481. package/cli/app/.next-cli-build/server/app/api/proxy-pools/route.js +1 -1
  482. package/cli/app/.next-cli-build/server/app/api/proxy-pools/route.js.nft.json +1 -1
  483. package/cli/app/.next-cli-build/server/app/api/proxy-pools/route_client-reference-manifest.js +1 -1
  484. package/cli/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js +1 -1
  485. package/cli/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js.nft.json +1 -1
  486. package/cli/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route_client-reference-manifest.js +1 -1
  487. package/cli/app/.next-cli-build/server/app/api/pxpipe/health/route.js +1 -1
  488. package/cli/app/.next-cli-build/server/app/api/pxpipe/health/route.js.nft.json +1 -1
  489. package/cli/app/.next-cli-build/server/app/api/pxpipe/health/route_client-reference-manifest.js +1 -1
  490. package/cli/app/.next-cli-build/server/app/api/pxpipe/install/route.js +1 -1
  491. package/cli/app/.next-cli-build/server/app/api/pxpipe/install/route.js.nft.json +1 -1
  492. package/cli/app/.next-cli-build/server/app/api/pxpipe/install/route_client-reference-manifest.js +1 -1
  493. package/cli/app/.next-cli-build/server/app/api/pxpipe/restart/route.js +1 -1
  494. package/cli/app/.next-cli-build/server/app/api/pxpipe/restart/route.js.nft.json +1 -1
  495. package/cli/app/.next-cli-build/server/app/api/pxpipe/restart/route_client-reference-manifest.js +1 -1
  496. package/cli/app/.next-cli-build/server/app/api/pxpipe/start/route.js +1 -1
  497. package/cli/app/.next-cli-build/server/app/api/pxpipe/start/route.js.nft.json +1 -1
  498. package/cli/app/.next-cli-build/server/app/api/pxpipe/start/route_client-reference-manifest.js +1 -1
  499. package/cli/app/.next-cli-build/server/app/api/pxpipe/stats/route.js +1 -1
  500. package/cli/app/.next-cli-build/server/app/api/pxpipe/stats/route.js.nft.json +1 -1
  501. package/cli/app/.next-cli-build/server/app/api/pxpipe/stats/route_client-reference-manifest.js +1 -1
  502. package/cli/app/.next-cli-build/server/app/api/pxpipe/status/route.js +1 -1
  503. package/cli/app/.next-cli-build/server/app/api/pxpipe/status/route.js.nft.json +1 -1
  504. package/cli/app/.next-cli-build/server/app/api/pxpipe/status/route_client-reference-manifest.js +1 -1
  505. package/cli/app/.next-cli-build/server/app/api/pxpipe/stop/route.js +1 -1
  506. package/cli/app/.next-cli-build/server/app/api/pxpipe/stop/route.js.nft.json +1 -1
  507. package/cli/app/.next-cli-build/server/app/api/pxpipe/stop/route_client-reference-manifest.js +1 -1
  508. package/cli/app/.next-cli-build/server/app/api/settings/database/route.js +1 -1
  509. package/cli/app/.next-cli-build/server/app/api/settings/database/route.js.nft.json +1 -1
  510. package/cli/app/.next-cli-build/server/app/api/settings/database/route_client-reference-manifest.js +1 -1
  511. package/cli/app/.next-cli-build/server/app/api/settings/proxy-test/route.js +1 -1
  512. package/cli/app/.next-cli-build/server/app/api/settings/proxy-test/route.js.nft.json +1 -1
  513. package/cli/app/.next-cli-build/server/app/api/settings/proxy-test/route_client-reference-manifest.js +1 -1
  514. package/cli/app/.next-cli-build/server/app/api/settings/require-login/route.js +1 -1
  515. package/cli/app/.next-cli-build/server/app/api/settings/require-login/route.js.nft.json +1 -1
  516. package/cli/app/.next-cli-build/server/app/api/settings/require-login/route_client-reference-manifest.js +1 -1
  517. package/cli/app/.next-cli-build/server/app/api/settings/route.js +1 -1
  518. package/cli/app/.next-cli-build/server/app/api/settings/route.js.nft.json +1 -1
  519. package/cli/app/.next-cli-build/server/app/api/settings/route_client-reference-manifest.js +1 -1
  520. package/cli/app/.next-cli-build/server/app/api/shutdown/route.js +1 -1
  521. package/cli/app/.next-cli-build/server/app/api/shutdown/route.js.nft.json +1 -1
  522. package/cli/app/.next-cli-build/server/app/api/shutdown/route_client-reference-manifest.js +1 -1
  523. package/cli/app/.next-cli-build/server/app/api/tags/route.js +1 -1
  524. package/cli/app/.next-cli-build/server/app/api/tags/route.js.nft.json +1 -1
  525. package/cli/app/.next-cli-build/server/app/api/tags/route_client-reference-manifest.js +1 -1
  526. package/cli/app/.next-cli-build/server/app/api/terminal/auth/setup/route.js +1 -1
  527. package/cli/app/.next-cli-build/server/app/api/terminal/auth/setup/route.js.nft.json +1 -1
  528. package/cli/app/.next-cli-build/server/app/api/terminal/auth/setup/route_client-reference-manifest.js +1 -1
  529. package/cli/app/.next-cli-build/server/app/api/terminal/auth/status/route.js +1 -1
  530. package/cli/app/.next-cli-build/server/app/api/terminal/auth/status/route.js.nft.json +1 -1
  531. package/cli/app/.next-cli-build/server/app/api/terminal/auth/status/route_client-reference-manifest.js +1 -1
  532. package/cli/app/.next-cli-build/server/app/api/terminal/auth/unlock/route.js +1 -1
  533. package/cli/app/.next-cli-build/server/app/api/terminal/auth/unlock/route.js.nft.json +1 -1
  534. package/cli/app/.next-cli-build/server/app/api/terminal/auth/unlock/route_client-reference-manifest.js +1 -1
  535. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/input/route.js +1 -1
  536. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/input/route.js.nft.json +1 -1
  537. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/input/route_client-reference-manifest.js +1 -1
  538. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/resize/route.js +1 -1
  539. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/resize/route.js.nft.json +1 -1
  540. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/resize/route_client-reference-manifest.js +1 -1
  541. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/route.js +1 -1
  542. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/route.js.nft.json +1 -1
  543. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/route_client-reference-manifest.js +1 -1
  544. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/stream/route.js +1 -1
  545. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/stream/route.js.nft.json +1 -1
  546. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/stream/route_client-reference-manifest.js +1 -1
  547. package/cli/app/.next-cli-build/server/app/api/terminal/session/route.js +1 -1
  548. package/cli/app/.next-cli-build/server/app/api/terminal/session/route.js.nft.json +1 -1
  549. package/cli/app/.next-cli-build/server/app/api/terminal/session/route_client-reference-manifest.js +1 -1
  550. package/cli/app/.next-cli-build/server/app/api/translator/console-logs/route.js +1 -1
  551. package/cli/app/.next-cli-build/server/app/api/translator/console-logs/route.js.nft.json +1 -1
  552. package/cli/app/.next-cli-build/server/app/api/translator/console-logs/route_client-reference-manifest.js +1 -1
  553. package/cli/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js +2 -2
  554. package/cli/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js.nft.json +1 -1
  555. package/cli/app/.next-cli-build/server/app/api/translator/console-logs/stream/route_client-reference-manifest.js +1 -1
  556. package/cli/app/.next-cli-build/server/app/api/translator/load/route.js +1 -1
  557. package/cli/app/.next-cli-build/server/app/api/translator/load/route.js.nft.json +1 -1
  558. package/cli/app/.next-cli-build/server/app/api/translator/load/route_client-reference-manifest.js +1 -1
  559. package/cli/app/.next-cli-build/server/app/api/translator/save/route.js +1 -1
  560. package/cli/app/.next-cli-build/server/app/api/translator/save/route.js.nft.json +1 -1
  561. package/cli/app/.next-cli-build/server/app/api/translator/save/route_client-reference-manifest.js +1 -1
  562. package/cli/app/.next-cli-build/server/app/api/translator/send/route.js +1 -1
  563. package/cli/app/.next-cli-build/server/app/api/translator/send/route.js.nft.json +1 -1
  564. package/cli/app/.next-cli-build/server/app/api/translator/send/route_client-reference-manifest.js +1 -1
  565. package/cli/app/.next-cli-build/server/app/api/translator/translate/route.js +1 -1
  566. package/cli/app/.next-cli-build/server/app/api/translator/translate/route.js.nft.json +1 -1
  567. package/cli/app/.next-cli-build/server/app/api/translator/translate/route_client-reference-manifest.js +1 -1
  568. package/cli/app/.next-cli-build/server/app/api/tunnel/disable/route.js +1 -1
  569. package/cli/app/.next-cli-build/server/app/api/tunnel/disable/route.js.nft.json +1 -1
  570. package/cli/app/.next-cli-build/server/app/api/tunnel/disable/route_client-reference-manifest.js +1 -1
  571. package/cli/app/.next-cli-build/server/app/api/tunnel/enable/route.js +1 -1
  572. package/cli/app/.next-cli-build/server/app/api/tunnel/enable/route.js.nft.json +1 -1
  573. package/cli/app/.next-cli-build/server/app/api/tunnel/enable/route_client-reference-manifest.js +1 -1
  574. package/cli/app/.next-cli-build/server/app/api/tunnel/status/route.js +1 -1
  575. package/cli/app/.next-cli-build/server/app/api/tunnel/status/route.js.nft.json +1 -1
  576. package/cli/app/.next-cli-build/server/app/api/tunnel/status/route_client-reference-manifest.js +1 -1
  577. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-check/route.js +1 -1
  578. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-check/route.js.nft.json +1 -1
  579. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-check/route_client-reference-manifest.js +1 -1
  580. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route.js +1 -1
  581. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route.js.nft.json +1 -1
  582. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route_client-reference-manifest.js +1 -1
  583. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route.js +1 -1
  584. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route.js.nft.json +1 -1
  585. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route_client-reference-manifest.js +1 -1
  586. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js +1 -1
  587. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js.nft.json +1 -1
  588. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route_client-reference-manifest.js +1 -1
  589. package/cli/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js +1 -1
  590. package/cli/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
  591. package/cli/app/.next-cli-build/server/app/api/usage/[connectionId]/route_client-reference-manifest.js +1 -1
  592. package/cli/app/.next-cli-build/server/app/api/usage/aggregate/route.js +1 -1
  593. package/cli/app/.next-cli-build/server/app/api/usage/aggregate/route.js.nft.json +1 -1
  594. package/cli/app/.next-cli-build/server/app/api/usage/aggregate/route_client-reference-manifest.js +1 -1
  595. package/cli/app/.next-cli-build/server/app/api/usage/chart/route.js +1 -1
  596. package/cli/app/.next-cli-build/server/app/api/usage/chart/route.js.nft.json +1 -1
  597. package/cli/app/.next-cli-build/server/app/api/usage/chart/route_client-reference-manifest.js +1 -1
  598. package/cli/app/.next-cli-build/server/app/api/usage/history/route.js +1 -1
  599. package/cli/app/.next-cli-build/server/app/api/usage/history/route.js.nft.json +1 -1
  600. package/cli/app/.next-cli-build/server/app/api/usage/history/route_client-reference-manifest.js +1 -1
  601. package/cli/app/.next-cli-build/server/app/api/usage/providers/route.js +1 -1
  602. package/cli/app/.next-cli-build/server/app/api/usage/providers/route.js.nft.json +1 -1
  603. package/cli/app/.next-cli-build/server/app/api/usage/providers/route_client-reference-manifest.js +1 -1
  604. package/cli/app/.next-cli-build/server/app/api/usage/request-details/route.js +1 -1
  605. package/cli/app/.next-cli-build/server/app/api/usage/request-details/route.js.nft.json +1 -1
  606. package/cli/app/.next-cli-build/server/app/api/usage/request-details/route_client-reference-manifest.js +1 -1
  607. package/cli/app/.next-cli-build/server/app/api/usage/request-logs/route.js +1 -1
  608. package/cli/app/.next-cli-build/server/app/api/usage/request-logs/route.js.nft.json +1 -1
  609. package/cli/app/.next-cli-build/server/app/api/usage/request-logs/route_client-reference-manifest.js +1 -1
  610. package/cli/app/.next-cli-build/server/app/api/usage/stats/route.js +1 -1
  611. package/cli/app/.next-cli-build/server/app/api/usage/stats/route.js.nft.json +1 -1
  612. package/cli/app/.next-cli-build/server/app/api/usage/stats/route_client-reference-manifest.js +1 -1
  613. package/cli/app/.next-cli-build/server/app/api/usage/stream/route.js +1 -1
  614. package/cli/app/.next-cli-build/server/app/api/usage/stream/route.js.nft.json +1 -1
  615. package/cli/app/.next-cli-build/server/app/api/usage/stream/route_client-reference-manifest.js +1 -1
  616. package/cli/app/.next-cli-build/server/app/api/v1/api/chat/route.js +1 -1
  617. package/cli/app/.next-cli-build/server/app/api/v1/api/chat/route.js.nft.json +1 -1
  618. package/cli/app/.next-cli-build/server/app/api/v1/api/chat/route_client-reference-manifest.js +1 -1
  619. package/cli/app/.next-cli-build/server/app/api/v1/audio/speech/route.js +1 -1
  620. package/cli/app/.next-cli-build/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
  621. package/cli/app/.next-cli-build/server/app/api/v1/audio/speech/route_client-reference-manifest.js +1 -1
  622. package/cli/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js +1 -1
  623. package/cli/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
  624. package/cli/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route_client-reference-manifest.js +1 -1
  625. package/cli/app/.next-cli-build/server/app/api/v1/audio/voices/route.js +1 -1
  626. package/cli/app/.next-cli-build/server/app/api/v1/audio/voices/route.js.nft.json +1 -1
  627. package/cli/app/.next-cli-build/server/app/api/v1/audio/voices/route_client-reference-manifest.js +1 -1
  628. package/cli/app/.next-cli-build/server/app/api/v1/chat/completions/route.js +1 -1
  629. package/cli/app/.next-cli-build/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
  630. package/cli/app/.next-cli-build/server/app/api/v1/chat/completions/route_client-reference-manifest.js +1 -1
  631. package/cli/app/.next-cli-build/server/app/api/v1/embeddings/route.js +1 -1
  632. package/cli/app/.next-cli-build/server/app/api/v1/embeddings/route.js.nft.json +1 -1
  633. package/cli/app/.next-cli-build/server/app/api/v1/embeddings/route_client-reference-manifest.js +1 -1
  634. package/cli/app/.next-cli-build/server/app/api/v1/images/generations/route.js +1 -1
  635. package/cli/app/.next-cli-build/server/app/api/v1/images/generations/route.js.nft.json +1 -1
  636. package/cli/app/.next-cli-build/server/app/api/v1/images/generations/route_client-reference-manifest.js +1 -1
  637. package/cli/app/.next-cli-build/server/app/api/v1/messages/count_tokens/route.js +1 -1
  638. package/cli/app/.next-cli-build/server/app/api/v1/messages/count_tokens/route.js.nft.json +1 -1
  639. package/cli/app/.next-cli-build/server/app/api/v1/messages/count_tokens/route_client-reference-manifest.js +1 -1
  640. package/cli/app/.next-cli-build/server/app/api/v1/messages/route.js +1 -1
  641. package/cli/app/.next-cli-build/server/app/api/v1/messages/route.js.nft.json +1 -1
  642. package/cli/app/.next-cli-build/server/app/api/v1/messages/route_client-reference-manifest.js +1 -1
  643. package/cli/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js +1 -1
  644. package/cli/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js.nft.json +1 -1
  645. package/cli/app/.next-cli-build/server/app/api/v1/models/[kind]/route_client-reference-manifest.js +1 -1
  646. package/cli/app/.next-cli-build/server/app/api/v1/models/info/route.js +1 -1
  647. package/cli/app/.next-cli-build/server/app/api/v1/models/info/route.js.nft.json +1 -1
  648. package/cli/app/.next-cli-build/server/app/api/v1/models/info/route_client-reference-manifest.js +1 -1
  649. package/cli/app/.next-cli-build/server/app/api/v1/models/route.js +1 -1
  650. package/cli/app/.next-cli-build/server/app/api/v1/models/route.js.nft.json +1 -1
  651. package/cli/app/.next-cli-build/server/app/api/v1/models/route_client-reference-manifest.js +1 -1
  652. package/cli/app/.next-cli-build/server/app/api/v1/responses/compact/route.js +1 -1
  653. package/cli/app/.next-cli-build/server/app/api/v1/responses/compact/route.js.nft.json +1 -1
  654. package/cli/app/.next-cli-build/server/app/api/v1/responses/compact/route_client-reference-manifest.js +1 -1
  655. package/cli/app/.next-cli-build/server/app/api/v1/responses/route.js +1 -1
  656. package/cli/app/.next-cli-build/server/app/api/v1/responses/route.js.nft.json +1 -1
  657. package/cli/app/.next-cli-build/server/app/api/v1/responses/route_client-reference-manifest.js +1 -1
  658. package/cli/app/.next-cli-build/server/app/api/v1/route.js +1 -1
  659. package/cli/app/.next-cli-build/server/app/api/v1/route.js.nft.json +1 -1
  660. package/cli/app/.next-cli-build/server/app/api/v1/route_client-reference-manifest.js +1 -1
  661. package/cli/app/.next-cli-build/server/app/api/v1/search/route.js +1 -1
  662. package/cli/app/.next-cli-build/server/app/api/v1/search/route.js.nft.json +1 -1
  663. package/cli/app/.next-cli-build/server/app/api/v1/search/route_client-reference-manifest.js +1 -1
  664. package/cli/app/.next-cli-build/server/app/api/v1/web/fetch/route.js +1 -1
  665. package/cli/app/.next-cli-build/server/app/api/v1/web/fetch/route.js.nft.json +1 -1
  666. package/cli/app/.next-cli-build/server/app/api/v1/web/fetch/route_client-reference-manifest.js +1 -1
  667. package/cli/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js +1 -1
  668. package/cli/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
  669. package/cli/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route_client-reference-manifest.js +1 -1
  670. package/cli/app/.next-cli-build/server/app/api/v1beta/models/route.js +1 -1
  671. package/cli/app/.next-cli-build/server/app/api/v1beta/models/route.js.nft.json +1 -1
  672. package/cli/app/.next-cli-build/server/app/api/v1beta/models/route_client-reference-manifest.js +1 -1
  673. package/cli/app/.next-cli-build/server/app/api/version/route.js +1 -1
  674. package/cli/app/.next-cli-build/server/app/api/version/route.js.nft.json +1 -1
  675. package/cli/app/.next-cli-build/server/app/api/version/route_client-reference-manifest.js +1 -1
  676. package/cli/app/.next-cli-build/server/app/api/version/shutdown/route.js +1 -1
  677. package/cli/app/.next-cli-build/server/app/api/version/shutdown/route.js.nft.json +1 -1
  678. package/cli/app/.next-cli-build/server/app/api/version/shutdown/route_client-reference-manifest.js +1 -1
  679. package/cli/app/.next-cli-build/server/app/api/version/update/route.js +1 -1
  680. package/cli/app/.next-cli-build/server/app/api/version/update/route.js.nft.json +1 -1
  681. package/cli/app/.next-cli-build/server/app/api/version/update/route_client-reference-manifest.js +1 -1
  682. package/cli/app/.next-cli-build/server/app/callback/page.js +1 -1
  683. package/cli/app/.next-cli-build/server/app/callback/page.js.nft.json +1 -1
  684. package/cli/app/.next-cli-build/server/app/callback/page_client-reference-manifest.js +1 -1
  685. package/cli/app/.next-cli-build/server/app/callback.html +1 -1
  686. package/cli/app/.next-cli-build/server/app/callback.rsc +3 -3
  687. package/cli/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +3 -3
  688. package/cli/app/.next-cli-build/server/app/callback.segments/_head.segment.rsc +1 -1
  689. package/cli/app/.next-cli-build/server/app/callback.segments/_index.segment.rsc +3 -3
  690. package/cli/app/.next-cli-build/server/app/callback.segments/_tree.segment.rsc +1 -1
  691. package/cli/app/.next-cli-build/server/app/callback.segments/callback/__PAGE__.segment.rsc +1 -1
  692. package/cli/app/.next-cli-build/server/app/callback.segments/callback.segment.rsc +1 -1
  693. package/cli/app/.next-cli-build/server/app/dashboard/automation.html +1 -1
  694. package/cli/app/.next-cli-build/server/app/dashboard/automation.rsc +5 -5
  695. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk/dashboard/automation/__PAGE__.segment.rsc +2 -2
  696. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk/dashboard/automation.segment.rsc +1 -1
  697. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  698. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  699. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_full.segment.rsc +5 -5
  700. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_head.segment.rsc +1 -1
  701. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_index.segment.rsc +3 -3
  702. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_tree.segment.rsc +1 -1
  703. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.html +1 -1
  704. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.rsc +5 -5
  705. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +2 -2
  706. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat.segment.rsc +1 -1
  707. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  708. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  709. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_full.segment.rsc +5 -5
  710. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_head.segment.rsc +1 -1
  711. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_index.segment.rsc +3 -3
  712. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +1 -1
  713. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.html +1 -1
  714. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.rsc +5 -5
  715. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +2 -2
  716. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools.segment.rsc +1 -1
  717. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  718. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  719. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_full.segment.rsc +5 -5
  720. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_head.segment.rsc +1 -1
  721. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_index.segment.rsc +3 -3
  722. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +1 -1
  723. package/cli/app/.next-cli-build/server/app/dashboard/combos.html +1 -1
  724. package/cli/app/.next-cli-build/server/app/dashboard/combos.rsc +5 -5
  725. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +2 -2
  726. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos.segment.rsc +1 -1
  727. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  728. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  729. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_full.segment.rsc +5 -5
  730. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_head.segment.rsc +1 -1
  731. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_index.segment.rsc +3 -3
  732. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_tree.segment.rsc +1 -1
  733. package/cli/app/.next-cli-build/server/app/dashboard/context.html +1 -1
  734. package/cli/app/.next-cli-build/server/app/dashboard/context.rsc +5 -5
  735. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/!KGRhc2hib2FyZCk/dashboard/context/__PAGE__.segment.rsc +2 -2
  736. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/!KGRhc2hib2FyZCk/dashboard/context.segment.rsc +1 -1
  737. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  738. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  739. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_full.segment.rsc +5 -5
  740. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_head.segment.rsc +1 -1
  741. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_index.segment.rsc +3 -3
  742. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_tree.segment.rsc +1 -1
  743. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.html +1 -1
  744. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.rsc +5 -5
  745. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +2 -2
  746. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint.segment.rsc +1 -1
  747. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  748. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  749. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_full.segment.rsc +5 -5
  750. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_head.segment.rsc +1 -1
  751. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_index.segment.rsc +3 -3
  752. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_tree.segment.rsc +1 -1
  753. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.html +1 -1
  754. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.rsc +5 -5
  755. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web/__PAGE__.segment.rsc +2 -2
  756. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web.segment.rsc +1 -1
  757. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers.segment.rsc +1 -1
  758. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  759. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  760. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_full.segment.rsc +5 -5
  761. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_head.segment.rsc +1 -1
  762. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_index.segment.rsc +3 -3
  763. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_tree.segment.rsc +1 -1
  764. package/cli/app/.next-cli-build/server/app/dashboard/mitm.html +1 -1
  765. package/cli/app/.next-cli-build/server/app/dashboard/mitm.rsc +5 -5
  766. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +2 -2
  767. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm.segment.rsc +1 -1
  768. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  769. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  770. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_full.segment.rsc +5 -5
  771. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_head.segment.rsc +1 -1
  772. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_index.segment.rsc +3 -3
  773. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_tree.segment.rsc +1 -1
  774. package/cli/app/.next-cli-build/server/app/dashboard/playground.html +1 -1
  775. package/cli/app/.next-cli-build/server/app/dashboard/playground.rsc +5 -5
  776. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk/dashboard/playground/__PAGE__.segment.rsc +2 -2
  777. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk/dashboard/playground.segment.rsc +1 -1
  778. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  779. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  780. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_full.segment.rsc +5 -5
  781. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_head.segment.rsc +1 -1
  782. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_index.segment.rsc +3 -3
  783. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_tree.segment.rsc +1 -1
  784. package/cli/app/.next-cli-build/server/app/dashboard/profile.html +1 -1
  785. package/cli/app/.next-cli-build/server/app/dashboard/profile.rsc +5 -5
  786. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +2 -2
  787. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile.segment.rsc +1 -1
  788. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  789. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  790. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_full.segment.rsc +5 -5
  791. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_head.segment.rsc +1 -1
  792. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_index.segment.rsc +3 -3
  793. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_tree.segment.rsc +1 -1
  794. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.html +1 -1
  795. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.rsc +5 -5
  796. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +2 -2
  797. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new.segment.rsc +1 -1
  798. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  799. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  800. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  801. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_full.segment.rsc +5 -5
  802. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_head.segment.rsc +1 -1
  803. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_index.segment.rsc +3 -3
  804. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_tree.segment.rsc +1 -1
  805. package/cli/app/.next-cli-build/server/app/dashboard/providers.html +1 -1
  806. package/cli/app/.next-cli-build/server/app/dashboard/providers.rsc +5 -5
  807. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +2 -2
  808. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  809. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  810. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  811. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_full.segment.rsc +5 -5
  812. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_head.segment.rsc +1 -1
  813. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_index.segment.rsc +3 -3
  814. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_tree.segment.rsc +1 -1
  815. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.html +1 -1
  816. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.rsc +5 -5
  817. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +2 -2
  818. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools.segment.rsc +1 -1
  819. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  820. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  821. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +5 -5
  822. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_head.segment.rsc +1 -1
  823. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_index.segment.rsc +3 -3
  824. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +1 -1
  825. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.html +1 -1
  826. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.rsc +5 -5
  827. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard/pxpipe/__PAGE__.segment.rsc +2 -2
  828. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard/pxpipe.segment.rsc +1 -1
  829. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  830. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  831. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_full.segment.rsc +5 -5
  832. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_head.segment.rsc +1 -1
  833. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_index.segment.rsc +3 -3
  834. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_tree.segment.rsc +1 -1
  835. package/cli/app/.next-cli-build/server/app/dashboard/quota.html +2 -2
  836. package/cli/app/.next-cli-build/server/app/dashboard/quota.rsc +6 -6
  837. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +3 -3
  838. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota.segment.rsc +1 -1
  839. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  840. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  841. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_full.segment.rsc +6 -6
  842. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_head.segment.rsc +1 -1
  843. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_index.segment.rsc +3 -3
  844. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_tree.segment.rsc +1 -1
  845. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing/page.js +2 -2
  846. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing/page.js.nft.json +1 -1
  847. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  848. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.html +1 -1
  849. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.rsc +3 -3
  850. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +3 -3
  851. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +1 -1
  852. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +3 -3
  853. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +1 -1
  854. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +1 -1
  855. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing.segment.rsc +1 -1
  856. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings.segment.rsc +1 -1
  857. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard.segment.rsc +1 -1
  858. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.html +1 -1
  859. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.rsc +5 -5
  860. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver/__PAGE__.segment.rsc +2 -2
  861. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver.segment.rsc +1 -1
  862. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  863. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  864. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_full.segment.rsc +5 -5
  865. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_head.segment.rsc +1 -1
  866. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_index.segment.rsc +3 -3
  867. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_tree.segment.rsc +1 -1
  868. package/cli/app/.next-cli-build/server/app/dashboard/translator.html +1 -1
  869. package/cli/app/.next-cli-build/server/app/dashboard/translator.rsc +5 -5
  870. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +2 -2
  871. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator.segment.rsc +1 -1
  872. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  873. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  874. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_full.segment.rsc +5 -5
  875. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_head.segment.rsc +1 -1
  876. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_index.segment.rsc +3 -3
  877. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_tree.segment.rsc +1 -1
  878. package/cli/app/.next-cli-build/server/app/dashboard/usage.html +1 -1
  879. package/cli/app/.next-cli-build/server/app/dashboard/usage.rsc +5 -5
  880. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +2 -2
  881. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage.segment.rsc +1 -1
  882. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  883. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  884. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_full.segment.rsc +5 -5
  885. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_head.segment.rsc +1 -1
  886. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_index.segment.rsc +3 -3
  887. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_tree.segment.rsc +1 -1
  888. package/cli/app/.next-cli-build/server/app/dashboard.html +1 -1
  889. package/cli/app/.next-cli-build/server/app/dashboard.rsc +5 -5
  890. package/cli/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +2 -2
  891. package/cli/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  892. package/cli/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  893. package/cli/app/.next-cli-build/server/app/dashboard.segments/_full.segment.rsc +5 -5
  894. package/cli/app/.next-cli-build/server/app/dashboard.segments/_head.segment.rsc +1 -1
  895. package/cli/app/.next-cli-build/server/app/dashboard.segments/_index.segment.rsc +3 -3
  896. package/cli/app/.next-cli-build/server/app/dashboard.segments/_tree.segment.rsc +1 -1
  897. package/cli/app/.next-cli-build/server/app/index.html +1 -1
  898. package/cli/app/.next-cli-build/server/app/index.rsc +3 -3
  899. package/cli/app/.next-cli-build/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  900. package/cli/app/.next-cli-build/server/app/index.segments/_full.segment.rsc +3 -3
  901. package/cli/app/.next-cli-build/server/app/index.segments/_head.segment.rsc +1 -1
  902. package/cli/app/.next-cli-build/server/app/index.segments/_index.segment.rsc +3 -3
  903. package/cli/app/.next-cli-build/server/app/index.segments/_tree.segment.rsc +1 -1
  904. package/cli/app/.next-cli-build/server/app/landing/page.js +1 -1
  905. package/cli/app/.next-cli-build/server/app/landing/page.js.nft.json +1 -1
  906. package/cli/app/.next-cli-build/server/app/landing/page_client-reference-manifest.js +1 -1
  907. package/cli/app/.next-cli-build/server/app/landing.html +1 -1
  908. package/cli/app/.next-cli-build/server/app/landing.rsc +4 -4
  909. package/cli/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +4 -4
  910. package/cli/app/.next-cli-build/server/app/landing.segments/_head.segment.rsc +1 -1
  911. package/cli/app/.next-cli-build/server/app/landing.segments/_index.segment.rsc +3 -3
  912. package/cli/app/.next-cli-build/server/app/landing.segments/_tree.segment.rsc +1 -1
  913. package/cli/app/.next-cli-build/server/app/landing.segments/landing/__PAGE__.segment.rsc +2 -2
  914. package/cli/app/.next-cli-build/server/app/landing.segments/landing.segment.rsc +1 -1
  915. package/cli/app/.next-cli-build/server/app/login/page.js +2 -2
  916. package/cli/app/.next-cli-build/server/app/login/page.js.nft.json +1 -1
  917. package/cli/app/.next-cli-build/server/app/login/page_client-reference-manifest.js +1 -1
  918. package/cli/app/.next-cli-build/server/app/login.html +1 -1
  919. package/cli/app/.next-cli-build/server/app/login.rsc +4 -4
  920. package/cli/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +4 -4
  921. package/cli/app/.next-cli-build/server/app/login.segments/_head.segment.rsc +1 -1
  922. package/cli/app/.next-cli-build/server/app/login.segments/_index.segment.rsc +3 -3
  923. package/cli/app/.next-cli-build/server/app/login.segments/_tree.segment.rsc +1 -1
  924. package/cli/app/.next-cli-build/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
  925. package/cli/app/.next-cli-build/server/app/login.segments/login.segment.rsc +1 -1
  926. package/cli/app/.next-cli-build/server/app/manifest.webmanifest/route.js.nft.json +1 -1
  927. package/cli/app/.next-cli-build/server/app/manifest.webmanifest/route_client-reference-manifest.js +1 -1
  928. package/cli/app/.next-cli-build/server/app/page.js +1 -1
  929. package/cli/app/.next-cli-build/server/app/page.js.nft.json +1 -1
  930. package/cli/app/.next-cli-build/server/app/page_client-reference-manifest.js +1 -1
  931. package/cli/app/.next-cli-build/server/app-paths-manifest.json +9 -9
  932. package/cli/app/.next-cli-build/server/chunks/2030.js +1 -1
  933. package/cli/app/.next-cli-build/server/chunks/3155.js +1 -1
  934. package/cli/app/.next-cli-build/server/chunks/319.js +3 -3
  935. package/cli/app/.next-cli-build/server/chunks/4650.js +1 -1
  936. package/cli/app/.next-cli-build/server/chunks/4746.js +1 -1
  937. package/cli/app/.next-cli-build/server/chunks/5307.js +1 -1
  938. package/cli/app/.next-cli-build/server/chunks/5469.js +1 -1
  939. package/cli/app/.next-cli-build/server/chunks/5949.js +12 -11
  940. package/cli/app/.next-cli-build/server/chunks/8242.js +1 -1
  941. package/cli/app/.next-cli-build/server/chunks/8306.js +1 -1
  942. package/cli/app/.next-cli-build/server/chunks/9372.js +1 -1
  943. package/cli/app/.next-cli-build/server/chunks/9621.js +1 -1
  944. package/cli/app/.next-cli-build/server/middleware-build-manifest.js +1 -1
  945. package/cli/app/.next-cli-build/server/next-font-manifest.js +1 -1
  946. package/cli/app/.next-cli-build/server/next-font-manifest.json +1 -1
  947. package/cli/app/.next-cli-build/server/pages/404.html +1 -1
  948. package/cli/app/.next-cli-build/server/pages/500.html +1 -1
  949. package/cli/app/.next-cli-build/static/chunks/{620-a13f0f7b318585ab.js → 620-90911eeb765ca4bd.js} +1 -1
  950. package/cli/app/.next-cli-build/static/chunks/app/login/page-f7df7d9a053d65b7.js +1 -0
  951. package/cli/app/CHANGELOG.md +29 -0
  952. package/cli/app/cli/hooks/postinstall.js +82 -50
  953. package/cli/app/cli/hooks/safeGlobalInstall.js +178 -10
  954. package/cli/app/cli/hooks/startupRuntime.js +31 -0
  955. package/cli/app/cli/hooks/streamCommand.js +63 -0
  956. package/cli/app/package.json +46 -39
  957. package/cli/app/server.js +1 -1
  958. package/cli/cli.js +708 -248
  959. package/cli/hooks/postinstall.js +82 -50
  960. package/cli/hooks/safeGlobalInstall.js +178 -10
  961. package/cli/hooks/startupRuntime.js +31 -0
  962. package/cli/hooks/streamCommand.js +63 -0
  963. package/cli/package.json +6 -5
  964. package/cli/src/cli/systemdEnv.js +93 -0
  965. package/cli/src/cli/tray/autostart.js +55 -21
  966. package/cli/src/cli/tray/tray.js +1 -1
  967. package/cli/src/cli/updateRuntimeState.js +976 -0
  968. package/package.json +46 -39
  969. package/scripts/start-standalone.mjs +24 -15
  970. package/cli/app/.next-cli-build/static/chunks/app/login/page-9ea3f794879db097.js +0 -1
  971. package/i18n/README.ja-JP.md +0 -34
  972. package/i18n/README.ru.md +0 -34
  973. package/i18n/README.vi.md +0 -34
  974. package/i18n/README.zh-CN.md +0 -34
  975. package/images/screenshots/automation.png +0 -0
  976. package/images/screenshots/endpoint.png +0 -0
  977. package/images/screenshots/playground.png +0 -0
  978. package/images/screenshots/providers.png +0 -0
  979. package/images/screenshots/usage.png +0 -0
  980. package/images/zevairouter.png +0 -0
  981. package/jsconfig.json +0 -12
  982. package/next.config.mjs +0 -96
  983. package/open-sse/config/appConstants.js +0 -230
  984. package/open-sse/config/codexInstructions.js +0 -119
  985. package/open-sse/config/constants.js +0 -4
  986. package/open-sse/config/defaultThinkingSignature.js +0 -12
  987. package/open-sse/config/errorConfig.js +0 -92
  988. package/open-sse/config/googleTtsLanguages.js +0 -62
  989. package/open-sse/config/kiroConstants.js +0 -360
  990. package/open-sse/config/models.js +0 -13
  991. package/open-sse/config/ollamaModels.js +0 -19
  992. package/open-sse/config/providerModels.js +0 -1058
  993. package/open-sse/config/providers.js +0 -543
  994. package/open-sse/config/runtimeConfig.js +0 -72
  995. package/open-sse/config/ttsModels.js +0 -129
  996. package/open-sse/context/injectContext.js +0 -82
  997. package/open-sse/executors/antigravity.js +0 -605
  998. package/open-sse/executors/autoclaw.js +0 -121
  999. package/open-sse/executors/azure.js +0 -57
  1000. package/open-sse/executors/base.js +0 -221
  1001. package/open-sse/executors/codebuddy-cn.js +0 -31
  1002. package/open-sse/executors/codex.js +0 -484
  1003. package/open-sse/executors/commandcode.js +0 -88
  1004. package/open-sse/executors/cursor.js +0 -795
  1005. package/open-sse/executors/default.js +0 -532
  1006. package/open-sse/executors/gemini-cli.js +0 -89
  1007. package/open-sse/executors/github.js +0 -383
  1008. package/open-sse/executors/grok-cli.js +0 -397
  1009. package/open-sse/executors/grok-web.js +0 -345
  1010. package/open-sse/executors/iflow.js +0 -108
  1011. package/open-sse/executors/index.js +0 -92
  1012. package/open-sse/executors/kimchi.js +0 -123
  1013. package/open-sse/executors/kiro.js +0 -537
  1014. package/open-sse/executors/mimo-free.js +0 -156
  1015. package/open-sse/executors/ollama-local.js +0 -14
  1016. package/open-sse/executors/opencode-go.js +0 -41
  1017. package/open-sse/executors/opencode.js +0 -32
  1018. package/open-sse/executors/perplexity-web.js +0 -507
  1019. package/open-sse/executors/qoder.js +0 -468
  1020. package/open-sse/executors/qwen.js +0 -129
  1021. package/open-sse/executors/vertex.js +0 -131
  1022. package/open-sse/executors/xiaomi-tokenplan.js +0 -19
  1023. package/open-sse/handlers/chatCore/nonStreamingHandler.js +0 -261
  1024. package/open-sse/handlers/chatCore/requestDetail.js +0 -112
  1025. package/open-sse/handlers/chatCore/sseToJsonHandler.js +0 -540
  1026. package/open-sse/handlers/chatCore/streamingHandler.js +0 -125
  1027. package/open-sse/handlers/chatCore.js +0 -398
  1028. package/open-sse/handlers/embeddingProviders/_base.js +0 -4
  1029. package/open-sse/handlers/embeddingProviders/gemini.js +0 -57
  1030. package/open-sse/handlers/embeddingProviders/index.js +0 -23
  1031. package/open-sse/handlers/embeddingProviders/openai.js +0 -39
  1032. package/open-sse/handlers/embeddingProviders/openaiCompatNode.js +0 -16
  1033. package/open-sse/handlers/embeddingsCore.js +0 -126
  1034. package/open-sse/handlers/fetch/index.js +0 -237
  1035. package/open-sse/handlers/imageGenerationCore.js +0 -189
  1036. package/open-sse/handlers/imageProviders/_base.js +0 -31
  1037. package/open-sse/handlers/imageProviders/blackForestLabs.js +0 -46
  1038. package/open-sse/handlers/imageProviders/cloudflareAi.js +0 -181
  1039. package/open-sse/handlers/imageProviders/codex.js +0 -201
  1040. package/open-sse/handlers/imageProviders/comfyui.js +0 -11
  1041. package/open-sse/handlers/imageProviders/falAi.js +0 -44
  1042. package/open-sse/handlers/imageProviders/gemini.js +0 -28
  1043. package/open-sse/handlers/imageProviders/huggingface.js +0 -25
  1044. package/open-sse/handlers/imageProviders/index.js +0 -40
  1045. package/open-sse/handlers/imageProviders/nanobanana.js +0 -61
  1046. package/open-sse/handlers/imageProviders/openai.js +0 -40
  1047. package/open-sse/handlers/imageProviders/runwayml.js +0 -50
  1048. package/open-sse/handlers/imageProviders/sdwebui.js +0 -20
  1049. package/open-sse/handlers/imageProviders/stabilityAi.js +0 -37
  1050. package/open-sse/handlers/responsesHandler.js +0 -46
  1051. package/open-sse/handlers/search/callers.js +0 -371
  1052. package/open-sse/handlers/search/chatSearch.js +0 -409
  1053. package/open-sse/handlers/search/index.js +0 -201
  1054. package/open-sse/handlers/search/normalizers.js +0 -223
  1055. package/open-sse/handlers/sttCore.js +0 -194
  1056. package/open-sse/handlers/ttsCore.js +0 -74
  1057. package/open-sse/handlers/ttsProviders/_base.js +0 -39
  1058. package/open-sse/handlers/ttsProviders/edgeTts.js +0 -92
  1059. package/open-sse/handlers/ttsProviders/elevenlabs.js +0 -51
  1060. package/open-sse/handlers/ttsProviders/gemini.js +0 -120
  1061. package/open-sse/handlers/ttsProviders/genericFormats.js +0 -169
  1062. package/open-sse/handlers/ttsProviders/googleTts.js +0 -57
  1063. package/open-sse/handlers/ttsProviders/index.js +0 -50
  1064. package/open-sse/handlers/ttsProviders/localDevice.js +0 -90
  1065. package/open-sse/handlers/ttsProviders/minimax.js +0 -59
  1066. package/open-sse/handlers/ttsProviders/openai.js +0 -33
  1067. package/open-sse/handlers/ttsProviders/openrouter.js +0 -73
  1068. package/open-sse/index.js +0 -82
  1069. package/open-sse/rtk/applyFilter.js +0 -15
  1070. package/open-sse/rtk/autodetect.js +0 -111
  1071. package/open-sse/rtk/caveman.js +0 -100
  1072. package/open-sse/rtk/cavemanPrompts.js +0 -78
  1073. package/open-sse/rtk/constants.js +0 -55
  1074. package/open-sse/rtk/filters/buildOutput.js +0 -127
  1075. package/open-sse/rtk/filters/dedupLog.js +0 -44
  1076. package/open-sse/rtk/filters/find.js +0 -49
  1077. package/open-sse/rtk/filters/gitDiff.js +0 -92
  1078. package/open-sse/rtk/filters/gitStatus.js +0 -117
  1079. package/open-sse/rtk/filters/grep.js +0 -48
  1080. package/open-sse/rtk/filters/ls.js +0 -79
  1081. package/open-sse/rtk/filters/readNumbered.js +0 -27
  1082. package/open-sse/rtk/filters/searchList.js +0 -52
  1083. package/open-sse/rtk/filters/smartTruncate.js +0 -15
  1084. package/open-sse/rtk/filters/tree.js +0 -32
  1085. package/open-sse/rtk/headroom.js +0 -348
  1086. package/open-sse/rtk/index.js +0 -155
  1087. package/open-sse/rtk/ponytail.js +0 -91
  1088. package/open-sse/rtk/ponytailPrompts.js +0 -44
  1089. package/open-sse/rtk/pxpipe.js +0 -104
  1090. package/open-sse/rtk/registry.js +0 -38
  1091. package/open-sse/services/accountFallback.js +0 -467
  1092. package/open-sse/services/antigravityHeaderScrub.js +0 -78
  1093. package/open-sse/services/antigravityIdentity.js +0 -115
  1094. package/open-sse/services/antigravityObfuscation.js +0 -92
  1095. package/open-sse/services/clinepassModels.js +0 -63
  1096. package/open-sse/services/combo.js +0 -189
  1097. package/open-sse/services/compact.js +0 -71
  1098. package/open-sse/services/copilotModels.js +0 -155
  1099. package/open-sse/services/kimchiModels.js +0 -176
  1100. package/open-sse/services/kiroModels.js +0 -320
  1101. package/open-sse/services/model.js +0 -281
  1102. package/open-sse/services/oauthCredentialManager.js +0 -151
  1103. package/open-sse/services/projectId.js +0 -463
  1104. package/open-sse/services/provider.js +0 -356
  1105. package/open-sse/services/qoderModels.js +0 -216
  1106. package/open-sse/services/tokenRefresh.js +0 -949
  1107. package/open-sse/services/usage.js +0 -2415
  1108. package/open-sse/transformer/responsesTransformer.js +0 -509
  1109. package/open-sse/transformer/streamToJsonConverter.js +0 -151
  1110. package/open-sse/translator/formats.js +0 -36
  1111. package/open-sse/translator/helpers/claudeHelper.js +0 -217
  1112. package/open-sse/translator/helpers/geminiHelper.js +0 -372
  1113. package/open-sse/translator/helpers/imageHelper.js +0 -98
  1114. package/open-sse/translator/helpers/maxTokensHelper.js +0 -27
  1115. package/open-sse/translator/helpers/openaiHelper.js +0 -130
  1116. package/open-sse/translator/helpers/responsesApiHelper.js +0 -214
  1117. package/open-sse/translator/helpers/toolCallHelper.js +0 -148
  1118. package/open-sse/translator/index.js +0 -254
  1119. package/open-sse/translator/request/antigravity-to-openai.js +0 -255
  1120. package/open-sse/translator/request/claude-to-openai.js +0 -278
  1121. package/open-sse/translator/request/gemini-to-openai.js +0 -147
  1122. package/open-sse/translator/request/openai-responses.js +0 -212
  1123. package/open-sse/translator/request/openai-to-claude.js +0 -427
  1124. package/open-sse/translator/request/openai-to-commandcode.js +0 -178
  1125. package/open-sse/translator/request/openai-to-cursor.js +0 -195
  1126. package/open-sse/translator/request/openai-to-gemini.js +0 -478
  1127. package/open-sse/translator/request/openai-to-kiro.js +0 -641
  1128. package/open-sse/translator/request/openai-to-kiro.old.js +0 -278
  1129. package/open-sse/translator/request/openai-to-ollama.js +0 -192
  1130. package/open-sse/translator/request/openai-to-vertex.js +0 -42
  1131. package/open-sse/translator/response/claude-to-openai.js +0 -206
  1132. package/open-sse/translator/response/commandcode-to-openai.js +0 -197
  1133. package/open-sse/translator/response/cursor-to-openai.js +0 -30
  1134. package/open-sse/translator/response/gemini-to-openai.js +0 -245
  1135. package/open-sse/translator/response/kiro-to-openai.js +0 -195
  1136. package/open-sse/translator/response/ollama-to-openai.js +0 -152
  1137. package/open-sse/translator/response/openai-responses.js +0 -624
  1138. package/open-sse/translator/response/openai-to-antigravity.js +0 -122
  1139. package/open-sse/translator/response/openai-to-claude.js +0 -266
  1140. package/open-sse/utils/bypassHandler.js +0 -298
  1141. package/open-sse/utils/claudeCloaking.js +0 -155
  1142. package/open-sse/utils/claudeHeaderCache.js +0 -70
  1143. package/open-sse/utils/clientDetector.js +0 -64
  1144. package/open-sse/utils/cursorChecksum.js +0 -152
  1145. package/open-sse/utils/cursorProtobuf.js +0 -907
  1146. package/open-sse/utils/debugLog.js +0 -14
  1147. package/open-sse/utils/error.js +0 -147
  1148. package/open-sse/utils/ollamaTransform.js +0 -85
  1149. package/open-sse/utils/proxyFetch.js +0 -369
  1150. package/open-sse/utils/reasoningContentInjector.js +0 -79
  1151. package/open-sse/utils/requestLogger.js +0 -251
  1152. package/open-sse/utils/responsesStreamHelpers.js +0 -106
  1153. package/open-sse/utils/sessionManager.js +0 -231
  1154. package/open-sse/utils/stream.js +0 -590
  1155. package/open-sse/utils/streamHandler.js +0 -274
  1156. package/open-sse/utils/streamHelpers.js +0 -122
  1157. package/open-sse/utils/thinkingSuffix.js +0 -64
  1158. package/open-sse/utils/toolDeduper.js +0 -49
  1159. package/open-sse/utils/usageTracking.js +0 -351
  1160. package/postcss.config.mjs +0 -14
  1161. package/public/favicon.svg +0 -16
  1162. package/public/file.svg +0 -1
  1163. package/public/globe.svg +0 -1
  1164. package/public/i18n/literals/ar.json +0 -195
  1165. package/public/i18n/literals/bn.json +0 -195
  1166. package/public/i18n/literals/cs.json +0 -195
  1167. package/public/i18n/literals/da.json +0 -195
  1168. package/public/i18n/literals/de.json +0 -195
  1169. package/public/i18n/literals/el.json +0 -195
  1170. package/public/i18n/literals/es.json +0 -195
  1171. package/public/i18n/literals/fi.json +0 -195
  1172. package/public/i18n/literals/fr.json +0 -195
  1173. package/public/i18n/literals/he.json +0 -195
  1174. package/public/i18n/literals/hi.json +0 -195
  1175. package/public/i18n/literals/hu.json +0 -195
  1176. package/public/i18n/literals/id.json +0 -195
  1177. package/public/i18n/literals/it.json +0 -195
  1178. package/public/i18n/literals/ja.json +0 -195
  1179. package/public/i18n/literals/ko.json +0 -195
  1180. package/public/i18n/literals/nl.json +0 -195
  1181. package/public/i18n/literals/no.json +0 -195
  1182. package/public/i18n/literals/pl.json +0 -195
  1183. package/public/i18n/literals/pt-BR.json +0 -195
  1184. package/public/i18n/literals/pt-PT.json +0 -195
  1185. package/public/i18n/literals/ro.json +0 -195
  1186. package/public/i18n/literals/ru.json +0 -195
  1187. package/public/i18n/literals/sv.json +0 -195
  1188. package/public/i18n/literals/th.json +0 -195
  1189. package/public/i18n/literals/tl.json +0 -195
  1190. package/public/i18n/literals/tr.json +0 -195
  1191. package/public/i18n/literals/uk.json +0 -195
  1192. package/public/i18n/literals/ur.json +0 -195
  1193. package/public/i18n/literals/vi.json +0 -195
  1194. package/public/i18n/literals/zh-CN.json +0 -772
  1195. package/public/i18n/literals/zh-TW.json +0 -195
  1196. package/public/icons/discord.svg +0 -4
  1197. package/public/icons/icon-192.svg +0 -16
  1198. package/public/icons/icon-512.svg +0 -16
  1199. package/public/next.svg +0 -1
  1200. package/public/providers/alicode-intl.png +0 -0
  1201. package/public/providers/alicode.png +0 -0
  1202. package/public/providers/amp.png +0 -0
  1203. package/public/providers/anthropic-m.png +0 -0
  1204. package/public/providers/anthropic.png +0 -0
  1205. package/public/providers/antigravity.png +0 -0
  1206. package/public/providers/assemblyai.png +0 -0
  1207. package/public/providers/autoclaw.png +0 -0
  1208. package/public/providers/aws-polly.png +0 -0
  1209. package/public/providers/azure.png +0 -0
  1210. package/public/providers/black-forest-labs.png +0 -0
  1211. package/public/providers/blackbox.png +0 -0
  1212. package/public/providers/brave-search.png +0 -0
  1213. package/public/providers/byteplus.png +0 -0
  1214. package/public/providers/cartesia.png +0 -0
  1215. package/public/providers/cerebras.png +0 -0
  1216. package/public/providers/chutes.png +0 -0
  1217. package/public/providers/claude.png +0 -0
  1218. package/public/providers/cline.png +0 -0
  1219. package/public/providers/clinepass.png +0 -0
  1220. package/public/providers/cloudflare-ai.png +0 -0
  1221. package/public/providers/codebuddy-cn.png +0 -0
  1222. package/public/providers/codebuddy.png +0 -0
  1223. package/public/providers/codebuddy.svg +0 -37
  1224. package/public/providers/codex.png +0 -0
  1225. package/public/providers/cohere.png +0 -0
  1226. package/public/providers/comfyui.png +0 -0
  1227. package/public/providers/commandcode.png +0 -0
  1228. package/public/providers/continue.png +0 -0
  1229. package/public/providers/copilot.png +0 -0
  1230. package/public/providers/coqui.png +0 -0
  1231. package/public/providers/cursor.png +0 -0
  1232. package/public/providers/deepgram.png +0 -0
  1233. package/public/providers/deepseek-tui.png +0 -0
  1234. package/public/providers/deepseek.png +0 -0
  1235. package/public/providers/droid.png +0 -0
  1236. package/public/providers/edge-tts.png +0 -0
  1237. package/public/providers/elevenlabs.png +0 -0
  1238. package/public/providers/exa.png +0 -0
  1239. package/public/providers/fal-ai.png +0 -0
  1240. package/public/providers/firecrawl.png +0 -0
  1241. package/public/providers/fireworks.png +0 -0
  1242. package/public/providers/gemini-cli.png +0 -0
  1243. package/public/providers/gemini.png +0 -0
  1244. package/public/providers/github.png +0 -0
  1245. package/public/providers/glm-cn.png +0 -0
  1246. package/public/providers/glm.png +0 -0
  1247. package/public/providers/google-pse.png +0 -0
  1248. package/public/providers/google-tts.png +0 -0
  1249. package/public/providers/grok-cli.png +0 -0
  1250. package/public/providers/grok-web.png +0 -0
  1251. package/public/providers/groq.png +0 -0
  1252. package/public/providers/hermes.png +0 -0
  1253. package/public/providers/huggingface.png +0 -0
  1254. package/public/providers/hyperbolic.png +0 -0
  1255. package/public/providers/iflow.png +0 -0
  1256. package/public/providers/inworld.png +0 -0
  1257. package/public/providers/jcode.png +0 -0
  1258. package/public/providers/jina-ai.png +0 -0
  1259. package/public/providers/jina-reader.png +0 -0
  1260. package/public/providers/kilocode.png +0 -0
  1261. package/public/providers/kimchi.png +0 -0
  1262. package/public/providers/kimchi.svg +0 -4
  1263. package/public/providers/kimi-coding.png +0 -0
  1264. package/public/providers/kimi.png +0 -0
  1265. package/public/providers/kiro.png +0 -0
  1266. package/public/providers/linkup.png +0 -0
  1267. package/public/providers/local-device.png +0 -0
  1268. package/public/providers/mimo-free.png +0 -0
  1269. package/public/providers/minimax-cn.png +0 -0
  1270. package/public/providers/minimax.png +0 -0
  1271. package/public/providers/mistral.png +0 -0
  1272. package/public/providers/nanobanana.png +0 -0
  1273. package/public/providers/nebius.png +0 -0
  1274. package/public/providers/nvidia.png +0 -0
  1275. package/public/providers/oai-cc.png +0 -0
  1276. package/public/providers/oai-r.png +0 -0
  1277. package/public/providers/ollama-local.png +0 -0
  1278. package/public/providers/ollama.png +0 -0
  1279. package/public/providers/openai.png +0 -0
  1280. package/public/providers/openclaw.png +0 -0
  1281. package/public/providers/opencode-go.png +0 -0
  1282. package/public/providers/opencode.png +0 -0
  1283. package/public/providers/openrouter.png +0 -0
  1284. package/public/providers/perplexity-agent.png +0 -0
  1285. package/public/providers/perplexity-web.png +0 -0
  1286. package/public/providers/perplexity.png +0 -0
  1287. package/public/providers/playht.png +0 -0
  1288. package/public/providers/qoder.png +0 -0
  1289. package/public/providers/qwen.png +0 -0
  1290. package/public/providers/recraft.png +0 -0
  1291. package/public/providers/roo.png +0 -0
  1292. package/public/providers/runwayml.png +0 -0
  1293. package/public/providers/sdwebui.png +0 -0
  1294. package/public/providers/searchapi.png +0 -0
  1295. package/public/providers/searxng.png +0 -0
  1296. package/public/providers/serper.png +0 -0
  1297. package/public/providers/siliconflow.png +0 -0
  1298. package/public/providers/stability-ai.png +0 -0
  1299. package/public/providers/tavily.png +0 -0
  1300. package/public/providers/together.png +0 -0
  1301. package/public/providers/topaz.png +0 -0
  1302. package/public/providers/tortoise.png +0 -0
  1303. package/public/providers/vertex-partner.png +0 -0
  1304. package/public/providers/vertex.png +0 -0
  1305. package/public/providers/volcengine-ark.png +0 -0
  1306. package/public/providers/voyage-ai.png +0 -0
  1307. package/public/providers/xai.png +0 -0
  1308. package/public/providers/xiaomi-mimo.png +0 -0
  1309. package/public/providers/xiaomi-tokenplan.png +0 -0
  1310. package/public/providers/youcom.png +0 -0
  1311. package/public/sw.js +0 -22
  1312. package/public/vercel.svg +0 -1
  1313. package/public/window.svg +0 -1
  1314. package/scripts/translate-readme.js +0 -201
  1315. package/src/app/(dashboard)/dashboard/automation/page.js +0 -774
  1316. package/src/app/(dashboard)/dashboard/basic-chat/BasicChatPageClient.js +0 -1592
  1317. package/src/app/(dashboard)/dashboard/basic-chat/page.js +0 -5
  1318. package/src/app/(dashboard)/dashboard/cli-tools/CLIToolsPageClient.js +0 -81
  1319. package/src/app/(dashboard)/dashboard/cli-tools/[toolId]/ToolDetailClient.js +0 -173
  1320. package/src/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js +0 -11
  1321. package/src/app/(dashboard)/dashboard/cli-tools/components/AntigravityToolCard.js +0 -487
  1322. package/src/app/(dashboard)/dashboard/cli-tools/components/ApiKeySelect.js +0 -14
  1323. package/src/app/(dashboard)/dashboard/cli-tools/components/BaseUrlSelect.js +0 -176
  1324. package/src/app/(dashboard)/dashboard/cli-tools/components/ClaudeToolCard.js +0 -396
  1325. package/src/app/(dashboard)/dashboard/cli-tools/components/ClineToolCard.js +0 -307
  1326. package/src/app/(dashboard)/dashboard/cli-tools/components/CodexToolCard.js +0 -466
  1327. package/src/app/(dashboard)/dashboard/cli-tools/components/CopilotToolCard.js +0 -330
  1328. package/src/app/(dashboard)/dashboard/cli-tools/components/CoworkToolCard.js +0 -646
  1329. package/src/app/(dashboard)/dashboard/cli-tools/components/DeepSeekTuiToolCard.js +0 -344
  1330. package/src/app/(dashboard)/dashboard/cli-tools/components/DefaultToolCard.js +0 -271
  1331. package/src/app/(dashboard)/dashboard/cli-tools/components/DroidToolCard.js +0 -421
  1332. package/src/app/(dashboard)/dashboard/cli-tools/components/EndpointPresetControl.js +0 -129
  1333. package/src/app/(dashboard)/dashboard/cli-tools/components/HermesToolCard.js +0 -323
  1334. package/src/app/(dashboard)/dashboard/cli-tools/components/JcodeToolCard.js +0 -386
  1335. package/src/app/(dashboard)/dashboard/cli-tools/components/KiloToolCard.js +0 -280
  1336. package/src/app/(dashboard)/dashboard/cli-tools/components/MitmLinkCard.js +0 -40
  1337. package/src/app/(dashboard)/dashboard/cli-tools/components/MitmServerCard.js +0 -329
  1338. package/src/app/(dashboard)/dashboard/cli-tools/components/MitmToolCard.js +0 -320
  1339. package/src/app/(dashboard)/dashboard/cli-tools/components/OpenClawToolCard.js +0 -394
  1340. package/src/app/(dashboard)/dashboard/cli-tools/components/OpenCodeToolCard.js +0 -512
  1341. package/src/app/(dashboard)/dashboard/cli-tools/components/ToolSummaryCard.js +0 -40
  1342. package/src/app/(dashboard)/dashboard/cli-tools/components/cliEndpointMatch.js +0 -13
  1343. package/src/app/(dashboard)/dashboard/cli-tools/components/index.js +0 -19
  1344. package/src/app/(dashboard)/dashboard/cli-tools/page.js +0 -7
  1345. package/src/app/(dashboard)/dashboard/combos/page.js +0 -615
  1346. package/src/app/(dashboard)/dashboard/console-log/ConsoleLogClient.js +0 -118
  1347. package/src/app/(dashboard)/dashboard/console-log/page.js +0 -8
  1348. package/src/app/(dashboard)/dashboard/context/page.js +0 -276
  1349. package/src/app/(dashboard)/dashboard/endpoint/EndpointPageClient.js +0 -1594
  1350. package/src/app/(dashboard)/dashboard/endpoint/endpointConstants.js +0 -32
  1351. package/src/app/(dashboard)/dashboard/endpoint/page.js +0 -7
  1352. package/src/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js +0 -1907
  1353. package/src/app/(dashboard)/dashboard/media-providers/[kind]/page.js +0 -289
  1354. package/src/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js +0 -413
  1355. package/src/app/(dashboard)/dashboard/media-providers/web/page.js +0 -209
  1356. package/src/app/(dashboard)/dashboard/mitm/MitmPageClient.js +0 -121
  1357. package/src/app/(dashboard)/dashboard/mitm/page.js +0 -5
  1358. package/src/app/(dashboard)/dashboard/page.js +0 -7
  1359. package/src/app/(dashboard)/dashboard/playground/page.js +0 -5
  1360. package/src/app/(dashboard)/dashboard/profile/page.js +0 -1284
  1361. package/src/app/(dashboard)/dashboard/providers/[id]/AddApiKeyModal.js +0 -389
  1362. package/src/app/(dashboard)/dashboard/providers/[id]/AddCustomModelModal.js +0 -126
  1363. package/src/app/(dashboard)/dashboard/providers/[id]/CompatibleModelsSection.js +0 -250
  1364. package/src/app/(dashboard)/dashboard/providers/[id]/ConnectionRow.js +0 -295
  1365. package/src/app/(dashboard)/dashboard/providers/[id]/CooldownTimer.js +0 -42
  1366. package/src/app/(dashboard)/dashboard/providers/[id]/EditCompatibleNodeModal.js +0 -162
  1367. package/src/app/(dashboard)/dashboard/providers/[id]/ModelRow.js +0 -99
  1368. package/src/app/(dashboard)/dashboard/providers/[id]/PassthroughModelsSection.js +0 -183
  1369. package/src/app/(dashboard)/dashboard/providers/[id]/page.js +0 -2170
  1370. package/src/app/(dashboard)/dashboard/providers/[id]/page.new.js +0 -1726
  1371. package/src/app/(dashboard)/dashboard/providers/components/ConnectionsCard.js +0 -486
  1372. package/src/app/(dashboard)/dashboard/providers/components/ModelAvailabilityBadge.js +0 -186
  1373. package/src/app/(dashboard)/dashboard/providers/components/ModelsCard.js +0 -295
  1374. package/src/app/(dashboard)/dashboard/providers/new/page.js +0 -220
  1375. package/src/app/(dashboard)/dashboard/providers/page.js +0 -1518
  1376. package/src/app/(dashboard)/dashboard/proxy-pools/page.js +0 -1107
  1377. package/src/app/(dashboard)/dashboard/pxpipe/PxpipeClient.js +0 -284
  1378. package/src/app/(dashboard)/dashboard/pxpipe/page.js +0 -5
  1379. package/src/app/(dashboard)/dashboard/quota/page.js +0 -11
  1380. package/src/app/(dashboard)/dashboard/terminal/TerminalPageClient.js +0 -735
  1381. package/src/app/(dashboard)/dashboard/terminal/page.js +0 -7
  1382. package/src/app/(dashboard)/dashboard/token-saver/TokenSaverClient.js +0 -1018
  1383. package/src/app/(dashboard)/dashboard/token-saver/page.js +0 -5
  1384. package/src/app/(dashboard)/dashboard/translator/page.js +0 -303
  1385. package/src/app/(dashboard)/dashboard/usage/components/OverviewCards.js +0 -87
  1386. package/src/app/(dashboard)/dashboard/usage/components/ProviderLimits/ProviderLimitCard.js +0 -183
  1387. package/src/app/(dashboard)/dashboard/usage/components/ProviderLimits/QuotaProgressBar.js +0 -127
  1388. package/src/app/(dashboard)/dashboard/usage/components/ProviderLimits/QuotaTable.js +0 -269
  1389. package/src/app/(dashboard)/dashboard/usage/components/ProviderLimits/index.js +0 -1571
  1390. package/src/app/(dashboard)/dashboard/usage/components/ProviderLimits/utils.js +0 -320
  1391. package/src/app/(dashboard)/dashboard/usage/components/ProviderTopology.js +0 -468
  1392. package/src/app/(dashboard)/dashboard/usage/components/RequestDetailsTab.js +0 -454
  1393. package/src/app/(dashboard)/dashboard/usage/components/UsageChart.js +0 -155
  1394. package/src/app/(dashboard)/dashboard/usage/components/UsageTable.js +0 -253
  1395. package/src/app/(dashboard)/dashboard/usage/page.js +0 -75
  1396. package/src/app/(dashboard)/layout.js +0 -6
  1397. package/src/app/api/auth/login/route.js +0 -76
  1398. package/src/app/api/auth/logout/route.js +0 -14
  1399. package/src/app/api/auth/oidc/callback/route.js +0 -87
  1400. package/src/app/api/auth/oidc/start/route.js +0 -52
  1401. package/src/app/api/auth/oidc/test/route.js +0 -86
  1402. package/src/app/api/auth/status/route.js +0 -45
  1403. package/src/app/api/cache/stats/route.js +0 -13
  1404. package/src/app/api/changelog/route.js +0 -48
  1405. package/src/app/api/cli-tools/all-statuses/route.js +0 -46
  1406. package/src/app/api/cli-tools/antigravity-mitm/alias/route.js +0 -53
  1407. package/src/app/api/cli-tools/antigravity-mitm/route.js +0 -202
  1408. package/src/app/api/cli-tools/claude-settings/route.js +0 -203
  1409. package/src/app/api/cli-tools/cline-settings/route.js +0 -133
  1410. package/src/app/api/cli-tools/codex-gateway/accounts/route.js +0 -16
  1411. package/src/app/api/cli-tools/codex-settings/route.js +0 -271
  1412. package/src/app/api/cli-tools/copilot-settings/route.js +0 -153
  1413. package/src/app/api/cli-tools/cowork-mcp-registry/route.js +0 -77
  1414. package/src/app/api/cli-tools/cowork-mcp-tools/route.js +0 -95
  1415. package/src/app/api/cli-tools/cowork-settings/route.js +0 -412
  1416. package/src/app/api/cli-tools/deepseek-tui-settings/route.js +0 -164
  1417. package/src/app/api/cli-tools/droid-settings/route.js +0 -213
  1418. package/src/app/api/cli-tools/hermes-settings/route.js +0 -175
  1419. package/src/app/api/cli-tools/jcode-settings/route.js +0 -216
  1420. package/src/app/api/cli-tools/kilo-settings/route.js +0 -131
  1421. package/src/app/api/cli-tools/openclaw-settings/route.js +0 -292
  1422. package/src/app/api/cli-tools/opencode-settings/route.js +0 -259
  1423. package/src/app/api/combos/[id]/route.js +0 -81
  1424. package/src/app/api/combos/route.js +0 -48
  1425. package/src/app/api/context/[id]/route.js +0 -35
  1426. package/src/app/api/context/bulk/route.js +0 -25
  1427. package/src/app/api/context/route.js +0 -33
  1428. package/src/app/api/dashboard/chat/completions/route.js +0 -74
  1429. package/src/app/api/dashboard/cli-tools/keys/route.js +0 -33
  1430. package/src/app/api/dashboard/media/[operation]/route.js +0 -60
  1431. package/src/app/api/headroom/extras/route.js +0 -46
  1432. package/src/app/api/headroom/proxy/[...path]/route.js +0 -104
  1433. package/src/app/api/headroom/restart/route.js +0 -35
  1434. package/src/app/api/headroom/start/route.js +0 -35
  1435. package/src/app/api/headroom/status/route.js +0 -18
  1436. package/src/app/api/headroom/stop/route.js +0 -14
  1437. package/src/app/api/health/ready/route.js +0 -21
  1438. package/src/app/api/health/route.js +0 -15
  1439. package/src/app/api/init/route.js +0 -12
  1440. package/src/app/api/keys/[id]/rotate/route.js +0 -14
  1441. package/src/app/api/keys/[id]/route.js +0 -119
  1442. package/src/app/api/keys/route.js +0 -56
  1443. package/src/app/api/locale/route.js +0 -30
  1444. package/src/app/api/mcp/[plugin]/message/route.js +0 -21
  1445. package/src/app/api/mcp/[plugin]/sse/route.js +0 -37
  1446. package/src/app/api/media-providers/tts/deepgram/voices/route.js +0 -65
  1447. package/src/app/api/media-providers/tts/elevenlabs/voices/route.js +0 -71
  1448. package/src/app/api/media-providers/tts/inworld/voices/route.js +0 -61
  1449. package/src/app/api/media-providers/tts/minimax/voices/route.js +0 -113
  1450. package/src/app/api/media-providers/tts/voices/route.js +0 -99
  1451. package/src/app/api/metrics/route.js +0 -33
  1452. package/src/app/api/models/alias/route.js +0 -53
  1453. package/src/app/api/models/availability/route.js +0 -103
  1454. package/src/app/api/models/custom/route.js +0 -48
  1455. package/src/app/api/models/disabled/route.js +0 -50
  1456. package/src/app/api/models/route.js +0 -68
  1457. package/src/app/api/models/test/ping.js +0 -191
  1458. package/src/app/api/models/test/route.js +0 -14
  1459. package/src/app/api/oauth/[provider]/[action]/route.js +0 -340
  1460. package/src/app/api/oauth/antigravity/bulk-import/[jobId]/cancel/route.js +0 -19
  1461. package/src/app/api/oauth/antigravity/bulk-import/[jobId]/manual/[workerId]/route.js +0 -30
  1462. package/src/app/api/oauth/antigravity/bulk-import/[jobId]/route.js +0 -23
  1463. package/src/app/api/oauth/antigravity/bulk-import/latest/route.js +0 -24
  1464. package/src/app/api/oauth/antigravity/bulk-import/route.js +0 -51
  1465. package/src/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/cancel/route.js +0 -19
  1466. package/src/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/manual/[workerId]/route.js +0 -30
  1467. package/src/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/route.js +0 -25
  1468. package/src/app/api/oauth/cloudflare-ai/bulk-import/latest/route.js +0 -27
  1469. package/src/app/api/oauth/cloudflare-ai/bulk-import/route.js +0 -56
  1470. package/src/app/api/oauth/codebuddy/bulk-import/[jobId]/cancel/route.js +0 -19
  1471. package/src/app/api/oauth/codebuddy/bulk-import/[jobId]/manual/[workerId]/route.js +0 -30
  1472. package/src/app/api/oauth/codebuddy/bulk-import/[jobId]/route.js +0 -23
  1473. package/src/app/api/oauth/codebuddy/bulk-import/latest/route.js +0 -25
  1474. package/src/app/api/oauth/codebuddy/bulk-import/route.js +0 -51
  1475. package/src/app/api/oauth/codebuddy/bulk-token/route.js +0 -118
  1476. package/src/app/api/oauth/codebuddy/quota-cookie/route.js +0 -133
  1477. package/src/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/cancel/route.js +0 -19
  1478. package/src/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/manual/[workerId]/route.js +0 -30
  1479. package/src/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/route.js +0 -26
  1480. package/src/app/api/oauth/codebuddy-cn/bulk-import/latest/route.js +0 -27
  1481. package/src/app/api/oauth/codebuddy-cn/bulk-import/route.js +0 -61
  1482. package/src/app/api/oauth/codebuddy-cn/bulk-token/route.js +0 -119
  1483. package/src/app/api/oauth/codebuddy-cn/quota-cookie/route.js +0 -28
  1484. package/src/app/api/oauth/codex/import-token/route.js +0 -96
  1485. package/src/app/api/oauth/cursor/auto-import/route.js +0 -257
  1486. package/src/app/api/oauth/cursor/import/route.js +0 -100
  1487. package/src/app/api/oauth/gitlab/pat/route.js +0 -62
  1488. package/src/app/api/oauth/iflow/cookie/route.js +0 -137
  1489. package/src/app/api/oauth/kiro/auto-import/route.js +0 -85
  1490. package/src/app/api/oauth/kiro/bulk-import/[jobId]/cancel/route.js +0 -19
  1491. package/src/app/api/oauth/kiro/bulk-import/[jobId]/manual/[workerId]/route.js +0 -30
  1492. package/src/app/api/oauth/kiro/bulk-import/[jobId]/route.js +0 -23
  1493. package/src/app/api/oauth/kiro/bulk-import/latest/route.js +0 -25
  1494. package/src/app/api/oauth/kiro/bulk-import/route.js +0 -51
  1495. package/src/app/api/oauth/kiro/import/route.js +0 -110
  1496. package/src/app/api/oauth/kiro/social-authorize/route.js +0 -27
  1497. package/src/app/api/oauth/kiro/social-exchange/route.js +0 -41
  1498. package/src/app/api/oauth/qoder/bulk-import/[jobId]/cancel/route.js +0 -19
  1499. package/src/app/api/oauth/qoder/bulk-import/[jobId]/manual/[workerId]/route.js +0 -30
  1500. package/src/app/api/oauth/qoder/bulk-import/[jobId]/route.js +0 -23
  1501. package/src/app/api/oauth/qoder/bulk-import/latest/route.js +0 -24
  1502. package/src/app/api/oauth/qoder/bulk-import/route.js +0 -49
  1503. package/src/app/api/pricing/route.js +0 -134
  1504. package/src/app/api/provider-nodes/[id]/route.js +0 -101
  1505. package/src/app/api/provider-nodes/route.js +0 -104
  1506. package/src/app/api/provider-nodes/validate/route.js +0 -201
  1507. package/src/app/api/providers/[id]/models/route.js +0 -605
  1508. package/src/app/api/providers/[id]/route.js +0 -251
  1509. package/src/app/api/providers/[id]/test/route.js +0 -23
  1510. package/src/app/api/providers/[id]/test/testUtils.js +0 -811
  1511. package/src/app/api/providers/[id]/test-models/route.js +0 -66
  1512. package/src/app/api/providers/bulk-delete/route.js +0 -60
  1513. package/src/app/api/providers/client/route.js +0 -136
  1514. package/src/app/api/providers/kilo/free-models/route.js +0 -55
  1515. package/src/app/api/providers/route.js +0 -278
  1516. package/src/app/api/providers/suggested-models/filters.js +0 -20
  1517. package/src/app/api/providers/suggested-models/route.js +0 -34
  1518. package/src/app/api/providers/test-batch/route.js +0 -131
  1519. package/src/app/api/providers/validate/route.js +0 -637
  1520. package/src/app/api/proxy-pools/[id]/route.js +0 -135
  1521. package/src/app/api/proxy-pools/[id]/test/route.js +0 -72
  1522. package/src/app/api/proxy-pools/cloudflare-deploy/route.js +0 -145
  1523. package/src/app/api/proxy-pools/deno-deploy/route.js +0 -175
  1524. package/src/app/api/proxy-pools/route.js +0 -112
  1525. package/src/app/api/proxy-pools/vercel-deploy/route.js +0 -142
  1526. package/src/app/api/pxpipe/health/route.js +0 -16
  1527. package/src/app/api/pxpipe/install/route.js +0 -20
  1528. package/src/app/api/pxpipe/logs/route.js +0 -21
  1529. package/src/app/api/pxpipe/restart/route.js +0 -16
  1530. package/src/app/api/pxpipe/start/route.js +0 -26
  1531. package/src/app/api/pxpipe/stats/route.js +0 -17
  1532. package/src/app/api/pxpipe/status/route.js +0 -21
  1533. package/src/app/api/pxpipe/stop/route.js +0 -16
  1534. package/src/app/api/settings/database/route.js +0 -36
  1535. package/src/app/api/settings/proxy-test/route.js +0 -23
  1536. package/src/app/api/settings/require-login/route.js +0 -15
  1537. package/src/app/api/settings/route.js +0 -115
  1538. package/src/app/api/shutdown/route.js +0 -24
  1539. package/src/app/api/tags/route.js +0 -18
  1540. package/src/app/api/terminal/auth/setup/route.js +0 -72
  1541. package/src/app/api/terminal/auth/status/route.js +0 -27
  1542. package/src/app/api/terminal/auth/unlock/route.js +0 -69
  1543. package/src/app/api/terminal/session/[id]/input/route.js +0 -32
  1544. package/src/app/api/terminal/session/[id]/resize/route.js +0 -18
  1545. package/src/app/api/terminal/session/[id]/route.js +0 -37
  1546. package/src/app/api/terminal/session/[id]/stream/route.js +0 -100
  1547. package/src/app/api/terminal/session/route.js +0 -30
  1548. package/src/app/api/translator/console-logs/route.js +0 -24
  1549. package/src/app/api/translator/console-logs/stream/route.js +0 -79
  1550. package/src/app/api/translator/load/route.js +0 -45
  1551. package/src/app/api/translator/save/route.js +0 -44
  1552. package/src/app/api/translator/send/route.js +0 -94
  1553. package/src/app/api/translator/translate/route.js +0 -90
  1554. package/src/app/api/tunnel/disable/route.js +0 -12
  1555. package/src/app/api/tunnel/enable/route.js +0 -16
  1556. package/src/app/api/tunnel/status/route.js +0 -13
  1557. package/src/app/api/tunnel/tailscale-check/route.js +0 -50
  1558. package/src/app/api/tunnel/tailscale-disable/route.js +0 -12
  1559. package/src/app/api/tunnel/tailscale-enable/route.js +0 -12
  1560. package/src/app/api/tunnel/tailscale-install/route.js +0 -72
  1561. package/src/app/api/usage/[connectionId]/route.js +0 -40
  1562. package/src/app/api/usage/aggregate/route.js +0 -126
  1563. package/src/app/api/usage/chart/route.js +0 -21
  1564. package/src/app/api/usage/history/route.js +0 -12
  1565. package/src/app/api/usage/logs/route.js +0 -12
  1566. package/src/app/api/usage/providers/route.js +0 -42
  1567. package/src/app/api/usage/request-details/route.js +0 -57
  1568. package/src/app/api/usage/request-logs/route.js +0 -13
  1569. package/src/app/api/usage/stats/route.js +0 -23
  1570. package/src/app/api/usage/stream/route.js +0 -142
  1571. package/src/app/api/v1/api/chat/route.js +0 -37
  1572. package/src/app/api/v1/audio/speech/route.js +0 -16
  1573. package/src/app/api/v1/audio/transcriptions/route.js +0 -19
  1574. package/src/app/api/v1/audio/voices/route.js +0 -68
  1575. package/src/app/api/v1/chat/completions/route.js +0 -35
  1576. package/src/app/api/v1/embeddings/route.js +0 -21
  1577. package/src/app/api/v1/images/generations/route.js +0 -16
  1578. package/src/app/api/v1/messages/count_tokens/route.js +0 -59
  1579. package/src/app/api/v1/messages/route.js +0 -36
  1580. package/src/app/api/v1/models/[kind]/route.js +0 -55
  1581. package/src/app/api/v1/models/info/route.js +0 -110
  1582. package/src/app/api/v1/models/route.js +0 -497
  1583. package/src/app/api/v1/responses/compact/route.js +0 -55
  1584. package/src/app/api/v1/responses/route.js +0 -30
  1585. package/src/app/api/v1/route.js +0 -1
  1586. package/src/app/api/v1/search/route.js +0 -21
  1587. package/src/app/api/v1/web/fetch/route.js +0 -21
  1588. package/src/app/api/v1beta/models/[...path]/route.js +0 -368
  1589. package/src/app/api/v1beta/models/route.js +0 -44
  1590. package/src/app/api/version/route.js +0 -198
  1591. package/src/app/api/version/shutdown/route.js +0 -15
  1592. package/src/app/api/version/update/route.js +0 -21
  1593. package/src/app/callback/page.js +0 -149
  1594. package/src/app/dashboard/settings/pricing/page.js +0 -174
  1595. package/src/app/globals.css +0 -659
  1596. package/src/app/landing/components/AnimatedBackground.js +0 -57
  1597. package/src/app/landing/components/Features.js +0 -133
  1598. package/src/app/landing/components/FlowAnimation.js +0 -175
  1599. package/src/app/landing/components/Footer.js +0 -61
  1600. package/src/app/landing/components/GetStarted.js +0 -97
  1601. package/src/app/landing/components/HeroSection.js +0 -72
  1602. package/src/app/landing/components/HowItWorks.js +0 -66
  1603. package/src/app/landing/components/Navigation.js +0 -77
  1604. package/src/app/landing/page.js +0 -106
  1605. package/src/app/layout.js +0 -48
  1606. package/src/app/login/page.js +0 -197
  1607. package/src/app/manifest.js +0 -30
  1608. package/src/app/page.js +0 -5
  1609. package/src/dashboardGuard.js +0 -288
  1610. package/src/i18n/RuntimeI18nProvider.js +0 -27
  1611. package/src/i18n/config.js +0 -146
  1612. package/src/i18n/runtime.js +0 -162
  1613. package/src/lib/alerter.js +0 -122
  1614. package/src/lib/appUpdater.js +0 -204
  1615. package/src/lib/auth/dashboardSession.js +0 -68
  1616. package/src/lib/auth/loginLimiter.js +0 -52
  1617. package/src/lib/auth/oidc.js +0 -303
  1618. package/src/lib/auth/terminalSession.js +0 -88
  1619. package/src/lib/autoclaw/constants.js +0 -63
  1620. package/src/lib/consoleLogBuffer.js +0 -79
  1621. package/src/lib/dataDir.js +0 -29
  1622. package/src/lib/db/adapters/betterSqliteAdapter.js +0 -58
  1623. package/src/lib/db/adapters/bunSqliteAdapter.js +0 -65
  1624. package/src/lib/db/adapters/nodeSqliteAdapter.js +0 -86
  1625. package/src/lib/db/adapters/sqljsAdapter.js +0 -207
  1626. package/src/lib/db/backup.js +0 -36
  1627. package/src/lib/db/dataDirMigration.js +0 -52
  1628. package/src/lib/db/driver.js +0 -131
  1629. package/src/lib/db/helpers/jsonCol.js +0 -9
  1630. package/src/lib/db/helpers/kvStore.js +0 -39
  1631. package/src/lib/db/helpers/metaStore.js +0 -22
  1632. package/src/lib/db/index.js +0 -218
  1633. package/src/lib/db/maintenance.js +0 -78
  1634. package/src/lib/db/migrate.js +0 -295
  1635. package/src/lib/db/migrations/001-initial.js +0 -17
  1636. package/src/lib/db/migrations/index.js +0 -10
  1637. package/src/lib/db/paths.js +0 -21
  1638. package/src/lib/db/repos/aliasRepo.js +0 -62
  1639. package/src/lib/db/repos/apiKeysRepo.js +0 -193
  1640. package/src/lib/db/repos/combosRepo.js +0 -73
  1641. package/src/lib/db/repos/connectionsRepo.js +0 -247
  1642. package/src/lib/db/repos/contextFilesRepo.js +0 -124
  1643. package/src/lib/db/repos/disabledModelsRepo.js +0 -56
  1644. package/src/lib/db/repos/nodesRepo.js +0 -95
  1645. package/src/lib/db/repos/pricingRepo.js +0 -108
  1646. package/src/lib/db/repos/proxyPoolsRepo.js +0 -103
  1647. package/src/lib/db/repos/quotaCacheRepo.js +0 -80
  1648. package/src/lib/db/repos/requestDetailsRepo.js +0 -275
  1649. package/src/lib/db/repos/settingsRepo.js +0 -120
  1650. package/src/lib/db/repos/usageRepo.js +0 -935
  1651. package/src/lib/db/schema.js +0 -193
  1652. package/src/lib/db/version.js +0 -21
  1653. package/src/lib/disabledModelsDb.js +0 -4
  1654. package/src/lib/headroom/detect.js +0 -192
  1655. package/src/lib/headroom/process.js +0 -327
  1656. package/src/lib/localDb.js +0 -26
  1657. package/src/lib/mcp/stdioSseBridge.js +0 -198
  1658. package/src/lib/mitmAliasCache.js +0 -46
  1659. package/src/lib/network/connectionProxy.js +0 -187
  1660. package/src/lib/network/initOutboundProxy.js +0 -25
  1661. package/src/lib/network/outboundProxy.js +0 -82
  1662. package/src/lib/network/proxyTest.js +0 -91
  1663. package/src/lib/oauth/constants/oauth.js +0 -337
  1664. package/src/lib/oauth/constants/xai.js +0 -61
  1665. package/src/lib/oauth/providers.js +0 -1821
  1666. package/src/lib/oauth/services/antigravity.js +0 -321
  1667. package/src/lib/oauth/services/antigravityBulkImportManager.js +0 -364
  1668. package/src/lib/oauth/services/autoclawTokenMonitor.js +0 -145
  1669. package/src/lib/oauth/services/bulkImportBrowserEngine.js +0 -756
  1670. package/src/lib/oauth/services/claude.js +0 -136
  1671. package/src/lib/oauth/services/cloudflareAiBulkImportManager.js +0 -503
  1672. package/src/lib/oauth/services/codebuddyAutomation.js +0 -6
  1673. package/src/lib/oauth/services/codebuddyBulkImportManager.js +0 -1033
  1674. package/src/lib/oauth/services/codebuddyCnBulkImportManager.js +0 -2088
  1675. package/src/lib/oauth/services/codebuddyCnPhoneAutomation.js +0 -1294
  1676. package/src/lib/oauth/services/codex.js +0 -144
  1677. package/src/lib/oauth/services/cursor.js +0 -179
  1678. package/src/lib/oauth/services/displayEnv.js +0 -134
  1679. package/src/lib/oauth/services/fiveSimClient.js +0 -567
  1680. package/src/lib/oauth/services/gemini.js +0 -240
  1681. package/src/lib/oauth/services/github.js +0 -225
  1682. package/src/lib/oauth/services/googleAutomation.js +0 -9
  1683. package/src/lib/oauth/services/iflow.js +0 -202
  1684. package/src/lib/oauth/services/index.js +0 -17
  1685. package/src/lib/oauth/services/kiro.js +0 -334
  1686. package/src/lib/oauth/services/kiroBulkImportManager.js +0 -1522
  1687. package/src/lib/oauth/services/kiroConnections.js +0 -93
  1688. package/src/lib/oauth/services/kiroGoogleAutomation.js +0 -2587
  1689. package/src/lib/oauth/services/oauth.js +0 -157
  1690. package/src/lib/oauth/services/openai.js +0 -123
  1691. package/src/lib/oauth/services/proxyUtils.js +0 -26
  1692. package/src/lib/oauth/services/qoder.js +0 -233
  1693. package/src/lib/oauth/services/qoderBulkImportManager.js +0 -340
  1694. package/src/lib/oauth/services/qwen.js +0 -170
  1695. package/src/lib/oauth/services/socksHttpBridge.js +0 -165
  1696. package/src/lib/oauth/services/tempmailClient.js +0 -288
  1697. package/src/lib/oauth/services/xai.js +0 -238
  1698. package/src/lib/oauth/utils/banner.js +0 -63
  1699. package/src/lib/oauth/utils/pkce.js +0 -39
  1700. package/src/lib/oauth/utils/server.js +0 -415
  1701. package/src/lib/oauth/utils/ui.js +0 -48
  1702. package/src/lib/providerConnectionSanitizer.js +0 -180
  1703. package/src/lib/providerNormalization.js +0 -45
  1704. package/src/lib/pxpipe/events.js +0 -125
  1705. package/src/lib/pxpipe/install.js +0 -123
  1706. package/src/lib/pxpipe/loader.js +0 -70
  1707. package/src/lib/pxpipe/service.js +0 -49
  1708. package/src/lib/qoder/constants.js +0 -64
  1709. package/src/lib/qoder/cosy.js +0 -175
  1710. package/src/lib/qoder/encoding.js +0 -55
  1711. package/src/lib/requestDetailsDb.js +0 -4
  1712. package/src/lib/responseCache.js +0 -169
  1713. package/src/lib/safeFetch.js +0 -167
  1714. package/src/lib/systemSpecs.js +0 -167
  1715. package/src/lib/terminal/ptyBridge.py +0 -163
  1716. package/src/lib/terminal/sessionManager.js +0 -434
  1717. package/src/lib/tunnel/cloudflare/cloudflared.js +0 -460
  1718. package/src/lib/tunnel/cloudflare/config.js +0 -9
  1719. package/src/lib/tunnel/cloudflare/healthCheck.js +0 -29
  1720. package/src/lib/tunnel/cloudflare/manager.js +0 -151
  1721. package/src/lib/tunnel/cloudflare/pid.js +0 -23
  1722. package/src/lib/tunnel/index.js +0 -48
  1723. package/src/lib/tunnel/shared/dnsResolver.js +0 -17
  1724. package/src/lib/tunnel/shared/internetCheck.js +0 -26
  1725. package/src/lib/tunnel/shared/state.js +0 -41
  1726. package/src/lib/tunnel/shared/watchdogConfig.js +0 -8
  1727. package/src/lib/tunnel/tailscale/config.js +0 -7
  1728. package/src/lib/tunnel/tailscale/healthCheck.js +0 -29
  1729. package/src/lib/tunnel/tailscale/manager.js +0 -129
  1730. package/src/lib/tunnel/tailscale/tailscale.js +0 -790
  1731. package/src/lib/updater/updater.js +0 -327
  1732. package/src/lib/usage/fetcher.js +0 -208
  1733. package/src/lib/usage/quotaRefresh.js +0 -100
  1734. package/src/lib/usage/quotaService.js +0 -206
  1735. package/src/lib/usageDb.js +0 -7
  1736. package/src/mitm/antigravityIdeVersion.js +0 -50
  1737. package/src/mitm/cert/generate.js +0 -32
  1738. package/src/mitm/cert/install.js +0 -274
  1739. package/src/mitm/cert/rootCA.js +0 -173
  1740. package/src/mitm/config.js +0 -87
  1741. package/src/mitm/dbReader.js +0 -22
  1742. package/src/mitm/dns/dnsConfig.js +0 -266
  1743. package/src/mitm/handlers/antigravity.js +0 -33
  1744. package/src/mitm/handlers/base.js +0 -226
  1745. package/src/mitm/handlers/copilot.js +0 -35
  1746. package/src/mitm/handlers/cursor.js +0 -15
  1747. package/src/mitm/handlers/kiro.js +0 -533
  1748. package/src/mitm/logger.js +0 -106
  1749. package/src/mitm/manager.js +0 -862
  1750. package/src/mitm/paths.js +0 -32
  1751. package/src/mitm/server.js +0 -447
  1752. package/src/mitm/winElevated.js +0 -81
  1753. package/src/models/index.js +0 -38
  1754. package/src/proxy.js +0 -5
  1755. package/src/shared/components/AddCustomEmbeddingModal.js +0 -184
  1756. package/src/shared/components/Avatar.js +0 -88
  1757. package/src/shared/components/Badge.js +0 -54
  1758. package/src/shared/components/BulkAccountAutomationModal.js +0 -640
  1759. package/src/shared/components/Button.js +0 -57
  1760. package/src/shared/components/Card.js +0 -116
  1761. package/src/shared/components/ChangelogModal.js +0 -108
  1762. package/src/shared/components/CodeBuddyCnPhoneRegisterModal.js +0 -563
  1763. package/src/shared/components/CodeBuddyQuotaCookieModal.js +0 -109
  1764. package/src/shared/components/ComboFormModal.js +0 -176
  1765. package/src/shared/components/CursorAuthModal.js +0 -213
  1766. package/src/shared/components/Drawer.js +0 -82
  1767. package/src/shared/components/EditConnectionModal.js +0 -287
  1768. package/src/shared/components/Footer.js +0 -132
  1769. package/src/shared/components/GitLabAuthModal.js +0 -194
  1770. package/src/shared/components/Header.js +0 -399
  1771. package/src/shared/components/HeaderLanguage.js +0 -48
  1772. package/src/shared/components/HeaderMenu.js +0 -127
  1773. package/src/shared/components/IFlowCookieModal.js +0 -132
  1774. package/src/shared/components/Input.js +0 -76
  1775. package/src/shared/components/KiroAuthModal.js +0 -1169
  1776. package/src/shared/components/KiroOAuthWrapper.js +0 -150
  1777. package/src/shared/components/KiroSocialOAuthModal.js +0 -205
  1778. package/src/shared/components/LanguageSwitcher.js +0 -192
  1779. package/src/shared/components/Loading.js +0 -75
  1780. package/src/shared/components/ManualConfigModal.js +0 -44
  1781. package/src/shared/components/McpMarketplaceModal.js +0 -255
  1782. package/src/shared/components/Modal.js +0 -196
  1783. package/src/shared/components/ModelSelectModal.js +0 -547
  1784. package/src/shared/components/NoAuthProxyCard.js +0 -134
  1785. package/src/shared/components/OAuthModal.js +0 -709
  1786. package/src/shared/components/Pagination.js +0 -150
  1787. package/src/shared/components/PricingModal.js +0 -209
  1788. package/src/shared/components/ProviderIcon.js +0 -68
  1789. package/src/shared/components/ProviderInfoCard.js +0 -82
  1790. package/src/shared/components/RequestLogger.js +0 -122
  1791. package/src/shared/components/SegmentedControl.js +0 -53
  1792. package/src/shared/components/Select.js +0 -67
  1793. package/src/shared/components/Sidebar.js +0 -486
  1794. package/src/shared/components/ThemeProvider.js +0 -15
  1795. package/src/shared/components/ThemeToggle.js +0 -42
  1796. package/src/shared/components/Toggle.js +0 -95
  1797. package/src/shared/components/Tooltip.js +0 -25
  1798. package/src/shared/components/UsageStats.js +0 -571
  1799. package/src/shared/components/index.js +0 -46
  1800. package/src/shared/components/layouts/AuthLayout.js +0 -29
  1801. package/src/shared/components/layouts/DashboardLayout.js +0 -121
  1802. package/src/shared/components/layouts/index.js +0 -4
  1803. package/src/shared/constants/automationProviders.js +0 -23
  1804. package/src/shared/constants/cliTools.js +0 -397
  1805. package/src/shared/constants/colors.js +0 -77
  1806. package/src/shared/constants/config.js +0 -98
  1807. package/src/shared/constants/coworkPlugins.js +0 -75
  1808. package/src/shared/constants/index.js +0 -4
  1809. package/src/shared/constants/locales.js +0 -36
  1810. package/src/shared/constants/mitmToolHosts.js +0 -12
  1811. package/src/shared/constants/models.js +0 -38
  1812. package/src/shared/constants/pricing.js +0 -311
  1813. package/src/shared/constants/providers.js +0 -450
  1814. package/src/shared/constants/ttsProviders.js +0 -138
  1815. package/src/shared/hooks/index.js +0 -2
  1816. package/src/shared/hooks/useCopyToClipboard.js +0 -43
  1817. package/src/shared/hooks/useModelLockUntil.js +0 -18
  1818. package/src/shared/hooks/useTheme.js +0 -60
  1819. package/src/shared/services/bootstrap.js +0 -12
  1820. package/src/shared/services/initializeApp.js +0 -294
  1821. package/src/shared/utils/api.js +0 -93
  1822. package/src/shared/utils/apiKey.js +0 -98
  1823. package/src/shared/utils/asyncPolling.js +0 -27
  1824. package/src/shared/utils/clineAuth.js +0 -37
  1825. package/src/shared/utils/cn.js +0 -11
  1826. package/src/shared/utils/codexCliConfig.js +0 -44
  1827. package/src/shared/utils/connectionStatus.js +0 -168
  1828. package/src/shared/utils/dashboardMedia.js +0 -19
  1829. package/src/shared/utils/index.js +0 -40
  1830. package/src/shared/utils/machine.js +0 -6
  1831. package/src/shared/utils/machineId.js +0 -66
  1832. package/src/shared/utils/modelLockTimer.js +0 -32
  1833. package/src/shared/utils/providerModelsFetcher.js +0 -30
  1834. package/src/shared/utils/usageStats.js +0 -10
  1835. package/src/sse/handlers/chat.js +0 -445
  1836. package/src/sse/handlers/embeddings.js +0 -141
  1837. package/src/sse/handlers/fetch.js +0 -213
  1838. package/src/sse/handlers/imageGeneration.js +0 -142
  1839. package/src/sse/handlers/search.js +0 -206
  1840. package/src/sse/handlers/streamFailure.js +0 -34
  1841. package/src/sse/handlers/stt.js +0 -88
  1842. package/src/sse/handlers/tts.js +0 -114
  1843. package/src/sse/services/auth.js +0 -576
  1844. package/src/sse/services/codexGateway.js +0 -215
  1845. package/src/sse/services/model.js +0 -99
  1846. package/src/sse/services/tokenRefresh.js +0 -319
  1847. package/src/sse/utils/logger.js +0 -75
  1848. package/src/store/headerSearchStore.js +0 -19
  1849. package/src/store/index.js +0 -6
  1850. package/src/store/notificationStore.js +0 -45
  1851. package/src/store/providerStore.js +0 -55
  1852. package/src/store/settingsStore.js +0 -51
  1853. package/src/store/themeStore.js +0 -54
  1854. package/src/store/userStore.js +0 -20
  1855. package/start.sh +0 -4
  1856. /package/cli/app/.next-cli-build/static/{SC3btW1lCuB9q-iyIwwWK → sRgS_5eNahHOIlOLEqVvI}/_buildManifest.js +0 -0
  1857. /package/cli/app/.next-cli-build/static/{SC3btW1lCuB9q-iyIwwWK → sRgS_5eNahHOIlOLEqVvI}/_ssgManifest.js +0 -0
@@ -1,2088 +0,0 @@
1
- /**
2
- * CodeBuddy CN (Tencent Cloud Code Assistant) Bulk Import Manager.
3
- *
4
- * Extends KiroBulkImportManager to provide bulk phone-number auto-registration
5
- * for CodeBuddy CN accounts via the 5sim.net SMS verification service.
6
- *
7
- * Unlike the global CodeBuddy manager (which uses Google/GSuite login), this
8
- * manager registers accounts using virtual phone numbers:
9
- * 1. Order a phone number from 5sim (default region: Hong Kong / +852)
10
- * 2. Drive Playwright to complete phone registration at www.codebuddy.cn
11
- * 3. After registration, initiate device-code OAuth in the same session
12
- * 4. Capture the OAuth token and save the provider connection
13
- *
14
- * Token-capture sequencing (key difference from global):
15
- * The device-code flow is initiated AFTER phone registration completes
16
- * (the browser must hold a logged-in session before navigating to the
17
- * device authorization URL).
18
- */
19
-
20
- import { randomUUID } from "crypto";
21
- import fs from "node:fs";
22
- import path from "node:path";
23
- import {
24
- KiroBulkImportManager,
25
- buildLookupResponse,
26
- createFreshContext,
27
- createLogEntry,
28
- clampConcurrency,
29
- nowIso,
30
- KIRO_BULK_IMPORT_DEFAULT_CONCURRENCY,
31
- KIRO_BULK_IMPORT_MAX_CONCURRENCY,
32
- KIRO_BULK_IMPORT_MIN_CONCURRENCY,
33
- } from "./kiroBulkImportManager.js";
34
- import { getProxyPools, getProxyPoolById } from "../../../models/index.js";
35
- import { getSettings } from "../../localDb.js";
36
- import { getOptimalWorkerCount, getSystemSpecs, isAutoConcurrencyValue } from "../../systemSpecs.js";
37
- import { redactCredentialText, redactCredentialUrl } from "../../providerConnectionSanitizer.js";
38
- import { CODEBUDDY_CN_CONFIG } from "../constants/oauth.js";
39
- import { FiveSimClient, FiveSimTimeoutError } from "./fiveSimClient.js";
40
- import { runCodeBuddyCnPhoneRegistration } from "./codebuddyCnPhoneAutomation.js";
41
- import {
42
- defaultRequestDeviceCode,
43
- defaultPollForToken,
44
- fetchCodeBuddyLoginAccount,
45
- } from "./codebuddyBulkImportManager.js";
46
- import {
47
- forceCloseBrowser,
48
- getCloakProxyProfile,
49
- parseProxyEgressIp,
50
- PROXY_EGRESS_ECHO_URLS,
51
- } from "./bulkImportBrowserEngine.js";
52
-
53
- const CODEBUDDY_CN_PROVIDER_ID = "codebuddy-cn";
54
- const CODEBUDDY_CN_LABEL = "CodeBuddy CN";
55
- const CODEBUDDY_CN_DOMAIN = "www.codebuddy.cn";
56
-
57
- // Default concurrency 1 to keep Chromium responsive on a 2GB VPS.
58
- const CODEBUDDY_CN_DEFAULT_CONCURRENCY = 1;
59
- const CODEBUDDY_CN_MAX_CONCURRENCY = 8;
60
- const CODEBUDDY_CN_MIN_CONCURRENCY = 1;
61
- // Hosts under this RAM hard-cap concurrency at 1 (typical cheap VPS = 1.9–2GB).
62
- const CODEBUDDY_CN_LOW_MEM_GB = 3;
63
-
64
- // Cap on count per job (bound cost/rate)
65
- const CODEBUDDY_CN_MAX_COUNT = 200;
66
-
67
- // Device-code poll timeout (15 min — same as global)
68
- const CODEBUDDY_CN_POLL_TIMEOUT_MS = 15 * 60_000;
69
-
70
- // SMS OTP timeout — if no SMS code arrives within 90s, ban the number immediately.
71
- // 90s = 60s target + 30s buffer for automation overhead (navigate, select country,
72
- // input phone, click send code takes ~15-20s before SMS is actually requested).
73
- const CODEBUDDY_CN_SMS_TIMEOUT_MS = 90_000;
74
-
75
- // Hard wall-clock for phone registration (nav + form + SMS). Console/API work
76
- // has separate bounded operations below.
77
- const CODEBUDDY_CN_ACCOUNT_HARD_TIMEOUT_MS = Number.parseInt(
78
- process.env.ZEVAI_CN_ACCOUNT_TIMEOUT_MS || "",
79
- 10,
80
- ) || 5 * 60_000;
81
-
82
- const CODEBUDDY_CN_BROWSER_LAUNCH_TIMEOUT_MS = 90_000;
83
- const CODEBUDDY_CN_CONTEXT_TIMEOUT_MS = 30_000;
84
- const CODEBUDDY_CN_CONSOLE_NAV_TIMEOUT_MS = 18_000;
85
- const CODEBUDDY_CN_CONSOLE_PROBE_TIMEOUT_MS = 10_000;
86
- const CODEBUDDY_CN_API_KEY_REQUEST_TIMEOUT_MS = 60_000;
87
- const CODEBUDDY_CN_OIDC_MAX_ATTEMPTS = 6;
88
- const CODEBUDDY_CN_API_REHANDOFF_ROUNDS = 2;
89
- const CODEBUDDY_CN_MANUAL_TIMEOUT_MS = 8 * 60_000;
90
- const CODEBUDDY_CN_LOW_MEM_MANUAL_TIMEOUT_MS = 3 * 60_000;
91
- const CODEBUDDY_CN_RESOURCE_CLOSE_TIMEOUT_MS = 5_000;
92
- const CODEBUDDY_CN_FIVESIM_SETTLE_TIMEOUT_MS = 12_000;
93
- const CODEBUDDY_CN_EGRESS_PROBE_TIMEOUT_MS = 6_000;
94
- const CODEBUDDY_CN_API_KEY_OUTCOME_UNKNOWN = "CN_API_KEY_OUTCOME_UNKNOWN";
95
- const CODEBUDDY_CN_API_KEY_RETRY_STOPPED = "CN_API_KEY_AUTOMATIC_RETRY_STOPPED";
96
- const CODEBUDDY_CN_ACCOUNT_RESTRICTED = "CN_ACCOUNT_RESTRICTED";
97
-
98
- // Supported 5sim regions
99
- const SUPPORTED_REGIONS = new Set(["hongkong", "china", "any"]);
100
- const DEFAULT_REGION = "hongkong";
101
- const ACTIVE_CN_JOB_STATUSES = new Set(["queued", "running", "needs_manual"]);
102
- const ACTIVE_CN_ACCOUNT_STATUSES = new Set(["queued", "running", "needs_manual"]);
103
-
104
- // Hard rule: each account buys exactly ONE 5sim number.
105
- // No prefix cancel/re-order loops — those burned balance when inventory
106
- // returned non-[52,54,57] prefixes (historically up to 15 buys per account).
107
-
108
- /**
109
- * Default phone formatter: strip the leading "+" for forms that expect
110
- * the number without the international prefix symbol.
111
- * The form may want just digits or the local portion; this can be overridden
112
- * via the `phoneFormatter` constructor option.
113
- */
114
- function defaultPhoneFormatter(phone) {
115
- // 5sim returns "+852XXXXXXXX" — keep the full E.164 format; the automation
116
- // module's parsePhoneNumber() will split it into country code + local number.
117
- return String(phone || "").trim();
118
- }
119
-
120
- function attachCnManualSession(account, context, page) {
121
- account.manualSession = {
122
- context,
123
- page,
124
- opened: false,
125
- openedAt: null,
126
- };
127
- return account.manualSession;
128
- }
129
-
130
- function findLatestPersistedCnJobId(storageDir) {
131
- try {
132
- const candidates = fs.readdirSync(storageDir)
133
- .filter((name) => name.endsWith(".json") && name !== "meta.json")
134
- .map((name) => {
135
- const filePath = path.join(storageDir, name);
136
- try {
137
- const snapshot = JSON.parse(fs.readFileSync(filePath, "utf8"));
138
- if (!snapshot?.jobId) return null;
139
- const createdAt = Date.parse(snapshot.createdAt || "");
140
- const sortTime = Number.isFinite(createdAt) ? createdAt : fs.statSync(filePath).mtimeMs;
141
- return { jobId: snapshot.jobId, sortTime };
142
- } catch {
143
- return null;
144
- }
145
- })
146
- .filter(Boolean)
147
- .sort((left, right) => right.sortTime - left.sortTime);
148
- return candidates[0]?.jobId || null;
149
- } catch {
150
- return null;
151
- }
152
- }
153
-
154
- function isLowMemHost() {
155
- try {
156
- const { totalMemGb } = getSystemSpecs();
157
- return Number.isFinite(totalMemGb) && totalMemGb > 0 && totalMemGb < CODEBUDDY_CN_LOW_MEM_GB;
158
- } catch {
159
- return false;
160
- }
161
- }
162
-
163
- function clampCnConcurrency(value) {
164
- const lowMem = isLowMemHost();
165
- const hardMax = lowMem ? 1 : CODEBUDDY_CN_MAX_CONCURRENCY;
166
- const def = lowMem ? 1 : CODEBUDDY_CN_DEFAULT_CONCURRENCY;
167
- if (isAutoConcurrencyValue(value)) {
168
- const optimal = getOptimalWorkerCount();
169
- return Math.min(hardMax, Math.max(CODEBUDDY_CN_MIN_CONCURRENCY, optimal));
170
- }
171
- const parsed = Number.parseInt(value, 10);
172
- if (!Number.isFinite(parsed)) return Math.min(hardMax, def);
173
- return Math.min(hardMax, Math.max(CODEBUDDY_CN_MIN_CONCURRENCY, parsed));
174
- }
175
-
176
- function resolveCnJobConcurrency(value, {
177
- manualProxy = false,
178
- processBoundProxy = false,
179
- } = {}) {
180
- // CloakBrowser applies GeoIP/WebRTC at process scope. Sharing one process
181
- // across context proxies leaks the first proxy's fingerprint into later
182
- // accounts, so every proxy-bound CN job must recycle sequentially.
183
- return manualProxy || processBoundProxy ? 1 : clampCnConcurrency(value);
184
- }
185
-
186
- function requiresIsolatedProxyBrowser(job) {
187
- return Boolean(job?.proxyUrls?.length)
188
- && ["manual", "all", "single"].includes(job?.proxyPoolMode);
189
- }
190
-
191
- function requireSelectedProxy(proxyPoolMode, proxyUrls) {
192
- if (!["all", "single"].includes(proxyPoolMode) || proxyUrls.length > 0) return;
193
- const message = proxyPoolMode === "single"
194
- ? "Selected proxy is missing or inactive; no automation was started"
195
- : "No active proxies are available in the selected pool; no automation was started";
196
- throw Object.assign(new Error(message), { error: message, code: "CN_PROXY_SELECTION_EMPTY" });
197
- }
198
-
199
- function parseEgressIp(value) {
200
- return parseProxyEgressIp(value);
201
- }
202
-
203
- async function probeCodeBuddyProxyEgress(
204
- context,
205
- { timeoutMs = CODEBUDDY_CN_EGRESS_PROBE_TIMEOUT_MS } = {},
206
- ) {
207
- let requestContext = null;
208
- try {
209
- requestContext = context?.request || null;
210
- } catch {
211
- requestContext = null;
212
- }
213
- if (!requestContext || typeof requestContext.get !== "function") {
214
- return { ok: false, ip: null, ips: [], samples: 0, error: "context request unavailable" };
215
- }
216
-
217
- const attemptedUrls = [];
218
- let lastError = null;
219
- for (const url of PROXY_EGRESS_ECHO_URLS) {
220
- attemptedUrls.push(url);
221
- let response = null;
222
- try {
223
- response = await requestContext.get(url, {
224
- timeout: timeoutMs,
225
- failOnStatusCode: false,
226
- headers: {
227
- Accept: "text/plain, application/json;q=0.9, */*;q=0.1",
228
- "Cache-Control": "no-cache",
229
- },
230
- });
231
- if (response.status() < 200 || response.status() >= 300) {
232
- lastError = `HTTP ${response.status()}`;
233
- continue;
234
- }
235
- const ip = parseEgressIp(await response.text().catch(() => ""));
236
- if (!ip) {
237
- lastError = "exit-IP response was not recognized";
238
- continue;
239
- }
240
- return {
241
- ok: true,
242
- ip,
243
- ips: [ip],
244
- samples: 1,
245
- attempts: attemptedUrls.length,
246
- attemptedUrls,
247
- unstable: false,
248
- error: null,
249
- };
250
- } catch (error) {
251
- lastError = error?.name === "TimeoutError"
252
- ? `timed out after ${timeoutMs}ms`
253
- : "request failed";
254
- } finally {
255
- if (typeof response?.dispose === "function") {
256
- await Promise.resolve(response.dispose()).catch(() => null);
257
- }
258
- }
259
- }
260
- return {
261
- ok: false,
262
- ip: null,
263
- ips: [],
264
- samples: 0,
265
- attempts: attemptedUrls.length,
266
- attemptedUrls,
267
- unstable: false,
268
- error: lastError || "all exit-IP services failed",
269
- };
270
- }
271
-
272
- function requireStableProxyEgress(probe, expectedIp = null) {
273
- if (probe?.unstable) {
274
- throw Object.assign(
275
- new Error("Manual proxy rotated between exit IPs during preflight; no phone number was purchased"),
276
- { code: "CN_PROXY_EGRESS_UNSTABLE" },
277
- );
278
- }
279
- if (!probe?.ok || !probe?.ip) {
280
- throw Object.assign(
281
- new Error(`Manual proxy exit IP could not be verified (${probe?.error || "no response"}); no phone number was purchased`),
282
- { code: "CN_PROXY_EGRESS_UNVERIFIED" },
283
- );
284
- }
285
- if (expectedIp && probe.ip !== expectedIp) {
286
- throw Object.assign(
287
- new Error("Manual proxy exit IP changed after CloakBrowser GeoIP alignment; no phone number was purchased"),
288
- { code: "CN_PROXY_EGRESS_CHANGED" },
289
- );
290
- }
291
- return probe.ip;
292
- }
293
-
294
- async function withTimeoutCleanup(
295
- task,
296
- {
297
- timeoutMs,
298
- message,
299
- code,
300
- onTimeout,
301
- onLateResolve,
302
- },
303
- ) {
304
- const operation = Promise.resolve(task);
305
- let timer = null;
306
- let timedOut = false;
307
- const timeout = new Promise((_, reject) => {
308
- timer = setTimeout(() => {
309
- timedOut = true;
310
- try {
311
- if (typeof onTimeout === "function") onTimeout();
312
- } catch {
313
- // Timeout reporting must not be replaced by cleanup callback failures.
314
- }
315
- reject(Object.assign(new Error(message), { code }));
316
- }, timeoutMs);
317
- if (typeof timer.unref === "function") timer.unref();
318
- });
319
-
320
- try {
321
- return await Promise.race([operation, timeout]);
322
- } finally {
323
- if (timer) clearTimeout(timer);
324
- if (timedOut && typeof onLateResolve === "function") {
325
- void operation.then(onLateResolve).catch(() => null);
326
- }
327
- }
328
- }
329
-
330
- function assertAutomaticApiKeyRetrySafe(result, label = "API key request") {
331
- const status = Number(result?.status);
332
- if (status === 429) {
333
- throw Object.assign(
334
- new Error(`${label} was rate limited (HTTP 429); automatic POST retries stopped`),
335
- { code: CODEBUDDY_CN_API_KEY_RETRY_STOPPED },
336
- );
337
- }
338
- if (Number.isFinite(status) && status >= 500) {
339
- throw Object.assign(
340
- new Error(`${label} returned HTTP ${status}; creation outcome may be unknown and automatic POST retries stopped`),
341
- { code: CODEBUDDY_CN_API_KEY_OUTCOME_UNKNOWN },
342
- );
343
- }
344
- return result;
345
- }
346
-
347
- function isApiKeyPostRetryStopped(error) {
348
- return error?.code === CODEBUDDY_CN_API_KEY_OUTCOME_UNKNOWN
349
- || error?.code === CODEBUDDY_CN_API_KEY_RETRY_STOPPED;
350
- }
351
-
352
- function isLoginHtmlProbe(probe) {
353
- const raw = `${probe?.text || ""} ${probe?.data?._raw || ""} ${probe?.url || ""}`;
354
- return /<!doctype html|<html|login-pf|\/auth\/realms\//i.test(raw);
355
- }
356
-
357
- function parseConsoleProbeBody(status, text, extras = {}) {
358
- const rawText = String(text || "");
359
- let data = null;
360
- try {
361
- data = rawText ? JSON.parse(rawText) : null;
362
- } catch {
363
- data = { _raw: rawText.slice(0, 240), _notJson: true };
364
- }
365
- return {
366
- status: Number(status) || 0,
367
- data,
368
- text: rawText.slice(0, 240),
369
- ...extras,
370
- };
371
- }
372
-
373
- function hasRestrictedConsoleEvidence(probe, cookieNames = []) {
374
- const names = cookieNames instanceof Set ? cookieNames : new Set(cookieNames);
375
- const raw = `${probe?.text || ""} ${probe?.data?._raw || ""}`;
376
- if (/账号访问受限|安全策略限制|访问受限|account restricted|access restricted/i.test(raw)) {
377
- return true;
378
- }
379
- if (!names.has("login_risk_state")) return false;
380
- return isLoginHtmlProbe(probe)
381
- || probe?.status === 0
382
- || probe?.status === 401
383
- || probe?.status === 403;
384
- }
385
-
386
- async function probeCodeBuddyConsoleAccounts({
387
- context,
388
- page,
389
- timeoutMs = CODEBUDDY_CN_CONSOLE_PROBE_TIMEOUT_MS,
390
- }) {
391
- const headers = {
392
- Accept: "application/json, text/plain, */*",
393
- "x-requested-with": "XMLHttpRequest",
394
- "X-Domain": "www.codebuddy.cn",
395
- "X-Product": "SaaS",
396
- };
397
-
398
- // The context request shares browser cookies but bypasses page-origin CORS.
399
- let requestContext = null;
400
- try {
401
- requestContext = context?.request || null;
402
- } catch {
403
- requestContext = null;
404
- }
405
- if (requestContext && typeof requestContext.get === "function") {
406
- try {
407
- const response = await requestContext.get(
408
- "https://www.codebuddy.cn/console/accounts",
409
- { headers, timeout: timeoutMs, failOnStatusCode: false },
410
- );
411
- const text = await response.text().catch(() => "");
412
- return parseConsoleProbeBody(response.status(), text, {
413
- source: "context-request",
414
- url: response.url(),
415
- contentType: response.headers()?.["content-type"] || "",
416
- });
417
- } catch {
418
- // Compatibility fallback for older CloakBrowser request contexts.
419
- }
420
- }
421
-
422
- const probeTask = page.evaluate(async ({ requestTimeoutMs, requestHeaders }) => {
423
- const controller = new AbortController();
424
- const timer = setTimeout(() => controller.abort(), requestTimeoutMs);
425
- try {
426
- const host = window.location.hostname || "www.codebuddy.cn";
427
- const base = host === "www.codebuddy.cn"
428
- ? `${window.location.origin}`
429
- : "https://www.codebuddy.cn";
430
- const response = await fetch(`${base}/console/accounts`, {
431
- credentials: "include",
432
- signal: controller.signal,
433
- headers: requestHeaders,
434
- });
435
- const text = await response.text().catch(() => "");
436
- let data = null;
437
- try {
438
- data = text ? JSON.parse(text) : null;
439
- } catch {
440
- data = { _raw: String(text || "").slice(0, 240), _notJson: true };
441
- }
442
- return {
443
- status: response.status,
444
- data,
445
- text: String(text || "").slice(0, 240),
446
- source: "page-fetch",
447
- url: response.url,
448
- contentType: response.headers.get("content-type") || "",
449
- };
450
- } catch (error) {
451
- return {
452
- status: 0,
453
- timedOut: error?.name === "AbortError",
454
- error: error?.message || String(error),
455
- source: "page-fetch",
456
- };
457
- } finally {
458
- clearTimeout(timer);
459
- }
460
- }, { requestTimeoutMs: timeoutMs, requestHeaders: headers });
461
-
462
- return withTimeoutCleanup(probeTask, {
463
- timeoutMs,
464
- message: `Console account probe timed out after ${timeoutMs / 1000}s`,
465
- code: "CN_CONSOLE_PROBE_TIMEOUT",
466
- }).catch((error) => ({
467
- status: 0,
468
- timedOut: error?.code === "CN_CONSOLE_PROBE_TIMEOUT",
469
- error: error?.message || String(error),
470
- source: "page-fetch",
471
- }));
472
- }
473
-
474
- async function closeResourceBounded(resource) {
475
- if (!resource || typeof resource.close !== "function") return true;
476
- try {
477
- await withTimeoutCleanup(Promise.resolve().then(() => resource.close()), {
478
- timeoutMs: CODEBUDDY_CN_RESOURCE_CLOSE_TIMEOUT_MS,
479
- message: `Browser resource close timed out after ${CODEBUDDY_CN_RESOURCE_CLOSE_TIMEOUT_MS / 1000}s`,
480
- code: "CN_RESOURCE_CLOSE_TIMEOUT",
481
- });
482
- return true;
483
- } catch {
484
- return false;
485
- }
486
- }
487
-
488
- async function closeContextOrBrowser(context, job) {
489
- if (await closeResourceBounded(context)) return;
490
- if (!job?.browser) return;
491
- const browser = job.browser;
492
- job.browser = null;
493
- await forceCloseBrowser(browser).catch(() => null);
494
- }
495
-
496
- async function settleFiveSimOrder(operation) {
497
- try {
498
- return await withTimeoutCleanup(Promise.resolve().then(operation), {
499
- timeoutMs: CODEBUDDY_CN_FIVESIM_SETTLE_TIMEOUT_MS,
500
- message: `5sim order settlement timed out after ${CODEBUDDY_CN_FIVESIM_SETTLE_TIMEOUT_MS / 1000}s`,
501
- code: "CN_FIVESIM_SETTLE_TIMEOUT",
502
- });
503
- } catch {
504
- // Finish/cancel/ban are best-effort and must not hold the browser worker.
505
- return false;
506
- }
507
- }
508
-
509
- /**
510
- * Save a CodeBuddy CN provider connection to the database.
511
- */
512
- async function defaultSaveCodeBuddyCnConnection({ apiKey, phone, region, fiveSimOrderId, account }) {
513
- const { createProviderConnection } = await import("../../../models/index.js");
514
-
515
- const providerSpecificData = {
516
- domain: CODEBUDDY_CN_DOMAIN,
517
- phoneNumber: phone,
518
- fiveSimOrderId,
519
- region,
520
- automation: "5sim-phone-bulk",
521
- };
522
-
523
- const connectionData = {
524
- provider: CODEBUDDY_CN_PROVIDER_ID,
525
- // Must be "apikey" (no hyphen) — quotaService only treats that as usage-eligible.
526
- authType: "apikey",
527
- apiKey,
528
- accessToken: apiKey,
529
- // Prefer name so provider list shows the phone (email alone is often hidden).
530
- name: phone || `5sim-${fiveSimOrderId}`,
531
- email: phone || `5sim-${fiveSimOrderId}`,
532
- providerSpecificData,
533
- testStatus: "active",
534
- };
535
-
536
- const connection = await createProviderConnection(connectionData);
537
- return { connection };
538
- }
539
-
540
- /**
541
- * CodeBuddy CN Bulk Import Manager.
542
- *
543
- * @extends KiroBulkImportManager
544
- */
545
- export class CodeBuddyCnBulkImportManager extends KiroBulkImportManager {
546
- constructor({
547
- browserLauncher,
548
- requestDeviceCodeFn = defaultRequestDeviceCode,
549
- pollToken = defaultPollForToken,
550
- fetchLoginAccountFn = fetchCodeBuddyLoginAccount,
551
- saveConnection = defaultSaveCodeBuddyCnConnection,
552
- fiveSimClientFactory = defaultFiveSimClientFactory,
553
- phoneAutomation = runCodeBuddyCnPhoneRegistration,
554
- phoneFormatter = defaultPhoneFormatter,
555
- pollIntervalMs = CODEBUDDY_CN_CONFIG.pollInterval,
556
- storageName = "codebuddy-cn-bulk-import",
557
- } = {}) {
558
- // CloakBrowser-only: proxy on launch + geoip. Headed by default (Turnstile/Tencent).
559
- // Override: ZEVAI_CN_HEADLESS=0|1
560
- const cnBrowserLauncher = browserLauncher || (async (job) => {
561
- const {
562
- forceCloseBrowser,
563
- launchBulkImportBrowser,
564
- } = await import("./bulkImportBrowserEngine.js");
565
- const proxyUrl = Array.isArray(job?.proxyUrls) && job.proxyUrls.length
566
- ? job.proxyUrls[0]
567
- : null;
568
- const envHeadless = process.env.ZEVAI_CN_HEADLESS;
569
- let headless = false;
570
- if (envHeadless === "0" || envHeadless === "false") headless = false;
571
- if (envHeadless === "1" || envHeadless === "true") headless = true;
572
- const launchTask = launchBulkImportBrowser({
573
- engine: job?.engine || "cloakbrowser",
574
- proxyUrl,
575
- headless,
576
- windowSize: { width: 1280, height: 900 },
577
- requireProxyGeoip: job?.proxyPoolMode === "manual" && Boolean(proxyUrl),
578
- });
579
- return withTimeoutCleanup(launchTask, {
580
- timeoutMs: CODEBUDDY_CN_BROWSER_LAUNCH_TIMEOUT_MS,
581
- message: `CloakBrowser launch timed out after ${CODEBUDDY_CN_BROWSER_LAUNCH_TIMEOUT_MS / 1000}s`,
582
- code: "CN_BROWSER_LAUNCH_TIMEOUT",
583
- onLateResolve: (browser) => forceCloseBrowser(browser),
584
- });
585
- });
586
- super({ browserLauncher: cnBrowserLauncher, storageName });
587
- if (!this.latestJobId || !this.readPersistedJob(this.latestJobId)) {
588
- this.latestJobId = findLatestPersistedCnJobId(this.storageDir);
589
- if (this.latestJobId) this.persistLatestJobId(this.latestJobId);
590
- }
591
- this.requestDeviceCode = requestDeviceCodeFn;
592
- this.pollToken = pollToken;
593
- this.fetchLoginAccount = fetchLoginAccountFn;
594
- this.saveConnection = saveConnection;
595
- this.fiveSimClientFactory = fiveSimClientFactory;
596
- this.phoneAutomation = phoneAutomation;
597
- this.phoneFormatter = phoneFormatter;
598
- this.pollIntervalMs = pollIntervalMs;
599
- }
600
-
601
- /**
602
- * Override startJob to accept count-based input instead of email:password list.
603
- *
604
- * @param {object} opts
605
- * @param {number} opts.count Number of accounts to register
606
- * @param {string|number} opts.concurrency
607
- * @param {string} opts.proxyPoolMode none|all|single
608
- * @param {string} [opts.proxyPoolId]
609
- * @param {string} [opts.region] 5sim region (hongkong|china|any)
610
- */
611
- async startJob({ count, concurrency, proxyPoolMode, proxyPoolId, manualProxyUrl, region }) {
612
- // Validate count
613
- const countNum = Number.parseInt(count, 10);
614
- if (!Number.isFinite(countNum) || countNum < 1) {
615
- throw Object.assign(new Error("At least one account is required (count >= 1)"), {
616
- error: "At least one account is required (count >= 1)",
617
- });
618
- }
619
- if (countNum > CODEBUDDY_CN_MAX_COUNT) {
620
- throw Object.assign(new Error(`Count exceeds maximum of ${CODEBUDDY_CN_MAX_COUNT}`), {
621
- error: `Count exceeds maximum of ${CODEBUDDY_CN_MAX_COUNT}`,
622
- });
623
- }
624
-
625
- // Terminalize an interrupted persisted job before checking in-memory work.
626
- // CN jobs cannot resume a browser/OTP session safely after process restart.
627
- if (this.latestJobId && !this.jobs.has(this.latestJobId)) {
628
- this.getJob(this.latestJobId);
629
- }
630
-
631
- // Block concurrent jobs — double Start / overlapping runs = multiple 5sim buys.
632
- const activeJob = [...this.jobs.values()].find((j) =>
633
- j && (j.status === "running" || j.status === "queued" || j.status === "needs_manual") && !j.cancelRequested
634
- );
635
- if (activeJob) {
636
- throw Object.assign(
637
- new Error(`Another CodeBuddy CN job is still active (${activeJob.jobId}). Cancel it or wait before starting again.`),
638
- { error: `Another CodeBuddy CN job is still active (${activeJob.jobId}). Cancel it or wait before starting again.` },
639
- );
640
- }
641
-
642
- // Validate region
643
- const resolvedRegion = SUPPORTED_REGIONS.has(region) ? region : DEFAULT_REGION;
644
-
645
- // Resolve proxy URLs: manual URL takes precedence over pool selection.
646
- let proxyUrls = [];
647
- const manualProxy = typeof manualProxyUrl === "string" ? manualProxyUrl.trim() : "";
648
- if (manualProxy) {
649
- // Basic scheme check — Playwright needs a parseable http(s)/socks URL.
650
- if (!/^(https?|socks4|socks5):\/\/.+/i.test(manualProxy)) {
651
- throw Object.assign(
652
- new Error("manualProxyUrl must be a valid proxy URL (http://, https://, socks4://, or socks5://)"),
653
- { error: "manualProxyUrl must be a valid proxy URL (http://, https://, socks4://, or socks5://)" },
654
- );
655
- }
656
- proxyUrls = [manualProxy];
657
- } else if (proxyPoolMode === "all") {
658
- const pools = await getProxyPools({ isActive: true });
659
- proxyUrls = pools.map((p) => p.proxyUrl).filter(Boolean);
660
- } else if (proxyPoolMode === "single" && proxyPoolId) {
661
- const pool = await getProxyPoolById(proxyPoolId);
662
- if (pool?.isActive && pool?.proxyUrl) {
663
- proxyUrls = [pool.proxyUrl];
664
- }
665
- }
666
- if (!manualProxy) requireSelectedProxy(proxyPoolMode, proxyUrls);
667
-
668
- const jobId = randomUUID();
669
- const createdAt = nowIso();
670
- const job = {
671
- jobId,
672
- status: "running",
673
- concurrency: resolveCnJobConcurrency(concurrency, {
674
- manualProxy: Boolean(manualProxy),
675
- processBoundProxy: proxyUrls.length > 0,
676
- }),
677
- proxyPoolMode: manualProxy ? "manual" : (proxyPoolMode || "none"),
678
- proxyUrls,
679
- region: resolvedRegion,
680
- createdAt,
681
- startedAt: createdAt,
682
- finishedAt: null,
683
- error: null,
684
- cancelRequested: false,
685
- browser: null,
686
- nextIndex: 0,
687
- manualFollowups: new Set(),
688
- persistPromise: Promise.resolve(),
689
- lastPreview: null,
690
- lastPreviewCapturedAt: 0,
691
- accounts: Array.from({ length: countNum }, (_, index) => ({
692
- line: index + 1,
693
- region: resolvedRegion,
694
- phone: null,
695
- fiveSimOrderId: null,
696
- fiveSimActivationId: null,
697
- // Unique Chromium fingerprint seed per account (viewport/HW/screen noise).
698
- fingerprintSeed: randomUUID(),
699
- proxyUrl: null,
700
- egressIp: null,
701
- proxyTimezone: null,
702
- proxyLocale: null,
703
- abortController: new AbortController(),
704
- status: "queued",
705
- error: null,
706
- connectionId: null,
707
- workerId: null,
708
- manualSession: null,
709
- runtimeSession: null,
710
- currentStep: "queued",
711
- updatedAt: createdAt,
712
- logs: [createLogEntry("queued", "Queued and waiting for an available worker")],
713
- })),
714
- };
715
-
716
- this.jobs.set(jobId, job);
717
- this.latestJobId = jobId;
718
- this.persistLatestJobId(jobId);
719
- await this.persistJobSnapshot(job, { forcePreview: false });
720
- // Note: we skip persistResumeBlob (encrypted vault) since there are no
721
- // static credentials to resume — each account gets a fresh 5sim number.
722
- void this.runJob(jobId);
723
- return sanitizeCnJob(job);
724
- }
725
-
726
- buildPersistedSnapshot(job) {
727
- return sanitizeCnJob(job, { preview: job.lastPreview || null });
728
- }
729
-
730
- terminalizeInterruptedSnapshot(snapshot) {
731
- if (!snapshot || !ACTIVE_CN_JOB_STATUSES.has(snapshot.status)) return snapshot;
732
- const message =
733
- "CodeBuddy CN job was interrupted by a service restart. Browser and OTP sessions cannot be resumed safely; start a new job.";
734
- const accounts = (snapshot.accounts || []).map((account) => {
735
- if (!ACTIVE_CN_ACCOUNT_STATUSES.has(account.status)) return account;
736
- const log = createLogEntry("failed", message, "error");
737
- return {
738
- ...account,
739
- status: "failed",
740
- error: message,
741
- currentStep: "failed",
742
- updatedAt: log.at,
743
- manualSessionAvailable: false,
744
- logs: [...(account.logs || []), log].slice(-40),
745
- };
746
- });
747
- const terminal = {
748
- ...snapshot,
749
- status: "failed",
750
- error: snapshot.error || message,
751
- finishedAt: snapshot.finishedAt || nowIso(),
752
- accounts,
753
- summary: buildCnSummary(accounts),
754
- preview: null,
755
- };
756
- this.writePersistedJob(snapshot.jobId, terminal);
757
- return terminal;
758
- }
759
-
760
- // Base sanitizeJob only keeps email — CN accounts need phone/order fields in API responses.
761
- getJob(jobId) {
762
- const job = this.jobs.get(jobId);
763
- if (job) return sanitizeCnJob(job);
764
- const snapshot = this.readPersistedJob(jobId);
765
- return snapshot ? this.terminalizeInterruptedSnapshot(snapshot) : null;
766
- }
767
-
768
- async getJobWithPreview(jobId) {
769
- const job = this.jobs.get(jobId);
770
- if (!job) return this.getJob(jobId);
771
- await this.persistJobSnapshot(job, { forcePreview: false });
772
- return sanitizeCnJob(job, { preview: job.lastPreview || null });
773
- }
774
-
775
- /**
776
- * Override processAccount — the core phone-registration + device-code-token flow.
777
- */
778
- async processAccount(job, account, workerId) {
779
- if (job.cancelRequested || !job.browser) {
780
- this.finalizeAccount(account, "cancelled", { error: "Job cancelled" });
781
- return;
782
- }
783
-
784
- let fiveSimClient = null;
785
- let fiveSimOrderId = null;
786
- let smsReceived = false;
787
- let context = null;
788
- let verifiedEgressIp = null;
789
-
790
- try {
791
- // Step 1: Get 5sim API key from settings
792
- this.setAccountStep(account, "reading_settings", "Reading 5sim API key from settings");
793
- await this.persistJobSnapshot(job, { forcePreview: true });
794
-
795
- const settings = await getSettings();
796
- const fiveSimApiKey = settings.fiveSimApiKey;
797
- if (!fiveSimApiKey || !fiveSimApiKey.trim()) {
798
- this.finalizeAccount(account, "failed", {
799
- error: "5sim API key not configured. Set it in the automation modal or dashboard settings.",
800
- step: "failed",
801
- message: "5sim API key not configured",
802
- });
803
- await this.persistJobSnapshot(job, { forcePreview: true });
804
- return;
805
- }
806
-
807
- // 5sim API must be direct — China residential proxy often cannot reach 5sim.net.
808
- // Proxy is only for the Playwright browser session (codebuddy.cn geo).
809
- fiveSimClient = this.fiveSimClientFactory({ apiKey: fiveSimApiKey, proxyOptions: null });
810
-
811
- // Step 2: Create browser context FIRST — if proxy/browser fails, we never buy a number.
812
- this.setAccountStep(account, "creating_browser", "Creating browser context (before 5sim order)");
813
- await this.persistJobSnapshot(job, { forcePreview: true });
814
- // CloakBrowser owns the process-wide fingerprint, timezone, locale, and
815
- // WebRTC profile. Playwright context overrides would reintroduce CDP tells.
816
- const contextTask = createFreshContext(job.browser, account.proxyUrl, {
817
- profile: "codebuddy-cn",
818
- region: job.region || "hongkong",
819
- fingerprintSeed: account.fingerprintSeed,
820
- lowMemory: isLowMemHost(),
821
- nativeCloakProfile: requiresIsolatedProxyBrowser(job) && Boolean(account.proxyUrl),
822
- });
823
- const freshContext = await withTimeoutCleanup(contextTask, {
824
- timeoutMs: CODEBUDDY_CN_CONTEXT_TIMEOUT_MS,
825
- message: `Browser context creation timed out after ${CODEBUDDY_CN_CONTEXT_TIMEOUT_MS / 1000}s`,
826
- code: "CN_CONTEXT_TIMEOUT",
827
- onLateResolve: (session) => Promise.resolve(session?.context?.close?.()).catch(() => null),
828
- });
829
- context = freshContext.context;
830
- const page = freshContext.page;
831
- account.runtimeSession = { context, page };
832
-
833
- if (job.proxyPoolMode === "manual" && account.proxyUrl) {
834
- this.setAccountStep(
835
- account,
836
- "checking_proxy_egress",
837
- "Verifying pasted proxy exit IP before opening the registration form",
838
- );
839
- await this.persistJobSnapshot(job, { forcePreview: false });
840
- const launchProfile = getCloakProxyProfile(job.browser);
841
- const egressProbe = await probeCodeBuddyProxyEgress(context);
842
- verifiedEgressIp = requireStableProxyEgress(egressProbe, launchProfile?.egressIp || null);
843
- account.egressIp = verifiedEgressIp;
844
- account.proxyTimezone = launchProfile?.timezone || null;
845
- account.proxyLocale = launchProfile?.locale || null;
846
- this.setAccountStep(
847
- account,
848
- "proxy_egress_ready",
849
- `Manual proxy verified: ${verifiedEgressIp} (${egressProbe.samples} checks, ${account.proxyTimezone || "timezone unknown"}, ${account.proxyLocale || "locale unknown"})`,
850
- );
851
- await this.persistJobSnapshot(job, { forcePreview: false });
852
- }
853
-
854
- if (job.cancelRequested) {
855
- throw new Error("Job cancelled before ordering phone number");
856
- }
857
-
858
- // Step 3–5: Navigate form FIRST, then buy number, then poll SMS after send-code.
859
- // This prevents the two balance-burners:
860
- // 1) Order then fail on proxy/nav → wasted number
861
- // 2) Start 90s SMS timer before send-code → false sms_timeout after slow nav
862
- this.setAccountStep(account, "registering", "Running phone registration on CodeBuddy CN");
863
- await this.persistJobSnapshot(job, { forcePreview: true });
864
-
865
- // Page-level timeouts so a stuck network never outlives the hard wall-clock.
866
- try {
867
- page.setDefaultTimeout(20_000);
868
- page.setDefaultNavigationTimeout(45_000);
869
- } catch {
870
- // older playwright builds may not expose these
871
- }
872
-
873
- const hardTimeoutMs = CODEBUDDY_CN_ACCOUNT_HARD_TIMEOUT_MS;
874
- let hardTimer = null;
875
- const hardTimeoutPromise = new Promise((_, reject) => {
876
- hardTimer = setTimeout(() => {
877
- const timeoutError = Object.assign(
878
- new Error(
879
- `CodeBuddy CN account hard timeout after ${Math.round(hardTimeoutMs / 1000)}s (browser will be force-closed)`,
880
- ),
881
- { code: "CN_ACCOUNT_HARD_TIMEOUT" },
882
- );
883
- if (account.abortController && !account.abortController.signal.aborted) {
884
- account.abortController.abort(timeoutError);
885
- }
886
- reject(timeoutError);
887
- }, hardTimeoutMs);
888
- if (typeof hardTimer.unref === "function") hardTimer.unref();
889
- });
890
-
891
- let automationResult;
892
- try {
893
- automationResult = await Promise.race([
894
- this.phoneAutomation({
895
- page,
896
- signal: account.abortController?.signal,
897
- isCancelled: () => job.cancelRequested === true,
898
- resolvePhone: async () => {
899
- if (job.cancelRequested) {
900
- throw new Error("Job cancelled before ordering phone number");
901
- }
902
- if (job.proxyPoolMode === "manual" && account.proxyUrl) {
903
- this.setAccountStep(
904
- account,
905
- "rechecking_proxy_egress",
906
- "Registration form is ready — confirming the pasted proxy stayed sticky",
907
- );
908
- await this.persistJobSnapshot(job, { forcePreview: false });
909
- const secondProbe = await probeCodeBuddyProxyEgress(context);
910
- requireStableProxyEgress(secondProbe, verifiedEgressIp);
911
- this.setAccountStep(
912
- account,
913
- "proxy_egress_confirmed",
914
- `Manual proxy remained on ${verifiedEgressIp}; safe to purchase one phone number`,
915
- );
916
- await this.persistJobSnapshot(job, { forcePreview: false });
917
- }
918
- this.setAccountStep(
919
- account,
920
- "ordering_number",
921
- `Form ready — ordering ${job.region} phone from 5sim (single buy)`,
922
- );
923
- await this.persistJobSnapshot(job, { forcePreview: true });
924
-
925
- const numberData = await fiveSimClient.buyNumber({
926
- country: job.region,
927
- product: "codebuddy",
928
- allowProductFallback: false,
929
- signal: account.abortController?.signal,
930
- });
931
- fiveSimOrderId = numberData.id;
932
- account.phone = numberData.phone;
933
- account.fiveSimOrderId = numberData.id;
934
- account.fiveSimActivationId = numberData.id;
935
- this.setAccountStep(
936
- account,
937
- "number_ordered",
938
- `Phone number ordered: ${numberData.phone} (1 buy, no re-order)`,
939
- );
940
- await this.persistJobSnapshot(job, { forcePreview: true });
941
- return numberData.phone;
942
- },
943
- waitForSms: async () => {
944
- if (!fiveSimOrderId) {
945
- throw new Error("Cannot poll SMS — no 5sim order id");
946
- }
947
- this.setAccountStep(
948
- account,
949
- "sms_poll_started",
950
- `SMS poll started (full ${CODEBUDDY_CN_SMS_TIMEOUT_MS / 1000}s window after send-code)`,
951
- );
952
- await this.persistJobSnapshot(job, { forcePreview: false });
953
- const code = await fiveSimClient.pollCode(fiveSimOrderId, {
954
- timeoutMs: CODEBUDDY_CN_SMS_TIMEOUT_MS,
955
- signal: account.abortController?.signal,
956
- });
957
- smsReceived = true;
958
- return code;
959
- },
960
- onStep: (step, message) => {
961
- this.setAccountStep(account, step, message);
962
- void this.persistJobSnapshot(job, { forcePreview: false });
963
- },
964
- phoneFormatter: this.phoneFormatter,
965
- }),
966
- hardTimeoutPromise,
967
- ]);
968
- } finally {
969
- if (hardTimer) clearTimeout(hardTimer);
970
- }
971
-
972
- // Step 6: Try API key capture only if automation reached at least the submit step.
973
- // If automation failed early (e.g. page.goto timeout), the session won't be logged in
974
- // and API key creation will 401 — so don't waste time. Only try bypass if automation
975
- // reported "success" or "needs_manual" (meaning submit happened).
976
- if (String(automationResult.status || "").startsWith("failed")) {
977
- // Automation failed before submit — no point trying API key
978
- const errorMsg = automationResult.error || "Phone registration failed before submit";
979
- const failureStatus = automationResult.status || "failed";
980
- this.finalizeAccount(account, failureStatus, {
981
- error: errorMsg,
982
- step: failureStatus,
983
- message: errorMsg,
984
- });
985
- // Only touch 5sim if we actually bought a number (order is deferred until form ready)
986
- if (fiveSimClient && fiveSimOrderId) {
987
- if (smsReceived) {
988
- await settleFiveSimOrder(() => fiveSimClient.finishOrder(fiveSimOrderId));
989
- } else {
990
- await settleFiveSimOrder(() => fiveSimClient.cancelOrder(fiveSimOrderId));
991
- }
992
- }
993
- account.runtimeSession = null;
994
- await closeContextOrBrowser(context, job);
995
- await this.persistJobSnapshot(job, { forcePreview: true });
996
- return;
997
- }
998
-
999
- // Automation reached submit (success or needs_manual) — try API key bypass
1000
- await this.captureApiKey(job, account, context, page, fiveSimClient, fiveSimOrderId);
1001
- return;
1002
- } catch (error) {
1003
- // SMS timeout (60s, no OTP) → BAN the number (bad number that doesn't receive CodeBuddy SMS)
1004
- const isSmsTimeout = error instanceof FiveSimTimeoutError;
1005
- const cancelled = job.cancelRequested || error?.code === "JOB_CANCELLED";
1006
- const failReason = cancelled
1007
- ? "Job cancelled"
1008
- : isSmsTimeout
1009
- ? `SMS OTP not received within ${CODEBUDDY_CN_SMS_TIMEOUT_MS / 1000}s — number banned`
1010
- : (error.message || "Unexpected CodeBuddy CN bulk import failure");
1011
-
1012
- this.finalizeAccount(account, cancelled ? "cancelled" : "failed", {
1013
- error: failReason,
1014
- step: cancelled ? "cancelled" : isSmsTimeout ? "sms_timeout" : "failed",
1015
- message: failReason,
1016
- });
1017
- // 5sim hygiene on error
1018
- if (fiveSimClient && fiveSimOrderId) {
1019
- if (smsReceived) {
1020
- await settleFiveSimOrder(() => fiveSimClient.finishOrder(fiveSimOrderId));
1021
- } else if (isSmsTimeout) {
1022
- // BAN: number did not receive CodeBuddy SMS within the OTP window.
1023
- await settleFiveSimOrder(() => fiveSimClient.banOrder(fiveSimOrderId));
1024
- } else {
1025
- await settleFiveSimOrder(() => fiveSimClient.cancelOrder(fiveSimOrderId));
1026
- }
1027
- }
1028
- account.runtimeSession = null;
1029
- await closeContextOrBrowser(context, job);
1030
- // Hard timeout / blackhole nav: kill the shared browser so the worker unblocks
1031
- // and Chromium cannot pin 100% CPU on a 2GB VPS until reboot.
1032
- if (
1033
- error?.code === "CN_ACCOUNT_HARD_TIMEOUT"
1034
- || error?.code === "CN_CONTEXT_TIMEOUT"
1035
- || job.cancelRequested
1036
- ) {
1037
- if (job.browser) {
1038
- const b = job.browser;
1039
- job.browser = null;
1040
- await forceCloseBrowser(b).catch(() => null);
1041
- }
1042
- }
1043
- await this.persistJobSnapshot(job, { forcePreview: true });
1044
- }
1045
- }
1046
-
1047
- /**
1048
- * Complete the device-code OAuth capture after phone registration succeeds.
1049
- *
1050
- * Steps 7-12: request device code → navigate to authUrl → poll token → save.
1051
- */
1052
- /**
1053
- * Capture API key after phone registration succeeds.
1054
- *
1055
- * The browser is now logged in to codebuddy.cn. Navigate to /profile/keys
1056
- * and POST to /console/api/client/v1/api-keys to create an API key.
1057
- * Save the key as a provider connection.
1058
- */
1059
- async captureApiKey(job, account, context, page, fiveSimClient, fiveSimOrderId) {
1060
- const PERSONAL_ENTERPRISE_ID = "personal-edition-user-id";
1061
- let capturedApiKey = null;
1062
-
1063
- // Tiny event-driven poller — replaces multi-second blind sleeps.
1064
- const waitUntil = async (checkFn, { timeout = 12_000, interval = 150 } = {}) => {
1065
- const deadline = Date.now() + timeout;
1066
- while (Date.now() < deadline) {
1067
- try {
1068
- if (await checkFn()) return true;
1069
- } catch {
1070
- /* retry */
1071
- }
1072
- await new Promise((r) => setTimeout(r, interval));
1073
- }
1074
- return false;
1075
- };
1076
-
1077
- try {
1078
- // Functional session establishment — do NOT hard-require KEYCLOAK_IDENTITY.
1079
- // Live failures show OTP can succeed with AUTH_SESSION_ID + session + qcloud_uid
1080
- // while KEYCLOAK_IDENTITY never appears (mid-OIDC). What matters is whether
1081
- // /console/accounts and api-keys accept the browser cookies.
1082
- this.setAccountStep(account, "waiting_session", "Establishing CodeBuddy console session (probe APIs, not just cookies)");
1083
- await this.persistJobSnapshot(job, { forcePreview: true });
1084
-
1085
- const cookieSnapshot = async () => {
1086
- const cookies = await context.cookies().catch(() => []);
1087
- return {
1088
- cookies,
1089
- names: new Set(cookies.map((c) => c.name)),
1090
- list: cookies.map((c) => c.name),
1091
- };
1092
- };
1093
-
1094
- const hasStrongKeycloak = (names) =>
1095
- names.has("KEYCLOAK_IDENTITY")
1096
- || names.has("KEYCLOAK_SESSION")
1097
- || names.has("KEYCLOAK_IDENTITY_LEGACY")
1098
- || names.has("KEYCLOAK_SESSION_LEGACY");
1099
-
1100
- const hasSoftSession = (names) =>
1101
- names.has("AUTH_SESSION_ID")
1102
- || names.has("session")
1103
- || names.has("qcloud_uid")
1104
- || names.has("qcmainCSRFToken")
1105
- || names.has("x_host_key_access");
1106
-
1107
- const probeConsoleAccounts = () => probeCodeBuddyConsoleAccounts({ context, page });
1108
-
1109
- const extractAccountList = (probe) => {
1110
- const d = probe?.data;
1111
- if (!d || typeof d !== "object") return [];
1112
- const candidates = [
1113
- d?.data?.accounts,
1114
- d?.accounts,
1115
- d?.data?.list,
1116
- d?.list,
1117
- d?.data?.result,
1118
- d?.result,
1119
- d?.data?.items,
1120
- d?.items,
1121
- Array.isArray(d?.data) ? d.data : null,
1122
- Array.isArray(d) ? d : null,
1123
- ];
1124
- for (const c of candidates) {
1125
- if (Array.isArray(c) && c.length > 0) return c;
1126
- }
1127
- return [];
1128
- };
1129
-
1130
- // A committed response is enough to start session probes. Waiting for the
1131
- // full SPA DOM is expensive and frequently stalls on small VPS hosts.
1132
- const waitAfterNav = async (timeoutMs = 2_500) => {
1133
- let settled = false;
1134
- let timer = null;
1135
- try {
1136
- await Promise.race([
1137
- page.waitForLoadState("domcontentloaded", { timeout: timeoutMs }).catch(() => null),
1138
- waitUntil(async () => {
1139
- if (settled) return true;
1140
- const snap = await cookieSnapshot();
1141
- return hasStrongKeycloak(snap.names);
1142
- }, { timeout: timeoutMs, interval: 200 }),
1143
- new Promise((resolve) => {
1144
- timer = setTimeout(resolve, timeoutMs);
1145
- }),
1146
- ]);
1147
- } finally {
1148
- settled = true;
1149
- if (timer) clearTimeout(timer);
1150
- }
1151
- };
1152
-
1153
- const navigateConsole = async (path) => {
1154
- const startedAt = Date.now();
1155
- try {
1156
- await page.goto(path, {
1157
- waitUntil: "commit",
1158
- timeout: CODEBUDDY_CN_CONSOLE_NAV_TIMEOUT_MS,
1159
- });
1160
- const remainingMs = CODEBUDDY_CN_CONSOLE_NAV_TIMEOUT_MS - (Date.now() - startedAt);
1161
- if (remainingMs > 0) await waitAfterNav(Math.min(2_500, remainingMs));
1162
- return true;
1163
- } catch {
1164
- return false;
1165
- }
1166
- };
1167
-
1168
- // Navigate sequence to finish OIDC handoff when only AUTH_SESSION_ID is present.
1169
- // Never revisit /login here: it can wipe a valid partial OIDC session.
1170
- const oIDCNudgePaths = [
1171
- "https://www.codebuddy.cn/",
1172
- "https://www.codebuddy.cn/console",
1173
- "https://www.codebuddy.cn/console/",
1174
- "https://www.codebuddy.cn/profile",
1175
- "https://www.codebuddy.cn/profile/keys",
1176
- ];
1177
-
1178
- let accountList = [];
1179
- let accountsProbe = null;
1180
- let sessionReady = false;
1181
- let lastPayloadSnippet = "";
1182
- let lastMeaningfulProbe = null;
1183
- let restrictedProbeCount = 0;
1184
-
1185
- // Event-driven OIDC settle: bounded attempts and no blind multi-second sleeps.
1186
- for (let attempt = 0; attempt < CODEBUDDY_CN_OIDC_MAX_ATTEMPTS; attempt += 1) {
1187
- if (job.cancelRequested) {
1188
- throw new Error("Job cancelled while establishing session");
1189
- }
1190
-
1191
- const snap = await cookieSnapshot();
1192
- const strong = hasStrongKeycloak(snap.names);
1193
- const soft = hasSoftSession(snap.names);
1194
-
1195
- const path = oIDCNudgePaths[Math.min(attempt, oIDCNudgePaths.length - 1)];
1196
- // Always nudge on first 3 + even attempts; skip re-nav when soft session already present
1197
- // and we only need to re-probe accounts.
1198
- const shouldNav = attempt < 3 || attempt % 2 === 0 || !soft;
1199
- if (shouldNav) {
1200
- this.setAccountStep(
1201
- account,
1202
- "waiting_session",
1203
- `OIDC handoff ${attempt + 1}/${CODEBUDDY_CN_OIDC_MAX_ATTEMPTS} → ${path.replace("https://www.codebuddy.cn", "")} (${strong ? "KEYCLOAK" : soft ? "soft-session" : "weak"})`,
1204
- );
1205
- await this.persistJobSnapshot(job, { forcePreview: false });
1206
- await navigateConsole(path);
1207
- } else {
1208
- // Soft session present — short yield then re-probe (no blind multi-second sleep).
1209
- await new Promise((r) => setTimeout(r, 300));
1210
- }
1211
-
1212
- // Prefer landing on console for the API probe (absolute host)
1213
- const onCodebuddy = /^https:\/\/www\.codebuddy\.cn(?:[/:]|$)/i.test(page.url?.() || "");
1214
- if (!onCodebuddy) {
1215
- await navigateConsole("https://www.codebuddy.cn/console");
1216
- }
1217
-
1218
- accountsProbe = await probeConsoleAccounts();
1219
- accountList = extractAccountList(accountsProbe);
1220
- if (
1221
- accountsProbe?.status > 0
1222
- || accountsProbe?.text
1223
- || accountsProbe?.data
1224
- ) {
1225
- lastMeaningfulProbe = accountsProbe;
1226
- }
1227
- lastPayloadSnippet = JSON.stringify(
1228
- accountsProbe?.data
1229
- ?? accountsProbe?.text
1230
- ?? accountsProbe?.error
1231
- ?? null,
1232
- ).slice(0, 180);
1233
- const loginHtml = isLoginHtmlProbe(accountsProbe);
1234
- const probeSnap = await cookieSnapshot();
1235
- const probeStrong = hasStrongKeycloak(probeSnap.names);
1236
- if (!probeStrong && hasRestrictedConsoleEvidence(accountsProbe, probeSnap.names)) {
1237
- restrictedProbeCount += 1;
1238
- } else {
1239
- restrictedProbeCount = 0;
1240
- }
1241
-
1242
- if (restrictedProbeCount >= 2) {
1243
- throw Object.assign(
1244
- new Error(
1245
- `Tencent restricted the post-OTP session (${restrictedProbeCount} console probes returned login/risk evidence; source=${accountsProbe?.source || "unknown"})`,
1246
- ),
1247
- { code: CODEBUDDY_CN_ACCOUNT_RESTRICTED },
1248
- );
1249
- }
1250
-
1251
- if (
1252
- accountsProbe?.status === 200
1253
- && !loginHtml
1254
- && Array.isArray(accountList)
1255
- && accountList.length > 0
1256
- ) {
1257
- sessionReady = true;
1258
- this.setAccountStep(
1259
- account,
1260
- "session_ready",
1261
- `Console session accepted (HTTP 200, ${accountList.length} account(s)${strong ? ", KEYCLOAK ok" : ", soft session"})`,
1262
- );
1263
- await this.persistJobSnapshot(job, { forcePreview: true });
1264
- break;
1265
- }
1266
-
1267
- // Soft session + HTTP 200 empty accounts: console often still accepts api-keys.
1268
- // Don't fail early — break out and try key create with personal enterprise id.
1269
- if (
1270
- soft
1271
- && accountsProbe?.status === 200
1272
- && !loginHtml
1273
- && accountsProbe?.data?._notJson !== true
1274
- && Array.isArray(accountList)
1275
- && accountList.length === 0
1276
- && attempt >= 3
1277
- ) {
1278
- this.setAccountStep(
1279
- account,
1280
- "session_soft",
1281
- `Console HTTP 200 but 0 accounts — trying personal API key with soft session (cookies ok)`,
1282
- );
1283
- await this.persistJobSnapshot(job, { forcePreview: true });
1284
- sessionReady = true; // allow create-key path
1285
- break;
1286
- }
1287
-
1288
- this.setAccountStep(
1289
- account,
1290
- "resolving_enterprise",
1291
- `Console not ready (HTTP ${accountsProbe?.status || 0}, accounts=${accountList.length}${loginHtml ? ", login HTML" : ""}, source=${accountsProbe?.source || "unknown"}) — ${attempt + 1}/${CODEBUDDY_CN_OIDC_MAX_ATTEMPTS} body=${lastPayloadSnippet.slice(0, 80)}`,
1292
- );
1293
- await this.persistJobSnapshot(job, { forcePreview: false });
1294
- }
1295
-
1296
- if (!sessionReady) {
1297
- const snap = await cookieSnapshot();
1298
- const diagnosticProbe = lastMeaningfulProbe || accountsProbe;
1299
- const restricted = hasRestrictedConsoleEvidence(diagnosticProbe, snap.names)
1300
- || (snap.names.has("login_risk_state") && restrictedProbeCount > 0);
1301
- throw Object.assign(
1302
- new Error(
1303
- restricted
1304
- ? `Tencent restricted the post-OTP session (HTTP ${diagnosticProbe?.status || 0}; login_risk_state present; source=${diagnosticProbe?.source || "unknown"})`
1305
- : `Console accounts unavailable after login (HTTP ${diagnosticProbe?.status || 0}; cookies: ${snap.list.slice(0, 18).join(",") || "(none)"}; body=${lastPayloadSnippet.slice(0, 120)}; probeError=${accountsProbe?.error || "none"}) — session not accepted for API key`,
1306
- ),
1307
- { code: restricted ? CODEBUDDY_CN_ACCOUNT_RESTRICTED : "CN_CONSOLE_SESSION_UNAVAILABLE" },
1308
- );
1309
- }
1310
-
1311
- let userEnterpriseId = PERSONAL_ENTERPRISE_ID;
1312
- if (Array.isArray(accountList) && accountList.length > 0) {
1313
- const preferred = accountList.find((entry) => entry?.lastLogin) || accountList[0];
1314
- if (preferred?.type && preferred.type !== "personal" && preferred.enterpriseId) {
1315
- userEnterpriseId = preferred.enterpriseId;
1316
- } else if (preferred?.enterpriseId && preferred?.type !== "personal") {
1317
- userEnterpriseId = preferred.enterpriseId;
1318
- }
1319
- }
1320
-
1321
- // Create API key — CN requires user_enterprise_id (400 code 12505 without it).
1322
- this.setAccountStep(account, "creating_api_key", `Creating API key (enterprise=${userEnterpriseId}, accounts=${accountList.length})`);
1323
- await this.persistJobSnapshot(job, { forcePreview: true });
1324
-
1325
- // Keep one name for every safe retry in this capture attempt. A timed-out
1326
- // POST has an unknown outcome and must never be sent again automatically.
1327
- const apiKeyName = `zevai-router-${account.workerId || "account"}-${Date.now()}`;
1328
- const createKeyOnPage = async (enterpriseId) => page.evaluate(async ({
1329
- enterpriseId: entId,
1330
- keyName,
1331
- timeoutMs,
1332
- }) => {
1333
- const controller = new AbortController();
1334
- const timer = setTimeout(() => controller.abort(), timeoutMs);
1335
- try {
1336
- const host = window.location.hostname || "www.codebuddy.cn";
1337
- const base = host === "www.codebuddy.cn"
1338
- ? window.location.origin
1339
- : "https://www.codebuddy.cn";
1340
- const res = await fetch(`${base}/console/api/client/v1/api-keys`, {
1341
- method: "POST",
1342
- credentials: "include",
1343
- signal: controller.signal,
1344
- headers: {
1345
- "Content-Type": "application/json",
1346
- Accept: "application/json, text/plain, */*",
1347
- "x-requested-with": "XMLHttpRequest",
1348
- "X-Domain": "www.codebuddy.cn",
1349
- "X-Product": "SaaS",
1350
- },
1351
- body: JSON.stringify({
1352
- name: keyName,
1353
- expire_in_days: 365,
1354
- user_enterprise_id: entId,
1355
- }),
1356
- });
1357
- const text = await res.text().catch(() => "");
1358
- let data = null;
1359
- try {
1360
- data = text ? JSON.parse(text) : null;
1361
- } catch {
1362
- data = { _raw: String(text || "").slice(0, 200) };
1363
- }
1364
- return { ok: res.ok, status: res.status, data };
1365
- } catch (error) {
1366
- // Fetch/network failures after a POST starts are ambiguous: the server
1367
- // may have created the key even if the browser lost the response.
1368
- return {
1369
- ok: false,
1370
- status: 0,
1371
- outcomeUnknown: true,
1372
- timedOut: error?.name === "AbortError",
1373
- error: error?.message || String(error),
1374
- };
1375
- } finally {
1376
- clearTimeout(timer);
1377
- }
1378
- }, {
1379
- enterpriseId,
1380
- keyName: apiKeyName,
1381
- timeoutMs: CODEBUDDY_CN_API_KEY_REQUEST_TIMEOUT_MS,
1382
- });
1383
-
1384
- const requestApiKey = async (enterpriseId, label) => {
1385
- const startedAt = Date.now();
1386
- let heartbeatPromise = null;
1387
- const heartbeat = setInterval(() => {
1388
- if (heartbeatPromise) return;
1389
- const elapsedSeconds = Math.max(5, Math.round((Date.now() - startedAt) / 1000));
1390
- this.setAccountStep(
1391
- account,
1392
- "creating_api_key",
1393
- `${label} — waiting for CodeBuddy (${elapsedSeconds}s)`,
1394
- );
1395
- heartbeatPromise = this.persistJobSnapshot(job, { forcePreview: false })
1396
- .catch(() => null)
1397
- .finally(() => {
1398
- heartbeatPromise = null;
1399
- });
1400
- }, 5_000);
1401
- if (typeof heartbeat.unref === "function") heartbeat.unref();
1402
-
1403
- let result;
1404
- try {
1405
- result = await withTimeoutCleanup(createKeyOnPage(enterpriseId), {
1406
- timeoutMs: CODEBUDDY_CN_API_KEY_REQUEST_TIMEOUT_MS,
1407
- message: `API key request timed out after ${CODEBUDDY_CN_API_KEY_REQUEST_TIMEOUT_MS / 1000}s; creation outcome is unknown`,
1408
- code: CODEBUDDY_CN_API_KEY_OUTCOME_UNKNOWN,
1409
- });
1410
- } catch (error) {
1411
- if (error?.code === CODEBUDDY_CN_API_KEY_OUTCOME_UNKNOWN) throw error;
1412
- throw Object.assign(
1413
- new Error(`API key request lost its response; creation outcome is unknown: ${error?.message || String(error)}`),
1414
- { code: CODEBUDDY_CN_API_KEY_OUTCOME_UNKNOWN },
1415
- );
1416
- } finally {
1417
- clearInterval(heartbeat);
1418
- if (heartbeatPromise) await heartbeatPromise.catch(() => null);
1419
- }
1420
-
1421
- if (result?.outcomeUnknown) {
1422
- const reason = result.timedOut
1423
- ? `timed out after ${CODEBUDDY_CN_API_KEY_REQUEST_TIMEOUT_MS / 1000}s`
1424
- : `lost its response (${result.error || "network error"})`;
1425
- throw Object.assign(
1426
- new Error(`API key request ${reason}; creation outcome is unknown`),
1427
- { code: CODEBUDDY_CN_API_KEY_OUTCOME_UNKNOWN },
1428
- );
1429
- }
1430
- return assertAutomaticApiKeyRetrySafe(result, label);
1431
- };
1432
-
1433
- // Always open keys page first (SPA hydrates CSRF / host-key there).
1434
- const keysPageReady = await navigateConsole("https://www.codebuddy.cn/profile/keys");
1435
- if (!keysPageReady) {
1436
- throw Object.assign(
1437
- new Error(`Keys page navigation timed out after ${CODEBUDDY_CN_CONSOLE_NAV_TIMEOUT_MS / 1000}s`),
1438
- { code: "CN_CONSOLE_NAV_TIMEOUT" },
1439
- );
1440
- }
1441
-
1442
- let apiKeyResult = await requestApiKey(userEnterpriseId, "Creating API key");
1443
-
1444
- // A confirmed 400 can safely retry with the personal enterprise id. Do
1445
- // not retry 5xx/network failures because the POST outcome is ambiguous.
1446
- if (
1447
- apiKeyResult?.status === 400
1448
- && userEnterpriseId !== PERSONAL_ENTERPRISE_ID
1449
- ) {
1450
- this.setAccountStep(account, "retrying_api_key", "Retrying with personal-edition enterprise id");
1451
- await this.persistJobSnapshot(job, { forcePreview: false });
1452
- apiKeyResult = await requestApiKey(PERSONAL_ENTERPRISE_ID, "Retrying personal API key");
1453
- }
1454
-
1455
- // Retry loop on 401/403 — openresty edge blocks create-key when Keycloak
1456
- // cookies are half-synced (common on slow proxies). Nudge OIDC handoff,
1457
- // wait for strong session, then retry with a strict round cap.
1458
- const isAuthBlocked = (result) =>
1459
- result?.ok === false && (result.status === 401 || result.status === 403);
1460
- for (
1461
- let round = 1;
1462
- round <= CODEBUDDY_CN_API_REHANDOFF_ROUNDS && isAuthBlocked(apiKeyResult);
1463
- round += 1
1464
- ) {
1465
- this.setAccountStep(
1466
- account,
1467
- "retrying_api_key",
1468
- `API key 401/403 — OIDC re-handoff round ${round}/${CODEBUDDY_CN_API_REHANDOFF_ROUNDS} (waiting strong session)`,
1469
- );
1470
- await this.persistJobSnapshot(job, { forcePreview: true });
1471
- for (const path of [
1472
- "https://www.codebuddy.cn/",
1473
- "https://www.codebuddy.cn/console",
1474
- "https://www.codebuddy.cn/profile/keys",
1475
- ]) {
1476
- await navigateConsole(path);
1477
- }
1478
- // Wait for strong Keycloak cookie — openresty accepts api-keys only after full session.
1479
- await waitUntil(async () => {
1480
- const snap = await cookieSnapshot();
1481
- return hasStrongKeycloak(snap.names);
1482
- }, { timeout: 8_000 * round, interval: 300 }).catch(() => null);
1483
- apiKeyResult = await requestApiKey(
1484
- PERSONAL_ENTERPRISE_ID,
1485
- `Retrying API key after OIDC handoff ${round}/${CODEBUDDY_CN_API_REHANDOFF_ROUNDS}`,
1486
- );
1487
- }
1488
-
1489
- const businessCode = apiKeyResult?.data?.code;
1490
- const businessOk = businessCode === 0 || businessCode === 200 || typeof businessCode === "undefined";
1491
- if (!apiKeyResult || !apiKeyResult.ok || !apiKeyResult.data || !businessOk) {
1492
- // Surface openresty HTML block (_raw) clearly instead of opaque "code=n/a".
1493
- const rawSnippet = typeof apiKeyResult?.data?._raw === "string"
1494
- ? apiKeyResult.data._raw.replace(/\s+/g, " ").slice(0, 120)
1495
- : null;
1496
- const edgeNote = rawSnippet && /openresty|nginx|Authorization Required/i.test(rawSnippet)
1497
- ? " [edge proxy blocked — session half-baked]"
1498
- : "";
1499
- throw new Error(
1500
- `API key creation failed (HTTP ${apiKeyResult?.status ?? "no-response"}, code=${businessCode ?? "n/a"})${edgeNote}: ${JSON.stringify(apiKeyResult?.data ?? null).slice(0, 200)}`,
1501
- );
1502
- }
1503
-
1504
- // Extract the API key from the response — CodeBuddy wraps secrets under data.*
1505
- const payload = apiKeyResult.data?.data || apiKeyResult.data;
1506
- const apiKey =
1507
- payload?.apiKey ||
1508
- payload?.key ||
1509
- payload?.token ||
1510
- payload?.secret ||
1511
- payload?.api_key ||
1512
- (typeof payload === "string" ? payload : null) ||
1513
- apiKeyResult.data.apiKey ||
1514
- apiKeyResult.data.key ||
1515
- apiKeyResult.data.token ||
1516
- apiKeyResult.data.secret;
1517
-
1518
- if (!apiKey || typeof apiKey !== "string") {
1519
- throw Object.assign(
1520
- new Error(`API key response did not contain a key field; creation outcome is unknown: ${JSON.stringify(apiKeyResult.data).slice(0, 300)}`),
1521
- { code: CODEBUDDY_CN_API_KEY_OUTCOME_UNKNOWN },
1522
- );
1523
- }
1524
- capturedApiKey = apiKey;
1525
-
1526
- this.setAccountStep(account, "api_key_created", `API key created successfully`);
1527
- await this.persistJobSnapshot(job, { forcePreview: true });
1528
-
1529
- // Step 9: Save connection
1530
- this.setAccountStep(account, "saving_connection", "Saving CodeBuddy CN connection");
1531
- await this.persistJobSnapshot(job, { forcePreview: true });
1532
-
1533
- const { connection } = await this.saveConnection({
1534
- apiKey,
1535
- phone: account.phone,
1536
- region: account.region,
1537
- fiveSimOrderId,
1538
- account,
1539
- });
1540
-
1541
- // Step 10: Finish 5sim order + finalize
1542
- await settleFiveSimOrder(() => fiveSimClient.finishOrder(fiveSimOrderId));
1543
-
1544
- this.finalizeAccount(account, "success", {
1545
- connectionId: connection.id,
1546
- step: "connection_saved",
1547
- message: `CodeBuddy CN connection saved (phone: ${account.phone})`,
1548
- });
1549
- account.runtimeSession = null;
1550
- await closeContextOrBrowser(context, job);
1551
- await this.persistJobSnapshot(job, { forcePreview: true });
1552
- } catch (error) {
1553
- // If API key capture fails after registration, the account is registered
1554
- // but we don't have a key. Surface as needs_manual so the operator can
1555
- // create the key manually in the opened browser — number is NOT re-bought.
1556
- const restricted = error?.code === CODEBUDDY_CN_ACCOUNT_RESTRICTED;
1557
- const outcomeUnknown = error?.code === CODEBUDDY_CN_API_KEY_OUTCOME_UNKNOWN;
1558
- const retryStopped = error?.code === CODEBUDDY_CN_API_KEY_RETRY_STOPPED;
1559
- const automaticPostStopped = outcomeUnknown || retryStopped;
1560
- if (restricted) {
1561
- this.finalizeAccount(account, "failed_restricted", {
1562
- error: `${error.message}. Use a different residential CN/HK proxy with concurrency 1.`,
1563
- step: "failed_restricted",
1564
- message: "Tencent restricted the post-OTP session; API-key capture was not attempted",
1565
- });
1566
- await settleFiveSimOrder(() => fiveSimClient.finishOrder(fiveSimOrderId));
1567
- account.runtimeSession = null;
1568
- await closeContextOrBrowser(context, job);
1569
- await this.persistJobSnapshot(job, { forcePreview: true });
1570
- return;
1571
- }
1572
- const failureMessage = outcomeUnknown
1573
- ? `${error.message}. Check the CodeBuddy keys page before creating another key.`
1574
- : error.message;
1575
- if (!automaticPostStopped) {
1576
- attachCnManualSession(account, context, page);
1577
- }
1578
- this.finalizeAccount(account, "needs_manual", {
1579
- error: `Registration succeeded but API key capture failed: ${failureMessage}`,
1580
- step: outcomeUnknown
1581
- ? "api_key_outcome_unknown"
1582
- : retryStopped
1583
- ? "api_key_retry_stopped"
1584
- : "awaiting_manual",
1585
- message: outcomeUnknown
1586
- ? `Registration done; API key request outcome is unknown. Check existing keys before retrying.`
1587
- : retryStopped
1588
- ? "Registration done; API key request was rate limited. Automatic POST retries stopped."
1589
- : capturedApiKey
1590
- ? `API key captured; retrying local connection save without creating another key: ${error.message}`
1591
- : `Registration done, API key capture failed: ${error.message}`,
1592
- });
1593
- // The 5sim order was successful (SMS received) — finish it (no re-order)
1594
- await settleFiveSimOrder(() => fiveSimClient.finishOrder(fiveSimOrderId));
1595
- await this.persistJobSnapshot(job, { forcePreview: true });
1596
-
1597
- if (automaticPostStopped) {
1598
- // Closing the page aborts any late browser work. Automatic/manual POST
1599
- // retries are disabled because the key may exist or the API is throttling.
1600
- account.runtimeSession = null;
1601
- await closeContextOrBrowser(context, job);
1602
- return;
1603
- }
1604
-
1605
- // Expose the live page through the inherited manual-session endpoint while
1606
- // the bounded follow-up waits for the operator to finish captcha/login.
1607
- await this.runCnManualFollowup(
1608
- job,
1609
- account,
1610
- account.workerId,
1611
- context,
1612
- page,
1613
- fiveSimClient,
1614
- fiveSimOrderId,
1615
- capturedApiKey,
1616
- );
1617
- }
1618
- }
1619
-
1620
- /**
1621
- * Manual followup — operator completes registration/captcha/API-key creation in a
1622
- * headed browser. We wait for the operator to finish, then try to capture the API key.
1623
- */
1624
- async runCnManualFollowup(
1625
- job,
1626
- account,
1627
- workerId,
1628
- context,
1629
- page,
1630
- fiveSimClient,
1631
- fiveSimOrderId,
1632
- existingApiKey = null,
1633
- ) {
1634
- const followupPromise = (async () => {
1635
- const closeManualResources = async () => {
1636
- const ms = account.manualSession;
1637
- const ctx = ms?.context || context;
1638
- const headed = ms?.headedBrowser || null;
1639
- await closeContextOrBrowser(ctx, job);
1640
- if (headed) await forceCloseBrowser(headed).catch(() => null);
1641
- };
1642
-
1643
- try {
1644
- this.setAccountStep(account, "manual_waiting", "Waiting for operator to complete in headed browser");
1645
- await this.persistJobSnapshot(job, { forcePreview: true });
1646
-
1647
- // Wait up to 3 minutes on low-memory hosts, otherwise 8 minutes.
1648
- const manualTimeoutMs = isLowMemHost()
1649
- ? CODEBUDDY_CN_LOW_MEM_MANUAL_TIMEOUT_MS
1650
- : CODEBUDDY_CN_MANUAL_TIMEOUT_MS;
1651
- const deadline = Date.now() + manualTimeoutMs;
1652
- let apiKey = typeof existingApiKey === "string" && existingApiKey
1653
- ? existingApiKey
1654
- : null;
1655
- const manualApiKeyName = `zevai-router-manual-${account.workerId || "account"}-${Date.now()}`;
1656
-
1657
- while (!apiKey && Date.now() < deadline && !job.cancelRequested) {
1658
- await new Promise((r) => setTimeout(r, 10_000)); // Check every 10s
1659
-
1660
- // Check if the operator has navigated to the keys page and we can create a key
1661
- try {
1662
- const currentUrl = page.url();
1663
- if (!currentUrl.includes("codebuddy.cn")) continue;
1664
-
1665
- // Try to create an API key via the console API (include enterprise id)
1666
- const result = await withTimeoutCleanup(page.evaluate(async ({ keyName, timeoutMs }) => {
1667
- const controller = new AbortController();
1668
- const timer = setTimeout(() => controller.abort(), timeoutMs);
1669
- try {
1670
- const host = window.location.hostname || "www.codebuddy.cn";
1671
- const base = host === "www.codebuddy.cn"
1672
- ? window.location.origin
1673
- : "https://www.codebuddy.cn";
1674
- const res = await fetch(`${base}/console/api/client/v1/api-keys`, {
1675
- method: "POST",
1676
- headers: {
1677
- "Content-Type": "application/json",
1678
- Accept: "application/json, text/plain, */*",
1679
- "x-requested-with": "XMLHttpRequest",
1680
- "X-Domain": "www.codebuddy.cn",
1681
- "X-Product": "SaaS",
1682
- },
1683
- credentials: "include",
1684
- signal: controller.signal,
1685
- body: JSON.stringify({
1686
- name: keyName,
1687
- expire_in_days: 365,
1688
- user_enterprise_id: "personal-edition-user-id",
1689
- }),
1690
- });
1691
- const data = await res.json().catch(() => null);
1692
- return { ok: res.ok, status: res.status, data };
1693
- } catch (error) {
1694
- return {
1695
- ok: false,
1696
- status: 0,
1697
- outcomeUnknown: true,
1698
- error: error?.message || String(error),
1699
- };
1700
- } finally {
1701
- clearTimeout(timer);
1702
- }
1703
- }, {
1704
- keyName: manualApiKeyName,
1705
- timeoutMs: CODEBUDDY_CN_API_KEY_REQUEST_TIMEOUT_MS,
1706
- }), {
1707
- timeoutMs: CODEBUDDY_CN_API_KEY_REQUEST_TIMEOUT_MS,
1708
- message: "Manual API key request timed out; creation outcome is unknown",
1709
- code: CODEBUDDY_CN_API_KEY_OUTCOME_UNKNOWN,
1710
- });
1711
-
1712
- if (result?.outcomeUnknown) {
1713
- throw Object.assign(
1714
- new Error(`Manual API key request lost its response; creation outcome is unknown: ${result.error || "network error"}`),
1715
- { code: CODEBUDDY_CN_API_KEY_OUTCOME_UNKNOWN },
1716
- );
1717
- }
1718
-
1719
- assertAutomaticApiKeyRetrySafe(result, "Manual API key request");
1720
-
1721
- if (result?.ok) {
1722
- const payload = result.data?.data || result.data;
1723
- apiKey =
1724
- payload?.apiKey ||
1725
- payload?.key ||
1726
- payload?.token ||
1727
- payload?.secret ||
1728
- payload?.api_key ||
1729
- (typeof payload === "string" ? payload : null);
1730
- if (apiKey && typeof apiKey === "string") break;
1731
- throw Object.assign(
1732
- new Error("Manual API key response was successful but did not contain the key; creation outcome is unknown"),
1733
- { code: CODEBUDDY_CN_API_KEY_OUTCOME_UNKNOWN },
1734
- );
1735
- }
1736
- } catch (error) {
1737
- if (isApiKeyPostRetryStopped(error)) throw error;
1738
- // Operator might still be completing — keep waiting
1739
- }
1740
- }
1741
-
1742
- if (job.cancelRequested) {
1743
- this.finalizeAccount(account, "cancelled", {
1744
- error: "Job cancelled",
1745
- step: "cancelled",
1746
- message: "Job cancelled while waiting for manual completion",
1747
- });
1748
- await this.persistJobSnapshot(job, { forcePreview: true });
1749
- return;
1750
- }
1751
-
1752
- if (!apiKey) {
1753
- throw new Error("Manual assist timed out — could not capture API key");
1754
- }
1755
-
1756
- // Save connection
1757
- this.setAccountStep(account, "saving_connection", "Saving CodeBuddy CN connection (manual)");
1758
- await this.persistJobSnapshot(job, { forcePreview: true });
1759
-
1760
- const { connection } = await this.saveConnection({
1761
- apiKey,
1762
- phone: account.phone,
1763
- region: account.region,
1764
- fiveSimOrderId,
1765
- account,
1766
- });
1767
-
1768
- this.finalizeAccount(account, "success", {
1769
- connectionId: connection.id,
1770
- step: "connection_saved",
1771
- message: `CodeBuddy CN connection saved via manual assist (phone: ${account.phone || "N/A"})`,
1772
- });
1773
- await this.persistJobSnapshot(job, { forcePreview: true });
1774
- } catch (error) {
1775
- if (job.cancelRequested) {
1776
- this.finalizeAccount(account, "cancelled", {
1777
- error: "Job cancelled",
1778
- step: "cancelled",
1779
- message: "Job cancelled while waiting for manual completion",
1780
- });
1781
- } else if (isApiKeyPostRetryStopped(error)) {
1782
- this.finalizeAccount(account, "needs_manual", {
1783
- error: `${error.message}. Check existing CodeBuddy keys before retrying manually.`,
1784
- step: error?.code === CODEBUDDY_CN_API_KEY_OUTCOME_UNKNOWN
1785
- ? "api_key_outcome_unknown"
1786
- : "api_key_retry_stopped",
1787
- message: "Manual API key POST retries stopped",
1788
- });
1789
- } else {
1790
- this.finalizeAccount(account, "failed", {
1791
- error: error.message || "Manual assist flow failed",
1792
- step: "failed",
1793
- message: error.message || "Manual assist flow failed",
1794
- });
1795
- }
1796
- await this.persistJobSnapshot(job, { forcePreview: true });
1797
- } finally {
1798
- await closeManualResources();
1799
- account.manualSession = null;
1800
- account.runtimeSession = null;
1801
- job.manualFollowups.delete(followupPromise);
1802
- await this.persistJobSnapshot(job, { forcePreview: true });
1803
- }
1804
- })();
1805
-
1806
- job.manualFollowups.add(followupPromise);
1807
- }
1808
-
1809
- /**
1810
- * Proxy-bound CN jobs are intentionally single-worker. Recycle the whole
1811
- * CloakBrowser process between accounts so the binary GeoIP/WebRTC profile
1812
- * always belongs to the same proxy as the account context.
1813
- */
1814
- async runWorker(job, workerId) {
1815
- if (!requiresIsolatedProxyBrowser(job)) {
1816
- return super.runWorker(job, workerId);
1817
- }
1818
-
1819
- while (!job.cancelRequested) {
1820
- const account = this.dequeueAccount(job, workerId);
1821
- if (!account) return;
1822
-
1823
- if (!job.browser) {
1824
- try {
1825
- job.browser = await this.browserLauncher({
1826
- ...job,
1827
- proxyUrls: account.proxyUrl ? [account.proxyUrl] : job.proxyUrls,
1828
- });
1829
- } catch (error) {
1830
- this.finalizeAccount(account, "failed", {
1831
- error: error?.message || "Manual proxy browser launch failed",
1832
- step: "failed",
1833
- message: error?.message || "Manual proxy browser launch failed",
1834
- });
1835
- await this.persistJobSnapshot(job, { forcePreview: true });
1836
- continue;
1837
- }
1838
- }
1839
-
1840
- try {
1841
- await this.processAccount(job, account, workerId);
1842
- } catch (error) {
1843
- if (account.status === "running") {
1844
- this.finalizeAccount(account, "failed", {
1845
- error: error?.message || "Unexpected manual proxy worker failure",
1846
- step: "failed",
1847
- message: error?.message || "Unexpected manual proxy worker failure",
1848
- });
1849
- await this.persistJobSnapshot(job, { forcePreview: true });
1850
- }
1851
- } finally {
1852
- if (job.manualFollowups.size > 0) {
1853
- await Promise.allSettled([...job.manualFollowups]);
1854
- }
1855
-
1856
- if (job.browser) {
1857
- const browser = job.browser;
1858
- job.browser = null;
1859
- await forceCloseBrowser(browser).catch(() => null);
1860
- }
1861
- }
1862
- }
1863
- }
1864
-
1865
- shouldPrelaunchBrowser(job) {
1866
- return !requiresIsolatedProxyBrowser(job);
1867
- }
1868
-
1869
- /**
1870
- * Override cancelJob to abort in-flight 5sim polls AND force-close the browser.
1871
- * Previous CN override only aborted controllers — Chromium kept spinning (VPS hang).
1872
- */
1873
- cancelJob(jobId) {
1874
- const job = this.jobs.get(jobId);
1875
- if (!job) return null;
1876
-
1877
- job.cancelRequested = true;
1878
-
1879
- // Abort in-flight 5sim polls and capture every live resource before the
1880
- // session fields are cleared. Manual assist may have relaunched a separate
1881
- // headed browser that is not the job browser.
1882
- for (const account of job.accounts) {
1883
- if (account.abortController && !account.abortController.signal.aborted) {
1884
- account.abortController.abort();
1885
- }
1886
- const manualSession = account.manualSession;
1887
- const runtimeSession = account.runtimeSession;
1888
- const contexts = new Set([
1889
- manualSession?.context,
1890
- runtimeSession?.context,
1891
- ].filter(Boolean));
1892
- const ownedBrowsers = new Set([
1893
- manualSession?.headedBrowser,
1894
- manualSession?.ownedBrowser,
1895
- ].filter(Boolean));
1896
- void Promise.allSettled([
1897
- ...[...contexts].map((context) => closeResourceBounded(context)),
1898
- ...[...ownedBrowsers].map((browser) => forceCloseBrowser(browser)),
1899
- ]);
1900
- account.runtimeSession = null;
1901
- account.manualSession = null;
1902
- if (ACTIVE_CN_ACCOUNT_STATUSES.has(account.status)) {
1903
- this.finalizeAccount(account, "cancelled", {
1904
- error: "Job cancelled",
1905
- step: "cancelled",
1906
- message: "Job cancelled by user",
1907
- });
1908
- }
1909
- }
1910
-
1911
- // CRITICAL: force-kill Chromium. Graceful close alone hangs when nav is stuck.
1912
- if (job.browser) {
1913
- const browser = job.browser;
1914
- job.browser = null;
1915
- void forceCloseBrowser(browser).catch(() => null);
1916
- }
1917
-
1918
- if (ACTIVE_CN_JOB_STATUSES.has(job.status)) {
1919
- job.status = "cancelled";
1920
- job.finishedAt = job.finishedAt || nowIso();
1921
- }
1922
-
1923
- void this.persistJobSnapshot(job, { forcePreview: true });
1924
- return sanitizeCnJob(job);
1925
- }
1926
- }
1927
-
1928
- // ─── Helpers ──────────────────────────────────────────────────────────────
1929
-
1930
- function defaultFiveSimClientFactory({ apiKey, proxyOptions }) {
1931
- return new FiveSimClient({ apiKey, proxyOptions });
1932
- }
1933
-
1934
- /**
1935
- * Sanitize a job for API response (strip non-serializable fields like
1936
- * AbortController, runtimeSession, etc.).
1937
- */
1938
- function buildCnSummary(accounts = []) {
1939
- const summary = {
1940
- total: accounts.length,
1941
- queued: 0,
1942
- running: 0,
1943
- completed: 0,
1944
- success: 0,
1945
- failed: 0,
1946
- needs_manual: 0,
1947
- cancelled: 0,
1948
- };
1949
- for (const account of accounts) {
1950
- const status = account.status || "queued";
1951
- if (status === "success") {
1952
- summary.success += 1;
1953
- summary.completed += 1;
1954
- } else if (status.startsWith("failed")) {
1955
- summary.failed += 1;
1956
- summary.completed += 1;
1957
- } else if (status === "needs_manual") {
1958
- summary.needs_manual += 1;
1959
- } else if (status === "cancelled") {
1960
- summary.cancelled += 1;
1961
- summary.completed += 1;
1962
- } else if (status === "running") {
1963
- summary.running += 1;
1964
- } else {
1965
- summary.queued += 1;
1966
- }
1967
- }
1968
- return summary;
1969
- }
1970
-
1971
- function sanitizeCnJob(job, extras = {}) {
1972
- if (!job) return null;
1973
- return {
1974
- jobId: job.jobId,
1975
- status: job.status,
1976
- summary: buildCnSummary(job.accounts),
1977
- concurrency: job.concurrency,
1978
- proxyPoolMode: job.proxyPoolMode,
1979
- region: job.region,
1980
- createdAt: job.createdAt,
1981
- startedAt: job.startedAt,
1982
- finishedAt: job.finishedAt,
1983
- error: redactCredentialText(job.error),
1984
- cancelRequested: job.cancelRequested,
1985
- accounts: (job.accounts || []).map((account) => ({
1986
- line: account.line,
1987
- region: account.region,
1988
- phone: account.phone,
1989
- fiveSimOrderId: account.fiveSimOrderId,
1990
- proxyUrl: account.proxyUrl ? maskProxyUrl(account.proxyUrl) : null,
1991
- egressIp: account.egressIp || null,
1992
- proxyTimezone: account.proxyTimezone || null,
1993
- proxyLocale: account.proxyLocale || null,
1994
- status: account.status,
1995
- error: redactCredentialText(account.error),
1996
- connectionId: account.connectionId,
1997
- workerId: account.workerId,
1998
- manualSessionAvailable: !!account.manualSession,
1999
- currentStep: account.currentStep,
2000
- updatedAt: account.updatedAt,
2001
- logs: (account.logs || []).map((entry) => ({
2002
- ...entry,
2003
- message: redactCredentialText(entry.message),
2004
- })),
2005
- })),
2006
- preview: extras.preview !== undefined ? extras.preview : (job.lastPreview || null),
2007
- ...extras,
2008
- };
2009
- }
2010
-
2011
- function maskProxyUrl(url) {
2012
- if (!url) return null;
2013
- const raw = String(url);
2014
- const maskMalformed = () => raw.length > 20
2015
- ? `${raw.slice(0, 10)}***${raw.slice(-10)}`
2016
- : "***";
2017
- try {
2018
- const parsed = new URL(raw);
2019
- if (!/^(https?|socks4|socks5):$/.test(parsed.protocol)) {
2020
- return maskMalformed();
2021
- }
2022
- return redactCredentialUrl(raw);
2023
- } catch {
2024
- return maskMalformed();
2025
- }
2026
- }
2027
-
2028
- // ─── Singleton ────────────────────────────────────────────────────────────
2029
-
2030
- function getSingletonStore() {
2031
- if (!globalThis.__codeBuddyCnBulkImportSingleton) {
2032
- globalThis.__codeBuddyCnBulkImportSingleton = {
2033
- manager: new CodeBuddyCnBulkImportManager(),
2034
- };
2035
- }
2036
- return globalThis.__codeBuddyCnBulkImportSingleton;
2037
- }
2038
-
2039
- export function getCodeBuddyCnBulkImportManager() {
2040
- return getSingletonStore().manager;
2041
- }
2042
-
2043
- export {
2044
- buildLookupResponse,
2045
- CODEBUDDY_CN_DEFAULT_CONCURRENCY,
2046
- CODEBUDDY_CN_MAX_CONCURRENCY,
2047
- CODEBUDDY_CN_MIN_CONCURRENCY,
2048
- CODEBUDDY_CN_MAX_COUNT,
2049
- SUPPORTED_REGIONS,
2050
- DEFAULT_REGION,
2051
- };
2052
-
2053
- export const __test__ = {
2054
- clampCnConcurrency,
2055
- resolveCnJobConcurrency,
2056
- requiresIsolatedProxyBrowser,
2057
- requireSelectedProxy,
2058
- assertAutomaticApiKeyRetrySafe,
2059
- sanitizeCnJob,
2060
- defaultPhoneFormatter,
2061
- defaultSaveCodeBuddyCnConnection,
2062
- buildCnSummary,
2063
- hasRestrictedConsoleEvidence,
2064
- isLoginHtmlProbe,
2065
- parseEgressIp,
2066
- parseConsoleProbeBody,
2067
- probeCodeBuddyProxyEgress,
2068
- probeCodeBuddyConsoleAccounts,
2069
- requireStableProxyEgress,
2070
- withTimeoutCleanup,
2071
- attachCnManualSession,
2072
- findLatestPersistedCnJobId,
2073
- AUTOMATION_LIMITS: {
2074
- registrationHardTimeoutMs: CODEBUDDY_CN_ACCOUNT_HARD_TIMEOUT_MS,
2075
- browserLaunchTimeoutMs: CODEBUDDY_CN_BROWSER_LAUNCH_TIMEOUT_MS,
2076
- contextTimeoutMs: CODEBUDDY_CN_CONTEXT_TIMEOUT_MS,
2077
- consoleNavTimeoutMs: CODEBUDDY_CN_CONSOLE_NAV_TIMEOUT_MS,
2078
- consoleProbeTimeoutMs: CODEBUDDY_CN_CONSOLE_PROBE_TIMEOUT_MS,
2079
- apiKeyRequestTimeoutMs: CODEBUDDY_CN_API_KEY_REQUEST_TIMEOUT_MS,
2080
- oidcMaxAttempts: CODEBUDDY_CN_OIDC_MAX_ATTEMPTS,
2081
- apiRehandoffRounds: CODEBUDDY_CN_API_REHANDOFF_ROUNDS,
2082
- manualTimeoutMs: CODEBUDDY_CN_MANUAL_TIMEOUT_MS,
2083
- lowMemoryManualTimeoutMs: CODEBUDDY_CN_LOW_MEM_MANUAL_TIMEOUT_MS,
2084
- resourceCloseTimeoutMs: CODEBUDDY_CN_RESOURCE_CLOSE_TIMEOUT_MS,
2085
- fiveSimSettleTimeoutMs: CODEBUDDY_CN_FIVESIM_SETTLE_TIMEOUT_MS,
2086
- egressProbeTimeoutMs: CODEBUDDY_CN_EGRESS_PROBE_TIMEOUT_MS,
2087
- },
2088
- };