zevairouter 1.0.62 → 1.0.65

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 (400) hide show
  1. package/CHANGELOG.md +31 -8
  2. package/README.md +58 -10
  3. package/README.zh-CN.md +37 -0
  4. package/cli/app/.next-cli-build/BUILD_ID +1 -1
  5. package/cli/app/.next-cli-build/app-path-routes-manifest.json +20 -20
  6. package/cli/app/.next-cli-build/build-manifest.json +2 -2
  7. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/automation/page_client-reference-manifest.js +1 -1
  8. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
  9. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page_client-reference-manifest.js +1 -1
  10. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  11. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  12. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
  13. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/context/page_client-reference-manifest.js +1 -1
  14. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  15. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
  16. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -1
  17. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +1 -1
  18. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +1 -1
  19. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
  20. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  21. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/playground/page_client-reference-manifest.js +1 -1
  22. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  23. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  24. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  25. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  26. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
  27. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page_client-reference-manifest.js +1 -1
  28. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
  29. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/terminal/page_client-reference-manifest.js +1 -1
  30. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page_client-reference-manifest.js +1 -1
  31. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  32. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  33. package/cli/app/.next-cli-build/server/app/_global-error/page_client-reference-manifest.js +1 -1
  34. package/cli/app/.next-cli-build/server/app/_global-error.html +1 -1
  35. package/cli/app/.next-cli-build/server/app/_global-error.rsc +1 -1
  36. package/cli/app/.next-cli-build/server/app/_global-error.segments/_full.segment.rsc +1 -1
  37. package/cli/app/.next-cli-build/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  38. package/cli/app/.next-cli-build/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  39. package/cli/app/.next-cli-build/server/app/_global-error.segments/_head.segment.rsc +1 -1
  40. package/cli/app/.next-cli-build/server/app/_global-error.segments/_index.segment.rsc +1 -1
  41. package/cli/app/.next-cli-build/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  42. package/cli/app/.next-cli-build/server/app/_not-found/page_client-reference-manifest.js +1 -1
  43. package/cli/app/.next-cli-build/server/app/_not-found.html +1 -1
  44. package/cli/app/.next-cli-build/server/app/_not-found.rsc +3 -3
  45. package/cli/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +3 -3
  46. package/cli/app/.next-cli-build/server/app/_not-found.segments/_head.segment.rsc +1 -1
  47. package/cli/app/.next-cli-build/server/app/_not-found.segments/_index.segment.rsc +3 -3
  48. package/cli/app/.next-cli-build/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  49. package/cli/app/.next-cli-build/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  50. package/cli/app/.next-cli-build/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  51. package/cli/app/.next-cli-build/server/app/api/models/route.js +1 -1
  52. package/cli/app/.next-cli-build/server/app/api/models/test/route.js +1 -1
  53. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
  54. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
  55. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/route.js.nft.json +1 -1
  56. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/latest/route.js.nft.json +1 -1
  57. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/route.js.nft.json +1 -1
  58. package/cli/app/.next-cli-build/server/app/api/oauth/autoclaw/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
  59. package/cli/app/.next-cli-build/server/app/api/oauth/autoclaw/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
  60. package/cli/app/.next-cli-build/server/app/api/oauth/autoclaw/bulk-import/[jobId]/route.js.nft.json +1 -1
  61. package/cli/app/.next-cli-build/server/app/api/oauth/autoclaw/bulk-import/latest/route.js.nft.json +1 -1
  62. package/cli/app/.next-cli-build/server/app/api/oauth/autoclaw/bulk-import/route.js.nft.json +1 -1
  63. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
  64. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
  65. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/route.js.nft.json +1 -1
  66. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/latest/route.js.nft.json +1 -1
  67. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/route.js.nft.json +1 -1
  68. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/cancel/route.js +1 -1
  69. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
  70. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/manual/[workerId]/route.js +1 -1
  71. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
  72. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/route.js +1 -1
  73. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/route.js.nft.json +1 -1
  74. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/latest/route.js +1 -1
  75. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/latest/route.js.nft.json +1 -1
  76. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/route.js +1 -1
  77. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/route.js.nft.json +1 -1
  78. package/cli/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
  79. package/cli/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
  80. package/cli/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/[jobId]/route.js.nft.json +1 -1
  81. package/cli/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/latest/route.js.nft.json +1 -1
  82. package/cli/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/route.js.nft.json +1 -1
  83. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
  84. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
  85. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/route.js.nft.json +1 -1
  86. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/latest/route.js.nft.json +1 -1
  87. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/route.js.nft.json +1 -1
  88. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js.nft.json +1 -1
  89. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
  90. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
  91. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/route.js.nft.json +1 -1
  92. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/latest/route.js.nft.json +1 -1
  93. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/route.js.nft.json +1 -1
  94. package/cli/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js +1 -1
  95. package/cli/app/.next-cli-build/server/app/api/providers/route.js +1 -1
  96. package/cli/app/.next-cli-build/server/app/api/providers/validate/route.js +1 -1
  97. package/cli/app/.next-cli-build/server/app/api/settings/database/route.js +1 -1
  98. package/cli/app/.next-cli-build/server/app/api/settings/route.js +1 -1
  99. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/input/route.js.nft.json +1 -1
  100. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/resize/route.js.nft.json +1 -1
  101. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/route.js.nft.json +1 -1
  102. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/stream/route.js.nft.json +1 -1
  103. package/cli/app/.next-cli-build/server/app/api/terminal/session/route.js.nft.json +1 -1
  104. package/cli/app/.next-cli-build/server/app/api/translator/console-logs/route.js +1 -1
  105. package/cli/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js +1 -1
  106. package/cli/app/.next-cli-build/server/app/api/version/route.js +1 -1
  107. package/cli/app/.next-cli-build/server/app/api/version/shutdown/route.js +1 -1
  108. package/cli/app/.next-cli-build/server/app/api/version/update/route.js +1 -1
  109. package/cli/app/.next-cli-build/server/app/callback/page_client-reference-manifest.js +1 -1
  110. package/cli/app/.next-cli-build/server/app/callback.html +1 -1
  111. package/cli/app/.next-cli-build/server/app/callback.rsc +3 -3
  112. package/cli/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +3 -3
  113. package/cli/app/.next-cli-build/server/app/callback.segments/_head.segment.rsc +1 -1
  114. package/cli/app/.next-cli-build/server/app/callback.segments/_index.segment.rsc +3 -3
  115. package/cli/app/.next-cli-build/server/app/callback.segments/_tree.segment.rsc +1 -1
  116. package/cli/app/.next-cli-build/server/app/callback.segments/callback/__PAGE__.segment.rsc +1 -1
  117. package/cli/app/.next-cli-build/server/app/callback.segments/callback.segment.rsc +1 -1
  118. package/cli/app/.next-cli-build/server/app/dashboard/automation.html +1 -1
  119. package/cli/app/.next-cli-build/server/app/dashboard/automation.rsc +5 -5
  120. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk/dashboard/automation/__PAGE__.segment.rsc +2 -2
  121. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk/dashboard/automation.segment.rsc +1 -1
  122. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  123. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  124. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_full.segment.rsc +5 -5
  125. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_head.segment.rsc +1 -1
  126. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_index.segment.rsc +3 -3
  127. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_tree.segment.rsc +1 -1
  128. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.html +1 -1
  129. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.rsc +5 -5
  130. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +2 -2
  131. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat.segment.rsc +1 -1
  132. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  133. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  134. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_full.segment.rsc +5 -5
  135. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_head.segment.rsc +1 -1
  136. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_index.segment.rsc +3 -3
  137. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +1 -1
  138. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.html +1 -1
  139. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.rsc +5 -5
  140. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +2 -2
  141. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools.segment.rsc +1 -1
  142. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  143. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  144. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_full.segment.rsc +5 -5
  145. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_head.segment.rsc +1 -1
  146. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_index.segment.rsc +3 -3
  147. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +1 -1
  148. package/cli/app/.next-cli-build/server/app/dashboard/combos.html +1 -1
  149. package/cli/app/.next-cli-build/server/app/dashboard/combos.rsc +5 -5
  150. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +2 -2
  151. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos.segment.rsc +1 -1
  152. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  153. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  154. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_full.segment.rsc +5 -5
  155. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_head.segment.rsc +1 -1
  156. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_index.segment.rsc +3 -3
  157. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_tree.segment.rsc +1 -1
  158. package/cli/app/.next-cli-build/server/app/dashboard/context.html +1 -1
  159. package/cli/app/.next-cli-build/server/app/dashboard/context.rsc +5 -5
  160. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/!KGRhc2hib2FyZCk/dashboard/context/__PAGE__.segment.rsc +2 -2
  161. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/!KGRhc2hib2FyZCk/dashboard/context.segment.rsc +1 -1
  162. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  163. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  164. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_full.segment.rsc +5 -5
  165. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_head.segment.rsc +1 -1
  166. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_index.segment.rsc +3 -3
  167. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_tree.segment.rsc +1 -1
  168. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.html +1 -1
  169. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.rsc +5 -5
  170. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +2 -2
  171. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint.segment.rsc +1 -1
  172. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  173. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  174. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_full.segment.rsc +5 -5
  175. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_head.segment.rsc +1 -1
  176. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_index.segment.rsc +3 -3
  177. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_tree.segment.rsc +1 -1
  178. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.html +1 -1
  179. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.rsc +5 -5
  180. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web/__PAGE__.segment.rsc +2 -2
  181. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web.segment.rsc +1 -1
  182. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers.segment.rsc +1 -1
  183. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  184. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  185. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_full.segment.rsc +5 -5
  186. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_head.segment.rsc +1 -1
  187. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_index.segment.rsc +3 -3
  188. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_tree.segment.rsc +1 -1
  189. package/cli/app/.next-cli-build/server/app/dashboard/mitm.html +1 -1
  190. package/cli/app/.next-cli-build/server/app/dashboard/mitm.rsc +5 -5
  191. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +2 -2
  192. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm.segment.rsc +1 -1
  193. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  194. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  195. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_full.segment.rsc +5 -5
  196. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_head.segment.rsc +1 -1
  197. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_index.segment.rsc +3 -3
  198. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_tree.segment.rsc +1 -1
  199. package/cli/app/.next-cli-build/server/app/dashboard/playground.html +1 -1
  200. package/cli/app/.next-cli-build/server/app/dashboard/playground.rsc +5 -5
  201. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk/dashboard/playground/__PAGE__.segment.rsc +2 -2
  202. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk/dashboard/playground.segment.rsc +1 -1
  203. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  204. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  205. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_full.segment.rsc +5 -5
  206. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_head.segment.rsc +1 -1
  207. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_index.segment.rsc +3 -3
  208. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_tree.segment.rsc +1 -1
  209. package/cli/app/.next-cli-build/server/app/dashboard/profile.html +1 -1
  210. package/cli/app/.next-cli-build/server/app/dashboard/profile.rsc +5 -5
  211. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +2 -2
  212. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile.segment.rsc +1 -1
  213. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  214. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  215. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_full.segment.rsc +5 -5
  216. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_head.segment.rsc +1 -1
  217. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_index.segment.rsc +3 -3
  218. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_tree.segment.rsc +1 -1
  219. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.html +1 -1
  220. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.rsc +5 -5
  221. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +2 -2
  222. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new.segment.rsc +1 -1
  223. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  224. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  225. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  226. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_full.segment.rsc +5 -5
  227. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_head.segment.rsc +1 -1
  228. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_index.segment.rsc +3 -3
  229. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_tree.segment.rsc +1 -1
  230. package/cli/app/.next-cli-build/server/app/dashboard/providers.html +1 -1
  231. package/cli/app/.next-cli-build/server/app/dashboard/providers.rsc +5 -5
  232. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +2 -2
  233. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  234. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  235. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  236. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_full.segment.rsc +5 -5
  237. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_head.segment.rsc +1 -1
  238. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_index.segment.rsc +3 -3
  239. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_tree.segment.rsc +1 -1
  240. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.html +1 -1
  241. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.rsc +5 -5
  242. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +2 -2
  243. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools.segment.rsc +1 -1
  244. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  245. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  246. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +5 -5
  247. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_head.segment.rsc +1 -1
  248. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_index.segment.rsc +3 -3
  249. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +1 -1
  250. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.html +1 -1
  251. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.rsc +5 -5
  252. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard/pxpipe/__PAGE__.segment.rsc +2 -2
  253. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard/pxpipe.segment.rsc +1 -1
  254. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  255. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  256. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_full.segment.rsc +5 -5
  257. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_head.segment.rsc +1 -1
  258. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_index.segment.rsc +3 -3
  259. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_tree.segment.rsc +1 -1
  260. package/cli/app/.next-cli-build/server/app/dashboard/quota.html +2 -2
  261. package/cli/app/.next-cli-build/server/app/dashboard/quota.rsc +6 -6
  262. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +3 -3
  263. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota.segment.rsc +1 -1
  264. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  265. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  266. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_full.segment.rsc +6 -6
  267. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_head.segment.rsc +1 -1
  268. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_index.segment.rsc +3 -3
  269. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_tree.segment.rsc +1 -1
  270. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  271. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.html +1 -1
  272. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.rsc +3 -3
  273. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +3 -3
  274. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +1 -1
  275. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +3 -3
  276. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +1 -1
  277. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +1 -1
  278. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing.segment.rsc +1 -1
  279. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings.segment.rsc +1 -1
  280. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard.segment.rsc +1 -1
  281. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.html +1 -1
  282. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.rsc +5 -5
  283. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver/__PAGE__.segment.rsc +2 -2
  284. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver.segment.rsc +1 -1
  285. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  286. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  287. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_full.segment.rsc +5 -5
  288. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_head.segment.rsc +1 -1
  289. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_index.segment.rsc +3 -3
  290. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_tree.segment.rsc +1 -1
  291. package/cli/app/.next-cli-build/server/app/dashboard/translator.html +1 -1
  292. package/cli/app/.next-cli-build/server/app/dashboard/translator.rsc +5 -5
  293. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +2 -2
  294. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator.segment.rsc +1 -1
  295. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  296. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  297. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_full.segment.rsc +5 -5
  298. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_head.segment.rsc +1 -1
  299. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_index.segment.rsc +3 -3
  300. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_tree.segment.rsc +1 -1
  301. package/cli/app/.next-cli-build/server/app/dashboard/usage.html +1 -1
  302. package/cli/app/.next-cli-build/server/app/dashboard/usage.rsc +5 -5
  303. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +2 -2
  304. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage.segment.rsc +1 -1
  305. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  306. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  307. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_full.segment.rsc +5 -5
  308. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_head.segment.rsc +1 -1
  309. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_index.segment.rsc +3 -3
  310. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_tree.segment.rsc +1 -1
  311. package/cli/app/.next-cli-build/server/app/dashboard.html +1 -1
  312. package/cli/app/.next-cli-build/server/app/dashboard.rsc +5 -5
  313. package/cli/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +2 -2
  314. package/cli/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  315. package/cli/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  316. package/cli/app/.next-cli-build/server/app/dashboard.segments/_full.segment.rsc +5 -5
  317. package/cli/app/.next-cli-build/server/app/dashboard.segments/_head.segment.rsc +1 -1
  318. package/cli/app/.next-cli-build/server/app/dashboard.segments/_index.segment.rsc +3 -3
  319. package/cli/app/.next-cli-build/server/app/dashboard.segments/_tree.segment.rsc +1 -1
  320. package/cli/app/.next-cli-build/server/app/index.html +1 -1
  321. package/cli/app/.next-cli-build/server/app/index.rsc +3 -3
  322. package/cli/app/.next-cli-build/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  323. package/cli/app/.next-cli-build/server/app/index.segments/_full.segment.rsc +3 -3
  324. package/cli/app/.next-cli-build/server/app/index.segments/_head.segment.rsc +1 -1
  325. package/cli/app/.next-cli-build/server/app/index.segments/_index.segment.rsc +3 -3
  326. package/cli/app/.next-cli-build/server/app/index.segments/_tree.segment.rsc +1 -1
  327. package/cli/app/.next-cli-build/server/app/landing/page.js +1 -1
  328. package/cli/app/.next-cli-build/server/app/landing/page_client-reference-manifest.js +1 -1
  329. package/cli/app/.next-cli-build/server/app/landing.html +1 -1
  330. package/cli/app/.next-cli-build/server/app/landing.rsc +4 -4
  331. package/cli/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +4 -4
  332. package/cli/app/.next-cli-build/server/app/landing.segments/_head.segment.rsc +1 -1
  333. package/cli/app/.next-cli-build/server/app/landing.segments/_index.segment.rsc +3 -3
  334. package/cli/app/.next-cli-build/server/app/landing.segments/_tree.segment.rsc +1 -1
  335. package/cli/app/.next-cli-build/server/app/landing.segments/landing/__PAGE__.segment.rsc +2 -2
  336. package/cli/app/.next-cli-build/server/app/landing.segments/landing.segment.rsc +1 -1
  337. package/cli/app/.next-cli-build/server/app/login/page_client-reference-manifest.js +1 -1
  338. package/cli/app/.next-cli-build/server/app/login.html +1 -1
  339. package/cli/app/.next-cli-build/server/app/login.rsc +4 -4
  340. package/cli/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +4 -4
  341. package/cli/app/.next-cli-build/server/app/login.segments/_head.segment.rsc +1 -1
  342. package/cli/app/.next-cli-build/server/app/login.segments/_index.segment.rsc +3 -3
  343. package/cli/app/.next-cli-build/server/app/login.segments/_tree.segment.rsc +1 -1
  344. package/cli/app/.next-cli-build/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
  345. package/cli/app/.next-cli-build/server/app/login.segments/login.segment.rsc +1 -1
  346. package/cli/app/.next-cli-build/server/app/page_client-reference-manifest.js +1 -1
  347. package/cli/app/.next-cli-build/server/app-paths-manifest.json +20 -20
  348. package/cli/app/.next-cli-build/server/chunks/3110.js +1 -1
  349. package/cli/app/.next-cli-build/server/chunks/3407.js +1 -1
  350. package/cli/app/.next-cli-build/server/chunks/4746.js +1 -1
  351. package/cli/app/.next-cli-build/server/chunks/5681.js +1 -1
  352. package/cli/app/.next-cli-build/server/chunks/5949.js +8 -3
  353. package/cli/app/.next-cli-build/server/chunks/6896.js +1 -1
  354. package/cli/app/.next-cli-build/server/chunks/7276.js +1 -1
  355. package/cli/app/.next-cli-build/server/chunks/8157.js +1 -1
  356. package/cli/app/.next-cli-build/server/chunks/8371.js +1 -1
  357. package/cli/app/.next-cli-build/server/middleware-build-manifest.js +1 -1
  358. package/cli/app/.next-cli-build/server/pages/404.html +1 -1
  359. package/cli/app/.next-cli-build/server/pages/500.html +1 -1
  360. package/cli/app/.next-cli-build/static/chunks/{3702-3049f543449956ae.js → 3702-a3e0eb456327db63.js} +1 -1
  361. package/cli/app/.next-cli-build/static/chunks/app/landing/page-6621ec8b157e77cc.js +1 -0
  362. package/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/src/lib/terminal/ptyBridge.py +163 -0
  363. package/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/src/lib/terminal/ptyBridge.py +163 -0
  364. package/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/src/lib/terminal/ptyBridge.py +163 -0
  365. package/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/src/lib/terminal/ptyBridge.py +163 -0
  366. package/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/src/lib/terminal/ptyBridge.py +163 -0
  367. package/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/src/lib/terminal/ptyBridge.py +163 -0
  368. package/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/src/lib/terminal/ptyBridge.py +163 -0
  369. package/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/src/lib/terminal/ptyBridge.py +163 -0
  370. package/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/src/lib/terminal/ptyBridge.py +163 -0
  371. package/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/src/lib/terminal/ptyBridge.py +163 -0
  372. package/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/src/lib/terminal/ptyBridge.py +163 -0
  373. package/cli/app/cli/hooks/camoufoxRuntime.js +227 -24
  374. package/cli/app/cli/hooks/cloakbrowserRuntime.js +0 -7
  375. package/cli/app/package.json +1 -1
  376. package/cli/app/src/lib/oauth/services/displayEnv.js +134 -0
  377. package/cli/hooks/camoufoxRuntime.js +227 -24
  378. package/cli/hooks/cloakbrowserRuntime.js +0 -7
  379. package/cli/package.json +1 -1
  380. package/i18n/README.ja-JP.md +19 -1191
  381. package/i18n/README.ru.md +19 -1293
  382. package/i18n/README.vi.md +19 -1292
  383. package/i18n/README.zh-CN.md +19 -1288
  384. package/open-sse/config/kiroConstants.js +1 -1
  385. package/package.json +1 -1
  386. package/src/app/landing/components/Features.js +2 -2
  387. package/src/app/landing/components/HeroSection.js +1 -1
  388. package/src/app/landing/components/HowItWorks.js +2 -2
  389. package/src/app/landing/page.js +3 -3
  390. package/src/lib/network/outboundProxy.js +37 -23
  391. package/src/lib/oauth/services/bulkImportBrowserEngine.js +219 -22
  392. package/src/lib/oauth/services/codebuddyCnBulkImportManager.js +161 -72
  393. package/src/lib/oauth/services/codebuddyCnPhoneAutomation.js +95 -41
  394. package/src/lib/oauth/services/kiroBulkImportManager.js +18 -13
  395. package/src/mitm/manager.js +1 -1
  396. package/src/shared/constants/providers.js +4 -4
  397. package/cli/app/.next-cli-build/static/chunks/app/landing/page-77b3f78b93a8d0c7.js +0 -1
  398. package/cli/app/src/lib/oauth/services/bulkImportBrowserEngine.js +0 -325
  399. /package/cli/app/.next-cli-build/static/{4qzgXNlTatuSwREqjg1Tx → UogfdHPvWmU8zuWF5IR-t}/_buildManifest.js +0 -0
  400. /package/cli/app/.next-cli-build/static/{4qzgXNlTatuSwREqjg1Tx → UogfdHPvWmU8zuWF5IR-t}/_ssgManifest.js +0 -0
