zevairouter 1.0.62 → 1.0.65

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (400) hide show
  1. package/CHANGELOG.md +31 -8
  2. package/README.md +58 -10
  3. package/README.zh-CN.md +37 -0
  4. package/cli/app/.next-cli-build/BUILD_ID +1 -1
  5. package/cli/app/.next-cli-build/app-path-routes-manifest.json +20 -20
  6. package/cli/app/.next-cli-build/build-manifest.json +2 -2
  7. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/automation/page_client-reference-manifest.js +1 -1
  8. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
  9. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page_client-reference-manifest.js +1 -1
  10. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  11. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  12. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
  13. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/context/page_client-reference-manifest.js +1 -1
  14. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  15. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
  16. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -1
  17. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +1 -1
  18. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +1 -1
  19. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
  20. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  21. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/playground/page_client-reference-manifest.js +1 -1
  22. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  23. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  24. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  25. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  26. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
  27. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page_client-reference-manifest.js +1 -1
  28. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
  29. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/terminal/page_client-reference-manifest.js +1 -1
  30. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page_client-reference-manifest.js +1 -1
  31. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  32. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  33. package/cli/app/.next-cli-build/server/app/_global-error/page_client-reference-manifest.js +1 -1
  34. package/cli/app/.next-cli-build/server/app/_global-error.html +1 -1
  35. package/cli/app/.next-cli-build/server/app/_global-error.rsc +1 -1
  36. package/cli/app/.next-cli-build/server/app/_global-error.segments/_full.segment.rsc +1 -1
  37. package/cli/app/.next-cli-build/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  38. package/cli/app/.next-cli-build/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  39. package/cli/app/.next-cli-build/server/app/_global-error.segments/_head.segment.rsc +1 -1
  40. package/cli/app/.next-cli-build/server/app/_global-error.segments/_index.segment.rsc +1 -1
  41. package/cli/app/.next-cli-build/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  42. package/cli/app/.next-cli-build/server/app/_not-found/page_client-reference-manifest.js +1 -1
  43. package/cli/app/.next-cli-build/server/app/_not-found.html +1 -1
  44. package/cli/app/.next-cli-build/server/app/_not-found.rsc +3 -3
  45. package/cli/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +3 -3
  46. package/cli/app/.next-cli-build/server/app/_not-found.segments/_head.segment.rsc +1 -1
  47. package/cli/app/.next-cli-build/server/app/_not-found.segments/_index.segment.rsc +3 -3
  48. package/cli/app/.next-cli-build/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  49. package/cli/app/.next-cli-build/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  50. package/cli/app/.next-cli-build/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  51. package/cli/app/.next-cli-build/server/app/api/models/route.js +1 -1
  52. package/cli/app/.next-cli-build/server/app/api/models/test/route.js +1 -1
  53. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
  54. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
  55. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/route.js.nft.json +1 -1
  56. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/latest/route.js.nft.json +1 -1
  57. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/route.js.nft.json +1 -1
  58. package/cli/app/.next-cli-build/server/app/api/oauth/autoclaw/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
  59. package/cli/app/.next-cli-build/server/app/api/oauth/autoclaw/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
  60. package/cli/app/.next-cli-build/server/app/api/oauth/autoclaw/bulk-import/[jobId]/route.js.nft.json +1 -1
  61. package/cli/app/.next-cli-build/server/app/api/oauth/autoclaw/bulk-import/latest/route.js.nft.json +1 -1
  62. package/cli/app/.next-cli-build/server/app/api/oauth/autoclaw/bulk-import/route.js.nft.json +1 -1
  63. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
  64. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
  65. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/route.js.nft.json +1 -1
  66. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/latest/route.js.nft.json +1 -1
  67. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/route.js.nft.json +1 -1
  68. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/cancel/route.js +1 -1
  69. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
  70. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/manual/[workerId]/route.js +1 -1
  71. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
  72. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/route.js +1 -1
  73. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/route.js.nft.json +1 -1
  74. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/latest/route.js +1 -1
  75. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/latest/route.js.nft.json +1 -1
  76. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/route.js +1 -1
  77. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/route.js.nft.json +1 -1
  78. package/cli/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
  79. package/cli/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
  80. package/cli/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/[jobId]/route.js.nft.json +1 -1
  81. package/cli/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/latest/route.js.nft.json +1 -1
  82. package/cli/app/.next-cli-build/server/app/api/oauth/grok-cli/bulk-import/route.js.nft.json +1 -1
  83. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
  84. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
  85. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/route.js.nft.json +1 -1
  86. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/latest/route.js.nft.json +1 -1
  87. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/route.js.nft.json +1 -1
  88. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js.nft.json +1 -1
  89. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
  90. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
  91. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/route.js.nft.json +1 -1
  92. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/latest/route.js.nft.json +1 -1
  93. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/route.js.nft.json +1 -1
  94. package/cli/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js +1 -1
  95. package/cli/app/.next-cli-build/server/app/api/providers/route.js +1 -1
  96. package/cli/app/.next-cli-build/server/app/api/providers/validate/route.js +1 -1
  97. package/cli/app/.next-cli-build/server/app/api/settings/database/route.js +1 -1
  98. package/cli/app/.next-cli-build/server/app/api/settings/route.js +1 -1
  99. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/input/route.js.nft.json +1 -1
  100. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/resize/route.js.nft.json +1 -1
  101. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/route.js.nft.json +1 -1
  102. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/stream/route.js.nft.json +1 -1
  103. package/cli/app/.next-cli-build/server/app/api/terminal/session/route.js.nft.json +1 -1
  104. package/cli/app/.next-cli-build/server/app/api/translator/console-logs/route.js +1 -1
  105. package/cli/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js +1 -1
  106. package/cli/app/.next-cli-build/server/app/api/version/route.js +1 -1
  107. package/cli/app/.next-cli-build/server/app/api/version/shutdown/route.js +1 -1
  108. package/cli/app/.next-cli-build/server/app/api/version/update/route.js +1 -1
  109. package/cli/app/.next-cli-build/server/app/callback/page_client-reference-manifest.js +1 -1
  110. package/cli/app/.next-cli-build/server/app/callback.html +1 -1
  111. package/cli/app/.next-cli-build/server/app/callback.rsc +3 -3
  112. package/cli/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +3 -3
  113. package/cli/app/.next-cli-build/server/app/callback.segments/_head.segment.rsc +1 -1
  114. package/cli/app/.next-cli-build/server/app/callback.segments/_index.segment.rsc +3 -3
  115. package/cli/app/.next-cli-build/server/app/callback.segments/_tree.segment.rsc +1 -1
  116. package/cli/app/.next-cli-build/server/app/callback.segments/callback/__PAGE__.segment.rsc +1 -1
  117. package/cli/app/.next-cli-build/server/app/callback.segments/callback.segment.rsc +1 -1
  118. package/cli/app/.next-cli-build/server/app/dashboard/automation.html +1 -1
  119. package/cli/app/.next-cli-build/server/app/dashboard/automation.rsc +5 -5
  120. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk/dashboard/automation/__PAGE__.segment.rsc +2 -2
  121. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk/dashboard/automation.segment.rsc +1 -1
  122. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  123. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  124. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_full.segment.rsc +5 -5
  125. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_head.segment.rsc +1 -1
  126. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_index.segment.rsc +3 -3
  127. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_tree.segment.rsc +1 -1
  128. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.html +1 -1
  129. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.rsc +5 -5
  130. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +2 -2
  131. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat.segment.rsc +1 -1
  132. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  133. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  134. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_full.segment.rsc +5 -5
  135. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_head.segment.rsc +1 -1
  136. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_index.segment.rsc +3 -3
  137. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +1 -1
  138. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.html +1 -1
  139. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.rsc +5 -5
  140. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +2 -2
  141. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools.segment.rsc +1 -1
  142. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  143. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  144. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_full.segment.rsc +5 -5
  145. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_head.segment.rsc +1 -1
  146. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_index.segment.rsc +3 -3
  147. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +1 -1
  148. package/cli/app/.next-cli-build/server/app/dashboard/combos.html +1 -1
  149. package/cli/app/.next-cli-build/server/app/dashboard/combos.rsc +5 -5
  150. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +2 -2
  151. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos.segment.rsc +1 -1
  152. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  153. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  154. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_full.segment.rsc +5 -5
  155. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_head.segment.rsc +1 -1
  156. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_index.segment.rsc +3 -3
  157. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_tree.segment.rsc +1 -1
  158. package/cli/app/.next-cli-build/server/app/dashboard/context.html +1 -1
  159. package/cli/app/.next-cli-build/server/app/dashboard/context.rsc +5 -5
  160. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/!KGRhc2hib2FyZCk/dashboard/context/__PAGE__.segment.rsc +2 -2
  161. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/!KGRhc2hib2FyZCk/dashboard/context.segment.rsc +1 -1
  162. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  163. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  164. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_full.segment.rsc +5 -5
  165. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_head.segment.rsc +1 -1
  166. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_index.segment.rsc +3 -3
  167. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_tree.segment.rsc +1 -1
  168. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.html +1 -1
  169. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.rsc +5 -5
  170. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +2 -2
  171. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint.segment.rsc +1 -1
  172. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  173. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  174. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_full.segment.rsc +5 -5
  175. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_head.segment.rsc +1 -1
  176. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_index.segment.rsc +3 -3
  177. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_tree.segment.rsc +1 -1
  178. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.html +1 -1
  179. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.rsc +5 -5
  180. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web/__PAGE__.segment.rsc +2 -2
  181. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web.segment.rsc +1 -1
  182. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers.segment.rsc +1 -1
  183. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  184. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  185. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_full.segment.rsc +5 -5
  186. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_head.segment.rsc +1 -1
  187. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_index.segment.rsc +3 -3
  188. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_tree.segment.rsc +1 -1
  189. package/cli/app/.next-cli-build/server/app/dashboard/mitm.html +1 -1
  190. package/cli/app/.next-cli-build/server/app/dashboard/mitm.rsc +5 -5
  191. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +2 -2
  192. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm.segment.rsc +1 -1
  193. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  194. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  195. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_full.segment.rsc +5 -5
  196. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_head.segment.rsc +1 -1
  197. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_index.segment.rsc +3 -3
  198. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_tree.segment.rsc +1 -1
  199. package/cli/app/.next-cli-build/server/app/dashboard/playground.html +1 -1
  200. package/cli/app/.next-cli-build/server/app/dashboard/playground.rsc +5 -5
  201. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk/dashboard/playground/__PAGE__.segment.rsc +2 -2
  202. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk/dashboard/playground.segment.rsc +1 -1
  203. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  204. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  205. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_full.segment.rsc +5 -5
  206. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_head.segment.rsc +1 -1
  207. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_index.segment.rsc +3 -3
  208. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_tree.segment.rsc +1 -1
  209. package/cli/app/.next-cli-build/server/app/dashboard/profile.html +1 -1
  210. package/cli/app/.next-cli-build/server/app/dashboard/profile.rsc +5 -5
  211. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +2 -2
  212. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile.segment.rsc +1 -1
  213. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  214. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  215. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_full.segment.rsc +5 -5
  216. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_head.segment.rsc +1 -1
  217. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_index.segment.rsc +3 -3
  218. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_tree.segment.rsc +1 -1
  219. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.html +1 -1
  220. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.rsc +5 -5
  221. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +2 -2
  222. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new.segment.rsc +1 -1
  223. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  224. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  225. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  226. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_full.segment.rsc +5 -5
  227. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_head.segment.rsc +1 -1
  228. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_index.segment.rsc +3 -3
  229. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_tree.segment.rsc +1 -1
  230. package/cli/app/.next-cli-build/server/app/dashboard/providers.html +1 -1
  231. package/cli/app/.next-cli-build/server/app/dashboard/providers.rsc +5 -5
  232. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +2 -2
  233. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  234. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  235. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  236. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_full.segment.rsc +5 -5
  237. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_head.segment.rsc +1 -1
  238. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_index.segment.rsc +3 -3
  239. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_tree.segment.rsc +1 -1
  240. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.html +1 -1
  241. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.rsc +5 -5
  242. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +2 -2
  243. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools.segment.rsc +1 -1
  244. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  245. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  246. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +5 -5
  247. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_head.segment.rsc +1 -1
  248. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_index.segment.rsc +3 -3
  249. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +1 -1
  250. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.html +1 -1
  251. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.rsc +5 -5
  252. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard/pxpipe/__PAGE__.segment.rsc +2 -2
  253. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard/pxpipe.segment.rsc +1 -1
  254. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  255. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  256. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_full.segment.rsc +5 -5
  257. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_head.segment.rsc +1 -1
  258. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_index.segment.rsc +3 -3
  259. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_tree.segment.rsc +1 -1
  260. package/cli/app/.next-cli-build/server/app/dashboard/quota.html +2 -2
  261. package/cli/app/.next-cli-build/server/app/dashboard/quota.rsc +6 -6
  262. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +3 -3
  263. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota.segment.rsc +1 -1
  264. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  265. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  266. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_full.segment.rsc +6 -6
  267. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_head.segment.rsc +1 -1
  268. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_index.segment.rsc +3 -3
  269. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_tree.segment.rsc +1 -1
  270. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  271. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.html +1 -1
  272. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.rsc +3 -3
  273. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +3 -3
  274. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +1 -1
  275. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +3 -3
  276. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +1 -1
  277. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +1 -1
  278. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing.segment.rsc +1 -1
  279. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings.segment.rsc +1 -1
  280. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard.segment.rsc +1 -1
  281. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.html +1 -1
  282. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.rsc +5 -5
  283. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver/__PAGE__.segment.rsc +2 -2
  284. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver.segment.rsc +1 -1
  285. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  286. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  287. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_full.segment.rsc +5 -5
  288. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_head.segment.rsc +1 -1
  289. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_index.segment.rsc +3 -3
  290. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_tree.segment.rsc +1 -1
  291. package/cli/app/.next-cli-build/server/app/dashboard/translator.html +1 -1
  292. package/cli/app/.next-cli-build/server/app/dashboard/translator.rsc +5 -5
  293. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +2 -2
  294. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator.segment.rsc +1 -1
  295. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  296. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  297. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_full.segment.rsc +5 -5
  298. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_head.segment.rsc +1 -1
  299. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_index.segment.rsc +3 -3
  300. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_tree.segment.rsc +1 -1
  301. package/cli/app/.next-cli-build/server/app/dashboard/usage.html +1 -1
  302. package/cli/app/.next-cli-build/server/app/dashboard/usage.rsc +5 -5
  303. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +2 -2
  304. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage.segment.rsc +1 -1
  305. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  306. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  307. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_full.segment.rsc +5 -5
  308. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_head.segment.rsc +1 -1
  309. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_index.segment.rsc +3 -3
  310. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_tree.segment.rsc +1 -1
  311. package/cli/app/.next-cli-build/server/app/dashboard.html +1 -1
  312. package/cli/app/.next-cli-build/server/app/dashboard.rsc +5 -5
  313. package/cli/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +2 -2
  314. package/cli/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  315. package/cli/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  316. package/cli/app/.next-cli-build/server/app/dashboard.segments/_full.segment.rsc +5 -5
  317. package/cli/app/.next-cli-build/server/app/dashboard.segments/_head.segment.rsc +1 -1
  318. package/cli/app/.next-cli-build/server/app/dashboard.segments/_index.segment.rsc +3 -3
  319. package/cli/app/.next-cli-build/server/app/dashboard.segments/_tree.segment.rsc +1 -1
  320. package/cli/app/.next-cli-build/server/app/index.html +1 -1
  321. package/cli/app/.next-cli-build/server/app/index.rsc +3 -3
  322. package/cli/app/.next-cli-build/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  323. package/cli/app/.next-cli-build/server/app/index.segments/_full.segment.rsc +3 -3
  324. package/cli/app/.next-cli-build/server/app/index.segments/_head.segment.rsc +1 -1
  325. package/cli/app/.next-cli-build/server/app/index.segments/_index.segment.rsc +3 -3
  326. package/cli/app/.next-cli-build/server/app/index.segments/_tree.segment.rsc +1 -1
  327. package/cli/app/.next-cli-build/server/app/landing/page.js +1 -1
  328. package/cli/app/.next-cli-build/server/app/landing/page_client-reference-manifest.js +1 -1
  329. package/cli/app/.next-cli-build/server/app/landing.html +1 -1
  330. package/cli/app/.next-cli-build/server/app/landing.rsc +4 -4
  331. package/cli/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +4 -4
  332. package/cli/app/.next-cli-build/server/app/landing.segments/_head.segment.rsc +1 -1
  333. package/cli/app/.next-cli-build/server/app/landing.segments/_index.segment.rsc +3 -3
  334. package/cli/app/.next-cli-build/server/app/landing.segments/_tree.segment.rsc +1 -1
  335. package/cli/app/.next-cli-build/server/app/landing.segments/landing/__PAGE__.segment.rsc +2 -2
  336. package/cli/app/.next-cli-build/server/app/landing.segments/landing.segment.rsc +1 -1
  337. package/cli/app/.next-cli-build/server/app/login/page_client-reference-manifest.js +1 -1
  338. package/cli/app/.next-cli-build/server/app/login.html +1 -1
  339. package/cli/app/.next-cli-build/server/app/login.rsc +4 -4
  340. package/cli/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +4 -4
  341. package/cli/app/.next-cli-build/server/app/login.segments/_head.segment.rsc +1 -1
  342. package/cli/app/.next-cli-build/server/app/login.segments/_index.segment.rsc +3 -3
  343. package/cli/app/.next-cli-build/server/app/login.segments/_tree.segment.rsc +1 -1
  344. package/cli/app/.next-cli-build/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
  345. package/cli/app/.next-cli-build/server/app/login.segments/login.segment.rsc +1 -1
  346. package/cli/app/.next-cli-build/server/app/page_client-reference-manifest.js +1 -1
  347. package/cli/app/.next-cli-build/server/app-paths-manifest.json +20 -20
  348. package/cli/app/.next-cli-build/server/chunks/3110.js +1 -1
  349. package/cli/app/.next-cli-build/server/chunks/3407.js +1 -1
  350. package/cli/app/.next-cli-build/server/chunks/4746.js +1 -1
  351. package/cli/app/.next-cli-build/server/chunks/5681.js +1 -1
  352. package/cli/app/.next-cli-build/server/chunks/5949.js +8 -3
  353. package/cli/app/.next-cli-build/server/chunks/6896.js +1 -1
  354. package/cli/app/.next-cli-build/server/chunks/7276.js +1 -1
  355. package/cli/app/.next-cli-build/server/chunks/8157.js +1 -1
  356. package/cli/app/.next-cli-build/server/chunks/8371.js +1 -1
  357. package/cli/app/.next-cli-build/server/middleware-build-manifest.js +1 -1
  358. package/cli/app/.next-cli-build/server/pages/404.html +1 -1
  359. package/cli/app/.next-cli-build/server/pages/500.html +1 -1
  360. package/cli/app/.next-cli-build/static/chunks/{3702-3049f543449956ae.js → 3702-a3e0eb456327db63.js} +1 -1
  361. package/cli/app/.next-cli-build/static/chunks/app/landing/page-6621ec8b157e77cc.js +1 -0
  362. package/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/src/lib/terminal/ptyBridge.py +163 -0
  363. package/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/src/lib/terminal/ptyBridge.py +163 -0
  364. package/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/src/lib/terminal/ptyBridge.py +163 -0
  365. package/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/src/lib/terminal/ptyBridge.py +163 -0
  366. package/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/src/lib/terminal/ptyBridge.py +163 -0
  367. package/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/src/lib/terminal/ptyBridge.py +163 -0
  368. package/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/src/lib/terminal/ptyBridge.py +163 -0
  369. package/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/src/lib/terminal/ptyBridge.py +163 -0
  370. package/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/src/lib/terminal/ptyBridge.py +163 -0
  371. package/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/src/lib/terminal/ptyBridge.py +163 -0
  372. package/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/cli/app/src/lib/terminal/ptyBridge.py +163 -0
  373. package/cli/app/cli/hooks/camoufoxRuntime.js +227 -24
  374. package/cli/app/cli/hooks/cloakbrowserRuntime.js +0 -7
  375. package/cli/app/package.json +1 -1
  376. package/cli/app/src/lib/oauth/services/displayEnv.js +134 -0
  377. package/cli/hooks/camoufoxRuntime.js +227 -24
  378. package/cli/hooks/cloakbrowserRuntime.js +0 -7
  379. package/cli/package.json +1 -1
  380. package/i18n/README.ja-JP.md +19 -1191
  381. package/i18n/README.ru.md +19 -1293
  382. package/i18n/README.vi.md +19 -1292
  383. package/i18n/README.zh-CN.md +19 -1288
  384. package/open-sse/config/kiroConstants.js +1 -1
  385. package/package.json +1 -1
  386. package/src/app/landing/components/Features.js +2 -2
  387. package/src/app/landing/components/HeroSection.js +1 -1
  388. package/src/app/landing/components/HowItWorks.js +2 -2
  389. package/src/app/landing/page.js +3 -3
  390. package/src/lib/network/outboundProxy.js +37 -23
  391. package/src/lib/oauth/services/bulkImportBrowserEngine.js +219 -22
  392. package/src/lib/oauth/services/codebuddyCnBulkImportManager.js +161 -72
  393. package/src/lib/oauth/services/codebuddyCnPhoneAutomation.js +95 -41
  394. package/src/lib/oauth/services/kiroBulkImportManager.js +18 -13
  395. package/src/mitm/manager.js +1 -1
  396. package/src/shared/constants/providers.js +4 -4
  397. package/cli/app/.next-cli-build/static/chunks/app/landing/page-77b3f78b93a8d0c7.js +0 -1
  398. package/cli/app/src/lib/oauth/services/bulkImportBrowserEngine.js +0 -325
  399. /package/cli/app/.next-cli-build/static/{4qzgXNlTatuSwREqjg1Tx → UogfdHPvWmU8zuWF5IR-t}/_buildManifest.js +0 -0
  400. /package/cli/app/.next-cli-build/static/{4qzgXNlTatuSwREqjg1Tx → UogfdHPvWmU8zuWF5IR-t}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- "use strict";exports.id=5681,exports.ids=[5681],exports.modules={75681:(a,b,c)=>{c.d(b,{AI_PROVIDERS:()=>r,DI:()=>m,IS:()=>e,JH:()=>l,Pd:()=>n,br:()=>k,fg:()=>j,gC:()=>q,gb:()=>p,jO:()=>x,js:()=>v,mq:()=>o,nJ:()=>f,rs:()=>t,wG:()=>u,wb:()=>w,zN:()=>i,zt:()=>s});let d="⚠️ Risk Notice: This provider uses a subscription/OAuth session not officially licensed for proxy/router use. Account may be restricted or banned. Use at your own risk.",e={kiro:{id:"kiro",alias:"kr",name:"Kiro AI",icon:"psychology_alt",color:"#FF6B35",deprecated:!0,deprecationNotice:d,website:"https://kiro.dev",notice:{signupUrl:"https://kiro.dev"}},"gemini-cli":{id:"gemini-cli",alias:"gc",name:"Gemini CLI",icon:"terminal",color:"#4285F4",deprecated:!0,deprecationNotice:d,website:"https://github.com/google-gemini/gemini-cli",notice:{signupUrl:"https://github.com/google-gemini/gemini-cli"}},codebuddy:{id:"codebuddy",alias:"cb",name:"CodeBuddy",icon:"smart_toy",color:"#006EFF",deprecated:!0,deprecationNotice:d,website:"https://www.codebuddy.ai",notice:{signupUrl:"https://www.codebuddy.ai/login",apiKeyUrl:"https://www.codebuddy.ai/profile"},authModes:["oauth","apikey"]},"codebuddy-cn":{id:"codebuddy-cn",alias:"cb-cn",name:"CodeBuddy CN",icon:"smart_toy",color:"#1E40AF",deprecated:!0,deprecationNotice:d,website:"https://www.codebuddy.cn",notice:{signupUrl:"https://copilot.tencent.com",apiKeyUrl:"https://copilot.tencent.com/profile/"},authModes:["oauth","apikey"]},qoder:{id:"qoder",alias:"qd",name:"Qoder",icon:"water_drop",color:"#EC4899",deprecated:!0,deprecationNotice:d,website:"https://qoder.com",notice:{signupUrl:"https://qoder.com"}},opencode:{id:"opencode",alias:"oc",name:"OpenCode Free",icon:"terminal",color:"#E87040",textIcon:"OC",noAuth:!0,passthroughModels:!0,modelsFetcher:{url:"https://opencode.ai/zen/v1/models",type:"opencode-free"}},"mimo-free":{id:"mimo-free",alias:"mmf",name:"MiMo Code Free",icon:"smart_toy",color:"#FF6900",textIcon:"MF",noAuth:!0,hasFree:!0,passthroughModels:!0,website:"https://xiaomimimo.com",notice:{text:"Free Xiaomi MiMo Code endpoint (no API key). Uses bootstrap JWT + Chrome UA. May rate-limit or break if upstream anti-abuse changes."}}},f={openrouter:{id:"openrouter",alias:"openrouter",name:"OpenRouter",icon:"router",color:"#F97316",textIcon:"OR",website:"https://openrouter.ai",notice:{text:"Free tier: 27+ free models, no credit card needed, 200 req/day. After $10 credit: 1,000 req/day.",apiKeyUrl:"https://openrouter.ai/settings/keys"},modelsFetcher:{url:"https://openrouter.ai/api/v1/models",type:"openrouter-free"},passthroughModels:!0,serviceKinds:["llm","embedding","tts","imageToText"],embeddingConfig:{baseUrl:"https://openrouter.ai/api/v1/embeddings",authType:"apikey",authHeader:"bearer",models:[{id:"openai/text-embedding-3-small",name:"Text Embedding 3 Small (OpenRouter)",dimensions:1536},{id:"openai/text-embedding-3-large",name:"Text Embedding 3 Large (OpenRouter)",dimensions:3072},{id:"openai/text-embedding-ada-002",name:"Text Embedding Ada 002 (OpenRouter)",dimensions:1536}]}},nvidia:{id:"nvidia",alias:"nvidia",name:"NVIDIA NIM",icon:"developer_board",color:"#76B900",textIcon:"NV",website:"https://developer.nvidia.com/nim",notice:{text:"Free access for NVIDIA Developer Program members (prototyping & testing).",apiKeyUrl:"https://build.nvidia.com/settings/api-keys"},serviceKinds:["llm","tts","embedding"],ttsConfig:{baseUrl:"https://integrate.api.nvidia.com/v1/audio/speech",authType:"apikey",authHeader:"bearer",format:"nvidia-tts",models:[{id:"fastpitch",name:"FastPitch"},{id:"tacotron2",name:"Tacotron2"}]},embeddingConfig:{baseUrl:"https://integrate.api.nvidia.com/v1/embeddings",authType:"apikey",authHeader:"bearer",models:[{id:"nvidia/nv-embedqa-e5-v5",name:"NV EmbedQA E5 v5",dimensions:1024}]}},ollama:{id:"ollama",alias:"ollama",name:"Ollama Cloud",icon:"cloud",color:"#ffffffff",textIcon:"OL",website:"https://ollama.com",notice:{text:"Free tier: light usage, 1 cloud model at a time (limits reset every 5h & 7d). Pro $20/mo \xb7 Max $100/mo.",apiKeyUrl:"https://ollama.com/settings/keys"}},vertex:{id:"vertex",alias:"vx",name:"Vertex AI",icon:"cloud",color:"#4285F4",textIcon:"VX",website:"https://cloud.google.com/vertex-ai",notice:{text:"New Google Cloud accounts get $300 free credits. Requires GCP project + Service Account with Vertex AI API enabled.",apiKeyUrl:"https://console.cloud.google.com/iam-admin/serviceaccounts"}},gemini:{id:"gemini",alias:"gemini",name:"Gemini",icon:"diamond",color:"#4285F4",textIcon:"GE",mediaPriority:1,website:"https://ai.google.dev",notice:{apiKeyUrl:"https://aistudio.google.com/app/apikey"},serviceKinds:["llm","embedding","image","imageToText","webSearch","tts","stt"],sttConfig:{baseUrl:"https://generativelanguage.googleapis.com/v1beta/models",authType:"apikey",authHeader:"key",format:"gemini-stt",models:[{id:"gemini-2.5-pro",name:"Gemini 2.5 Pro (Best)"},{id:"gemini-2.5-flash",name:"Gemini 2.5 Flash"},{id:"gemini-2.5-flash-lite",name:"Gemini 2.5 Flash Lite (Cheapest)"},{id:"gemini-2.0-flash",name:"Gemini 2.0 Flash"}]},searchViaChat:{defaultModel:"gemini-2.5-flash",pricingUrl:"https://ai.google.dev/pricing",freeTier:"Free tier: 15 RPM, 1M tokens/day on gemini-2.5-flash via AI Studio."},embeddingConfig:{baseUrl:"https://generativelanguage.googleapis.com/v1beta/models",authType:"apikey",authHeader:"key",models:[{id:"text-embedding-004",name:"Text Embedding 004",dimensions:768},{id:"embedding-001",name:"Embedding 001",dimensions:768}]},ttsConfig:{baseUrl:"https://generativelanguage.googleapis.com/v1beta/models",authType:"apikey",authHeader:"key",format:"gemini-tts",models:[{id:"gemini-2.5-flash-preview-tts",name:"Gemini 2.5 Flash TTS"},{id:"gemini-2.5-pro-preview-tts",name:"Gemini 2.5 Pro TTS"}]}},"cloudflare-ai":{id:"cloudflare-ai",alias:"cf",name:"Cloudflare",icon:"cloud",color:"#F38020",textIcon:"CF",website:"https://developers.cloudflare.com/workers-ai/",notice:{text:"Workers AI free tier. Requires a Cloudflare API token and Account ID.",apiKeyUrl:"https://dash.cloudflare.com/profile/api-tokens"},serviceKinds:["llm","image"],hasProviderSpecificData:!0},byteplus:{id:"byteplus",alias:"bpm",name:"BytePlus ModelArk",icon:"cloud",color:"#2563EB",textIcon:"BP",website:"https://console.byteplus.com/ark",notice:{text:"Free credits for new accounts. Access to Seed 2.0, Kimi K2 Thinking, GLM 4.7, GPT-OSS-120B models.",apiKeyUrl:"https://console.byteplus.com/ark/region:ark+ap-southeast-1/apiKey"},serviceKinds:["llm"]}},g={options:["auto","none","minimal","low","medium","high","xhigh","max"],defaultMode:"auto"},h=[{id:"speech-2.8-hd",name:"Speech 2.8 HD"},{id:"speech-2.8-turbo",name:"Speech 2.8 Turbo"},{id:"speech-2.6-hd",name:"Speech 2.6 HD"},{id:"speech-2.6-turbo",name:"Speech 2.6 Turbo"},{id:"speech-02-hd",name:"Speech 02 HD"},{id:"speech-02-turbo",name:"Speech 02 Turbo"},{id:"speech-01-hd",name:"Speech 01 HD"},{id:"speech-01-turbo",name:"Speech 01 Turbo"}],i={claude:{id:"claude",alias:"cc",name:"Claude Code",icon:"smart_toy",color:"#D97757",deprecated:!0,deprecationNotice:d,website:"https://claude.ai",notice:{signupUrl:"https://claude.ai"}},antigravity:{id:"antigravity",alias:"ag",name:"Antigravity",icon:"rocket_launch",color:"#F59E0B",deprecated:!0,deprecationNotice:"⚠️ Risk Notice: This provider uses a subscription/OAuth session not officially licensed for proxy/router use. Account may be restricted or banned. Use at your own risk.",website:"https://antigravity.google",notice:{signupUrl:"https://antigravity.google"}},codex:{id:"codex",alias:"cx",name:"OpenAI Codex",icon:"code",color:"#3B82F6",deprecated:!0,deprecationNotice:d,thinkingConfig:g,serviceKinds:["llm","image"],kindNotice:{image:"Requires a ChatGPT Plus (or higher) account. Free accounts are not supported for image generation."},website:"https://chatgpt.com/codex",notice:{signupUrl:"https://chatgpt.com/codex"}},github:{id:"github",alias:"gh",name:"GitHub Copilot",icon:"code",color:"#333333",deprecated:!0,deprecationNotice:d,serviceKinds:["llm","embedding"],embeddingConfig:{baseUrl:"https://models.github.ai/inference/embeddings",authType:"apikey",authHeader:"bearer",models:[{id:"text-embedding-3-small",name:"Text Embedding 3 Small (GitHub)",dimensions:1536},{id:"text-embedding-3-large",name:"Text Embedding 3 Large (GitHub)",dimensions:3072}]},website:"https://github.com/features/copilot",notice:{signupUrl:"https://github.com/features/copilot"}},cursor:{id:"cursor",alias:"cu",name:"Cursor IDE",icon:"edit_note",color:"#00D4AA",website:"https://cursor.com",notice:{signupUrl:"https://cursor.com"}},xai:{id:"xai",alias:"xai",name:"xAI (Grok)",icon:"auto_awesome",color:"#1DA1F2",textIcon:"XA",website:"https://x.ai",notice:{apiKeyUrl:"https://console.x.ai",signupUrl:"https://x.ai"},serviceKinds:["llm","imageToText","webSearch","image"],searchViaChat:{defaultModel:"grok-4.20-reasoning",pricingUrl:"https://x.ai/api#pricing"},authModes:["oauth","apikey"],hasOAuth:!0},kilocode:{id:"kilocode",alias:"kc",name:"Kilo Code",icon:"code",color:"#FF6B35",textIcon:"KC",website:"https://kilocode.ai",notice:{signupUrl:"https://kilocode.ai"}},cline:{id:"cline",alias:"cl",name:"Cline",icon:"smart_toy",color:"#5B9BD5",textIcon:"CL",website:"https://cline.bot",notice:{signupUrl:"https://cline.bot"}},clinepass:{id:"clinepass",alias:"clinepass",name:"ClinePass",icon:"vpn_key",color:"#5B9BD5",textIcon:"CP",website:"https://cline.bot",notice:{signupUrl:"https://app.cline.bot"},authModes:["oauth","apikey"],hasOAuth:!0,thinkingConfig:{options:["auto","on","off"],defaultMode:"auto",defaultBudgetTokens:1e4}},kimchi:{id:"kimchi",alias:"kimchi",name:"Kimchi",icon:"restaurant",color:"#FF521D",textIcon:"KC",website:"https://kimchi.dev",notice:{signupUrl:"https://app.kimchi.dev"},hasOAuth:!0,passthroughModels:!0,serviceKinds:["llm","imageToText"]},"grok-cli":{id:"grok-cli",alias:"gcli",name:"Grok CLI (Grok Build)",icon:"auto_awesome",color:"#1DA1F2",textIcon:"GC",website:"https://x.ai",notice:{text:"Sign in with your xAI / Grok account via device code. Uses Grok Build subscription credits (cli-chat-proxy.grok.com).",signupUrl:"https://grok.com/supergrok"},hasOAuth:!0,thinkingConfig:{options:["low","medium","high"],defaultMode:"high"}},autoclaw:{id:"autoclaw",alias:"acl",name:"AutoClaw",icon:"bolt",color:"#7C3AED",textIcon:"AC",website:"https://autoclaw.z.ai",notice:{signupUrl:"https://autoclaw.z.ai"}}},j={glm:{id:"glm",alias:"glm",name:"GLM Coding",icon:"code",color:"#2563EB",textIcon:"GL",website:"https://open.bigmodel.cn",notice:{apiKeyUrl:"https://open.bigmodel.cn/usercenter/apikeys"}},"glm-cn":{id:"glm-cn",alias:"glm-cn",name:"GLM (China)",icon:"code",color:"#DC2626",textIcon:"GC",website:"https://open.bigmodel.cn",notice:{apiKeyUrl:"https://open.bigmodel.cn/usercenter/apikeys"}},kimi:{id:"kimi",alias:"kimi",name:"Kimi",icon:"psychology",color:"#1E3A8A",textIcon:"KM",website:"https://kimi.moonshot.cn",notice:{apiKeyUrl:"https://platform.moonshot.ai/console/api-keys"},serviceKinds:["llm","webSearch"],searchViaChat:{defaultModel:"kimi-k2.5",pricingUrl:"https://platform.moonshot.ai/docs/pricing/chat"}},minimax:{id:"minimax",alias:"minimax",name:"Minimax Coding",icon:"memory",color:"#7C3AED",textIcon:"MM",website:"https://www.minimaxi.com",notice:{apiKeyUrl:"https://platform.minimaxi.com/user-center/basic-information/interface-key"},serviceKinds:["llm","image","imageToText","webSearch","tts"],searchViaChat:{defaultModel:"MiniMax-M2.7",pricingUrl:"https://www.minimaxi.com/document/price"},ttsConfig:{baseUrl:"https://api.minimax.io/v1/t2a_v2",authType:"apikey",authHeader:"bearer",format:"minimax-tts",models:h}},"minimax-cn":{id:"minimax-cn",alias:"minimax-cn",name:"Minimax (China)",icon:"memory",color:"#DC2626",textIcon:"MC",website:"https://www.minimaxi.com",notice:{apiKeyUrl:"https://platform.minimaxi.com/user-center/basic-information/interface-key"},serviceKinds:["llm","tts"],ttsConfig:{baseUrl:"https://api.minimaxi.com/v1/t2a_v2",authType:"apikey",authHeader:"bearer",format:"minimax-tts",models:h}},alicode:{id:"alicode",alias:"alicode",name:"Alibaba",icon:"cloud",color:"#FF6A00",textIcon:"ALi",website:"https://bailian.console.aliyun.com",notice:{apiKeyUrl:"https://bailian.console.aliyun.com/?apiKey=1"}},"alicode-intl":{id:"alicode-intl",alias:"alicode-intl",name:"Alibaba Intl",icon:"cloud",color:"#FF6A00",textIcon:"ALi",website:"https://modelstudio.console.alibabacloud.com",notice:{apiKeyUrl:"https://modelstudio.console.alibabacloud.com/?apiKey=1"}},"xiaomi-mimo":{id:"xiaomi-mimo",alias:"mimo",name:"Xiaomi MiMo",icon:"smart_toy",color:"#FF6900",textIcon:"XM",website:"https://xiaomimimo.com",notice:{apiKeyUrl:"https://xiaomimimo.com"}},"xiaomi-tokenplan":{id:"xiaomi-tokenplan",alias:"xmtp",name:"Xiaomi MiMo (Token Plan)",icon:"smart_toy",color:"#FF6700",textIcon:"XT",website:"https://mimo.xiaomi.com",notice:{text:"Xiaomi MiMo Token Plan subscription (API key starts with tp-). Token Plan keys are cluster-specific — select the region matching your subscription.",apiKeyUrl:"https://mimo.xiaomi.com"},hasProviderSpecificData:!0,regions:[{id:"sgp",label:"Singapore",baseUrl:"https://token-plan-sgp.xiaomimimo.com/v1"},{id:"cn",label:"China",baseUrl:"https://token-plan-cn.xiaomimimo.com/v1"},{id:"ams",label:"Europe",baseUrl:"https://token-plan-ams.xiaomimimo.com/v1"}],defaultRegion:"sgp"},"volcengine-ark":{id:"volcengine-ark",alias:"ark",name:"Volcengine Ark",icon:"cloud",color:"#1677FF",textIcon:"ARK",website:"https://ark.cn-beijing.volces.com",notice:{apiKeyUrl:"https://console.volcengine.com/ark/region:ark+cn-beijing/apiKey"}},openai:{id:"openai",alias:"openai",name:"OpenAI",icon:"auto_awesome",color:"#10A37F",textIcon:"OA",website:"https://platform.openai.com",notice:{apiKeyUrl:"https://platform.openai.com/api-keys"},serviceKinds:["llm","embedding","tts","stt","image","imageToText","webSearch"],thinkingConfig:g,searchViaChat:{defaultModel:"gpt-4o-mini",pricingUrl:"https://openai.com/api/pricing"},ttsConfig:{baseUrl:"https://api.openai.com/v1/audio/speech",authType:"apikey",authHeader:"bearer",format:"openai",models:[{id:"tts-1",name:"TTS-1"},{id:"tts-1-hd",name:"TTS-1 HD"},{id:"gpt-4o-mini-tts",name:"GPT-4o Mini TTS"}]},sttConfig:{baseUrl:"https://api.openai.com/v1/audio/transcriptions",authType:"apikey",authHeader:"bearer",format:"openai",models:[{id:"whisper-1",name:"Whisper 1"},{id:"gpt-4o-transcribe",name:"GPT-4o Transcribe"},{id:"gpt-4o-mini-transcribe",name:"GPT-4o Mini Transcribe"}]},embeddingConfig:{baseUrl:"https://api.openai.com/v1/embeddings",authType:"apikey",authHeader:"bearer",models:[{id:"text-embedding-3-small",name:"Text Embedding 3 Small",dimensions:1536},{id:"text-embedding-3-large",name:"Text Embedding 3 Large",dimensions:3072},{id:"text-embedding-ada-002",name:"Text Embedding Ada 002",dimensions:1536}]}},"vercel-ai-gateway":{id:"vercel-ai-gateway",alias:"vercel",name:"Vercel AI Gateway",icon:"deployed_code",color:"#111827",textIcon:"VG",website:"https://vercel.com/ai-gateway",notice:{text:"Unified OpenAI-compatible endpoint from Vercel. Use your AI Gateway API key, then pick models with provider/model IDs like anthropic/claude-sonnet-4.6 or openai/gpt-5.4.",apiKeyUrl:"https://vercel.com/dashboard/~/ai-gateway"},passthroughModels:!0,serviceKinds:["llm"]},anthropic:{id:"anthropic",alias:"anthropic",name:"Anthropic",icon:"smart_toy",color:"#D97757",textIcon:"AN",website:"https://console.anthropic.com",notice:{apiKeyUrl:"https://console.anthropic.com/settings/keys"},serviceKinds:["llm","imageToText"]},"opencode-go":{id:"opencode-go",alias:"ocg",name:"OpenCode Go",icon:"terminal",color:"#E87040",textIcon:"OC",website:"https://opencode.ai/auth",notice:{text:"OpenCode Go subscription: $5/mo (then $10/mo). Access to Kimi, GLM, Qwen, MiMo, MiniMax models.",apiKeyUrl:"https://opencode.ai/auth"}},azure:{id:"azure",alias:"azure",name:"Azure OpenAI",icon:"cloud",color:"#0078D4",textIcon:"AZ",website:"https://azure.microsoft.com/en-us/products/ai-services/openai-service",notice:{apiKeyUrl:"https://portal.azure.com/#view/Microsoft_Azure_ProjectOxford/CognitiveServicesHub/~/OpenAI"},hasProviderSpecificData:!0},deepseek:{id:"deepseek",alias:"ds",name:"DeepSeek",icon:"bolt",color:"#4D6BFE",textIcon:"DS",website:"https://deepseek.com",notice:{apiKeyUrl:"https://platform.deepseek.com/api_keys"}},commandcode:{id:"commandcode",alias:"cmc",name:"Command Code",icon:"smart_toy",color:"#000000",textIcon:"CC",website:"https://commandcode.ai",notice:{text:"Use your CommandCode CLI API key (starts with user_...) from ~/.commandcode/auth.json or commandcode.ai/studio.",apiKeyUrl:"https://commandcode.ai/studio"}},groq:{id:"groq",alias:"groq",name:"Groq",icon:"speed",color:"#F55036",textIcon:"GQ",website:"https://groq.com",notice:{apiKeyUrl:"https://console.groq.com/keys"},serviceKinds:["llm","imageToText","stt"],sttConfig:{baseUrl:"https://api.groq.com/openai/v1/audio/transcriptions",authType:"apikey",authHeader:"bearer",format:"openai",models:[{id:"whisper-large-v3",name:"Whisper Large v3"},{id:"whisper-large-v3-turbo",name:"Whisper Large v3 Turbo"},{id:"distil-whisper-large-v3-en",name:"Distil Whisper Large v3 EN"}]}},xai:{id:"xai",alias:"xai",name:"xAI (Grok)",icon:"auto_awesome",color:"#1DA1F2",textIcon:"XA",website:"https://x.ai",notice:{apiKeyUrl:"https://console.x.ai"},serviceKinds:["llm","imageToText","webSearch","image"],searchViaChat:{defaultModel:"grok-4.20-reasoning",pricingUrl:"https://x.ai/api#pricing"},authModes:["oauth","apikey"],hasOAuth:!0},mistral:{id:"mistral",alias:"mistral",name:"Mistral",icon:"air",color:"#FF7000",textIcon:"MI",website:"https://mistral.ai",notice:{apiKeyUrl:"https://console.mistral.ai/api-keys"},serviceKinds:["llm","imageToText","embedding"],embeddingConfig:{baseUrl:"https://api.mistral.ai/v1/embeddings",authType:"apikey",authHeader:"bearer",models:[{id:"mistral-embed",name:"Mistral Embed",dimensions:1024}]}},perplexity:{id:"perplexity",alias:"pplx",name:"Perplexity",icon:"search",color:"#20808D",textIcon:"PP",website:"https://www.perplexity.ai",notice:{apiKeyUrl:"https://www.perplexity.ai/settings/api"},serviceKinds:["llm","webSearch"],searchConfig:{baseUrl:"https://api.perplexity.ai/search",method:"POST",authType:"apikey",authHeader:"bearer",costPerQuery:.005,freeMonthlyQuota:0,searchTypes:["web"],defaultMaxResults:5,maxMaxResults:20,timeoutMs:1e4,cacheTTLMs:3e5}},"perplexity-agent":{id:"perplexity-agent",alias:"pa",name:"Perplexity Agent",icon:"travel_explore",color:"#20808D",textIcon:"PA",website:"https://www.perplexity.ai",notice:{text:"Perplexity Agent API exposes GPT, Claude, Gemini, Grok, GLM, Kimi, and Sonar models through one OpenAI-compatible Responses API.",apiKeyUrl:"https://www.perplexity.ai/settings/api"},passthroughModels:!0,modelsFetcher:{url:"https://api.perplexity.ai/v1/models",type:"openai"},serviceKinds:["llm","webSearch"],searchViaChat:{defaultModel:"perplexity/sonar",endpoint:"https://api.perplexity.ai/v1/responses",pricingUrl:"https://docs.perplexity.ai/docs/agent-api/models"}},clinepass:{id:"clinepass",alias:"clinepass",name:"ClinePass",icon:"vpn_key",color:"#5B9BD5",textIcon:"CP",website:"https://cline.bot",notice:{signupUrl:"https://app.cline.bot",apiKeyUrl:"https://app.cline.bot"},authModes:["oauth","apikey"],hasOAuth:!0},together:{id:"together",alias:"together",name:"Together AI",icon:"group_work",color:"#0F6FFF",textIcon:"TG",website:"https://www.together.ai",notice:{apiKeyUrl:"https://api.together.xyz/settings/api-keys"},serviceKinds:["llm","embedding"],embeddingConfig:{baseUrl:"https://api.together.xyz/v1/embeddings",authType:"apikey",authHeader:"bearer",models:[{id:"BAAI/bge-large-en-v1.5",name:"BGE Large EN v1.5",dimensions:1024},{id:"togethercomputer/m2-bert-80M-8k-retrieval",name:"M2 BERT 80M 8K",dimensions:768}]}},fireworks:{id:"fireworks",alias:"fireworks",name:"Fireworks AI",icon:"local_fire_department",color:"#7B2EF2",textIcon:"FW",website:"https://fireworks.ai",notice:{apiKeyUrl:"https://fireworks.ai/account/api-keys"},serviceKinds:["llm","embedding"],embeddingConfig:{baseUrl:"https://api.fireworks.ai/inference/v1/embeddings",authType:"apikey",authHeader:"bearer",models:[{id:"nomic-ai/nomic-embed-text-v1.5",name:"Nomic Embed Text v1.5",dimensions:768}]}},venice:{id:"venice",alias:"venice",name:"Venice AI",icon:"shield",color:"#DC2626",textIcon:"VE",website:"https://venice.ai",notice:{text:"OpenAI-compatible. Private inference + uncensored models (Venice Uncensored, GLM, Qwen, DeepSeek, Llama).",apiKeyUrl:"https://venice.ai/settings/api"},passthroughModels:!0,modelsFetcher:{url:"https://api.venice.ai/api/v1/models",type:"openai"},serviceKinds:["llm","embedding","image"],embeddingConfig:{baseUrl:"https://api.venice.ai/api/v1/embeddings",authType:"apikey",authHeader:"bearer",models:[{id:"text-embedding-3-large",name:"Text Embedding 3 Large",dimensions:3072},{id:"text-embedding-bge-m3",name:"BGE-M3 Embedding",dimensions:1024}]}},featherless:{id:"featherless",alias:"fl",name:"Featherless",icon:"flutter_dash",color:"#111827",textIcon:"FL",website:"https://featherless.ai",notice:{apiKeyUrl:"https://featherless.ai/account/api-keys"},passthroughModels:!0,modelsFetcher:{url:"https://api.featherless.ai/v1/models",type:"openai"}},cerebras:{id:"cerebras",alias:"cerebras",name:"Cerebras",icon:"memory",color:"#FF4F00",textIcon:"CB",website:"https://www.cerebras.ai",notice:{apiKeyUrl:"https://cloud.cerebras.ai/platform"}},cohere:{id:"cohere",alias:"cohere",name:"Cohere",icon:"hub",color:"#39594D",textIcon:"CO",website:"https://cohere.com",notice:{apiKeyUrl:"https://dashboard.cohere.com/api-keys"}},nebius:{id:"nebius",alias:"nebius",name:"Nebius AI",icon:"cloud",color:"#6C5CE7",textIcon:"NB",website:"https://nebius.com",notice:{apiKeyUrl:"https://studio.nebius.com/settings/api-keys"},serviceKinds:["llm","embedding"],embeddingConfig:{baseUrl:"https://api.tokenfactory.nebius.com/v1/embeddings",authType:"apikey",authHeader:"bearer",models:[{id:"Qwen/Qwen3-Embedding-8B",name:"Qwen3 Embedding 8B",dimensions:4096}]}},siliconflow:{id:"siliconflow",alias:"siliconflow",name:"SiliconFlow",icon:"cloud_queue",color:"#5B6EF5",textIcon:"SF",website:"https://cloud.siliconflow.com",notice:{apiKeyUrl:"https://cloud.siliconflow.com/account/ak"}},hyperbolic:{id:"hyperbolic",alias:"hyp",name:"Hyperbolic",icon:"bolt",color:"#00D4FF",textIcon:"HY",website:"https://hyperbolic.xyz",notice:{apiKeyUrl:"https://app.hyperbolic.xyz/settings"},serviceKinds:["llm","tts"],ttsConfig:{baseUrl:"https://api.hyperbolic.xyz/v1/audio/generation",authType:"apikey",authHeader:"bearer",format:"hyperbolic",models:[{id:"melo-tts",name:"Melo TTS"}]}},deepgram:{id:"deepgram",alias:"dg",name:"Deepgram",icon:"mic",color:"#13EF93",textIcon:"DG",website:"https://deepgram.com",notice:{text:"$200 free credit on signup (no card required). Aura-1: $0.015/1k chars, Aura-2: $0.030/1k chars (Pay-As-You-Go).",apiKeyUrl:"https://console.deepgram.com/api-keys"},serviceKinds:["stt","imageToText","tts"],ttsConfig:{baseUrl:"https://api.deepgram.com/v1/speak",authType:"apikey",authHeader:"token",format:"deepgram",models:[]},sttConfig:{baseUrl:"https://api.deepgram.com/v1/listen",authType:"apikey",authHeader:"token",format:"deepgram",models:[{id:"nova-3",name:"Nova 3"},{id:"nova-2",name:"Nova 2"},{id:"whisper-large",name:"Whisper Large"}]}},assemblyai:{id:"assemblyai",alias:"aai",name:"AssemblyAI",icon:"record_voice_over",color:"#0062FF",textIcon:"AA",website:"https://assemblyai.com",notice:{apiKeyUrl:"https://www.assemblyai.com/app/api-keys"},serviceKinds:["stt"],sttConfig:{baseUrl:"https://api.assemblyai.com/v2/transcript",authType:"apikey",authHeader:"bearer",format:"assemblyai",async:!0,models:[{id:"universal-3-pro",name:"Universal 3 Pro"},{id:"universal-2",name:"Universal 2"}]}},nanobanana:{id:"nanobanana",alias:"nb",name:"NanoBanana API",icon:"extension",color:"#FFD700",textIcon:"\uD83C\uDF4C",website:"https://nanobananaapi.ai",notice:{text:"3rd-party proxy for Google Nano Banana (Gemini 2.5/3 Flash Image). For official, use Gemini provider.",apiKeyUrl:"https://nanobananaapi.ai/dashboard"},serviceKinds:["image"]},elevenlabs:{id:"elevenlabs",alias:"el",name:"ElevenLabs",icon:"record_voice_over",color:"#6C47FF",textIcon:"EL",website:"https://elevenlabs.io",notice:{apiKeyUrl:"https://elevenlabs.io/app/settings/api-keys"},serviceKinds:["tts"],ttsConfig:{baseUrl:"https://api.elevenlabs.io/v1/text-to-speech",authType:"apikey",authHeader:"xi-api-key",format:"elevenlabs",models:[{id:"eleven_multilingual_v2",name:"Eleven Multilingual v2"},{id:"eleven_turbo_v2_5",name:"Eleven Turbo v2.5"}]}},cartesia:{id:"cartesia",alias:"cartesia",name:"Cartesia",icon:"spatial_audio",color:"#FF4F8B",textIcon:"CA",website:"https://cartesia.ai",notice:{apiKeyUrl:"https://play.cartesia.ai/keys"},serviceKinds:["tts"],hidden:!0,ttsConfig:{baseUrl:"https://api.cartesia.ai/tts/bytes",authType:"apikey",authHeader:"x-api-key",format:"cartesia",models:[{id:"sonic-2",name:"Sonic 2"},{id:"sonic-3",name:"Sonic 3"}]}},playht:{id:"playht",alias:"playht",name:"PlayHT",icon:"play_circle",color:"#00B4D8",textIcon:"PH",website:"https://play.ht",notice:{apiKeyUrl:"https://play.ht/studio/api-access"},serviceKinds:["tts"],hidden:!0,ttsConfig:{baseUrl:"https://api.play.ht/api/v2/tts/stream",authType:"apikey",authHeader:"playht",format:"playht",models:[{id:"PlayDialog",name:"PlayDialog"},{id:"Play3.0-mini",name:"Play 3.0 Mini"}]}},"local-device":{id:"local-device",alias:"local-device",name:"Local Device",icon:"speaker",color:"#64748B",textIcon:"LD",mediaPriority:5,serviceKinds:["tts"],noAuth:!0,ttsConfig:{baseUrl:"local-device",authType:"none",authHeader:"none",format:"local-device",models:[]}},"google-tts":{id:"google-tts",alias:"google-tts",name:"Google TTS",icon:"record_voice_over",color:"#4285F4",textIcon:"GT",mediaPriority:5,serviceKinds:["tts"],noAuth:!0,ttsConfig:{baseUrl:"google-tts",authType:"none",authHeader:"none",format:"google-tts",models:[]}},"edge-tts":{id:"edge-tts",alias:"edge-tts",name:"Edge TTS",icon:"record_voice_over",color:"#0078D4",textIcon:"ET",mediaPriority:5,serviceKinds:["tts"],noAuth:!0,ttsConfig:{baseUrl:"edge-tts",authType:"none",authHeader:"none",format:"edge-tts",models:[]}},coqui:{id:"coqui",alias:"coqui",name:"Coqui TTS",icon:"record_voice_over",color:"#10B981",textIcon:"CQ",website:"https://github.com/coqui-ai/TTS",serviceKinds:["tts"],hidden:!0,noAuth:!0,ttsConfig:{baseUrl:"http://localhost:5002/api/tts",authType:"none",authHeader:"none",format:"coqui",models:[{id:"tts_models/en/ljspeech/tacotron2-DDC",name:"Tacotron2 DDC (LJSpeech)"}]}},tortoise:{id:"tortoise",alias:"tortoise",name:"Tortoise TTS",icon:"record_voice_over",color:"#7C3AED",textIcon:"TT",website:"https://github.com/neonbjb/tortoise-tts",serviceKinds:["tts"],hidden:!0,noAuth:!0,ttsConfig:{baseUrl:"http://localhost:5000/api/tts",authType:"none",authHeader:"none",format:"tortoise",models:[{id:"tortoise-v2",name:"Tortoise v2"}]}},inworld:{id:"inworld",alias:"inworld",name:"Inworld TTS",icon:"record_voice_over",color:"#FF6B6B",textIcon:"IW",website:"https://inworld.ai",notice:{text:"Free tier: 40 minutes/month TTS. Paid: TTS-1.5 Mini $0.01/min ($15/1M chars), TTS-1.5 Max $0.025/min ($30/1M chars). 270+ voices, 15 languages.",apiKeyUrl:"https://platform.inworld.ai/api-keys"},serviceKinds:["tts"],ttsConfig:{baseUrl:"https://api.inworld.ai/tts/v1/voice",authType:"apikey",authHeader:"basic",format:"inworld",models:[{id:"inworld-tts-1.5-mini",name:"Inworld TTS 1.5 Mini ($0.01/min)"},{id:"inworld-tts-1.5-max",name:"Inworld TTS 1.5 Max ($0.025/min)"}]}},"voyage-ai":{id:"voyage-ai",alias:"voyage",name:"Voyage AI",icon:"data_array",color:"#0EA5E9",textIcon:"VG",website:"https://www.voyageai.com",notice:{apiKeyUrl:"https://dash.voyageai.com/api-keys"},serviceKinds:["embedding"],embeddingConfig:{baseUrl:"https://api.voyageai.com/v1/embeddings",authType:"apikey",authHeader:"bearer",models:[{id:"voyage-3-large",name:"Voyage 3 Large",dimensions:1024},{id:"voyage-3.5",name:"Voyage 3.5",dimensions:1024},{id:"voyage-3.5-lite",name:"Voyage 3.5 Lite",dimensions:1024},{id:"voyage-code-3",name:"Voyage Code 3",dimensions:1024},{id:"voyage-finance-2",name:"Voyage Finance 2",dimensions:1024},{id:"voyage-law-2",name:"Voyage Law 2",dimensions:1024},{id:"voyage-multilingual-2",name:"Voyage Multilingual 2",dimensions:1024}]}},sdwebui:{id:"sdwebui",alias:"sdwebui",name:"SD WebUI",icon:"brush",color:"#FF7043",textIcon:"SD",website:"https://github.com/AUTOMATIC1111/stable-diffusion-webui",serviceKinds:["image"]},comfyui:{id:"comfyui",alias:"comfyui",name:"ComfyUI",icon:"account_tree",color:"#4CAF50",textIcon:"CF",website:"https://github.com/comfyanonymous/ComfyUI",serviceKinds:["image"]},huggingface:{id:"huggingface",alias:"hf",name:"HuggingFace",icon:"face",color:"#FFD21E",textIcon:"HF",website:"https://huggingface.co",notice:{apiKeyUrl:"https://huggingface.co/settings/tokens"},serviceKinds:["image","imageToText","tts","stt"],hiddenKinds:["tts"],ttsConfig:{baseUrl:"https://api-inference.huggingface.co/models",authType:"apikey",authHeader:"bearer",format:"huggingface-tts",models:[{id:"facebook/mms-tts-eng",name:"MMS TTS English"},{id:"microsoft/speecht5_tts",name:"SpeechT5 TTS"}]},sttConfig:{baseUrl:"https://api-inference.huggingface.co/models",authType:"apikey",authHeader:"bearer",format:"huggingface-asr",models:[{id:"openai/whisper-large-v3",name:"Whisper Large v3 (HF)"},{id:"openai/whisper-small",name:"Whisper Small (HF)"}]}},blackbox:{id:"blackbox",alias:"bb",name:"Blackbox AI",icon:"smart_toy",color:"#5B5FEF",textIcon:"BB",website:"https://blackbox.ai",notice:{apiKeyUrl:"https://www.blackbox.ai/api-management"},serviceKinds:["llm"]},chutes:{id:"chutes",alias:"ch",name:"Chutes AI",icon:"water_drop",color:"#ffffffff",textIcon:"CH",website:"https://chutes.ai",notice:{apiKeyUrl:"https://chutes.ai/app/api"}},"ollama-local":{id:"ollama-local",alias:"ollama-local",name:"Ollama Local",icon:"cloud",color:"#ffffffff",textIcon:"OL",website:"https://ollama.com"},"vertex-partner":{id:"vertex-partner",alias:"vxp",name:"Vertex Partner",icon:"cloud",color:"#34A853",textIcon:"VP",website:"https://cloud.google.com/vertex-ai/generative-ai/docs/partner-models/use-partner-models",notice:{apiKeyUrl:"https://console.cloud.google.com/iam-admin/serviceaccounts"}},tavily:{id:"tavily",alias:"tavily",name:"Tavily",icon:"search",color:"#5B21B6",textIcon:"TV",website:"https://tavily.com",notice:{apiKeyUrl:"https://app.tavily.com/home"},serviceKinds:["webSearch","webFetch"],searchConfig:{baseUrl:"https://api.tavily.com/search",method:"POST",authType:"apikey",authHeader:"bearer",costPerQuery:.008,freeMonthlyQuota:1e3,searchTypes:["web","news"],defaultMaxResults:5,maxMaxResults:20,timeoutMs:1e4,cacheTTLMs:3e5},fetchConfig:{baseUrl:"https://api.tavily.com/extract",method:"POST",authType:"apikey",authHeader:"bearer",costPerQuery:.008,freeMonthlyQuota:1e3,formats:["markdown","text"],maxCharacters:1e5,timeoutMs:15e3}},"brave-search":{id:"brave-search",alias:"brave",name:"Brave Search",icon:"travel_explore",color:"#FB542B",textIcon:"BR",website:"https://brave.com/search/api",notice:{apiKeyUrl:"https://api-dashboard.search.brave.com/app/keys"},serviceKinds:["webSearch"],searchConfig:{baseUrl:"https://api.search.brave.com/res/v1",method:"GET",authType:"apikey",authHeader:"x-subscription-token",costPerQuery:.005,freeMonthlyQuota:1e3,searchTypes:["web","news"],defaultMaxResults:5,maxMaxResults:20,timeoutMs:1e4,cacheTTLMs:3e5}},serper:{id:"serper",alias:"serper",name:"Serper",icon:"search",color:"#4F46E5",textIcon:"SP",website:"https://serper.dev",notice:{apiKeyUrl:"https://serper.dev/api-key"},serviceKinds:["webSearch"],searchConfig:{baseUrl:"https://google.serper.dev",method:"POST",authType:"apikey",authHeader:"x-api-key",costPerQuery:.001,freeMonthlyQuota:2500,searchTypes:["web","news"],defaultMaxResults:5,maxMaxResults:100,timeoutMs:1e4,cacheTTLMs:3e5}},exa:{id:"exa",alias:"exa",name:"Exa",icon:"manage_search",color:"#2563EB",textIcon:"EX",website:"https://exa.ai",notice:{apiKeyUrl:"https://dashboard.exa.ai/api-keys"},serviceKinds:["webSearch","webFetch"],searchConfig:{baseUrl:"https://api.exa.ai/search",method:"POST",authType:"apikey",authHeader:"x-api-key",costPerQuery:.007,freeMonthlyQuota:1e3,searchTypes:["web","news"],defaultMaxResults:5,maxMaxResults:100,timeoutMs:1e4,cacheTTLMs:3e5},fetchConfig:{baseUrl:"https://api.exa.ai/contents",method:"POST",authType:"apikey",authHeader:"x-api-key",costPerQuery:.001,freeMonthlyQuota:1e3,formats:["text","markdown"],maxCharacters:1e5,timeoutMs:15e3}},searxng:{id:"searxng",alias:"searxng",name:"SearXNG",icon:"saved_search",color:"#3B82F6",textIcon:"SX",website:"https://docs.searxng.org",serviceKinds:["webSearch"],noAuth:!0,searchConfig:{baseUrl:"http://localhost:8888/search",method:"GET",authType:"none",authHeader:"none",costPerQuery:0,freeMonthlyQuota:999999,searchTypes:["web","news"],defaultMaxResults:5,maxMaxResults:50,timeoutMs:1e4,cacheTTLMs:18e4}},"google-pse":{id:"google-pse",alias:"gpse",name:"Google PSE",icon:"search",color:"#4285F4",textIcon:"GP",website:"https://programmablesearchengine.google.com",notice:{apiKeyUrl:"https://programmablesearchengine.google.com/controlpanel/create"},serviceKinds:["webSearch"],searchConfig:{baseUrl:"https://www.googleapis.com/customsearch/v1",method:"GET",authType:"apikey",authHeader:"key",costPerQuery:.005,freeMonthlyQuota:3e3,searchTypes:["web","news"],defaultMaxResults:5,maxMaxResults:10,timeoutMs:1e4,cacheTTLMs:3e5}},linkup:{id:"linkup",alias:"linkup",name:"Linkup",icon:"link",color:"#0EA5E9",textIcon:"LK",website:"https://linkup.so",notice:{apiKeyUrl:"https://app.linkup.so/api-keys"},serviceKinds:["webSearch"],searchConfig:{baseUrl:"https://api.linkup.so/v1/search",method:"POST",authType:"apikey",authHeader:"bearer",costPerQuery:.005,freeMonthlyQuota:1e3,searchTypes:["web"],defaultMaxResults:5,maxMaxResults:50,timeoutMs:1e4,cacheTTLMs:3e5}},searchapi:{id:"searchapi",alias:"searchapi",name:"SearchAPI",icon:"search",color:"#0EA5A4",textIcon:"SA",website:"https://www.searchapi.io",notice:{apiKeyUrl:"https://www.searchapi.io/dashboard"},serviceKinds:["webSearch"],searchConfig:{baseUrl:"https://www.searchapi.io/api/v1/search",method:"GET",authType:"apikey",authHeader:"api_key",costPerQuery:.004,freeMonthlyQuota:100,searchTypes:["web","news"],defaultMaxResults:5,maxMaxResults:100,timeoutMs:1e4,cacheTTLMs:3e5}},youcom:{id:"youcom",alias:"youcom",name:"You.com Search",icon:"search",color:"#7C3AED",textIcon:"YC",website:"https://you.com",notice:{apiKeyUrl:"https://api.you.com"},serviceKinds:["webSearch"],searchConfig:{baseUrl:"https://ydc-index.io/v1/search",method:"GET",authType:"apikey",authHeader:"x-api-key",costPerQuery:.005,freeMonthlyQuota:0,searchTypes:["web","news"],defaultMaxResults:5,maxMaxResults:100,timeoutMs:1e4,cacheTTLMs:3e5}},firecrawl:{id:"firecrawl",alias:"firecrawl",name:"Firecrawl",icon:"local_fire_department",color:"#F59E0B",textIcon:"FC",website:"https://firecrawl.dev",notice:{apiKeyUrl:"https://www.firecrawl.dev/app/api-keys"},serviceKinds:["webFetch"],fetchConfig:{baseUrl:"https://api.firecrawl.dev/v1/scrape",method:"POST",authType:"apikey",authHeader:"bearer",costPerQuery:.002,freeMonthlyQuota:500,formats:["markdown","html","text"],maxCharacters:2e5,timeoutMs:3e4}},"fal-ai":{id:"fal-ai",alias:"fal",name:"Fal.ai",icon:"image",color:"#2563EB",textIcon:"FL",website:"https://fal.ai",notice:{apiKeyUrl:"https://fal.ai/dashboard/keys"},serviceKinds:["image"],imageConfig:{baseUrl:"https://api.fal.ai/v1/models?limit=1",method:"GET",authType:"apikey",authHeader:"key"}},"stability-ai":{id:"stability-ai",alias:"stability",name:"Stability AI",icon:"image",color:"#8B5CF6",textIcon:"SA",website:"https://stability.ai",notice:{apiKeyUrl:"https://platform.stability.ai/account/keys"},serviceKinds:["image"],imageConfig:{baseUrl:"https://api.stability.ai/v1/user/account",method:"GET",authType:"apikey",authHeader:"bearer"}},"black-forest-labs":{id:"black-forest-labs",alias:"bfl",name:"Black Forest Labs",icon:"image",color:"#111827",textIcon:"BF",website:"https://blackforestlabs.ai",notice:{apiKeyUrl:"https://api.bfl.ai"},serviceKinds:["image"],imageConfig:{baseUrl:"https://api.bfl.ai/v1/get_result?id=ping",method:"GET",authType:"apikey",authHeader:"x-key"}},recraft:{id:"recraft",alias:"recraft",name:"Recraft",icon:"image",color:"#EC4899",textIcon:"RC",website:"https://recraft.ai",notice:{apiKeyUrl:"https://www.recraft.ai/profile/api"},serviceKinds:["image"],imageConfig:{baseUrl:"https://external.api.recraft.ai/v1/users/me",method:"GET",authType:"apikey",authHeader:"bearer"}},topaz:{id:"topaz",alias:"topaz",name:"Topaz",icon:"image",color:"#059669",textIcon:"TP",website:"https://topazlabs.com",notice:{apiKeyUrl:"https://topazlabs.com/account"},serviceKinds:["image"]},runwayml:{id:"runwayml",alias:"runway",name:"Runway ML",icon:"movie",color:"#000000",textIcon:"RW",website:"https://runwayml.com",notice:{apiKeyUrl:"https://dev.runwayml.com"},serviceKinds:["image","video"],imageConfig:{baseUrl:"https://api.dev.runwayml.com/v1/organization",method:"GET",authType:"apikey",authHeader:"bearer",extraHeaders:{"X-Runway-Version":"2024-11-06"}}},"aws-polly":{id:"aws-polly",alias:"polly",name:"AWS Polly",icon:"record_voice_over",color:"#FF9900",textIcon:"PL",website:"https://aws.amazon.com/polly/",notice:{text:"Use AWS Secret Access Key as API key; set providerSpecificData.accessKeyId and optional region.",apiKeyUrl:"https://console.aws.amazon.com/iam/home#/security_credentials"},serviceKinds:["tts"],hasProviderSpecificData:!0,ttsConfig:{baseUrl:"https://polly.{region}.amazonaws.com/v1/speech",authType:"apikey",authHeader:"aws-sigv4",format:"aws-polly",models:[{id:"standard",name:"Standard"},{id:"neural",name:"Neural"},{id:"long-form",name:"Long-form"},{id:"generative",name:"Generative"}]}},"jina-ai":{id:"jina-ai",alias:"jina",name:"Jina AI",icon:"blur_on",color:"#2563EB",textIcon:"JA",website:"https://jina.ai",notice:{text:"10M free tokens on signup (non-commercial), no credit card required.",apiKeyUrl:"https://jina.ai/?sui=apikey"},serviceKinds:["embedding"],embeddingConfig:{baseUrl:"https://api.jina.ai/v1/embeddings",authType:"apikey",authHeader:"bearer",models:[{id:"jina-embeddings-v3",name:"Jina Embeddings v3",dimensions:1024},{id:"jina-embeddings-v2-base-en",name:"Jina Embeddings v2 Base EN",dimensions:768},{id:"jina-embeddings-v2-base-code",name:"Jina Embeddings v2 Base Code",dimensions:768}]}},"jina-reader":{id:"jina-reader",alias:"jina",name:"Jina Reader",icon:"menu_book",color:"#000000",textIcon:"JR",website:"https://jina.ai/reader",notice:{apiKeyUrl:"https://jina.ai/?sui=apikey"},serviceKinds:["webFetch"],fetchConfig:{baseUrl:"https://r.jina.ai",method:"GET",authType:"apikey",authHeader:"bearer",costPerQuery:0,freeMonthlyQuota:1e6,formats:["markdown","text","html"],maxCharacters:2e5,timeoutMs:3e4}}},k={"grok-web":{id:"grok-web",alias:"gw",name:"Grok Web (Subscription)",icon:"auto_awesome",color:"#1DA1F2",textIcon:"GW",website:"https://grok.com",authType:"cookie",authHint:"Paste your sso= cookie value from grok.com",passthroughModels:!0,serviceKinds:["llm"]},"perplexity-web":{id:"perplexity-web",alias:"pw",name:"Perplexity Web (Pro/Max)",icon:"search",color:"#20808D",textIcon:"PW",website:"https://www.perplexity.ai",authType:"cookie",authHint:"Paste your __Secure-next-auth.session-token cookie value from perplexity.ai",serviceKinds:["llm"]}},l="openai-compatible-",m="anthropic-compatible-",n="custom-embedding-";function o(a){return"string"==typeof a&&a.startsWith(l)}function p(a){return"string"==typeof a&&a.startsWith(m)}function q(a){return"string"==typeof a&&a.startsWith(n)}let r={...e,...f,...i,...j,...k};function s(a){for(let b of Object.values(r))if(b.alias===a||b.id===a)return b;return null}function t(a){let b=s(a);return b?.id||a}function u(a){let b=r[a];return b?.alias||a}let v=Object.values(r).reduce((a,b)=>(a[b.alias]=b.id,a),{});Object.values(r).reduce((a,b)=>(a[b.id]=b.alias,a),{});let w=["claude","antigravity","kiro","codebuddy","codebuddy-cn","qoder","github","codex","kimi-coding","ollama","gemini-cli","glm","glm-cn","minimax","minimax-cn","autoclaw","qwen","iflow","grok-cli","xai","cline","clinepass","kimchi","cursor"],x=["glm","glm-cn","minimax","minimax-cn","codebuddy","codebuddy-cn","xai","clinepass"]}};
