zevairouter 1.0.134 → 1.0.136

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 (596) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/cli/app/.next-cli-build/BUILD_ID +1 -1
  3. package/cli/app/.next-cli-build/app-path-routes-manifest.json +5 -5
  4. package/cli/app/.next-cli-build/build-manifest.json +2 -2
  5. package/cli/app/.next-cli-build/required-server-files.json +4 -2
  6. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/automation/page.js +1 -1
  7. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/automation/page.js.nft.json +1 -1
  8. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/automation/page_client-reference-manifest.js +1 -1
  9. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page.js.nft.json +1 -1
  10. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
  11. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js.nft.json +1 -1
  12. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page_client-reference-manifest.js +1 -1
  13. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
  14. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  15. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page.js.nft.json +1 -1
  16. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  17. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page.js.nft.json +1 -1
  18. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
  19. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/context/page.js.nft.json +1 -1
  20. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/context/page_client-reference-manifest.js +1 -1
  21. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
  22. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  23. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js.nft.json +1 -1
  24. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
  25. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js.nft.json +1 -1
  26. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -1
  27. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js.nft.json +1 -1
  28. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +1 -1
  29. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page.js.nft.json +1 -1
  30. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +1 -1
  31. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page.js.nft.json +1 -1
  32. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
  33. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
  34. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  35. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/playground/page.js.nft.json +1 -1
  36. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/playground/page_client-reference-manifest.js +1 -1
  37. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page.js.nft.json +1 -1
  38. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  39. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js.nft.json +1 -1
  40. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  41. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page.js.nft.json +1 -1
  42. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  43. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page.js.nft.json +1 -1
  44. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  45. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page.js.nft.json +1 -1
  46. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
  47. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page.js.nft.json +1 -1
  48. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page_client-reference-manifest.js +1 -1
  49. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page.js.nft.json +1 -1
  50. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
  51. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/terminal/page.js.nft.json +1 -1
  52. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/terminal/page_client-reference-manifest.js +1 -1
  53. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page.js.nft.json +1 -1
  54. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page_client-reference-manifest.js +1 -1
  55. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page.js.nft.json +1 -1
  56. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  57. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page.js.nft.json +1 -1
  58. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  59. package/cli/app/.next-cli-build/server/app/_global-error/page.js.nft.json +1 -1
  60. package/cli/app/.next-cli-build/server/app/_global-error/page_client-reference-manifest.js +1 -1
  61. package/cli/app/.next-cli-build/server/app/_global-error.html +1 -1
  62. package/cli/app/.next-cli-build/server/app/_global-error.rsc +1 -1
  63. package/cli/app/.next-cli-build/server/app/_global-error.segments/_full.segment.rsc +1 -1
  64. package/cli/app/.next-cli-build/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  65. package/cli/app/.next-cli-build/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  66. package/cli/app/.next-cli-build/server/app/_global-error.segments/_head.segment.rsc +1 -1
  67. package/cli/app/.next-cli-build/server/app/_global-error.segments/_index.segment.rsc +1 -1
  68. package/cli/app/.next-cli-build/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  69. package/cli/app/.next-cli-build/server/app/_not-found/page.js.nft.json +1 -1
  70. package/cli/app/.next-cli-build/server/app/_not-found/page_client-reference-manifest.js +1 -1
  71. package/cli/app/.next-cli-build/server/app/_not-found.html +1 -1
  72. package/cli/app/.next-cli-build/server/app/_not-found.rsc +3 -3
  73. package/cli/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +3 -3
  74. package/cli/app/.next-cli-build/server/app/_not-found.segments/_head.segment.rsc +1 -1
  75. package/cli/app/.next-cli-build/server/app/_not-found.segments/_index.segment.rsc +3 -3
  76. package/cli/app/.next-cli-build/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  77. package/cli/app/.next-cli-build/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  78. package/cli/app/.next-cli-build/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  79. package/cli/app/.next-cli-build/server/app/api/auth/login/route.js.nft.json +1 -1
  80. package/cli/app/.next-cli-build/server/app/api/auth/logout/route.js.nft.json +1 -1
  81. package/cli/app/.next-cli-build/server/app/api/auth/oidc/callback/route.js.nft.json +1 -1
  82. package/cli/app/.next-cli-build/server/app/api/auth/oidc/start/route.js.nft.json +1 -1
  83. package/cli/app/.next-cli-build/server/app/api/auth/oidc/test/route.js.nft.json +1 -1
  84. package/cli/app/.next-cli-build/server/app/api/auth/status/route.js.nft.json +1 -1
  85. package/cli/app/.next-cli-build/server/app/api/cache/stats/route.js.nft.json +1 -1
  86. package/cli/app/.next-cli-build/server/app/api/changelog/route.js.nft.json +1 -1
  87. package/cli/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js.nft.json +1 -1
  88. package/cli/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js.nft.json +1 -1
  89. package/cli/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js.nft.json +1 -1
  90. package/cli/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route.js.nft.json +1 -1
  91. package/cli/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js.nft.json +1 -1
  92. package/cli/app/.next-cli-build/server/app/api/cli-tools/codex-gateway/accounts/route.js.nft.json +1 -1
  93. package/cli/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js.nft.json +1 -1
  94. package/cli/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js.nft.json +1 -1
  95. package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js.nft.json +1 -1
  96. package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js.nft.json +1 -1
  97. package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js.nft.json +1 -1
  98. package/cli/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js.nft.json +1 -1
  99. package/cli/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js.nft.json +1 -1
  100. package/cli/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js.nft.json +1 -1
  101. package/cli/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js.nft.json +1 -1
  102. package/cli/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js.nft.json +1 -1
  103. package/cli/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js.nft.json +1 -1
  104. package/cli/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js.nft.json +1 -1
  105. package/cli/app/.next-cli-build/server/app/api/combos/[id]/route.js.nft.json +1 -1
  106. package/cli/app/.next-cli-build/server/app/api/combos/route.js.nft.json +1 -1
  107. package/cli/app/.next-cli-build/server/app/api/context/[id]/route.js.nft.json +1 -1
  108. package/cli/app/.next-cli-build/server/app/api/context/bulk/route.js.nft.json +1 -1
  109. package/cli/app/.next-cli-build/server/app/api/context/route.js.nft.json +1 -1
  110. package/cli/app/.next-cli-build/server/app/api/dashboard/chat/completions/route.js.nft.json +1 -1
  111. package/cli/app/.next-cli-build/server/app/api/headroom/extras/route.js.nft.json +1 -1
  112. package/cli/app/.next-cli-build/server/app/api/headroom/proxy/[...path]/route.js.nft.json +1 -1
  113. package/cli/app/.next-cli-build/server/app/api/headroom/restart/route.js.nft.json +1 -1
  114. package/cli/app/.next-cli-build/server/app/api/headroom/start/route.js.nft.json +1 -1
  115. package/cli/app/.next-cli-build/server/app/api/headroom/status/route.js.nft.json +1 -1
  116. package/cli/app/.next-cli-build/server/app/api/headroom/stop/route.js.nft.json +1 -1
  117. package/cli/app/.next-cli-build/server/app/api/health/ready/route.js.nft.json +1 -1
  118. package/cli/app/.next-cli-build/server/app/api/health/route.js.nft.json +1 -1
  119. package/cli/app/.next-cli-build/server/app/api/init/route.js.nft.json +1 -1
  120. package/cli/app/.next-cli-build/server/app/api/keys/[id]/rotate/route.js.nft.json +1 -1
  121. package/cli/app/.next-cli-build/server/app/api/keys/[id]/route.js.nft.json +1 -1
  122. package/cli/app/.next-cli-build/server/app/api/keys/route.js.nft.json +1 -1
  123. package/cli/app/.next-cli-build/server/app/api/locale/route.js.nft.json +1 -1
  124. package/cli/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route.js.nft.json +1 -1
  125. package/cli/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route.js.nft.json +1 -1
  126. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js.nft.json +1 -1
  127. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js.nft.json +1 -1
  128. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js.nft.json +1 -1
  129. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js.nft.json +1 -1
  130. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/voices/route.js.nft.json +1 -1
  131. package/cli/app/.next-cli-build/server/app/api/metrics/route.js.nft.json +1 -1
  132. package/cli/app/.next-cli-build/server/app/api/models/alias/route.js.nft.json +1 -1
  133. package/cli/app/.next-cli-build/server/app/api/models/availability/route.js.nft.json +1 -1
  134. package/cli/app/.next-cli-build/server/app/api/models/custom/route.js.nft.json +1 -1
  135. package/cli/app/.next-cli-build/server/app/api/models/disabled/route.js.nft.json +1 -1
  136. package/cli/app/.next-cli-build/server/app/api/models/route.js +1 -1
  137. package/cli/app/.next-cli-build/server/app/api/models/route.js.nft.json +1 -1
  138. package/cli/app/.next-cli-build/server/app/api/models/test/route.js.nft.json +1 -1
  139. package/cli/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js.nft.json +1 -1
  140. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/cancel/route.js +1 -1
  141. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
  142. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/manual/[workerId]/route.js +1 -1
  143. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
  144. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/route.js +1 -1
  145. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/route.js.nft.json +1 -1
  146. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/latest/route.js +1 -1
  147. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/latest/route.js.nft.json +1 -1
  148. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/route.js +1 -1
  149. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/route.js.nft.json +1 -1
  150. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/cancel/route.js +1 -1
  151. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
  152. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/manual/[workerId]/route.js +1 -1
  153. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
  154. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/route.js +1 -1
  155. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/route.js.nft.json +1 -1
  156. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/latest/route.js +1 -1
  157. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/latest/route.js.nft.json +1 -1
  158. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/route.js +1 -1
  159. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/route.js.nft.json +1 -1
  160. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/cancel/route.js +1 -1
  161. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
  162. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/manual/[workerId]/route.js +1 -1
  163. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
  164. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/route.js +1 -1
  165. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/route.js.nft.json +1 -1
  166. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/latest/route.js +1 -1
  167. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/latest/route.js.nft.json +1 -1
  168. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/route.js +1 -1
  169. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/route.js.nft.json +1 -1
  170. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-token/route.js.nft.json +1 -1
  171. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/quota-cookie/route.js.nft.json +1 -1
  172. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/cancel/route.js +1 -1
  173. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
  174. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/manual/[workerId]/route.js +1 -1
  175. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
  176. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/route.js +1 -1
  177. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/route.js.nft.json +1 -1
  178. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/latest/route.js +1 -1
  179. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/latest/route.js.nft.json +1 -1
  180. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/route.js +1 -1
  181. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/route.js.nft.json +1 -1
  182. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-token/route.js.nft.json +1 -1
  183. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/quota-cookie/route.js.nft.json +1 -1
  184. package/cli/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js.nft.json +1 -1
  185. package/cli/app/.next-cli-build/server/app/api/oauth/cursor/auto-import/route.js.nft.json +1 -1
  186. package/cli/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js.nft.json +1 -1
  187. package/cli/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js.nft.json +1 -1
  188. package/cli/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js.nft.json +1 -1
  189. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/auto-import/route.js.nft.json +1 -1
  190. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/cancel/route.js +1 -1
  191. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
  192. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/manual/[workerId]/route.js +1 -1
  193. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
  194. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/route.js +1 -1
  195. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/route.js.nft.json +1 -1
  196. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/latest/route.js +1 -1
  197. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/latest/route.js.nft.json +1 -1
  198. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/route.js +1 -1
  199. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/route.js.nft.json +1 -1
  200. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js +1 -1
  201. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js.nft.json +1 -1
  202. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/social-authorize/route.js.nft.json +1 -1
  203. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js.nft.json +1 -1
  204. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/cancel/route.js +1 -1
  205. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
  206. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/manual/[workerId]/route.js +1 -1
  207. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
  208. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/route.js +1 -1
  209. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/route.js.nft.json +1 -1
  210. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/latest/route.js +1 -1
  211. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/latest/route.js.nft.json +1 -1
  212. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/route.js +1 -1
  213. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/route.js.nft.json +1 -1
  214. package/cli/app/.next-cli-build/server/app/api/pricing/route.js.nft.json +1 -1
  215. package/cli/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js.nft.json +1 -1
  216. package/cli/app/.next-cli-build/server/app/api/provider-nodes/route.js.nft.json +1 -1
  217. package/cli/app/.next-cli-build/server/app/api/provider-nodes/validate/route.js.nft.json +1 -1
  218. package/cli/app/.next-cli-build/server/app/api/providers/[id]/models/route.js.nft.json +1 -1
  219. package/cli/app/.next-cli-build/server/app/api/providers/[id]/route.js.nft.json +1 -1
  220. package/cli/app/.next-cli-build/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
  221. package/cli/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js.nft.json +1 -1
  222. package/cli/app/.next-cli-build/server/app/api/providers/bulk-delete/route.js.nft.json +1 -1
  223. package/cli/app/.next-cli-build/server/app/api/providers/client/route.js.nft.json +1 -1
  224. package/cli/app/.next-cli-build/server/app/api/providers/kilo/free-models/route.js.nft.json +1 -1
  225. package/cli/app/.next-cli-build/server/app/api/providers/route.js +1 -1
  226. package/cli/app/.next-cli-build/server/app/api/providers/route.js.nft.json +1 -1
  227. package/cli/app/.next-cli-build/server/app/api/providers/suggested-models/route.js.nft.json +1 -1
  228. package/cli/app/.next-cli-build/server/app/api/providers/test-batch/route.js.nft.json +1 -1
  229. package/cli/app/.next-cli-build/server/app/api/providers/validate/route.js +1 -1
  230. package/cli/app/.next-cli-build/server/app/api/providers/validate/route.js.nft.json +1 -1
  231. package/cli/app/.next-cli-build/server/app/api/proxy-pools/[id]/route.js.nft.json +1 -1
  232. package/cli/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js.nft.json +1 -1
  233. package/cli/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route.js.nft.json +1 -1
  234. package/cli/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route.js.nft.json +1 -1
  235. package/cli/app/.next-cli-build/server/app/api/proxy-pools/route.js.nft.json +1 -1
  236. package/cli/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js.nft.json +1 -1
  237. package/cli/app/.next-cli-build/server/app/api/pxpipe/health/route.js.nft.json +1 -1
  238. package/cli/app/.next-cli-build/server/app/api/pxpipe/install/route.js.nft.json +1 -1
  239. package/cli/app/.next-cli-build/server/app/api/pxpipe/restart/route.js.nft.json +1 -1
  240. package/cli/app/.next-cli-build/server/app/api/pxpipe/start/route.js.nft.json +1 -1
  241. package/cli/app/.next-cli-build/server/app/api/pxpipe/stats/route.js.nft.json +1 -1
  242. package/cli/app/.next-cli-build/server/app/api/pxpipe/status/route.js.nft.json +1 -1
  243. package/cli/app/.next-cli-build/server/app/api/pxpipe/stop/route.js.nft.json +1 -1
  244. package/cli/app/.next-cli-build/server/app/api/settings/database/route.js.nft.json +1 -1
  245. package/cli/app/.next-cli-build/server/app/api/settings/proxy-test/route.js.nft.json +1 -1
  246. package/cli/app/.next-cli-build/server/app/api/settings/require-login/route.js.nft.json +1 -1
  247. package/cli/app/.next-cli-build/server/app/api/settings/route.js.nft.json +1 -1
  248. package/cli/app/.next-cli-build/server/app/api/shutdown/route.js.nft.json +1 -1
  249. package/cli/app/.next-cli-build/server/app/api/tags/route.js.nft.json +1 -1
  250. package/cli/app/.next-cli-build/server/app/api/terminal/auth/setup/route.js.nft.json +1 -1
  251. package/cli/app/.next-cli-build/server/app/api/terminal/auth/status/route.js.nft.json +1 -1
  252. package/cli/app/.next-cli-build/server/app/api/terminal/auth/unlock/route.js.nft.json +1 -1
  253. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/input/route.js.nft.json +1 -1
  254. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/resize/route.js.nft.json +1 -1
  255. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/route.js.nft.json +1 -1
  256. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/stream/route.js.nft.json +1 -1
  257. package/cli/app/.next-cli-build/server/app/api/terminal/session/route.js.nft.json +1 -1
  258. package/cli/app/.next-cli-build/server/app/api/translator/console-logs/route.js +1 -1
  259. package/cli/app/.next-cli-build/server/app/api/translator/console-logs/route.js.nft.json +1 -1
  260. package/cli/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js +1 -1
  261. package/cli/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js.nft.json +1 -1
  262. package/cli/app/.next-cli-build/server/app/api/translator/load/route.js.nft.json +1 -1
  263. package/cli/app/.next-cli-build/server/app/api/translator/save/route.js.nft.json +1 -1
  264. package/cli/app/.next-cli-build/server/app/api/translator/send/route.js.nft.json +1 -1
  265. package/cli/app/.next-cli-build/server/app/api/translator/translate/route.js.nft.json +1 -1
  266. package/cli/app/.next-cli-build/server/app/api/tunnel/disable/route.js.nft.json +1 -1
  267. package/cli/app/.next-cli-build/server/app/api/tunnel/enable/route.js.nft.json +1 -1
  268. package/cli/app/.next-cli-build/server/app/api/tunnel/status/route.js.nft.json +1 -1
  269. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-check/route.js.nft.json +1 -1
  270. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route.js.nft.json +1 -1
  271. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route.js.nft.json +1 -1
  272. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js.nft.json +1 -1
  273. package/cli/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
  274. package/cli/app/.next-cli-build/server/app/api/usage/aggregate/route.js.nft.json +1 -1
  275. package/cli/app/.next-cli-build/server/app/api/usage/chart/route.js.nft.json +1 -1
  276. package/cli/app/.next-cli-build/server/app/api/usage/history/route.js.nft.json +1 -1
  277. package/cli/app/.next-cli-build/server/app/api/usage/providers/route.js.nft.json +1 -1
  278. package/cli/app/.next-cli-build/server/app/api/usage/request-details/route.js.nft.json +1 -1
  279. package/cli/app/.next-cli-build/server/app/api/usage/request-logs/route.js.nft.json +1 -1
  280. package/cli/app/.next-cli-build/server/app/api/usage/stats/route.js.nft.json +1 -1
  281. package/cli/app/.next-cli-build/server/app/api/usage/stream/route.js.nft.json +1 -1
  282. package/cli/app/.next-cli-build/server/app/api/v1/api/chat/route.js.nft.json +1 -1
  283. package/cli/app/.next-cli-build/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
  284. package/cli/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
  285. package/cli/app/.next-cli-build/server/app/api/v1/audio/voices/route.js.nft.json +1 -1
  286. package/cli/app/.next-cli-build/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
  287. package/cli/app/.next-cli-build/server/app/api/v1/embeddings/route.js.nft.json +1 -1
  288. package/cli/app/.next-cli-build/server/app/api/v1/images/generations/route.js.nft.json +1 -1
  289. package/cli/app/.next-cli-build/server/app/api/v1/messages/count_tokens/route.js.nft.json +1 -1
  290. package/cli/app/.next-cli-build/server/app/api/v1/messages/route.js.nft.json +1 -1
  291. package/cli/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js.nft.json +1 -1
  292. package/cli/app/.next-cli-build/server/app/api/v1/models/info/route.js.nft.json +1 -1
  293. package/cli/app/.next-cli-build/server/app/api/v1/models/route.js.nft.json +1 -1
  294. package/cli/app/.next-cli-build/server/app/api/v1/responses/compact/route.js.nft.json +1 -1
  295. package/cli/app/.next-cli-build/server/app/api/v1/responses/route.js.nft.json +1 -1
  296. package/cli/app/.next-cli-build/server/app/api/v1/route.js.nft.json +1 -1
  297. package/cli/app/.next-cli-build/server/app/api/v1/search/route.js.nft.json +1 -1
  298. package/cli/app/.next-cli-build/server/app/api/v1/web/fetch/route.js.nft.json +1 -1
  299. package/cli/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
  300. package/cli/app/.next-cli-build/server/app/api/v1beta/models/route.js.nft.json +1 -1
  301. package/cli/app/.next-cli-build/server/app/api/version/route.js +1 -1
  302. package/cli/app/.next-cli-build/server/app/api/version/route.js.nft.json +1 -1
  303. package/cli/app/.next-cli-build/server/app/api/version/shutdown/route.js +1 -1
  304. package/cli/app/.next-cli-build/server/app/api/version/shutdown/route.js.nft.json +1 -1
  305. package/cli/app/.next-cli-build/server/app/api/version/update/route.js +1 -1
  306. package/cli/app/.next-cli-build/server/app/api/version/update/route.js.nft.json +1 -1
  307. package/cli/app/.next-cli-build/server/app/callback/page.js.nft.json +1 -1
  308. package/cli/app/.next-cli-build/server/app/callback/page_client-reference-manifest.js +1 -1
  309. package/cli/app/.next-cli-build/server/app/callback.html +1 -1
  310. package/cli/app/.next-cli-build/server/app/callback.rsc +3 -3
  311. package/cli/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +3 -3
  312. package/cli/app/.next-cli-build/server/app/callback.segments/_head.segment.rsc +1 -1
  313. package/cli/app/.next-cli-build/server/app/callback.segments/_index.segment.rsc +3 -3
  314. package/cli/app/.next-cli-build/server/app/callback.segments/_tree.segment.rsc +1 -1
  315. package/cli/app/.next-cli-build/server/app/callback.segments/callback/__PAGE__.segment.rsc +1 -1
  316. package/cli/app/.next-cli-build/server/app/callback.segments/callback.segment.rsc +1 -1
  317. package/cli/app/.next-cli-build/server/app/dashboard/automation.html +1 -1
  318. package/cli/app/.next-cli-build/server/app/dashboard/automation.rsc +5 -5
  319. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk/dashboard/automation/__PAGE__.segment.rsc +2 -2
  320. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk/dashboard/automation.segment.rsc +1 -1
  321. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  322. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  323. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_full.segment.rsc +5 -5
  324. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_head.segment.rsc +1 -1
  325. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_index.segment.rsc +3 -3
  326. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_tree.segment.rsc +1 -1
  327. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.html +1 -1
  328. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.rsc +5 -5
  329. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +2 -2
  330. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat.segment.rsc +1 -1
  331. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  332. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  333. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_full.segment.rsc +5 -5
  334. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_head.segment.rsc +1 -1
  335. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_index.segment.rsc +3 -3
  336. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +1 -1
  337. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.html +1 -1
  338. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.rsc +5 -5
  339. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +2 -2
  340. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools.segment.rsc +1 -1
  341. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  342. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  343. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_full.segment.rsc +5 -5
  344. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_head.segment.rsc +1 -1
  345. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_index.segment.rsc +3 -3
  346. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +1 -1
  347. package/cli/app/.next-cli-build/server/app/dashboard/combos.html +1 -1
  348. package/cli/app/.next-cli-build/server/app/dashboard/combos.rsc +5 -5
  349. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +2 -2
  350. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos.segment.rsc +1 -1
  351. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  352. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  353. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_full.segment.rsc +5 -5
  354. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_head.segment.rsc +1 -1
  355. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_index.segment.rsc +3 -3
  356. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_tree.segment.rsc +1 -1
  357. package/cli/app/.next-cli-build/server/app/dashboard/context.html +1 -1
  358. package/cli/app/.next-cli-build/server/app/dashboard/context.rsc +5 -5
  359. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/!KGRhc2hib2FyZCk/dashboard/context/__PAGE__.segment.rsc +2 -2
  360. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/!KGRhc2hib2FyZCk/dashboard/context.segment.rsc +1 -1
  361. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  362. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  363. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_full.segment.rsc +5 -5
  364. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_head.segment.rsc +1 -1
  365. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_index.segment.rsc +3 -3
  366. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_tree.segment.rsc +1 -1
  367. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.html +1 -1
  368. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.rsc +5 -5
  369. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +2 -2
  370. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint.segment.rsc +1 -1
  371. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  372. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  373. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_full.segment.rsc +5 -5
  374. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_head.segment.rsc +1 -1
  375. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_index.segment.rsc +3 -3
  376. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_tree.segment.rsc +1 -1
  377. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.html +1 -1
  378. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.rsc +5 -5
  379. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web/__PAGE__.segment.rsc +2 -2
  380. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web.segment.rsc +1 -1
  381. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers.segment.rsc +1 -1
  382. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  383. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  384. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_full.segment.rsc +5 -5
  385. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_head.segment.rsc +1 -1
  386. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_index.segment.rsc +3 -3
  387. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_tree.segment.rsc +1 -1
  388. package/cli/app/.next-cli-build/server/app/dashboard/mitm.html +1 -1
  389. package/cli/app/.next-cli-build/server/app/dashboard/mitm.rsc +5 -5
  390. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +2 -2
  391. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm.segment.rsc +1 -1
  392. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  393. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  394. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_full.segment.rsc +5 -5
  395. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_head.segment.rsc +1 -1
  396. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_index.segment.rsc +3 -3
  397. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_tree.segment.rsc +1 -1
  398. package/cli/app/.next-cli-build/server/app/dashboard/playground.html +1 -1
  399. package/cli/app/.next-cli-build/server/app/dashboard/playground.rsc +5 -5
  400. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk/dashboard/playground/__PAGE__.segment.rsc +2 -2
  401. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk/dashboard/playground.segment.rsc +1 -1
  402. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  403. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  404. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_full.segment.rsc +5 -5
  405. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_head.segment.rsc +1 -1
  406. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_index.segment.rsc +3 -3
  407. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_tree.segment.rsc +1 -1
  408. package/cli/app/.next-cli-build/server/app/dashboard/profile.html +1 -1
  409. package/cli/app/.next-cli-build/server/app/dashboard/profile.rsc +5 -5
  410. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +2 -2
  411. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile.segment.rsc +1 -1
  412. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  413. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  414. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_full.segment.rsc +5 -5
  415. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_head.segment.rsc +1 -1
  416. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_index.segment.rsc +3 -3
  417. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_tree.segment.rsc +1 -1
  418. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.html +1 -1
  419. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.rsc +5 -5
  420. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +2 -2
  421. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new.segment.rsc +1 -1
  422. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  423. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  424. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  425. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_full.segment.rsc +5 -5
  426. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_head.segment.rsc +1 -1
  427. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_index.segment.rsc +3 -3
  428. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_tree.segment.rsc +1 -1
  429. package/cli/app/.next-cli-build/server/app/dashboard/providers.html +1 -1
  430. package/cli/app/.next-cli-build/server/app/dashboard/providers.rsc +5 -5
  431. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +2 -2
  432. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  433. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  434. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  435. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_full.segment.rsc +5 -5
  436. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_head.segment.rsc +1 -1
  437. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_index.segment.rsc +3 -3
  438. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_tree.segment.rsc +1 -1
  439. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.html +1 -1
  440. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.rsc +5 -5
  441. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +2 -2
  442. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools.segment.rsc +1 -1
  443. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  444. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  445. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +5 -5
  446. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_head.segment.rsc +1 -1
  447. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_index.segment.rsc +3 -3
  448. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +1 -1
  449. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.html +1 -1
  450. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.rsc +5 -5
  451. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard/pxpipe/__PAGE__.segment.rsc +2 -2
  452. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard/pxpipe.segment.rsc +1 -1
  453. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  454. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  455. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_full.segment.rsc +5 -5
  456. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_head.segment.rsc +1 -1
  457. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_index.segment.rsc +3 -3
  458. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_tree.segment.rsc +1 -1
  459. package/cli/app/.next-cli-build/server/app/dashboard/quota.html +2 -2
  460. package/cli/app/.next-cli-build/server/app/dashboard/quota.rsc +6 -6
  461. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +3 -3
  462. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota.segment.rsc +1 -1
  463. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  464. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  465. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_full.segment.rsc +6 -6
  466. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_head.segment.rsc +1 -1
  467. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_index.segment.rsc +3 -3
  468. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_tree.segment.rsc +1 -1
  469. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing/page.js.nft.json +1 -1
  470. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  471. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.html +1 -1
  472. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.rsc +3 -3
  473. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +3 -3
  474. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +1 -1
  475. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +3 -3
  476. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +1 -1
  477. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +1 -1
  478. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing.segment.rsc +1 -1
  479. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings.segment.rsc +1 -1
  480. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard.segment.rsc +1 -1
  481. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.html +1 -1
  482. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.rsc +5 -5
  483. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver/__PAGE__.segment.rsc +2 -2
  484. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver.segment.rsc +1 -1
  485. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  486. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  487. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_full.segment.rsc +5 -5
  488. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_head.segment.rsc +1 -1
  489. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_index.segment.rsc +3 -3
  490. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_tree.segment.rsc +1 -1
  491. package/cli/app/.next-cli-build/server/app/dashboard/translator.html +1 -1
  492. package/cli/app/.next-cli-build/server/app/dashboard/translator.rsc +5 -5
  493. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +2 -2
  494. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator.segment.rsc +1 -1
  495. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  496. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  497. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_full.segment.rsc +5 -5
  498. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_head.segment.rsc +1 -1
  499. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_index.segment.rsc +3 -3
  500. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_tree.segment.rsc +1 -1
  501. package/cli/app/.next-cli-build/server/app/dashboard/usage.html +1 -1
  502. package/cli/app/.next-cli-build/server/app/dashboard/usage.rsc +5 -5
  503. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +2 -2
  504. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage.segment.rsc +1 -1
  505. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  506. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  507. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_full.segment.rsc +5 -5
  508. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_head.segment.rsc +1 -1
  509. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_index.segment.rsc +3 -3
  510. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_tree.segment.rsc +1 -1
  511. package/cli/app/.next-cli-build/server/app/dashboard.html +1 -1
  512. package/cli/app/.next-cli-build/server/app/dashboard.rsc +5 -5
  513. package/cli/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +2 -2
  514. package/cli/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  515. package/cli/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  516. package/cli/app/.next-cli-build/server/app/dashboard.segments/_full.segment.rsc +5 -5
  517. package/cli/app/.next-cli-build/server/app/dashboard.segments/_head.segment.rsc +1 -1
  518. package/cli/app/.next-cli-build/server/app/dashboard.segments/_index.segment.rsc +3 -3
  519. package/cli/app/.next-cli-build/server/app/dashboard.segments/_tree.segment.rsc +1 -1
  520. package/cli/app/.next-cli-build/server/app/index.html +1 -1
  521. package/cli/app/.next-cli-build/server/app/index.rsc +3 -3
  522. package/cli/app/.next-cli-build/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  523. package/cli/app/.next-cli-build/server/app/index.segments/_full.segment.rsc +3 -3
  524. package/cli/app/.next-cli-build/server/app/index.segments/_head.segment.rsc +1 -1
  525. package/cli/app/.next-cli-build/server/app/index.segments/_index.segment.rsc +3 -3
  526. package/cli/app/.next-cli-build/server/app/index.segments/_tree.segment.rsc +1 -1
  527. package/cli/app/.next-cli-build/server/app/landing/page.js.nft.json +1 -1
  528. package/cli/app/.next-cli-build/server/app/landing/page_client-reference-manifest.js +1 -1
  529. package/cli/app/.next-cli-build/server/app/landing.html +1 -1
  530. package/cli/app/.next-cli-build/server/app/landing.rsc +3 -3
  531. package/cli/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +3 -3
  532. package/cli/app/.next-cli-build/server/app/landing.segments/_head.segment.rsc +1 -1
  533. package/cli/app/.next-cli-build/server/app/landing.segments/_index.segment.rsc +3 -3
  534. package/cli/app/.next-cli-build/server/app/landing.segments/_tree.segment.rsc +1 -1
  535. package/cli/app/.next-cli-build/server/app/landing.segments/landing/__PAGE__.segment.rsc +1 -1
  536. package/cli/app/.next-cli-build/server/app/landing.segments/landing.segment.rsc +1 -1
  537. package/cli/app/.next-cli-build/server/app/login/page.js.nft.json +1 -1
  538. package/cli/app/.next-cli-build/server/app/login/page_client-reference-manifest.js +1 -1
  539. package/cli/app/.next-cli-build/server/app/login.html +1 -1
  540. package/cli/app/.next-cli-build/server/app/login.rsc +4 -4
  541. package/cli/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +4 -4
  542. package/cli/app/.next-cli-build/server/app/login.segments/_head.segment.rsc +1 -1
  543. package/cli/app/.next-cli-build/server/app/login.segments/_index.segment.rsc +3 -3
  544. package/cli/app/.next-cli-build/server/app/login.segments/_tree.segment.rsc +1 -1
  545. package/cli/app/.next-cli-build/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
  546. package/cli/app/.next-cli-build/server/app/login.segments/login.segment.rsc +1 -1
  547. package/cli/app/.next-cli-build/server/app/manifest.webmanifest/route.js.nft.json +1 -1
  548. package/cli/app/.next-cli-build/server/app/page.js.nft.json +1 -1
  549. package/cli/app/.next-cli-build/server/app/page_client-reference-manifest.js +1 -1
  550. package/cli/app/.next-cli-build/server/app-paths-manifest.json +5 -5
  551. package/cli/app/.next-cli-build/server/chunks/1019.js +1 -1
  552. package/cli/app/.next-cli-build/server/chunks/3155.js +1 -1
  553. package/cli/app/.next-cli-build/server/chunks/412.js +1 -1
  554. package/cli/app/.next-cli-build/server/chunks/4566.js +1 -0
  555. package/cli/app/.next-cli-build/server/chunks/4746.js +1 -1
  556. package/cli/app/.next-cli-build/server/chunks/5000.js +1 -1
  557. package/cli/app/.next-cli-build/server/chunks/5307.js +1 -1
  558. package/cli/app/.next-cli-build/server/chunks/5949.js +9 -50
  559. package/cli/app/.next-cli-build/server/chunks/6269.js +1 -1
  560. package/cli/app/.next-cli-build/server/chunks/8306.js +1 -1
  561. package/cli/app/.next-cli-build/server/chunks/8371.js +1 -1
  562. package/cli/app/.next-cli-build/server/chunks/891.js +1 -1
  563. package/cli/app/.next-cli-build/server/middleware-build-manifest.js +1 -1
  564. package/cli/app/.next-cli-build/server/pages/404.html +1 -1
  565. package/cli/app/.next-cli-build/server/pages/500.html +1 -1
  566. package/cli/app/.next-cli-build/static/chunks/{5497-deeefbd0aa73d896.js → 5497-471618863a988f25.js} +1 -1
  567. package/cli/app/.next-cli-build/static/chunks/{85-112ea5e56e88ceda.js → 85-b04d094e538fab0d.js} +1 -1
  568. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/automation/{page-8b7dfe7877ed43a1.js → page-d55c4e337a98302a.js} +1 -1
  569. package/cli/app/CHANGELOG.md +10 -0
  570. package/cli/app/cli/hooks/cloakbrowserRuntime.js +15 -7
  571. package/cli/app/cli/hooks/postinstall.js +12 -11
  572. package/cli/app/package.json +1 -1
  573. package/cli/app/server.js +1 -1
  574. package/cli/hooks/cloakbrowserRuntime.js +15 -7
  575. package/cli/hooks/postinstall.js +12 -11
  576. package/cli/package.json +1 -1
  577. package/next.config.mjs +6 -7
  578. package/package.json +1 -1
  579. package/scripts/start-standalone.mjs +3 -6
  580. package/src/app/(dashboard)/dashboard/automation/page.js +1 -1
  581. package/src/app/api/oauth/cloudflare-ai/bulk-import/route.js +1 -2
  582. package/src/lib/oauth/services/antigravityBulkImportManager.js +2 -0
  583. package/src/lib/oauth/services/bulkImportBrowserEngine.js +88 -343
  584. package/src/lib/oauth/services/cloudflareAiBulkImportManager.js +4 -13
  585. package/src/lib/oauth/services/codebuddyCnBulkImportManager.js +7 -9
  586. package/src/lib/oauth/services/codebuddyCnPhoneAutomation.js +1 -1
  587. package/src/lib/oauth/services/kiroBulkImportManager.js +18 -9
  588. package/src/lib/oauth/services/kiroGoogleAutomation.js +5 -5
  589. package/src/lib/oauth/services/qoderBulkImportManager.js +7 -1
  590. package/src/shared/components/BulkAccountAutomationModal.js +3 -4
  591. package/src/shared/components/CodeBuddyCnPhoneRegisterModal.js +1 -1
  592. package/cli/app/.next-cli-build/server/chunks/8157.js +0 -1
  593. package/cli/app/cli/hooks/playwrightRuntime.js +0 -235
  594. package/cli/hooks/playwrightRuntime.js +0 -235
  595. /package/cli/app/.next-cli-build/static/{G9tIzsfVyPOqAvoGFJp7p → umVx1oTsstlbAeyUcBGhm}/_buildManifest.js +0 -0
  596. /package/cli/app/.next-cli-build/static/{G9tIzsfVyPOqAvoGFJp7p → umVx1oTsstlbAeyUcBGhm}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8593],{20975:(e,t,s)=>{"use strict";s.r(t),s.d(t,{default:()=>p});var o=s(95155),r=s(12115),n=s(35497),i=s(52679);function a({id:e,icon:t,size:s=22}){let[n,i]=(0,r.useState)(!1);return n?(0,o.jsx)("span",{className:"material-symbols-outlined text-primary",style:{fontSize:s},children:t}):(0,o.jsx)("img",{src:`/providers/${e}.png`,alt:"",width:s,height:s,className:"rounded object-contain",style:{width:s,height:s},onError:()=>i(!0)})}function l(e){return`${e} connection${1===e?"":"s"}`}function d({isOpen:e,onClose:t,onSuccess:s}){let[n,i]=(0,r.useState)(""),[a,l]=(0,r.useState)(!1),[c,x]=(0,r.useState)(null),m=async()=>{if(n.trim()){l(!0),x(null);try{let e=await fetch("/api/oauth/codebuddy/bulk-token",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({tokens:n})}),t=await e.json();x(t),t.success&&s?.()}catch(e){x({error:e.message})}finally{l(!1)}}};if(!e)return null;let p=null;if(c?.success){let e=[`Imported ${c.imported}/${c.total} tokens.`];if(c.failed&&e.push(`${c.failed} failed.`),c.formatCounts){let{"access-only":t,"with-refresh":s,"with-api-key":o}=c.formatCounts,r=[];o&&r.push(`${o} with API key`),s&&r.push(`${s} with refresh token`),t&&r.push(`${t} access-only`),r.length&&e.push(`(${r.join(", ")})`)}p=e.join(" ")}return(0,o.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/50",onClick:t,children:(0,o.jsxs)("div",{className:"w-full max-w-lg rounded-xl border border-border bg-surface p-6 shadow-xl",onClick:e=>e.stopPropagation(),children:[(0,o.jsx)("h3",{className:"mb-4 text-lg font-semibold text-text-main",children:"CodeBuddy OAuth Token Import"}),(0,o.jsx)("p",{className:"mb-2 text-xs text-text-muted",children:"Paste CodeBuddy OAuth tokens, one per line. Supports three formats:"}),(0,o.jsxs)("div",{className:"mb-3 space-y-2 rounded-lg bg-background/50 p-3 text-xs text-text-muted",children:[(0,o.jsxs)("div",{className:"flex items-center gap-2",children:[(0,o.jsx)("span",{className:"material-symbols-outlined text-[16px] text-primary leading-none",children:"check_circle"}),(0,o.jsxs)("span",{className:"flex items-center gap-1.5",children:[(0,o.jsx)("code",{className:"text-[10px] bg-border/50 px-1.5 py-0.5 rounded leading-none",children:"accessToken"}),(0,o.jsx)("span",{children:"— access token only (24h expiry)"})]})]}),(0,o.jsxs)("div",{className:"flex items-center gap-2",children:[(0,o.jsx)("span",{className:"material-symbols-outlined text-[16px] text-primary leading-none",children:"check_circle"}),(0,o.jsxs)("span",{className:"flex items-center gap-1.5",children:[(0,o.jsx)("code",{className:"text-[10px] bg-border/50 px-1.5 py-0.5 rounded leading-none",children:"accessToken:refreshToken"}),(0,o.jsx)("span",{children:"— enables auto-refresh"})]})]}),(0,o.jsxs)("div",{className:"flex items-center gap-2",children:[(0,o.jsx)("span",{className:"material-symbols-outlined text-[16px] text-primary leading-none",children:"check_circle"}),(0,o.jsxs)("span",{className:"flex items-center gap-1.5",children:[(0,o.jsx)("code",{className:"text-[10px] bg-border/50 px-1.5 py-0.5 rounded leading-none",children:"accessToken:refreshToken:apiKey"}),(0,o.jsx)("span",{children:"— 365-day access"})]})]})]}),(0,o.jsx)("textarea",{className:"mb-3 w-full rounded-lg border border-border bg-background p-3 font-mono text-xs text-text-main placeholder:text-text-muted focus:border-primary focus:outline-none",rows:8,placeholder:"eyJhbGciOiJSUzI1NiIs...\neyJhbGciOiJSUzI1NiIs...:eyJhbGciOiJSUzI1NiIs...\neyJhbGciOiJSUzI1NiIs...:eyJhbGciOiJSUzI1NiIs...:ak_abc123...",value:n,onChange:e=>i(e.target.value),disabled:a}),c&&(0,o.jsx)("div",{className:"mb-3 rounded-lg p-3 text-xs "+(c.success?"bg-green-500/10 text-green-400":"bg-red-500/10 text-red-400"),children:p||c.error||"Import failed"}),(0,o.jsxs)("div",{className:"flex justify-end gap-2",children:[(0,o.jsx)("button",{type:"button",onClick:t,className:"rounded-lg px-4 py-2 text-sm text-text-muted hover:bg-border/50",children:"Close"}),(0,o.jsx)("button",{type:"button",onClick:m,disabled:a||!n.trim(),className:"rounded-lg bg-primary px-4 py-2 text-sm font-medium text-white hover:bg-primary/90 disabled:opacity-50",children:a?"Importing...":"Import Tokens"})]})]})})}function c({isOpen:e,onClose:t,onSuccess:s}){let[n,i]=(0,r.useState)(""),[a,l]=(0,r.useState)(!1),[d,x]=(0,r.useState)(null),m=async()=>{if(n.trim()){l(!0),x(null);try{let e=await fetch("/api/oauth/codebuddy-cn/bulk-token",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({tokens:n})}),t=await e.json();x(t),t.success&&s?.()}catch(e){x({error:e.message})}finally{l(!1)}}};if(!e)return null;let p=null;if(d?.success){let e=[`Imported ${d.imported}/${d.total} tokens.`];d.failed&&e.push(`${d.failed} failed.`),p=e.join(" ")}return(0,o.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/50",onClick:t,children:(0,o.jsxs)("div",{className:"w-full max-w-lg rounded-xl border border-border bg-surface p-6 shadow-xl",onClick:e=>e.stopPropagation(),children:[(0,o.jsx)("h3",{className:"mb-4 text-lg font-semibold text-text-main",children:"CodeBuddy CN OAuth Token Import"}),(0,o.jsx)("p",{className:"mb-2 text-xs text-text-muted",children:"Paste CodeBuddy CN OAuth tokens, one per line. Supports:"}),(0,o.jsxs)("div",{className:"mb-3 space-y-1 rounded-lg bg-background/50 p-3 text-xs text-text-muted",children:[(0,o.jsxs)("div",{children:[(0,o.jsx)("code",{className:"text-[10px] bg-border/50 px-1.5 py-0.5 rounded",children:"accessToken"})," — access token only"]}),(0,o.jsxs)("div",{children:[(0,o.jsx)("code",{className:"text-[10px] bg-border/50 px-1.5 py-0.5 rounded",children:"accessToken:refreshToken"})," — enables auto-refresh"]})]}),(0,o.jsx)("textarea",{className:"mb-3 w-full rounded-lg border border-border bg-background p-3 font-mono text-xs text-text-main placeholder:text-text-muted focus:border-primary focus:outline-none",rows:8,placeholder:"eyJhbGciOiJSUzI1NiIs...\neyJhbGciOiJSUzI1NiIs...:eyJhbGciOiJSUzI1NiIs...",value:n,onChange:e=>i(e.target.value),disabled:a}),d&&(0,o.jsx)("div",{className:"mb-3 rounded-lg p-3 text-xs "+(d.success?"bg-green-500/10 text-green-400":"bg-red-500/10 text-red-400"),children:p||d.error||"Import failed"}),(0,o.jsxs)("div",{className:"flex justify-end gap-2",children:[(0,o.jsx)("button",{type:"button",onClick:t,className:"rounded-lg px-4 py-2 text-sm text-text-muted hover:bg-border/50",children:"Close"}),(0,o.jsx)("button",{type:"button",onClick:m,disabled:a||!n.trim(),className:"rounded-lg bg-primary px-4 py-2 text-sm font-medium text-white hover:bg-primary/90 disabled:opacity-50",children:a?"Importing...":"Import Tokens"})]})]})})}let x={"single-token":"Token import","bulk-token":"Bulk token import","bulk-account":"Bulk accounts","device-oauth":"Device login",social:"Social login",oauth:"OAuth login"},m=[{id:"kiro",label:"Kiro AI",icon:"psychology_alt",description:"Token import, bulk import, and social login automation.",supportedModes:["single-token","bulk-token","bulk-account","social"],component:function({providerInfo:e,onRefresh:t}){let[s,i]=(0,r.useState)(!1),[a,l]=(0,r.useState)(null),[d,c]=(0,r.useState)(null),x=e=>{c({...e,key:Date.now()}),i(!0)};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)("div",{className:"grid gap-3 sm:grid-cols-2 xl:grid-cols-3",children:[{id:"bulk-account",title:"Auto Login Bulk",icon:"group_add",description:"Run bulk gmail|password automation with worker progress and manual assist.",action:()=>x({method:"import",importMode:"bulk-account"})},{id:"bulk-token",title:"Bulk Token",icon:"playlist_add",description:"Import many Kiro refresh tokens, one token per line.",action:()=>x({method:"import",importMode:"bulk-token"})},{id:"single-token",title:"Single Token",icon:"vpn_key",description:"Auto-detect or paste one Kiro refresh token.",action:()=>x({method:"import",importMode:"single-token"})},{id:"builder-id",title:"AWS Builder ID",icon:"shield",description:"Open the standard AWS Builder ID device login.",action:()=>x({method:"builder-id"})},{id:"idc",title:"AWS IDC",icon:"business",description:"Enter an IAM Identity Center start URL and region.",action:()=>x({method:"idc"})},{id:"google",title:"Google Login",icon:"account_circle",description:"Open Kiro social Google login with callback capture.",action:()=>x({method:"social",provider:"google"})}].map(e=>(0,o.jsxs)("button",{type:"button",onClick:e.action,className:"flex min-h-[112px] min-w-0 flex-col gap-2 rounded-lg border border-border bg-surface px-4 py-3 text-left transition-colors hover:border-primary/40 hover:bg-primary/5",children:[(0,o.jsxs)("span",{className:"flex items-center gap-2 text-sm font-semibold text-text-main",children:[(0,o.jsx)("span",{className:"material-symbols-outlined text-[20px] text-primary",children:e.icon}),e.title]}),(0,o.jsx)("span",{className:"text-xs leading-relaxed text-text-muted",children:e.description})]},e.id))}),(0,o.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[a?.jobId&&(0,o.jsxs)(n.Ex,{variant:"default",children:["Bulk job: ",a.status]}),a?.jobId&&(0,o.jsx)(n.$n,{size:"sm",variant:"secondary",icon:"monitoring",onClick:()=>x({method:"import",importMode:"bulk-account"}),children:"Resume Bulk Progress"})]}),(0,o.jsx)(n.Mh,{isOpen:s,providerInfo:e,onSuccess:t,onRefresh:t,initialBulkJobId:a?.jobId||null,initialFlow:d,onBulkJobChange:l,onClose:()=>i(!1)})]})}},{id:"codebuddy",label:"CodeBuddy",icon:"smart_toy",description:"Bulk GSuite automation and browser OAuth polling login.",supportedModes:["bulk-account","device-oauth"],component:function({providerInfo:e,onRefresh:t}){let[s,i]=(0,r.useState)(!1),[a,l]=(0,r.useState)(!1),[c,x]=(0,r.useState)(!1);return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)("div",{className:"grid gap-3 sm:grid-cols-2 xl:grid-cols-3",children:[(0,o.jsxs)("button",{type:"button",onClick:()=>l(!0),className:"flex min-h-[112px] min-w-0 flex-col gap-2 rounded-lg border border-border bg-surface px-4 py-3 text-left transition-colors hover:border-primary/40 hover:bg-primary/5",children:[(0,o.jsxs)("span",{className:"flex items-center gap-2 text-sm font-semibold text-text-main",children:[(0,o.jsx)("span",{className:"material-symbols-outlined text-[20px] text-primary",children:"group_add"}),"Auto Login + Generate Key"]}),(0,o.jsx)("span",{className:"text-xs leading-relaxed text-text-muted",children:"Run bulk GSuite gmail|password login, create a CodeBuddy Access Key, and save it for model calls."})]}),(0,o.jsxs)("button",{type:"button",onClick:()=>x(!0),className:"flex min-h-[112px] min-w-0 flex-col gap-2 rounded-lg border border-border bg-surface px-4 py-3 text-left transition-colors hover:border-primary/40 hover:bg-primary/5",children:[(0,o.jsxs)("span",{className:"flex items-center gap-2 text-sm font-semibold text-text-main",children:[(0,o.jsx)("span",{className:"material-symbols-outlined text-[20px] text-primary",children:"playlist_add"}),"OAuth Token Import"]}),(0,o.jsx)("span",{className:"text-xs leading-relaxed text-text-muted",children:"Paste OAuth tokens with optional refresh tokens and API keys for extended access."})]}),(0,o.jsxs)("button",{type:"button",onClick:()=>i(!0),className:"flex min-h-[112px] min-w-0 flex-col gap-2 rounded-lg border border-border bg-surface px-4 py-3 text-left transition-colors hover:border-primary/40 hover:bg-primary/5",children:[(0,o.jsxs)("span",{className:"flex items-center gap-2 text-sm font-semibold text-text-main",children:[(0,o.jsx)("span",{className:"material-symbols-outlined text-[20px] text-primary",children:"login"}),"Device OAuth Login"]}),(0,o.jsx)("span",{className:"text-xs leading-relaxed text-text-muted",children:"Open CodeBuddy browser login and poll until the OAuth token is saved."})]})]}),(0,o.jsx)(d,{isOpen:c,onClose:()=>x(!1),onSuccess:t}),(0,o.jsx)(n.Go,{isOpen:a,provider:"codebuddy",title:"CodeBuddy Bulk GSuite Login + Access Key",serviceName:"CodeBuddy",onSuccess:t,onClose:()=>l(!1)}),(0,o.jsx)(n.LF,{isOpen:s,provider:"codebuddy",providerInfo:e,onSuccess:()=>{t?.(),i(!1)},onClose:()=>i(!1)})]})}},{id:"codebuddy-cn",label:"CodeBuddy CN",icon:"smart_toy",description:"Phone-number auto-registration via 5sim SMS, token import, and device OAuth.",supportedModes:["bulk-account","device-oauth"],component:function({providerInfo:e,onRefresh:t}){let[s,i]=(0,r.useState)(!1),[a,l]=(0,r.useState)(!1),[d,x]=(0,r.useState)(!1);return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)("div",{className:"grid gap-3 sm:grid-cols-2 xl:grid-cols-3",children:[(0,o.jsxs)("button",{type:"button",onClick:()=>i(!0),className:"flex min-h-[112px] min-w-0 flex-col gap-2 rounded-lg border border-border bg-surface px-4 py-3 text-left transition-colors hover:border-primary/40 hover:bg-primary/5",children:[(0,o.jsxs)("span",{className:"flex items-center gap-2 text-sm font-semibold text-text-main",children:[(0,o.jsx)("span",{className:"material-symbols-outlined text-[20px] text-primary",children:"smartphone"}),"Auto Register (Phone)"]}),(0,o.jsx)("span",{className:"text-xs leading-relaxed text-text-muted",children:"Bulk auto-register CodeBuddy CN accounts using 5sim virtual phone numbers (HK/China). Includes device-code token capture."})]}),(0,o.jsxs)("button",{type:"button",onClick:()=>l(!0),className:"flex min-h-[112px] min-w-0 flex-col gap-2 rounded-lg border border-border bg-surface px-4 py-3 text-left transition-colors hover:border-primary/40 hover:bg-primary/5",children:[(0,o.jsxs)("span",{className:"flex items-center gap-2 text-sm font-semibold text-text-main",children:[(0,o.jsx)("span",{className:"material-symbols-outlined text-[20px] text-primary",children:"playlist_add"}),"OAuth Token Import"]}),(0,o.jsx)("span",{className:"text-xs leading-relaxed text-text-muted",children:"Paste pre-obtained CodeBuddy CN OAuth tokens with optional refresh tokens."})]}),(0,o.jsxs)("button",{type:"button",onClick:()=>x(!0),className:"flex min-h-[112px] min-w-0 flex-col gap-2 rounded-lg border border-border bg-surface px-4 py-3 text-left transition-colors hover:border-primary/40 hover:bg-primary/5",children:[(0,o.jsxs)("span",{className:"flex items-center gap-2 text-sm font-semibold text-text-main",children:[(0,o.jsx)("span",{className:"material-symbols-outlined text-[20px] text-primary",children:"login"}),"Device OAuth Login"]}),(0,o.jsx)("span",{className:"text-xs leading-relaxed text-text-muted",children:"Open CodeBuddy CN browser login and poll until the OAuth token is saved."})]})]}),(0,o.jsx)(n.zE,{isOpen:s,onClose:()=>i(!1),onSuccess:t}),(0,o.jsx)(c,{isOpen:a,onClose:()=>l(!1),onSuccess:t}),(0,o.jsx)(n.LF,{isOpen:d,provider:"codebuddy-cn",providerInfo:e,onSuccess:()=>{t?.(),x(!1)},onClose:()=>x(!1)})]})}},{id:"qoder",label:"Qoder",icon:"code",description:"Bulk GSuite auto login via Google SSO and device flow.",supportedModes:["bulk-account","device-oauth"],component:function({providerInfo:e,onRefresh:t}){let[s,i]=(0,r.useState)(!1),[a,l]=(0,r.useState)(!1);return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)("div",{className:"grid gap-3 sm:grid-cols-2 xl:grid-cols-3",children:[(0,o.jsxs)("button",{type:"button",onClick:()=>i(!0),className:"flex min-h-[112px] min-w-0 flex-col gap-2 rounded-lg border border-border bg-surface px-4 py-3 text-left transition-colors hover:border-primary/40 hover:bg-primary/5",children:[(0,o.jsxs)("span",{className:"flex items-center gap-2 text-sm font-semibold text-text-main",children:[(0,o.jsx)("span",{className:"material-symbols-outlined text-[20px] text-primary",children:"group_add"}),"Auto Login Bulk"]}),(0,o.jsx)("span",{className:"text-xs leading-relaxed text-text-muted",children:"Run bulk gmail:password or gmail|password automation via Google SSO with Qoder device flow."})]}),(0,o.jsxs)("button",{type:"button",onClick:()=>l(!0),className:"flex min-h-[112px] min-w-0 flex-col gap-2 rounded-lg border border-border bg-surface px-4 py-3 text-left transition-colors hover:border-primary/40 hover:bg-primary/5",children:[(0,o.jsxs)("span",{className:"flex items-center gap-2 text-sm font-semibold text-text-main",children:[(0,o.jsx)("span",{className:"material-symbols-outlined text-[20px] text-primary",children:"login"}),"Device OAuth Login"]}),(0,o.jsx)("span",{className:"text-xs leading-relaxed text-text-muted",children:"Open Qoder device login in browser and poll until the token is saved."})]})]}),(0,o.jsx)(n.Go,{isOpen:s,provider:"qoder",title:"Qoder Bulk GSuite Auto Login",serviceName:"Qoder",onSuccess:t,onClose:()=>i(!1)}),(0,o.jsx)(n.LF,{isOpen:a,provider:"qoder",providerInfo:e,onSuccess:()=>{t?.(),l(!1)},onClose:()=>l(!1)})]})}},{id:"antigravity",label:"Antigravity",icon:"rocket_launch",description:"Bulk GSuite auto login via Google OAuth (authorization code).",supportedModes:["bulk-account","oauth"],component:function({providerInfo:e,onRefresh:t}){let[s,i]=(0,r.useState)(!1),[a,l]=(0,r.useState)(!1);return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)("div",{className:"grid gap-3 sm:grid-cols-2 xl:grid-cols-3",children:[(0,o.jsxs)("button",{type:"button",onClick:()=>i(!0),className:"flex min-h-[112px] min-w-0 flex-col gap-2 rounded-lg border border-border bg-surface px-4 py-3 text-left transition-colors hover:border-primary/40 hover:bg-primary/5",children:[(0,o.jsxs)("span",{className:"flex items-center gap-2 text-sm font-semibold text-text-main",children:[(0,o.jsx)("span",{className:"material-symbols-outlined text-[20px] text-primary",children:"group_add"}),"Auto Login Bulk"]}),(0,o.jsx)("span",{className:"text-xs leading-relaxed text-text-muted",children:"Run bulk gmail:password or gmail|password automation via Google OAuth (authorization code) for Antigravity."})]}),(0,o.jsxs)("button",{type:"button",onClick:()=>l(!0),className:"flex min-h-[112px] min-w-0 flex-col gap-2 rounded-lg border border-border bg-surface px-4 py-3 text-left transition-colors hover:border-primary/40 hover:bg-primary/5",children:[(0,o.jsxs)("span",{className:"flex items-center gap-2 text-sm font-semibold text-text-main",children:[(0,o.jsx)("span",{className:"material-symbols-outlined text-[20px] text-primary",children:"login"}),"OAuth Login"]}),(0,o.jsx)("span",{className:"text-xs leading-relaxed text-text-muted",children:"Open Antigravity Google OAuth in browser and finish the consent manually."})]})]}),(0,o.jsx)(n.Go,{isOpen:s,provider:"antigravity",title:"Antigravity Bulk GSuite Auto Login",serviceName:"Antigravity",onSuccess:t,onClose:()=>i(!1)}),(0,o.jsx)(n.LF,{isOpen:a,provider:"antigravity",providerInfo:e,onSuccess:()=>{t?.(),l(!1)},onClose:()=>l(!1)})]})}},{id:"cloudflare-ai",label:"Cloudflare Workers AI",icon:"cloud",description:"Bulk Google login → Workers AI API token harvest for free-tier CF AI.",supportedModes:["bulk-account"],component:function({onRefresh:e}){let[t,s]=(0,r.useState)(!1);return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)("div",{className:"grid gap-3 sm:grid-cols-2 xl:grid-cols-3",children:(0,o.jsxs)("button",{type:"button",onClick:()=>s(!0),className:"flex min-h-[112px] min-w-0 flex-col gap-2 rounded-lg border border-border bg-surface px-4 py-3 text-left transition-colors hover:border-primary/40 hover:bg-primary/5",children:[(0,o.jsxs)("span",{className:"flex items-center gap-2 text-sm font-semibold text-text-main",children:[(0,o.jsx)("span",{className:"material-symbols-outlined text-[20px] text-primary",children:"cloud"}),"Bulk Workers AI Tokens"]}),(0,o.jsxs)("span",{className:"text-xs leading-relaxed text-text-muted",children:["Google login to Cloudflare dashboard → create Workers AI API token → save as"," ",(0,o.jsx)("code",{className:"text-[11px]",children:"cloudflare-ai"})," (accountId + token). Paste"," ",(0,o.jsx)("code",{className:"text-[11px]",children:"email:password"})," or ",(0,o.jsx)("code",{className:"text-[11px]",children:"email|password"}),". Uses headed ",(0,o.jsx)("strong",{children:"CloakBrowser"})," (Turnstile) + residential proxy recommended."]})]})}),(0,o.jsx)(n.Go,{isOpen:t,provider:"cloudflare-ai",title:"Cloudflare Workers AI Bulk Token Harvest",serviceName:"Cloudflare Workers AI",accountsPlaceholder:"user@gmail.com:password\nuser2@gmail.com|password",onSuccess:e,onClose:()=>s(!1)})]})}}];function p(){let[e,t]=(0,r.useState)([]),[s,d]=(0,r.useState)(!0),[c,p]=(0,r.useState)(m[0].id),u=(0,r.useCallback)(async()=>{try{let e=await fetch("/api/providers",{cache:"no-store"}),s=await e.json();e.ok&&t(s.connections||[])}catch(e){console.log("Error fetching automation connections:",e)}finally{d(!1)}},[]);(0,r.useEffect)(()=>{u()},[u]),(0,r.useEffect)(()=>{let e=new URLSearchParams(window.location.search).get("provider");m.some(t=>t.id===e)&&p(e)},[]);let h=m.find(e=>e.id===c)||m[0],b=i.IS[h.id]||{id:h.id,name:h.label},g=h.component,f=(0,r.useMemo)(()=>{let t={};for(let s of m)t[s.id]=e.filter(e=>e.provider===s.id).length;return t},[e]);return s?(0,o.jsxs)("div",{className:"flex flex-col gap-6",children:[(0,o.jsx)(n.Qv,{}),(0,o.jsx)(n.Qv,{})]}):(0,o.jsxs)("div",{className:"flex min-w-0 flex-col gap-6 px-1 sm:px-0",children:[(0,o.jsx)("div",{className:"flex flex-col gap-1",children:(0,o.jsx)("h1",{className:"text-2xl font-semibold",children:"Automation"})}),(0,o.jsx)("div",{className:"grid gap-3 sm:grid-cols-2",children:m.map(e=>{let t=e.id===c;return(0,o.jsxs)("button",{type:"button",onClick:()=>p(e.id),className:`flex min-w-0 items-center gap-3 rounded-lg border px-4 py-3 text-left transition-colors ${t?"border-primary/50 bg-primary/10 text-primary":"border-border bg-surface text-text-main hover:border-primary/30 hover:bg-primary/5"}`,children:[(0,o.jsx)(a,{id:e.id,icon:e.icon,size:22}),(0,o.jsxs)("span",{className:"min-w-0 flex-1",children:[(0,o.jsx)("span",{className:"block truncate text-sm font-semibold",children:e.label}),(0,o.jsx)("span",{className:"mt-0.5 block text-xs text-text-muted",children:l(f[e.id]||0)})]})]},e.id)})}),(0,o.jsx)(n.Zp,{children:(0,o.jsxs)("div",{className:"flex min-w-0 flex-col gap-4",children:[(0,o.jsxs)("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-start sm:justify-between",children:[(0,o.jsxs)("div",{className:"min-w-0",children:[(0,o.jsxs)("div",{className:"flex items-center gap-2",children:[(0,o.jsx)(a,{id:h.id,icon:h.icon,size:22}),(0,o.jsx)("h2",{className:"text-lg font-semibold",children:h.label})]}),(0,o.jsx)("span",{className:"mt-1 block text-xs leading-relaxed text-text-muted",children:h.description}),(0,o.jsx)("div",{className:"mt-2 flex flex-wrap gap-1.5",children:h.supportedModes.map(e=>(0,o.jsx)(n.Ex,{variant:"default",size:"sm",children:x[e]},e))})]}),(0,o.jsx)(n.Ex,{variant:"success",children:l(f[h.id]||0)})]}),(0,o.jsx)(g,{providerInfo:b,onRefresh:u})]})})]})}},98944:(e,t,s)=>{Promise.resolve().then(s.bind(s,20975))}},e=>{e.O(0,[2574,3862,4343,85,5497,8441,3794,7358],()=>e(e.s=98944)),_N_E=e.O()}]);
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8593],{20975:(e,t,s)=>{"use strict";s.r(t),s.d(t,{default:()=>p});var o=s(95155),r=s(12115),n=s(35497),i=s(52679);function a({id:e,icon:t,size:s=22}){let[n,i]=(0,r.useState)(!1);return n?(0,o.jsx)("span",{className:"material-symbols-outlined text-primary",style:{fontSize:s},children:t}):(0,o.jsx)("img",{src:`/providers/${e}.png`,alt:"",width:s,height:s,className:"rounded object-contain",style:{width:s,height:s},onError:()=>i(!0)})}function l(e){return`${e} connection${1===e?"":"s"}`}function d({isOpen:e,onClose:t,onSuccess:s}){let[n,i]=(0,r.useState)(""),[a,l]=(0,r.useState)(!1),[c,x]=(0,r.useState)(null),m=async()=>{if(n.trim()){l(!0),x(null);try{let e=await fetch("/api/oauth/codebuddy/bulk-token",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({tokens:n})}),t=await e.json();x(t),t.success&&s?.()}catch(e){x({error:e.message})}finally{l(!1)}}};if(!e)return null;let p=null;if(c?.success){let e=[`Imported ${c.imported}/${c.total} tokens.`];if(c.failed&&e.push(`${c.failed} failed.`),c.formatCounts){let{"access-only":t,"with-refresh":s,"with-api-key":o}=c.formatCounts,r=[];o&&r.push(`${o} with API key`),s&&r.push(`${s} with refresh token`),t&&r.push(`${t} access-only`),r.length&&e.push(`(${r.join(", ")})`)}p=e.join(" ")}return(0,o.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/50",onClick:t,children:(0,o.jsxs)("div",{className:"w-full max-w-lg rounded-xl border border-border bg-surface p-6 shadow-xl",onClick:e=>e.stopPropagation(),children:[(0,o.jsx)("h3",{className:"mb-4 text-lg font-semibold text-text-main",children:"CodeBuddy OAuth Token Import"}),(0,o.jsx)("p",{className:"mb-2 text-xs text-text-muted",children:"Paste CodeBuddy OAuth tokens, one per line. Supports three formats:"}),(0,o.jsxs)("div",{className:"mb-3 space-y-2 rounded-lg bg-background/50 p-3 text-xs text-text-muted",children:[(0,o.jsxs)("div",{className:"flex items-center gap-2",children:[(0,o.jsx)("span",{className:"material-symbols-outlined text-[16px] text-primary leading-none",children:"check_circle"}),(0,o.jsxs)("span",{className:"flex items-center gap-1.5",children:[(0,o.jsx)("code",{className:"text-[10px] bg-border/50 px-1.5 py-0.5 rounded leading-none",children:"accessToken"}),(0,o.jsx)("span",{children:"— access token only (24h expiry)"})]})]}),(0,o.jsxs)("div",{className:"flex items-center gap-2",children:[(0,o.jsx)("span",{className:"material-symbols-outlined text-[16px] text-primary leading-none",children:"check_circle"}),(0,o.jsxs)("span",{className:"flex items-center gap-1.5",children:[(0,o.jsx)("code",{className:"text-[10px] bg-border/50 px-1.5 py-0.5 rounded leading-none",children:"accessToken:refreshToken"}),(0,o.jsx)("span",{children:"— enables auto-refresh"})]})]}),(0,o.jsxs)("div",{className:"flex items-center gap-2",children:[(0,o.jsx)("span",{className:"material-symbols-outlined text-[16px] text-primary leading-none",children:"check_circle"}),(0,o.jsxs)("span",{className:"flex items-center gap-1.5",children:[(0,o.jsx)("code",{className:"text-[10px] bg-border/50 px-1.5 py-0.5 rounded leading-none",children:"accessToken:refreshToken:apiKey"}),(0,o.jsx)("span",{children:"— 365-day access"})]})]})]}),(0,o.jsx)("textarea",{className:"mb-3 w-full rounded-lg border border-border bg-background p-3 font-mono text-xs text-text-main placeholder:text-text-muted focus:border-primary focus:outline-none",rows:8,placeholder:"eyJhbGciOiJSUzI1NiIs...\neyJhbGciOiJSUzI1NiIs...:eyJhbGciOiJSUzI1NiIs...\neyJhbGciOiJSUzI1NiIs...:eyJhbGciOiJSUzI1NiIs...:ak_abc123...",value:n,onChange:e=>i(e.target.value),disabled:a}),c&&(0,o.jsx)("div",{className:"mb-3 rounded-lg p-3 text-xs "+(c.success?"bg-green-500/10 text-green-400":"bg-red-500/10 text-red-400"),children:p||c.error||"Import failed"}),(0,o.jsxs)("div",{className:"flex justify-end gap-2",children:[(0,o.jsx)("button",{type:"button",onClick:t,className:"rounded-lg px-4 py-2 text-sm text-text-muted hover:bg-border/50",children:"Close"}),(0,o.jsx)("button",{type:"button",onClick:m,disabled:a||!n.trim(),className:"rounded-lg bg-primary px-4 py-2 text-sm font-medium text-white hover:bg-primary/90 disabled:opacity-50",children:a?"Importing...":"Import Tokens"})]})]})})}function c({isOpen:e,onClose:t,onSuccess:s}){let[n,i]=(0,r.useState)(""),[a,l]=(0,r.useState)(!1),[d,x]=(0,r.useState)(null),m=async()=>{if(n.trim()){l(!0),x(null);try{let e=await fetch("/api/oauth/codebuddy-cn/bulk-token",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({tokens:n})}),t=await e.json();x(t),t.success&&s?.()}catch(e){x({error:e.message})}finally{l(!1)}}};if(!e)return null;let p=null;if(d?.success){let e=[`Imported ${d.imported}/${d.total} tokens.`];d.failed&&e.push(`${d.failed} failed.`),p=e.join(" ")}return(0,o.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/50",onClick:t,children:(0,o.jsxs)("div",{className:"w-full max-w-lg rounded-xl border border-border bg-surface p-6 shadow-xl",onClick:e=>e.stopPropagation(),children:[(0,o.jsx)("h3",{className:"mb-4 text-lg font-semibold text-text-main",children:"CodeBuddy CN OAuth Token Import"}),(0,o.jsx)("p",{className:"mb-2 text-xs text-text-muted",children:"Paste CodeBuddy CN OAuth tokens, one per line. Supports:"}),(0,o.jsxs)("div",{className:"mb-3 space-y-1 rounded-lg bg-background/50 p-3 text-xs text-text-muted",children:[(0,o.jsxs)("div",{children:[(0,o.jsx)("code",{className:"text-[10px] bg-border/50 px-1.5 py-0.5 rounded",children:"accessToken"})," — access token only"]}),(0,o.jsxs)("div",{children:[(0,o.jsx)("code",{className:"text-[10px] bg-border/50 px-1.5 py-0.5 rounded",children:"accessToken:refreshToken"})," — enables auto-refresh"]})]}),(0,o.jsx)("textarea",{className:"mb-3 w-full rounded-lg border border-border bg-background p-3 font-mono text-xs text-text-main placeholder:text-text-muted focus:border-primary focus:outline-none",rows:8,placeholder:"eyJhbGciOiJSUzI1NiIs...\neyJhbGciOiJSUzI1NiIs...:eyJhbGciOiJSUzI1NiIs...",value:n,onChange:e=>i(e.target.value),disabled:a}),d&&(0,o.jsx)("div",{className:"mb-3 rounded-lg p-3 text-xs "+(d.success?"bg-green-500/10 text-green-400":"bg-red-500/10 text-red-400"),children:p||d.error||"Import failed"}),(0,o.jsxs)("div",{className:"flex justify-end gap-2",children:[(0,o.jsx)("button",{type:"button",onClick:t,className:"rounded-lg px-4 py-2 text-sm text-text-muted hover:bg-border/50",children:"Close"}),(0,o.jsx)("button",{type:"button",onClick:m,disabled:a||!n.trim(),className:"rounded-lg bg-primary px-4 py-2 text-sm font-medium text-white hover:bg-primary/90 disabled:opacity-50",children:a?"Importing...":"Import Tokens"})]})]})})}let x={"single-token":"Token import","bulk-token":"Bulk token import","bulk-account":"Bulk accounts","device-oauth":"Device login",social:"Social login",oauth:"OAuth login"},m=[{id:"kiro",label:"Kiro AI",icon:"psychology_alt",description:"Token import, bulk import, and social login automation.",supportedModes:["single-token","bulk-token","bulk-account","social"],component:function({providerInfo:e,onRefresh:t}){let[s,i]=(0,r.useState)(!1),[a,l]=(0,r.useState)(null),[d,c]=(0,r.useState)(null),x=e=>{c({...e,key:Date.now()}),i(!0)};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)("div",{className:"grid gap-3 sm:grid-cols-2 xl:grid-cols-3",children:[{id:"bulk-account",title:"Auto Login Bulk",icon:"group_add",description:"Run bulk gmail|password automation with worker progress and manual assist.",action:()=>x({method:"import",importMode:"bulk-account"})},{id:"bulk-token",title:"Bulk Token",icon:"playlist_add",description:"Import many Kiro refresh tokens, one token per line.",action:()=>x({method:"import",importMode:"bulk-token"})},{id:"single-token",title:"Single Token",icon:"vpn_key",description:"Auto-detect or paste one Kiro refresh token.",action:()=>x({method:"import",importMode:"single-token"})},{id:"builder-id",title:"AWS Builder ID",icon:"shield",description:"Open the standard AWS Builder ID device login.",action:()=>x({method:"builder-id"})},{id:"idc",title:"AWS IDC",icon:"business",description:"Enter an IAM Identity Center start URL and region.",action:()=>x({method:"idc"})},{id:"google",title:"Google Login",icon:"account_circle",description:"Open Kiro social Google login with callback capture.",action:()=>x({method:"social",provider:"google"})}].map(e=>(0,o.jsxs)("button",{type:"button",onClick:e.action,className:"flex min-h-[112px] min-w-0 flex-col gap-2 rounded-lg border border-border bg-surface px-4 py-3 text-left transition-colors hover:border-primary/40 hover:bg-primary/5",children:[(0,o.jsxs)("span",{className:"flex items-center gap-2 text-sm font-semibold text-text-main",children:[(0,o.jsx)("span",{className:"material-symbols-outlined text-[20px] text-primary",children:e.icon}),e.title]}),(0,o.jsx)("span",{className:"text-xs leading-relaxed text-text-muted",children:e.description})]},e.id))}),(0,o.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[a?.jobId&&(0,o.jsxs)(n.Ex,{variant:"default",children:["Bulk job: ",a.status]}),a?.jobId&&(0,o.jsx)(n.$n,{size:"sm",variant:"secondary",icon:"monitoring",onClick:()=>x({method:"import",importMode:"bulk-account"}),children:"Resume Bulk Progress"})]}),(0,o.jsx)(n.Mh,{isOpen:s,providerInfo:e,onSuccess:t,onRefresh:t,initialBulkJobId:a?.jobId||null,initialFlow:d,onBulkJobChange:l,onClose:()=>i(!1)})]})}},{id:"codebuddy",label:"CodeBuddy",icon:"smart_toy",description:"Bulk GSuite automation and browser OAuth polling login.",supportedModes:["bulk-account","device-oauth"],component:function({providerInfo:e,onRefresh:t}){let[s,i]=(0,r.useState)(!1),[a,l]=(0,r.useState)(!1),[c,x]=(0,r.useState)(!1);return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)("div",{className:"grid gap-3 sm:grid-cols-2 xl:grid-cols-3",children:[(0,o.jsxs)("button",{type:"button",onClick:()=>l(!0),className:"flex min-h-[112px] min-w-0 flex-col gap-2 rounded-lg border border-border bg-surface px-4 py-3 text-left transition-colors hover:border-primary/40 hover:bg-primary/5",children:[(0,o.jsxs)("span",{className:"flex items-center gap-2 text-sm font-semibold text-text-main",children:[(0,o.jsx)("span",{className:"material-symbols-outlined text-[20px] text-primary",children:"group_add"}),"Auto Login + Generate Key"]}),(0,o.jsx)("span",{className:"text-xs leading-relaxed text-text-muted",children:"Run bulk GSuite gmail|password login, create a CodeBuddy Access Key, and save it for model calls."})]}),(0,o.jsxs)("button",{type:"button",onClick:()=>x(!0),className:"flex min-h-[112px] min-w-0 flex-col gap-2 rounded-lg border border-border bg-surface px-4 py-3 text-left transition-colors hover:border-primary/40 hover:bg-primary/5",children:[(0,o.jsxs)("span",{className:"flex items-center gap-2 text-sm font-semibold text-text-main",children:[(0,o.jsx)("span",{className:"material-symbols-outlined text-[20px] text-primary",children:"playlist_add"}),"OAuth Token Import"]}),(0,o.jsx)("span",{className:"text-xs leading-relaxed text-text-muted",children:"Paste OAuth tokens with optional refresh tokens and API keys for extended access."})]}),(0,o.jsxs)("button",{type:"button",onClick:()=>i(!0),className:"flex min-h-[112px] min-w-0 flex-col gap-2 rounded-lg border border-border bg-surface px-4 py-3 text-left transition-colors hover:border-primary/40 hover:bg-primary/5",children:[(0,o.jsxs)("span",{className:"flex items-center gap-2 text-sm font-semibold text-text-main",children:[(0,o.jsx)("span",{className:"material-symbols-outlined text-[20px] text-primary",children:"login"}),"Device OAuth Login"]}),(0,o.jsx)("span",{className:"text-xs leading-relaxed text-text-muted",children:"Open CodeBuddy browser login and poll until the OAuth token is saved."})]})]}),(0,o.jsx)(d,{isOpen:c,onClose:()=>x(!1),onSuccess:t}),(0,o.jsx)(n.Go,{isOpen:a,provider:"codebuddy",title:"CodeBuddy Bulk GSuite Login + Access Key",serviceName:"CodeBuddy",onSuccess:t,onClose:()=>l(!1)}),(0,o.jsx)(n.LF,{isOpen:s,provider:"codebuddy",providerInfo:e,onSuccess:()=>{t?.(),i(!1)},onClose:()=>i(!1)})]})}},{id:"codebuddy-cn",label:"CodeBuddy CN",icon:"smart_toy",description:"Phone-number auto-registration via 5sim SMS, token import, and device OAuth.",supportedModes:["bulk-account","device-oauth"],component:function({providerInfo:e,onRefresh:t}){let[s,i]=(0,r.useState)(!1),[a,l]=(0,r.useState)(!1),[d,x]=(0,r.useState)(!1);return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)("div",{className:"grid gap-3 sm:grid-cols-2 xl:grid-cols-3",children:[(0,o.jsxs)("button",{type:"button",onClick:()=>i(!0),className:"flex min-h-[112px] min-w-0 flex-col gap-2 rounded-lg border border-border bg-surface px-4 py-3 text-left transition-colors hover:border-primary/40 hover:bg-primary/5",children:[(0,o.jsxs)("span",{className:"flex items-center gap-2 text-sm font-semibold text-text-main",children:[(0,o.jsx)("span",{className:"material-symbols-outlined text-[20px] text-primary",children:"smartphone"}),"Auto Register (Phone)"]}),(0,o.jsx)("span",{className:"text-xs leading-relaxed text-text-muted",children:"Bulk auto-register CodeBuddy CN accounts using 5sim virtual phone numbers (HK/China). Includes device-code token capture."})]}),(0,o.jsxs)("button",{type:"button",onClick:()=>l(!0),className:"flex min-h-[112px] min-w-0 flex-col gap-2 rounded-lg border border-border bg-surface px-4 py-3 text-left transition-colors hover:border-primary/40 hover:bg-primary/5",children:[(0,o.jsxs)("span",{className:"flex items-center gap-2 text-sm font-semibold text-text-main",children:[(0,o.jsx)("span",{className:"material-symbols-outlined text-[20px] text-primary",children:"playlist_add"}),"OAuth Token Import"]}),(0,o.jsx)("span",{className:"text-xs leading-relaxed text-text-muted",children:"Paste pre-obtained CodeBuddy CN OAuth tokens with optional refresh tokens."})]}),(0,o.jsxs)("button",{type:"button",onClick:()=>x(!0),className:"flex min-h-[112px] min-w-0 flex-col gap-2 rounded-lg border border-border bg-surface px-4 py-3 text-left transition-colors hover:border-primary/40 hover:bg-primary/5",children:[(0,o.jsxs)("span",{className:"flex items-center gap-2 text-sm font-semibold text-text-main",children:[(0,o.jsx)("span",{className:"material-symbols-outlined text-[20px] text-primary",children:"login"}),"Device OAuth Login"]}),(0,o.jsx)("span",{className:"text-xs leading-relaxed text-text-muted",children:"Open CodeBuddy CN browser login and poll until the OAuth token is saved."})]})]}),(0,o.jsx)(n.zE,{isOpen:s,onClose:()=>i(!1),onSuccess:t}),(0,o.jsx)(c,{isOpen:a,onClose:()=>l(!1),onSuccess:t}),(0,o.jsx)(n.LF,{isOpen:d,provider:"codebuddy-cn",providerInfo:e,onSuccess:()=>{t?.(),x(!1)},onClose:()=>x(!1)})]})}},{id:"qoder",label:"Qoder",icon:"code",description:"Bulk GSuite auto login via Google SSO and device flow.",supportedModes:["bulk-account","device-oauth"],component:function({providerInfo:e,onRefresh:t}){let[s,i]=(0,r.useState)(!1),[a,l]=(0,r.useState)(!1);return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)("div",{className:"grid gap-3 sm:grid-cols-2 xl:grid-cols-3",children:[(0,o.jsxs)("button",{type:"button",onClick:()=>i(!0),className:"flex min-h-[112px] min-w-0 flex-col gap-2 rounded-lg border border-border bg-surface px-4 py-3 text-left transition-colors hover:border-primary/40 hover:bg-primary/5",children:[(0,o.jsxs)("span",{className:"flex items-center gap-2 text-sm font-semibold text-text-main",children:[(0,o.jsx)("span",{className:"material-symbols-outlined text-[20px] text-primary",children:"group_add"}),"Auto Login Bulk"]}),(0,o.jsx)("span",{className:"text-xs leading-relaxed text-text-muted",children:"Run bulk gmail:password or gmail|password automation via Google SSO with Qoder device flow."})]}),(0,o.jsxs)("button",{type:"button",onClick:()=>l(!0),className:"flex min-h-[112px] min-w-0 flex-col gap-2 rounded-lg border border-border bg-surface px-4 py-3 text-left transition-colors hover:border-primary/40 hover:bg-primary/5",children:[(0,o.jsxs)("span",{className:"flex items-center gap-2 text-sm font-semibold text-text-main",children:[(0,o.jsx)("span",{className:"material-symbols-outlined text-[20px] text-primary",children:"login"}),"Device OAuth Login"]}),(0,o.jsx)("span",{className:"text-xs leading-relaxed text-text-muted",children:"Open Qoder device login in browser and poll until the token is saved."})]})]}),(0,o.jsx)(n.Go,{isOpen:s,provider:"qoder",title:"Qoder Bulk GSuite Auto Login",serviceName:"Qoder",onSuccess:t,onClose:()=>i(!1)}),(0,o.jsx)(n.LF,{isOpen:a,provider:"qoder",providerInfo:e,onSuccess:()=>{t?.(),l(!1)},onClose:()=>l(!1)})]})}},{id:"antigravity",label:"Antigravity",icon:"rocket_launch",description:"Bulk GSuite auto login via Google OAuth (authorization code).",supportedModes:["bulk-account","oauth"],component:function({providerInfo:e,onRefresh:t}){let[s,i]=(0,r.useState)(!1),[a,l]=(0,r.useState)(!1);return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)("div",{className:"grid gap-3 sm:grid-cols-2 xl:grid-cols-3",children:[(0,o.jsxs)("button",{type:"button",onClick:()=>i(!0),className:"flex min-h-[112px] min-w-0 flex-col gap-2 rounded-lg border border-border bg-surface px-4 py-3 text-left transition-colors hover:border-primary/40 hover:bg-primary/5",children:[(0,o.jsxs)("span",{className:"flex items-center gap-2 text-sm font-semibold text-text-main",children:[(0,o.jsx)("span",{className:"material-symbols-outlined text-[20px] text-primary",children:"group_add"}),"Auto Login Bulk"]}),(0,o.jsx)("span",{className:"text-xs leading-relaxed text-text-muted",children:"Run bulk gmail:password or gmail|password automation via Google OAuth (authorization code) for Antigravity."})]}),(0,o.jsxs)("button",{type:"button",onClick:()=>l(!0),className:"flex min-h-[112px] min-w-0 flex-col gap-2 rounded-lg border border-border bg-surface px-4 py-3 text-left transition-colors hover:border-primary/40 hover:bg-primary/5",children:[(0,o.jsxs)("span",{className:"flex items-center gap-2 text-sm font-semibold text-text-main",children:[(0,o.jsx)("span",{className:"material-symbols-outlined text-[20px] text-primary",children:"login"}),"OAuth Login"]}),(0,o.jsx)("span",{className:"text-xs leading-relaxed text-text-muted",children:"Open Antigravity Google OAuth in browser and finish the consent manually."})]})]}),(0,o.jsx)(n.Go,{isOpen:s,provider:"antigravity",title:"Antigravity Bulk GSuite Auto Login",serviceName:"Antigravity",onSuccess:t,onClose:()=>i(!1)}),(0,o.jsx)(n.LF,{isOpen:a,provider:"antigravity",providerInfo:e,onSuccess:()=>{t?.(),l(!1)},onClose:()=>l(!1)})]})}},{id:"cloudflare-ai",label:"Cloudflare Workers AI",icon:"cloud",description:"Bulk Google login → Workers AI API token harvest for free-tier CF AI.",supportedModes:["bulk-account"],component:function({onRefresh:e}){let[t,s]=(0,r.useState)(!1);return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)("div",{className:"grid gap-3 sm:grid-cols-2 xl:grid-cols-3",children:(0,o.jsxs)("button",{type:"button",onClick:()=>s(!0),className:"flex min-h-[112px] min-w-0 flex-col gap-2 rounded-lg border border-border bg-surface px-4 py-3 text-left transition-colors hover:border-primary/40 hover:bg-primary/5",children:[(0,o.jsxs)("span",{className:"flex items-center gap-2 text-sm font-semibold text-text-main",children:[(0,o.jsx)("span",{className:"material-symbols-outlined text-[20px] text-primary",children:"cloud"}),"Bulk Workers AI Tokens"]}),(0,o.jsxs)("span",{className:"text-xs leading-relaxed text-text-muted",children:["Google login to Cloudflare dashboard → create Workers AI API token → save as"," ",(0,o.jsx)("code",{className:"text-[11px]",children:"cloudflare-ai"})," (accountId + token). Paste"," ",(0,o.jsx)("code",{className:"text-[11px]",children:"email:password"})," or ",(0,o.jsx)("code",{className:"text-[11px]",children:"email|password"}),". Uses headed ",(0,o.jsx)("strong",{children:"CloakBrowser"})," (sole automation engine) + residential proxy recommended."]})]})}),(0,o.jsx)(n.Go,{isOpen:t,provider:"cloudflare-ai",title:"Cloudflare Workers AI Bulk Token Harvest",serviceName:"Cloudflare Workers AI",accountsPlaceholder:"user@gmail.com:password\nuser2@gmail.com|password",onSuccess:e,onClose:()=>s(!1)})]})}}];function p(){let[e,t]=(0,r.useState)([]),[s,d]=(0,r.useState)(!0),[c,p]=(0,r.useState)(m[0].id),u=(0,r.useCallback)(async()=>{try{let e=await fetch("/api/providers",{cache:"no-store"}),s=await e.json();e.ok&&t(s.connections||[])}catch(e){console.log("Error fetching automation connections:",e)}finally{d(!1)}},[]);(0,r.useEffect)(()=>{u()},[u]),(0,r.useEffect)(()=>{let e=new URLSearchParams(window.location.search).get("provider");m.some(t=>t.id===e)&&p(e)},[]);let h=m.find(e=>e.id===c)||m[0],b=i.IS[h.id]||{id:h.id,name:h.label},g=h.component,f=(0,r.useMemo)(()=>{let t={};for(let s of m)t[s.id]=e.filter(e=>e.provider===s.id).length;return t},[e]);return s?(0,o.jsxs)("div",{className:"flex flex-col gap-6",children:[(0,o.jsx)(n.Qv,{}),(0,o.jsx)(n.Qv,{})]}):(0,o.jsxs)("div",{className:"flex min-w-0 flex-col gap-6 px-1 sm:px-0",children:[(0,o.jsx)("div",{className:"flex flex-col gap-1",children:(0,o.jsx)("h1",{className:"text-2xl font-semibold",children:"Automation"})}),(0,o.jsx)("div",{className:"grid gap-3 sm:grid-cols-2",children:m.map(e=>{let t=e.id===c;return(0,o.jsxs)("button",{type:"button",onClick:()=>p(e.id),className:`flex min-w-0 items-center gap-3 rounded-lg border px-4 py-3 text-left transition-colors ${t?"border-primary/50 bg-primary/10 text-primary":"border-border bg-surface text-text-main hover:border-primary/30 hover:bg-primary/5"}`,children:[(0,o.jsx)(a,{id:e.id,icon:e.icon,size:22}),(0,o.jsxs)("span",{className:"min-w-0 flex-1",children:[(0,o.jsx)("span",{className:"block truncate text-sm font-semibold",children:e.label}),(0,o.jsx)("span",{className:"mt-0.5 block text-xs text-text-muted",children:l(f[e.id]||0)})]})]},e.id)})}),(0,o.jsx)(n.Zp,{children:(0,o.jsxs)("div",{className:"flex min-w-0 flex-col gap-4",children:[(0,o.jsxs)("div",{className:"flex flex-col gap-3 sm:flex-row sm:items-start sm:justify-between",children:[(0,o.jsxs)("div",{className:"min-w-0",children:[(0,o.jsxs)("div",{className:"flex items-center gap-2",children:[(0,o.jsx)(a,{id:h.id,icon:h.icon,size:22}),(0,o.jsx)("h2",{className:"text-lg font-semibold",children:h.label})]}),(0,o.jsx)("span",{className:"mt-1 block text-xs leading-relaxed text-text-muted",children:h.description}),(0,o.jsx)("div",{className:"mt-2 flex flex-wrap gap-1.5",children:h.supportedModes.map(e=>(0,o.jsx)(n.Ex,{variant:"default",size:"sm",children:x[e]},e))})]}),(0,o.jsx)(n.Ex,{variant:"success",children:l(f[h.id]||0)})]}),(0,o.jsx)(g,{providerInfo:b,onRefresh:u})]})})]})}},98944:(e,t,s)=>{Promise.resolve().then(s.bind(s,20975))}},e=>{e.O(0,[2574,3862,4343,85,5497,8441,3794,7358],()=>e(e.s=98944)),_N_E=e.O()}]);
@@ -1,3 +1,13 @@
1
+ # v1.0.136 (2026-07-26)
2
+
3
+ ## Improvements
4
+ - **Lighter Automation runtime cleanup**: removed the unused `playwrightRuntime` helper and full `playwright` package wiring from postinstall/build/standalone. Only CloakBrowser + `playwright-core` peer remain.
5
+
6
+ # v1.0.135 (2026-07-26)
7
+
8
+ ## Breaking
9
+ - **CloakBrowser-only Automation**: stock Playwright Chromium is removed as a bulk-import engine. All providers (Kiro, CodeBuddy, CodeBuddy CN, Antigravity, Qoder, Cloudflare AI) launch headed CloakBrowser. Postinstall warms CloakBrowser + playwright-core peer (no stock Chromium browser download).
10
+
1
11
  # v1.0.134 (2026-07-26)
