zevairouter 1.0.67 → 1.0.68

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 (319) hide show
  1. package/CHANGELOG.md +5 -0
  2. package/cli/app/.next-cli-build/BUILD_ID +1 -1
  3. package/cli/app/.next-cli-build/app-path-routes-manifest.json +29 -29
  4. package/cli/app/.next-cli-build/build-manifest.json +2 -2
  5. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/automation/page_client-reference-manifest.js +1 -1
  6. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
  7. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page_client-reference-manifest.js +1 -1
  8. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  9. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  10. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
  11. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/context/page_client-reference-manifest.js +1 -1
  12. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  13. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
  14. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -1
  15. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +1 -1
  16. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +1 -1
  17. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
  18. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  19. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/playground/page_client-reference-manifest.js +1 -1
  20. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  21. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  22. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  23. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  24. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
  25. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page_client-reference-manifest.js +1 -1
  26. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
  27. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/terminal/page_client-reference-manifest.js +1 -1
  28. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page_client-reference-manifest.js +1 -1
  29. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  30. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  31. package/cli/app/.next-cli-build/server/app/_global-error/page_client-reference-manifest.js +1 -1
  32. package/cli/app/.next-cli-build/server/app/_global-error.html +1 -1
  33. package/cli/app/.next-cli-build/server/app/_global-error.rsc +1 -1
  34. package/cli/app/.next-cli-build/server/app/_global-error.segments/_full.segment.rsc +1 -1
  35. package/cli/app/.next-cli-build/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  36. package/cli/app/.next-cli-build/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  37. package/cli/app/.next-cli-build/server/app/_global-error.segments/_head.segment.rsc +1 -1
  38. package/cli/app/.next-cli-build/server/app/_global-error.segments/_index.segment.rsc +1 -1
  39. package/cli/app/.next-cli-build/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  40. package/cli/app/.next-cli-build/server/app/_not-found/page_client-reference-manifest.js +1 -1
  41. package/cli/app/.next-cli-build/server/app/_not-found.html +1 -1
  42. package/cli/app/.next-cli-build/server/app/_not-found.rsc +3 -3
  43. package/cli/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +3 -3
  44. package/cli/app/.next-cli-build/server/app/_not-found.segments/_head.segment.rsc +1 -1
  45. package/cli/app/.next-cli-build/server/app/_not-found.segments/_index.segment.rsc +3 -3
  46. package/cli/app/.next-cli-build/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  47. package/cli/app/.next-cli-build/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  48. package/cli/app/.next-cli-build/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  49. package/cli/app/.next-cli-build/server/app/api/models/route.js +1 -1
  50. package/cli/app/.next-cli-build/server/app/api/models/test/route.js +1 -1
  51. package/cli/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js +1 -1
  52. package/cli/app/.next-cli-build/server/app/api/providers/route.js +1 -1
  53. package/cli/app/.next-cli-build/server/app/api/providers/validate/route.js +1 -1
  54. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/input/route.js.nft.json +1 -1
  55. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/resize/route.js.nft.json +1 -1
  56. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/route.js.nft.json +1 -1
  57. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/stream/route.js.nft.json +1 -1
  58. package/cli/app/.next-cli-build/server/app/api/terminal/session/route.js.nft.json +1 -1
  59. package/cli/app/.next-cli-build/server/app/api/translator/console-logs/route.js +1 -1
  60. package/cli/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js +1 -1
  61. package/cli/app/.next-cli-build/server/app/api/version/route.js +1 -1
  62. package/cli/app/.next-cli-build/server/app/api/version/shutdown/route.js +1 -1
  63. package/cli/app/.next-cli-build/server/app/api/version/update/route.js +1 -1
  64. package/cli/app/.next-cli-build/server/app/callback/page_client-reference-manifest.js +1 -1
  65. package/cli/app/.next-cli-build/server/app/callback.html +1 -1
  66. package/cli/app/.next-cli-build/server/app/callback.rsc +3 -3
  67. package/cli/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +3 -3
  68. package/cli/app/.next-cli-build/server/app/callback.segments/_head.segment.rsc +1 -1
  69. package/cli/app/.next-cli-build/server/app/callback.segments/_index.segment.rsc +3 -3
  70. package/cli/app/.next-cli-build/server/app/callback.segments/_tree.segment.rsc +1 -1
  71. package/cli/app/.next-cli-build/server/app/callback.segments/callback/__PAGE__.segment.rsc +1 -1
  72. package/cli/app/.next-cli-build/server/app/callback.segments/callback.segment.rsc +1 -1
  73. package/cli/app/.next-cli-build/server/app/dashboard/automation.html +1 -1
  74. package/cli/app/.next-cli-build/server/app/dashboard/automation.rsc +5 -5
  75. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk/dashboard/automation/__PAGE__.segment.rsc +2 -2
  76. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk/dashboard/automation.segment.rsc +1 -1
  77. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  78. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  79. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_full.segment.rsc +5 -5
  80. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_head.segment.rsc +1 -1
  81. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_index.segment.rsc +3 -3
  82. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_tree.segment.rsc +1 -1
  83. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.html +1 -1
  84. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.rsc +5 -5
  85. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +2 -2
  86. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat.segment.rsc +1 -1
  87. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  88. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  89. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_full.segment.rsc +5 -5
  90. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_head.segment.rsc +1 -1
  91. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_index.segment.rsc +3 -3
  92. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +1 -1
  93. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.html +1 -1
  94. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.rsc +5 -5
  95. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +2 -2
  96. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools.segment.rsc +1 -1
  97. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  98. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  99. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_full.segment.rsc +5 -5
  100. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_head.segment.rsc +1 -1
  101. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_index.segment.rsc +3 -3
  102. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +1 -1
  103. package/cli/app/.next-cli-build/server/app/dashboard/combos.html +1 -1
  104. package/cli/app/.next-cli-build/server/app/dashboard/combos.rsc +5 -5
  105. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +2 -2
  106. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos.segment.rsc +1 -1
  107. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  108. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  109. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_full.segment.rsc +5 -5
  110. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_head.segment.rsc +1 -1
  111. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_index.segment.rsc +3 -3
  112. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_tree.segment.rsc +1 -1
  113. package/cli/app/.next-cli-build/server/app/dashboard/context.html +1 -1
  114. package/cli/app/.next-cli-build/server/app/dashboard/context.rsc +5 -5
  115. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/!KGRhc2hib2FyZCk/dashboard/context/__PAGE__.segment.rsc +2 -2
  116. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/!KGRhc2hib2FyZCk/dashboard/context.segment.rsc +1 -1
  117. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  118. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  119. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_full.segment.rsc +5 -5
  120. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_head.segment.rsc +1 -1
  121. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_index.segment.rsc +3 -3
  122. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_tree.segment.rsc +1 -1
  123. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.html +1 -1
  124. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.rsc +5 -5
  125. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +2 -2
  126. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint.segment.rsc +1 -1
  127. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  128. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  129. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_full.segment.rsc +5 -5
  130. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_head.segment.rsc +1 -1
  131. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_index.segment.rsc +3 -3
  132. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_tree.segment.rsc +1 -1
  133. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.html +1 -1
  134. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.rsc +5 -5
  135. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web/__PAGE__.segment.rsc +2 -2
  136. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web.segment.rsc +1 -1
  137. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers.segment.rsc +1 -1
  138. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  139. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  140. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_full.segment.rsc +5 -5
  141. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_head.segment.rsc +1 -1
  142. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_index.segment.rsc +3 -3
  143. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_tree.segment.rsc +1 -1
  144. package/cli/app/.next-cli-build/server/app/dashboard/mitm.html +1 -1
  145. package/cli/app/.next-cli-build/server/app/dashboard/mitm.rsc +5 -5
  146. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +2 -2
  147. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm.segment.rsc +1 -1
  148. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  149. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  150. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_full.segment.rsc +5 -5
  151. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_head.segment.rsc +1 -1
  152. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_index.segment.rsc +3 -3
  153. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_tree.segment.rsc +1 -1
  154. package/cli/app/.next-cli-build/server/app/dashboard/playground.html +1 -1
  155. package/cli/app/.next-cli-build/server/app/dashboard/playground.rsc +5 -5
  156. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk/dashboard/playground/__PAGE__.segment.rsc +2 -2
  157. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk/dashboard/playground.segment.rsc +1 -1
  158. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  159. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  160. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_full.segment.rsc +5 -5
  161. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_head.segment.rsc +1 -1
  162. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_index.segment.rsc +3 -3
  163. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_tree.segment.rsc +1 -1
  164. package/cli/app/.next-cli-build/server/app/dashboard/profile.html +1 -1
  165. package/cli/app/.next-cli-build/server/app/dashboard/profile.rsc +5 -5
  166. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +2 -2
  167. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile.segment.rsc +1 -1
  168. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  169. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  170. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_full.segment.rsc +5 -5
  171. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_head.segment.rsc +1 -1
  172. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_index.segment.rsc +3 -3
  173. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_tree.segment.rsc +1 -1
  174. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.html +1 -1
  175. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.rsc +5 -5
  176. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +2 -2
  177. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new.segment.rsc +1 -1
  178. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  179. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  180. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  181. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_full.segment.rsc +5 -5
  182. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_head.segment.rsc +1 -1
  183. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_index.segment.rsc +3 -3
  184. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_tree.segment.rsc +1 -1
  185. package/cli/app/.next-cli-build/server/app/dashboard/providers.html +1 -1
  186. package/cli/app/.next-cli-build/server/app/dashboard/providers.rsc +5 -5
  187. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +2 -2
  188. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  189. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  190. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  191. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_full.segment.rsc +5 -5
  192. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_head.segment.rsc +1 -1
  193. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_index.segment.rsc +3 -3
  194. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_tree.segment.rsc +1 -1
  195. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.html +1 -1
  196. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.rsc +5 -5
  197. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +2 -2
  198. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools.segment.rsc +1 -1
  199. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  200. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  201. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +5 -5
  202. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_head.segment.rsc +1 -1
  203. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_index.segment.rsc +3 -3
  204. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +1 -1
  205. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.html +1 -1
  206. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.rsc +5 -5
  207. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard/pxpipe/__PAGE__.segment.rsc +2 -2
  208. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard/pxpipe.segment.rsc +1 -1
  209. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  210. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  211. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_full.segment.rsc +5 -5
  212. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_head.segment.rsc +1 -1
  213. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_index.segment.rsc +3 -3
  214. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_tree.segment.rsc +1 -1
  215. package/cli/app/.next-cli-build/server/app/dashboard/quota.html +2 -2
  216. package/cli/app/.next-cli-build/server/app/dashboard/quota.rsc +6 -6
  217. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +3 -3
  218. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota.segment.rsc +1 -1
  219. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  220. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  221. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_full.segment.rsc +6 -6
  222. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_head.segment.rsc +1 -1
  223. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_index.segment.rsc +3 -3
  224. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_tree.segment.rsc +1 -1
  225. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  226. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.html +1 -1
  227. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.rsc +3 -3
  228. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +3 -3
  229. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +1 -1
  230. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +3 -3
  231. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +1 -1
  232. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +1 -1
  233. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing.segment.rsc +1 -1
  234. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings.segment.rsc +1 -1
  235. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard.segment.rsc +1 -1
  236. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.html +1 -1
  237. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.rsc +5 -5
  238. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver/__PAGE__.segment.rsc +2 -2
  239. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver.segment.rsc +1 -1
  240. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  241. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  242. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_full.segment.rsc +5 -5
  243. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_head.segment.rsc +1 -1
  244. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_index.segment.rsc +3 -3
  245. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_tree.segment.rsc +1 -1
  246. package/cli/app/.next-cli-build/server/app/dashboard/translator.html +1 -1
  247. package/cli/app/.next-cli-build/server/app/dashboard/translator.rsc +5 -5
  248. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +2 -2
  249. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator.segment.rsc +1 -1
  250. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  251. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  252. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_full.segment.rsc +5 -5
  253. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_head.segment.rsc +1 -1
  254. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_index.segment.rsc +3 -3
  255. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_tree.segment.rsc +1 -1
  256. package/cli/app/.next-cli-build/server/app/dashboard/usage.html +1 -1
  257. package/cli/app/.next-cli-build/server/app/dashboard/usage.rsc +5 -5
  258. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +2 -2
  259. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage.segment.rsc +1 -1
  260. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  261. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  262. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_full.segment.rsc +5 -5
  263. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_head.segment.rsc +1 -1
  264. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_index.segment.rsc +3 -3
  265. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_tree.segment.rsc +1 -1
  266. package/cli/app/.next-cli-build/server/app/dashboard.html +1 -1
  267. package/cli/app/.next-cli-build/server/app/dashboard.rsc +5 -5
  268. package/cli/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +2 -2
  269. package/cli/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  270. package/cli/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  271. package/cli/app/.next-cli-build/server/app/dashboard.segments/_full.segment.rsc +5 -5
  272. package/cli/app/.next-cli-build/server/app/dashboard.segments/_head.segment.rsc +1 -1
  273. package/cli/app/.next-cli-build/server/app/dashboard.segments/_index.segment.rsc +3 -3
  274. package/cli/app/.next-cli-build/server/app/dashboard.segments/_tree.segment.rsc +1 -1
  275. package/cli/app/.next-cli-build/server/app/index.html +1 -1
  276. package/cli/app/.next-cli-build/server/app/index.rsc +3 -3
  277. package/cli/app/.next-cli-build/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  278. package/cli/app/.next-cli-build/server/app/index.segments/_full.segment.rsc +3 -3
  279. package/cli/app/.next-cli-build/server/app/index.segments/_head.segment.rsc +1 -1
  280. package/cli/app/.next-cli-build/server/app/index.segments/_index.segment.rsc +3 -3
  281. package/cli/app/.next-cli-build/server/app/index.segments/_tree.segment.rsc +1 -1
  282. package/cli/app/.next-cli-build/server/app/landing/page_client-reference-manifest.js +1 -1
  283. package/cli/app/.next-cli-build/server/app/landing.html +1 -1
  284. package/cli/app/.next-cli-build/server/app/landing.rsc +3 -3
  285. package/cli/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +3 -3
  286. package/cli/app/.next-cli-build/server/app/landing.segments/_head.segment.rsc +1 -1
  287. package/cli/app/.next-cli-build/server/app/landing.segments/_index.segment.rsc +3 -3
  288. package/cli/app/.next-cli-build/server/app/landing.segments/_tree.segment.rsc +1 -1
  289. package/cli/app/.next-cli-build/server/app/landing.segments/landing/__PAGE__.segment.rsc +1 -1
  290. package/cli/app/.next-cli-build/server/app/landing.segments/landing.segment.rsc +1 -1
  291. package/cli/app/.next-cli-build/server/app/login/page_client-reference-manifest.js +1 -1
  292. package/cli/app/.next-cli-build/server/app/login.html +1 -1
  293. package/cli/app/.next-cli-build/server/app/login.rsc +4 -4
  294. package/cli/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +4 -4
  295. package/cli/app/.next-cli-build/server/app/login.segments/_head.segment.rsc +1 -1
  296. package/cli/app/.next-cli-build/server/app/login.segments/_index.segment.rsc +3 -3
  297. package/cli/app/.next-cli-build/server/app/login.segments/_tree.segment.rsc +1 -1
  298. package/cli/app/.next-cli-build/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
  299. package/cli/app/.next-cli-build/server/app/login.segments/login.segment.rsc +1 -1
  300. package/cli/app/.next-cli-build/server/app/page_client-reference-manifest.js +1 -1
  301. package/cli/app/.next-cli-build/server/app-paths-manifest.json +29 -29
  302. package/cli/app/.next-cli-build/server/chunks/3407.js +1 -1
  303. package/cli/app/.next-cli-build/server/chunks/4746.js +1 -1
  304. package/cli/app/.next-cli-build/server/chunks/5949.js +3 -3
  305. package/cli/app/.next-cli-build/server/chunks/6896.js +1 -1
  306. package/cli/app/.next-cli-build/server/chunks/7276.js +1 -1
  307. package/cli/app/.next-cli-build/server/middleware-build-manifest.js +1 -1
  308. package/cli/app/.next-cli-build/server/pages/404.html +1 -1
  309. package/cli/app/.next-cli-build/server/pages/500.html +1 -1
  310. package/cli/app/.next-cli-build/static/chunks/{3702-60b8407e95e0ae8f.js → 3702-9e52be780ed358e2.js} +1 -1
  311. package/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/src/lib/terminal/ptyBridge.py +163 -0
  312. package/cli/app/cli/hooks/playwrightRuntime.js +84 -17
  313. package/cli/app/package.json +1 -1
  314. package/cli/hooks/playwrightRuntime.js +84 -17
  315. package/cli/package.json +1 -1
  316. package/package.json +1 -1
  317. package/src/lib/oauth/services/bulkImportBrowserEngine.js +38 -22
  318. /package/cli/app/.next-cli-build/static/{iVBk105jGtR_XdrL-iFq4 → uAzRelvWR5AOBsQdc-bGC}/_buildManifest.js +0 -0
  319. /package/cli/app/.next-cli-build/static/{iVBk105jGtR_XdrL-iFq4 → uAzRelvWR5AOBsQdc-bGC}/_ssgManifest.js +0 -0
