zevairouter 1.0.135 → 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 (544) 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 +8 -8
  4. package/cli/app/.next-cli-build/build-manifest.json +2 -2
  5. package/cli/app/.next-cli-build/required-server-files.json +0 -2
  6. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/automation/page.js.nft.json +1 -1
  7. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/automation/page_client-reference-manifest.js +1 -1
  8. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page.js.nft.json +1 -1
  9. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
  10. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js.nft.json +1 -1
  11. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page_client-reference-manifest.js +1 -1
  12. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
  13. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  14. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page.js.nft.json +1 -1
  15. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  16. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page.js.nft.json +1 -1
  17. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
  18. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/context/page.js.nft.json +1 -1
  19. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/context/page_client-reference-manifest.js +1 -1
  20. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
  21. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  22. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js.nft.json +1 -1
  23. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
  24. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js.nft.json +1 -1
  25. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -1
  26. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js.nft.json +1 -1
  27. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +1 -1
  28. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page.js.nft.json +1 -1
  29. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +1 -1
  30. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page.js.nft.json +1 -1
  31. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
  32. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
  33. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  34. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/playground/page.js.nft.json +1 -1
  35. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/playground/page_client-reference-manifest.js +1 -1
  36. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page.js.nft.json +1 -1
  37. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  38. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js.nft.json +1 -1
  39. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  40. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page.js.nft.json +1 -1
  41. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  42. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page.js.nft.json +1 -1
  43. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  44. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page.js.nft.json +1 -1
  45. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
  46. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page.js.nft.json +1 -1
  47. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page_client-reference-manifest.js +1 -1
  48. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page.js.nft.json +1 -1
  49. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
  50. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/terminal/page.js.nft.json +1 -1
  51. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/terminal/page_client-reference-manifest.js +1 -1
  52. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page.js.nft.json +1 -1
  53. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page_client-reference-manifest.js +1 -1
  54. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page.js.nft.json +1 -1
  55. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  56. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page.js.nft.json +1 -1
  57. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  58. package/cli/app/.next-cli-build/server/app/_global-error/page.js.nft.json +1 -1
  59. package/cli/app/.next-cli-build/server/app/_global-error/page_client-reference-manifest.js +1 -1
  60. package/cli/app/.next-cli-build/server/app/_global-error.html +1 -1
  61. package/cli/app/.next-cli-build/server/app/_global-error.rsc +1 -1
  62. package/cli/app/.next-cli-build/server/app/_global-error.segments/_full.segment.rsc +1 -1
  63. package/cli/app/.next-cli-build/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  64. package/cli/app/.next-cli-build/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  65. package/cli/app/.next-cli-build/server/app/_global-error.segments/_head.segment.rsc +1 -1
  66. package/cli/app/.next-cli-build/server/app/_global-error.segments/_index.segment.rsc +1 -1
  67. package/cli/app/.next-cli-build/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  68. package/cli/app/.next-cli-build/server/app/_not-found/page.js.nft.json +1 -1
  69. package/cli/app/.next-cli-build/server/app/_not-found/page_client-reference-manifest.js +1 -1
  70. package/cli/app/.next-cli-build/server/app/_not-found.html +1 -1
  71. package/cli/app/.next-cli-build/server/app/_not-found.rsc +3 -3
  72. package/cli/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +3 -3
  73. package/cli/app/.next-cli-build/server/app/_not-found.segments/_head.segment.rsc +1 -1
  74. package/cli/app/.next-cli-build/server/app/_not-found.segments/_index.segment.rsc +3 -3
  75. package/cli/app/.next-cli-build/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  76. package/cli/app/.next-cli-build/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  77. package/cli/app/.next-cli-build/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  78. package/cli/app/.next-cli-build/server/app/api/auth/login/route.js.nft.json +1 -1
  79. package/cli/app/.next-cli-build/server/app/api/auth/logout/route.js.nft.json +1 -1
  80. package/cli/app/.next-cli-build/server/app/api/auth/oidc/callback/route.js.nft.json +1 -1
  81. package/cli/app/.next-cli-build/server/app/api/auth/oidc/start/route.js.nft.json +1 -1
  82. package/cli/app/.next-cli-build/server/app/api/auth/oidc/test/route.js.nft.json +1 -1
  83. package/cli/app/.next-cli-build/server/app/api/auth/status/route.js.nft.json +1 -1
  84. package/cli/app/.next-cli-build/server/app/api/cache/stats/route.js.nft.json +1 -1
  85. package/cli/app/.next-cli-build/server/app/api/changelog/route.js.nft.json +1 -1
  86. package/cli/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js.nft.json +1 -1
  87. package/cli/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js.nft.json +1 -1
  88. package/cli/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js.nft.json +1 -1
  89. package/cli/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route.js.nft.json +1 -1
  90. package/cli/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js.nft.json +1 -1
  91. package/cli/app/.next-cli-build/server/app/api/cli-tools/codex-gateway/accounts/route.js.nft.json +1 -1
  92. package/cli/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js.nft.json +1 -1
  93. package/cli/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js.nft.json +1 -1
  94. package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js.nft.json +1 -1
  95. package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js.nft.json +1 -1
  96. package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js.nft.json +1 -1
  97. package/cli/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js.nft.json +1 -1
  98. package/cli/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js.nft.json +1 -1
  99. package/cli/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js.nft.json +1 -1
  100. package/cli/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js.nft.json +1 -1
  101. package/cli/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js.nft.json +1 -1
  102. package/cli/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js.nft.json +1 -1
  103. package/cli/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js.nft.json +1 -1
  104. package/cli/app/.next-cli-build/server/app/api/combos/[id]/route.js.nft.json +1 -1
  105. package/cli/app/.next-cli-build/server/app/api/combos/route.js.nft.json +1 -1
  106. package/cli/app/.next-cli-build/server/app/api/context/[id]/route.js.nft.json +1 -1
  107. package/cli/app/.next-cli-build/server/app/api/context/bulk/route.js.nft.json +1 -1
  108. package/cli/app/.next-cli-build/server/app/api/context/route.js.nft.json +1 -1
  109. package/cli/app/.next-cli-build/server/app/api/dashboard/chat/completions/route.js.nft.json +1 -1
  110. package/cli/app/.next-cli-build/server/app/api/headroom/extras/route.js.nft.json +1 -1
  111. package/cli/app/.next-cli-build/server/app/api/headroom/proxy/[...path]/route.js.nft.json +1 -1
  112. package/cli/app/.next-cli-build/server/app/api/headroom/restart/route.js.nft.json +1 -1
  113. package/cli/app/.next-cli-build/server/app/api/headroom/start/route.js.nft.json +1 -1
  114. package/cli/app/.next-cli-build/server/app/api/headroom/status/route.js.nft.json +1 -1
  115. package/cli/app/.next-cli-build/server/app/api/headroom/stop/route.js.nft.json +1 -1
  116. package/cli/app/.next-cli-build/server/app/api/health/ready/route.js.nft.json +1 -1
  117. package/cli/app/.next-cli-build/server/app/api/health/route.js.nft.json +1 -1
  118. package/cli/app/.next-cli-build/server/app/api/init/route.js.nft.json +1 -1
  119. package/cli/app/.next-cli-build/server/app/api/keys/[id]/rotate/route.js.nft.json +1 -1
  120. package/cli/app/.next-cli-build/server/app/api/keys/[id]/route.js.nft.json +1 -1
  121. package/cli/app/.next-cli-build/server/app/api/keys/route.js.nft.json +1 -1
  122. package/cli/app/.next-cli-build/server/app/api/locale/route.js.nft.json +1 -1
  123. package/cli/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route.js.nft.json +1 -1
  124. package/cli/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route.js.nft.json +1 -1
  125. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js.nft.json +1 -1
  126. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js.nft.json +1 -1
  127. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js.nft.json +1 -1
  128. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js.nft.json +1 -1
  129. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/voices/route.js.nft.json +1 -1
  130. package/cli/app/.next-cli-build/server/app/api/metrics/route.js.nft.json +1 -1
  131. package/cli/app/.next-cli-build/server/app/api/models/alias/route.js.nft.json +1 -1
  132. package/cli/app/.next-cli-build/server/app/api/models/availability/route.js.nft.json +1 -1
  133. package/cli/app/.next-cli-build/server/app/api/models/custom/route.js.nft.json +1 -1
  134. package/cli/app/.next-cli-build/server/app/api/models/disabled/route.js.nft.json +1 -1
  135. package/cli/app/.next-cli-build/server/app/api/models/route.js +1 -1
  136. package/cli/app/.next-cli-build/server/app/api/models/route.js.nft.json +1 -1
  137. package/cli/app/.next-cli-build/server/app/api/models/test/route.js.nft.json +1 -1
  138. package/cli/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js.nft.json +1 -1
  139. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
  140. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
  141. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/route.js.nft.json +1 -1
  142. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/latest/route.js.nft.json +1 -1
  143. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/route.js.nft.json +1 -1
  144. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
  145. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
  146. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/route.js.nft.json +1 -1
  147. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/latest/route.js.nft.json +1 -1
  148. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/route.js.nft.json +1 -1
  149. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
  150. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
  151. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/route.js.nft.json +1 -1
  152. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/latest/route.js.nft.json +1 -1
  153. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/route.js.nft.json +1 -1
  154. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-token/route.js.nft.json +1 -1
  155. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/quota-cookie/route.js.nft.json +1 -1
  156. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
  157. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
  158. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/route.js.nft.json +1 -1
  159. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/latest/route.js.nft.json +1 -1
  160. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/route.js.nft.json +1 -1
  161. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-token/route.js.nft.json +1 -1
  162. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/quota-cookie/route.js.nft.json +1 -1
  163. package/cli/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js.nft.json +1 -1
  164. package/cli/app/.next-cli-build/server/app/api/oauth/cursor/auto-import/route.js.nft.json +1 -1
  165. package/cli/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js.nft.json +1 -1
  166. package/cli/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js.nft.json +1 -1
  167. package/cli/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js.nft.json +1 -1
  168. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/auto-import/route.js.nft.json +1 -1
  169. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
  170. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
  171. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/route.js.nft.json +1 -1
  172. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/latest/route.js.nft.json +1 -1
  173. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/route.js.nft.json +1 -1
  174. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js.nft.json +1 -1
  175. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/social-authorize/route.js.nft.json +1 -1
  176. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js.nft.json +1 -1
  177. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
  178. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
  179. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/route.js.nft.json +1 -1
  180. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/latest/route.js.nft.json +1 -1
  181. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/route.js.nft.json +1 -1
  182. package/cli/app/.next-cli-build/server/app/api/pricing/route.js.nft.json +1 -1
  183. package/cli/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js.nft.json +1 -1
  184. package/cli/app/.next-cli-build/server/app/api/provider-nodes/route.js.nft.json +1 -1
  185. package/cli/app/.next-cli-build/server/app/api/provider-nodes/validate/route.js.nft.json +1 -1
  186. package/cli/app/.next-cli-build/server/app/api/providers/[id]/models/route.js.nft.json +1 -1
  187. package/cli/app/.next-cli-build/server/app/api/providers/[id]/route.js.nft.json +1 -1
  188. package/cli/app/.next-cli-build/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
  189. package/cli/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js.nft.json +1 -1
  190. package/cli/app/.next-cli-build/server/app/api/providers/bulk-delete/route.js.nft.json +1 -1
  191. package/cli/app/.next-cli-build/server/app/api/providers/client/route.js.nft.json +1 -1
  192. package/cli/app/.next-cli-build/server/app/api/providers/kilo/free-models/route.js.nft.json +1 -1
  193. package/cli/app/.next-cli-build/server/app/api/providers/route.js +1 -1
  194. package/cli/app/.next-cli-build/server/app/api/providers/route.js.nft.json +1 -1
  195. package/cli/app/.next-cli-build/server/app/api/providers/suggested-models/route.js.nft.json +1 -1
  196. package/cli/app/.next-cli-build/server/app/api/providers/test-batch/route.js.nft.json +1 -1
  197. package/cli/app/.next-cli-build/server/app/api/providers/validate/route.js +1 -1
  198. package/cli/app/.next-cli-build/server/app/api/providers/validate/route.js.nft.json +1 -1
  199. package/cli/app/.next-cli-build/server/app/api/proxy-pools/[id]/route.js.nft.json +1 -1
  200. package/cli/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js.nft.json +1 -1
  201. package/cli/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route.js.nft.json +1 -1
  202. package/cli/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route.js.nft.json +1 -1
  203. package/cli/app/.next-cli-build/server/app/api/proxy-pools/route.js.nft.json +1 -1
  204. package/cli/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js.nft.json +1 -1
  205. package/cli/app/.next-cli-build/server/app/api/pxpipe/health/route.js.nft.json +1 -1
  206. package/cli/app/.next-cli-build/server/app/api/pxpipe/install/route.js.nft.json +1 -1
  207. package/cli/app/.next-cli-build/server/app/api/pxpipe/restart/route.js.nft.json +1 -1
  208. package/cli/app/.next-cli-build/server/app/api/pxpipe/start/route.js.nft.json +1 -1
  209. package/cli/app/.next-cli-build/server/app/api/pxpipe/stats/route.js.nft.json +1 -1
  210. package/cli/app/.next-cli-build/server/app/api/pxpipe/status/route.js.nft.json +1 -1
  211. package/cli/app/.next-cli-build/server/app/api/pxpipe/stop/route.js.nft.json +1 -1
  212. package/cli/app/.next-cli-build/server/app/api/settings/database/route.js.nft.json +1 -1
  213. package/cli/app/.next-cli-build/server/app/api/settings/proxy-test/route.js.nft.json +1 -1
  214. package/cli/app/.next-cli-build/server/app/api/settings/require-login/route.js.nft.json +1 -1
  215. package/cli/app/.next-cli-build/server/app/api/settings/route.js.nft.json +1 -1
  216. package/cli/app/.next-cli-build/server/app/api/shutdown/route.js.nft.json +1 -1
  217. package/cli/app/.next-cli-build/server/app/api/tags/route.js.nft.json +1 -1
  218. package/cli/app/.next-cli-build/server/app/api/terminal/auth/setup/route.js.nft.json +1 -1
  219. package/cli/app/.next-cli-build/server/app/api/terminal/auth/status/route.js.nft.json +1 -1
  220. package/cli/app/.next-cli-build/server/app/api/terminal/auth/unlock/route.js.nft.json +1 -1
  221. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/input/route.js.nft.json +1 -1
  222. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/resize/route.js.nft.json +1 -1
  223. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/route.js.nft.json +1 -1
  224. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/stream/route.js.nft.json +1 -1
  225. package/cli/app/.next-cli-build/server/app/api/terminal/session/route.js.nft.json +1 -1
  226. package/cli/app/.next-cli-build/server/app/api/translator/console-logs/route.js +1 -1
  227. package/cli/app/.next-cli-build/server/app/api/translator/console-logs/route.js.nft.json +1 -1
  228. package/cli/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js +1 -1
  229. package/cli/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js.nft.json +1 -1
  230. package/cli/app/.next-cli-build/server/app/api/translator/load/route.js.nft.json +1 -1
  231. package/cli/app/.next-cli-build/server/app/api/translator/save/route.js.nft.json +1 -1
  232. package/cli/app/.next-cli-build/server/app/api/translator/send/route.js.nft.json +1 -1
  233. package/cli/app/.next-cli-build/server/app/api/translator/translate/route.js.nft.json +1 -1
  234. package/cli/app/.next-cli-build/server/app/api/tunnel/disable/route.js.nft.json +1 -1
  235. package/cli/app/.next-cli-build/server/app/api/tunnel/enable/route.js.nft.json +1 -1
  236. package/cli/app/.next-cli-build/server/app/api/tunnel/status/route.js.nft.json +1 -1
  237. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-check/route.js.nft.json +1 -1
  238. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route.js.nft.json +1 -1
  239. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route.js.nft.json +1 -1
  240. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js.nft.json +1 -1
  241. package/cli/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
  242. package/cli/app/.next-cli-build/server/app/api/usage/aggregate/route.js.nft.json +1 -1
  243. package/cli/app/.next-cli-build/server/app/api/usage/chart/route.js.nft.json +1 -1
  244. package/cli/app/.next-cli-build/server/app/api/usage/history/route.js.nft.json +1 -1
  245. package/cli/app/.next-cli-build/server/app/api/usage/providers/route.js.nft.json +1 -1
  246. package/cli/app/.next-cli-build/server/app/api/usage/request-details/route.js.nft.json +1 -1
  247. package/cli/app/.next-cli-build/server/app/api/usage/request-logs/route.js.nft.json +1 -1
  248. package/cli/app/.next-cli-build/server/app/api/usage/stats/route.js.nft.json +1 -1
  249. package/cli/app/.next-cli-build/server/app/api/usage/stream/route.js.nft.json +1 -1
  250. package/cli/app/.next-cli-build/server/app/api/v1/api/chat/route.js.nft.json +1 -1
  251. package/cli/app/.next-cli-build/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
  252. package/cli/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
  253. package/cli/app/.next-cli-build/server/app/api/v1/audio/voices/route.js.nft.json +1 -1
  254. package/cli/app/.next-cli-build/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
  255. package/cli/app/.next-cli-build/server/app/api/v1/embeddings/route.js.nft.json +1 -1
  256. package/cli/app/.next-cli-build/server/app/api/v1/images/generations/route.js.nft.json +1 -1
  257. package/cli/app/.next-cli-build/server/app/api/v1/messages/count_tokens/route.js.nft.json +1 -1
  258. package/cli/app/.next-cli-build/server/app/api/v1/messages/route.js.nft.json +1 -1
  259. package/cli/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js.nft.json +1 -1
  260. package/cli/app/.next-cli-build/server/app/api/v1/models/info/route.js.nft.json +1 -1
  261. package/cli/app/.next-cli-build/server/app/api/v1/models/route.js.nft.json +1 -1
  262. package/cli/app/.next-cli-build/server/app/api/v1/responses/compact/route.js.nft.json +1 -1
  263. package/cli/app/.next-cli-build/server/app/api/v1/responses/route.js.nft.json +1 -1
  264. package/cli/app/.next-cli-build/server/app/api/v1/route.js.nft.json +1 -1
  265. package/cli/app/.next-cli-build/server/app/api/v1/search/route.js.nft.json +1 -1
  266. package/cli/app/.next-cli-build/server/app/api/v1/web/fetch/route.js.nft.json +1 -1
  267. package/cli/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
  268. package/cli/app/.next-cli-build/server/app/api/v1beta/models/route.js.nft.json +1 -1
  269. package/cli/app/.next-cli-build/server/app/api/version/route.js +1 -1
  270. package/cli/app/.next-cli-build/server/app/api/version/route.js.nft.json +1 -1
  271. package/cli/app/.next-cli-build/server/app/api/version/shutdown/route.js +1 -1
  272. package/cli/app/.next-cli-build/server/app/api/version/shutdown/route.js.nft.json +1 -1
  273. package/cli/app/.next-cli-build/server/app/api/version/update/route.js +1 -1
  274. package/cli/app/.next-cli-build/server/app/api/version/update/route.js.nft.json +1 -1
  275. package/cli/app/.next-cli-build/server/app/callback/page.js.nft.json +1 -1
  276. package/cli/app/.next-cli-build/server/app/callback/page_client-reference-manifest.js +1 -1
  277. package/cli/app/.next-cli-build/server/app/callback.html +1 -1
  278. package/cli/app/.next-cli-build/server/app/callback.rsc +3 -3
  279. package/cli/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +3 -3
  280. package/cli/app/.next-cli-build/server/app/callback.segments/_head.segment.rsc +1 -1
  281. package/cli/app/.next-cli-build/server/app/callback.segments/_index.segment.rsc +3 -3
  282. package/cli/app/.next-cli-build/server/app/callback.segments/_tree.segment.rsc +1 -1
  283. package/cli/app/.next-cli-build/server/app/callback.segments/callback/__PAGE__.segment.rsc +1 -1
  284. package/cli/app/.next-cli-build/server/app/callback.segments/callback.segment.rsc +1 -1
  285. package/cli/app/.next-cli-build/server/app/dashboard/automation.html +1 -1
  286. package/cli/app/.next-cli-build/server/app/dashboard/automation.rsc +5 -5
  287. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk/dashboard/automation/__PAGE__.segment.rsc +2 -2
  288. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk/dashboard/automation.segment.rsc +1 -1
  289. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  290. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  291. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_full.segment.rsc +5 -5
  292. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_head.segment.rsc +1 -1
  293. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_index.segment.rsc +3 -3
  294. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_tree.segment.rsc +1 -1
  295. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.html +1 -1
  296. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.rsc +5 -5
  297. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +2 -2
  298. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat.segment.rsc +1 -1
  299. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  300. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  301. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_full.segment.rsc +5 -5
  302. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_head.segment.rsc +1 -1
  303. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_index.segment.rsc +3 -3
  304. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +1 -1
  305. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.html +1 -1
  306. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.rsc +5 -5
  307. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +2 -2
  308. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools.segment.rsc +1 -1
  309. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  310. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  311. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_full.segment.rsc +5 -5
  312. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_head.segment.rsc +1 -1
  313. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_index.segment.rsc +3 -3
  314. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +1 -1
  315. package/cli/app/.next-cli-build/server/app/dashboard/combos.html +1 -1
  316. package/cli/app/.next-cli-build/server/app/dashboard/combos.rsc +5 -5
  317. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +2 -2
  318. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos.segment.rsc +1 -1
  319. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  320. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  321. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_full.segment.rsc +5 -5
  322. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_head.segment.rsc +1 -1
  323. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_index.segment.rsc +3 -3
  324. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_tree.segment.rsc +1 -1
  325. package/cli/app/.next-cli-build/server/app/dashboard/context.html +1 -1
  326. package/cli/app/.next-cli-build/server/app/dashboard/context.rsc +5 -5
  327. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/!KGRhc2hib2FyZCk/dashboard/context/__PAGE__.segment.rsc +2 -2
  328. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/!KGRhc2hib2FyZCk/dashboard/context.segment.rsc +1 -1
  329. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  330. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  331. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_full.segment.rsc +5 -5
  332. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_head.segment.rsc +1 -1
  333. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_index.segment.rsc +3 -3
  334. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_tree.segment.rsc +1 -1
  335. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.html +1 -1
  336. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.rsc +5 -5
  337. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +2 -2
  338. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint.segment.rsc +1 -1
  339. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  340. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  341. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_full.segment.rsc +5 -5
  342. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_head.segment.rsc +1 -1
  343. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_index.segment.rsc +3 -3
  344. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_tree.segment.rsc +1 -1
  345. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.html +1 -1
  346. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.rsc +5 -5
  347. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web/__PAGE__.segment.rsc +2 -2
  348. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web.segment.rsc +1 -1
  349. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers.segment.rsc +1 -1
  350. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  351. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  352. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_full.segment.rsc +5 -5
  353. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_head.segment.rsc +1 -1
  354. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_index.segment.rsc +3 -3
  355. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_tree.segment.rsc +1 -1
  356. package/cli/app/.next-cli-build/server/app/dashboard/mitm.html +1 -1
  357. package/cli/app/.next-cli-build/server/app/dashboard/mitm.rsc +5 -5
  358. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +2 -2
  359. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm.segment.rsc +1 -1
  360. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  361. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  362. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_full.segment.rsc +5 -5
  363. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_head.segment.rsc +1 -1
  364. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_index.segment.rsc +3 -3
  365. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_tree.segment.rsc +1 -1
  366. package/cli/app/.next-cli-build/server/app/dashboard/playground.html +1 -1
  367. package/cli/app/.next-cli-build/server/app/dashboard/playground.rsc +5 -5
  368. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk/dashboard/playground/__PAGE__.segment.rsc +2 -2
  369. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk/dashboard/playground.segment.rsc +1 -1
  370. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  371. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  372. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_full.segment.rsc +5 -5
  373. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_head.segment.rsc +1 -1
  374. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_index.segment.rsc +3 -3
  375. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_tree.segment.rsc +1 -1
  376. package/cli/app/.next-cli-build/server/app/dashboard/profile.html +1 -1
  377. package/cli/app/.next-cli-build/server/app/dashboard/profile.rsc +5 -5
  378. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +2 -2
  379. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile.segment.rsc +1 -1
  380. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  381. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  382. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_full.segment.rsc +5 -5
  383. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_head.segment.rsc +1 -1
  384. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_index.segment.rsc +3 -3
  385. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_tree.segment.rsc +1 -1
  386. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.html +1 -1
  387. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.rsc +5 -5
  388. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +2 -2
  389. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new.segment.rsc +1 -1
  390. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  391. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  392. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  393. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_full.segment.rsc +5 -5
  394. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_head.segment.rsc +1 -1
  395. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_index.segment.rsc +3 -3
  396. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_tree.segment.rsc +1 -1
  397. package/cli/app/.next-cli-build/server/app/dashboard/providers.html +1 -1
  398. package/cli/app/.next-cli-build/server/app/dashboard/providers.rsc +5 -5
  399. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +2 -2
  400. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  401. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  402. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  403. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_full.segment.rsc +5 -5
  404. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_head.segment.rsc +1 -1
  405. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_index.segment.rsc +3 -3
  406. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_tree.segment.rsc +1 -1
  407. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.html +1 -1
  408. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.rsc +5 -5
  409. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +2 -2
  410. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools.segment.rsc +1 -1
  411. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  412. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  413. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +5 -5
  414. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_head.segment.rsc +1 -1
  415. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_index.segment.rsc +3 -3
  416. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +1 -1
  417. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.html +1 -1
  418. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.rsc +5 -5
  419. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard/pxpipe/__PAGE__.segment.rsc +2 -2
  420. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard/pxpipe.segment.rsc +1 -1
  421. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  422. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  423. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_full.segment.rsc +5 -5
  424. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_head.segment.rsc +1 -1
  425. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_index.segment.rsc +3 -3
  426. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_tree.segment.rsc +1 -1
  427. package/cli/app/.next-cli-build/server/app/dashboard/quota.html +2 -2
  428. package/cli/app/.next-cli-build/server/app/dashboard/quota.rsc +6 -6
  429. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +3 -3
  430. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota.segment.rsc +1 -1
  431. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  432. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  433. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_full.segment.rsc +6 -6
  434. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_head.segment.rsc +1 -1
  435. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_index.segment.rsc +3 -3
  436. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_tree.segment.rsc +1 -1
  437. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing/page.js.nft.json +1 -1
  438. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  439. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.html +1 -1
  440. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.rsc +3 -3
  441. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +3 -3
  442. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +1 -1
  443. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +3 -3
  444. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +1 -1
  445. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +1 -1
  446. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing.segment.rsc +1 -1
  447. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings.segment.rsc +1 -1
  448. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard.segment.rsc +1 -1
  449. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.html +1 -1
  450. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.rsc +5 -5
  451. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver/__PAGE__.segment.rsc +2 -2
  452. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver.segment.rsc +1 -1
  453. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  454. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  455. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_full.segment.rsc +5 -5
  456. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_head.segment.rsc +1 -1
  457. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_index.segment.rsc +3 -3
  458. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_tree.segment.rsc +1 -1
  459. package/cli/app/.next-cli-build/server/app/dashboard/translator.html +1 -1
  460. package/cli/app/.next-cli-build/server/app/dashboard/translator.rsc +5 -5
  461. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +2 -2
  462. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator.segment.rsc +1 -1
  463. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  464. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  465. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_full.segment.rsc +5 -5
  466. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_head.segment.rsc +1 -1
  467. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_index.segment.rsc +3 -3
  468. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_tree.segment.rsc +1 -1
  469. package/cli/app/.next-cli-build/server/app/dashboard/usage.html +1 -1
  470. package/cli/app/.next-cli-build/server/app/dashboard/usage.rsc +5 -5
  471. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +2 -2
  472. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage.segment.rsc +1 -1
  473. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  474. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  475. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_full.segment.rsc +5 -5
  476. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_head.segment.rsc +1 -1
  477. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_index.segment.rsc +3 -3
  478. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_tree.segment.rsc +1 -1
  479. package/cli/app/.next-cli-build/server/app/dashboard.html +1 -1
  480. package/cli/app/.next-cli-build/server/app/dashboard.rsc +5 -5
  481. package/cli/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +2 -2
  482. package/cli/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  483. package/cli/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  484. package/cli/app/.next-cli-build/server/app/dashboard.segments/_full.segment.rsc +5 -5
  485. package/cli/app/.next-cli-build/server/app/dashboard.segments/_head.segment.rsc +1 -1
  486. package/cli/app/.next-cli-build/server/app/dashboard.segments/_index.segment.rsc +3 -3
  487. package/cli/app/.next-cli-build/server/app/dashboard.segments/_tree.segment.rsc +1 -1
  488. package/cli/app/.next-cli-build/server/app/index.html +1 -1
  489. package/cli/app/.next-cli-build/server/app/index.rsc +3 -3
  490. package/cli/app/.next-cli-build/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  491. package/cli/app/.next-cli-build/server/app/index.segments/_full.segment.rsc +3 -3
  492. package/cli/app/.next-cli-build/server/app/index.segments/_head.segment.rsc +1 -1
  493. package/cli/app/.next-cli-build/server/app/index.segments/_index.segment.rsc +3 -3
  494. package/cli/app/.next-cli-build/server/app/index.segments/_tree.segment.rsc +1 -1
  495. package/cli/app/.next-cli-build/server/app/landing/page.js.nft.json +1 -1
  496. package/cli/app/.next-cli-build/server/app/landing/page_client-reference-manifest.js +1 -1
  497. package/cli/app/.next-cli-build/server/app/landing.html +1 -1
  498. package/cli/app/.next-cli-build/server/app/landing.rsc +3 -3
  499. package/cli/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +3 -3
  500. package/cli/app/.next-cli-build/server/app/landing.segments/_head.segment.rsc +1 -1
  501. package/cli/app/.next-cli-build/server/app/landing.segments/_index.segment.rsc +3 -3
  502. package/cli/app/.next-cli-build/server/app/landing.segments/_tree.segment.rsc +1 -1
  503. package/cli/app/.next-cli-build/server/app/landing.segments/landing/__PAGE__.segment.rsc +1 -1
  504. package/cli/app/.next-cli-build/server/app/landing.segments/landing.segment.rsc +1 -1
  505. package/cli/app/.next-cli-build/server/app/login/page.js.nft.json +1 -1
  506. package/cli/app/.next-cli-build/server/app/login/page_client-reference-manifest.js +1 -1
  507. package/cli/app/.next-cli-build/server/app/login.html +1 -1
  508. package/cli/app/.next-cli-build/server/app/login.rsc +4 -4
  509. package/cli/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +4 -4
  510. package/cli/app/.next-cli-build/server/app/login.segments/_head.segment.rsc +1 -1
  511. package/cli/app/.next-cli-build/server/app/login.segments/_index.segment.rsc +3 -3
  512. package/cli/app/.next-cli-build/server/app/login.segments/_tree.segment.rsc +1 -1
  513. package/cli/app/.next-cli-build/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
  514. package/cli/app/.next-cli-build/server/app/login.segments/login.segment.rsc +1 -1
  515. package/cli/app/.next-cli-build/server/app/manifest.webmanifest/route.js.nft.json +1 -1
  516. package/cli/app/.next-cli-build/server/app/page.js.nft.json +1 -1
  517. package/cli/app/.next-cli-build/server/app/page_client-reference-manifest.js +1 -1
  518. package/cli/app/.next-cli-build/server/app-paths-manifest.json +8 -8
  519. package/cli/app/.next-cli-build/server/chunks/3155.js +1 -1
  520. package/cli/app/.next-cli-build/server/chunks/4746.js +1 -1
  521. package/cli/app/.next-cli-build/server/chunks/5307.js +1 -1
  522. package/cli/app/.next-cli-build/server/chunks/5949.js +2 -2
  523. package/cli/app/.next-cli-build/server/chunks/6269.js +1 -1
  524. package/cli/app/.next-cli-build/server/chunks/8306.js +1 -1
  525. package/cli/app/.next-cli-build/server/middleware-build-manifest.js +1 -1
  526. package/cli/app/.next-cli-build/server/pages/404.html +1 -1
  527. package/cli/app/.next-cli-build/server/pages/500.html +1 -1
  528. package/cli/app/.next-cli-build/static/chunks/{85-9f22ac656fad441a.js → 85-b04d094e538fab0d.js} +1 -1
  529. package/cli/app/CHANGELOG.md +5 -0
  530. package/cli/app/cli/hooks/cloakbrowserRuntime.js +3 -3
  531. package/cli/app/package.json +1 -1
  532. package/cli/app/server.js +1 -1
  533. package/cli/hooks/cloakbrowserRuntime.js +3 -3
  534. package/cli/package.json +1 -1
  535. package/next.config.mjs +2 -3
  536. package/package.json +1 -1
  537. package/scripts/start-standalone.mjs +3 -6
  538. package/src/lib/oauth/services/bulkImportBrowserEngine.js +1 -1
  539. package/src/lib/oauth/services/codebuddyCnPhoneAutomation.js +1 -1
  540. package/src/lib/oauth/services/kiroBulkImportManager.js +1 -1
  541. package/cli/app/cli/hooks/playwrightRuntime.js +0 -235
  542. package/cli/hooks/playwrightRuntime.js +0 -235
  543. /package/cli/app/.next-cli-build/static/{08P_fG40g1iFlcUz0FWz7 → umVx1oTsstlbAeyUcBGhm}/_buildManifest.js +0 -0
  544. /package/cli/app/.next-cli-build/static/{08P_fG40g1iFlcUz0FWz7 → umVx1oTsstlbAeyUcBGhm}/_ssgManifest.js +0 -0