@@ -169,7 +169,7 @@ export function shouldExposeKiroReasoning(body) {
169
169
  const envSource = typeof process !== "undefined" ? process.env : {};
170
170
  const env = firstDefined(
171
171
  envSource.KIRO_EXPOSE_REASONING,
172
- envSource.NINE_ROUTER_EXPOSE_REASONING
172
+ envSource.ZEVAI_EXPOSE_REASONING
173
173
  );
174
174
  const parsedEnv = parseBooleanLike(env);
175
175
  return parsedEnv === true;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zevairouter",
3
- "version": "1.0.62",
3
+ "version": "1.0.65",
4
4
  "description": "Self-hosted AI router: many providers, one OpenAI-compatible /v1 endpoint and dashboard",
5
5
  "bin": {
6
6
  "zevai": "./cli/cli.js"
@@ -104,9 +104,9 @@ export default function Features() {
104
104
  <section className="py-24 px-6" id="features">
105
105
  <div className="max-w-7xl mx-auto">
106
106
  <div className="mb-16">
107
- <h2 className="text-3xl md:text-4xl font-bold mb-4">Powerful Features</h2>
107
+ <h2 className="text-3xl md:text-4xl font-bold mb-4">Features</h2>
108
108
  <p className="text-gray-400 max-w-xl text-lg">
109
- Everything you need to manage your AI infrastructure in one place, built for scale.
109
+ Routing, dashboard, and tooling for the accounts you connect.
110
110
  </p>
111
111
  </div>
112
112
 
@@ -21,7 +21,7 @@ export default function HeroSection() {
21
21
 
22
22
  {/* Description */}
23
23
  <p className="text-lg md:text-xl text-gray-400 max-w-2xl mx-auto font-light">
24
- AI endpoint proxy with web dashboard - A JavaScript port of CLIProxyAPI. Works seamlessly with Claude Code, OpenAI Codex, Cline, RooCode, and other CLI tools.
24
+ Self-hosted AI router with a web dashboard. One OpenAI-compatible endpoint for Claude Code, Codex, Cline, Cursor, and similar tools.
25
25
  </p>
26
26
 
27
27
  {/* CTA Buttons */}
@@ -7,7 +7,7 @@ export default function HowItWorks() {
7
7
  <div className="mb-16">
8
8
  <h2 className="text-3xl md:text-4xl font-bold mb-4">How ZevaiRouter Works</h2>
9
9
  <p className="text-gray-400 max-w-xl text-lg">
10
- Data flows seamlessly from your application through our intelligent routing layer to the best provider for the job.
10
+ Tools call one local endpoint. ZevaiRouter routes to the accounts you connected and can fall back when one hits a limit.
11
11
  </p>
12
12
  </div>
13
13
 
@@ -36,7 +36,7 @@ export default function HowItWorks() {
36
36
  <div>
37
37
  <h3 className="text-xl font-bold mb-2 text-[#f97815]">2. ZevaiRouter Hub</h3>
38
38
  <p className="text-sm text-gray-400">
39
- Our engine analyzes the prompt, checks provider health, and routes for lowest latency or cost.
39
+ Routes to your connected providers using combos, strategies, and quota-aware fallback.
40
40
  </p>
41
41
  </div>
42
42
  </div>
@@ -51,16 +51,16 @@ export default function LandingPage() {
51
51
  <section className="py-32 px-6 relative overflow-hidden">
52
52
  <div className="absolute inset-0 bg-linear-to-t from-[#f97815]/5 to-transparent pointer-events-none"></div>
53
53
  <div className="max-w-4xl mx-auto text-center relative z-10">
54
- <h2 className="text-4xl md:text-5xl font-black mb-6">Ready to Simplify Your AI Infrastructure?</h2>
54
+ <h2 className="text-4xl md:text-5xl font-black mb-6">Open the dashboard</h2>
55
55
  <p className="text-xl text-gray-400 mb-10 max-w-2xl mx-auto">
56
- Join developers who are streamlining their AI integrations with ZevaiRouter. Open source and free to start.
56
+ Self-hosted. Open source (MIT). Point your tools at <code className="text-sm text-gray-300">http://localhost:1997/v1</code>.
57
57
  </p>
58
58
  <div className="flex flex-col sm:flex-row items-center justify-center gap-4">
59
59
  <button
60
60
  onClick={() => router.push("/dashboard")}
61
61
  className="w-full sm:w-auto h-14 px-10 rounded-lg bg-[#f97815] hover:bg-[#e0650a] text-[#181411] text-lg font-bold transition-all shadow-[0_0_20px_rgba(249,120,21,0.5)]"
62
62
  >
63
- Start Free
63
+ Open dashboard
64
64
  </button>
65
65
  <button
66
66
  onClick={() => window.open("https://github.com/Verifiedlabs/zevairouter#readme", "_blank")}
@@ -3,24 +3,38 @@ function normalizeString(value) {
3
3
  return String(value).trim();
4
4
  }
5
5
 
6
+ /** Env markers for managed outbound proxy (ZevaiRouter). */
7
+ const MARK_MANAGED = "ZEVAI_PROXY_MANAGED";
8
+ const MARK_URL = "ZEVAI_PROXY_URL";
9
+ const MARK_NO_PROXY = "ZEVAI_NO_PROXY";
10
+
11
+ function isManaged(env) {
12
+ return env[MARK_MANAGED] === "1";
13
+ }
14
+
15
+ function clearManagedMarkers(env) {
16
+ delete env[MARK_MANAGED];
17
+ delete env[MARK_URL];
18
+ delete env[MARK_NO_PROXY];
19
+ }
20
+
6
21
  export function applyOutboundProxyEnv(
7
22
  { outboundProxyEnabled, outboundProxyUrl, outboundNoProxy } = {}
8
23
  ) {
9
24
  if (typeof process === "undefined" || !process.env) return;
25
+ const env = process.env;
10
26
  const enabled = Boolean(outboundProxyEnabled);
11
27
  const proxyUrl = normalizeString(outboundProxyUrl);
12
28
  const noProxy = normalizeString(outboundNoProxy);
13
29
 
14
30
  // If disabled, only clear env vars we previously managed.
15
31
  if (!enabled) {
16
- if (process.env.NINE_ROUTER_PROXY_MANAGED === "1") {
17
- delete process.env.HTTP_PROXY;
18
- delete process.env.HTTPS_PROXY;
19
- delete process.env.ALL_PROXY;
20
- delete process.env.NO_PROXY;
21
- delete process.env.NINE_ROUTER_PROXY_MANAGED;
22
- delete process.env.NINE_ROUTER_PROXY_URL;
23
- delete process.env.NINE_ROUTER_NO_PROXY;
32
+ if (isManaged(env)) {
33
+ delete env.HTTP_PROXY;
34
+ delete env.HTTPS_PROXY;
35
+ delete env.ALL_PROXY;
36
+ delete env.NO_PROXY;
37
+ clearManagedMarkers(env);
24
38
  }
25
39
  return;
26
40
  }
@@ -29,40 +43,40 @@ export function applyOutboundProxyEnv(
29
43
  // - If values are provided, write them and mark as managed
30
44
  // - If values are empty, do not touch externally-provided env,
31
45
  // but do clear values we previously managed.
32
- const wasManaged = process.env.NINE_ROUTER_PROXY_MANAGED === "1";
46
+ const wasManaged = isManaged(env);
33
47
  let managed = false;
34
48
 
35
49
  if (wasManaged) {
36
50
  if (!proxyUrl) {
37
- delete process.env.HTTP_PROXY;
38
- delete process.env.HTTPS_PROXY;
39
- delete process.env.ALL_PROXY;
40
- delete process.env.NINE_ROUTER_PROXY_URL;
51
+ delete env.HTTP_PROXY;
52
+ delete env.HTTPS_PROXY;
53
+ delete env.ALL_PROXY;
54
+ delete env[MARK_URL];
41
55
  }
42
56
  if (!noProxy) {
43
- delete process.env.NO_PROXY;
44
- delete process.env.NINE_ROUTER_NO_PROXY;
57
+ delete env.NO_PROXY;
58
+ delete env[MARK_NO_PROXY];
45
59
  }
46
60
  }
47
61
 
48
62
  if (proxyUrl) {
49
- process.env.HTTP_PROXY = proxyUrl;
50
- process.env.HTTPS_PROXY = proxyUrl;
51
- process.env.ALL_PROXY = proxyUrl;
52
- process.env.NINE_ROUTER_PROXY_URL = proxyUrl;
63
+ env.HTTP_PROXY = proxyUrl;
64
+ env.HTTPS_PROXY = proxyUrl;
65
+ env.ALL_PROXY = proxyUrl;
66
+ env[MARK_URL] = proxyUrl;
53
67
  managed = true;
54
68
  }
55
69
 
56
70
  if (noProxy) {
57
- process.env.NO_PROXY = noProxy;
58
- process.env.NINE_ROUTER_NO_PROXY = noProxy;
71
+ env.NO_PROXY = noProxy;
72
+ env[MARK_NO_PROXY] = noProxy;
59
73
  managed = true;
60
74
  }
61
75
 
62
76
  if (managed) {
63
- process.env.NINE_ROUTER_PROXY_MANAGED = "1";
77
+ env[MARK_MANAGED] = "1";
64
78
  } else if (wasManaged) {
65
79
  // If we previously managed env but now cleared everything, drop the marker.
66
- delete process.env.NINE_ROUTER_PROXY_MANAGED;
80
+ clearManagedMarkers(env);
67
81
  }
68
82
  }
@@ -91,7 +91,27 @@ function wrapBrowserWithStealth(browser) {
91
91
  return browser;
92
92
  }
93
93
 
94
+ /**
95
+ * Headed engines (Camoufox / Chromium / CloakBrowser) need a display on Linux VPS.
96
+ * Auto-start Xvfb via displayEnv when available.
97
+ */
98
+ async function ensureHeadedDisplayOrThrow() {
99
+ const { ensureDisplayForHeadedBrowser } = await import("./displayEnv.js");
100
+ const display = ensureDisplayForHeadedBrowser();
101
+ if (!display.ok) {
102
+ const err = display.error || new Error("No display for headed browser");
103
+ err.code = err.code || "NO_DISPLAY";
104
+ throw err;
105
+ }
106
+ return display;
107
+ }
108
+
94
109
  async function launchChromium({ proxyUrl, headless = true, windowSize = null } = {}) {
110
+ const wantHeadless = headless !== false;
111
+ if (!wantHeadless) {
112
+ await ensureHeadedDisplayOrThrow();
113
+ }
114
+
95
115
  let chromium = null;
96
116
  let importErr = null;
97
117
  try {
@@ -130,10 +150,10 @@ async function launchChromium({ proxyUrl, headless = true, windowSize = null } =
130
150
  throw friendly;
131
151
  }
132
152
 
133
- const width = windowSize?.width || (headless ? 1920 : 900);
134
- const height = windowSize?.height || (headless ? 1080 : 700);
153
+ const width = windowSize?.width || (wantHeadless ? 1920 : 900);
154
+ const height = windowSize?.height || (wantHeadless ? 1080 : 700);
135
155
  const options = {
136
- headless: headless !== false,
156
+ headless: wantHeadless,
137
157
  args: [
138
158
  "--disable-blink-features=AutomationControlled",
139
159
  "--disable-features=IsolateOrigins,site-per-process,AutomationControlled",
@@ -149,7 +169,7 @@ async function launchChromium({ proxyUrl, headless = true, windowSize = null } =
149
169
  "--password-store=basic",
150
170
  "--use-mock-keychain",
151
171
  `--window-size=${width},${height}`,
152
- ...(headless ? [] : ["--window-position=80,80"]),
172
+ ...(wantHeadless ? [] : ["--window-position=80,80"]),
153
173
  ],
154
174
  ignoreDefaultArgs: ["--enable-automation"],
155
175
  };
@@ -158,15 +178,31 @@ async function launchChromium({ proxyUrl, headless = true, windowSize = null } =
158
178
  options.proxy = parsePlaywrightProxy(proxyUrl) || { server: proxyUrl };
159
179
  }
160
180
 
161
- const browser = await chromium.launch(options);
162
- return wrapBrowserWithStealth(browser);
181
+ try {
182
+ const browser = await chromium.launch(options);
183
+ return wrapBrowserWithStealth(browser);
184
+ } catch (error) {
185
+ const msg = String(error?.message || error || "");
186
+ if (!wantHeadless && /XServer|DISPLAY|Missing X server|headed browser|no DISPLAY/i.test(msg)) {
187
+ await ensureHeadedDisplayOrThrow();
188
+ const browser = await chromium.launch(options);
189
+ return wrapBrowserWithStealth(browser);
190
+ }
191
+ throw error;
192
+ }
163
193
  }
164
194
 
165
195
  async function launchCamoufox({ proxyUrl, headless = true, windowSize = null } = {}) {
196
+ // CodeBuddy CN bulk defaults to headed Camoufox — needs Xvfb on Linux VPS.
197
+ const useHeadless = headless !== false;
198
+ if (!useHeadless) {
199
+ await ensureHeadedDisplayOrThrow();
200
+ }
201
+
166
202
  const runtime = loadRuntimeHelper("camoufoxRuntime");
167
203
  if (!runtime?.ensureCamoufoxRuntime) {
168
204
  const err = new Error(
169
- `Camoufox runtime helper missing. Reinstall z‍evairouter or pick the Chromium engine.`
205
+ `Camoufox runtime helper missing. Reinstall zevairouter or pick the Chromium engine.`
170
206
  );
171
207
  err.code = "CAMOUFOX_RUNTIME_HELPER_MISSING";
172
208
  throw err;
@@ -205,23 +241,131 @@ async function launchCamoufox({ proxyUrl, headless = true, windowSize = null } =
205
241
  // Context-only proxy is flaky (blank pages / half-sessions / 401 on console APIs).
206
242
  const { parsePlaywrightProxy } = await import("./proxyUtils.js");
207
243
  const parsedProxy = proxyUrl ? (parsePlaywrightProxy(proxyUrl) || { server: proxyUrl }) : null;
208
- const useHeadless = headless !== false;
209
- const camoufoxOptions = await camoufox.launchOptions({
210
- headless: useHeadless,
211
- ...(parsedProxy ? { proxy: parsedProxy, geoip: true } : {}),
212
- });
213
- const launchOptions = { ...camoufoxOptions, headless: useHeadless };
214
- if (parsedProxy) {
215
- launchOptions.proxy = parsedProxy;
216
- }
217
- // Small visible window for headed CN runs (server desktop)
218
- if (!useHeadless) {
219
- const width = windowSize?.width || 900;
220
- const height = windowSize?.height || 700;
221
- launchOptions.args = [...(launchOptions.args || []), `--width=${width}`, `--height=${height}`];
244
+
245
+ const buildLaunchOptions = async () => {
246
+ const camoufoxOptions = await camoufox.launchOptions({
247
+ headless: useHeadless,
248
+ ...(parsedProxy ? { proxy: parsedProxy, geoip: true } : {}),
249
+ });
250
+ // camoufox-js can emit fingerprint keys (e.g. audio:seed) that older Camoufox
251
+ // binaries reject → "Unknown property audio:seed in config". Always sanitize
252
+ // so Mac/Ubuntu users with a stale ~/.cache (or Library/Caches) still launch.
253
+ let opts = sanitizeCamoufoxLaunchOptions({
254
+ ...camoufoxOptions,
255
+ headless: useHeadless,
256
+ });
257
+ if (parsedProxy) opts.proxy = parsedProxy;
258
+ if (!useHeadless) {
259
+ const width = windowSize?.width || 900;
260
+ const height = windowSize?.height || 700;
261
+ opts.args = [...(opts.args || []), `--width=${width}`, `--height=${height}`];
262
+ }
263
+ return opts;
264
+ };
265
+
266
+ let launchOptions = await buildLaunchOptions();
267
+
268
+ const launchOnce = async (opts) => firefox.launch(opts);
269
+
270
+ try {
271
+ return await launchOnce(launchOptions);
272
+ } catch (error) {
273
+ const msg = String(error?.message || error || "");
274
+
275
+ // 1) Strip the exact unknown property the binary reported, retry.
276
+ const unknownProp = msg.match(/Unknown property\s+([^\s]+)\s+in config/i);
277
+ if (unknownProp?.[1]) {
278
+ try {
279
+ launchOptions = sanitizeCamoufoxLaunchOptions(launchOptions, {
280
+ extraDropKeys: [unknownProp[1]],
281
+ });
282
+ return await launchOnce(launchOptions);
283
+ } catch {
284
+ // continue to binary refresh
285
+ }
286
+ }
287
+
288
+ // 2) Config/fingerprint mismatch often means binary is older than camoufox-js.
289
+ // Force-fetch the matching browser (Mac + Linux + Windows) and retry once.
290
+ if (/Unknown property|not described in this scheme|CAMOU_CONFIG|fingerprint/i.test(msg)) {
291
+ try {
292
+ if (typeof runtime.refreshCamoufoxBinary === "function") {
293
+ runtime.refreshCamoufoxBinary({ silent: false });
294
+ } else if (typeof runtime.ensureCamoufoxRuntime === "function") {
295
+ runtime.ensureCamoufoxRuntime({ silent: false, forceBinaryRefresh: true });
296
+ }
297
+ launchOptions = await buildLaunchOptions();
298
+ return await launchOnce(launchOptions);
299
+ } catch {
300
+ // fall through
301
+ }
302
+ }
303
+
304
+ if (!useHeadless && /XServer|DISPLAY|Missing X server|headed browser|no DISPLAY/i.test(msg)) {
305
+ await ensureHeadedDisplayOrThrow();
306
+ return launchOnce(launchOptions);
307
+ }
308
+ if (!useHeadless) {
309
+ const friendly = new Error(
310
+ `${msg}\n\nVPS has no display for headed Camoufox (CodeBuddy CN). Install then restart:\n` +
311
+ ` sudo apt-get update && sudo apt-get install -y xvfb\n` +
312
+ ` sudo systemctl restart zevairouter\n` +
313
+ `ZevaiRouter auto-starts Xvfb when installed.`
314
+ );
315
+ friendly.code = "NO_DISPLAY";
316
+ friendly.cause = error;
317
+ throw friendly;
318
+ }
319
+ throw error;
222
320
  }
321
+ }
223
322
 
224
- return firefox.launch(launchOptions);
323
+ /**
324
+ * Remove fingerprint keys older Camoufox binaries do not understand.
325
+ * Keys are dropped from CAMOU_CONFIG* env JSON blobs produced by camoufox-js.
326
+ *
327
+ * Keep this conservative: drop known-bad families (audio:*) plus any keys the
328
+ * binary explicitly complained about. Do NOT strip the whole config.
329
+ */
330
+ function sanitizeCamoufoxLaunchOptions(options = {}, { extraDropKeys = [] } = {}) {
331
+ const dropKeys = new Set([
332
+ "audio:seed",
333
+ "audio.seed",
334
+ "Audio:seed",
335
+ ...extraDropKeys.filter(Boolean),
336
+ ]);
337
+ if (!options?.env || typeof options.env !== "object") {
338
+ return options;
339
+ }
340
+ const env = { ...options.env };
341
+ for (const [key, value] of Object.entries(env)) {
342
+ if (typeof value !== "string") continue;
343
+ // CAMOU_CONFIG may be split across CAMOU_CONFIG_1, _2, ...
344
+ if (!/^CAMOU_CONFIG/i.test(key) && !/camou.*config/i.test(key)) continue;
345
+ const trimmed = value.trim();
346
+ if (!trimmed.startsWith("{")) continue;
347
+ try {
348
+ const parsed = JSON.parse(trimmed);
349
+ let changed = false;
350
+ for (const drop of dropKeys) {
351
+ if (Object.prototype.hasOwnProperty.call(parsed, drop)) {
352
+ delete parsed[drop];
353
+ changed = true;
354
+ }
355
+ }
356
+ // Older binaries (pre-152) reject the whole audio:* family.
357
+ for (const k of Object.keys(parsed)) {
358
+ if (/^audio[:.]/i.test(k) || dropKeys.has(k)) {
359
+ delete parsed[k];
360
+ changed = true;
361
+ }
362
+ }
363
+ if (changed) env[key] = JSON.stringify(parsed);
364
+ } catch {
365
+ // leave non-JSON env alone
366
+ }
367
+ }
368
+ return { ...options, env };
225
369
  }
226
370
 
227
371
  /**
@@ -320,6 +464,59 @@ export async function launchBulkImportBrowser({
320
464
  return launchChromium({ proxyUrl, headless, windowSize });
321
465
  }
322
466
 
467
+ /**
468
+ * Force-close a Playwright/Camoufox browser. Graceful close can hang forever when
469
+ * the browser is stuck on a blackholed proxy / spinning renderer — on a 2GB VPS
470
+ * that pins CPU until reboot. Always race close() with a kill of the process tree.
471
+ */
472
+ export async function forceCloseBrowser(browser, { timeoutMs = 4_000 } = {}) {
473
+ if (!browser) return;
474
+
475
+ let pid = null;
476
+ try {
477
+ const proc = typeof browser.process === "function" ? browser.process() : null;
478
+ pid = proc?.pid || null;
479
+ } catch {
480
+ pid = null;
481
+ }
482
+
483
+ try {
484
+ await Promise.race([
485
+ Promise.resolve()
486
+ .then(() => browser.close())
487
+ .catch(() => null),
488
+ new Promise((resolve) => setTimeout(resolve, timeoutMs)),
489
+ ]);
490
+ } catch {
491
+ // ignore
492
+ }
493
+
494
+ if (pid && Number.isFinite(pid) && pid > 1) {
495
+ // Still alive? SIGTERM then SIGKILL. Also try process-group kill (negative pid)
496
+ // so Camoufox helper children die with the parent.
497
+ for (const signal of ["SIGTERM", "SIGKILL"]) {
498
+ try {
499
+ process.kill(pid, 0); // throws ESRCH if gone
500
+ } catch {
501
+ break;
502
+ }
503
+ try {
504
+ process.kill(pid, signal);
505
+ } catch {
506
+ // ignore
507
+ }
508
+ try {
509
+ process.kill(-pid, signal);
510
+ } catch {
511
+ // ignore (no process group / permission)
512
+ }
513
+ if (signal === "SIGTERM") {
514
+ await new Promise((r) => setTimeout(r, 400));
515
+ }
516
+ }
517
+ }
518
+ }
519
+
323
520
  export function makeBrowserLauncher({ engine, proxyUrl, headless = true, windowSize = null } = {}) {
324
521
  return () => launchBulkImportBrowser({ engine, proxyUrl, headless, windowSize });
325
522
  }