@@ -1,4 +1,4 @@
1
- exports.id=5949,exports.ids=[5949],exports.modules={24344:(a,b,c)=>{"use strict";let{execSync:d,spawnSync:e}=c(79646),f=c(29021),g=c(21820),h=c(33873),i="zevai";function j(){return h.join(process.env.DATA_DIR?process.env.DATA_DIR:"win32"===process.platform?h.join(process.env.APPDATA||g.homedir(),i):h.join(g.homedir(),`.${i}`),"runtime")}function k(){return h.join(j(),"node_modules")}function l(){let a=j();f.existsSync(a)||f.mkdirSync(a,{recursive:!0});let b=h.join(a,"package.json");return f.existsSync(b)||f.writeFileSync(b,JSON.stringify({name:"zevai-runtime",version:"1.0.0",private:!0,description:"User-writable runtime deps for ZevaiRouter (better-sqlite3 native binary)"},null,2)),a}function m(a){return f.existsSync(h.join(k(),a,"package.json"))}function n(){let a=h.join(k(),"better-sqlite3","build","Release","better_sqlite3.node");if(!f.existsSync(a))return!1;try{let b=f.openSync(a,"r"),c=Buffer.alloc(4);f.readSync(b,c,0,4,0),f.closeSync(b);let d=c.toString("hex");if("linux"===process.platform)return d.startsWith("7f454c46");if("darwin"===process.platform)return d.startsWith("cffaedfe")||d.startsWith("cefaedfe");if("win32"===process.platform)return d.startsWith("4d5a");return!0}catch{return!1}}function o(a=""){let b=String(a);if(/ENOTFOUND|ETIMEDOUT|EAI_AGAIN|network|getaddrinfo/i.test(b))return"No internet connection or registry unreachable";if(/EACCES|EPERM|permission denied/i.test(b))return"Permission denied (check folder permissions)";if(/ENOSPC|no space/i.test(b))return"Not enough disk space";if(/node-gyp|gyp ERR|python|MSBuild|Visual Studio|Xcode/i.test(b))return"Missing build tools (Xcode CLT / Python / VS Build Tools)";if(/ETARGET|version.*not found/i.test(b))return"Package version not found on registry";let c=b.match(/npm ERR! (.+)/);if(c)return c[1].slice(0,200);let d=b.trim().split(/\r?\n/).filter(Boolean).pop();return d?d.slice(0,200):"Unknown error"}function p({cwd:a,pkgs:b,extraArgs:c=[],timeout:d=18e4}){let g=["install",...b,"--save","--no-audit","--no-fund","--prefer-online","--loglevel=error",...c.filter(a=>"--no-save"!==a)],i="win32"===process.platform?"npm.cmd":"npm",j=g,k="win32"===process.platform;try{let a=h.join(h.dirname(process.execPath),"..","lib","node_modules","npm","bin","npm-cli.js");f.existsSync(a)&&(i=process.execPath,j=[a,...g],k=!1)}catch{}let l=e(i,j,{cwd:a,stdio:["ignore","pipe","pipe"],timeout:d,shell:k,encoding:"utf8"});return{ok:0===l.status,code:l.status,stderr:l.stderr||"",stdout:l.stdout||""}}a.exports={ensureSqliteRuntime:function({silent:a=!1}={}){return(l(),m("better-sqlite3")&&n())?(a||console.log("✅ SQLite engine ready"),{betterSqlite:!0}):{betterSqlite:function(a,b={}){let c=l(),d=b.optional?["--no-save"]:[];b.silent||console.log("⏳ Installing SQLite engine (first run)...");let e=p({cwd:c,pkgs:a,extraArgs:d,timeout:b.timeout||18e4});if(!e.ok&&!b.silent){let b=o(e.stderr);console.warn("⚠️ SQLite engine install failed — using fallback"),console.warn(` Reason: ${b}`),console.warn(` Retry: cd "${c}" && npm install ${a.join(" ")}`)}return e.ok}(["better-sqlite3@12.6.2"],{optional:!0,silent:a})&&m("better-sqlite3")&&n()}},buildEnvWithRuntime:function(a=process.env){let b=[k(),h.join(__dirname,"..","app","node_modules"),h.join(__dirname,"..","..","node_modules"),a.NODE_PATH||""].filter(Boolean).join(h.delimiter);return{...a,NODE_PATH:b}},getRuntimeDir:j,getRuntimeNodeModules:k,runNpmInstall:p,summarizeNpmError:o}},50982:(a,b,c)=>{var d={"./camoufoxRuntime":72508,"./camoufoxRuntime.js":72508,"./cloakbrowserRuntime":99436,"./cloakbrowserRuntime.js":99436,"./playwrightRuntime":87473,"./playwrightRuntime.js":87473,"./postinstall":77897,"./postinstall.js":77897,"./sqliteRuntime":24344,"./sqliteRuntime.js":24344,"./trayRuntime":52784,"./trayRuntime.js":52784};function e(a){return c(f(a))}function f(a){if(!c.o(d,a)){var b=Error("Cannot find module '"+a+"'");throw b.code="MODULE_NOT_FOUND",b}return d[a]}e.keys=function(){return Object.keys(d)},e.resolve=f,a.exports=e,e.id=50982},51029:a=>{function b(a){var b=Error("Cannot find module '"+a+"'");throw b.code="MODULE_NOT_FOUND",b}b.keys=()=>[],b.resolve=b,b.id=51029,a.exports=b},52784:(a,b,c)=>{"use strict";let{spawnSync:d}=c(79646),e=c(29021),f=c(33873),{getRuntimeDir:g,getRuntimeNodeModules:h,runNpmInstall:i,summarizeNpmError:j}=c(24344),k="systray2",l="systray";function m(){return e.existsSync(f.join(h(),k,"package.json"))}function n({silent:a=!1}={}){if("win32"===process.platform)return;let b="darwin"===process.platform?"tray_darwin_release":"tray_linux_release",c=f.join(h(),k,"traybin",b);if(e.existsSync(c))try{e.chmodSync(c,493)}catch(b){a||console.warn(`[zevai][runtime] chmod tray bin failed: ${b.message}`)}}a.exports={ensureTrayRuntime:function({silent:a=!1}={}){if(!function({silent:a=!1}={}){for(let b of[f.join(h(),l),f.join(__dirname,"..","node_modules",l)])if(e.existsSync(b))try{e.rmSync(b,{recursive:!0,force:!0}),a||console.log(`[zevai][runtime] removed legacy systray: ${b}`)}catch(c){a||console.warn(`[zevai][runtime] failed to remove ${b}: ${c.message}`)}}({silent:a}),"win32"===process.platform)return{systray:!1,skipped:!0};if(m())return n({silent:a}),a||console.log("✅ System tray ready"),{systray:!0};let b=function(a,{silent:b=!1}={}){let c,d,h=(c=g(),e.existsSync(c)||e.mkdirSync(c,{recursive:!0}),d=f.join(c,"package.json"),e.existsSync(d)||e.writeFileSync(d,JSON.stringify({name:"zevai-runtime",version:"1.0.0",private:!0},null,2)),c);b||console.log("⏳ Installing system tray (first run)...");let k=i({cwd:h,pkgs:a,extraArgs:["--no-save"],timeout:12e4});if(!k.ok&&!b){let b=j(k.stderr);console.warn("⚠️ System tray install failed — tray disabled"),console.warn(` Reason: ${b}`),console.warn(` Retry: cd "${h}" && npm install ${a.join(" ")}`)}return k.ok}([`${k}@2.1.4`],{silent:a});return b&&n({silent:a}),{systray:b&&m()}}}},57173:a=>{"use strict";a.exports={}},66561:a=>{"use strict";a.exports={}},72508:(a,b,c)=>{"use strict";let{spawnSync:d}=c(79646),{createRequire:e}=c(8086),f=c(29021),g=c(21820),h=c(33873),{runNpmInstall:i,getRuntimeDir:j,getRuntimeNodeModules:k}=c(24344),l="camoufox-js",m="v2-audio-seed",n="function"==typeof require?require:c(51029);function o(){try{let a=h.join(j(),"noop.js");return e(a)}catch{return null}}let p=null,q=!1;function r(){try{let a=o(),b=h.join(k(),l);if(a&&f.existsSync(h.join(b,"package.json")))return a(b)}catch{}try{return n(l)}catch{}try{let a=h.join(k(),l);if(f.existsSync(h.join(a,"package.json")))return n(a)}catch{}return null}function s(){try{let a=o(),b=h.join(k(),l);if(f.existsSync(h.join(b,"package.json")))return b;if(a)try{return h.dirname(a.resolve(`${l}/package.json`))}catch{}}catch{}try{return h.dirname(n.resolve(`${l}/package.json`))}catch{}return null}function t(){try{let a=s();if(!a)return null;let b=JSON.parse(f.readFileSync(h.join(a,"package.json"),"utf8"));return String(b.version||"").trim()||null}catch{return null}}function u(){let a=g.homedir();return"win32"===process.platform?h.join(a,"AppData","Local","camoufox","camoufox","Cache"):"darwin"===process.platform?h.join(a,"Library","Caches","camoufox"):h.join(a,".cache","camoufox")}function v(){return h.join(u(),".zevai-binary-stamp.json")}function w(){try{let a;return f.existsSync((a=u(),"win32"===process.platform?h.join(a,"camoufox.exe"):"darwin"===process.platform?h.join(a,"Camoufox.app","Contents","MacOS","camoufox"):h.join(a,"camoufox-bin")))}catch{return!1}}function x(){try{let a=h.join(u(),"version.json");if(!f.existsSync(a))return null;let b=JSON.parse(f.readFileSync(a,"utf8"));if(!b?.version)return null;return`${b.version}${b.release?`-${b.release}`:""}`}catch{return null}}function y(){try{let a=v();if(!f.existsSync(a))return null;return JSON.parse(f.readFileSync(a,"utf8"))}catch{return null}}function z({packageVersion:a,binaryVersion:b}={}){try{let c=u();f.mkdirSync(c,{recursive:!0});let d={policy:m,packageVersion:a||t(),binaryVersion:b||x(),platform:process.platform,arch:process.arch,fetchedAt:new Date().toISOString()};return f.writeFileSync(v(),JSON.stringify(d,null,2)),d}catch{return null}}function A({silent:a=!1,force:b=!1}={}){if(!b&&q&&w())return{ok:!0,skipped:"already-checked",binaryVersion:x()};if(!function({force:a=!1}={}){if(a)return!0;if("1"===process.env.ZEVAI_CAMOUFOX_SKIP_FETCH)return!1;if(!w()||!x())return!0;let b=y();if(!b)return!0;let c=t();return!!c&&!!b.packageVersion&&b.packageVersion!==c||b.policy!==m}({force:b}))return y()||z(),q=!0,{ok:!0,skipped:"up-to-date",binaryVersion:x()};let c=function({silent:a=!1,timeout:b=6e5}={}){let c=function(){let a=[],b=["dist","__main__.js"];try{let c=n.resolve(`${l}/package.json`);a.push(h.join(h.dirname(c),...b))}catch{}try{a.push(h.join(k(),l,...b))}catch{}let c=s();for(let d of(c&&a.push(h.join(c,...b)),a))if(d&&f.existsSync(d))return d;return null}();if(!c)return{ok:!1,reason:"camoufox-js cli script not found after install"};a||console.log(w()?"⏳ Checking/updating Camoufox browser binary (keeps fingerprint config compatible)...":"⏳ Downloading Camoufox browser binary (first run, ~150–300MB)...");let e=d(process.execPath,[c,"fetch"],{stdio:a?["ignore","pipe","pipe"]:"inherit",timeout:b,encoding:"utf8",env:{...process.env,PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD:void 0}});if(0===e.status)return z({packageVersion:t(),binaryVersion:x()}),a||console.log("✅ Camoufox browser ready"),{ok:!0,binaryVersion:x()};let g=String(e.stderr||""),i="unknown error";return/ENOTFOUND|ETIMEDOUT|getaddrinfo/i.test(g)?i="no internet connection":/EACCES|EPERM/i.test(g)?i="permission denied":/ENOSPC/i.test(g)?i="not enough disk space":g.trim()&&(i=g.trim().split(/\r?\n/).pop().slice(0,200)),{ok:!1,reason:i}}({silent:a});return c.ok?(q=!0,c):w()?(a||console.log(`\u26a0 Camoufox binary update failed (${c.reason}); using existing binary with config sanitization.`),q=!0,{ok:!0,degraded:!0,reason:c.reason,binaryVersion:x()}):c}a.exports={ensureCamoufoxRuntime:function({silent:a=!1,forceBinaryRefresh:b=!1}={}){if(!0===p&&!b)return{ok:!0,module:r()};let c=function({silent:a=!1}={}){let b=r();if(b)return{ok:!0,module:b};a||console.log("⏳ Installing camoufox-js (first run, ~few MB)...");let c=i({cwd:j(),pkgs:[`${l}@^0.11.0`],extraArgs:["--no-save"],timeout:3e5});if(!c.ok)return{ok:!1,reason:`npm install ${l} failed: ${c.stderr.split("\n").pop().slice(0,200)}`};let d=r();return d?{ok:!0,module:d}:{ok:!1,reason:"camoufox-js installed but cannot be required"}}({silent:a});if(!c.ok){p=!1;let a=Error(`Camoufox engine not available. ${c.reason}. Install manually with "npm install -g camoufox-js && npx camoufox-js fetch", then retry. You can also switch back to the Chromium engine in the bulk-import modal.`);return a.code="CAMOUFOX_PACKAGE_MISSING",{ok:!1,error:a}}let e=A({silent:a,force:b});if(!e.ok){p=!1;let a=Error(`Camoufox browser binary not downloaded. ${e.reason}. Run "npx camoufox-js fetch" manually, then retry. You can also switch back to the Chromium engine in the bulk-import modal.`);return a.code="CAMOUFOX_BINARY_MISSING",{ok:!1,error:a}}return!function({silent:a=!1}={}){if("linux"!==process.platform)return;if("function"==typeof process.getuid&&0!==process.getuid())return a||console.log("ℹ Skipping auto-install of Camoufox system libs (not root). If Camoufox fails to launch, run: npx playwright install-deps firefox");let b=function(){let a=[];for(let b of["playwright","playwright-core"]){try{a.push(h.join(h.dirname(n.resolve(`${b}/package.json`)),"cli.js"))}catch{}try{a.push(h.join(k(),b,"cli.js"))}catch{}}for(let b of a)if(b&&f.existsSync(b))return b;return null}();if(!b)return;a||console.log("⏳ Installing Camoufox system libraries (Linux, first run)...");let c=d(process.execPath,[b,"install-deps","firefox"],{stdio:a?["ignore","pipe","pipe"]:"inherit",timeout:3e5,encoding:"utf8"});0===c.status?a||console.log("✅ Camoufox system libraries ready"):(a||console.log("⚠ Could not auto-install system libs; if Camoufox fails to launch run: npx playwright install-deps firefox"),String(c.stderr||"").trim().split(/\r?\n/).pop()?.slice(0,200))}({silent:a}),p=!0,{ok:!0,module:c.module,binaryVersion:e.binaryVersion||x(),binaryDegraded:!!e.degraded}},ensureCamoufoxBinary:A,refreshCamoufoxBinary:function({silent:a=!1}={}){q=!1,p=null;try{let a=v();f.existsSync(a)&&f.unlinkSync(a)}catch{}return A({silent:a,force:!0})},loadCamoufoxModule:function(){return r()},isCamoufoxBinaryAvailable:w,getInstalledBinaryVersion:x,getCamoufoxJsPackageVersion:t,getCamoufoxBinaryDir:u,resetCache:function(){p=null,q=!1}}},75949:(a,b,c)=>{"use strict";c.r(b),c.d(b,{DEFAULT_BULK_IMPORT_ENGINE:()=>e,forceCloseBrowser:()=>q,launchBulkImportBrowser:()=>p,makeBrowserLauncher:()=>r,normalizeBulkImportEngine:()=>f});let d=new Set(["chromium","camoufox","cloakbrowser"]),e="chromium";function f(a){if("string"!=typeof a)return e;let b=a.trim().toLowerCase();return"cloak"===b||"cloackbrowser"===b||"cloack"===b?"cloakbrowser":d.has(b)?b:e}function g(a){try{return c(50982)(`./${a}`)}catch{return null}}async function h(){let a=await Promise.resolve().then(c.bind(c,83237));return a.chromium??a.default?.chromium??null}let i=`
1
+ exports.id=5949,exports.ids=[5949],exports.modules={24344:(a,b,c)=>{"use strict";let{execSync:d,spawnSync:e}=c(79646),f=c(29021),g=c(21820),h=c(33873),i="zevai";function j(){return h.join(process.env.DATA_DIR?process.env.DATA_DIR:"win32"===process.platform?h.join(process.env.APPDATA||g.homedir(),i):h.join(g.homedir(),`.${i}`),"runtime")}function k(){return h.join(j(),"node_modules")}function l(){let a=j();f.existsSync(a)||f.mkdirSync(a,{recursive:!0});let b=h.join(a,"package.json");return f.existsSync(b)||f.writeFileSync(b,JSON.stringify({name:"zevai-runtime",version:"1.0.0",private:!0,description:"User-writable runtime deps for ZevaiRouter (better-sqlite3 native binary)"},null,2)),a}function m(a){return f.existsSync(h.join(k(),a,"package.json"))}function n(){let a=h.join(k(),"better-sqlite3","build","Release","better_sqlite3.node");if(!f.existsSync(a))return!1;try{let b=f.openSync(a,"r"),c=Buffer.alloc(4);f.readSync(b,c,0,4,0),f.closeSync(b);let d=c.toString("hex");if("linux"===process.platform)return d.startsWith("7f454c46");if("darwin"===process.platform)return d.startsWith("cffaedfe")||d.startsWith("cefaedfe");if("win32"===process.platform)return d.startsWith("4d5a");return!0}catch{return!1}}function o(a=""){let b=String(a);if(/ENOTFOUND|ETIMEDOUT|EAI_AGAIN|network|getaddrinfo/i.test(b))return"No internet connection or registry unreachable";if(/EACCES|EPERM|permission denied/i.test(b))return"Permission denied (check folder permissions)";if(/ENOSPC|no space/i.test(b))return"Not enough disk space";if(/node-gyp|gyp ERR|python|MSBuild|Visual Studio|Xcode/i.test(b))return"Missing build tools (Xcode CLT / Python / VS Build Tools)";if(/ETARGET|version.*not found/i.test(b))return"Package version not found on registry";let c=b.match(/npm ERR! (.+)/);if(c)return c[1].slice(0,200);let d=b.trim().split(/\r?\n/).filter(Boolean).pop();return d?d.slice(0,200):"Unknown error"}function p({cwd:a,pkgs:b,extraArgs:c=[],timeout:d=18e4}){let g=["install",...b,"--save","--no-audit","--no-fund","--prefer-online","--loglevel=error",...c.filter(a=>"--no-save"!==a)],i="win32"===process.platform?"npm.cmd":"npm",j=g,k="win32"===process.platform;try{let a=h.join(h.dirname(process.execPath),"..","lib","node_modules","npm","bin","npm-cli.js");f.existsSync(a)&&(i=process.execPath,j=[a,...g],k=!1)}catch{}let l=e(i,j,{cwd:a,stdio:["ignore","pipe","pipe"],timeout:d,shell:k,encoding:"utf8"});return{ok:0===l.status,code:l.status,stderr:l.stderr||"",stdout:l.stdout||""}}a.exports={ensureSqliteRuntime:function({silent:a=!1}={}){return(l(),m("better-sqlite3")&&n())?(a||console.log("✅ SQLite engine ready"),{betterSqlite:!0}):{betterSqlite:function(a,b={}){let c=l(),d=b.optional?["--no-save"]:[];b.silent||console.log("⏳ Installing SQLite engine (first run)...");let e=p({cwd:c,pkgs:a,extraArgs:d,timeout:b.timeout||18e4});if(!e.ok&&!b.silent){let b=o(e.stderr);console.warn("⚠️ SQLite engine install failed — using fallback"),console.warn(` Reason: ${b}`),console.warn(` Retry: cd "${c}" && npm install ${a.join(" ")}`)}return e.ok}(["better-sqlite3@12.6.2"],{optional:!0,silent:a})&&m("better-sqlite3")&&n()}},buildEnvWithRuntime:function(a=process.env){let b=[k(),h.join(__dirname,"..","app","node_modules"),h.join(__dirname,"..","..","node_modules"),a.NODE_PATH||""].filter(Boolean).join(h.delimiter);return{...a,NODE_PATH:b}},getRuntimeDir:j,getRuntimeNodeModules:k,runNpmInstall:p,summarizeNpmError:o}},50982:(a,b,c)=>{var d={"./camoufoxRuntime":72508,"./camoufoxRuntime.js":72508,"./cloakbrowserRuntime":99436,"./cloakbrowserRuntime.js":99436,"./playwrightRuntime":87473,"./playwrightRuntime.js":87473,"./postinstall":77897,"./postinstall.js":77897,"./sqliteRuntime":24344,"./sqliteRuntime.js":24344,"./trayRuntime":52784,"./trayRuntime.js":52784};function e(a){return c(f(a))}function f(a){if(!c.o(d,a)){var b=Error("Cannot find module '"+a+"'");throw b.code="MODULE_NOT_FOUND",b}return d[a]}e.keys=function(){return Object.keys(d)},e.resolve=f,a.exports=e,e.id=50982},51029:a=>{function b(a){var b=Error("Cannot find module '"+a+"'");throw b.code="MODULE_NOT_FOUND",b}b.keys=()=>[],b.resolve=b,b.id=51029,a.exports=b},52784:(a,b,c)=>{"use strict";let{spawnSync:d}=c(79646),e=c(29021),f=c(33873),{getRuntimeDir:g,getRuntimeNodeModules:h,runNpmInstall:i,summarizeNpmError:j}=c(24344),k="systray2",l="systray";function m(){return e.existsSync(f.join(h(),k,"package.json"))}function n({silent:a=!1}={}){if("win32"===process.platform)return;let b="darwin"===process.platform?"tray_darwin_release":"tray_linux_release",c=f.join(h(),k,"traybin",b);if(e.existsSync(c))try{e.chmodSync(c,493)}catch(b){a||console.warn(`[zevai][runtime] chmod tray bin failed: ${b.message}`)}}a.exports={ensureTrayRuntime:function({silent:a=!1}={}){if(!function({silent:a=!1}={}){for(let b of[f.join(h(),l),f.join(__dirname,"..","node_modules",l)])if(e.existsSync(b))try{e.rmSync(b,{recursive:!0,force:!0}),a||console.log(`[zevai][runtime] removed legacy systray: ${b}`)}catch(c){a||console.warn(`[zevai][runtime] failed to remove ${b}: ${c.message}`)}}({silent:a}),"win32"===process.platform)return{systray:!1,skipped:!0};if(m())return n({silent:a}),a||console.log("✅ System tray ready"),{systray:!0};let b=function(a,{silent:b=!1}={}){let c,d,h=(c=g(),e.existsSync(c)||e.mkdirSync(c,{recursive:!0}),d=f.join(c,"package.json"),e.existsSync(d)||e.writeFileSync(d,JSON.stringify({name:"zevai-runtime",version:"1.0.0",private:!0},null,2)),c);b||console.log("⏳ Installing system tray (first run)...");let k=i({cwd:h,pkgs:a,extraArgs:["--no-save"],timeout:12e4});if(!k.ok&&!b){let b=j(k.stderr);console.warn("⚠️ System tray install failed — tray disabled"),console.warn(` Reason: ${b}`),console.warn(` Retry: cd "${h}" && npm install ${a.join(" ")}`)}return k.ok}([`${k}@2.1.4`],{silent:a});return b&&n({silent:a}),{systray:b&&m()}}}},72508:(a,b,c)=>{"use strict";let{spawnSync:d}=c(79646),{createRequire:e}=c(8086),f=c(29021),g=c(21820),h=c(33873),{runNpmInstall:i,getRuntimeDir:j,getRuntimeNodeModules:k}=c(24344),l="camoufox-js",m="v2-audio-seed",n="function"==typeof require?require:c(51029);function o(){try{let a=h.join(j(),"noop.js");return e(a)}catch{return null}}let p=null,q=!1;function r(){try{let a=o(),b=h.join(k(),l);if(a&&f.existsSync(h.join(b,"package.json")))return a(b)}catch{}try{return n(l)}catch{}try{let a=h.join(k(),l);if(f.existsSync(h.join(a,"package.json")))return n(a)}catch{}return null}function s(){try{let a=o(),b=h.join(k(),l);if(f.existsSync(h.join(b,"package.json")))return b;if(a)try{return h.dirname(a.resolve(`${l}/package.json`))}catch{}}catch{}try{return h.dirname(n.resolve(`${l}/package.json`))}catch{}return null}function t(){try{let a=s();if(!a)return null;let b=JSON.parse(f.readFileSync(h.join(a,"package.json"),"utf8"));return String(b.version||"").trim()||null}catch{return null}}function u(){let a=g.homedir();return"win32"===process.platform?h.join(a,"AppData","Local","camoufox","camoufox","Cache"):"darwin"===process.platform?h.join(a,"Library","Caches","camoufox"):h.join(a,".cache","camoufox")}function v(){return h.join(u(),".zevai-binary-stamp.json")}function w(){try{let a;return f.existsSync((a=u(),"win32"===process.platform?h.join(a,"camoufox.exe"):"darwin"===process.platform?h.join(a,"Camoufox.app","Contents","MacOS","camoufox"):h.join(a,"camoufox-bin")))}catch{return!1}}function x(){try{let a=h.join(u(),"version.json");if(!f.existsSync(a))return null;let b=JSON.parse(f.readFileSync(a,"utf8"));if(!b?.version)return null;return`${b.version}${b.release?`-${b.release}`:""}`}catch{return null}}function y(){try{let a=v();if(!f.existsSync(a))return null;return JSON.parse(f.readFileSync(a,"utf8"))}catch{return null}}function z({packageVersion:a,binaryVersion:b}={}){try{let c=u();f.mkdirSync(c,{recursive:!0});let d={policy:m,packageVersion:a||t(),binaryVersion:b||x(),platform:process.platform,arch:process.arch,fetchedAt:new Date().toISOString()};return f.writeFileSync(v(),JSON.stringify(d,null,2)),d}catch{return null}}function A({silent:a=!1,force:b=!1}={}){if(!b&&q&&w())return{ok:!0,skipped:"already-checked",binaryVersion:x()};if(!function({force:a=!1}={}){if(a)return!0;if("1"===process.env.ZEVAI_CAMOUFOX_SKIP_FETCH)return!1;if(!w()||!x())return!0;let b=y();if(!b)return!0;let c=t();return!!c&&!!b.packageVersion&&b.packageVersion!==c||b.policy!==m}({force:b}))return y()||z(),q=!0,{ok:!0,skipped:"up-to-date",binaryVersion:x()};let c=function({silent:a=!1,timeout:b=6e5}={}){let c=function(){let a=[],b=["dist","__main__.js"];try{let c=n.resolve(`${l}/package.json`);a.push(h.join(h.dirname(c),...b))}catch{}try{a.push(h.join(k(),l,...b))}catch{}let c=s();for(let d of(c&&a.push(h.join(c,...b)),a))if(d&&f.existsSync(d))return d;return null}();if(!c)return{ok:!1,reason:"camoufox-js cli script not found after install"};a||console.log(w()?"⏳ Checking/updating Camoufox browser binary (keeps fingerprint config compatible)...":"⏳ Downloading Camoufox browser binary (first run, ~150–300MB)...");let e=d(process.execPath,[c,"fetch"],{stdio:a?["ignore","pipe","pipe"]:"inherit",timeout:b,encoding:"utf8",env:{...process.env,PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD:void 0}});if(0===e.status)return z({packageVersion:t(),binaryVersion:x()}),a||console.log("✅ Camoufox browser ready"),{ok:!0,binaryVersion:x()};let g=String(e.stderr||""),i="unknown error";return/ENOTFOUND|ETIMEDOUT|getaddrinfo/i.test(g)?i="no internet connection":/EACCES|EPERM/i.test(g)?i="permission denied":/ENOSPC/i.test(g)?i="not enough disk space":g.trim()&&(i=g.trim().split(/\r?\n/).pop().slice(0,200)),{ok:!1,reason:i}}({silent:a});return c.ok?(q=!0,c):w()?(a||console.log(`\u26a0 Camoufox binary update failed (${c.reason}); using existing binary with config sanitization.`),q=!0,{ok:!0,degraded:!0,reason:c.reason,binaryVersion:x()}):c}a.exports={ensureCamoufoxRuntime:function({silent:a=!1,forceBinaryRefresh:b=!1}={}){if(!0===p&&!b)return{ok:!0,module:r()};let c=function({silent:a=!1}={}){let b=r();if(b)return{ok:!0,module:b};a||console.log("⏳ Installing camoufox-js (first run, ~few MB)...");let c=i({cwd:j(),pkgs:[`${l}@^0.11.0`],extraArgs:["--no-save"],timeout:3e5});if(!c.ok)return{ok:!1,reason:`npm install ${l} failed: ${c.stderr.split("\n").pop().slice(0,200)}`};let d=r();return d?{ok:!0,module:d}:{ok:!1,reason:"camoufox-js installed but cannot be required"}}({silent:a});if(!c.ok){p=!1;let a=Error(`Camoufox engine not available. ${c.reason}. Install manually with "npm install -g camoufox-js && npx camoufox-js fetch", then retry. You can also switch back to the Chromium engine in the bulk-import modal.`);return a.code="CAMOUFOX_PACKAGE_MISSING",{ok:!1,error:a}}let e=A({silent:a,force:b});if(!e.ok){p=!1;let a=Error(`Camoufox browser binary not downloaded. ${e.reason}. Run "npx camoufox-js fetch" manually, then retry. You can also switch back to the Chromium engine in the bulk-import modal.`);return a.code="CAMOUFOX_BINARY_MISSING",{ok:!1,error:a}}return!function({silent:a=!1}={}){if("linux"!==process.platform)return;if("function"==typeof process.getuid&&0!==process.getuid())return a||console.log("ℹ Skipping auto-install of Camoufox system libs (not root). If Camoufox fails to launch, run: npx playwright install-deps firefox");let b=function(){let a=[];for(let b of["playwright","playwright-core"]){try{a.push(h.join(h.dirname(n.resolve(`${b}/package.json`)),"cli.js"))}catch{}try{a.push(h.join(k(),b,"cli.js"))}catch{}}for(let b of a)if(b&&f.existsSync(b))return b;return null}();if(!b)return;a||console.log("⏳ Installing Camoufox system libraries (Linux, first run)...");let c=d(process.execPath,[b,"install-deps","firefox"],{stdio:a?["ignore","pipe","pipe"]:"inherit",timeout:3e5,encoding:"utf8"});0===c.status?a||console.log("✅ Camoufox system libraries ready"):(a||console.log("⚠ Could not auto-install system libs; if Camoufox fails to launch run: npx playwright install-deps firefox"),String(c.stderr||"").trim().split(/\r?\n/).pop()?.slice(0,200))}({silent:a}),p=!0,{ok:!0,module:c.module,binaryVersion:e.binaryVersion||x(),binaryDegraded:!!e.degraded}},ensureCamoufoxBinary:A,refreshCamoufoxBinary:function({silent:a=!1}={}){q=!1,p=null;try{let a=v();f.existsSync(a)&&f.unlinkSync(a)}catch{}return A({silent:a,force:!0})},loadCamoufoxModule:function(){return r()},isCamoufoxBinaryAvailable:w,getInstalledBinaryVersion:x,getCamoufoxJsPackageVersion:t,getCamoufoxBinaryDir:u,resetCache:function(){p=null,q=!1}}},75949:(a,b,c)=>{"use strict";c.r(b),c.d(b,{DEFAULT_BULK_IMPORT_ENGINE:()=>e,forceCloseBrowser:()=>q,launchBulkImportBrowser:()=>p,makeBrowserLauncher:()=>r,normalizeBulkImportEngine:()=>f});let d=new Set(["chromium","camoufox","cloakbrowser"]),e="chromium";function f(a){if("string"!=typeof a)return e;let b=a.trim().toLowerCase();return"cloak"===b||"cloackbrowser"===b||"cloack"===b?"cloakbrowser":d.has(b)?b:e}function g(a){try{return c(50982)(`./${a}`)}catch{return null}}async function h(){let a=await Promise.resolve().then(c.bind(c,83237));return a.chromium??a.default?.chromium??null}let i=`
2
2
  Object.defineProperty(navigator, 'webdriver', { get: () => undefined });
3
3
  Object.defineProperty(navigator, 'languages', { get: () => ['en-US', 'en'] });
4
4
  Object.defineProperty(navigator, 'plugins', {
@@ -30,7 +30,7 @@ exports.id=5949,exports.ids=[5949],exports.modules={24344:(a,b,c)=>{"use strict"
30
30
  if (parameter === 37446) return 'Intel Iris OpenGL Engine';
31
31
  return _origGetParameter.call(this, parameter);
32
32
  };
33
- `;function j(a){let b=a.newContext.bind(a);return a.newContext=async function(c={}){if(!c.userAgent){let b,d;b=(a.version?a.version():"131.0.0.0")||"131.0.0.0",c.userAgent="darwin"===(d="u">typeof process?process.platform:"linux")?`Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/${b} Safari/537.36`:"win32"===d?`Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/${b} Safari/537.36`:`Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/${b} Safari/537.36`}let d=await b(c);return await d.addInitScript(i),d},a}async function k(){let{ensureDisplayForHeadedBrowser:a}=await c.e(3331).then(c.bind(c,13331)),b=a();if(!b.ok){let a=b.error||Error("No display for headed browser");throw a.code=a.code||"NO_DISPLAY",a}return b}async function l({proxyUrl:a,headless:b=!0,windowSize:d=null}={}){let e=!1!==b;e||await k();let f=null,i=null;try{f=await h()}catch(a){i=a}if(!f){let a=g("playwrightRuntime");if(a?.ensurePlaywrightRuntime){let b=a.ensurePlaywrightRuntime({silent:!1});if(b.ok){try{f=await h()}catch(a){i=a}if(!f){let c=b.module||a.loadPlaywrightModule?.();f=c?.chromium??null}}else if(b.error)throw i&&(b.error.cause=i),b.error}}if(!f){let a=Error('Playwright is not installed. Run "npm install -g playwright && npx playwright install chromium" or restart the bulk import to auto-install.');throw a.code="PLAYWRIGHT_PACKAGE_MISSING",a.cause=i,a}let m=d?.width||(e?1920:900),n=d?.height||(e?1080:700),o={headless:e,args:["--disable-blink-features=AutomationControlled","--disable-features=IsolateOrigins,site-per-process,AutomationControlled","--disable-infobars","--no-first-run","--no-default-browser-check","--disable-extensions","--disable-popup-blocking","--disable-backgrounding-occluded-windows","--disable-renderer-backgrounding","--disable-background-timer-throttling","--disable-ipc-flooding-protection","--password-store=basic","--use-mock-keychain",`--window-size=${m},${n}`,...e?[]:["--window-position=80,80"]],ignoreDefaultArgs:["--enable-automation"]};if(a){let{parsePlaywrightProxy:b}=await Promise.resolve().then(c.bind(c,66307));o.proxy=b(a)||{server:a}}try{let a=await f.launch(o);return j(a)}catch(b){let a=String(b?.message||b||"");if(!e&&/XServer|DISPLAY|Missing X server|headed browser|no DISPLAY/i.test(a))return await k(),j(await f.launch(o));throw b}}async function m({proxyUrl:a,headless:b=!0,windowSize:d=null}={}){let e,f=!1!==b;f||await k();let h=g("camoufoxRuntime");if(!h?.ensureCamoufoxRuntime){let a=Error("Camoufox runtime helper missing. Reinstall zevairouter or pick the Chromium engine.");throw a.code="CAMOUFOX_RUNTIME_HELPER_MISSING",a}let i=h.ensureCamoufoxRuntime({silent:!1});if(!i.ok&&i.error)throw i.error;let j=i.module||h.loadCamoufoxModule?.();if(!j?.launchOptions){let a=Error("camoufox-js loaded but does not expose launchOptions(); reinstall the package or pick the Chromium engine.");throw a.code="CAMOUFOX_API_MISMATCH",a}try{e=(await Promise.resolve().then(c.bind(c,26915))).firefox}catch{try{e=(await Promise.resolve().then(c.bind(c,83237))).firefox}catch(b){let a=Error('Playwright is required to drive Camoufox. Run "npm install -g playwright" or pick the Chromium engine.');throw a.code="PLAYWRIGHT_PACKAGE_MISSING",a.cause=b,a}}let{parsePlaywrightProxy:l}=await Promise.resolve().then(c.bind(c,66307)),o=a?l(a)||{server:a}:null,p=async()=>{let a=n({...await j.launchOptions({headless:f,...o?{proxy:o,geoip:!0}:{}}),headless:f});if(o&&(a.proxy=o),!f){let b=d?.width||900,c=d?.height||700;a.args=[...a.args||[],`--width=${b}`,`--height=${c}`]}return a},q=await p(),r=async a=>e.launch(a);try{return await r(q)}catch(c){let a=String(c?.message||c||""),b=a.match(/Unknown property\s+([^\s]+)\s+in config/i);if(b?.[1])try{return q=n(q,{extraDropKeys:[b[1]]}),await r(q)}catch{}if(/Unknown property|not described in this scheme|CAMOU_CONFIG|fingerprint/i.test(a))try{return"function"==typeof h.refreshCamoufoxBinary?h.refreshCamoufoxBinary({silent:!1}):"function"==typeof h.ensureCamoufoxRuntime&&h.ensureCamoufoxRuntime({silent:!1,forceBinaryRefresh:!0}),q=await p(),await r(q)}catch{}if(!f&&/XServer|DISPLAY|Missing X server|headed browser|no DISPLAY/i.test(a))return await k(),r(q);if(!f){let b=Error(`${a}
33
+ `;function j(a){let b=a.newContext.bind(a);return a.newContext=async function(c={}){if(!c.userAgent){let b,d;b=(a.version?a.version():"131.0.0.0")||"131.0.0.0",c.userAgent="darwin"===(d="u">typeof process?process.platform:"linux")?`Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/${b} Safari/537.36`:"win32"===d?`Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/${b} Safari/537.36`:`Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/${b} Safari/537.36`}let d=await b(c);return await d.addInitScript(i),d},a}async function k(){let{ensureDisplayForHeadedBrowser:a}=await c.e(3331).then(c.bind(c,13331)),b=a();if(!b.ok){let a=b.error||Error("No display for headed browser");throw a.code=a.code||"NO_DISPLAY",a}return b}async function l({proxyUrl:a,headless:b=!0,windowSize:d=null}={}){let e=!1!==b;e||await k();let f=null,i=null,m=g("playwrightRuntime");if(m?.ensurePlaywrightRuntime){let a=m.ensurePlaywrightRuntime({silent:!1});if(a.ok){let b=a.module||m.loadPlaywrightModule?.()||m.tryRequirePlaywright?.();f=b?.chromium??null}else a.error&&(i=a.error)}if(!f)try{f=await h()}catch(a){i=a}if(!f){let a=Error('Playwright is not installed. Run "npm install -g playwright && npx playwright install chromium" or restart the bulk import to auto-install.');throw a.code="PLAYWRIGHT_PACKAGE_MISSING",a.cause=i,a}let n=d?.width||(e?1920:900),o=d?.height||(e?1080:700),p={headless:e,channel:void 0,args:["--disable-blink-features=AutomationControlled","--disable-features=IsolateOrigins,site-per-process,AutomationControlled","--disable-infobars","--no-first-run","--no-default-browser-check","--disable-extensions","--disable-popup-blocking","--disable-backgrounding-occluded-windows","--disable-renderer-backgrounding","--disable-background-timer-throttling","--disable-ipc-flooding-protection","--password-store=basic","--use-mock-keychain",`--window-size=${n},${o}`,...e?[]:["--window-position=80,80"]],ignoreDefaultArgs:["--enable-automation"]};try{let{existsSync:a}=await Promise.resolve().then(c.t.bind(c,73024,23)),b="function"==typeof f.executablePath?f.executablePath():null;b&&a(b)&&(p.executablePath=b)}catch{}if(a){let{parsePlaywrightProxy:b}=await Promise.resolve().then(c.bind(c,66307));p.proxy=b(a)||{server:a}}try{let a=await f.launch(p);return j(a)}catch(b){let a=String(b?.message||b||"");if(!e&&/XServer|DISPLAY|Missing X server|headed browser|no DISPLAY/i.test(a))return await k(),j(await f.launch(p));if(/distribution ['\"]chrome['\"]|Executable doesn't exist|chrome-headless-shell/i.test(a))try{let a={...p};delete a.channel,delete a.executablePath;let b=await f.launch(a);return j(b)}catch{}throw b}}async function m({proxyUrl:a,headless:b=!0,windowSize:d=null}={}){let e,f=!1!==b;f||await k();let h=g("camoufoxRuntime");if(!h?.ensureCamoufoxRuntime){let a=Error("Camoufox runtime helper missing. Reinstall zevairouter or pick the Chromium engine.");throw a.code="CAMOUFOX_RUNTIME_HELPER_MISSING",a}let i=h.ensureCamoufoxRuntime({silent:!1});if(!i.ok&&i.error)throw i.error;let j=i.module||h.loadCamoufoxModule?.();if(!j?.launchOptions){let a=Error("camoufox-js loaded but does not expose launchOptions(); reinstall the package or pick the Chromium engine.");throw a.code="CAMOUFOX_API_MISMATCH",a}try{e=(await Promise.resolve().then(c.bind(c,26915))).firefox}catch{try{e=(await Promise.resolve().then(c.bind(c,83237))).firefox}catch(b){let a=Error('Playwright is required to drive Camoufox. Run "npm install -g playwright" or pick the Chromium engine.');throw a.code="PLAYWRIGHT_PACKAGE_MISSING",a.cause=b,a}}let{parsePlaywrightProxy:l}=await Promise.resolve().then(c.bind(c,66307)),o=a?l(a)||{server:a}:null,p=async()=>{let a=n({...await j.launchOptions({headless:f,...o?{proxy:o,geoip:!0}:{}}),headless:f});if(o&&(a.proxy=o),!f){let b=d?.width||900,c=d?.height||700;a.args=[...a.args||[],`--width=${b}`,`--height=${c}`]}return a},q=await p(),r=async a=>e.launch(a);try{return await r(q)}catch(c){let a=String(c?.message||c||""),b=a.match(/Unknown property\s+([^\s]+)\s+in config/i);if(b?.[1])try{return q=n(q,{extraDropKeys:[b[1]]}),await r(q)}catch{}if(/Unknown property|not described in this scheme|CAMOU_CONFIG|fingerprint/i.test(a))try{return"function"==typeof h.refreshCamoufoxBinary?h.refreshCamoufoxBinary({silent:!1}):"function"==typeof h.ensureCamoufoxRuntime&&h.ensureCamoufoxRuntime({silent:!1,forceBinaryRefresh:!0}),q=await p(),await r(q)}catch{}if(!f&&/XServer|DISPLAY|Missing X server|headed browser|no DISPLAY/i.test(a))return await k(),r(q);if(!f){let b=Error(`${a}
34
34
 
35
35
  VPS has no display for headed Camoufox (CodeBuddy CN). Install then restart:
36
36
  sudo apt-get update && sudo apt-get install -y xvfb
@@ -40,4 +40,4 @@ ZevaiRouter auto-starts Xvfb when installed.`);throw b.code="NO_DISPLAY",b.cause
40
40
  VPS has no display. Install a virtual screen then retry:
41
41
  sudo apt-get update && sudo apt-get install -y xvfb
42
42
  sudo systemctl restart zevairouter # or restart zevai
43
- ZevaiRouter auto-starts Xvfb when installed.`);throw c.code="NO_DISPLAY",c.cause=b,c}throw b}}async function p({engine:a=e,proxyUrl:b,headless:c=!0,windowSize:d=null}={}){let g=f(a);return"camoufox"===g?m({proxyUrl:b,headless:c,windowSize:d}):"cloakbrowser"===g?o({proxyUrl:b,headless:!0===c,windowSize:d}):l({proxyUrl:b,headless:c,windowSize:d})}async function q(a,{timeoutMs:b=4e3}={}){if(!a)return;let c=null;try{let b="function"==typeof a.process?a.process():null;c=b?.pid||null}catch{c=null}try{await Promise.race([Promise.resolve().then(()=>a.close()).catch(()=>null),new Promise(a=>setTimeout(a,b))])}catch{}if(c&&Number.isFinite(c)&&c>1)for(let a of["SIGTERM","SIGKILL"]){try{process.kill(c,0)}catch{break}try{process.kill(c,a)}catch{}try{process.kill(-c,a)}catch{}"SIGTERM"===a&&await new Promise(a=>setTimeout(a,400))}}function r({engine:a,proxyUrl:b,headless:c=!0,windowSize:d=null}={}){return()=>p({engine:a,proxyUrl:b,headless:c,windowSize:d})}},77897:(a,b,c)=>{let d=c(33873),e=c(29021);process.env.NPM_CONFIG_FUND="false",process.env.NPM_CONFIG_AUDIT="false",process.env.NPM_CONFIG_UPDATE_NOTIFIER="false",process.env.NPM_CONFIG_LOGLEVEL=process.env.NPM_CONFIG_LOGLEVEL||"error";let{ensureSqliteRuntime:f,runNpmInstall:g,getRuntimeDir:h}=c(24344),{ensureTrayRuntime:i}=c(52784),{ensurePlaywrightRuntime:j}=c(87473),k="1"===process.env.ZEVAI_MINIMAL_POSTINSTALL||"true"===process.env.ZEVAI_MINIMAL_POSTINSTALL;function l(a){console.log(`[zevai] ${a}`)}function m(a){console.warn(`[zevai] ${a}`)}l(k?"Minimal postinstall (ZEVAI_MINIMAL_POSTINSTALL=1) — browsers install on first use":"Preparing full runtime so all features work after this install…");try{f({silent:!0}),l("✓ SQLite engine ready")}catch(a){m(`SQLite warm-up skipped: ${a.message}`)}try{i({silent:!0}),l("✓ System tray helper ready")}catch(a){m(`Tray warm-up skipped: ${a.message}`)}k&&(l("Done (minimal). Use bulk import / terminal once to finish remaining downloads."),process.exit(0));try{let a=j({silent:!0});a.ok?(l("✓ Playwright + Chromium ready (bulk import default engine)"),function(){try{let{getRuntimeNodeModules:a}=c(24344),b=a(),f=d.join(__dirname,"..","app","node_modules");if(!e.existsSync(d.join(f,"next")))return;for(let a of["playwright","playwright-core"]){let c=d.join(b,a),g=d.join(f,a);e.existsSync(d.join(c,"package.json"))&&(e.existsSync(g)&&e.rmSync(g,{recursive:!0,force:!0}),e.cpSync(c,g,{recursive:!0}))}l("Playwright linked into app bundle")}catch{}}()):m(`Playwright skipped: ${a.error?.message||a.reason||"unknown"}`)}catch(a){m(`Playwright skipped: ${a.message}`)}try{l("… Camoufox (optional bulk engine, may download browser binary)");let a=function(){try{let{ensureCamoufoxRuntime:a}=c(72508);return a({silent:!0})}catch(a){return{ok:!1,error:a}}}();a.ok?l("✓ Camoufox ready"):m(`Camoufox skipped: ${a.error?.message||a.reason||"unknown"} — Chromium still works`)}catch(a){m(`Camoufox skipped: ${a.message}`)}try{l("… CloakBrowser + mmdb-lib (Grok bulk / geoip)");let a=function(){try{let{ensureCloakbrowserRuntime:a}=c(99436);return a({silent:!0})}catch(a){return{ok:!1,error:a}}}();a.ok?l("✓ CloakBrowser + mmdb-lib ready"):m(`CloakBrowser skipped: ${a.error?.message||"unknown"} — install on first Grok bulk if needed`)}catch(a){m(`CloakBrowser skipped: ${a.message}`)}try{let a=function(){if("win32"===process.platform)return{ok:!0,skipped:"windows uses pipe shell"};try{return c(14566),{ok:!0,already:!0}}catch{}return g({cwd:h(),pkgs:["node-pty@^1.1.0"],timeout:3e5}).ok?{ok:!0}:{ok:!1,reason:"native build failed (terminal still works via python PTY / pipe)"}}();a.ok?l(a.already?"✓ node-pty already available":"✓ node-pty ready (web terminal)"):a.skipped?l(`\xb7 node-pty skipped (${a.skipped})`):m(`node-pty skipped: ${a.reason||"unknown"} — terminal still works`)}catch(a){m(`node-pty skipped: ${a.message}`)}l("Runtime warm-up finished. Start with: zevai"),process.exit(0)},87473:(a,b,c)=>{"use strict";let{spawnSync:d}=c(79646),e=c(29021),f=c(33873),{runNpmInstall:g,getRuntimeDir:h,getRuntimeNodeModules:i}=c(24344),j="playwright",k=null;function l(){try{return c(51029)(j)}catch{}try{let a=i(),b=f.join(a,j);if(e.existsSync(f.join(b,"package.json")))return c(51029)(b)}catch{}return null}function m(){let a,b=l();if(!b?.chromium?.executablePath)return!1;try{a=b.chromium.executablePath()}catch{return!1}return!!a&&e.existsSync(a)}function n(){let a=[];try{a.push(f.join(f.dirname(57173),"cli.js"))}catch{}try{a.push(f.join(f.dirname(66561),"cli.js"))}catch{}try{a.push(f.join(i(),"playwright","cli.js")),a.push(f.join(i(),"playwright-core","cli.js"))}catch{}for(let b of a)if(b&&e.existsSync(b))return b;return null}a.exports={ensurePlaywrightRuntime:function({silent:a=!1,timeout:b}={}){if(!0===k)return{ok:!0};let c=function({silent:a=!1}={}){let b=l();if(b)return{ok:!0,module:b};a||console.log("⏳ Installing playwright package (first run)...");let c=g({cwd:h(),pkgs:[`${j}@^1.54.2`],extraArgs:["--no-save"],timeout:3e5});if(!c.ok)return{ok:!1,reason:`npm install ${j} failed: ${c.stderr.split("\n").pop().slice(0,200)}`};let d=l();return d?{ok:!0,module:d}:{ok:!1,reason:"playwright installed but cannot be required"}}({silent:a});if(!c.ok){k=!1;let a=Error(`Playwright not available. ${c.reason}. Run "npm install -g playwright && npx playwright install chromium" manually, then retry.`);return a.code="PLAYWRIGHT_PACKAGE_MISSING",{ok:!1,error:a}}if(m())return k=!0,{ok:!0,module:c.module};let e=function({silent:a=!1,timeout:b=6e5}={}){let c=n();if(!c)return{ok:!1,reason:"playwright cli not resolvable"};a||console.log("⏳ Downloading Playwright Chromium (first run, ~150MB)...");let e=d(process.execPath,[c,"install","chromium"],{stdio:a?["ignore","pipe","pipe"]:"inherit",timeout:b,encoding:"utf8"});if(0===e.status)return a||console.log("✅ Playwright Chromium ready"),{ok:!0};let f=String(e.stderr||""),g="unknown error";return/ENOTFOUND|ETIMEDOUT|getaddrinfo/i.test(f)?g="no internet connection":/EACCES|EPERM/i.test(f)?g="permission denied":/ENOSPC/i.test(f)?g="not enough disk space":f.trim()&&(g=f.trim().split(/\r?\n/).pop().slice(0,200)),{ok:!1,reason:g}}({silent:a,timeout:b});if(e.ok&&m())return k=!0,{ok:!0,module:c.module};k=!1;let f=Error(`Playwright Chromium not available. ${e.reason}. Run "npx playwright install chromium" manually, then retry.`);return f.code="PLAYWRIGHT_CHROMIUM_MISSING",{ok:!1,error:f}},loadPlaywrightModule:function(){return l()},isChromiumBinaryAvailable:m,resetCache:function(){k=null},findPlaywrightCli:n}},99436:(a,b,c)=>{"use strict";let{createRequire:d}=c(8086),e=c(29021),f=c(33873),{runNpmInstall:g,getRuntimeDir:h,getRuntimeNodeModules:i,summarizeNpmError:j,buildEnvWithRuntime:k}=c(24344),l="cloakbrowser",m="^0.3.32",n="mmdb-lib",o="^3.0.2",p="function"==typeof require?require:c(51029);function q(){try{let a=f.join(h(),"noop.js");return d(a)}catch{return null}}let r=null;function s(a){return e.existsSync(f.join(i(),a,"package.json"))}function t(){try{let a=q(),b=f.join(i(),l);if(a&&e.existsSync(f.join(b,"package.json")))return a(b)}catch{}try{return p(l)}catch{}try{let a=f.join(i(),l);if(e.existsSync(f.join(a,"package.json")))return p(a)}catch{}return null}function u(){try{let a=q(),b=f.join(i(),n);if(a&&e.existsSync(f.join(b,"package.json")))return a(b)}catch{}try{return p(n)}catch{}return null}a.exports={ensureCloakbrowserRuntime:function({silent:a=!1}={}){if(r?.ok&&r.module&&u())return r;try{let a=k(process.env);if(a.NODE_PATH&&!process.env.NODE_PATH?.includes(i())){process.env.NODE_PATH=a.NODE_PATH;try{c(8086).Module._initPaths()}catch{}}}catch{}let b=t(),d=!b?.launch,e=!u()&&!s(n);if(d||e){let b=[];d&&b.push(`${l}@${m}`),e&&b.push(`${n}@${o}`),a||console.log(`[cloakbrowser] Installing ${b.join(", ")} into runtime…`);let c=g({cwd:h(),pkgs:b,timeout:3e5});if(!c.ok){let a=j(c.stderr||c.stdout||""),d=Error(`Failed to install ${b.join(", ")}. On the host run: cd "${h()}" && npm install ${b.join(" ")} — ${a}`);return d.code="CLOAKBROWSER_INSTALL_FAILED",{ok:!1,error:d}}}if(b=t(),!b?.launch){let a=Error(`cloakbrowser installed but launch() is missing. Reinstall: cd "${h()}" && npm install ${l}@${m} ${n}@${o}`);return a.code="CLOAKBROWSER_API_MISMATCH",{ok:!1,error:a}}if(!u()&&!s(n)){let a=Error(`mmdb-lib is required for geoip: true. Install: cd "${h()}" && npm install ${n}@${o}`);return a.code="MMDB_MISSING",{ok:!1,error:a}}return r={ok:!0,module:b}},loadCloakbrowserModule:function(){return t()},CLOAKBROWSER_PACKAGE:l,CLOAKBROWSER_VERSION:m,MMDB_PACKAGE:n,MMDB_VERSION:o}}};
43
+ ZevaiRouter auto-starts Xvfb when installed.`);throw c.code="NO_DISPLAY",c.cause=b,c}throw b}}async function p({engine:a=e,proxyUrl:b,headless:c=!0,windowSize:d=null}={}){let g=f(a);return"camoufox"===g?m({proxyUrl:b,headless:c,windowSize:d}):"cloakbrowser"===g?o({proxyUrl:b,headless:!0===c,windowSize:d}):l({proxyUrl:b,headless:c,windowSize:d})}async function q(a,{timeoutMs:b=4e3}={}){if(!a)return;let c=null;try{let b="function"==typeof a.process?a.process():null;c=b?.pid||null}catch{c=null}try{await Promise.race([Promise.resolve().then(()=>a.close()).catch(()=>null),new Promise(a=>setTimeout(a,b))])}catch{}if(c&&Number.isFinite(c)&&c>1)for(let a of["SIGTERM","SIGKILL"]){try{process.kill(c,0)}catch{break}try{process.kill(c,a)}catch{}try{process.kill(-c,a)}catch{}"SIGTERM"===a&&await new Promise(a=>setTimeout(a,400))}}function r({engine:a,proxyUrl:b,headless:c=!0,windowSize:d=null}={}){return()=>p({engine:a,proxyUrl:b,headless:c,windowSize:d})}},77897:(a,b,c)=>{let d=c(33873),e=c(29021);process.env.NPM_CONFIG_FUND="false",process.env.NPM_CONFIG_AUDIT="false",process.env.NPM_CONFIG_UPDATE_NOTIFIER="false",process.env.NPM_CONFIG_LOGLEVEL=process.env.NPM_CONFIG_LOGLEVEL||"error";let{ensureSqliteRuntime:f,runNpmInstall:g,getRuntimeDir:h}=c(24344),{ensureTrayRuntime:i}=c(52784),{ensurePlaywrightRuntime:j}=c(87473),k="1"===process.env.ZEVAI_MINIMAL_POSTINSTALL||"true"===process.env.ZEVAI_MINIMAL_POSTINSTALL;function l(a){console.log(`[zevai] ${a}`)}function m(a){console.warn(`[zevai] ${a}`)}l(k?"Minimal postinstall (ZEVAI_MINIMAL_POSTINSTALL=1) — browsers install on first use":"Preparing full runtime so all features work after this install…");try{f({silent:!0}),l("✓ SQLite engine ready")}catch(a){m(`SQLite warm-up skipped: ${a.message}`)}try{i({silent:!0}),l("✓ System tray helper ready")}catch(a){m(`Tray warm-up skipped: ${a.message}`)}k&&(l("Done (minimal). Use bulk import / terminal once to finish remaining downloads."),process.exit(0));try{let a=j({silent:!0});a.ok?(l("✓ Playwright + Chromium ready (bulk import default engine)"),function(){try{let{getRuntimeNodeModules:a}=c(24344),b=a(),f=d.join(__dirname,"..","app","node_modules");if(!e.existsSync(d.join(f,"next")))return;for(let a of["playwright","playwright-core"]){let c=d.join(b,a),g=d.join(f,a);e.existsSync(d.join(c,"package.json"))&&(e.existsSync(g)&&e.rmSync(g,{recursive:!0,force:!0}),e.cpSync(c,g,{recursive:!0}))}l("Playwright linked into app bundle")}catch{}}()):m(`Playwright skipped: ${a.error?.message||a.reason||"unknown"}`)}catch(a){m(`Playwright skipped: ${a.message}`)}try{l("… Camoufox (optional bulk engine, may download browser binary)");let a=function(){try{let{ensureCamoufoxRuntime:a}=c(72508);return a({silent:!0})}catch(a){return{ok:!1,error:a}}}();a.ok?l("✓ Camoufox ready"):m(`Camoufox skipped: ${a.error?.message||a.reason||"unknown"} — Chromium still works`)}catch(a){m(`Camoufox skipped: ${a.message}`)}try{l("… CloakBrowser + mmdb-lib (Grok bulk / geoip)");let a=function(){try{let{ensureCloakbrowserRuntime:a}=c(99436);return a({silent:!0})}catch(a){return{ok:!1,error:a}}}();a.ok?l("✓ CloakBrowser + mmdb-lib ready"):m(`CloakBrowser skipped: ${a.error?.message||"unknown"} — install on first Grok bulk if needed`)}catch(a){m(`CloakBrowser skipped: ${a.message}`)}try{let a=function(){if("win32"===process.platform)return{ok:!0,skipped:"windows uses pipe shell"};try{return c(14566),{ok:!0,already:!0}}catch{}return g({cwd:h(),pkgs:["node-pty@^1.1.0"],timeout:3e5}).ok?{ok:!0}:{ok:!1,reason:"native build failed (terminal still works via python PTY / pipe)"}}();a.ok?l(a.already?"✓ node-pty already available":"✓ node-pty ready (web terminal)"):a.skipped?l(`\xb7 node-pty skipped (${a.skipped})`):m(`node-pty skipped: ${a.reason||"unknown"} — terminal still works`)}catch(a){m(`node-pty skipped: ${a.message}`)}l("Runtime warm-up finished. Start with: zevai"),process.exit(0)},87473:(a,b,c)=>{"use strict";let{spawnSync:d}=c(79646),{createRequire:e}=c(8086),f=c(29021),g=c(33873),{runNpmInstall:h,getRuntimeDir:i,getRuntimeNodeModules:j}=c(24344),k="playwright",l="function"==typeof require?require:c(51029);function m(){try{let a=g.join(i(),"noop.js");return e(a)}catch{return null}}let n=null;function o(){try{let a=m(),b=g.join(j(),k);if(a&&f.existsSync(g.join(b,"package.json")))return a(b)}catch{}try{return l(k)}catch{}try{let a=g.join(j(),k);if(f.existsSync(g.join(a,"package.json")))return l(a)}catch{}try{return e(g.join(process.cwd(),"package.json"))(k)}catch{}return null}function p(){let a,b=o();if(!b?.chromium?.executablePath)return!1;try{a=b.chromium.executablePath()}catch{return!1}return!!a&&f.existsSync(a)}function q(){let a=[];try{let b=m();if(b){try{a.push(g.join(g.dirname(b.resolve(`${k}/package.json`)),"cli.js"))}catch{}try{a.push(g.join(g.dirname(b.resolve("playwright-core/package.json")),"cli.js"))}catch{}}}catch{}try{let b=l.resolve("playwright/package.json");a.push(g.join(g.dirname(b),"cli.js"))}catch{}try{let b=l.resolve("playwright-core/package.json");a.push(g.join(g.dirname(b),"cli.js"))}catch{}try{a.push(g.join(j(),"playwright","cli.js")),a.push(g.join(j(),"playwright-core","cli.js"))}catch{}for(let b of a)if(b&&f.existsSync(b))return b;return null}a.exports={ensurePlaywrightRuntime:function({silent:a=!1,timeout:b}={}){if(!0===n)return{ok:!0,module:o()};let c=function({silent:a=!1}={}){let b=o();if(b)return{ok:!0,module:b};a||console.log("⏳ Installing playwright package (first run)...");let c=h({cwd:i(),pkgs:[`${k}@^1.54.2`],extraArgs:["--no-save"],timeout:3e5});if(!c.ok)return{ok:!1,reason:`npm install ${k} failed: ${c.stderr.split("\n").pop().slice(0,200)}`};n=null;let d=o();return d?{ok:!0,module:d}:{ok:!1,reason:"playwright installed into ~/.zevai/runtime but cannot be required (webpack/module path). Restart zevai after install, or run: node -e \"require(require('path').join(require('os').homedir(),'.zevai/runtime/node_modules/playwright'))\""}}({silent:a});if(!c.ok){n=!1;let a=Error(`Playwright not available. ${c.reason}. Run "npm install -g playwright && npx playwright install chromium" manually, then retry.`);return a.code="PLAYWRIGHT_PACKAGE_MISSING",{ok:!1,error:a}}if(p())return n=!0,{ok:!0,module:c.module||o()};let e=function({silent:a=!1,timeout:b=6e5}={}){let c=q();if(!c)return{ok:!1,reason:"playwright cli not resolvable"};a||console.log("⏳ Downloading Playwright Chromium (first run, ~150MB)...");let e={...process.env,PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD:void 0};delete e.PLAYWRIGHT_CHROMIUM_CHANNEL;let f=d(process.execPath,[c,"install","chromium"],{stdio:a?["ignore","pipe","pipe"]:"inherit",timeout:b,encoding:"utf8",env:e});if(0===f.status)return a||console.log("✅ Playwright Chromium ready"),{ok:!0};let g=String(f.stderr||""),h="unknown error";return/ENOTFOUND|ETIMEDOUT|getaddrinfo/i.test(g)?h="no internet connection":/EACCES|EPERM/i.test(g)?h="permission denied":/ENOSPC/i.test(g)?h="not enough disk space":g.trim()&&(h=g.trim().split(/\r?\n/).pop().slice(0,200)),{ok:!1,reason:h}}({silent:a,timeout:b});if(e.ok&&p())return n=!0,{ok:!0,module:c.module||o()};n=!1;let f=Error(`Playwright Chromium not available. ${e.reason}. Run "npx playwright install chromium" manually, then retry.`);return f.code="PLAYWRIGHT_CHROMIUM_MISSING",{ok:!1,error:f}},loadPlaywrightModule:function(){return o()},isChromiumBinaryAvailable:p,resetCache:function(){n=null},findPlaywrightCli:q,tryRequirePlaywright:o}},99436:(a,b,c)=>{"use strict";let{createRequire:d}=c(8086),e=c(29021),f=c(33873),{runNpmInstall:g,getRuntimeDir:h,getRuntimeNodeModules:i,summarizeNpmError:j,buildEnvWithRuntime:k}=c(24344),l="cloakbrowser",m="^0.3.32",n="mmdb-lib",o="^3.0.2",p="function"==typeof require?require:c(51029);function q(){try{let a=f.join(h(),"noop.js");return d(a)}catch{return null}}let r=null;function s(a){return e.existsSync(f.join(i(),a,"package.json"))}function t(){try{let a=q(),b=f.join(i(),l);if(a&&e.existsSync(f.join(b,"package.json")))return a(b)}catch{}try{return p(l)}catch{}try{let a=f.join(i(),l);if(e.existsSync(f.join(a,"package.json")))return p(a)}catch{}return null}function u(){try{let a=q(),b=f.join(i(),n);if(a&&e.existsSync(f.join(b,"package.json")))return a(b)}catch{}try{return p(n)}catch{}return null}a.exports={ensureCloakbrowserRuntime:function({silent:a=!1}={}){if(r?.ok&&r.module&&u())return r;try{let a=k(process.env);if(a.NODE_PATH&&!process.env.NODE_PATH?.includes(i())){process.env.NODE_PATH=a.NODE_PATH;try{c(8086).Module._initPaths()}catch{}}}catch{}let b=t(),d=!b?.launch,e=!u()&&!s(n);if(d||e){let b=[];d&&b.push(`${l}@${m}`),e&&b.push(`${n}@${o}`),a||console.log(`[cloakbrowser] Installing ${b.join(", ")} into runtime…`);let c=g({cwd:h(),pkgs:b,timeout:3e5});if(!c.ok){let a=j(c.stderr||c.stdout||""),d=Error(`Failed to install ${b.join(", ")}. On the host run: cd "${h()}" && npm install ${b.join(" ")} — ${a}`);return d.code="CLOAKBROWSER_INSTALL_FAILED",{ok:!1,error:d}}}if(b=t(),!b?.launch){let a=Error(`cloakbrowser installed but launch() is missing. Reinstall: cd "${h()}" && npm install ${l}@${m} ${n}@${o}`);return a.code="CLOAKBROWSER_API_MISMATCH",{ok:!1,error:a}}if(!u()&&!s(n)){let a=Error(`mmdb-lib is required for geoip: true. Install: cd "${h()}" && npm install ${n}@${o}`);return a.code="MMDB_MISSING",{ok:!1,error:a}}return r={ok:!0,module:b}},loadCloakbrowserModule:function(){return t()},CLOAKBROWSER_PACKAGE:l,CLOAKBROWSER_VERSION:m,MMDB_PACKAGE:n,MMDB_VERSION:o}}};