@@ -1,3 +1,8 @@
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
+
1
6
  # v1.0.135 (2026-07-26)
2
7
 
3
8
  ## Breaking
@@ -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");
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zevairouter",
3
- "version": "1.0.135",
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","cloakbrowser","mmdb-lib","node-pty"],"turbopack":{"root":"/Users/firda"},"outputFileTracingExcludes":{"*":["./gitbook/**/*","./cli/.build-home/**/*"]},"outputFileTracingIncludes":{"*":["./node_modules/playwright-core/**/*","./node_modules/playwright/**/*","./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":[]}}
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");
package/cli/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zevairouter-cli",
3
- "version": "1.0.135",
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", "cloakbrowser", "mmdb-lib", "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,11 +27,10 @@ const nextConfig = {
27
27
  "*": ["./gitbook/**/*", "./cli/.build-home/**/*"]
28
28
  },
29
29
  outputFileTracingIncludes: {
30
- // CloakBrowser uses playwright-core as drive peer (no stock Chromium download).
30
+ // CloakBrowser uses playwright-core as drive peer (no stock Chromium / full playwright).
31
31
  // Force-include peers the tracer can't follow.
32
32
  "*": [
33
33
  "./node_modules/playwright-core/**/*",
34
- "./node_modules/playwright/**/*",
35
34
  "./node_modules/cloakbrowser/**/*",
36
35
  "./node_modules/mmdb-lib/**/*",
37
36
  // bulkImportBrowserEngine.js loads these runtime helpers via a dynamic
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zevairouter",
3
- "version": "1.0.135",
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)
@@ -146,7 +146,7 @@ export function buildFingerprintInitScript({ languages, fingerprint } = {}) {
146
146
  * Strip non-Playwright keys from newContext options and attach fingerprint init.
147
147
  * CloakBrowser is Playwright-compatible — `languages` / `fingerprint` are ours only.
148
148
  *
149
- * @param {import('playwright').Browser} browser
149
+ * @param {import('playwright-core').Browser} browser
150
150
  * @param {object} options
151
151
  */
152
152
  export async function newStealthContext(browser, options = {}) {
@@ -122,7 +122,7 @@ const IFRAME_ERROR_SELECTORS = [
122
122
  * Run the phone-number registration automation.
123
123
  *
124
124
  * @param {object} opts
125
- * @param {import('playwright').Page} opts.page Playwright page (from createFreshContext)
125
+ * @param {import('playwright-core').Page} opts.page Browser page (from createFreshContext)
126
126
  * @param {string} [opts.phone] Pre-ordered phone (legacy). Prefer resolvePhone.
127
127
  * @param {function} [opts.resolvePhone] async () => phone — called ONLY after login form
128
128
  * is ready so 5sim is not billed if proxy/nav fails.
@@ -377,7 +377,7 @@ import { parsePlaywrightProxy } from "./proxyUtils.js";
377
377
  export { parsePlaywrightProxy };
378
378
 
379
379
  /**
380
- * @param {import('playwright').Browser} browser
380
+ * @param {import('playwright-core').Browser} browser
381
381
  * @param {string|null} [proxy]
382
382
  * @param {object} [opts]
383
383
  * @param {"default"|"codebuddy-cn"} [opts.profile]
@@ -1,235 +0,0 @@
1
- // Ensure Playwright + Chromium are usable at runtime. `npm i -g zevairouter`
2
- // may not ship a resolvable playwright package under webpack/standalone, and
3
- // does NOT always trigger browser download. We install into ~/.zevai/runtime
4
- // and resolve with real Node require (not webpack's registry).
5
- //
6
- // Bug we fix (Kiro bulk mass-fail):
7
- // "playwright installed but cannot be required"
8
- // → package exists under ~/.zevai/runtime/node_modules/playwright but
9
- // bare require("playwright") is rewritten by webpack and throws.
10
- // Use createRequire + __non_webpack_require__ to bypass webpack rewriting.
11
- const { spawnSync } = require("child_process");
12
- const { createRequire } = require("module");
13
- const fs = require("fs");
14
- const path = require("path");
15
-
16
- const { runNpmInstall, getRuntimeDir, getRuntimeNodeModules } = require("./sqliteRuntime");
17
-
18
- const PLAYWRIGHT_PACKAGE = "playwright";
19
- const PLAYWRIGHT_VERSION = "^1.54.2";
20
-
21
- // Webpack rewrites bare require(); __non_webpack_require__ stays real Node require.
22
- const nodeRequire =
23
- typeof __non_webpack_require__ === "function" ? __non_webpack_require__ : require;
24
-
25
- function getRuntimeRequire() {
26
- try {
27
- const anchor = path.join(getRuntimeDir(), "noop.js");
28
- return createRequire(anchor);
29
- } catch {
30
- return null;
31
- }
32
- }
33
-
34
- let cachedReady = null;
35
-
36
- function tryRequirePlaywright() {
37
- // 1) Runtime-anchored createRequire (works under webpack + any cwd)
38
- try {
39
- const rreq = getRuntimeRequire();
40
- const candidate = path.join(getRuntimeNodeModules(), PLAYWRIGHT_PACKAGE);
41
- if (rreq && fs.existsSync(path.join(candidate, "package.json"))) {
42
- return rreq(candidate);
43
- }
44
- } catch {}
45
-
46
- // 2) Bare real require (global / NODE_PATH)
47
- try {
48
- return nodeRequire(PLAYWRIGHT_PACKAGE);
49
- } catch {}
50
-
51
- // 3) Absolute path via nodeRequire
52
- try {
53
- const candidate = path.join(getRuntimeNodeModules(), PLAYWRIGHT_PACKAGE);
54
- if (fs.existsSync(path.join(candidate, "package.json"))) {
55
- return nodeRequire(candidate);
56
- }
57
- } catch {}
58
-
59
- // 4) Resolve from process cwd node_modules (dev)
60
- try {
61
- const rreq = createRequire(path.join(process.cwd(), "package.json"));
62
- return rreq(PLAYWRIGHT_PACKAGE);
63
- } catch {}
64
-
65
- return null;
66
- }
67
-
68
- function isChromiumBinaryAvailable() {
69
- const playwright = tryRequirePlaywright();
70
- if (!playwright?.chromium?.executablePath) return false;
71
- let executable;
72
- try {
73
- executable = playwright.chromium.executablePath();
74
- } catch {
75
- return false;
76
- }
77
- if (!executable) return false;
78
- return fs.existsSync(executable);
79
- }
80
-
81
- function findCli() {
82
- const candidates = [];
83
- try {
84
- const rreq = getRuntimeRequire();
85
- if (rreq) {
86
- try {
87
- candidates.push(path.join(path.dirname(rreq.resolve(`${PLAYWRIGHT_PACKAGE}/package.json`)), "cli.js"));
88
- } catch {}
89
- try {
90
- candidates.push(path.join(path.dirname(rreq.resolve("playwright-core/package.json")), "cli.js"));
91
- } catch {}
92
- }
93
- } catch {}
94
- try {
95
- const pwPkg = nodeRequire.resolve("playwright/package.json");
96
- candidates.push(path.join(path.dirname(pwPkg), "cli.js"));
97
- } catch {}
98
- try {
99
- const pwCorePkg = nodeRequire.resolve("playwright-core/package.json");
100
- candidates.push(path.join(path.dirname(pwCorePkg), "cli.js"));
101
- } catch {}
102
- try {
103
- candidates.push(path.join(getRuntimeNodeModules(), "playwright", "cli.js"));
104
- candidates.push(path.join(getRuntimeNodeModules(), "playwright-core", "cli.js"));
105
- } catch {}
106
- for (const candidate of candidates) {
107
- if (candidate && fs.existsSync(candidate)) return candidate;
108
- }
109
- return null;
110
- }
111
-
112
- function ensurePlaywrightPackage({ silent = false } = {}) {
113
- const mod = tryRequirePlaywright();
114
- if (mod) return { ok: true, module: mod };
115
-
116
- if (!silent) console.log("\u23f3 Installing playwright package (first run)...");
117
- const installRes = runNpmInstall({
118
- cwd: getRuntimeDir(),
119
- pkgs: [`${PLAYWRIGHT_PACKAGE}@${PLAYWRIGHT_VERSION}`],
120
- extraArgs: ["--no-save"],
121
- timeout: 300_000,
122
- });
123
-
124
- if (!installRes.ok) {
125
- return {
126
- ok: false,
127
- reason: `npm install ${PLAYWRIGHT_PACKAGE} failed: ${installRes.stderr.split("\n").pop().slice(0, 200)}`,
128
- };
129
- }
130
-
131
- // Clear any half-state and re-resolve with createRequire
132
- cachedReady = null;
133
- const installed = tryRequirePlaywright();
134
- if (!installed) {
135
- return {
136
- ok: false,
137
- reason:
138
- "playwright installed into ~/.zevai/runtime but cannot be required " +
139
- "(webpack/module path). Restart zevai after install, or run: " +
140
- 'node -e "require(require(\'path\').join(require(\'os\').homedir(),\'.zevai/runtime/node_modules/playwright\'))"',
141
- };
142
- }
143
- return { ok: true, module: installed };
144
- }
145
-
146
- function runInstall({ silent = false, timeout = 600_000 } = {}) {
147
- const cliPath = findCli();
148
- if (!cliPath) {
149
- return { ok: false, reason: "playwright cli not resolvable" };
150
- }
151
-
152
- if (!silent) console.log("\u23f3 Downloading Playwright Chromium (first run, ~150MB)...");
153
-
154
- // Never honor channel=chrome — Kiro bulk needs bundled Chromium, not /opt/google/chrome
155
- const env = {
156
- ...process.env,
157
- PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: undefined,
158
- };
159
- delete env.PLAYWRIGHT_CHROMIUM_CHANNEL;
160
-
161
- const res = spawnSync(process.execPath, [cliPath, "install", "chromium"], {
162
- stdio: silent ? ["ignore", "pipe", "pipe"] : "inherit",
163
- timeout,
164
- encoding: "utf8",
165
- env,
166
- });
167
-
168
- if (res.status === 0) {
169
- if (!silent) console.log("\u2705 Playwright Chromium ready");
170
- return { ok: true };
171
- }
172
-
173
- const stderr = String(res.stderr || "");
174
- let reason = "unknown error";
175
- if (/ENOTFOUND|ETIMEDOUT|getaddrinfo/i.test(stderr)) reason = "no internet connection";
176
- else if (/EACCES|EPERM/i.test(stderr)) reason = "permission denied";
177
- else if (/ENOSPC/i.test(stderr)) reason = "not enough disk space";
178
- else if (stderr.trim()) reason = stderr.trim().split(/\r?\n/).pop().slice(0, 200);
179
-
180
- return { ok: false, reason };
181
- }
182
-
183
- function ensurePlaywrightRuntime({ silent = false, timeout } = {}) {
184
- if (cachedReady === true) {
185
- const mod = tryRequirePlaywright();
186
- return { ok: true, module: mod };
187
- }
188
-
189
- const pkg = ensurePlaywrightPackage({ silent });
190
- if (!pkg.ok) {
191
- cachedReady = false;
192
- const error = new Error(
193
- `Playwright not available. ${pkg.reason}. ` +
194
- `Run "npm install -g playwright && npx playwright install chromium" manually, then retry.`
195
- );
196
- error.code = "PLAYWRIGHT_PACKAGE_MISSING";
197
- return { ok: false, error };
198
- }
199
-
200
- if (isChromiumBinaryAvailable()) {
201
- cachedReady = true;
202
- return { ok: true, module: pkg.module || tryRequirePlaywright() };
203
- }
204
-
205
- const result = runInstall({ silent, timeout });
206
- if (result.ok && isChromiumBinaryAvailable()) {
207
- cachedReady = true;
208
- return { ok: true, module: pkg.module || tryRequirePlaywright() };
209
- }
210
-
211
- cachedReady = false;
212
- const error = new Error(
213
- `Playwright Chromium not available. ${result.reason}. ` +
214
- `Run "npx playwright install chromium" manually, then retry.`
215
- );
216
- error.code = "PLAYWRIGHT_CHROMIUM_MISSING";
217
- return { ok: false, error };
218
- }
219
-
220
- function loadPlaywrightModule() {
221
- return tryRequirePlaywright();
222
- }
223
-
224
- function resetCache() {
225
- cachedReady = null;
226
- }
227
-
228
- module.exports = {
229
- ensurePlaywrightRuntime,
230
- loadPlaywrightModule,
231
- isChromiumBinaryAvailable,
232
- resetCache,
233
- findPlaywrightCli: findCli,
234
- tryRequirePlaywright,
235
- };
@@ -1,235 +0,0 @@
1
- // Ensure Playwright + Chromium are usable at runtime. `npm i -g zevairouter`
2
- // may not ship a resolvable playwright package under webpack/standalone, and
3
- // does NOT always trigger browser download. We install into ~/.zevai/runtime
4
- // and resolve with real Node require (not webpack's registry).
5
- //
6
- // Bug we fix (Kiro bulk mass-fail):
7
- // "playwright installed but cannot be required"
8
- // → package exists under ~/.zevai/runtime/node_modules/playwright but
9
- // bare require("playwright") is rewritten by webpack and throws.
10
- // Use createRequire + __non_webpack_require__ to bypass webpack rewriting.
11
- const { spawnSync } = require("child_process");
12
- const { createRequire } = require("module");
13
- const fs = require("fs");
14
- const path = require("path");
15
-
16
- const { runNpmInstall, getRuntimeDir, getRuntimeNodeModules } = require("./sqliteRuntime");
17
-
18
- const PLAYWRIGHT_PACKAGE = "playwright";
19
- const PLAYWRIGHT_VERSION = "^1.54.2";
20
-
21
- // Webpack rewrites bare require(); __non_webpack_require__ stays real Node require.
22
- const nodeRequire =
23
- typeof __non_webpack_require__ === "function" ? __non_webpack_require__ : require;
24
-
25
- function getRuntimeRequire() {
26
- try {
27
- const anchor = path.join(getRuntimeDir(), "noop.js");
28
- return createRequire(anchor);
29
- } catch {
30
- return null;
31
- }
32
- }
33
-
34
- let cachedReady = null;
35
-
36
- function tryRequirePlaywright() {
37
- // 1) Runtime-anchored createRequire (works under webpack + any cwd)
38
- try {
39
- const rreq = getRuntimeRequire();
40
- const candidate = path.join(getRuntimeNodeModules(), PLAYWRIGHT_PACKAGE);
41
- if (rreq && fs.existsSync(path.join(candidate, "package.json"))) {
42
- return rreq(candidate);
43
- }
44
- } catch {}
45
-
46
- // 2) Bare real require (global / NODE_PATH)
47
- try {
48
- return nodeRequire(PLAYWRIGHT_PACKAGE);
49
- } catch {}
50
-
51
- // 3) Absolute path via nodeRequire
52
- try {
53
- const candidate = path.join(getRuntimeNodeModules(), PLAYWRIGHT_PACKAGE);
54
- if (fs.existsSync(path.join(candidate, "package.json"))) {
55
- return nodeRequire(candidate);
56
- }
57
- } catch {}
58
-
59
- // 4) Resolve from process cwd node_modules (dev)
60
- try {
61
- const rreq = createRequire(path.join(process.cwd(), "package.json"));
62
- return rreq(PLAYWRIGHT_PACKAGE);
63
- } catch {}
64
-
65
- return null;
66
- }
67
-
68
- function isChromiumBinaryAvailable() {
69
- const playwright = tryRequirePlaywright();
70
- if (!playwright?.chromium?.executablePath) return false;
71
- let executable;
72
- try {
73
- executable = playwright.chromium.executablePath();
74
- } catch {
75
- return false;
76
- }
77
- if (!executable) return false;
78
- return fs.existsSync(executable);
79
- }
80
-
81
- function findCli() {
82
- const candidates = [];
83
- try {
84
- const rreq = getRuntimeRequire();
85
- if (rreq) {
86
- try {
87
- candidates.push(path.join(path.dirname(rreq.resolve(`${PLAYWRIGHT_PACKAGE}/package.json`)), "cli.js"));
88
- } catch {}
89
- try {
90
- candidates.push(path.join(path.dirname(rreq.resolve("playwright-core/package.json")), "cli.js"));
91
- } catch {}
92
- }
93
- } catch {}
94
- try {
95
- const pwPkg = nodeRequire.resolve("playwright/package.json");
96
- candidates.push(path.join(path.dirname(pwPkg), "cli.js"));
97
- } catch {}
98
- try {
99
- const pwCorePkg = nodeRequire.resolve("playwright-core/package.json");
100
- candidates.push(path.join(path.dirname(pwCorePkg), "cli.js"));
101
- } catch {}
102
- try {
103
- candidates.push(path.join(getRuntimeNodeModules(), "playwright", "cli.js"));
104
- candidates.push(path.join(getRuntimeNodeModules(), "playwright-core", "cli.js"));
105
- } catch {}
106
- for (const candidate of candidates) {
107
- if (candidate && fs.existsSync(candidate)) return candidate;
108
- }
109
- return null;
110
- }
111
-
112
- function ensurePlaywrightPackage({ silent = false } = {}) {
113
- const mod = tryRequirePlaywright();
114
- if (mod) return { ok: true, module: mod };
115
-
116
- if (!silent) console.log("\u23f3 Installing playwright package (first run)...");
117
- const installRes = runNpmInstall({
118
- cwd: getRuntimeDir(),
119
- pkgs: [`${PLAYWRIGHT_PACKAGE}@${PLAYWRIGHT_VERSION}`],
120
- extraArgs: ["--no-save"],
121
- timeout: 300_000,
122
- });
123
-
124
- if (!installRes.ok) {
125
- return {
126
- ok: false,
127
- reason: `npm install ${PLAYWRIGHT_PACKAGE} failed: ${installRes.stderr.split("\n").pop().slice(0, 200)}`,
128
- };
129
- }
130
-
131
- // Clear any half-state and re-resolve with createRequire
132
- cachedReady = null;
133
- const installed = tryRequirePlaywright();
134
- if (!installed) {
135
- return {
136
- ok: false,
137
- reason:
138
- "playwright installed into ~/.zevai/runtime but cannot be required " +
139
- "(webpack/module path). Restart zevai after install, or run: " +
140
- 'node -e "require(require(\'path\').join(require(\'os\').homedir(),\'.zevai/runtime/node_modules/playwright\'))"',
141
- };
142
- }
143
- return { ok: true, module: installed };
144
- }
145
-
146
- function runInstall({ silent = false, timeout = 600_000 } = {}) {
147
- const cliPath = findCli();
148
- if (!cliPath) {
149
- return { ok: false, reason: "playwright cli not resolvable" };
150
- }
151
-
152
- if (!silent) console.log("\u23f3 Downloading Playwright Chromium (first run, ~150MB)...");
153
-
154
- // Never honor channel=chrome — Kiro bulk needs bundled Chromium, not /opt/google/chrome
155
- const env = {
156
- ...process.env,
157
- PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: undefined,
158
- };
159
- delete env.PLAYWRIGHT_CHROMIUM_CHANNEL;
160
-
161
- const res = spawnSync(process.execPath, [cliPath, "install", "chromium"], {
162
- stdio: silent ? ["ignore", "pipe", "pipe"] : "inherit",
163
- timeout,
164
- encoding: "utf8",
165
- env,
166
- });
167
-
168
- if (res.status === 0) {
169
- if (!silent) console.log("\u2705 Playwright Chromium ready");
170
- return { ok: true };
171
- }
172
-
173
- const stderr = String(res.stderr || "");
174
- let reason = "unknown error";
175
- if (/ENOTFOUND|ETIMEDOUT|getaddrinfo/i.test(stderr)) reason = "no internet connection";
176
- else if (/EACCES|EPERM/i.test(stderr)) reason = "permission denied";
177
- else if (/ENOSPC/i.test(stderr)) reason = "not enough disk space";
178
- else if (stderr.trim()) reason = stderr.trim().split(/\r?\n/).pop().slice(0, 200);
179
-
180
- return { ok: false, reason };
181
- }
182
-
183
- function ensurePlaywrightRuntime({ silent = false, timeout } = {}) {
184
- if (cachedReady === true) {
185
- const mod = tryRequirePlaywright();
186
- return { ok: true, module: mod };
187
- }
188
-
189
- const pkg = ensurePlaywrightPackage({ silent });
190
- if (!pkg.ok) {
191
- cachedReady = false;
192
- const error = new Error(
193
- `Playwright not available. ${pkg.reason}. ` +
194
- `Run "npm install -g playwright && npx playwright install chromium" manually, then retry.`
195
- );
196
- error.code = "PLAYWRIGHT_PACKAGE_MISSING";
197
- return { ok: false, error };
198
- }
199
-
200
- if (isChromiumBinaryAvailable()) {
201
- cachedReady = true;
202
- return { ok: true, module: pkg.module || tryRequirePlaywright() };
203
- }
204
-
205
- const result = runInstall({ silent, timeout });
206
- if (result.ok && isChromiumBinaryAvailable()) {
207
- cachedReady = true;
208
- return { ok: true, module: pkg.module || tryRequirePlaywright() };
209
- }
210
-
211
- cachedReady = false;
212
- const error = new Error(
213
- `Playwright Chromium not available. ${result.reason}. ` +
214
- `Run "npx playwright install chromium" manually, then retry.`
215
- );
216
- error.code = "PLAYWRIGHT_CHROMIUM_MISSING";
217
- return { ok: false, error };
218
- }
219
-
220
- function loadPlaywrightModule() {
221
- return tryRequirePlaywright();
222
- }
223
-
224
- function resetCache() {
225
- cachedReady = null;
226
- }
227
-
228
- module.exports = {
229
- ensurePlaywrightRuntime,
230
- loadPlaywrightModule,
231
- isChromiumBinaryAvailable,
232
- resetCache,
233
- findPlaywrightCli: findCli,
234
- tryRequirePlaywright,
235
- };