2
12
 
3
13
  ## Improvements
@@ -1,6 +1,6 @@
1
- // Lazy-install helper for cloakbrowser (stealth Chromium that can pass Turnstile).
2
- // Same shape as camoufoxRuntime / playwrightRuntime — optional package, install on demand.
3
- // Also installs mmdb-lib (required by cloakbrowser when geoip: true for proxy timezone match).
1
+ // Lazy-install helper for cloakbrowser (sole automation browser engine).
2
+ // Installs into ~/.zevai/runtime on demand: cloakbrowser + mmdb-lib + playwright-core peer.
3
+ // (playwright-core = drive API only; no stock Chromium browser download.)
4
4
  const { createRequire } = require("module");
5
5
  const fs = require("fs");
6
6
  const path = require("path");
@@ -17,6 +17,9 @@ const CLOAKBROWSER_PACKAGE = "cloakbrowser";
17
17
  const CLOAKBROWSER_VERSION = "^0.5.2";
18
18
  const MMDB_PACKAGE = "mmdb-lib";
19
19
  const MMDB_VERSION = "^3.0.2";
20
+ // Peer of cloakbrowser — drive API only (no stock Chromium browser download).
21
+ const PLAYWRIGHT_CORE_PACKAGE = "playwright-core";
22
+ const PLAYWRIGHT_CORE_VERSION = "^1.54.2";
20
23
 