1
+ "use strict";exports.id=5681,exports.ids=[5681],exports.modules={75681:(a,b,c)=>{c.d(b,{AI_PROVIDERS:()=>r,DI:()=>m,IS:()=>e,JH:()=>l,Pd:()=>n,br:()=>k,fg:()=>j,gC:()=>q,gb:()=>p,jO:()=>x,js:()=>v,mq:()=>o,nJ:()=>f,rs:()=>t,wG:()=>u,wb:()=>w,zN:()=>i,zt:()=>s});let d="⚠️ Risk Notice: This provider uses a subscription/OAuth session not officially licensed for proxy/router use. Account may be restricted or banned. Use at your own risk.",e={kiro:{id:"kiro",alias:"kr",name:"Kiro AI",icon:"psychology_alt",color:"#FF6B35",deprecated:!0,deprecationNotice:d,website:"https://kiro.dev",notice:{signupUrl:"https://kiro.dev"}},"gemini-cli":{id:"gemini-cli",alias:"gc",name:"Gemini CLI",icon:"terminal",color:"#4285F4",deprecated:!0,deprecationNotice:d,website:"https://github.com/google-gemini/gemini-cli",notice:{signupUrl:"https://github.com/google-gemini/gemini-cli"}},codebuddy:{id:"codebuddy",alias:"cb",name:"CodeBuddy",icon:"smart_toy",color:"#006EFF",deprecated:!0,deprecationNotice:d,website:"https://www.codebuddy.ai",notice:{signupUrl:"https://www.codebuddy.ai/login",apiKeyUrl:"https://www.codebuddy.ai/profile"},authModes:["oauth","apikey"]},"codebuddy-cn":{id:"codebuddy-cn",alias:"cb-cn",name:"CodeBuddy CN",icon:"smart_toy",color:"#1E40AF",deprecated:!0,deprecationNotice:d,website:"https://www.codebuddy.cn",notice:{signupUrl:"https://copilot.tencent.com",apiKeyUrl:"https://copilot.tencent.com/profile/"},authModes:["oauth","apikey"]},qoder:{id:"qoder",alias:"qd",name:"Qoder",icon:"water_drop",color:"#EC4899",deprecated:!0,deprecationNotice:d,website:"https://qoder.com",notice:{signupUrl:"https://qoder.com"}},opencode:{id:"opencode",alias:"oc",name:"OpenCode Free",icon:"terminal",color:"#E87040",textIcon:"OC",noAuth:!0,passthroughModels:!0,modelsFetcher:{url:"https://opencode.ai/zen/v1/models",type:"opencode-free"}},"mimo-free":{id:"mimo-free",alias:"mmf",name:"MiMo Code Free",icon:"smart_toy",color:"#FF6900",textIcon:"MF",noAuth:!0,hasFree:!0,passthroughModels:!0,website:"https://xiaomimimo.com",notice:{text:"Free Xiaomi MiMo Code endpoint (no API key). Uses bootstrap JWT + Chrome UA. May rate-limit or break if upstream anti-abuse changes."}}},f={openrouter:{id:"openrouter",alias:"openrouter",name:"OpenRouter",icon:"router",color:"#F97316",textIcon:"OR",website:"https://openrouter.ai",notice:{text:"Free tier: 27+ free models, 200 req/day; after $10 credit: 1,000 req/day (OpenRouter terms).",apiKeyUrl:"https://openrouter.ai/settings/keys"},modelsFetcher:{url:"https://openrouter.ai/api/v1/models",type:"openrouter-free"},passthroughModels:!0,serviceKinds:["llm","embedding","tts","imageToText"],embeddingConfig:{baseUrl:"https://openrouter.ai/api/v1/embeddings",authType:"apikey",authHeader:"bearer",models:[{id:"openai/text-embedding-3-small",name:"Text Embedding 3 Small (OpenRouter)",dimensions:1536},{id:"openai/text-embedding-3-large",name:"Text Embedding 3 Large (OpenRouter)",dimensions:3072},{id:"openai/text-embedding-ada-002",name:"Text Embedding Ada 002 (OpenRouter)",dimensions:1536}]}},nvidia:{id:"nvidia",alias:"nvidia",name:"NVIDIA NIM",icon:"developer_board",color:"#76B900",textIcon:"NV",website:"https://developer.nvidia.com/nim",notice:{text:"Free access for NVIDIA Developer Program members (prototyping & testing).",apiKeyUrl:"https://build.nvidia.com/settings/api-keys"},serviceKinds:["llm","tts","embedding"],ttsConfig:{baseUrl:"https://integrate.api.nvidia.com/v1/audio/speech",authType:"apikey",authHeader:"bearer",format:"nvidia-tts",models:[{id:"fastpitch",name:"FastPitch"},{id:"tacotron2",name:"Tacotron2"}]},embeddingConfig:{baseUrl:"https://integrate.api.nvidia.com/v1/embeddings",authType:"apikey",authHeader:"bearer",models:[{id:"nvidia/nv-embedqa-e5-v5",name:"NV EmbedQA E5 v5",dimensions:1024}]}},ollama:{id:"ollama",alias:"ollama",name:"Ollama Cloud",icon:"cloud",color:"#ffffffff",textIcon:"OL",website:"https://ollama.com",notice:{text:"Free tier: light usage, 1 cloud model at a time (limits reset every 5h & 7d). Pro $20/mo \xb7 Max $100/mo.",apiKeyUrl:"https://ollama.com/settings/keys"}},vertex:{id:"vertex",alias:"vx",name:"Vertex AI",icon:"cloud",color:"#4285F4",textIcon:"VX",website:"https://cloud.google.com/vertex-ai",notice:{text:"New Google Cloud accounts get $300 free credits. Requires GCP project + Service Account with Vertex AI API enabled.",apiKeyUrl:"https://console.cloud.google.com/iam-admin/serviceaccounts"}},gemini:{id:"gemini",alias:"gemini",name:"Gemini",icon:"diamond",color:"#4285F4",textIcon:"GE",mediaPriority:1,website:"https://ai.google.dev",notice:{apiKeyUrl:"https://aistudio.google.com/app/apikey"},serviceKinds:["llm","embedding","image","imageToText","webSearch","tts","stt"],sttConfig:{baseUrl:"https://generativelanguage.googleapis.com/v1beta/models",authType:"apikey",authHeader:"key",format:"gemini-stt",models:[{id:"gemini-2.5-pro",name:"Gemini 2.5 Pro (Best)"},{id:"gemini-2.5-flash",name:"Gemini 2.5 Flash"},{id:"gemini-2.5-flash-lite",name:"Gemini 2.5 Flash Lite (Cheapest)"},{id:"gemini-2.0-flash",name:"Gemini 2.0 Flash"}]},searchViaChat:{defaultModel:"gemini-2.5-flash",pricingUrl:"https://ai.google.dev/pricing",freeTier:"Free tier: 15 RPM, 1M tokens/day on gemini-2.5-flash via AI Studio."},embeddingConfig:{baseUrl:"https://generativelanguage.googleapis.com/v1beta/models",authType:"apikey",authHeader:"key",models:[{id:"text-embedding-004",name:"Text Embedding 004",dimensions:768},{id:"embedding-001",name:"Embedding 001",dimensions:768}]},ttsConfig:{baseUrl:"https://generativelanguage.googleapis.com/v1beta/models",authType:"apikey",authHeader:"key",format:"gemini-tts",models:[{id:"gemini-2.5-flash-preview-tts",name:"Gemini 2.5 Flash TTS"},{id:"gemini-2.5-pro-preview-tts",name:"Gemini 2.5 Pro TTS"}]}},"cloudflare-ai":{id:"cloudflare-ai",alias:"cf",name:"Cloudflare",icon:"cloud",color:"#F38020",textIcon:"CF",website:"https://developers.cloudflare.com/workers-ai/",notice:{text:"Workers AI free tier. Requires a Cloudflare API token and Account ID.",apiKeyUrl:"https://dash.cloudflare.com/profile/api-tokens"},serviceKinds:["llm","image"],hasProviderSpecificData:!0},byteplus:{id:"byteplus",alias:"bpm",name:"BytePlus ModelArk",icon:"cloud",color:"#2563EB",textIcon:"BP",website:"https://console.byteplus.com/ark",notice:{text:"Free credits for new accounts. Access to Seed 2.0, Kimi K2 Thinking, GLM 4.7, GPT-OSS-120B models.",apiKeyUrl:"https://console.byteplus.com/ark/region:ark+ap-southeast-1/apiKey"},serviceKinds:["llm"]}},g={options:["auto","none","minimal","low","medium","high","xhigh","max"],defaultMode:"auto"},h=[{id:"speech-2.8-hd",name:"Speech 2.8 HD"},{id:"speech-2.8-turbo",name:"Speech 2.8 Turbo"},{id:"speech-2.6-hd",name:"Speech 2.6 HD"},{id:"speech-2.6-turbo",name:"Speech 2.6 Turbo"},{id:"speech-02-hd",name:"Speech 02 HD"},{id:"speech-02-turbo",name:"Speech 02 Turbo"},{id:"speech-01-hd",name:"Speech 01 HD"},{id:"speech-01-turbo",name:"Speech 01 Turbo"}],i={claude:{id:"claude",alias:"cc",name:"Claude Code",icon:"smart_toy",color:"#D97757",deprecated:!0,deprecationNotice:d,website:"https://claude.ai",notice:{signupUrl:"https://claude.ai"}},antigravity:{id:"antigravity",alias:"ag",name:"Antigravity",icon:"rocket_launch",color:"#F59E0B",deprecated:!0,deprecationNotice:"⚠️ Risk Notice: This provider uses a subscription/OAuth session not officially licensed for proxy/router use. Account may be restricted or banned. Use at your own risk.",website:"https://antigravity.google",notice:{signupUrl:"https://antigravity.google"}},codex:{id:"codex",alias:"cx",name:"OpenAI Codex",icon:"code",color:"#3B82F6",deprecated:!0,deprecationNotice:d,thinkingConfig:g,serviceKinds:["llm","image"],kindNotice:{image:"Requires a ChatGPT Plus (or higher) account. Free accounts are not supported for image generation."},website:"https://chatgpt.com/codex",notice:{signupUrl:"https://chatgpt.com/codex"}},github:{id:"github",alias:"gh",name:"GitHub Copilot",icon:"code",color:"#333333",deprecated:!0,deprecationNotice:d,serviceKinds:["llm","embedding"],embeddingConfig:{baseUrl:"https://models.github.ai/inference/embeddings",authType:"apikey",authHeader:"bearer",models:[{id:"text-embedding-3-small",name:"Text Embedding 3 Small (GitHub)",dimensions:1536},{id:"text-embedding-3-large",name:"Text Embedding 3 Large (GitHub)",dimensions:3072}]},website:"https://github.com/features/copilot",notice:{signupUrl:"https://github.com/features/copilot"}},cursor:{id:"cursor",alias:"cu",name:"Cursor IDE",icon:"edit_note",color:"#00D4AA",website:"https://cursor.com",notice:{signupUrl:"https://cursor.com"}},xai:{id:"xai",alias:"xai",name:"xAI (Grok)",icon:"auto_awesome",color:"#1DA1F2",textIcon:"XA",website:"https://x.ai",notice:{apiKeyUrl:"https://console.x.ai",signupUrl:"https://x.ai"},serviceKinds:["llm","imageToText","webSearch","image"],searchViaChat:{defaultModel:"grok-4.20-reasoning",pricingUrl:"https://x.ai/api#pricing"},authModes:["oauth","apikey"],hasOAuth:!0},kilocode:{id:"kilocode",alias:"kc",name:"Kilo Code",icon:"code",color:"#FF6B35",textIcon:"KC",website:"https://kilocode.ai",notice:{signupUrl:"https://kilocode.ai"}},cline:{id:"cline",alias:"cl",name:"Cline",icon:"smart_toy",color:"#5B9BD5",textIcon:"CL",website:"https://cline.bot",notice:{signupUrl:"https://cline.bot"}},clinepass:{id:"clinepass",alias:"clinepass",name:"ClinePass",icon:"vpn_key",color:"#5B9BD5",textIcon:"CP",website:"https://cline.bot",notice:{signupUrl:"https://app.cline.bot"},authModes:["oauth","apikey"],hasOAuth:!0,thinkingConfig:{options:["auto","on","off"],defaultMode:"auto",defaultBudgetTokens:1e4}},kimchi:{id:"kimchi",alias:"kimchi",name:"Kimchi",icon:"restaurant",color:"#FF521D",textIcon:"KC",website:"https://kimchi.dev",notice:{signupUrl:"https://app.kimchi.dev"},hasOAuth:!0,passthroughModels:!0,serviceKinds:["llm","imageToText"]},"grok-cli":{id:"grok-cli",alias:"gcli",name:"Grok CLI (Grok Build)",icon:"auto_awesome",color:"#1DA1F2",textIcon:"GC",website:"https://x.ai",notice:{text:"Sign in with your xAI / Grok account via device code. Uses Grok Build subscription credits (cli-chat-proxy.grok.com).",signupUrl:"https://grok.com/supergrok"},hasOAuth:!0,thinkingConfig:{options:["low","medium","high"],defaultMode:"high"}},autoclaw:{id:"autoclaw",alias:"acl",name:"AutoClaw",icon:"bolt",color:"#7C3AED",textIcon:"AC",website:"https://autoclaw.z.ai",notice:{signupUrl:"https://autoclaw.z.ai"}}},j={glm:{id:"glm",alias:"glm",name:"GLM Coding",icon:"code",color:"#2563EB",textIcon:"GL",website:"https://open.bigmodel.cn",notice:{apiKeyUrl:"https://open.bigmodel.cn/usercenter/apikeys"}},"glm-cn":{id:"glm-cn",alias:"glm-cn",name:"GLM (China)",icon:"code",color:"#DC2626",textIcon:"GC",website:"https://open.bigmodel.cn",notice:{apiKeyUrl:"https://open.bigmodel.cn/usercenter/apikeys"}},kimi:{id:"kimi",alias:"kimi",name:"Kimi",icon:"psychology",color:"#1E3A8A",textIcon:"KM",website:"https://kimi.moonshot.cn",notice:{apiKeyUrl:"https://platform.moonshot.ai/console/api-keys"},serviceKinds:["llm","webSearch"],searchViaChat:{defaultModel:"kimi-k2.5",pricingUrl:"https://platform.moonshot.ai/docs/pricing/chat"}},minimax:{id:"minimax",alias:"minimax",name:"Minimax Coding",icon:"memory",color:"#7C3AED",textIcon:"MM",website:"https://www.minimaxi.com",notice:{apiKeyUrl:"https://platform.minimaxi.com/user-center/basic-information/interface-key"},serviceKinds:["llm","image","imageToText","webSearch","tts"],searchViaChat:{defaultModel:"MiniMax-M2.7",pricingUrl:"https://www.minimaxi.com/document/price"},ttsConfig:{baseUrl:"https://api.minimax.io/v1/t2a_v2",authType:"apikey",authHeader:"bearer",format:"minimax-tts",models:h}},"minimax-cn":{id:"minimax-cn",alias:"minimax-cn",name:"Minimax (China)",icon:"memory",color:"#DC2626",textIcon:"MC",website:"https://www.minimaxi.com",notice:{apiKeyUrl:"https://platform.minimaxi.com/user-center/basic-information/interface-key"},serviceKinds:["llm","tts"],ttsConfig:{baseUrl:"https://api.minimaxi.com/v1/t2a_v2",authType:"apikey",authHeader:"bearer",format:"minimax-tts",models:h}},alicode:{id:"alicode",alias:"alicode",name:"Alibaba",icon:"cloud",color:"#FF6A00",textIcon:"ALi",website:"https://bailian.console.aliyun.com",notice:{apiKeyUrl:"https://bailian.console.aliyun.com/?apiKey=1"}},"alicode-intl":{id:"alicode-intl",alias:"alicode-intl",name:"Alibaba Intl",icon:"cloud",color:"#FF6A00",textIcon:"ALi",website:"https://modelstudio.console.alibabacloud.com",notice:{apiKeyUrl:"https://modelstudio.console.alibabacloud.com/?apiKey=1"}},"xiaomi-mimo":{id:"xiaomi-mimo",alias:"mimo",name:"Xiaomi MiMo",icon:"smart_toy",color:"#FF6900",textIcon:"XM",website:"https://xiaomimimo.com",notice:{apiKeyUrl:"https://xiaomimimo.com"}},"xiaomi-tokenplan":{id:"xiaomi-tokenplan",alias:"xmtp",name:"Xiaomi MiMo (Token Plan)",icon:"smart_toy",color:"#FF6700",textIcon:"XT",website:"https://mimo.xiaomi.com",notice:{text:"Xiaomi MiMo Token Plan subscription (API key starts with tp-). Token Plan keys are cluster-specific — select the region matching your subscription.",apiKeyUrl:"https://mimo.xiaomi.com"},hasProviderSpecificData:!0,regions:[{id:"sgp",label:"Singapore",baseUrl:"https://token-plan-sgp.xiaomimimo.com/v1"},{id:"cn",label:"China",baseUrl:"https://token-plan-cn.xiaomimimo.com/v1"},{id:"ams",label:"Europe",baseUrl:"https://token-plan-ams.xiaomimimo.com/v1"}],defaultRegion:"sgp"},"volcengine-ark":{id:"volcengine-ark",alias:"ark",name:"Volcengine Ark",icon:"cloud",color:"#1677FF",textIcon:"ARK",website:"https://ark.cn-beijing.volces.com",notice:{apiKeyUrl:"https://console.volcengine.com/ark/region:ark+cn-beijing/apiKey"}},openai:{id:"openai",alias:"openai",name:"OpenAI",icon:"auto_awesome",color:"#10A37F",textIcon:"OA",website:"https://platform.openai.com",notice:{apiKeyUrl:"https://platform.openai.com/api-keys"},serviceKinds:["llm","embedding","tts","stt","image","imageToText","webSearch"],thinkingConfig:g,searchViaChat:{defaultModel:"gpt-4o-mini",pricingUrl:"https://openai.com/api/pricing"},ttsConfig:{baseUrl:"https://api.openai.com/v1/audio/speech",authType:"apikey",authHeader:"bearer",format:"openai",models:[{id:"tts-1",name:"TTS-1"},{id:"tts-1-hd",name:"TTS-1 HD"},{id:"gpt-4o-mini-tts",name:"GPT-4o Mini TTS"}]},sttConfig:{baseUrl:"https://api.openai.com/v1/audio/transcriptions",authType:"apikey",authHeader:"bearer",format:"openai",models:[{id:"whisper-1",name:"Whisper 1"},{id:"gpt-4o-transcribe",name:"GPT-4o Transcribe"},{id:"gpt-4o-mini-transcribe",name:"GPT-4o Mini Transcribe"}]},embeddingConfig:{baseUrl:"https://api.openai.com/v1/embeddings",authType:"apikey",authHeader:"bearer",models:[{id:"text-embedding-3-small",name:"Text Embedding 3 Small",dimensions:1536},{id:"text-embedding-3-large",name:"Text Embedding 3 Large",dimensions:3072},{id:"text-embedding-ada-002",name:"Text Embedding Ada 002",dimensions:1536}]}},"vercel-ai-gateway":{id:"vercel-ai-gateway",alias:"vercel",name:"Vercel AI Gateway",icon:"deployed_code",color:"#111827",textIcon:"VG",website:"https://vercel.com/ai-gateway",notice:{text:"Unified OpenAI-compatible endpoint from Vercel. Use your AI Gateway API key, then pick models with provider/model IDs like anthropic/claude-sonnet-4.6 or openai/gpt-5.4.",apiKeyUrl:"https://vercel.com/dashboard/~/ai-gateway"},passthroughModels:!0,serviceKinds:["llm"]},anthropic:{id:"anthropic",alias:"anthropic",name:"Anthropic",icon:"smart_toy",color:"#D97757",textIcon:"AN",website:"https://console.anthropic.com",notice:{apiKeyUrl:"https://console.anthropic.com/settings/keys"},serviceKinds:["llm","imageToText"]},"opencode-go":{id:"opencode-go",alias:"ocg",name:"OpenCode Go",icon:"terminal",color:"#E87040",textIcon:"OC",website:"https://opencode.ai/auth",notice:{text:"OpenCode Go subscription: $5/mo (then $10/mo). Access to Kimi, GLM, Qwen, MiMo, MiniMax models.",apiKeyUrl:"https://opencode.ai/auth"}},azure:{id:"azure",alias:"azure",name:"Azure OpenAI",icon:"cloud",color:"#0078D4",textIcon:"AZ",website:"https://azure.microsoft.com/en-us/products/ai-services/openai-service",notice:{apiKeyUrl:"https://portal.azure.com/#view/Microsoft_Azure_ProjectOxford/CognitiveServicesHub/~/OpenAI"},hasProviderSpecificData:!0},deepseek:{id:"deepseek",alias:"ds",name:"DeepSeek",icon:"bolt",color:"#4D6BFE",textIcon:"DS",website:"https://deepseek.com",notice:{apiKeyUrl:"https://platform.deepseek.com/api_keys"}},commandcode:{id:"commandcode",alias:"cmc",name:"Command Code",icon:"smart_toy",color:"#000000",textIcon:"CC",website:"https://commandcode.ai",notice:{text:"Use your CommandCode CLI API key (starts with user_...) from ~/.commandcode/auth.json or commandcode.ai/studio.",apiKeyUrl:"https://commandcode.ai/studio"}},groq:{id:"groq",alias:"groq",name:"Groq",icon:"speed",color:"#F55036",textIcon:"GQ",website:"https://groq.com",notice:{apiKeyUrl:"https://console.groq.com/keys"},serviceKinds:["llm","imageToText","stt"],sttConfig:{baseUrl:"https://api.groq.com/openai/v1/audio/transcriptions",authType:"apikey",authHeader:"bearer",format:"openai",models:[{id:"whisper-large-v3",name:"Whisper Large v3"},{id:"whisper-large-v3-turbo",name:"Whisper Large v3 Turbo"},{id:"distil-whisper-large-v3-en",name:"Distil Whisper Large v3 EN"}]}},xai:{id:"xai",alias:"xai",name:"xAI (Grok)",icon:"auto_awesome",color:"#1DA1F2",textIcon:"XA",website:"https://x.ai",notice:{apiKeyUrl:"https://console.x.ai"},serviceKinds:["llm","imageToText","webSearch","image"],searchViaChat:{defaultModel:"grok-4.20-reasoning",pricingUrl:"https://x.ai/api#pricing"},authModes:["oauth","apikey"],hasOAuth:!0},mistral:{id:"mistral",alias:"mistral",name:"Mistral",icon:"air",color:"#FF7000",textIcon:"MI",website:"https://mistral.ai",notice:{apiKeyUrl:"https://console.mistral.ai/api-keys"},serviceKinds:["llm","imageToText","embedding"],embeddingConfig:{baseUrl:"https://api.mistral.ai/v1/embeddings",authType:"apikey",authHeader:"bearer",models:[{id:"mistral-embed",name:"Mistral Embed",dimensions:1024}]}},perplexity:{id:"perplexity",alias:"pplx",name:"Perplexity",icon:"search",color:"#20808D",textIcon:"PP",website:"https://www.perplexity.ai",notice:{apiKeyUrl:"https://www.perplexity.ai/settings/api"},serviceKinds:["llm","webSearch"],searchConfig:{baseUrl:"https://api.perplexity.ai/search",method:"POST",authType:"apikey",authHeader:"bearer",costPerQuery:.005,freeMonthlyQuota:0,searchTypes:["web"],defaultMaxResults:5,maxMaxResults:20,timeoutMs:1e4,cacheTTLMs:3e5}},"perplexity-agent":{id:"perplexity-agent",alias:"pa",name:"Perplexity Agent",icon:"travel_explore",color:"#20808D",textIcon:"PA",website:"https://www.perplexity.ai",notice:{text:"Perplexity Agent API exposes GPT, Claude, Gemini, Grok, GLM, Kimi, and Sonar models through one OpenAI-compatible Responses API.",apiKeyUrl:"https://www.perplexity.ai/settings/api"},passthroughModels:!0,modelsFetcher:{url:"https://api.perplexity.ai/v1/models",type:"openai"},serviceKinds:["llm","webSearch"],searchViaChat:{defaultModel:"perplexity/sonar",endpoint:"https://api.perplexity.ai/v1/responses",pricingUrl:"https://docs.perplexity.ai/docs/agent-api/models"}},clinepass:{id:"clinepass",alias:"clinepass",name:"ClinePass",icon:"vpn_key",color:"#5B9BD5",textIcon:"CP",website:"https://cline.bot",notice:{signupUrl:"https://app.cline.bot",apiKeyUrl:"https://app.cline.bot"},authModes:["oauth","apikey"],hasOAuth:!0},together:{id:"together",alias:"together",name:"Together AI",icon:"group_work",color:"#0F6FFF",textIcon:"TG",website:"https://www.together.ai",notice:{apiKeyUrl:"https://api.together.xyz/settings/api-keys"},serviceKinds:["llm","embedding"],embeddingConfig:{baseUrl:"https://api.together.xyz/v1/embeddings",authType:"apikey",authHeader:"bearer",models:[{id:"BAAI/bge-large-en-v1.5",name:"BGE Large EN v1.5",dimensions:1024},{id:"togethercomputer/m2-bert-80M-8k-retrieval",name:"M2 BERT 80M 8K",dimensions:768}]}},fireworks:{id:"fireworks",alias:"fireworks",name:"Fireworks AI",icon:"local_fire_department",color:"#7B2EF2",textIcon:"FW",website:"https://fireworks.ai",notice:{apiKeyUrl:"https://fireworks.ai/account/api-keys"},serviceKinds:["llm","embedding"],embeddingConfig:{baseUrl:"https://api.fireworks.ai/inference/v1/embeddings",authType:"apikey",authHeader:"bearer",models:[{id:"nomic-ai/nomic-embed-text-v1.5",name:"Nomic Embed Text v1.5",dimensions:768}]}},venice:{id:"venice",alias:"venice",name:"Venice AI",icon:"shield",color:"#DC2626",textIcon:"VE",website:"https://venice.ai",notice:{text:"OpenAI-compatible. Private inference + uncensored models (Venice Uncensored, GLM, Qwen, DeepSeek, Llama).",apiKeyUrl:"https://venice.ai/settings/api"},passthroughModels:!0,modelsFetcher:{url:"https://api.venice.ai/api/v1/models",type:"openai"},serviceKinds:["llm","embedding","image"],embeddingConfig:{baseUrl:"https://api.venice.ai/api/v1/embeddings",authType:"apikey",authHeader:"bearer",models:[{id:"text-embedding-3-large",name:"Text Embedding 3 Large",dimensions:3072},{id:"text-embedding-bge-m3",name:"BGE-M3 Embedding",dimensions:1024}]}},featherless:{id:"featherless",alias:"fl",name:"Featherless",icon:"flutter_dash",color:"#111827",textIcon:"FL",website:"https://featherless.ai",notice:{apiKeyUrl:"https://featherless.ai/account/api-keys"},passthroughModels:!0,modelsFetcher:{url:"https://api.featherless.ai/v1/models",type:"openai"}},cerebras:{id:"cerebras",alias:"cerebras",name:"Cerebras",icon:"memory",color:"#FF4F00",textIcon:"CB",website:"https://www.cerebras.ai",notice:{apiKeyUrl:"https://cloud.cerebras.ai/platform"}},cohere:{id:"cohere",alias:"cohere",name:"Cohere",icon:"hub",color:"#39594D",textIcon:"CO",website:"https://cohere.com",notice:{apiKeyUrl:"https://dashboard.cohere.com/api-keys"}},nebius:{id:"nebius",alias:"nebius",name:"Nebius AI",icon:"cloud",color:"#6C5CE7",textIcon:"NB",website:"https://nebius.com",notice:{apiKeyUrl:"https://studio.nebius.com/settings/api-keys"},serviceKinds:["llm","embedding"],embeddingConfig:{baseUrl:"https://api.tokenfactory.nebius.com/v1/embeddings",authType:"apikey",authHeader:"bearer",models:[{id:"Qwen/Qwen3-Embedding-8B",name:"Qwen3 Embedding 8B",dimensions:4096}]}},siliconflow:{id:"siliconflow",alias:"siliconflow",name:"SiliconFlow",icon:"cloud_queue",color:"#5B6EF5",textIcon:"SF",website:"https://cloud.siliconflow.com",notice:{apiKeyUrl:"https://cloud.siliconflow.com/account/ak"}},hyperbolic:{id:"hyperbolic",alias:"hyp",name:"Hyperbolic",icon:"bolt",color:"#00D4FF",textIcon:"HY",website:"https://hyperbolic.xyz",notice:{apiKeyUrl:"https://app.hyperbolic.xyz/settings"},serviceKinds:["llm","tts"],ttsConfig:{baseUrl:"https://api.hyperbolic.xyz/v1/audio/generation",authType:"apikey",authHeader:"bearer",format:"hyperbolic",models:[{id:"melo-tts",name:"Melo TTS"}]}},deepgram:{id:"deepgram",alias:"dg",name:"Deepgram",icon:"mic",color:"#13EF93",textIcon:"DG",website:"https://deepgram.com",notice:{text:"$200 free credit on signup (no card required). Aura-1: $0.015/1k chars, Aura-2: $0.030/1k chars (Pay-As-You-Go).",apiKeyUrl:"https://console.deepgram.com/api-keys"},serviceKinds:["stt","imageToText","tts"],ttsConfig:{baseUrl:"https://api.deepgram.com/v1/speak",authType:"apikey",authHeader:"token",format:"deepgram",models:[]},sttConfig:{baseUrl:"https://api.deepgram.com/v1/listen",authType:"apikey",authHeader:"token",format:"deepgram",models:[{id:"nova-3",name:"Nova 3"},{id:"nova-2",name:"Nova 2"},{id:"whisper-large",name:"Whisper Large"}]}},assemblyai:{id:"assemblyai",alias:"aai",name:"AssemblyAI",icon:"record_voice_over",color:"#0062FF",textIcon:"AA",website:"https://assemblyai.com",notice:{apiKeyUrl:"https://www.assemblyai.com/app/api-keys"},serviceKinds:["stt"],sttConfig:{baseUrl:"https://api.assemblyai.com/v2/transcript",authType:"apikey",authHeader:"bearer",format:"assemblyai",async:!0,models:[{id:"universal-3-pro",name:"Universal 3 Pro"},{id:"universal-2",name:"Universal 2"}]}},nanobanana:{id:"nanobanana",alias:"nb",name:"NanoBanana API",icon:"extension",color:"#FFD700",textIcon:"\uD83C\uDF4C",website:"https://nanobananaapi.ai",notice:{text:"3rd-party proxy for Google Nano Banana (Gemini 2.5/3 Flash Image). For official, use Gemini provider.",apiKeyUrl:"https://nanobananaapi.ai/dashboard"},serviceKinds:["image"]},elevenlabs:{id:"elevenlabs",alias:"el",name:"ElevenLabs",icon:"record_voice_over",color:"#6C47FF",textIcon:"EL",website:"https://elevenlabs.io",notice:{apiKeyUrl:"https://elevenlabs.io/app/settings/api-keys"},serviceKinds:["tts"],ttsConfig:{baseUrl:"https://api.elevenlabs.io/v1/text-to-speech",authType:"apikey",authHeader:"xi-api-key",format:"elevenlabs",models:[{id:"eleven_multilingual_v2",name:"Eleven Multilingual v2"},{id:"eleven_turbo_v2_5",name:"Eleven Turbo v2.5"}]}},cartesia:{id:"cartesia",alias:"cartesia",name:"Cartesia",icon:"spatial_audio",color:"#FF4F8B",textIcon:"CA",website:"https://cartesia.ai",notice:{apiKeyUrl:"https://play.cartesia.ai/keys"},serviceKinds:["tts"],hidden:!0,ttsConfig:{baseUrl:"https://api.cartesia.ai/tts/bytes",authType:"apikey",authHeader:"x-api-key",format:"cartesia",models:[{id:"sonic-2",name:"Sonic 2"},{id:"sonic-3",name:"Sonic 3"}]}},playht:{id:"playht",alias:"playht",name:"PlayHT",icon:"play_circle",color:"#00B4D8",textIcon:"PH",website:"https://play.ht",notice:{apiKeyUrl:"https://play.ht/studio/api-access"},serviceKinds:["tts"],hidden:!0,ttsConfig:{baseUrl:"https://api.play.ht/api/v2/tts/stream",authType:"apikey",authHeader:"playht",format:"playht",models:[{id:"PlayDialog",name:"PlayDialog"},{id:"Play3.0-mini",name:"Play 3.0 Mini"}]}},"local-device":{id:"local-device",alias:"local-device",name:"Local Device",icon:"speaker",color:"#64748B",textIcon:"LD",mediaPriority:5,serviceKinds:["tts"],noAuth:!0,ttsConfig:{baseUrl:"local-device",authType:"none",authHeader:"none",format:"local-device",models:[]}},"google-tts":{id:"google-tts",alias:"google-tts",name:"Google TTS",icon:"record_voice_over",color:"#4285F4",textIcon:"GT",mediaPriority:5,serviceKinds:["tts"],noAuth:!0,ttsConfig:{baseUrl:"google-tts",authType:"none",authHeader:"none",format:"google-tts",models:[]}},"edge-tts":{id:"edge-tts",alias:"edge-tts",name:"Edge TTS",icon:"record_voice_over",color:"#0078D4",textIcon:"ET",mediaPriority:5,serviceKinds:["tts"],noAuth:!0,ttsConfig:{baseUrl:"edge-tts",authType:"none",authHeader:"none",format:"edge-tts",models:[]}},coqui:{id:"coqui",alias:"coqui",name:"Coqui TTS",icon:"record_voice_over",color:"#10B981",textIcon:"CQ",website:"https://github.com/coqui-ai/TTS",serviceKinds:["tts"],hidden:!0,noAuth:!0,ttsConfig:{baseUrl:"http://localhost:5002/api/tts",authType:"none",authHeader:"none",format:"coqui",models:[{id:"tts_models/en/ljspeech/tacotron2-DDC",name:"Tacotron2 DDC (LJSpeech)"}]}},tortoise:{id:"tortoise",alias:"tortoise",name:"Tortoise TTS",icon:"record_voice_over",color:"#7C3AED",textIcon:"TT",website:"https://github.com/neonbjb/tortoise-tts",serviceKinds:["tts"],hidden:!0,noAuth:!0,ttsConfig:{baseUrl:"http://localhost:5000/api/tts",authType:"none",authHeader:"none",format:"tortoise",models:[{id:"tortoise-v2",name:"Tortoise v2"}]}},inworld:{id:"inworld",alias:"inworld",name:"Inworld TTS",icon:"record_voice_over",color:"#FF6B6B",textIcon:"IW",website:"https://inworld.ai",notice:{text:"Free tier: 40 minutes/month TTS. Paid: TTS-1.5 Mini $0.01/min ($15/1M chars), TTS-1.5 Max $0.025/min ($30/1M chars). 270+ voices, 15 languages.",apiKeyUrl:"https://platform.inworld.ai/api-keys"},serviceKinds:["tts"],ttsConfig:{baseUrl:"https://api.inworld.ai/tts/v1/voice",authType:"apikey",authHeader:"basic",format:"inworld",models:[{id:"inworld-tts-1.5-mini",name:"Inworld TTS 1.5 Mini ($0.01/min)"},{id:"inworld-tts-1.5-max",name:"Inworld TTS 1.5 Max ($0.025/min)"}]}},"voyage-ai":{id:"voyage-ai",alias:"voyage",name:"Voyage AI",icon:"data_array",color:"#0EA5E9",textIcon:"VG",website:"https://www.voyageai.com",notice:{apiKeyUrl:"https://dash.voyageai.com/api-keys"},serviceKinds:["embedding"],embeddingConfig:{baseUrl:"https://api.voyageai.com/v1/embeddings",authType:"apikey",authHeader:"bearer",models:[{id:"voyage-3-large",name:"Voyage 3 Large",dimensions:1024},{id:"voyage-3.5",name:"Voyage 3.5",dimensions:1024},{id:"voyage-3.5-lite",name:"Voyage 3.5 Lite",dimensions:1024},{id:"voyage-code-3",name:"Voyage Code 3",dimensions:1024},{id:"voyage-finance-2",name:"Voyage Finance 2",dimensions:1024},{id:"voyage-law-2",name:"Voyage Law 2",dimensions:1024},{id:"voyage-multilingual-2",name:"Voyage Multilingual 2",dimensions:1024}]}},sdwebui:{id:"sdwebui",alias:"sdwebui",name:"SD WebUI",icon:"brush",color:"#FF7043",textIcon:"SD",website:"https://github.com/AUTOMATIC1111/stable-diffusion-webui",serviceKinds:["image"]},comfyui:{id:"comfyui",alias:"comfyui",name:"ComfyUI",icon:"account_tree",color:"#4CAF50",textIcon:"CF",website:"https://github.com/comfyanonymous/ComfyUI",serviceKinds:["image"]},huggingface:{id:"huggingface",alias:"hf",name:"HuggingFace",icon:"face",color:"#FFD21E",textIcon:"HF",website:"https://huggingface.co",notice:{apiKeyUrl:"https://huggingface.co/settings/tokens"},serviceKinds:["image","imageToText","tts","stt"],hiddenKinds:["tts"],ttsConfig:{baseUrl:"https://api-inference.huggingface.co/models",authType:"apikey",authHeader:"bearer",format:"huggingface-tts",models:[{id:"facebook/mms-tts-eng",name:"MMS TTS English"},{id:"microsoft/speecht5_tts",name:"SpeechT5 TTS"}]},sttConfig:{baseUrl:"https://api-inference.huggingface.co/models",authType:"apikey",authHeader:"bearer",format:"huggingface-asr",models:[{id:"openai/whisper-large-v3",name:"Whisper Large v3 (HF)"},{id:"openai/whisper-small",name:"Whisper Small (HF)"}]}},blackbox:{id:"blackbox",alias:"bb",name:"Blackbox AI",icon:"smart_toy",color:"#5B5FEF",textIcon:"BB",website:"https://blackbox.ai",notice:{apiKeyUrl:"https://www.blackbox.ai/api-management"},serviceKinds:["llm"]},chutes:{id:"chutes",alias:"ch",name:"Chutes AI",icon:"water_drop",color:"#ffffffff",textIcon:"CH",website:"https://chutes.ai",notice:{apiKeyUrl:"https://chutes.ai/app/api"}},"ollama-local":{id:"ollama-local",alias:"ollama-local",name:"Ollama Local",icon:"cloud",color:"#ffffffff",textIcon:"OL",website:"https://ollama.com"},"vertex-partner":{id:"vertex-partner",alias:"vxp",name:"Vertex Partner",icon:"cloud",color:"#34A853",textIcon:"VP",website:"https://cloud.google.com/vertex-ai/generative-ai/docs/partner-models/use-partner-models",notice:{apiKeyUrl:"https://console.cloud.google.com/iam-admin/serviceaccounts"}},tavily:{id:"tavily",alias:"tavily",name:"Tavily",icon:"search",color:"#5B21B6",textIcon:"TV",website:"https://tavily.com",notice:{apiKeyUrl:"https://app.tavily.com/home"},serviceKinds:["webSearch","webFetch"],searchConfig:{baseUrl:"https://api.tavily.com/search",method:"POST",authType:"apikey",authHeader:"bearer",costPerQuery:.008,freeMonthlyQuota:1e3,searchTypes:["web","news"],defaultMaxResults:5,maxMaxResults:20,timeoutMs:1e4,cacheTTLMs:3e5},fetchConfig:{baseUrl:"https://api.tavily.com/extract",method:"POST",authType:"apikey",authHeader:"bearer",costPerQuery:.008,freeMonthlyQuota:1e3,formats:["markdown","text"],maxCharacters:1e5,timeoutMs:15e3}},"brave-search":{id:"brave-search",alias:"brave",name:"Brave Search",icon:"travel_explore",color:"#FB542B",textIcon:"BR",website:"https://brave.com/search/api",notice:{apiKeyUrl:"https://api-dashboard.search.brave.com/app/keys"},serviceKinds:["webSearch"],searchConfig:{baseUrl:"https://api.search.brave.com/res/v1",method:"GET",authType:"apikey",authHeader:"x-subscription-token",costPerQuery:.005,freeMonthlyQuota:1e3,searchTypes:["web","news"],defaultMaxResults:5,maxMaxResults:20,timeoutMs:1e4,cacheTTLMs:3e5}},serper:{id:"serper",alias:"serper",name:"Serper",icon:"search",color:"#4F46E5",textIcon:"SP",website:"https://serper.dev",notice:{apiKeyUrl:"https://serper.dev/api-key"},serviceKinds:["webSearch"],searchConfig:{baseUrl:"https://google.serper.dev",method:"POST",authType:"apikey",authHeader:"x-api-key",costPerQuery:.001,freeMonthlyQuota:2500,searchTypes:["web","news"],defaultMaxResults:5,maxMaxResults:100,timeoutMs:1e4,cacheTTLMs:3e5}},exa:{id:"exa",alias:"exa",name:"Exa",icon:"manage_search",color:"#2563EB",textIcon:"EX",website:"https://exa.ai",notice:{apiKeyUrl:"https://dashboard.exa.ai/api-keys"},serviceKinds:["webSearch","webFetch"],searchConfig:{baseUrl:"https://api.exa.ai/search",method:"POST",authType:"apikey",authHeader:"x-api-key",costPerQuery:.007,freeMonthlyQuota:1e3,searchTypes:["web","news"],defaultMaxResults:5,maxMaxResults:100,timeoutMs:1e4,cacheTTLMs:3e5},fetchConfig:{baseUrl:"https://api.exa.ai/contents",method:"POST",authType:"apikey",authHeader:"x-api-key",costPerQuery:.001,freeMonthlyQuota:1e3,formats:["text","markdown"],maxCharacters:1e5,timeoutMs:15e3}},searxng:{id:"searxng",alias:"searxng",name:"SearXNG",icon:"saved_search",color:"#3B82F6",textIcon:"SX",website:"https://docs.searxng.org",serviceKinds:["webSearch"],noAuth:!0,searchConfig:{baseUrl:"http://localhost:8888/search",method:"GET",authType:"none",authHeader:"none",costPerQuery:0,freeMonthlyQuota:999999,searchTypes:["web","news"],defaultMaxResults:5,maxMaxResults:50,timeoutMs:1e4,cacheTTLMs:18e4}},"google-pse":{id:"google-pse",alias:"gpse",name:"Google PSE",icon:"search",color:"#4285F4",textIcon:"GP",website:"https://programmablesearchengine.google.com",notice:{apiKeyUrl:"https://programmablesearchengine.google.com/controlpanel/create"},serviceKinds:["webSearch"],searchConfig:{baseUrl:"https://www.googleapis.com/customsearch/v1",method:"GET",authType:"apikey",authHeader:"key",costPerQuery:.005,freeMonthlyQuota:3e3,searchTypes:["web","news"],defaultMaxResults:5,maxMaxResults:10,timeoutMs:1e4,cacheTTLMs:3e5}},linkup:{id:"linkup",alias:"linkup",name:"Linkup",icon:"link",color:"#0EA5E9",textIcon:"LK",website:"https://linkup.so",notice:{apiKeyUrl:"https://app.linkup.so/api-keys"},serviceKinds:["webSearch"],searchConfig:{baseUrl:"https://api.linkup.so/v1/search",method:"POST",authType:"apikey",authHeader:"bearer",costPerQuery:.005,freeMonthlyQuota:1e3,searchTypes:["web"],defaultMaxResults:5,maxMaxResults:50,timeoutMs:1e4,cacheTTLMs:3e5}},searchapi:{id:"searchapi",alias:"searchapi",name:"SearchAPI",icon:"search",color:"#0EA5A4",textIcon:"SA",website:"https://www.searchapi.io",notice:{apiKeyUrl:"https://www.searchapi.io/dashboard"},serviceKinds:["webSearch"],searchConfig:{baseUrl:"https://www.searchapi.io/api/v1/search",method:"GET",authType:"apikey",authHeader:"api_key",costPerQuery:.004,freeMonthlyQuota:100,searchTypes:["web","news"],defaultMaxResults:5,maxMaxResults:100,timeoutMs:1e4,cacheTTLMs:3e5}},youcom:{id:"youcom",alias:"youcom",name:"You.com Search",icon:"search",color:"#7C3AED",textIcon:"YC",website:"https://you.com",notice:{apiKeyUrl:"https://api.you.com"},serviceKinds:["webSearch"],searchConfig:{baseUrl:"https://ydc-index.io/v1/search",method:"GET",authType:"apikey",authHeader:"x-api-key",costPerQuery:.005,freeMonthlyQuota:0,searchTypes:["web","news"],defaultMaxResults:5,maxMaxResults:100,timeoutMs:1e4,cacheTTLMs:3e5}},firecrawl:{id:"firecrawl",alias:"firecrawl",name:"Firecrawl",icon:"local_fire_department",color:"#F59E0B",textIcon:"FC",website:"https://firecrawl.dev",notice:{apiKeyUrl:"https://www.firecrawl.dev/app/api-keys"},serviceKinds:["webFetch"],fetchConfig:{baseUrl:"https://api.firecrawl.dev/v1/scrape",method:"POST",authType:"apikey",authHeader:"bearer",costPerQuery:.002,freeMonthlyQuota:500,formats:["markdown","html","text"],maxCharacters:2e5,timeoutMs:3e4}},"fal-ai":{id:"fal-ai",alias:"fal",name:"Fal.ai",icon:"image",color:"#2563EB",textIcon:"FL",website:"https://fal.ai",notice:{apiKeyUrl:"https://fal.ai/dashboard/keys"},serviceKinds:["image"],imageConfig:{baseUrl:"https://api.fal.ai/v1/models?limit=1",method:"GET",authType:"apikey",authHeader:"key"}},"stability-ai":{id:"stability-ai",alias:"stability",name:"Stability AI",icon:"image",color:"#8B5CF6",textIcon:"SA",website:"https://stability.ai",notice:{apiKeyUrl:"https://platform.stability.ai/account/keys"},serviceKinds:["image"],imageConfig:{baseUrl:"https://api.stability.ai/v1/user/account",method:"GET",authType:"apikey",authHeader:"bearer"}},"black-forest-labs":{id:"black-forest-labs",alias:"bfl",name:"Black Forest Labs",icon:"image",color:"#111827",textIcon:"BF",website:"https://blackforestlabs.ai",notice:{apiKeyUrl:"https://api.bfl.ai"},serviceKinds:["image"],imageConfig:{baseUrl:"https://api.bfl.ai/v1/get_result?id=ping",method:"GET",authType:"apikey",authHeader:"x-key"}},recraft:{id:"recraft",alias:"recraft",name:"Recraft",icon:"image",color:"#EC4899",textIcon:"RC",website:"https://recraft.ai",notice:{apiKeyUrl:"https://www.recraft.ai/profile/api"},serviceKinds:["image"],imageConfig:{baseUrl:"https://external.api.recraft.ai/v1/users/me",method:"GET",authType:"apikey",authHeader:"bearer"}},topaz:{id:"topaz",alias:"topaz",name:"Topaz",icon:"image",color:"#059669",textIcon:"TP",website:"https://topazlabs.com",notice:{apiKeyUrl:"https://topazlabs.com/account"},serviceKinds:["image"]},runwayml:{id:"runwayml",alias:"runway",name:"Runway ML",icon:"movie",color:"#000000",textIcon:"RW",website:"https://runwayml.com",notice:{apiKeyUrl:"https://dev.runwayml.com"},serviceKinds:["image","video"],imageConfig:{baseUrl:"https://api.dev.runwayml.com/v1/organization",method:"GET",authType:"apikey",authHeader:"bearer",extraHeaders:{"X-Runway-Version":"2024-11-06"}}},"aws-polly":{id:"aws-polly",alias:"polly",name:"AWS Polly",icon:"record_voice_over",color:"#FF9900",textIcon:"PL",website:"https://aws.amazon.com/polly/",notice:{text:"Use AWS Secret Access Key as API key; set providerSpecificData.accessKeyId and optional region.",apiKeyUrl:"https://console.aws.amazon.com/iam/home#/security_credentials"},serviceKinds:["tts"],hasProviderSpecificData:!0,ttsConfig:{baseUrl:"https://polly.{region}.amazonaws.com/v1/speech",authType:"apikey",authHeader:"aws-sigv4",format:"aws-polly",models:[{id:"standard",name:"Standard"},{id:"neural",name:"Neural"},{id:"long-form",name:"Long-form"},{id:"generative",name:"Generative"}]}},"jina-ai":{id:"jina-ai",alias:"jina",name:"Jina AI",icon:"blur_on",color:"#2563EB",textIcon:"JA",website:"https://jina.ai",notice:{text:"10M free tokens on signup (non-commercial; Jina terms apply).",apiKeyUrl:"https://jina.ai/?sui=apikey"},serviceKinds:["embedding"],embeddingConfig:{baseUrl:"https://api.jina.ai/v1/embeddings",authType:"apikey",authHeader:"bearer",models:[{id:"jina-embeddings-v3",name:"Jina Embeddings v3",dimensions:1024},{id:"jina-embeddings-v2-base-en",name:"Jina Embeddings v2 Base EN",dimensions:768},{id:"jina-embeddings-v2-base-code",name:"Jina Embeddings v2 Base Code",dimensions:768}]}},"jina-reader":{id:"jina-reader",alias:"jina",name:"Jina Reader",icon:"menu_book",color:"#000000",textIcon:"JR",website:"https://jina.ai/reader",notice:{apiKeyUrl:"https://jina.ai/?sui=apikey"},serviceKinds:["webFetch"],fetchConfig:{baseUrl:"https://r.jina.ai",method:"GET",authType:"apikey",authHeader:"bearer",costPerQuery:0,freeMonthlyQuota:1e6,formats:["markdown","text","html"],maxCharacters:2e5,timeoutMs:3e4}}},k={"grok-web":{id:"grok-web",alias:"gw",name:"Grok Web (Subscription)",icon:"auto_awesome",color:"#1DA1F2",textIcon:"GW",website:"https://grok.com",authType:"cookie",authHint:"Paste your sso= cookie value from grok.com",passthroughModels:!0,serviceKinds:["llm"]},"perplexity-web":{id:"perplexity-web",alias:"pw",name:"Perplexity Web (Pro/Max)",icon:"search",color:"#20808D",textIcon:"PW",website:"https://www.perplexity.ai",authType:"cookie",authHint:"Paste your __Secure-next-auth.session-token cookie value from perplexity.ai",serviceKinds:["llm"]}},l="openai-compatible-",m="anthropic-compatible-",n="custom-embedding-";function o(a){return"string"==typeof a&&a.startsWith(l)}function p(a){return"string"==typeof a&&a.startsWith(m)}function q(a){return"string"==typeof a&&a.startsWith(n)}let r={...e,...f,...i,...j,...k};function s(a){for(let b of Object.values(r))if(b.alias===a||b.id===a)return b;return null}function t(a){let b=s(a);return b?.id||a}function u(a){let b=r[a];return b?.alias||a}let v=Object.values(r).reduce((a,b)=>(a[b.alias]=b.id,a),{});Object.values(r).reduce((a,b)=>(a[b.id]=b.alias,a),{});let w=["claude","antigravity","kiro","codebuddy","codebuddy-cn","qoder","github","codex","kimi-coding","ollama","gemini-cli","glm","glm-cn","minimax","minimax-cn","autoclaw","qwen","iflow","grok-cli","xai","cline","clinepass","kimchi","cursor"],x=["glm","glm-cn","minimax","minimax-cn","codebuddy","codebuddy-cn","xai","clinepass"]}};
@@ -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="function"==typeof require?require:c(51029),n=null;function o(){try{let a=function(){try{let a=h.join(j(),"noop.js");return e(a)}catch{return null}}(),b=h.join(k(),l);if(a&&f.existsSync(h.join(b,"package.json")))return a(b)}catch{}try{return m(l)}catch{}try{let a=h.join(k(),l);if(f.existsSync(h.join(a,"package.json")))return m(a)}catch{}return null}function p(){try{let a,b;return f.existsSync((a=g.homedir(),b="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"),"win32"===process.platform?h.join(b,"camoufox.exe"):"darwin"===process.platform?h.join(b,"Camoufox.app","Contents","MacOS","camoufox"):h.join(b,"camoufox-bin")))}catch{return!1}}a.exports={ensureCamoufoxRuntime:function({silent:a=!1}={}){if(!0===n)return{ok:!0};let b=function({silent:a=!1}={}){let b=o();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=o();return d?{ok:!0,module:d}:{ok:!1,reason:"camoufox-js installed but cannot be required"}}({silent:a});if(!b.ok){n=!1;let a=Error(`Camoufox engine not available. ${b.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}}if(!p()){let b=function({silent:a=!1,timeout:b=6e5}={}){let c=function(){let a=[],b=["dist","__main__.js"];try{let c=m.resolve(`${l}/package.json`);a.push(h.join(h.dirname(c),...b))}catch{}try{a.push(h.join(k(),l,...b))}catch{}for(let b of a)if(b&&f.existsSync(b))return b;return null}();if(!c)return{ok:!1,reason:"camoufox-js cli script not found after install"};a||console.log("⏳ Downloading Camoufox browser binary (first run, ~150MB)...");let e=d(process.execPath,[c,"fetch"],{stdio:a?["ignore","pipe","pipe"]:"inherit",timeout:b,encoding:"utf8"});if(0===e.status)return a||console.log("✅ Camoufox browser ready"),{ok:!0};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});if(!b.ok){n=!1;let a=Error(`Camoufox browser binary not downloaded. ${b.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(m.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}),n=!0,{ok:!0,module:b.module}},loadCamoufoxModule:function(){return o()},isCamoufoxBinaryAvailable:p,resetCache:function(){n=null}}},75949:(a,b,c)=>{"use strict";c.d(b,{DEFAULT_BULK_IMPORT_ENGINE:()=>e,launchBulkImportBrowser:()=>m,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()}}}},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=`
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,9 +30,14 @@ 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
- `;async function j({proxyUrl:a,headless:b=!0,windowSize:d=null}={}){var e;let f,k=null,l=null;try{k=await h()}catch(a){l=a}if(!k){let a=g("playwrightRuntime");if(a?.ensurePlaywrightRuntime){let b=a.ensurePlaywrightRuntime({silent:!1});if(b.ok){try{k=await h()}catch(a){l=a}if(!k){let c=b.module||a.loadPlaywrightModule?.();k=c?.chromium??null}}else if(b.error)throw l&&(b.error.cause=l),b.error}}if(!k){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=l,a}let m=d?.width||(b?1920:900),n=d?.height||(b?1080:700),o={headless:!1!==b,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}`,...b?[]:["--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}}return f=(e=await k.launch(o)).newContext.bind(e),e.newContext=async function(a={}){if(!a.userAgent){let b,c;b=(e.version?e.version():"131.0.0.0")||"131.0.0.0",a.userAgent="darwin"===(c="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"===c?`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 b=await f(a);return await b.addInitScript(i),b},e}async function k({proxyUrl:a,headless:b=!0,windowSize:d=null}={}){let e,f=g("camoufoxRuntime");if(!f?.ensureCamoufoxRuntime){let a=Error("Camoufox runtime helper missing. Reinstall z‍evairouter or pick the Chromium engine.");throw a.code="CAMOUFOX_RUNTIME_HELPER_MISSING",a}let h=f.ensureCamoufoxRuntime({silent:!1});if(!h.ok&&h.error)throw h.error;let i=h.module||f.loadCamoufoxModule?.();if(!i?.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:j}=await Promise.resolve().then(c.bind(c,66307)),l=a?j(a)||{server:a}:null,m=!1!==b,n={...await i.launchOptions({headless:m,...l?{proxy:l,geoip:!0}:{}}),headless:m};if(l&&(n.proxy=l),!m){let a=d?.width||900,b=d?.height||700;n.args=[...n.args||[],`--width=${a}`,`--height=${b}`]}return e.launch(n)}async function l({proxyUrl:a,headless:b=!1,windowSize:d=null}={}){let{ensureDisplayForHeadedBrowser:e}=await c.e(3331).then(c.bind(c,13331)),f=g("cloakbrowserRuntime"),h=null;if(f?.ensureCloakbrowserRuntime){let a=f.ensureCloakbrowserRuntime({silent:!1});if(!a.ok&&a.error)throw a.error;h=a.module||f.loadCloakbrowserModule?.()}if(!h?.launch)try{h=await c.e(6222).then(c.bind(c,6222))}catch(b){let a=Error("cloakbrowser is not installed. Pick CloakBrowser engine again to auto-install, or run: npm install cloakbrowser");throw a.code="CLOAKBROWSER_PACKAGE_MISSING",a.cause=b,a}let i=!0===b;if(!i){let a=e();if(!a.ok)throw a.error}let j={headless:i,humanize:!0};a&&(j.proxy=a,j.geoip=!0),d?.width&&d?.height&&(j.viewport={width:d.width,height:d.height});try{return await h.launch(j)}catch(b){let a=String(b?.message||b||"");if(!i&&/XServer|DISPLAY|Missing X server|headed browser/i.test(a)){if(e().ok)return h.launch(j);let c=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;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}
34
+
35
+ VPS has no display for headed Camoufox (CodeBuddy CN). Install then restart:
36
+ sudo apt-get update && sudo apt-get install -y xvfb
37
+ sudo systemctl restart zevairouter
38
+ ZevaiRouter auto-starts Xvfb when installed.`);throw b.code="NO_DISPLAY",b.cause=c,b}throw c}}function n(a={},{extraDropKeys:b=[]}={}){let c=new Set(["audio:seed","audio.seed","Audio:seed",...b.filter(Boolean)]);if(!a?.env||"object"!=typeof a.env)return a;let d={...a.env};for(let[a,b]of Object.entries(d)){if("string"!=typeof b||!/^CAMOU_CONFIG/i.test(a)&&!/camou.*config/i.test(a))continue;let e=b.trim();if(e.startsWith("{"))try{let b=JSON.parse(e),f=!1;for(let a of c)Object.prototype.hasOwnProperty.call(b,a)&&(delete b[a],f=!0);for(let a of Object.keys(b))(/^audio[:.]/i.test(a)||c.has(a))&&(delete b[a],f=!0);f&&(d[a]=JSON.stringify(b))}catch{}}return{...a,env:d}}async function o({proxyUrl:a,headless:b=!1,windowSize:d=null}={}){let{ensureDisplayForHeadedBrowser:e}=await c.e(3331).then(c.bind(c,13331)),f=g("cloakbrowserRuntime"),h=null;if(f?.ensureCloakbrowserRuntime){let a=f.ensureCloakbrowserRuntime({silent:!1});if(!a.ok&&a.error)throw a.error;h=a.module||f.loadCloakbrowserModule?.()}if(!h?.launch)try{h=await c.e(6222).then(c.bind(c,6222))}catch(b){let a=Error("cloakbrowser is not installed. Pick CloakBrowser engine again to auto-install, or run: npm install cloakbrowser");throw a.code="CLOAKBROWSER_PACKAGE_MISSING",a.cause=b,a}let i=!0===b;if(!i){let a=e();if(!a.ok)throw a.error}let j={headless:i,humanize:!0};a&&(j.proxy=a,j.geoip=!0),d?.width&&d?.height&&(j.viewport={width:d.width,height:d.height});try{return await h.launch(j)}catch(b){let a=String(b?.message||b||"");if(!i&&/XServer|DISPLAY|Missing X server|headed browser/i.test(a)){if(e().ok)return h.launch(j);let c=Error(`${a}
34
39
 
35
40
  VPS has no display. Install a virtual screen then retry:
36
41
  sudo apt-get update && sudo apt-get install -y xvfb
37
42
  sudo systemctl restart zevairouter # or restart zevai
38
- ZevaiRouter auto-starts Xvfb when installed.`);throw c.code="NO_DISPLAY",c.cause=b,c}throw b}}async function m({engine:a=e,proxyUrl:b,headless:c=!0,windowSize:d=null}={}){let g=f(a);return"camoufox"===g?k({proxyUrl:b,headless:c,windowSize:d}):"cloakbrowser"===g?l({proxyUrl:b,headless:!0===c,windowSize:d}):j({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{}try{let a=process.env.HOME||process.env.USERPROFILE||"",b=f.join(a,".aurix/agent/node_modules",l);if(e.existsSync(f.join(b,"package.json")))return p(b)}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),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}}};