21
24
  const nodeRequire =
22
25
  typeof __non_webpack_require__ === "function" ? __non_webpack_require__ : require;
@@ -75,11 +78,12 @@ function loadCloakbrowserModule() {
75
78
  }
76
79
 
77
80
  /**
78
- * Ensure cloakbrowser + mmdb-lib are available under ~/.zevai/runtime.
81
+ * Ensure cloakbrowser + mmdb-lib + playwright-core under ~/.zevai/runtime.
79
82
  * mmdb-lib is required when launching with geoip: true (proxy timezone/locale).
83
+ * playwright-core is the drive peer (no stock Chromium binary download).
80
84
  */
81
85
  function ensureCloakbrowserRuntime({ silent = false } = {}) {
82
- if (cachedReady?.ok && cachedReady.module && tryRequireMmdb()) {
86
+ if (cachedReady?.ok && cachedReady.module && tryRequireMmdb() && hasPackage(PLAYWRIGHT_CORE_PACKAGE)) {
83
87
  return cachedReady;
84
88
  }
85
89
 
@@ -103,11 +107,13 @@ function ensureCloakbrowserRuntime({ silent = false } = {}) {
103
107
  let mod = tryRequireCloakbrowser();
104
108
  const needCloak = !mod?.launch;
105
109
  const needMmdb = !tryRequireMmdb() && !hasPackage(MMDB_PACKAGE);
110
+ const needPwCore = !hasPackage(PLAYWRIGHT_CORE_PACKAGE);
106
111
 
107
- if (needCloak || needMmdb) {
112
+ if (needCloak || needMmdb || needPwCore) {
108
113
  const pkgs = [];
109
114
  if (needCloak) pkgs.push(`${CLOAKBROWSER_PACKAGE}@${CLOAKBROWSER_VERSION}`);
110
115
  if (needMmdb) pkgs.push(`${MMDB_PACKAGE}@${MMDB_VERSION}`);
116
+ if (needPwCore) pkgs.push(`${PLAYWRIGHT_CORE_PACKAGE}@${PLAYWRIGHT_CORE_VERSION}`);
111
117
 
112
118
  if (!silent) {
113
119
  console.log(`[cloakbrowser] Installing ${pkgs.join(", ")} into runtime…`);
@@ -132,7 +138,7 @@ function ensureCloakbrowserRuntime({ silent = false } = {}) {
132
138
  mod = tryRequireCloakbrowser();
133
139
  if (!mod?.launch) {
134
140
  const err = new Error(
135
- `cloakbrowser installed but launch() is missing. Reinstall: cd "${getRuntimeDir()}" && npm install ${CLOAKBROWSER_PACKAGE}@${CLOAKBROWSER_VERSION} ${MMDB_PACKAGE}@${MMDB_VERSION}`
141
+ `cloakbrowser installed but launch() is missing. Reinstall: cd "${getRuntimeDir()}" && npm install ${CLOAKBROWSER_PACKAGE}@${CLOAKBROWSER_VERSION} ${MMDB_PACKAGE}@${MMDB_VERSION} ${PLAYWRIGHT_CORE_PACKAGE}@${PLAYWRIGHT_CORE_VERSION}`
136
142
  );
137
143
  err.code = "CLOAKBROWSER_API_MISMATCH";
138
144
  return { ok: false, error: err };
@@ -157,4 +163,6 @@ module.exports = {
157
163
  CLOAKBROWSER_VERSION,
158
164
  MMDB_PACKAGE,
159
165
  MMDB_VERSION,
166
+ PLAYWRIGHT_CORE_PACKAGE,
167
+ PLAYWRIGHT_CORE_VERSION,
160
168
  };
@@ -25,7 +25,7 @@ process.env.NPM_CONFIG_LOGLEVEL = process.env.NPM_CONFIG_LOGLEVEL || "error";
25
25
 
26
26
  const { ensureSqliteRuntime, runNpmInstall, getRuntimeDir } = require("./sqliteRuntime");
27
27
  const { ensureTrayRuntime } = require("./trayRuntime");
28
- const { ensurePlaywrightRuntime } = require("./playwrightRuntime");
28
+ const { ensureCloakbrowserRuntime } = require("./cloakbrowserRuntime");
29
29
 
30
30
  const MINIMAL = process.env.ZEVAI_MINIMAL_POSTINSTALL === "1"
31
31
  || process.env.ZEVAI_MINIMAL_POSTINSTALL === "true";
@@ -38,20 +38,21 @@ function warn(msg) {
38
38
  console.warn(`[zevai] ${msg}`);
39
39
  }
40
40
 
41
- function linkPlaywrightToStandalone() {
41
+ function linkCloakPeersToStandalone() {
42
42
  try {
43
43
  const { getRuntimeNodeModules } = require("./sqliteRuntime");
44
44
  const runtimeNm = getRuntimeNodeModules();
45
45
  const standaloneNm = path.join(__dirname, "..", "app", "node_modules");
46
46
  if (!fs.existsSync(path.join(standaloneNm, "next"))) return;
47
- for (const pkg of ["playwright", "playwright-core"]) {
47
+ // cloakbrowser peer + package itself (no stock Chromium browser download)
48
+ for (const pkg of ["playwright-core", "cloakbrowser", "mmdb-lib"]) {
48
49
  const src = path.join(runtimeNm, pkg);
49
50
  const dest = path.join(standaloneNm, pkg);
50
51
  if (!fs.existsSync(path.join(src, "package.json"))) continue;
51
52
  if (fs.existsSync(dest)) fs.rmSync(dest, { recursive: true, force: true });
52
53
  fs.cpSync(src, dest, { recursive: true });
53
54
  }
54
- log("Playwright linked into app bundle");
55
+ log("CloakBrowser runtime linked into app bundle");
55
56
  } catch {
56
57
  // Non-fatal
57
58
  }
@@ -104,17 +105,17 @@ if (MINIMAL) {
104
105
  process.exit(0);
105
106
  }
106
107
 
107
- // 3) Playwright + Chromium (default bulk engine)
108
+ // 3) CloakBrowser (sole bulk-import engine — patched Chromium + playwright-core peer)
108
109
  try {
109
- const pw = ensurePlaywrightRuntime({ silent: true });
110
- if (pw.ok) {
111
- log("✓ Playwright + Chromium ready (bulk import default engine)");
112
- linkPlaywrightToStandalone();
110
+ const cloak = ensureCloakbrowserRuntime({ silent: true });
111
+ if (cloak.ok) {
112
+ log("✓ CloakBrowser ready (sole automation browser engine)");
113
+ linkCloakPeersToStandalone();
113
114
  } else {
114
- warn(`Playwright skipped: ${pw.error?.message || pw.reason || "unknown"}`);
115
+ warn(`CloakBrowser skipped: ${cloak.error?.message || cloak.reason || "unknown"}`);
115
116
  }
116
117
  } catch (e) {
117
- warn(`Playwright skipped: ${e.message}`);
118
+ warn(`CloakBrowser skipped: ${e.message}`);
118
119
  }
119
120
 
120
121
  // 4) node-pty (nice terminal; not required)
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zevairouter",
3
- "version": "1.0.134",
3
+ "version": "1.0.136",
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"
package/cli/app/server.js CHANGED
@@ -9,7 +9,7 @@ const currentPort = parseInt(process.env.PORT, 10) || 3000
9
9
  const hostname = process.env.HOSTNAME || '0.0.0.0'
10
10
 
11
11
  let keepAliveTimeout = parseInt(process.env.KEEP_ALIVE_TIMEOUT, 10)
12
- const nextConfig = {"env":{},"typescript":{"ignoreBuildErrors":false},"typedRoutes":false,"distDir":"./.next-cli-build","cleanDistDir":true,"assetPrefix":"","cacheMaxMemorySize":52428800,"configOrigin":"next.config.mjs","useFileSystemPublicRoutes":true,"generateEtags":true,"pageExtensions":["tsx","ts","jsx","js"],"poweredByHeader":true,"compress":true,"images":{"deviceSizes":[640,750,828,1080,1200,1920,2048,3840],"imageSizes":[32,48,64,96,128,256,384],"path":"/_next/image","loader":"default","loaderFile":"","domains":[],"disableStaticImages":false,"minimumCacheTTL":14400,"formats":["image/webp"],"maximumRedirects":3,"maximumResponseBody":50000000,"dangerouslyAllowLocalIP":false,"dangerouslyAllowSVG":false,"contentSecurityPolicy":"script-src 'none'; frame-src 'none'; sandbox;","contentDispositionType":"attachment","localPatterns":[{"pathname":"**","search":""}],"remotePatterns":[],"qualities":[75],"unoptimized":true,"customCacheHandler":false},"devIndicators":{"position":"bottom-left"},"onDemandEntries":{"maxInactiveAge":60000,"pagesBufferLength":5},"basePath":"","sassOptions":{},"trailingSlash":false,"i18n":null,"productionBrowserSourceMaps":false,"excludeDefaultMomentLocales":true,"reactProductionProfiling":false,"reactStrictMode":null,"reactMaxHeadersLength":6000,"httpAgentOptions":{"keepAlive":true},"logging":{"serverFunctions":true,"browserToTerminal":"warn"},"compiler":{},"expireTime":31536000,"staticPageGenerationTimeout":60,"output":"standalone","modularizeImports":{"@mui/icons-material":{"transform":"@mui/icons-material/{{member}}"},"lodash":{"transform":"lodash/{{member}}"}},"outputFileTracingRoot":"/Users/firda","cacheComponents":false,"cacheLife":{"default":{"stale":300,"revalidate":900,"expire":4294967294},"seconds":{"stale":30,"revalidate":1,"expire":60},"minutes":{"stale":300,"revalidate":60,"expire":3600},"hours":{"stale":300,"revalidate":3600,"expire":86400},"days":{"stale":300,"revalidate":86400,"expire":604800},"weeks":{"stale":300,"revalidate":604800,"expire":2592000},"max":{"stale":300,"revalidate":2592000,"expire":31536000}},"cacheHandlers":{},"experimental":{"appNewScrollHandler":false,"useSkewCookie":false,"cssChunking":true,"multiZoneDraftMode":false,"appNavFailHandling":false,"prerenderEarlyExit":true,"serverMinification":true,"linkNoTouchStart":false,"caseSensitiveRoutes":false,"cachedNavigations":false,"partialFallbacks":false,"dynamicOnHover":false,"varyParams":false,"prefetchInlining":false,"preloadEntriesOnStart":true,"clientRouterFilter":true,"clientRouterFilterRedirects":false,"fetchCacheKeyPrefix":"","proxyPrefetch":"flexible","optimisticClientCache":true,"manualClientBasePath":false,"cpus":9,"memoryBasedWorkersCount":false,"imgOptConcurrency":null,"imgOptTimeoutInSeconds":7,"imgOptMaxInputPixels":268402689,"imgOptSequentialRead":null,"imgOptSkipMetadata":null,"isrFlushToDisk":true,"workerThreads":false,"optimizeCss":false,"nextScriptWorkers":false,"scrollRestoration":false,"externalDir":false,"disableOptimizedLoading":false,"gzipSize":true,"craCompat":false,"esmExternals":true,"fullySpecified":false,"swcTraceProfiling":false,"forceSwcTransforms":false,"largePageDataBytes":128000,"typedEnv":false,"parallelServerCompiles":false,"parallelServerBuildTraces":false,"ppr":false,"authInterrupts":false,"webpackMemoryOptimizations":false,"optimizeServerReact":true,"strictRouteTypes":false,"viewTransition":false,"removeUncaughtErrorAndRejectionListeners":false,"validateRSCRequestHeaders":false,"staleTimes":{"dynamic":0,"static":300},"reactDebugChannel":true,"serverComponentsHmrCache":true,"staticGenerationMaxConcurrency":8,"staticGenerationMinPagesPerWorker":25,"transitionIndicator":false,"gestureTransition":false,"inlineCss":false,"useCache":false,"globalNotFound":false,"browserDebugInfoInTerminal":"warn","lockDistDir":true,"proxyClientMaxBodySize":134217728,"hideLogsAfterAbort":false,"mcpServer":true,"turbopackFileSystemCacheForDev":true,"turbopackFileSystemCacheForBuild":false,"turbopackInferModuleSideEffects":true,"turbopackPluginRuntimeStrategy":"childProcesses","optimizePackageImports":["lucide-react","date-fns","lodash-es","ramda","antd","react-bootstrap","ahooks","@ant-design/icons","@headlessui/react","@headlessui-float/react","@heroicons/react/20/solid","@heroicons/react/24/solid","@heroicons/react/24/outline","@visx/visx","@tremor/react","rxjs","@mui/material","@mui/icons-material","recharts","react-use","effect","@effect/schema","@effect/platform","@effect/platform-node","@effect/platform-browser","@effect/platform-bun","@effect/sql","@effect/sql-mssql","@effect/sql-mysql2","@effect/sql-pg","@effect/sql-sqlite-node","@effect/sql-sqlite-bun","@effect/sql-sqlite-wasm","@effect/sql-sqlite-react-native","@effect/rpc","@effect/rpc-http","@effect/typeclass","@effect/experimental","@effect/opentelemetry","@material-ui/core","@material-ui/icons","@tabler/icons-react","mui-core","react-icons/ai","react-icons/bi","react-icons/bs","react-icons/cg","react-icons/ci","react-icons/di","react-icons/fa","react-icons/fa6","react-icons/fc","react-icons/fi","react-icons/gi","react-icons/go","react-icons/gr","react-icons/hi","react-icons/hi2","react-icons/im","react-icons/io","react-icons/io5","react-icons/lia","react-icons/lib","react-icons/lu","react-icons/md","react-icons/pi","react-icons/ri","react-icons/rx","react-icons/si","react-icons/sl","react-icons/tb","react-icons/tfi","react-icons/ti","react-icons/vsc","react-icons/wi"],"trustHostHeader":false,"isExperimentalCompile":false},"htmlLimitedBots":"[\\w-]+-Google|Google-[\\w-]+|Chrome-Lighthouse|Slurp|DuckDuckBot|baiduspider|yandex|sogou|bitlybot|tumblr|vkShare|quora link preview|redditbot|ia_archiver|Bingbot|BingPreview|applebot|facebookexternalhit|facebookcatalog|Twitterbot|LinkedInBot|Slackbot|Discordbot|WhatsApp|SkypeUriPreview|Yeti|googleweblight","bundlePagesRouterDependencies":false,"configFileName":"next.config.mjs","serverExternalPackages":["better-sqlite3","sql.js","node:sqlite","bun:sqlite","playwright","playwright-core","node-pty"],"turbopack":{"root":"/Users/firda"},"outputFileTracingExcludes":{"*":["./gitbook/**/*","./cli/.build-home/**/*"]},"outputFileTracingIncludes":{"*":["./node_modules/playwright-core/**/*","./node_modules/playwright/**/*","./cli/hooks/**/*","./node_modules/sql.js/**/*","./src/lib/terminal/ptyBridge.py"]},"distDirRoot":".next-cli-build","_originalRewrites":{"beforeFiles":[],"afterFiles":[{"source":"/v1/v1/:path*","destination":"/api/v1/:path*"},{"source":"/v1/v1","destination":"/api/v1"},{"source":"/codex/:path*","destination":"/api/v1/responses"},{"source":"/v1/:path*","destination":"/api/v1/:path*"},{"source":"/v1","destination":"/api/v1"}],"fallback":[]}}
12
+ const nextConfig = {"env":{},"typescript":{"ignoreBuildErrors":false},"typedRoutes":false,"distDir":"./.next-cli-build","cleanDistDir":true,"assetPrefix":"","cacheMaxMemorySize":52428800,"configOrigin":"next.config.mjs","useFileSystemPublicRoutes":true,"generateEtags":true,"pageExtensions":["tsx","ts","jsx","js"],"poweredByHeader":true,"compress":true,"images":{"deviceSizes":[640,750,828,1080,1200,1920,2048,3840],"imageSizes":[32,48,64,96,128,256,384],"path":"/_next/image","loader":"default","loaderFile":"","domains":[],"disableStaticImages":false,"minimumCacheTTL":14400,"formats":["image/webp"],"maximumRedirects":3,"maximumResponseBody":50000000,"dangerouslyAllowLocalIP":false,"dangerouslyAllowSVG":false,"contentSecurityPolicy":"script-src 'none'; frame-src 'none'; sandbox;","contentDispositionType":"attachment","localPatterns":[{"pathname":"**","search":""}],"remotePatterns":[],"qualities":[75],"unoptimized":true,"customCacheHandler":false},"devIndicators":{"position":"bottom-left"},"onDemandEntries":{"maxInactiveAge":60000,"pagesBufferLength":5},"basePath":"","sassOptions":{},"trailingSlash":false,"i18n":null,"productionBrowserSourceMaps":false,"excludeDefaultMomentLocales":true,"reactProductionProfiling":false,"reactStrictMode":null,"reactMaxHeadersLength":6000,"httpAgentOptions":{"keepAlive":true},"logging":{"serverFunctions":true,"browserToTerminal":"warn"},"compiler":{},"expireTime":31536000,"staticPageGenerationTimeout":60,"output":"standalone","modularizeImports":{"@mui/icons-material":{"transform":"@mui/icons-material/{{member}}"},"lodash":{"transform":"lodash/{{member}}"}},"outputFileTracingRoot":"/Users/firda","cacheComponents":false,"cacheLife":{"default":{"stale":300,"revalidate":900,"expire":4294967294},"seconds":{"stale":30,"revalidate":1,"expire":60},"minutes":{"stale":300,"revalidate":60,"expire":3600},"hours":{"stale":300,"revalidate":3600,"expire":86400},"days":{"stale":300,"revalidate":86400,"expire":604800},"weeks":{"stale":300,"revalidate":604800,"expire":2592000},"max":{"stale":300,"revalidate":2592000,"expire":31536000}},"cacheHandlers":{},"experimental":{"appNewScrollHandler":false,"useSkewCookie":false,"cssChunking":true,"multiZoneDraftMode":false,"appNavFailHandling":false,"prerenderEarlyExit":true,"serverMinification":true,"linkNoTouchStart":false,"caseSensitiveRoutes":false,"cachedNavigations":false,"partialFallbacks":false,"dynamicOnHover":false,"varyParams":false,"prefetchInlining":false,"preloadEntriesOnStart":true,"clientRouterFilter":true,"clientRouterFilterRedirects":false,"fetchCacheKeyPrefix":"","proxyPrefetch":"flexible","optimisticClientCache":true,"manualClientBasePath":false,"cpus":9,"memoryBasedWorkersCount":false,"imgOptConcurrency":null,"imgOptTimeoutInSeconds":7,"imgOptMaxInputPixels":268402689,"imgOptSequentialRead":null,"imgOptSkipMetadata":null,"isrFlushToDisk":true,"workerThreads":false,"optimizeCss":false,"nextScriptWorkers":false,"scrollRestoration":false,"externalDir":false,"disableOptimizedLoading":false,"gzipSize":true,"craCompat":false,"esmExternals":true,"fullySpecified":false,"swcTraceProfiling":false,"forceSwcTransforms":false,"largePageDataBytes":128000,"typedEnv":false,"parallelServerCompiles":false,"parallelServerBuildTraces":false,"ppr":false,"authInterrupts":false,"webpackMemoryOptimizations":false,"optimizeServerReact":true,"strictRouteTypes":false,"viewTransition":false,"removeUncaughtErrorAndRejectionListeners":false,"validateRSCRequestHeaders":false,"staleTimes":{"dynamic":0,"static":300},"reactDebugChannel":true,"serverComponentsHmrCache":true,"staticGenerationMaxConcurrency":8,"staticGenerationMinPagesPerWorker":25,"transitionIndicator":false,"gestureTransition":false,"inlineCss":false,"useCache":false,"globalNotFound":false,"browserDebugInfoInTerminal":"warn","lockDistDir":true,"proxyClientMaxBodySize":134217728,"hideLogsAfterAbort":false,"mcpServer":true,"turbopackFileSystemCacheForDev":true,"turbopackFileSystemCacheForBuild":false,"turbopackInferModuleSideEffects":true,"turbopackPluginRuntimeStrategy":"childProcesses","optimizePackageImports":["lucide-react","date-fns","lodash-es","ramda","antd","react-bootstrap","ahooks","@ant-design/icons","@headlessui/react","@headlessui-float/react","@heroicons/react/20/solid","@heroicons/react/24/solid","@heroicons/react/24/outline","@visx/visx","@tremor/react","rxjs","@mui/material","@mui/icons-material","recharts","react-use","effect","@effect/schema","@effect/platform","@effect/platform-node","@effect/platform-browser","@effect/platform-bun","@effect/sql","@effect/sql-mssql","@effect/sql-mysql2","@effect/sql-pg","@effect/sql-sqlite-node","@effect/sql-sqlite-bun","@effect/sql-sqlite-wasm","@effect/sql-sqlite-react-native","@effect/rpc","@effect/rpc-http","@effect/typeclass","@effect/experimental","@effect/opentelemetry","@material-ui/core","@material-ui/icons","@tabler/icons-react","mui-core","react-icons/ai","react-icons/bi","react-icons/bs","react-icons/cg","react-icons/ci","react-icons/di","react-icons/fa","react-icons/fa6","react-icons/fc","react-icons/fi","react-icons/gi","react-icons/go","react-icons/gr","react-icons/hi","react-icons/hi2","react-icons/im","react-icons/io","react-icons/io5","react-icons/lia","react-icons/lib","react-icons/lu","react-icons/md","react-icons/pi","react-icons/ri","react-icons/rx","react-icons/si","react-icons/sl","react-icons/tb","react-icons/tfi","react-icons/ti","react-icons/vsc","react-icons/wi"],"trustHostHeader":false,"isExperimentalCompile":false},"htmlLimitedBots":"[\\w-]+-Google|Google-[\\w-]+|Chrome-Lighthouse|Slurp|DuckDuckBot|baiduspider|yandex|sogou|bitlybot|tumblr|vkShare|quora link preview|redditbot|ia_archiver|Bingbot|BingPreview|applebot|facebookexternalhit|facebookcatalog|Twitterbot|LinkedInBot|Slackbot|Discordbot|WhatsApp|SkypeUriPreview|Yeti|googleweblight","bundlePagesRouterDependencies":false,"configFileName":"next.config.mjs","serverExternalPackages":["better-sqlite3","sql.js","node:sqlite","bun:sqlite","playwright-core","cloakbrowser","mmdb-lib","node-pty"],"turbopack":{"root":"/Users/firda"},"outputFileTracingExcludes":{"*":["./gitbook/**/*","./cli/.build-home/**/*"]},"outputFileTracingIncludes":{"*":["./node_modules/playwright-core/**/*","./node_modules/cloakbrowser/**/*","./node_modules/mmdb-lib/**/*","./cli/hooks/**/*","./node_modules/sql.js/**/*","./src/lib/terminal/ptyBridge.py"]},"distDirRoot":".next-cli-build","_originalRewrites":{"beforeFiles":[],"afterFiles":[{"source":"/v1/v1/:path*","destination":"/api/v1/:path*"},{"source":"/v1/v1","destination":"/api/v1"},{"source":"/codex/:path*","destination":"/api/v1/responses"},{"source":"/v1/:path*","destination":"/api/v1/:path*"},{"source":"/v1","destination":"/api/v1"}],"fallback":[]}}
13
13
 
14
14
  process.env.__NEXT_PRIVATE_STANDALONE_CONFIG = JSON.stringify(nextConfig)
15
15
 
@@ -1,6 +1,6 @@
1
- // Lazy-install helper for cloakbrowser (stealth Chromium that can pass Turnstile).
2
- // Same shape as camoufoxRuntime / playwrightRuntime — optional package, install on demand.
3
- // Also installs mmdb-lib (required by cloakbrowser when geoip: true for proxy timezone match).
1
+ // Lazy-install helper for cloakbrowser (sole automation browser engine).
2
+ // Installs into ~/.zevai/runtime on demand: cloakbrowser + mmdb-lib + playwright-core peer.
3
+ // (playwright-core = drive API only; no stock Chromium browser download.)
4
4
  const { createRequire } = require("module");
5
5
  const fs = require("fs");
6
6
  const path = require("path");
@@ -17,6 +17,9 @@ const CLOAKBROWSER_PACKAGE = "cloakbrowser";
17
17
  const CLOAKBROWSER_VERSION = "^0.5.2";
18
18
  const MMDB_PACKAGE = "mmdb-lib";
19
19
  const MMDB_VERSION = "^3.0.2";
20
+ // Peer of cloakbrowser — drive API only (no stock Chromium browser download).
21
+ const PLAYWRIGHT_CORE_PACKAGE = "playwright-core";
22
+ const PLAYWRIGHT_CORE_VERSION = "^1.54.2";
20
23
 
21
24
  const nodeRequire =
22
25
  typeof __non_webpack_require__ === "function" ? __non_webpack_require__ : require;
@@ -75,11 +78,12 @@ function loadCloakbrowserModule() {
75
78
  }
76
79
 
77
80
  /**
78
- * Ensure cloakbrowser + mmdb-lib are available under ~/.zevai/runtime.
81
+ * Ensure cloakbrowser + mmdb-lib + playwright-core under ~/.zevai/runtime.
79
82
  * mmdb-lib is required when launching with geoip: true (proxy timezone/locale).
83
+ * playwright-core is the drive peer (no stock Chromium binary download).
80
84
  */
81
85
  function ensureCloakbrowserRuntime({ silent = false } = {}) {
82
- if (cachedReady?.ok && cachedReady.module && tryRequireMmdb()) {
86
+ if (cachedReady?.ok && cachedReady.module && tryRequireMmdb() && hasPackage(PLAYWRIGHT_CORE_PACKAGE)) {
83
87
  return cachedReady;
84
88
  }
85
89
 
@@ -103,11 +107,13 @@ function ensureCloakbrowserRuntime({ silent = false } = {}) {
103
107
  let mod = tryRequireCloakbrowser();
104
108
  const needCloak = !mod?.launch;
105
109
  const needMmdb = !tryRequireMmdb() && !hasPackage(MMDB_PACKAGE);
110
+ const needPwCore = !hasPackage(PLAYWRIGHT_CORE_PACKAGE);
106
111
 
107
- if (needCloak || needMmdb) {
112
+ if (needCloak || needMmdb || needPwCore) {
108
113
  const pkgs = [];
109
114
  if (needCloak) pkgs.push(`${CLOAKBROWSER_PACKAGE}@${CLOAKBROWSER_VERSION}`);
110
115
  if (needMmdb) pkgs.push(`${MMDB_PACKAGE}@${MMDB_VERSION}`);
116
+ if (needPwCore) pkgs.push(`${PLAYWRIGHT_CORE_PACKAGE}@${PLAYWRIGHT_CORE_VERSION}`);
111
117
 
112
118
  if (!silent) {
113
119
  console.log(`[cloakbrowser] Installing ${pkgs.join(", ")} into runtime…`);
@@ -132,7 +138,7 @@ function ensureCloakbrowserRuntime({ silent = false } = {}) {
132
138
  mod = tryRequireCloakbrowser();
133
139
  if (!mod?.launch) {
134
140
  const err = new Error(
135
- `cloakbrowser installed but launch() is missing. Reinstall: cd "${getRuntimeDir()}" && npm install ${CLOAKBROWSER_PACKAGE}@${CLOAKBROWSER_VERSION} ${MMDB_PACKAGE}@${MMDB_VERSION}`
141
+ `cloakbrowser installed but launch() is missing. Reinstall: cd "${getRuntimeDir()}" && npm install ${CLOAKBROWSER_PACKAGE}@${CLOAKBROWSER_VERSION} ${MMDB_PACKAGE}@${MMDB_VERSION} ${PLAYWRIGHT_CORE_PACKAGE}@${PLAYWRIGHT_CORE_VERSION}`
136
142
  );
137
143
  err.code = "CLOAKBROWSER_API_MISMATCH";
138
144
  return { ok: false, error: err };
@@ -157,4 +163,6 @@ module.exports = {
157
163
  CLOAKBROWSER_VERSION,
158
164
  MMDB_PACKAGE,
159
165
  MMDB_VERSION,
166
+ PLAYWRIGHT_CORE_PACKAGE,
167
+ PLAYWRIGHT_CORE_VERSION,
160
168
  };
@@ -25,7 +25,7 @@ process.env.NPM_CONFIG_LOGLEVEL = process.env.NPM_CONFIG_LOGLEVEL || "error";
25
25
 
26
26
  const { ensureSqliteRuntime, runNpmInstall, getRuntimeDir } = require("./sqliteRuntime");
27
27
  const { ensureTrayRuntime } = require("./trayRuntime");
28
- const { ensurePlaywrightRuntime } = require("./playwrightRuntime");
28
+ const { ensureCloakbrowserRuntime } = require("./cloakbrowserRuntime");
29
29
 
30
30
  const MINIMAL = process.env.ZEVAI_MINIMAL_POSTINSTALL === "1"
31
31
  || process.env.ZEVAI_MINIMAL_POSTINSTALL === "true";
@@ -38,20 +38,21 @@ function warn(msg) {
38
38
  console.warn(`[zevai] ${msg}`);
39
39
  }
40
40
 
41
- function linkPlaywrightToStandalone() {
41
+ function linkCloakPeersToStandalone() {
42
42
  try {
43
43
  const { getRuntimeNodeModules } = require("./sqliteRuntime");
44
44
  const runtimeNm = getRuntimeNodeModules();
45
45
  const standaloneNm = path.join(__dirname, "..", "app", "node_modules");
46
46
  if (!fs.existsSync(path.join(standaloneNm, "next"))) return;
47
- for (const pkg of ["playwright", "playwright-core"]) {
47
+ // cloakbrowser peer + package itself (no stock Chromium browser download)
48
+ for (const pkg of ["playwright-core", "cloakbrowser", "mmdb-lib"]) {
48
49
  const src = path.join(runtimeNm, pkg);
49
50
  const dest = path.join(standaloneNm, pkg);
50
51
  if (!fs.existsSync(path.join(src, "package.json"))) continue;
51
52
  if (fs.existsSync(dest)) fs.rmSync(dest, { recursive: true, force: true });
52
53
  fs.cpSync(src, dest, { recursive: true });
53
54
  }
54
- log("Playwright linked into app bundle");
55
+ log("CloakBrowser runtime linked into app bundle");
55
56
  } catch {
56
57
  // Non-fatal
57
58
  }
@@ -104,17 +105,17 @@ if (MINIMAL) {
104
105
  process.exit(0);
105
106
  }
106
107
 
107
- // 3) Playwright + Chromium (default bulk engine)
108
+ // 3) CloakBrowser (sole bulk-import engine — patched Chromium + playwright-core peer)
108
109
  try {
109
- const pw = ensurePlaywrightRuntime({ silent: true });
110
- if (pw.ok) {
111
- log("✓ Playwright + Chromium ready (bulk import default engine)");
112
- linkPlaywrightToStandalone();
110
+ const cloak = ensureCloakbrowserRuntime({ silent: true });
111
+ if (cloak.ok) {
112
+ log("✓ CloakBrowser ready (sole automation browser engine)");
113
+ linkCloakPeersToStandalone();
113
114
  } else {
114
- warn(`Playwright skipped: ${pw.error?.message || pw.reason || "unknown"}`);
115
+ warn(`CloakBrowser skipped: ${cloak.error?.message || cloak.reason || "unknown"}`);
115
116
  }
116
117
  } catch (e) {
117
- warn(`Playwright skipped: ${e.message}`);
118
+ warn(`CloakBrowser skipped: ${e.message}`);
118
119
  }
119
120
 
120
121
  // 4) node-pty (nice terminal; not required)
package/cli/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zevairouter-cli",
3
- "version": "1.0.134",
3
+ "version": "1.0.136",
4
4
  "description": "ZevaiRouter CLI - Start and manage ZevaiRouter server",
5
5
  "bin": {
6
6
  "zevai": "./cli.js"
package/next.config.mjs CHANGED
@@ -13,7 +13,7 @@ const proxyClientMaxBodySize = process.env.ZEVAI_PROXY_CLIENT_MAX_BODY_SIZE || "
13
13
  const nextConfig = {
14
14
  distDir: process.env.NEXT_DIST_DIR || ".next",
15
15
  output: "standalone",
16
- serverExternalPackages: ["better-sqlite3", "sql.js", "node:sqlite", "bun:sqlite", "playwright", "playwright-core", "node-pty"],
16
+ serverExternalPackages: ["better-sqlite3", "sql.js", "node:sqlite", "bun:sqlite", "playwright-core", "cloakbrowser", "mmdb-lib", "node-pty"],
17
17
  turbopack: {
18
18
  root: tracingRoot
19
19
  },
@@ -27,16 +27,15 @@ const nextConfig = {
27
27
  "*": ["./gitbook/**/*", "./cli/.build-home/**/*"]
28
28
  },
29
29
  outputFileTracingIncludes: {
30
- // Playwright loads browsers.json + its browser registry through dynamic paths the
31
- // Next file tracer can't follow, so force-include the full packages in the standalone
32
- // build (otherwise: "Cannot find module .../playwright-core/browsers.json").
30
+ // CloakBrowser uses playwright-core as drive peer (no stock Chromium / full playwright).
31
+ // Force-include peers the tracer can't follow.
33
32
  "*": [
34
33
  "./node_modules/playwright-core/**/*",
35
- "./node_modules/playwright/**/*",
34
+ "./node_modules/cloakbrowser/**/*",
35
+ "./node_modules/mmdb-lib/**/*",
36
36
  // bulkImportBrowserEngine.js loads these runtime helpers via a dynamic
37
37
  // require(`../../../../cli/hooks/${name}`) the file tracer can't follow, so the
38
- // standalone build omitted cli/hooks entirely and bulk import ran a stale
39
- // "playwright installed but cannot be required" path. Force-include them.
38
+ // standalone build omitted cli/hooks entirely. Force-include them.
40
39
  "./cli/hooks/**/*",
41
40
  // sql.js loads its wasm binary (sql-wasm.wasm) through a runtime path the
42
41
  // tracer can't follow, so the standalone build dropped it and the sql.js
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zevairouter",
3
- "version": "1.0.134",
3
+ "version": "1.0.136",
4
4
  "description": "Self-hosted AI router: many providers, one OpenAI-compatible /v1 endpoint and dashboard",
5
5
  "bin": {
6
6
  "zevai": "./cli/cli.js"
@@ -22,12 +22,9 @@ function ensureLinkedDir(source, destination) {
22
22
  ensureLinkedDir(path.join(projectRoot, ".next", "static"), path.join(standaloneRoot, ".next", "static"));
23
23
  ensureLinkedDir(path.join(projectRoot, "public"), path.join(standaloneRoot, "public"));
24
24
 
25
- // Playwright loads browsers.json + its browser registry through dynamic paths that
26
- // Next's file tracer can't follow, so the packages can be omitted from the standalone
27
- // bundle (error: "Cannot find module .../playwright-core/browsers.json"). Link the
28
- // fully-installed packages into the standalone node_modules so browser automation
29
- // works the same as it does under `npm run dev`.
30
- for (const pkg of ["playwright", "playwright-core"]) {
25
+ // CloakBrowser peers (playwright-core drive API + cloakbrowser package). Tracer can
26
+ // omit dynamic paths — link them into standalone node_modules for local `start`.
27
+ for (const pkg of ["playwright-core", "cloakbrowser", "mmdb-lib"]) {
31
28
  ensureLinkedDir(
32
29
  path.join(projectRoot, "node_modules", pkg),
33
30
  path.join(standaloneRoot, "node_modules", pkg)
@@ -584,7 +584,7 @@ function CloudflareAiAutomationPanel({ onRefresh }) {
584
584
  Google login to Cloudflare dashboard → create Workers AI API token → save as{" "}
585
585
  <code className="text-[11px]">cloudflare-ai</code> (accountId + token). Paste{" "}
586
586
  <code className="text-[11px]">email:password</code> or <code className="text-[11px]">email|password</code>.
587
- Uses headed <strong>CloakBrowser</strong> (Turnstile) + residential proxy recommended.
587
+ Uses headed <strong>CloakBrowser</strong> (sole automation engine) + residential proxy recommended.
588
588
  </span>
589
589
  </button>
590
590
  </div>
@@ -34,8 +34,7 @@ export async function POST(request) {
34
34
  const job = await manager.startJob({
35
35
  accounts,
36
36
  concurrency: body?.concurrency,
37
- // Cloudflare Turnstile needs CloakBrowser by default (plain Chromium fails).
38
- engine: body?.engine || process.env.ZEVAI_CLOUDFLARE_ENGINE || "cloakbrowser",
37
+ engine: body?.engine || "cloakbrowser",
39
38
  proxyPoolMode: body?.proxyPoolMode,
40
39
  proxyPoolId: body?.proxyPoolId,
41
40
  });
@@ -105,8 +105,10 @@ async function defaultBrowserLauncher(job) {
105
105
  const { launchBulkImportBrowser } = await import("./bulkImportBrowserEngine.js");
106
106
  const envHeadless =
107
107
  process.env.ZEVAI_ANTIGRAVITY_HEADLESS ?? process.env.ZEVAI_KIRO_HEADLESS;
108
+ // CloakBrowser-only: headed by default.
108
109
  const headless = envHeadless === "1" || envHeadless === "true";
109
110
  return launchBulkImportBrowser({
111
+ engine: job?.engine || "cloakbrowser",
110
112
  headless,
111
113
  windowSize: { width: 1280, height: 900 },
112
114
  });