zevairouter 1.0.153 → 1.0.155

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 (2314) hide show
  1. package/CHANGELOG.md +47 -0
  2. package/DOCKER.md +403 -0
  3. package/README.md +49 -22
  4. package/README.zh-CN.md +18 -11
  5. package/cli/LICENSE +1 -22
  6. package/cli/app/.next-cli-build/BUILD_ID +1 -1
  7. package/cli/app/.next-cli-build/app-path-routes-manifest.json +13 -11
  8. package/cli/app/.next-cli-build/build-manifest.json +2 -2
  9. package/cli/app/.next-cli-build/required-server-files.json +4 -4
  10. package/cli/app/.next-cli-build/routes-manifest.json +14 -0
  11. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/automation/page.js +2 -2
  12. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/automation/page.js.nft.json +1 -1
  13. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/automation/page_client-reference-manifest.js +1 -1
  14. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page.js +2 -2
  15. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page.js.nft.json +1 -1
  16. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
  17. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js +3 -3
  18. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js.nft.json +1 -1
  19. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page_client-reference-manifest.js +1 -1
  20. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js +2 -2
  21. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
  22. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  23. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page.js +2 -2
  24. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page.js.nft.json +1 -1
  25. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  26. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page.js +2 -2
  27. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page.js.nft.json +1 -1
  28. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
  29. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/context/page.js +2 -2
  30. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/context/page.js.nft.json +1 -1
  31. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/context/page_client-reference-manifest.js +1 -1
  32. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js +2 -2
  33. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
  34. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  35. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js +19 -19
  36. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js.nft.json +1 -1
  37. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
  38. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js +2 -2
  39. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js.nft.json +1 -1
  40. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -1
  41. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js +4 -4
  42. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js.nft.json +1 -1
  43. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +1 -1
  44. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page.js +2 -2
  45. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page.js.nft.json +1 -1
  46. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +1 -1
  47. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page.js +2 -2
  48. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page.js.nft.json +1 -1
  49. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
  50. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js +2 -2
  51. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
  52. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  53. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/playground/page.js +2 -2
  54. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/playground/page.js.nft.json +1 -1
  55. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/playground/page_client-reference-manifest.js +1 -1
  56. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page.js +2 -2
  57. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page.js.nft.json +1 -1
  58. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  59. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js +3 -3
  60. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js.nft.json +1 -1
  61. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  62. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page.js +2 -2
  63. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page.js.nft.json +1 -1
  64. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  65. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page.js +2 -2
  66. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page.js.nft.json +1 -1
  67. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  68. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page.js +4 -4
  69. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page.js.nft.json +1 -1
  70. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
  71. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page.js +2 -2
  72. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page.js.nft.json +1 -1
  73. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page_client-reference-manifest.js +1 -1
  74. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page.js +2 -2
  75. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page.js.nft.json +1 -1
  76. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
  77. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/terminal/page.js +2 -2
  78. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/terminal/page.js.nft.json +1 -1
  79. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/terminal/page_client-reference-manifest.js +1 -1
  80. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page.js +2 -2
  81. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page.js.nft.json +1 -1
  82. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page_client-reference-manifest.js +1 -1
  83. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page.js +2 -2
  84. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page.js.nft.json +1 -1
  85. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  86. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page.js +2 -2
  87. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page.js.nft.json +1 -1
  88. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  89. package/cli/app/.next-cli-build/server/app/_global-error/page.js +3 -3
  90. package/cli/app/.next-cli-build/server/app/_global-error/page.js.nft.json +1 -1
  91. package/cli/app/.next-cli-build/server/app/_global-error/page_client-reference-manifest.js +1 -1
  92. package/cli/app/.next-cli-build/server/app/_global-error.html +1 -1
  93. package/cli/app/.next-cli-build/server/app/_global-error.rsc +1 -1
  94. package/cli/app/.next-cli-build/server/app/_global-error.segments/_full.segment.rsc +1 -1
  95. package/cli/app/.next-cli-build/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  96. package/cli/app/.next-cli-build/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  97. package/cli/app/.next-cli-build/server/app/_global-error.segments/_head.segment.rsc +1 -1
  98. package/cli/app/.next-cli-build/server/app/_global-error.segments/_index.segment.rsc +1 -1
  99. package/cli/app/.next-cli-build/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  100. package/cli/app/.next-cli-build/server/app/_not-found/page.js +2 -2
  101. package/cli/app/.next-cli-build/server/app/_not-found/page.js.nft.json +1 -1
  102. package/cli/app/.next-cli-build/server/app/_not-found/page_client-reference-manifest.js +1 -1
  103. package/cli/app/.next-cli-build/server/app/_not-found.html +1 -1
  104. package/cli/app/.next-cli-build/server/app/_not-found.rsc +3 -3
  105. package/cli/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +3 -3
  106. package/cli/app/.next-cli-build/server/app/_not-found.segments/_head.segment.rsc +1 -1
  107. package/cli/app/.next-cli-build/server/app/_not-found.segments/_index.segment.rsc +3 -3
  108. package/cli/app/.next-cli-build/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  109. package/cli/app/.next-cli-build/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  110. package/cli/app/.next-cli-build/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  111. package/cli/app/.next-cli-build/server/app/api/auth/login/route.js +1 -1
  112. package/cli/app/.next-cli-build/server/app/api/auth/login/route.js.nft.json +1 -1
  113. package/cli/app/.next-cli-build/server/app/api/auth/login/route_client-reference-manifest.js +1 -1
  114. package/cli/app/.next-cli-build/server/app/api/auth/logout/route.js +1 -1
  115. package/cli/app/.next-cli-build/server/app/api/auth/logout/route.js.nft.json +1 -1
  116. package/cli/app/.next-cli-build/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
  117. package/cli/app/.next-cli-build/server/app/api/auth/oidc/callback/route.js +1 -1
  118. package/cli/app/.next-cli-build/server/app/api/auth/oidc/callback/route.js.nft.json +1 -1
  119. package/cli/app/.next-cli-build/server/app/api/auth/oidc/callback/route_client-reference-manifest.js +1 -1
  120. package/cli/app/.next-cli-build/server/app/api/auth/oidc/start/route.js +1 -1
  121. package/cli/app/.next-cli-build/server/app/api/auth/oidc/start/route.js.nft.json +1 -1
  122. package/cli/app/.next-cli-build/server/app/api/auth/oidc/start/route_client-reference-manifest.js +1 -1
  123. package/cli/app/.next-cli-build/server/app/api/auth/oidc/test/route.js +1 -1
  124. package/cli/app/.next-cli-build/server/app/api/auth/oidc/test/route.js.nft.json +1 -1
  125. package/cli/app/.next-cli-build/server/app/api/auth/oidc/test/route_client-reference-manifest.js +1 -1
  126. package/cli/app/.next-cli-build/server/app/api/auth/status/route.js +1 -1
  127. package/cli/app/.next-cli-build/server/app/api/auth/status/route.js.nft.json +1 -1
  128. package/cli/app/.next-cli-build/server/app/api/auth/status/route_client-reference-manifest.js +1 -1
  129. package/cli/app/.next-cli-build/server/app/api/cache/stats/route.js +1 -1
  130. package/cli/app/.next-cli-build/server/app/api/cache/stats/route.js.nft.json +1 -1
  131. package/cli/app/.next-cli-build/server/app/api/cache/stats/route_client-reference-manifest.js +1 -1
  132. package/cli/app/.next-cli-build/server/app/api/changelog/route.js +1 -1
  133. package/cli/app/.next-cli-build/server/app/api/changelog/route.js.nft.json +1 -1
  134. package/cli/app/.next-cli-build/server/app/api/changelog/route_client-reference-manifest.js +1 -1
  135. package/cli/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js +2 -2
  136. package/cli/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js.nft.json +1 -1
  137. package/cli/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route_client-reference-manifest.js +1 -1
  138. package/cli/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js +1 -1
  139. package/cli/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js.nft.json +1 -1
  140. package/cli/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route_client-reference-manifest.js +1 -1
  141. package/cli/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js +1 -1
  142. package/cli/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js.nft.json +1 -1
  143. package/cli/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route_client-reference-manifest.js +1 -1
  144. package/cli/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route.js +1 -1
  145. package/cli/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route.js.nft.json +1 -1
  146. package/cli/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route_client-reference-manifest.js +1 -1
  147. package/cli/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js +1 -1
  148. package/cli/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js.nft.json +1 -1
  149. package/cli/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route_client-reference-manifest.js +1 -1
  150. package/cli/app/.next-cli-build/server/app/api/cli-tools/codex-gateway/accounts/route.js +1 -1
  151. package/cli/app/.next-cli-build/server/app/api/cli-tools/codex-gateway/accounts/route.js.nft.json +1 -1
  152. package/cli/app/.next-cli-build/server/app/api/cli-tools/codex-gateway/accounts/route_client-reference-manifest.js +1 -1
  153. package/cli/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js +1 -1
  154. package/cli/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js.nft.json +1 -1
  155. package/cli/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route_client-reference-manifest.js +1 -1
  156. package/cli/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js +1 -1
  157. package/cli/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js.nft.json +1 -1
  158. package/cli/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route_client-reference-manifest.js +1 -1
  159. package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js +1 -1
  160. package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js.nft.json +1 -1
  161. package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route_client-reference-manifest.js +1 -1
  162. package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js +1 -1
  163. package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js.nft.json +1 -1
  164. package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route_client-reference-manifest.js +1 -1
  165. package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js +1 -1
  166. package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js.nft.json +1 -1
  167. package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route_client-reference-manifest.js +1 -1
  168. package/cli/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js +2 -2
  169. package/cli/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js.nft.json +1 -1
  170. package/cli/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route_client-reference-manifest.js +1 -1
  171. package/cli/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js +2 -2
  172. package/cli/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js.nft.json +1 -1
  173. package/cli/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route_client-reference-manifest.js +1 -1
  174. package/cli/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js +2 -2
  175. package/cli/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js.nft.json +1 -1
  176. package/cli/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route_client-reference-manifest.js +1 -1
  177. package/cli/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js +2 -2
  178. package/cli/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js.nft.json +1 -1
  179. package/cli/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route_client-reference-manifest.js +1 -1
  180. package/cli/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js +2 -2
  181. package/cli/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js.nft.json +1 -1
  182. package/cli/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route_client-reference-manifest.js +1 -1
  183. package/cli/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js +2 -2
  184. package/cli/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js.nft.json +1 -1
  185. package/cli/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route_client-reference-manifest.js +1 -1
  186. package/cli/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js +2 -2
  187. package/cli/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js.nft.json +1 -1
  188. package/cli/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route_client-reference-manifest.js +1 -1
  189. package/cli/app/.next-cli-build/server/app/api/combos/[id]/route.js +1 -1
  190. package/cli/app/.next-cli-build/server/app/api/combos/[id]/route.js.nft.json +1 -1
  191. package/cli/app/.next-cli-build/server/app/api/combos/[id]/route_client-reference-manifest.js +1 -1
  192. package/cli/app/.next-cli-build/server/app/api/combos/route.js +1 -1
  193. package/cli/app/.next-cli-build/server/app/api/combos/route.js.nft.json +1 -1
  194. package/cli/app/.next-cli-build/server/app/api/combos/route_client-reference-manifest.js +1 -1
  195. package/cli/app/.next-cli-build/server/app/api/context/[id]/route.js +1 -1
  196. package/cli/app/.next-cli-build/server/app/api/context/[id]/route.js.nft.json +1 -1
  197. package/cli/app/.next-cli-build/server/app/api/context/[id]/route_client-reference-manifest.js +1 -1
  198. package/cli/app/.next-cli-build/server/app/api/context/bulk/route.js +1 -1
  199. package/cli/app/.next-cli-build/server/app/api/context/bulk/route.js.nft.json +1 -1
  200. package/cli/app/.next-cli-build/server/app/api/context/bulk/route_client-reference-manifest.js +1 -1
  201. package/cli/app/.next-cli-build/server/app/api/context/route.js +1 -1
  202. package/cli/app/.next-cli-build/server/app/api/context/route.js.nft.json +1 -1
  203. package/cli/app/.next-cli-build/server/app/api/context/route_client-reference-manifest.js +1 -1
  204. package/cli/app/.next-cli-build/server/app/api/dashboard/chat/completions/route.js +1 -1
  205. package/cli/app/.next-cli-build/server/app/api/dashboard/chat/completions/route.js.nft.json +1 -1
  206. package/cli/app/.next-cli-build/server/app/api/dashboard/chat/completions/route_client-reference-manifest.js +1 -1
  207. package/cli/app/.next-cli-build/server/app/api/dashboard/cli-tools/keys/route.js +1 -0
  208. package/cli/app/.next-cli-build/server/app/api/dashboard/cli-tools/keys/route.js.nft.json +1 -0
  209. package/cli/app/.next-cli-build/server/app/api/dashboard/cli-tools/keys/route_client-reference-manifest.js +1 -0
  210. package/cli/app/.next-cli-build/server/app/api/dashboard/media/[operation]/route.js +1 -0
  211. package/cli/app/.next-cli-build/server/app/api/dashboard/media/[operation]/route.js.nft.json +1 -0
  212. package/cli/app/.next-cli-build/server/app/api/dashboard/media/[operation]/route_client-reference-manifest.js +1 -0
  213. package/cli/app/.next-cli-build/server/app/api/headroom/extras/route.js +1 -1
  214. package/cli/app/.next-cli-build/server/app/api/headroom/extras/route.js.nft.json +1 -1
  215. package/cli/app/.next-cli-build/server/app/api/headroom/extras/route_client-reference-manifest.js +1 -1
  216. package/cli/app/.next-cli-build/server/app/api/headroom/proxy/[...path]/route.js +1 -1
  217. package/cli/app/.next-cli-build/server/app/api/headroom/proxy/[...path]/route.js.nft.json +1 -1
  218. package/cli/app/.next-cli-build/server/app/api/headroom/proxy/[...path]/route_client-reference-manifest.js +1 -1
  219. package/cli/app/.next-cli-build/server/app/api/headroom/restart/route.js +1 -1
  220. package/cli/app/.next-cli-build/server/app/api/headroom/restart/route.js.nft.json +1 -1
  221. package/cli/app/.next-cli-build/server/app/api/headroom/restart/route_client-reference-manifest.js +1 -1
  222. package/cli/app/.next-cli-build/server/app/api/headroom/start/route.js +1 -1
  223. package/cli/app/.next-cli-build/server/app/api/headroom/start/route.js.nft.json +1 -1
  224. package/cli/app/.next-cli-build/server/app/api/headroom/start/route_client-reference-manifest.js +1 -1
  225. package/cli/app/.next-cli-build/server/app/api/headroom/status/route.js +1 -1
  226. package/cli/app/.next-cli-build/server/app/api/headroom/status/route.js.nft.json +1 -1
  227. package/cli/app/.next-cli-build/server/app/api/headroom/status/route_client-reference-manifest.js +1 -1
  228. package/cli/app/.next-cli-build/server/app/api/headroom/stop/route.js +1 -1
  229. package/cli/app/.next-cli-build/server/app/api/headroom/stop/route.js.nft.json +1 -1
  230. package/cli/app/.next-cli-build/server/app/api/headroom/stop/route_client-reference-manifest.js +1 -1
  231. package/cli/app/.next-cli-build/server/app/api/health/ready/route.js +1 -1
  232. package/cli/app/.next-cli-build/server/app/api/health/ready/route.js.nft.json +1 -1
  233. package/cli/app/.next-cli-build/server/app/api/health/ready/route_client-reference-manifest.js +1 -1
  234. package/cli/app/.next-cli-build/server/app/api/health/route.js +1 -1
  235. package/cli/app/.next-cli-build/server/app/api/health/route.js.nft.json +1 -1
  236. package/cli/app/.next-cli-build/server/app/api/health/route_client-reference-manifest.js +1 -1
  237. package/cli/app/.next-cli-build/server/app/api/init/route.js +1 -1
  238. package/cli/app/.next-cli-build/server/app/api/init/route.js.nft.json +1 -1
  239. package/cli/app/.next-cli-build/server/app/api/init/route_client-reference-manifest.js +1 -1
  240. package/cli/app/.next-cli-build/server/app/api/keys/[id]/rotate/route.js +1 -1
  241. package/cli/app/.next-cli-build/server/app/api/keys/[id]/rotate/route.js.nft.json +1 -1
  242. package/cli/app/.next-cli-build/server/app/api/keys/[id]/rotate/route_client-reference-manifest.js +1 -1
  243. package/cli/app/.next-cli-build/server/app/api/keys/[id]/route.js +1 -1
  244. package/cli/app/.next-cli-build/server/app/api/keys/[id]/route.js.nft.json +1 -1
  245. package/cli/app/.next-cli-build/server/app/api/keys/[id]/route_client-reference-manifest.js +1 -1
  246. package/cli/app/.next-cli-build/server/app/api/keys/route.js +1 -1
  247. package/cli/app/.next-cli-build/server/app/api/keys/route.js.nft.json +1 -1
  248. package/cli/app/.next-cli-build/server/app/api/keys/route_client-reference-manifest.js +1 -1
  249. package/cli/app/.next-cli-build/server/app/api/locale/route.js +1 -1
  250. package/cli/app/.next-cli-build/server/app/api/locale/route.js.nft.json +1 -1
  251. package/cli/app/.next-cli-build/server/app/api/locale/route_client-reference-manifest.js +1 -1
  252. package/cli/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route.js +1 -1
  253. package/cli/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route.js.nft.json +1 -1
  254. package/cli/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route_client-reference-manifest.js +1 -1
  255. package/cli/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route.js +1 -1
  256. package/cli/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route.js.nft.json +1 -1
  257. package/cli/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route_client-reference-manifest.js +1 -1
  258. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js +1 -1
  259. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js.nft.json +1 -1
  260. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route_client-reference-manifest.js +1 -1
  261. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js +1 -1
  262. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js.nft.json +1 -1
  263. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route_client-reference-manifest.js +1 -1
  264. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js +1 -1
  265. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js.nft.json +1 -1
  266. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route_client-reference-manifest.js +1 -1
  267. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js +1 -1
  268. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js.nft.json +1 -1
  269. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route_client-reference-manifest.js +1 -1
  270. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/voices/route.js +1 -1
  271. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/voices/route.js.nft.json +1 -1
  272. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/voices/route_client-reference-manifest.js +1 -1
  273. package/cli/app/.next-cli-build/server/app/api/metrics/route.js +2 -2
  274. package/cli/app/.next-cli-build/server/app/api/metrics/route.js.nft.json +1 -1
  275. package/cli/app/.next-cli-build/server/app/api/metrics/route_client-reference-manifest.js +1 -1
  276. package/cli/app/.next-cli-build/server/app/api/models/alias/route.js +1 -1
  277. package/cli/app/.next-cli-build/server/app/api/models/alias/route.js.nft.json +1 -1
  278. package/cli/app/.next-cli-build/server/app/api/models/alias/route_client-reference-manifest.js +1 -1
  279. package/cli/app/.next-cli-build/server/app/api/models/availability/route.js +1 -1
  280. package/cli/app/.next-cli-build/server/app/api/models/availability/route.js.nft.json +1 -1
  281. package/cli/app/.next-cli-build/server/app/api/models/availability/route_client-reference-manifest.js +1 -1
  282. package/cli/app/.next-cli-build/server/app/api/models/custom/route.js +1 -1
  283. package/cli/app/.next-cli-build/server/app/api/models/custom/route.js.nft.json +1 -1
  284. package/cli/app/.next-cli-build/server/app/api/models/custom/route_client-reference-manifest.js +1 -1
  285. package/cli/app/.next-cli-build/server/app/api/models/disabled/route.js +1 -1
  286. package/cli/app/.next-cli-build/server/app/api/models/disabled/route.js.nft.json +1 -1
  287. package/cli/app/.next-cli-build/server/app/api/models/disabled/route_client-reference-manifest.js +1 -1
  288. package/cli/app/.next-cli-build/server/app/api/models/route.js +1 -1
  289. package/cli/app/.next-cli-build/server/app/api/models/route.js.nft.json +1 -1
  290. package/cli/app/.next-cli-build/server/app/api/models/route_client-reference-manifest.js +1 -1
  291. package/cli/app/.next-cli-build/server/app/api/models/test/route.js +1 -1
  292. package/cli/app/.next-cli-build/server/app/api/models/test/route.js.nft.json +1 -1
  293. package/cli/app/.next-cli-build/server/app/api/models/test/route_client-reference-manifest.js +1 -1
  294. package/cli/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js +1 -1
  295. package/cli/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js.nft.json +1 -1
  296. package/cli/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route_client-reference-manifest.js +1 -1
  297. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/cancel/route.js +1 -1
  298. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
  299. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/cancel/route_client-reference-manifest.js +1 -1
  300. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/manual/[workerId]/route.js +1 -1
  301. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
  302. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/manual/[workerId]/route_client-reference-manifest.js +1 -1
  303. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/route.js +1 -1
  304. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/route.js.nft.json +1 -1
  305. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/route_client-reference-manifest.js +1 -1
  306. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/latest/route.js +1 -1
  307. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/latest/route.js.nft.json +1 -1
  308. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/latest/route_client-reference-manifest.js +1 -1
  309. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/route.js +1 -1
  310. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/route.js.nft.json +1 -1
  311. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/route_client-reference-manifest.js +1 -1
  312. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/cancel/route.js +1 -1
  313. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
  314. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/cancel/route_client-reference-manifest.js +1 -1
  315. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/manual/[workerId]/route.js +1 -1
  316. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
  317. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/manual/[workerId]/route_client-reference-manifest.js +1 -1
  318. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/route.js +1 -1
  319. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/route.js.nft.json +1 -1
  320. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/route_client-reference-manifest.js +1 -1
  321. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/latest/route.js +1 -1
  322. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/latest/route.js.nft.json +1 -1
  323. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/latest/route_client-reference-manifest.js +1 -1
  324. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/route.js +1 -1
  325. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/route.js.nft.json +1 -1
  326. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/route_client-reference-manifest.js +1 -1
  327. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/cancel/route.js +1 -1
  328. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
  329. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/cancel/route_client-reference-manifest.js +1 -1
  330. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/manual/[workerId]/route.js +1 -1
  331. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
  332. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/manual/[workerId]/route_client-reference-manifest.js +1 -1
  333. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/route.js +1 -1
  334. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/route.js.nft.json +1 -1
  335. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/route_client-reference-manifest.js +1 -1
  336. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/latest/route.js +1 -1
  337. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/latest/route.js.nft.json +1 -1
  338. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/latest/route_client-reference-manifest.js +1 -1
  339. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/route.js +1 -1
  340. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/route.js.nft.json +1 -1
  341. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/route_client-reference-manifest.js +1 -1
  342. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-token/route.js +1 -1
  343. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-token/route.js.nft.json +1 -1
  344. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-token/route_client-reference-manifest.js +1 -1
  345. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/quota-cookie/route.js +1 -1
  346. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/quota-cookie/route.js.nft.json +1 -1
  347. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/quota-cookie/route_client-reference-manifest.js +1 -1
  348. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/cancel/route.js +1 -1
  349. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
  350. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/cancel/route_client-reference-manifest.js +1 -1
  351. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/manual/[workerId]/route.js +1 -1
  352. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
  353. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/manual/[workerId]/route_client-reference-manifest.js +1 -1
  354. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/route.js +1 -1
  355. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/route.js.nft.json +1 -1
  356. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/route_client-reference-manifest.js +1 -1
  357. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/latest/route.js +1 -1
  358. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/latest/route.js.nft.json +1 -1
  359. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/latest/route_client-reference-manifest.js +1 -1
  360. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/route.js +1 -1
  361. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/route.js.nft.json +1 -1
  362. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/route_client-reference-manifest.js +1 -1
  363. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-token/route.js +1 -1
  364. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-token/route.js.nft.json +1 -1
  365. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-token/route_client-reference-manifest.js +1 -1
  366. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/quota-cookie/route.js +1 -1
  367. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/quota-cookie/route.js.nft.json +1 -1
  368. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/quota-cookie/route_client-reference-manifest.js +1 -1
  369. package/cli/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js +1 -1
  370. package/cli/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js.nft.json +1 -1
  371. package/cli/app/.next-cli-build/server/app/api/oauth/codex/import-token/route_client-reference-manifest.js +1 -1
  372. package/cli/app/.next-cli-build/server/app/api/oauth/cursor/auto-import/route.js +2 -2
  373. package/cli/app/.next-cli-build/server/app/api/oauth/cursor/auto-import/route.js.nft.json +1 -1
  374. package/cli/app/.next-cli-build/server/app/api/oauth/cursor/auto-import/route_client-reference-manifest.js +1 -1
  375. package/cli/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js +1 -1
  376. package/cli/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js.nft.json +1 -1
  377. package/cli/app/.next-cli-build/server/app/api/oauth/cursor/import/route_client-reference-manifest.js +1 -1
  378. package/cli/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js +1 -1
  379. package/cli/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js.nft.json +1 -1
  380. package/cli/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route_client-reference-manifest.js +1 -1
  381. package/cli/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js +1 -1
  382. package/cli/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js.nft.json +1 -1
  383. package/cli/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route_client-reference-manifest.js +1 -1
  384. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/auto-import/route.js +1 -1
  385. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/auto-import/route.js.nft.json +1 -1
  386. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/auto-import/route_client-reference-manifest.js +1 -1
  387. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/cancel/route.js +1 -1
  388. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
  389. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/cancel/route_client-reference-manifest.js +1 -1
  390. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/manual/[workerId]/route.js +1 -1
  391. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
  392. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/manual/[workerId]/route_client-reference-manifest.js +1 -1
  393. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/route.js +1 -1
  394. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/route.js.nft.json +1 -1
  395. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/route_client-reference-manifest.js +1 -1
  396. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/latest/route.js +1 -1
  397. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/latest/route.js.nft.json +1 -1
  398. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/latest/route_client-reference-manifest.js +1 -1
  399. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/route.js +1 -1
  400. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/route.js.nft.json +1 -1
  401. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/route_client-reference-manifest.js +1 -1
  402. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js +1 -1
  403. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js.nft.json +1 -1
  404. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/import/route_client-reference-manifest.js +1 -1
  405. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/social-authorize/route.js +1 -1
  406. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/social-authorize/route.js.nft.json +1 -1
  407. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/social-authorize/route_client-reference-manifest.js +1 -1
  408. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js +1 -1
  409. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js.nft.json +1 -1
  410. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route_client-reference-manifest.js +1 -1
  411. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/cancel/route.js +1 -1
  412. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
  413. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/cancel/route_client-reference-manifest.js +1 -1
  414. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/manual/[workerId]/route.js +1 -1
  415. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
  416. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/manual/[workerId]/route_client-reference-manifest.js +1 -1
  417. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/route.js +1 -1
  418. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/route.js.nft.json +1 -1
  419. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/route_client-reference-manifest.js +1 -1
  420. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/latest/route.js +1 -1
  421. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/latest/route.js.nft.json +1 -1
  422. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/latest/route_client-reference-manifest.js +1 -1
  423. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/route.js +1 -1
  424. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/route.js.nft.json +1 -1
  425. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/route_client-reference-manifest.js +1 -1
  426. package/cli/app/.next-cli-build/server/app/api/pricing/route.js +1 -1
  427. package/cli/app/.next-cli-build/server/app/api/pricing/route.js.nft.json +1 -1
  428. package/cli/app/.next-cli-build/server/app/api/pricing/route_client-reference-manifest.js +1 -1
  429. package/cli/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js +1 -1
  430. package/cli/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js.nft.json +1 -1
  431. package/cli/app/.next-cli-build/server/app/api/provider-nodes/[id]/route_client-reference-manifest.js +1 -1
  432. package/cli/app/.next-cli-build/server/app/api/provider-nodes/route.js +1 -1
  433. package/cli/app/.next-cli-build/server/app/api/provider-nodes/route.js.nft.json +1 -1
  434. package/cli/app/.next-cli-build/server/app/api/provider-nodes/route_client-reference-manifest.js +1 -1
  435. package/cli/app/.next-cli-build/server/app/api/provider-nodes/validate/route.js +1 -1
  436. package/cli/app/.next-cli-build/server/app/api/provider-nodes/validate/route.js.nft.json +1 -1
  437. package/cli/app/.next-cli-build/server/app/api/provider-nodes/validate/route_client-reference-manifest.js +1 -1
  438. package/cli/app/.next-cli-build/server/app/api/providers/[id]/models/route.js +1 -1
  439. package/cli/app/.next-cli-build/server/app/api/providers/[id]/models/route.js.nft.json +1 -1
  440. package/cli/app/.next-cli-build/server/app/api/providers/[id]/models/route_client-reference-manifest.js +1 -1
  441. package/cli/app/.next-cli-build/server/app/api/providers/[id]/route.js +1 -1
  442. package/cli/app/.next-cli-build/server/app/api/providers/[id]/route.js.nft.json +1 -1
  443. package/cli/app/.next-cli-build/server/app/api/providers/[id]/route_client-reference-manifest.js +1 -1
  444. package/cli/app/.next-cli-build/server/app/api/providers/[id]/test/route.js +1 -1
  445. package/cli/app/.next-cli-build/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
  446. package/cli/app/.next-cli-build/server/app/api/providers/[id]/test/route_client-reference-manifest.js +1 -1
  447. package/cli/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js +1 -1
  448. package/cli/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js.nft.json +1 -1
  449. package/cli/app/.next-cli-build/server/app/api/providers/[id]/test-models/route_client-reference-manifest.js +1 -1
  450. package/cli/app/.next-cli-build/server/app/api/providers/bulk-delete/route.js +1 -1
  451. package/cli/app/.next-cli-build/server/app/api/providers/bulk-delete/route.js.nft.json +1 -1
  452. package/cli/app/.next-cli-build/server/app/api/providers/bulk-delete/route_client-reference-manifest.js +1 -1
  453. package/cli/app/.next-cli-build/server/app/api/providers/client/route.js +1 -1
  454. package/cli/app/.next-cli-build/server/app/api/providers/client/route.js.nft.json +1 -1
  455. package/cli/app/.next-cli-build/server/app/api/providers/client/route_client-reference-manifest.js +1 -1
  456. package/cli/app/.next-cli-build/server/app/api/providers/kilo/free-models/route.js +1 -1
  457. package/cli/app/.next-cli-build/server/app/api/providers/kilo/free-models/route.js.nft.json +1 -1
  458. package/cli/app/.next-cli-build/server/app/api/providers/kilo/free-models/route_client-reference-manifest.js +1 -1
  459. package/cli/app/.next-cli-build/server/app/api/providers/route.js +1 -1
  460. package/cli/app/.next-cli-build/server/app/api/providers/route.js.nft.json +1 -1
  461. package/cli/app/.next-cli-build/server/app/api/providers/route_client-reference-manifest.js +1 -1
  462. package/cli/app/.next-cli-build/server/app/api/providers/suggested-models/route.js +1 -1
  463. package/cli/app/.next-cli-build/server/app/api/providers/suggested-models/route.js.nft.json +1 -1
  464. package/cli/app/.next-cli-build/server/app/api/providers/suggested-models/route_client-reference-manifest.js +1 -1
  465. package/cli/app/.next-cli-build/server/app/api/providers/test-batch/route.js +1 -1
  466. package/cli/app/.next-cli-build/server/app/api/providers/test-batch/route.js.nft.json +1 -1
  467. package/cli/app/.next-cli-build/server/app/api/providers/test-batch/route_client-reference-manifest.js +1 -1
  468. package/cli/app/.next-cli-build/server/app/api/providers/validate/route.js +1 -1
  469. package/cli/app/.next-cli-build/server/app/api/providers/validate/route.js.nft.json +1 -1
  470. package/cli/app/.next-cli-build/server/app/api/providers/validate/route_client-reference-manifest.js +1 -1
  471. package/cli/app/.next-cli-build/server/app/api/proxy-pools/[id]/route.js +1 -1
  472. package/cli/app/.next-cli-build/server/app/api/proxy-pools/[id]/route.js.nft.json +1 -1
  473. package/cli/app/.next-cli-build/server/app/api/proxy-pools/[id]/route_client-reference-manifest.js +1 -1
  474. package/cli/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js +1 -1
  475. package/cli/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js.nft.json +1 -1
  476. package/cli/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route_client-reference-manifest.js +1 -1
  477. package/cli/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route.js +2 -2
  478. package/cli/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route.js.nft.json +1 -1
  479. package/cli/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route_client-reference-manifest.js +1 -1
  480. package/cli/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route.js +2 -2
  481. package/cli/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route.js.nft.json +1 -1
  482. package/cli/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route_client-reference-manifest.js +1 -1
  483. package/cli/app/.next-cli-build/server/app/api/proxy-pools/route.js +1 -1
  484. package/cli/app/.next-cli-build/server/app/api/proxy-pools/route.js.nft.json +1 -1
  485. package/cli/app/.next-cli-build/server/app/api/proxy-pools/route_client-reference-manifest.js +1 -1
  486. package/cli/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js +2 -2
  487. package/cli/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js.nft.json +1 -1
  488. package/cli/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route_client-reference-manifest.js +1 -1
  489. package/cli/app/.next-cli-build/server/app/api/pxpipe/health/route.js +2 -2
  490. package/cli/app/.next-cli-build/server/app/api/pxpipe/health/route.js.nft.json +1 -1
  491. package/cli/app/.next-cli-build/server/app/api/pxpipe/health/route_client-reference-manifest.js +1 -1
  492. package/cli/app/.next-cli-build/server/app/api/pxpipe/install/route.js +2 -2
  493. package/cli/app/.next-cli-build/server/app/api/pxpipe/install/route.js.nft.json +1 -1
  494. package/cli/app/.next-cli-build/server/app/api/pxpipe/install/route_client-reference-manifest.js +1 -1
  495. package/cli/app/.next-cli-build/server/app/api/pxpipe/restart/route.js +2 -2
  496. package/cli/app/.next-cli-build/server/app/api/pxpipe/restart/route.js.nft.json +1 -1
  497. package/cli/app/.next-cli-build/server/app/api/pxpipe/restart/route_client-reference-manifest.js +1 -1
  498. package/cli/app/.next-cli-build/server/app/api/pxpipe/start/route.js +2 -2
  499. package/cli/app/.next-cli-build/server/app/api/pxpipe/start/route.js.nft.json +1 -1
  500. package/cli/app/.next-cli-build/server/app/api/pxpipe/start/route_client-reference-manifest.js +1 -1
  501. package/cli/app/.next-cli-build/server/app/api/pxpipe/stats/route.js +2 -2
  502. package/cli/app/.next-cli-build/server/app/api/pxpipe/stats/route.js.nft.json +1 -1
  503. package/cli/app/.next-cli-build/server/app/api/pxpipe/stats/route_client-reference-manifest.js +1 -1
  504. package/cli/app/.next-cli-build/server/app/api/pxpipe/status/route.js +2 -2
  505. package/cli/app/.next-cli-build/server/app/api/pxpipe/status/route.js.nft.json +1 -1
  506. package/cli/app/.next-cli-build/server/app/api/pxpipe/status/route_client-reference-manifest.js +1 -1
  507. package/cli/app/.next-cli-build/server/app/api/pxpipe/stop/route.js +2 -2
  508. package/cli/app/.next-cli-build/server/app/api/pxpipe/stop/route.js.nft.json +1 -1
  509. package/cli/app/.next-cli-build/server/app/api/pxpipe/stop/route_client-reference-manifest.js +1 -1
  510. package/cli/app/.next-cli-build/server/app/api/settings/database/route.js +1 -1
  511. package/cli/app/.next-cli-build/server/app/api/settings/database/route.js.nft.json +1 -1
  512. package/cli/app/.next-cli-build/server/app/api/settings/database/route_client-reference-manifest.js +1 -1
  513. package/cli/app/.next-cli-build/server/app/api/settings/proxy-test/route.js +1 -1
  514. package/cli/app/.next-cli-build/server/app/api/settings/proxy-test/route.js.nft.json +1 -1
  515. package/cli/app/.next-cli-build/server/app/api/settings/proxy-test/route_client-reference-manifest.js +1 -1
  516. package/cli/app/.next-cli-build/server/app/api/settings/require-login/route.js +1 -1
  517. package/cli/app/.next-cli-build/server/app/api/settings/require-login/route.js.nft.json +1 -1
  518. package/cli/app/.next-cli-build/server/app/api/settings/require-login/route_client-reference-manifest.js +1 -1
  519. package/cli/app/.next-cli-build/server/app/api/settings/route.js +1 -1
  520. package/cli/app/.next-cli-build/server/app/api/settings/route.js.nft.json +1 -1
  521. package/cli/app/.next-cli-build/server/app/api/settings/route_client-reference-manifest.js +1 -1
  522. package/cli/app/.next-cli-build/server/app/api/shutdown/route.js +1 -1
  523. package/cli/app/.next-cli-build/server/app/api/shutdown/route.js.nft.json +1 -1
  524. package/cli/app/.next-cli-build/server/app/api/shutdown/route_client-reference-manifest.js +1 -1
  525. package/cli/app/.next-cli-build/server/app/api/tags/route.js +1 -1
  526. package/cli/app/.next-cli-build/server/app/api/tags/route.js.nft.json +1 -1
  527. package/cli/app/.next-cli-build/server/app/api/tags/route_client-reference-manifest.js +1 -1
  528. package/cli/app/.next-cli-build/server/app/api/terminal/auth/setup/route.js +1 -1
  529. package/cli/app/.next-cli-build/server/app/api/terminal/auth/setup/route.js.nft.json +1 -1
  530. package/cli/app/.next-cli-build/server/app/api/terminal/auth/setup/route_client-reference-manifest.js +1 -1
  531. package/cli/app/.next-cli-build/server/app/api/terminal/auth/status/route.js +1 -1
  532. package/cli/app/.next-cli-build/server/app/api/terminal/auth/status/route.js.nft.json +1 -1
  533. package/cli/app/.next-cli-build/server/app/api/terminal/auth/status/route_client-reference-manifest.js +1 -1
  534. package/cli/app/.next-cli-build/server/app/api/terminal/auth/unlock/route.js +1 -1
  535. package/cli/app/.next-cli-build/server/app/api/terminal/auth/unlock/route.js.nft.json +1 -1
  536. package/cli/app/.next-cli-build/server/app/api/terminal/auth/unlock/route_client-reference-manifest.js +1 -1
  537. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/input/route.js +1 -1
  538. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/input/route.js.nft.json +1 -1
  539. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/input/route_client-reference-manifest.js +1 -1
  540. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/resize/route.js +1 -1
  541. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/resize/route.js.nft.json +1 -1
  542. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/resize/route_client-reference-manifest.js +1 -1
  543. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/route.js +1 -1
  544. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/route.js.nft.json +1 -1
  545. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/route_client-reference-manifest.js +1 -1
  546. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/stream/route.js +2 -2
  547. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/stream/route.js.nft.json +1 -1
  548. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/stream/route_client-reference-manifest.js +1 -1
  549. package/cli/app/.next-cli-build/server/app/api/terminal/session/route.js +1 -1
  550. package/cli/app/.next-cli-build/server/app/api/terminal/session/route.js.nft.json +1 -1
  551. package/cli/app/.next-cli-build/server/app/api/terminal/session/route_client-reference-manifest.js +1 -1
  552. package/cli/app/.next-cli-build/server/app/api/translator/console-logs/route.js +1 -1
  553. package/cli/app/.next-cli-build/server/app/api/translator/console-logs/route.js.nft.json +1 -1
  554. package/cli/app/.next-cli-build/server/app/api/translator/console-logs/route_client-reference-manifest.js +1 -1
  555. package/cli/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js +2 -2
  556. package/cli/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js.nft.json +1 -1
  557. package/cli/app/.next-cli-build/server/app/api/translator/console-logs/stream/route_client-reference-manifest.js +1 -1
  558. package/cli/app/.next-cli-build/server/app/api/translator/load/route.js +1 -1
  559. package/cli/app/.next-cli-build/server/app/api/translator/load/route.js.nft.json +1 -1
  560. package/cli/app/.next-cli-build/server/app/api/translator/load/route_client-reference-manifest.js +1 -1
  561. package/cli/app/.next-cli-build/server/app/api/translator/save/route.js +1 -1
  562. package/cli/app/.next-cli-build/server/app/api/translator/save/route.js.nft.json +1 -1
  563. package/cli/app/.next-cli-build/server/app/api/translator/save/route_client-reference-manifest.js +1 -1
  564. package/cli/app/.next-cli-build/server/app/api/translator/send/route.js +1 -1
  565. package/cli/app/.next-cli-build/server/app/api/translator/send/route.js.nft.json +1 -1
  566. package/cli/app/.next-cli-build/server/app/api/translator/send/route_client-reference-manifest.js +1 -1
  567. package/cli/app/.next-cli-build/server/app/api/translator/translate/route.js +1 -1
  568. package/cli/app/.next-cli-build/server/app/api/translator/translate/route.js.nft.json +1 -1
  569. package/cli/app/.next-cli-build/server/app/api/translator/translate/route_client-reference-manifest.js +1 -1
  570. package/cli/app/.next-cli-build/server/app/api/tunnel/disable/route.js +1 -1
  571. package/cli/app/.next-cli-build/server/app/api/tunnel/disable/route.js.nft.json +1 -1
  572. package/cli/app/.next-cli-build/server/app/api/tunnel/disable/route_client-reference-manifest.js +1 -1
  573. package/cli/app/.next-cli-build/server/app/api/tunnel/enable/route.js +1 -1
  574. package/cli/app/.next-cli-build/server/app/api/tunnel/enable/route.js.nft.json +1 -1
  575. package/cli/app/.next-cli-build/server/app/api/tunnel/enable/route_client-reference-manifest.js +1 -1
  576. package/cli/app/.next-cli-build/server/app/api/tunnel/status/route.js +1 -1
  577. package/cli/app/.next-cli-build/server/app/api/tunnel/status/route.js.nft.json +1 -1
  578. package/cli/app/.next-cli-build/server/app/api/tunnel/status/route_client-reference-manifest.js +1 -1
  579. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-check/route.js +1 -1
  580. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-check/route.js.nft.json +1 -1
  581. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-check/route_client-reference-manifest.js +1 -1
  582. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route.js +1 -1
  583. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route.js.nft.json +1 -1
  584. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route_client-reference-manifest.js +1 -1
  585. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route.js +1 -1
  586. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route.js.nft.json +1 -1
  587. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route_client-reference-manifest.js +1 -1
  588. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js +1 -1
  589. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js.nft.json +1 -1
  590. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route_client-reference-manifest.js +1 -1
  591. package/cli/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js +1 -1
  592. package/cli/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
  593. package/cli/app/.next-cli-build/server/app/api/usage/[connectionId]/route_client-reference-manifest.js +1 -1
  594. package/cli/app/.next-cli-build/server/app/api/usage/aggregate/route.js +1 -1
  595. package/cli/app/.next-cli-build/server/app/api/usage/aggregate/route.js.nft.json +1 -1
  596. package/cli/app/.next-cli-build/server/app/api/usage/aggregate/route_client-reference-manifest.js +1 -1
  597. package/cli/app/.next-cli-build/server/app/api/usage/chart/route.js +1 -1
  598. package/cli/app/.next-cli-build/server/app/api/usage/chart/route.js.nft.json +1 -1
  599. package/cli/app/.next-cli-build/server/app/api/usage/chart/route_client-reference-manifest.js +1 -1
  600. package/cli/app/.next-cli-build/server/app/api/usage/history/route.js +1 -1
  601. package/cli/app/.next-cli-build/server/app/api/usage/history/route.js.nft.json +1 -1
  602. package/cli/app/.next-cli-build/server/app/api/usage/history/route_client-reference-manifest.js +1 -1
  603. package/cli/app/.next-cli-build/server/app/api/usage/providers/route.js +1 -1
  604. package/cli/app/.next-cli-build/server/app/api/usage/providers/route.js.nft.json +1 -1
  605. package/cli/app/.next-cli-build/server/app/api/usage/providers/route_client-reference-manifest.js +1 -1
  606. package/cli/app/.next-cli-build/server/app/api/usage/request-details/route.js +1 -1
  607. package/cli/app/.next-cli-build/server/app/api/usage/request-details/route.js.nft.json +1 -1
  608. package/cli/app/.next-cli-build/server/app/api/usage/request-details/route_client-reference-manifest.js +1 -1
  609. package/cli/app/.next-cli-build/server/app/api/usage/request-logs/route.js +1 -1
  610. package/cli/app/.next-cli-build/server/app/api/usage/request-logs/route.js.nft.json +1 -1
  611. package/cli/app/.next-cli-build/server/app/api/usage/request-logs/route_client-reference-manifest.js +1 -1
  612. package/cli/app/.next-cli-build/server/app/api/usage/stats/route.js +1 -1
  613. package/cli/app/.next-cli-build/server/app/api/usage/stats/route.js.nft.json +1 -1
  614. package/cli/app/.next-cli-build/server/app/api/usage/stats/route_client-reference-manifest.js +1 -1
  615. package/cli/app/.next-cli-build/server/app/api/usage/stream/route.js +3 -5
  616. package/cli/app/.next-cli-build/server/app/api/usage/stream/route.js.nft.json +1 -1
  617. package/cli/app/.next-cli-build/server/app/api/usage/stream/route_client-reference-manifest.js +1 -1
  618. package/cli/app/.next-cli-build/server/app/api/v1/api/chat/route.js +1 -1
  619. package/cli/app/.next-cli-build/server/app/api/v1/api/chat/route.js.nft.json +1 -1
  620. package/cli/app/.next-cli-build/server/app/api/v1/api/chat/route_client-reference-manifest.js +1 -1
  621. package/cli/app/.next-cli-build/server/app/api/v1/audio/speech/route.js +1 -1
  622. package/cli/app/.next-cli-build/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
  623. package/cli/app/.next-cli-build/server/app/api/v1/audio/speech/route_client-reference-manifest.js +1 -1
  624. package/cli/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js +1 -1
  625. package/cli/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
  626. package/cli/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route_client-reference-manifest.js +1 -1
  627. package/cli/app/.next-cli-build/server/app/api/v1/audio/voices/route.js +1 -1
  628. package/cli/app/.next-cli-build/server/app/api/v1/audio/voices/route.js.nft.json +1 -1
  629. package/cli/app/.next-cli-build/server/app/api/v1/audio/voices/route_client-reference-manifest.js +1 -1
  630. package/cli/app/.next-cli-build/server/app/api/v1/chat/completions/route.js +1 -1
  631. package/cli/app/.next-cli-build/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
  632. package/cli/app/.next-cli-build/server/app/api/v1/chat/completions/route_client-reference-manifest.js +1 -1
  633. package/cli/app/.next-cli-build/server/app/api/v1/embeddings/route.js +1 -1
  634. package/cli/app/.next-cli-build/server/app/api/v1/embeddings/route.js.nft.json +1 -1
  635. package/cli/app/.next-cli-build/server/app/api/v1/embeddings/route_client-reference-manifest.js +1 -1
  636. package/cli/app/.next-cli-build/server/app/api/v1/images/generations/route.js +1 -4
  637. package/cli/app/.next-cli-build/server/app/api/v1/images/generations/route.js.nft.json +1 -1
  638. package/cli/app/.next-cli-build/server/app/api/v1/images/generations/route_client-reference-manifest.js +1 -1
  639. package/cli/app/.next-cli-build/server/app/api/v1/messages/count_tokens/route.js +1 -1
  640. package/cli/app/.next-cli-build/server/app/api/v1/messages/count_tokens/route.js.nft.json +1 -1
  641. package/cli/app/.next-cli-build/server/app/api/v1/messages/count_tokens/route_client-reference-manifest.js +1 -1
  642. package/cli/app/.next-cli-build/server/app/api/v1/messages/route.js +1 -1
  643. package/cli/app/.next-cli-build/server/app/api/v1/messages/route.js.nft.json +1 -1
  644. package/cli/app/.next-cli-build/server/app/api/v1/messages/route_client-reference-manifest.js +1 -1
  645. package/cli/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js +1 -1
  646. package/cli/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js.nft.json +1 -1
  647. package/cli/app/.next-cli-build/server/app/api/v1/models/[kind]/route_client-reference-manifest.js +1 -1
  648. package/cli/app/.next-cli-build/server/app/api/v1/models/info/route.js +1 -1
  649. package/cli/app/.next-cli-build/server/app/api/v1/models/info/route.js.nft.json +1 -1
  650. package/cli/app/.next-cli-build/server/app/api/v1/models/info/route_client-reference-manifest.js +1 -1
  651. package/cli/app/.next-cli-build/server/app/api/v1/models/route.js +1 -1
  652. package/cli/app/.next-cli-build/server/app/api/v1/models/route.js.nft.json +1 -1
  653. package/cli/app/.next-cli-build/server/app/api/v1/models/route_client-reference-manifest.js +1 -1
  654. package/cli/app/.next-cli-build/server/app/api/v1/responses/compact/route.js +1 -1
  655. package/cli/app/.next-cli-build/server/app/api/v1/responses/compact/route.js.nft.json +1 -1
  656. package/cli/app/.next-cli-build/server/app/api/v1/responses/compact/route_client-reference-manifest.js +1 -1
  657. package/cli/app/.next-cli-build/server/app/api/v1/responses/route.js +1 -1
  658. package/cli/app/.next-cli-build/server/app/api/v1/responses/route.js.nft.json +1 -1
  659. package/cli/app/.next-cli-build/server/app/api/v1/responses/route_client-reference-manifest.js +1 -1
  660. package/cli/app/.next-cli-build/server/app/api/v1/route.js +1 -1
  661. package/cli/app/.next-cli-build/server/app/api/v1/route.js.nft.json +1 -1
  662. package/cli/app/.next-cli-build/server/app/api/v1/route_client-reference-manifest.js +1 -1
  663. package/cli/app/.next-cli-build/server/app/api/v1/search/route.js +1 -1
  664. package/cli/app/.next-cli-build/server/app/api/v1/search/route.js.nft.json +1 -1
  665. package/cli/app/.next-cli-build/server/app/api/v1/search/route_client-reference-manifest.js +1 -1
  666. package/cli/app/.next-cli-build/server/app/api/v1/web/fetch/route.js +1 -1
  667. package/cli/app/.next-cli-build/server/app/api/v1/web/fetch/route.js.nft.json +1 -1
  668. package/cli/app/.next-cli-build/server/app/api/v1/web/fetch/route_client-reference-manifest.js +1 -1
  669. package/cli/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js +1 -1
  670. package/cli/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
  671. package/cli/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route_client-reference-manifest.js +1 -1
  672. package/cli/app/.next-cli-build/server/app/api/v1beta/models/route.js +1 -1
  673. package/cli/app/.next-cli-build/server/app/api/v1beta/models/route.js.nft.json +1 -1
  674. package/cli/app/.next-cli-build/server/app/api/v1beta/models/route_client-reference-manifest.js +1 -1
  675. package/cli/app/.next-cli-build/server/app/api/version/route.js +1 -1
  676. package/cli/app/.next-cli-build/server/app/api/version/route.js.nft.json +1 -1
  677. package/cli/app/.next-cli-build/server/app/api/version/route_client-reference-manifest.js +1 -1
  678. package/cli/app/.next-cli-build/server/app/api/version/shutdown/route.js +1 -1
  679. package/cli/app/.next-cli-build/server/app/api/version/shutdown/route.js.nft.json +1 -1
  680. package/cli/app/.next-cli-build/server/app/api/version/shutdown/route_client-reference-manifest.js +1 -1
  681. package/cli/app/.next-cli-build/server/app/api/version/update/route.js +1 -1
  682. package/cli/app/.next-cli-build/server/app/api/version/update/route.js.nft.json +1 -1
  683. package/cli/app/.next-cli-build/server/app/api/version/update/route_client-reference-manifest.js +1 -1
  684. package/cli/app/.next-cli-build/server/app/callback/page.js +2 -2
  685. package/cli/app/.next-cli-build/server/app/callback/page.js.nft.json +1 -1
  686. package/cli/app/.next-cli-build/server/app/callback/page_client-reference-manifest.js +1 -1
  687. package/cli/app/.next-cli-build/server/app/callback.html +1 -1
  688. package/cli/app/.next-cli-build/server/app/callback.rsc +3 -3
  689. package/cli/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +3 -3
  690. package/cli/app/.next-cli-build/server/app/callback.segments/_head.segment.rsc +1 -1
  691. package/cli/app/.next-cli-build/server/app/callback.segments/_index.segment.rsc +3 -3
  692. package/cli/app/.next-cli-build/server/app/callback.segments/_tree.segment.rsc +1 -1
  693. package/cli/app/.next-cli-build/server/app/callback.segments/callback/__PAGE__.segment.rsc +1 -1
  694. package/cli/app/.next-cli-build/server/app/callback.segments/callback.segment.rsc +1 -1
  695. package/cli/app/.next-cli-build/server/app/dashboard/automation.html +1 -1
  696. package/cli/app/.next-cli-build/server/app/dashboard/automation.rsc +5 -5
  697. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk/dashboard/automation/__PAGE__.segment.rsc +2 -2
  698. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk/dashboard/automation.segment.rsc +1 -1
  699. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  700. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  701. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_full.segment.rsc +5 -5
  702. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_head.segment.rsc +1 -1
  703. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_index.segment.rsc +3 -3
  704. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_tree.segment.rsc +1 -1
  705. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.html +1 -1
  706. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.rsc +5 -5
  707. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +2 -2
  708. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat.segment.rsc +1 -1
  709. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  710. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  711. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_full.segment.rsc +5 -5
  712. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_head.segment.rsc +1 -1
  713. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_index.segment.rsc +3 -3
  714. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +1 -1
  715. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.html +1 -1
  716. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.rsc +5 -5
  717. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +2 -2
  718. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools.segment.rsc +1 -1
  719. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  720. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  721. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_full.segment.rsc +5 -5
  722. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_head.segment.rsc +1 -1
  723. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_index.segment.rsc +3 -3
  724. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +1 -1
  725. package/cli/app/.next-cli-build/server/app/dashboard/combos.html +1 -1
  726. package/cli/app/.next-cli-build/server/app/dashboard/combos.rsc +5 -5
  727. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +2 -2
  728. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos.segment.rsc +1 -1
  729. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  730. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  731. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_full.segment.rsc +5 -5
  732. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_head.segment.rsc +1 -1
  733. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_index.segment.rsc +3 -3
  734. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_tree.segment.rsc +1 -1
  735. package/cli/app/.next-cli-build/server/app/dashboard/context.html +1 -1
  736. package/cli/app/.next-cli-build/server/app/dashboard/context.rsc +5 -5
  737. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/!KGRhc2hib2FyZCk/dashboard/context/__PAGE__.segment.rsc +2 -2
  738. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/!KGRhc2hib2FyZCk/dashboard/context.segment.rsc +1 -1
  739. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  740. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  741. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_full.segment.rsc +5 -5
  742. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_head.segment.rsc +1 -1
  743. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_index.segment.rsc +3 -3
  744. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_tree.segment.rsc +1 -1
  745. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.html +1 -1
  746. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.rsc +5 -5
  747. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +2 -2
  748. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint.segment.rsc +1 -1
  749. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  750. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  751. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_full.segment.rsc +5 -5
  752. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_head.segment.rsc +1 -1
  753. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_index.segment.rsc +3 -3
  754. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_tree.segment.rsc +1 -1
  755. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.html +1 -1
  756. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.rsc +5 -5
  757. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web/__PAGE__.segment.rsc +2 -2
  758. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web.segment.rsc +1 -1
  759. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers.segment.rsc +1 -1
  760. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  761. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  762. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_full.segment.rsc +5 -5
  763. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_head.segment.rsc +1 -1
  764. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_index.segment.rsc +3 -3
  765. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_tree.segment.rsc +1 -1
  766. package/cli/app/.next-cli-build/server/app/dashboard/mitm.html +1 -1
  767. package/cli/app/.next-cli-build/server/app/dashboard/mitm.rsc +5 -5
  768. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +2 -2
  769. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm.segment.rsc +1 -1
  770. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  771. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  772. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_full.segment.rsc +5 -5
  773. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_head.segment.rsc +1 -1
  774. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_index.segment.rsc +3 -3
  775. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_tree.segment.rsc +1 -1
  776. package/cli/app/.next-cli-build/server/app/dashboard/playground.html +1 -1
  777. package/cli/app/.next-cli-build/server/app/dashboard/playground.rsc +5 -5
  778. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk/dashboard/playground/__PAGE__.segment.rsc +2 -2
  779. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk/dashboard/playground.segment.rsc +1 -1
  780. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  781. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  782. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_full.segment.rsc +5 -5
  783. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_head.segment.rsc +1 -1
  784. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_index.segment.rsc +3 -3
  785. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_tree.segment.rsc +1 -1
  786. package/cli/app/.next-cli-build/server/app/dashboard/profile.html +1 -1
  787. package/cli/app/.next-cli-build/server/app/dashboard/profile.rsc +5 -5
  788. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +2 -2
  789. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile.segment.rsc +1 -1
  790. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  791. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  792. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_full.segment.rsc +5 -5
  793. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_head.segment.rsc +1 -1
  794. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_index.segment.rsc +3 -3
  795. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_tree.segment.rsc +1 -1
  796. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.html +1 -1
  797. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.rsc +5 -5
  798. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +2 -2
  799. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new.segment.rsc +1 -1
  800. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  801. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  802. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  803. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_full.segment.rsc +5 -5
  804. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_head.segment.rsc +1 -1
  805. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_index.segment.rsc +3 -3
  806. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_tree.segment.rsc +1 -1
  807. package/cli/app/.next-cli-build/server/app/dashboard/providers.html +1 -1
  808. package/cli/app/.next-cli-build/server/app/dashboard/providers.rsc +5 -5
  809. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +2 -2
  810. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  811. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  812. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  813. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_full.segment.rsc +5 -5
  814. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_head.segment.rsc +1 -1
  815. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_index.segment.rsc +3 -3
  816. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_tree.segment.rsc +1 -1
  817. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.html +1 -1
  818. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.rsc +5 -5
  819. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +2 -2
  820. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools.segment.rsc +1 -1
  821. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  822. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  823. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +5 -5
  824. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_head.segment.rsc +1 -1
  825. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_index.segment.rsc +3 -3
  826. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +1 -1
  827. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.html +1 -1
  828. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.rsc +5 -5
  829. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard/pxpipe/__PAGE__.segment.rsc +2 -2
  830. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard/pxpipe.segment.rsc +1 -1
  831. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  832. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  833. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_full.segment.rsc +5 -5
  834. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_head.segment.rsc +1 -1
  835. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_index.segment.rsc +3 -3
  836. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_tree.segment.rsc +1 -1
  837. package/cli/app/.next-cli-build/server/app/dashboard/quota.html +2 -2
  838. package/cli/app/.next-cli-build/server/app/dashboard/quota.rsc +6 -6
  839. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +3 -3
  840. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota.segment.rsc +1 -1
  841. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  842. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  843. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_full.segment.rsc +6 -6
  844. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_head.segment.rsc +1 -1
  845. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_index.segment.rsc +3 -3
  846. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_tree.segment.rsc +1 -1
  847. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing/page.js +2 -2
  848. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing/page.js.nft.json +1 -1
  849. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  850. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.html +1 -1
  851. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.rsc +3 -3
  852. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +3 -3
  853. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +1 -1
  854. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +3 -3
  855. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +1 -1
  856. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +1 -1
  857. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing.segment.rsc +1 -1
  858. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings.segment.rsc +1 -1
  859. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard.segment.rsc +1 -1
  860. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.html +1 -1
  861. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.rsc +5 -5
  862. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver/__PAGE__.segment.rsc +2 -2
  863. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver.segment.rsc +1 -1
  864. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  865. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  866. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_full.segment.rsc +5 -5
  867. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_head.segment.rsc +1 -1
  868. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_index.segment.rsc +3 -3
  869. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_tree.segment.rsc +1 -1
  870. package/cli/app/.next-cli-build/server/app/dashboard/translator.html +1 -1
  871. package/cli/app/.next-cli-build/server/app/dashboard/translator.rsc +5 -5
  872. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +2 -2
  873. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator.segment.rsc +1 -1
  874. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  875. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  876. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_full.segment.rsc +5 -5
  877. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_head.segment.rsc +1 -1
  878. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_index.segment.rsc +3 -3
  879. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_tree.segment.rsc +1 -1
  880. package/cli/app/.next-cli-build/server/app/dashboard/usage.html +1 -1
  881. package/cli/app/.next-cli-build/server/app/dashboard/usage.rsc +5 -5
  882. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +2 -2
  883. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage.segment.rsc +1 -1
  884. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  885. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  886. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_full.segment.rsc +5 -5
  887. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_head.segment.rsc +1 -1
  888. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_index.segment.rsc +3 -3
  889. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_tree.segment.rsc +1 -1
  890. package/cli/app/.next-cli-build/server/app/dashboard.html +1 -1
  891. package/cli/app/.next-cli-build/server/app/dashboard.rsc +5 -5
  892. package/cli/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +2 -2
  893. package/cli/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  894. package/cli/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  895. package/cli/app/.next-cli-build/server/app/dashboard.segments/_full.segment.rsc +5 -5
  896. package/cli/app/.next-cli-build/server/app/dashboard.segments/_head.segment.rsc +1 -1
  897. package/cli/app/.next-cli-build/server/app/dashboard.segments/_index.segment.rsc +3 -3
  898. package/cli/app/.next-cli-build/server/app/dashboard.segments/_tree.segment.rsc +1 -1
  899. package/cli/app/.next-cli-build/server/app/index.html +1 -1
  900. package/cli/app/.next-cli-build/server/app/index.rsc +3 -3
  901. package/cli/app/.next-cli-build/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  902. package/cli/app/.next-cli-build/server/app/index.segments/_full.segment.rsc +3 -3
  903. package/cli/app/.next-cli-build/server/app/index.segments/_head.segment.rsc +1 -1
  904. package/cli/app/.next-cli-build/server/app/index.segments/_index.segment.rsc +3 -3
  905. package/cli/app/.next-cli-build/server/app/index.segments/_tree.segment.rsc +1 -1
  906. package/cli/app/.next-cli-build/server/app/landing/page.js +2 -2
  907. package/cli/app/.next-cli-build/server/app/landing/page.js.nft.json +1 -1
  908. package/cli/app/.next-cli-build/server/app/landing/page_client-reference-manifest.js +1 -1
  909. package/cli/app/.next-cli-build/server/app/landing.html +1 -1
  910. package/cli/app/.next-cli-build/server/app/landing.rsc +4 -4
  911. package/cli/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +4 -4
  912. package/cli/app/.next-cli-build/server/app/landing.segments/_head.segment.rsc +1 -1
  913. package/cli/app/.next-cli-build/server/app/landing.segments/_index.segment.rsc +3 -3
  914. package/cli/app/.next-cli-build/server/app/landing.segments/_tree.segment.rsc +1 -1
  915. package/cli/app/.next-cli-build/server/app/landing.segments/landing/__PAGE__.segment.rsc +2 -2
  916. package/cli/app/.next-cli-build/server/app/landing.segments/landing.segment.rsc +1 -1
  917. package/cli/app/.next-cli-build/server/app/login/page.js +2 -2
  918. package/cli/app/.next-cli-build/server/app/login/page.js.nft.json +1 -1
  919. package/cli/app/.next-cli-build/server/app/login/page_client-reference-manifest.js +1 -1
  920. package/cli/app/.next-cli-build/server/app/login.html +1 -1
  921. package/cli/app/.next-cli-build/server/app/login.rsc +4 -4
  922. package/cli/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +4 -4
  923. package/cli/app/.next-cli-build/server/app/login.segments/_head.segment.rsc +1 -1
  924. package/cli/app/.next-cli-build/server/app/login.segments/_index.segment.rsc +3 -3
  925. package/cli/app/.next-cli-build/server/app/login.segments/_tree.segment.rsc +1 -1
  926. package/cli/app/.next-cli-build/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
  927. package/cli/app/.next-cli-build/server/app/login.segments/login.segment.rsc +1 -1
  928. package/cli/app/.next-cli-build/server/app/manifest.webmanifest/route.js +2 -2
  929. package/cli/app/.next-cli-build/server/app/manifest.webmanifest/route.js.nft.json +1 -1
  930. package/cli/app/.next-cli-build/server/app/manifest.webmanifest/route_client-reference-manifest.js +1 -1
  931. package/cli/app/.next-cli-build/server/app/page.js +2 -2
  932. package/cli/app/.next-cli-build/server/app/page.js.nft.json +1 -1
  933. package/cli/app/.next-cli-build/server/app/page_client-reference-manifest.js +1 -1
  934. package/cli/app/.next-cli-build/server/app-paths-manifest.json +13 -11
  935. package/cli/app/.next-cli-build/server/chunks/1188.js +1 -1
  936. package/cli/app/.next-cli-build/server/chunks/2030.js +1 -1
  937. package/cli/app/.next-cli-build/server/chunks/2557.js +1 -0
  938. package/cli/app/.next-cli-build/server/chunks/2732.js +1 -1
  939. package/cli/app/.next-cli-build/server/chunks/3104.js +1 -1
  940. package/cli/app/.next-cli-build/server/chunks/3110.js +9 -8
  941. package/cli/app/.next-cli-build/server/chunks/3155.js +1 -1
  942. package/cli/app/.next-cli-build/server/chunks/318.js +11 -9
  943. package/cli/app/.next-cli-build/server/chunks/319.js +3 -3
  944. package/cli/app/.next-cli-build/server/chunks/3579.js +1 -1
  945. package/cli/app/.next-cli-build/server/chunks/3593.js +1 -1
  946. package/cli/app/.next-cli-build/server/chunks/412.js +2 -2
  947. package/cli/app/.next-cli-build/server/chunks/4229.js +1 -1
  948. package/cli/app/.next-cli-build/server/chunks/4404.js +1 -1
  949. package/cli/app/.next-cli-build/server/chunks/4470.js +1 -1
  950. package/cli/app/.next-cli-build/server/chunks/4566.js +1 -1
  951. package/cli/app/.next-cli-build/server/chunks/4632.js +1 -1
  952. package/cli/app/.next-cli-build/server/chunks/4650.js +1 -1
  953. package/cli/app/.next-cli-build/server/chunks/4720.js +1 -1
  954. package/cli/app/.next-cli-build/server/chunks/4739.js +1 -1
  955. package/cli/app/.next-cli-build/server/chunks/4746.js +1 -1
  956. package/cli/app/.next-cli-build/server/chunks/4780.js +1 -1
  957. package/cli/app/.next-cli-build/server/chunks/507.js +1 -1
  958. package/cli/app/.next-cli-build/server/chunks/5236.js +1 -1
  959. package/cli/app/.next-cli-build/server/chunks/5258.js +1 -1
  960. package/cli/app/.next-cli-build/server/chunks/5307.js +1 -1
  961. package/cli/app/.next-cli-build/server/chunks/5436.js +4 -0
  962. package/cli/app/.next-cli-build/server/chunks/5469.js +1 -1
  963. package/cli/app/.next-cli-build/server/chunks/5949.js +13 -12
  964. package/cli/app/.next-cli-build/server/chunks/6036.js +1 -1
  965. package/cli/app/.next-cli-build/server/chunks/698.js +1 -1
  966. package/cli/app/.next-cli-build/server/chunks/7239.js +1 -1
  967. package/cli/app/.next-cli-build/server/chunks/7965.js +1 -1
  968. package/cli/app/.next-cli-build/server/chunks/8028.js +1 -0
  969. package/cli/app/.next-cli-build/server/chunks/8242.js +1 -1
  970. package/cli/app/.next-cli-build/server/chunks/8255.js +1 -1
  971. package/cli/app/.next-cli-build/server/chunks/8306.js +1 -1
  972. package/cli/app/.next-cli-build/server/chunks/8371.js +1 -1
  973. package/cli/app/.next-cli-build/server/chunks/8520.js +1 -1
  974. package/cli/app/.next-cli-build/server/chunks/877.js +24 -0
  975. package/cli/app/.next-cli-build/server/chunks/8895.js +7 -7
  976. package/cli/app/.next-cli-build/server/chunks/891.js +1 -1
  977. package/cli/app/.next-cli-build/server/chunks/9372.js +1 -1
  978. package/cli/app/.next-cli-build/server/chunks/9489.js +1 -1
  979. package/cli/app/.next-cli-build/server/chunks/9621.js +1 -1
  980. package/cli/app/.next-cli-build/server/functions-config-manifest.json +4 -0
  981. package/cli/app/.next-cli-build/server/middleware-build-manifest.js +1 -1
  982. package/cli/app/.next-cli-build/server/middleware.js +4 -4
  983. package/cli/app/.next-cli-build/server/next-font-manifest.js +1 -1
  984. package/cli/app/.next-cli-build/server/next-font-manifest.json +1 -1
  985. package/cli/app/.next-cli-build/server/pages/404.html +1 -1
  986. package/cli/app/.next-cli-build/server/pages/500.html +1 -1
  987. package/cli/app/.next-cli-build/static/chunks/5497-f1e851d6feffa7c0.js +7 -0
  988. package/cli/app/.next-cli-build/static/chunks/620-90911eeb765ca4bd.js +1 -0
  989. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/cli-tools/[toolId]/page-da4bf4d40037f090.js +1 -0
  990. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/cli-tools/page-19f56d717383fbf9.js +1 -0
  991. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page-59c81d5cf13456ba.js +59 -0
  992. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/media-providers/combo/[id]/page-4c46f9cac4765fc5.js +4 -0
  993. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/mitm/page-57c4b3a5e8b61f18.js +1 -0
  994. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/profile/page-bdcc38dc8f8c5619.js +1 -0
  995. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-b4f4b88642bbe60d.js +3 -0
  996. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/proxy-pools/page-16d3736170202fcd.js +4 -0
  997. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/quota/page-3e2009fdd918191b.js +1 -0
  998. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/usage/page-6062386d726c38dd.js +1 -0
  999. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/layout-203b0a53f7406968.js +1 -0
  1000. package/cli/app/.next-cli-build/static/chunks/app/_global-error/page-f29633932d5ddd5a.js +1 -0
  1001. package/cli/app/.next-cli-build/static/chunks/app/api/auth/login/route-f29633932d5ddd5a.js +1 -0
  1002. package/cli/app/.next-cli-build/static/chunks/app/api/auth/logout/route-f29633932d5ddd5a.js +1 -0
  1003. package/cli/app/.next-cli-build/static/chunks/app/api/auth/oidc/callback/route-f29633932d5ddd5a.js +1 -0
  1004. package/cli/app/.next-cli-build/static/chunks/app/api/auth/oidc/start/route-f29633932d5ddd5a.js +1 -0
  1005. package/cli/app/.next-cli-build/static/chunks/app/api/auth/oidc/test/route-f29633932d5ddd5a.js +1 -0
  1006. package/cli/app/.next-cli-build/static/chunks/app/api/auth/status/route-f29633932d5ddd5a.js +1 -0
  1007. package/cli/app/.next-cli-build/static/chunks/app/api/cache/stats/route-f29633932d5ddd5a.js +1 -0
  1008. package/cli/app/.next-cli-build/static/chunks/app/api/changelog/route-f29633932d5ddd5a.js +1 -0
  1009. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/all-statuses/route-f29633932d5ddd5a.js +1 -0
  1010. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-f29633932d5ddd5a.js +1 -0
  1011. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/route-f29633932d5ddd5a.js +1 -0
  1012. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/claude-settings/route-f29633932d5ddd5a.js +1 -0
  1013. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/cline-settings/route-f29633932d5ddd5a.js +1 -0
  1014. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/codex-gateway/accounts/route-f29633932d5ddd5a.js +1 -0
  1015. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/codex-settings/route-f29633932d5ddd5a.js +1 -0
  1016. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/copilot-settings/route-f29633932d5ddd5a.js +1 -0
  1017. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-registry/route-f29633932d5ddd5a.js +1 -0
  1018. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-tools/route-f29633932d5ddd5a.js +1 -0
  1019. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-settings/route-f29633932d5ddd5a.js +1 -0
  1020. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/deepseek-tui-settings/route-f29633932d5ddd5a.js +1 -0
  1021. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/droid-settings/route-f29633932d5ddd5a.js +1 -0
  1022. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/hermes-settings/route-f29633932d5ddd5a.js +1 -0
  1023. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/jcode-settings/route-f29633932d5ddd5a.js +1 -0
  1024. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/kilo-settings/route-f29633932d5ddd5a.js +1 -0
  1025. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/openclaw-settings/route-f29633932d5ddd5a.js +1 -0
  1026. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/opencode-settings/route-f29633932d5ddd5a.js +1 -0
  1027. package/cli/app/.next-cli-build/static/chunks/app/api/combos/[id]/route-f29633932d5ddd5a.js +1 -0
  1028. package/cli/app/.next-cli-build/static/chunks/app/api/combos/route-f29633932d5ddd5a.js +1 -0
  1029. package/cli/app/.next-cli-build/static/chunks/app/api/context/[id]/route-f29633932d5ddd5a.js +1 -0
  1030. package/cli/app/.next-cli-build/static/chunks/app/api/context/bulk/route-f29633932d5ddd5a.js +1 -0
  1031. package/cli/app/.next-cli-build/static/chunks/app/api/context/route-f29633932d5ddd5a.js +1 -0
  1032. package/cli/app/.next-cli-build/static/chunks/app/api/dashboard/chat/completions/route-f29633932d5ddd5a.js +1 -0
  1033. package/cli/app/.next-cli-build/static/chunks/app/api/dashboard/cli-tools/keys/route-f29633932d5ddd5a.js +1 -0
  1034. package/cli/app/.next-cli-build/static/chunks/app/api/dashboard/media/[operation]/route-f29633932d5ddd5a.js +1 -0
  1035. package/cli/app/.next-cli-build/static/chunks/app/api/headroom/extras/route-f29633932d5ddd5a.js +1 -0
  1036. package/cli/app/.next-cli-build/static/chunks/app/api/headroom/proxy/[...path]/route-f29633932d5ddd5a.js +1 -0
  1037. package/cli/app/.next-cli-build/static/chunks/app/api/headroom/restart/route-f29633932d5ddd5a.js +1 -0
  1038. package/cli/app/.next-cli-build/static/chunks/app/api/headroom/start/route-f29633932d5ddd5a.js +1 -0
  1039. package/cli/app/.next-cli-build/static/chunks/app/api/headroom/status/route-f29633932d5ddd5a.js +1 -0
  1040. package/cli/app/.next-cli-build/static/chunks/app/api/headroom/stop/route-f29633932d5ddd5a.js +1 -0
  1041. package/cli/app/.next-cli-build/static/chunks/app/api/health/ready/route-f29633932d5ddd5a.js +1 -0
  1042. package/cli/app/.next-cli-build/static/chunks/app/api/health/route-f29633932d5ddd5a.js +1 -0
  1043. package/cli/app/.next-cli-build/static/chunks/app/api/init/route-f29633932d5ddd5a.js +1 -0
  1044. package/cli/app/.next-cli-build/static/chunks/app/api/keys/[id]/rotate/route-f29633932d5ddd5a.js +1 -0
  1045. package/cli/app/.next-cli-build/static/chunks/app/api/keys/[id]/route-f29633932d5ddd5a.js +1 -0
  1046. package/cli/app/.next-cli-build/static/chunks/app/api/keys/route-f29633932d5ddd5a.js +1 -0
  1047. package/cli/app/.next-cli-build/static/chunks/app/api/locale/route-f29633932d5ddd5a.js +1 -0
  1048. package/cli/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/message/route-f29633932d5ddd5a.js +1 -0
  1049. package/cli/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/sse/route-f29633932d5ddd5a.js +1 -0
  1050. package/cli/app/.next-cli-build/static/chunks/app/api/media-providers/tts/deepgram/voices/route-f29633932d5ddd5a.js +1 -0
  1051. package/cli/app/.next-cli-build/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-f29633932d5ddd5a.js +1 -0
  1052. package/cli/app/.next-cli-build/static/chunks/app/api/media-providers/tts/inworld/voices/route-f29633932d5ddd5a.js +1 -0
  1053. package/cli/app/.next-cli-build/static/chunks/app/api/media-providers/tts/minimax/voices/route-f29633932d5ddd5a.js +1 -0
  1054. package/cli/app/.next-cli-build/static/chunks/app/api/media-providers/tts/voices/route-f29633932d5ddd5a.js +1 -0
  1055. package/cli/app/.next-cli-build/static/chunks/app/api/metrics/route-f29633932d5ddd5a.js +1 -0
  1056. package/cli/app/.next-cli-build/static/chunks/app/api/models/alias/route-f29633932d5ddd5a.js +1 -0
  1057. package/cli/app/.next-cli-build/static/chunks/app/api/models/availability/route-f29633932d5ddd5a.js +1 -0
  1058. package/cli/app/.next-cli-build/static/chunks/app/api/models/custom/route-f29633932d5ddd5a.js +1 -0
  1059. package/cli/app/.next-cli-build/static/chunks/app/api/models/disabled/route-f29633932d5ddd5a.js +1 -0
  1060. package/cli/app/.next-cli-build/static/chunks/app/api/models/route-f29633932d5ddd5a.js +1 -0
  1061. package/cli/app/.next-cli-build/static/chunks/app/api/models/test/route-f29633932d5ddd5a.js +1 -0
  1062. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/[provider]/[action]/route-f29633932d5ddd5a.js +1 -0
  1063. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/antigravity/bulk-import/[jobId]/cancel/route-f29633932d5ddd5a.js +1 -0
  1064. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/antigravity/bulk-import/[jobId]/manual/[workerId]/route-f29633932d5ddd5a.js +1 -0
  1065. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/antigravity/bulk-import/[jobId]/route-f29633932d5ddd5a.js +1 -0
  1066. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/antigravity/bulk-import/latest/route-f29633932d5ddd5a.js +1 -0
  1067. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/antigravity/bulk-import/route-f29633932d5ddd5a.js +1 -0
  1068. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/cancel/route-f29633932d5ddd5a.js +1 -0
  1069. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/manual/[workerId]/route-f29633932d5ddd5a.js +1 -0
  1070. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/route-f29633932d5ddd5a.js +1 -0
  1071. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cloudflare-ai/bulk-import/latest/route-f29633932d5ddd5a.js +1 -0
  1072. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cloudflare-ai/bulk-import/route-f29633932d5ddd5a.js +1 -0
  1073. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/bulk-import/[jobId]/cancel/route-f29633932d5ddd5a.js +1 -0
  1074. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/bulk-import/[jobId]/manual/[workerId]/route-f29633932d5ddd5a.js +1 -0
  1075. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/bulk-import/[jobId]/route-f29633932d5ddd5a.js +1 -0
  1076. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/bulk-import/latest/route-f29633932d5ddd5a.js +1 -0
  1077. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/bulk-import/route-f29633932d5ddd5a.js +1 -0
  1078. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/bulk-token/route-f29633932d5ddd5a.js +1 -0
  1079. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/quota-cookie/route-f29633932d5ddd5a.js +1 -0
  1080. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/cancel/route-f29633932d5ddd5a.js +1 -0
  1081. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/manual/[workerId]/route-f29633932d5ddd5a.js +1 -0
  1082. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/route-f29633932d5ddd5a.js +1 -0
  1083. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-import/latest/route-f29633932d5ddd5a.js +1 -0
  1084. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-import/route-f29633932d5ddd5a.js +1 -0
  1085. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-token/route-f29633932d5ddd5a.js +1 -0
  1086. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/quota-cookie/route-f29633932d5ddd5a.js +1 -0
  1087. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codex/import-token/route-f29633932d5ddd5a.js +1 -0
  1088. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cursor/auto-import/route-f29633932d5ddd5a.js +1 -0
  1089. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cursor/import/route-f29633932d5ddd5a.js +1 -0
  1090. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/gitlab/pat/route-f29633932d5ddd5a.js +1 -0
  1091. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/iflow/cookie/route-f29633932d5ddd5a.js +1 -0
  1092. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/auto-import/route-f29633932d5ddd5a.js +1 -0
  1093. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/bulk-import/[jobId]/cancel/route-f29633932d5ddd5a.js +1 -0
  1094. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/bulk-import/[jobId]/manual/[workerId]/route-f29633932d5ddd5a.js +1 -0
  1095. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/bulk-import/[jobId]/route-f29633932d5ddd5a.js +1 -0
  1096. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/bulk-import/latest/route-f29633932d5ddd5a.js +1 -0
  1097. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/bulk-import/route-f29633932d5ddd5a.js +1 -0
  1098. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/import/route-f29633932d5ddd5a.js +1 -0
  1099. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-authorize/route-f29633932d5ddd5a.js +1 -0
  1100. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-exchange/route-f29633932d5ddd5a.js +1 -0
  1101. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/qoder/bulk-import/[jobId]/cancel/route-f29633932d5ddd5a.js +1 -0
  1102. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/qoder/bulk-import/[jobId]/manual/[workerId]/route-f29633932d5ddd5a.js +1 -0
  1103. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/qoder/bulk-import/[jobId]/route-f29633932d5ddd5a.js +1 -0
  1104. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/qoder/bulk-import/latest/route-f29633932d5ddd5a.js +1 -0
  1105. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/qoder/bulk-import/route-f29633932d5ddd5a.js +1 -0
  1106. package/cli/app/.next-cli-build/static/chunks/app/api/pricing/route-f29633932d5ddd5a.js +1 -0
  1107. package/cli/app/.next-cli-build/static/chunks/app/api/provider-nodes/[id]/route-f29633932d5ddd5a.js +1 -0
  1108. package/cli/app/.next-cli-build/static/chunks/app/api/provider-nodes/route-f29633932d5ddd5a.js +1 -0
  1109. package/cli/app/.next-cli-build/static/chunks/app/api/provider-nodes/validate/route-f29633932d5ddd5a.js +1 -0
  1110. package/cli/app/.next-cli-build/static/chunks/app/api/providers/[id]/models/route-f29633932d5ddd5a.js +1 -0
  1111. package/cli/app/.next-cli-build/static/chunks/app/api/providers/[id]/route-f29633932d5ddd5a.js +1 -0
  1112. package/cli/app/.next-cli-build/static/chunks/app/api/providers/[id]/test/route-f29633932d5ddd5a.js +1 -0
  1113. package/cli/app/.next-cli-build/static/chunks/app/api/providers/[id]/test-models/route-f29633932d5ddd5a.js +1 -0
  1114. package/cli/app/.next-cli-build/static/chunks/app/api/providers/bulk-delete/route-f29633932d5ddd5a.js +1 -0
  1115. package/cli/app/.next-cli-build/static/chunks/app/api/providers/client/route-f29633932d5ddd5a.js +1 -0
  1116. package/cli/app/.next-cli-build/static/chunks/app/api/providers/kilo/free-models/route-f29633932d5ddd5a.js +1 -0
  1117. package/cli/app/.next-cli-build/static/chunks/app/api/providers/route-f29633932d5ddd5a.js +1 -0
  1118. package/cli/app/.next-cli-build/static/chunks/app/api/providers/suggested-models/route-f29633932d5ddd5a.js +1 -0
  1119. package/cli/app/.next-cli-build/static/chunks/app/api/providers/test-batch/route-f29633932d5ddd5a.js +1 -0
  1120. package/cli/app/.next-cli-build/static/chunks/app/api/providers/validate/route-f29633932d5ddd5a.js +1 -0
  1121. package/cli/app/.next-cli-build/static/chunks/app/api/proxy-pools/[id]/route-f29633932d5ddd5a.js +1 -0
  1122. package/cli/app/.next-cli-build/static/chunks/app/api/proxy-pools/[id]/test/route-f29633932d5ddd5a.js +1 -0
  1123. package/cli/app/.next-cli-build/static/chunks/app/api/proxy-pools/cloudflare-deploy/route-f29633932d5ddd5a.js +1 -0
  1124. package/cli/app/.next-cli-build/static/chunks/app/api/proxy-pools/deno-deploy/route-f29633932d5ddd5a.js +1 -0
  1125. package/cli/app/.next-cli-build/static/chunks/app/api/proxy-pools/route-f29633932d5ddd5a.js +1 -0
  1126. package/cli/app/.next-cli-build/static/chunks/app/api/proxy-pools/vercel-deploy/route-f29633932d5ddd5a.js +1 -0
  1127. package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/health/route-f29633932d5ddd5a.js +1 -0
  1128. package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/install/route-f29633932d5ddd5a.js +1 -0
  1129. package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/restart/route-f29633932d5ddd5a.js +1 -0
  1130. package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/start/route-f29633932d5ddd5a.js +1 -0
  1131. package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/stats/route-f29633932d5ddd5a.js +1 -0
  1132. package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/status/route-f29633932d5ddd5a.js +1 -0
  1133. package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/stop/route-f29633932d5ddd5a.js +1 -0
  1134. package/cli/app/.next-cli-build/static/chunks/app/api/settings/database/route-f29633932d5ddd5a.js +1 -0
  1135. package/cli/app/.next-cli-build/static/chunks/app/api/settings/proxy-test/route-f29633932d5ddd5a.js +1 -0
  1136. package/cli/app/.next-cli-build/static/chunks/app/api/settings/require-login/route-f29633932d5ddd5a.js +1 -0
  1137. package/cli/app/.next-cli-build/static/chunks/app/api/settings/route-f29633932d5ddd5a.js +1 -0
  1138. package/cli/app/.next-cli-build/static/chunks/app/api/shutdown/route-f29633932d5ddd5a.js +1 -0
  1139. package/cli/app/.next-cli-build/static/chunks/app/api/tags/route-f29633932d5ddd5a.js +1 -0
  1140. package/cli/app/.next-cli-build/static/chunks/app/api/terminal/auth/setup/route-f29633932d5ddd5a.js +1 -0
  1141. package/cli/app/.next-cli-build/static/chunks/app/api/terminal/auth/status/route-f29633932d5ddd5a.js +1 -0
  1142. package/cli/app/.next-cli-build/static/chunks/app/api/terminal/auth/unlock/route-f29633932d5ddd5a.js +1 -0
  1143. package/cli/app/.next-cli-build/static/chunks/app/api/terminal/session/[id]/input/route-f29633932d5ddd5a.js +1 -0
  1144. package/cli/app/.next-cli-build/static/chunks/app/api/terminal/session/[id]/resize/route-f29633932d5ddd5a.js +1 -0
  1145. package/cli/app/.next-cli-build/static/chunks/app/api/terminal/session/[id]/route-f29633932d5ddd5a.js +1 -0
  1146. package/cli/app/.next-cli-build/static/chunks/app/api/terminal/session/[id]/stream/route-f29633932d5ddd5a.js +1 -0
  1147. package/cli/app/.next-cli-build/static/chunks/app/api/terminal/session/route-f29633932d5ddd5a.js +1 -0
  1148. package/cli/app/.next-cli-build/static/chunks/app/api/translator/console-logs/route-f29633932d5ddd5a.js +1 -0
  1149. package/cli/app/.next-cli-build/static/chunks/app/api/translator/console-logs/stream/route-f29633932d5ddd5a.js +1 -0
  1150. package/cli/app/.next-cli-build/static/chunks/app/api/translator/load/route-f29633932d5ddd5a.js +1 -0
  1151. package/cli/app/.next-cli-build/static/chunks/app/api/translator/save/route-f29633932d5ddd5a.js +1 -0
  1152. package/cli/app/.next-cli-build/static/chunks/app/api/translator/send/route-f29633932d5ddd5a.js +1 -0
  1153. package/cli/app/.next-cli-build/static/chunks/app/api/translator/translate/route-f29633932d5ddd5a.js +1 -0
  1154. package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/disable/route-f29633932d5ddd5a.js +1 -0
  1155. package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/enable/route-f29633932d5ddd5a.js +1 -0
  1156. package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/status/route-f29633932d5ddd5a.js +1 -0
  1157. package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-check/route-f29633932d5ddd5a.js +1 -0
  1158. package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-disable/route-f29633932d5ddd5a.js +1 -0
  1159. package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-enable/route-f29633932d5ddd5a.js +1 -0
  1160. package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-install/route-f29633932d5ddd5a.js +1 -0
  1161. package/cli/app/.next-cli-build/static/chunks/app/api/usage/[connectionId]/route-f29633932d5ddd5a.js +1 -0
  1162. package/cli/app/.next-cli-build/static/chunks/app/api/usage/aggregate/route-f29633932d5ddd5a.js +1 -0
  1163. package/cli/app/.next-cli-build/static/chunks/app/api/usage/chart/route-f29633932d5ddd5a.js +1 -0
  1164. package/cli/app/.next-cli-build/static/chunks/app/api/usage/history/route-f29633932d5ddd5a.js +1 -0
  1165. package/cli/app/.next-cli-build/static/chunks/app/api/usage/providers/route-f29633932d5ddd5a.js +1 -0
  1166. package/cli/app/.next-cli-build/static/chunks/app/api/usage/request-details/route-f29633932d5ddd5a.js +1 -0
  1167. package/cli/app/.next-cli-build/static/chunks/app/api/usage/request-logs/route-f29633932d5ddd5a.js +1 -0
  1168. package/cli/app/.next-cli-build/static/chunks/app/api/usage/stats/route-f29633932d5ddd5a.js +1 -0
  1169. package/cli/app/.next-cli-build/static/chunks/app/api/usage/stream/route-f29633932d5ddd5a.js +1 -0
  1170. package/cli/app/.next-cli-build/static/chunks/app/api/v1/api/chat/route-f29633932d5ddd5a.js +1 -0
  1171. package/cli/app/.next-cli-build/static/chunks/app/api/v1/audio/speech/route-f29633932d5ddd5a.js +1 -0
  1172. package/cli/app/.next-cli-build/static/chunks/app/api/v1/audio/transcriptions/route-f29633932d5ddd5a.js +1 -0
  1173. package/cli/app/.next-cli-build/static/chunks/app/api/v1/audio/voices/route-f29633932d5ddd5a.js +1 -0
  1174. package/cli/app/.next-cli-build/static/chunks/app/api/v1/chat/completions/route-f29633932d5ddd5a.js +1 -0
  1175. package/cli/app/.next-cli-build/static/chunks/app/api/v1/embeddings/route-f29633932d5ddd5a.js +1 -0
  1176. package/cli/app/.next-cli-build/static/chunks/app/api/v1/images/generations/route-f29633932d5ddd5a.js +1 -0
  1177. package/cli/app/.next-cli-build/static/chunks/app/api/v1/messages/count_tokens/route-f29633932d5ddd5a.js +1 -0
  1178. package/cli/app/.next-cli-build/static/chunks/app/api/v1/messages/route-f29633932d5ddd5a.js +1 -0
  1179. package/cli/app/.next-cli-build/static/chunks/app/api/v1/models/[kind]/route-f29633932d5ddd5a.js +1 -0
  1180. package/cli/app/.next-cli-build/static/chunks/app/api/v1/models/info/route-f29633932d5ddd5a.js +1 -0
  1181. package/cli/app/.next-cli-build/static/chunks/app/api/v1/models/route-f29633932d5ddd5a.js +1 -0
  1182. package/cli/app/.next-cli-build/static/chunks/app/api/v1/responses/compact/route-f29633932d5ddd5a.js +1 -0
  1183. package/cli/app/.next-cli-build/static/chunks/app/api/v1/responses/route-f29633932d5ddd5a.js +1 -0
  1184. package/cli/app/.next-cli-build/static/chunks/app/api/v1/route-f29633932d5ddd5a.js +1 -0
  1185. package/cli/app/.next-cli-build/static/chunks/app/api/v1/search/route-f29633932d5ddd5a.js +1 -0
  1186. package/cli/app/.next-cli-build/static/chunks/app/api/v1/web/fetch/route-f29633932d5ddd5a.js +1 -0
  1187. package/cli/app/.next-cli-build/static/chunks/app/api/v1beta/models/[...path]/route-f29633932d5ddd5a.js +1 -0
  1188. package/cli/app/.next-cli-build/static/chunks/app/api/v1beta/models/route-f29633932d5ddd5a.js +1 -0
  1189. package/cli/app/.next-cli-build/static/chunks/app/api/version/route-f29633932d5ddd5a.js +1 -0
  1190. package/cli/app/.next-cli-build/static/chunks/app/api/version/shutdown/route-f29633932d5ddd5a.js +1 -0
  1191. package/cli/app/.next-cli-build/static/chunks/app/api/version/update/route-f29633932d5ddd5a.js +1 -0
  1192. package/cli/app/.next-cli-build/static/chunks/app/login/page-f7df7d9a053d65b7.js +1 -0
  1193. package/cli/app/.next-cli-build/static/chunks/app/manifest.webmanifest/route-f29633932d5ddd5a.js +1 -0
  1194. package/cli/app/.next-cli-build/static/chunks/app/page-f29633932d5ddd5a.js +1 -0
  1195. package/cli/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/app-error-f29633932d5ddd5a.js +1 -0
  1196. package/cli/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/forbidden-f29633932d5ddd5a.js +1 -0
  1197. package/cli/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/not-found-f29633932d5ddd5a.js +1 -0
  1198. package/cli/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/unauthorized-f29633932d5ddd5a.js +1 -0
  1199. package/cli/app/.next-cli-build/static/sRgS_5eNahHOIlOLEqVvI/_buildManifest.js +1 -0
  1200. package/cli/app/CHANGELOG.md +47 -0
  1201. package/cli/app/cli/hooks/postinstall.js +82 -50
  1202. package/cli/app/cli/hooks/safeGlobalInstall.js +178 -10
  1203. package/cli/app/cli/hooks/startupRuntime.js +31 -0
  1204. package/cli/app/cli/hooks/streamCommand.js +63 -0
  1205. package/cli/app/package.json +46 -37
  1206. package/cli/app/server.js +1 -1
  1207. package/cli/app/src/lib/db/adapters/betterSqliteAdapter.js +6 -3
  1208. package/cli/app/src/lib/db/adapters/bunSqliteAdapter.js +4 -2
  1209. package/cli/app/src/lib/db/adapters/nodeSqliteAdapter.js +4 -2
  1210. package/cli/app/src/lib/db/adapters/sqljsAdapter.js +84 -27
  1211. package/cli/app/src/lib/db/maintenance.js +6 -0
  1212. package/cli/cli.js +708 -248
  1213. package/cli/hooks/postinstall.js +82 -50
  1214. package/cli/hooks/safeGlobalInstall.js +178 -10
  1215. package/cli/hooks/startupRuntime.js +31 -0
  1216. package/cli/hooks/streamCommand.js +63 -0
  1217. package/cli/package.json +6 -5
  1218. package/cli/src/cli/api/client.js +3 -1
  1219. package/cli/src/cli/systemdEnv.js +93 -0
  1220. package/cli/src/cli/tray/autostart.js +55 -21
  1221. package/cli/src/cli/tray/tray.js +1 -1
  1222. package/cli/src/cli/updateRuntimeState.js +976 -0
  1223. package/package.json +46 -37
  1224. package/scripts/start-standalone.mjs +24 -15
  1225. package/cli/app/.next-cli-build/server/chunks/5024.js +0 -1
  1226. package/cli/app/.next-cli-build/server/chunks/601.js +0 -24
  1227. package/cli/app/.next-cli-build/static/chunks/5497-8d0ec2995dc0a392.js +0 -7
  1228. package/cli/app/.next-cli-build/static/chunks/620-abc3c4ad8fcc220a.js +0 -1
  1229. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/cli-tools/[toolId]/page-f16310d2b403445e.js +0 -1
  1230. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/cli-tools/page-27b7575d0d2d59fa.js +0 -1
  1231. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page-a35d16eda369d68e.js +0 -59
  1232. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/media-providers/combo/[id]/page-e7989e6397c3cd28.js +0 -4
  1233. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/mitm/page-81eaa9fe75830559.js +0 -1
  1234. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/profile/page-ceb414eddc31fbfc.js +0 -1
  1235. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-4f6f0b7c3b3da037.js +0 -3
  1236. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/proxy-pools/page-9e3ac0e62a8bba94.js +0 -4
  1237. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/quota/page-579bf915396efc69.js +0 -1
  1238. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/usage/page-bc3ada97fab644b3.js +0 -1
  1239. package/cli/app/.next-cli-build/static/chunks/app/(dashboard)/layout-59c5060c7f023ab8.js +0 -1
  1240. package/cli/app/.next-cli-build/static/chunks/app/_global-error/page-915c9a5b78eafa55.js +0 -1
  1241. package/cli/app/.next-cli-build/static/chunks/app/api/auth/login/route-915c9a5b78eafa55.js +0 -1
  1242. package/cli/app/.next-cli-build/static/chunks/app/api/auth/logout/route-915c9a5b78eafa55.js +0 -1
  1243. package/cli/app/.next-cli-build/static/chunks/app/api/auth/oidc/callback/route-915c9a5b78eafa55.js +0 -1
  1244. package/cli/app/.next-cli-build/static/chunks/app/api/auth/oidc/start/route-915c9a5b78eafa55.js +0 -1
  1245. package/cli/app/.next-cli-build/static/chunks/app/api/auth/oidc/test/route-915c9a5b78eafa55.js +0 -1
  1246. package/cli/app/.next-cli-build/static/chunks/app/api/auth/status/route-915c9a5b78eafa55.js +0 -1
  1247. package/cli/app/.next-cli-build/static/chunks/app/api/cache/stats/route-915c9a5b78eafa55.js +0 -1
  1248. package/cli/app/.next-cli-build/static/chunks/app/api/changelog/route-915c9a5b78eafa55.js +0 -1
  1249. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/all-statuses/route-915c9a5b78eafa55.js +0 -1
  1250. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-915c9a5b78eafa55.js +0 -1
  1251. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/route-915c9a5b78eafa55.js +0 -1
  1252. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/claude-settings/route-915c9a5b78eafa55.js +0 -1
  1253. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/cline-settings/route-915c9a5b78eafa55.js +0 -1
  1254. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/codex-gateway/accounts/route-915c9a5b78eafa55.js +0 -1
  1255. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/codex-settings/route-915c9a5b78eafa55.js +0 -1
  1256. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/copilot-settings/route-915c9a5b78eafa55.js +0 -1
  1257. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-registry/route-915c9a5b78eafa55.js +0 -1
  1258. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-tools/route-915c9a5b78eafa55.js +0 -1
  1259. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-settings/route-915c9a5b78eafa55.js +0 -1
  1260. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/deepseek-tui-settings/route-915c9a5b78eafa55.js +0 -1
  1261. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/droid-settings/route-915c9a5b78eafa55.js +0 -1
  1262. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/hermes-settings/route-915c9a5b78eafa55.js +0 -1
  1263. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/jcode-settings/route-915c9a5b78eafa55.js +0 -1
  1264. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/kilo-settings/route-915c9a5b78eafa55.js +0 -1
  1265. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/openclaw-settings/route-915c9a5b78eafa55.js +0 -1
  1266. package/cli/app/.next-cli-build/static/chunks/app/api/cli-tools/opencode-settings/route-915c9a5b78eafa55.js +0 -1
  1267. package/cli/app/.next-cli-build/static/chunks/app/api/combos/[id]/route-915c9a5b78eafa55.js +0 -1
  1268. package/cli/app/.next-cli-build/static/chunks/app/api/combos/route-915c9a5b78eafa55.js +0 -1
  1269. package/cli/app/.next-cli-build/static/chunks/app/api/context/[id]/route-915c9a5b78eafa55.js +0 -1
  1270. package/cli/app/.next-cli-build/static/chunks/app/api/context/bulk/route-915c9a5b78eafa55.js +0 -1
  1271. package/cli/app/.next-cli-build/static/chunks/app/api/context/route-915c9a5b78eafa55.js +0 -1
  1272. package/cli/app/.next-cli-build/static/chunks/app/api/dashboard/chat/completions/route-915c9a5b78eafa55.js +0 -1
  1273. package/cli/app/.next-cli-build/static/chunks/app/api/headroom/extras/route-915c9a5b78eafa55.js +0 -1
  1274. package/cli/app/.next-cli-build/static/chunks/app/api/headroom/proxy/[...path]/route-915c9a5b78eafa55.js +0 -1
  1275. package/cli/app/.next-cli-build/static/chunks/app/api/headroom/restart/route-915c9a5b78eafa55.js +0 -1
  1276. package/cli/app/.next-cli-build/static/chunks/app/api/headroom/start/route-915c9a5b78eafa55.js +0 -1
  1277. package/cli/app/.next-cli-build/static/chunks/app/api/headroom/status/route-915c9a5b78eafa55.js +0 -1
  1278. package/cli/app/.next-cli-build/static/chunks/app/api/headroom/stop/route-915c9a5b78eafa55.js +0 -1
  1279. package/cli/app/.next-cli-build/static/chunks/app/api/health/ready/route-915c9a5b78eafa55.js +0 -1
  1280. package/cli/app/.next-cli-build/static/chunks/app/api/health/route-915c9a5b78eafa55.js +0 -1
  1281. package/cli/app/.next-cli-build/static/chunks/app/api/init/route-915c9a5b78eafa55.js +0 -1
  1282. package/cli/app/.next-cli-build/static/chunks/app/api/keys/[id]/rotate/route-915c9a5b78eafa55.js +0 -1
  1283. package/cli/app/.next-cli-build/static/chunks/app/api/keys/[id]/route-915c9a5b78eafa55.js +0 -1
  1284. package/cli/app/.next-cli-build/static/chunks/app/api/keys/route-915c9a5b78eafa55.js +0 -1
  1285. package/cli/app/.next-cli-build/static/chunks/app/api/locale/route-915c9a5b78eafa55.js +0 -1
  1286. package/cli/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/message/route-915c9a5b78eafa55.js +0 -1
  1287. package/cli/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/sse/route-915c9a5b78eafa55.js +0 -1
  1288. package/cli/app/.next-cli-build/static/chunks/app/api/media-providers/tts/deepgram/voices/route-915c9a5b78eafa55.js +0 -1
  1289. package/cli/app/.next-cli-build/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-915c9a5b78eafa55.js +0 -1
  1290. package/cli/app/.next-cli-build/static/chunks/app/api/media-providers/tts/inworld/voices/route-915c9a5b78eafa55.js +0 -1
  1291. package/cli/app/.next-cli-build/static/chunks/app/api/media-providers/tts/minimax/voices/route-915c9a5b78eafa55.js +0 -1
  1292. package/cli/app/.next-cli-build/static/chunks/app/api/media-providers/tts/voices/route-915c9a5b78eafa55.js +0 -1
  1293. package/cli/app/.next-cli-build/static/chunks/app/api/metrics/route-915c9a5b78eafa55.js +0 -1
  1294. package/cli/app/.next-cli-build/static/chunks/app/api/models/alias/route-915c9a5b78eafa55.js +0 -1
  1295. package/cli/app/.next-cli-build/static/chunks/app/api/models/availability/route-915c9a5b78eafa55.js +0 -1
  1296. package/cli/app/.next-cli-build/static/chunks/app/api/models/custom/route-915c9a5b78eafa55.js +0 -1
  1297. package/cli/app/.next-cli-build/static/chunks/app/api/models/disabled/route-915c9a5b78eafa55.js +0 -1
  1298. package/cli/app/.next-cli-build/static/chunks/app/api/models/route-915c9a5b78eafa55.js +0 -1
  1299. package/cli/app/.next-cli-build/static/chunks/app/api/models/test/route-915c9a5b78eafa55.js +0 -1
  1300. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/[provider]/[action]/route-915c9a5b78eafa55.js +0 -1
  1301. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/antigravity/bulk-import/[jobId]/cancel/route-915c9a5b78eafa55.js +0 -1
  1302. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/antigravity/bulk-import/[jobId]/manual/[workerId]/route-915c9a5b78eafa55.js +0 -1
  1303. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/antigravity/bulk-import/[jobId]/route-915c9a5b78eafa55.js +0 -1
  1304. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/antigravity/bulk-import/latest/route-915c9a5b78eafa55.js +0 -1
  1305. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/antigravity/bulk-import/route-915c9a5b78eafa55.js +0 -1
  1306. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/cancel/route-915c9a5b78eafa55.js +0 -1
  1307. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/manual/[workerId]/route-915c9a5b78eafa55.js +0 -1
  1308. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/route-915c9a5b78eafa55.js +0 -1
  1309. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cloudflare-ai/bulk-import/latest/route-915c9a5b78eafa55.js +0 -1
  1310. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cloudflare-ai/bulk-import/route-915c9a5b78eafa55.js +0 -1
  1311. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/bulk-import/[jobId]/cancel/route-915c9a5b78eafa55.js +0 -1
  1312. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/bulk-import/[jobId]/manual/[workerId]/route-915c9a5b78eafa55.js +0 -1
  1313. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/bulk-import/[jobId]/route-915c9a5b78eafa55.js +0 -1
  1314. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/bulk-import/latest/route-915c9a5b78eafa55.js +0 -1
  1315. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/bulk-import/route-915c9a5b78eafa55.js +0 -1
  1316. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/bulk-token/route-915c9a5b78eafa55.js +0 -1
  1317. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy/quota-cookie/route-915c9a5b78eafa55.js +0 -1
  1318. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/cancel/route-915c9a5b78eafa55.js +0 -1
  1319. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/manual/[workerId]/route-915c9a5b78eafa55.js +0 -1
  1320. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/route-915c9a5b78eafa55.js +0 -1
  1321. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-import/latest/route-915c9a5b78eafa55.js +0 -1
  1322. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-import/route-915c9a5b78eafa55.js +0 -1
  1323. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/bulk-token/route-915c9a5b78eafa55.js +0 -1
  1324. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codebuddy-cn/quota-cookie/route-915c9a5b78eafa55.js +0 -1
  1325. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/codex/import-token/route-915c9a5b78eafa55.js +0 -1
  1326. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cursor/auto-import/route-915c9a5b78eafa55.js +0 -1
  1327. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/cursor/import/route-915c9a5b78eafa55.js +0 -1
  1328. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/gitlab/pat/route-915c9a5b78eafa55.js +0 -1
  1329. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/iflow/cookie/route-915c9a5b78eafa55.js +0 -1
  1330. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/auto-import/route-915c9a5b78eafa55.js +0 -1
  1331. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/bulk-import/[jobId]/cancel/route-915c9a5b78eafa55.js +0 -1
  1332. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/bulk-import/[jobId]/manual/[workerId]/route-915c9a5b78eafa55.js +0 -1
  1333. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/bulk-import/[jobId]/route-915c9a5b78eafa55.js +0 -1
  1334. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/bulk-import/latest/route-915c9a5b78eafa55.js +0 -1
  1335. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/bulk-import/route-915c9a5b78eafa55.js +0 -1
  1336. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/import/route-915c9a5b78eafa55.js +0 -1
  1337. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-authorize/route-915c9a5b78eafa55.js +0 -1
  1338. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-exchange/route-915c9a5b78eafa55.js +0 -1
  1339. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/qoder/bulk-import/[jobId]/cancel/route-915c9a5b78eafa55.js +0 -1
  1340. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/qoder/bulk-import/[jobId]/manual/[workerId]/route-915c9a5b78eafa55.js +0 -1
  1341. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/qoder/bulk-import/[jobId]/route-915c9a5b78eafa55.js +0 -1
  1342. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/qoder/bulk-import/latest/route-915c9a5b78eafa55.js +0 -1
  1343. package/cli/app/.next-cli-build/static/chunks/app/api/oauth/qoder/bulk-import/route-915c9a5b78eafa55.js +0 -1
  1344. package/cli/app/.next-cli-build/static/chunks/app/api/pricing/route-915c9a5b78eafa55.js +0 -1
  1345. package/cli/app/.next-cli-build/static/chunks/app/api/provider-nodes/[id]/route-915c9a5b78eafa55.js +0 -1
  1346. package/cli/app/.next-cli-build/static/chunks/app/api/provider-nodes/route-915c9a5b78eafa55.js +0 -1
  1347. package/cli/app/.next-cli-build/static/chunks/app/api/provider-nodes/validate/route-915c9a5b78eafa55.js +0 -1
  1348. package/cli/app/.next-cli-build/static/chunks/app/api/providers/[id]/models/route-915c9a5b78eafa55.js +0 -1
  1349. package/cli/app/.next-cli-build/static/chunks/app/api/providers/[id]/route-915c9a5b78eafa55.js +0 -1
  1350. package/cli/app/.next-cli-build/static/chunks/app/api/providers/[id]/test/route-915c9a5b78eafa55.js +0 -1
  1351. package/cli/app/.next-cli-build/static/chunks/app/api/providers/[id]/test-models/route-915c9a5b78eafa55.js +0 -1
  1352. package/cli/app/.next-cli-build/static/chunks/app/api/providers/bulk-delete/route-915c9a5b78eafa55.js +0 -1
  1353. package/cli/app/.next-cli-build/static/chunks/app/api/providers/client/route-915c9a5b78eafa55.js +0 -1
  1354. package/cli/app/.next-cli-build/static/chunks/app/api/providers/kilo/free-models/route-915c9a5b78eafa55.js +0 -1
  1355. package/cli/app/.next-cli-build/static/chunks/app/api/providers/route-915c9a5b78eafa55.js +0 -1
  1356. package/cli/app/.next-cli-build/static/chunks/app/api/providers/suggested-models/route-915c9a5b78eafa55.js +0 -1
  1357. package/cli/app/.next-cli-build/static/chunks/app/api/providers/test-batch/route-915c9a5b78eafa55.js +0 -1
  1358. package/cli/app/.next-cli-build/static/chunks/app/api/providers/validate/route-915c9a5b78eafa55.js +0 -1
  1359. package/cli/app/.next-cli-build/static/chunks/app/api/proxy-pools/[id]/route-915c9a5b78eafa55.js +0 -1
  1360. package/cli/app/.next-cli-build/static/chunks/app/api/proxy-pools/[id]/test/route-915c9a5b78eafa55.js +0 -1
  1361. package/cli/app/.next-cli-build/static/chunks/app/api/proxy-pools/cloudflare-deploy/route-915c9a5b78eafa55.js +0 -1
  1362. package/cli/app/.next-cli-build/static/chunks/app/api/proxy-pools/deno-deploy/route-915c9a5b78eafa55.js +0 -1
  1363. package/cli/app/.next-cli-build/static/chunks/app/api/proxy-pools/route-915c9a5b78eafa55.js +0 -1
  1364. package/cli/app/.next-cli-build/static/chunks/app/api/proxy-pools/vercel-deploy/route-915c9a5b78eafa55.js +0 -1
  1365. package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/health/route-915c9a5b78eafa55.js +0 -1
  1366. package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/install/route-915c9a5b78eafa55.js +0 -1
  1367. package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/restart/route-915c9a5b78eafa55.js +0 -1
  1368. package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/start/route-915c9a5b78eafa55.js +0 -1
  1369. package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/stats/route-915c9a5b78eafa55.js +0 -1
  1370. package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/status/route-915c9a5b78eafa55.js +0 -1
  1371. package/cli/app/.next-cli-build/static/chunks/app/api/pxpipe/stop/route-915c9a5b78eafa55.js +0 -1
  1372. package/cli/app/.next-cli-build/static/chunks/app/api/settings/database/route-915c9a5b78eafa55.js +0 -1
  1373. package/cli/app/.next-cli-build/static/chunks/app/api/settings/proxy-test/route-915c9a5b78eafa55.js +0 -1
  1374. package/cli/app/.next-cli-build/static/chunks/app/api/settings/require-login/route-915c9a5b78eafa55.js +0 -1
  1375. package/cli/app/.next-cli-build/static/chunks/app/api/settings/route-915c9a5b78eafa55.js +0 -1
  1376. package/cli/app/.next-cli-build/static/chunks/app/api/shutdown/route-915c9a5b78eafa55.js +0 -1
  1377. package/cli/app/.next-cli-build/static/chunks/app/api/tags/route-915c9a5b78eafa55.js +0 -1
  1378. package/cli/app/.next-cli-build/static/chunks/app/api/terminal/auth/setup/route-915c9a5b78eafa55.js +0 -1
  1379. package/cli/app/.next-cli-build/static/chunks/app/api/terminal/auth/status/route-915c9a5b78eafa55.js +0 -1
  1380. package/cli/app/.next-cli-build/static/chunks/app/api/terminal/auth/unlock/route-915c9a5b78eafa55.js +0 -1
  1381. package/cli/app/.next-cli-build/static/chunks/app/api/terminal/session/[id]/input/route-915c9a5b78eafa55.js +0 -1
  1382. package/cli/app/.next-cli-build/static/chunks/app/api/terminal/session/[id]/resize/route-915c9a5b78eafa55.js +0 -1
  1383. package/cli/app/.next-cli-build/static/chunks/app/api/terminal/session/[id]/route-915c9a5b78eafa55.js +0 -1
  1384. package/cli/app/.next-cli-build/static/chunks/app/api/terminal/session/[id]/stream/route-915c9a5b78eafa55.js +0 -1
  1385. package/cli/app/.next-cli-build/static/chunks/app/api/terminal/session/route-915c9a5b78eafa55.js +0 -1
  1386. package/cli/app/.next-cli-build/static/chunks/app/api/translator/console-logs/route-915c9a5b78eafa55.js +0 -1
  1387. package/cli/app/.next-cli-build/static/chunks/app/api/translator/console-logs/stream/route-915c9a5b78eafa55.js +0 -1
  1388. package/cli/app/.next-cli-build/static/chunks/app/api/translator/load/route-915c9a5b78eafa55.js +0 -1
  1389. package/cli/app/.next-cli-build/static/chunks/app/api/translator/save/route-915c9a5b78eafa55.js +0 -1
  1390. package/cli/app/.next-cli-build/static/chunks/app/api/translator/send/route-915c9a5b78eafa55.js +0 -1
  1391. package/cli/app/.next-cli-build/static/chunks/app/api/translator/translate/route-915c9a5b78eafa55.js +0 -1
  1392. package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/disable/route-915c9a5b78eafa55.js +0 -1
  1393. package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/enable/route-915c9a5b78eafa55.js +0 -1
  1394. package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/status/route-915c9a5b78eafa55.js +0 -1
  1395. package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-check/route-915c9a5b78eafa55.js +0 -1
  1396. package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-disable/route-915c9a5b78eafa55.js +0 -1
  1397. package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-enable/route-915c9a5b78eafa55.js +0 -1
  1398. package/cli/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-install/route-915c9a5b78eafa55.js +0 -1
  1399. package/cli/app/.next-cli-build/static/chunks/app/api/usage/[connectionId]/route-915c9a5b78eafa55.js +0 -1
  1400. package/cli/app/.next-cli-build/static/chunks/app/api/usage/aggregate/route-915c9a5b78eafa55.js +0 -1
  1401. package/cli/app/.next-cli-build/static/chunks/app/api/usage/chart/route-915c9a5b78eafa55.js +0 -1
  1402. package/cli/app/.next-cli-build/static/chunks/app/api/usage/history/route-915c9a5b78eafa55.js +0 -1
  1403. package/cli/app/.next-cli-build/static/chunks/app/api/usage/providers/route-915c9a5b78eafa55.js +0 -1
  1404. package/cli/app/.next-cli-build/static/chunks/app/api/usage/request-details/route-915c9a5b78eafa55.js +0 -1
  1405. package/cli/app/.next-cli-build/static/chunks/app/api/usage/request-logs/route-915c9a5b78eafa55.js +0 -1
  1406. package/cli/app/.next-cli-build/static/chunks/app/api/usage/stats/route-915c9a5b78eafa55.js +0 -1
  1407. package/cli/app/.next-cli-build/static/chunks/app/api/usage/stream/route-915c9a5b78eafa55.js +0 -1
  1408. package/cli/app/.next-cli-build/static/chunks/app/api/v1/api/chat/route-915c9a5b78eafa55.js +0 -1
  1409. package/cli/app/.next-cli-build/static/chunks/app/api/v1/audio/speech/route-915c9a5b78eafa55.js +0 -1
  1410. package/cli/app/.next-cli-build/static/chunks/app/api/v1/audio/transcriptions/route-915c9a5b78eafa55.js +0 -1
  1411. package/cli/app/.next-cli-build/static/chunks/app/api/v1/audio/voices/route-915c9a5b78eafa55.js +0 -1
  1412. package/cli/app/.next-cli-build/static/chunks/app/api/v1/chat/completions/route-915c9a5b78eafa55.js +0 -1
  1413. package/cli/app/.next-cli-build/static/chunks/app/api/v1/embeddings/route-915c9a5b78eafa55.js +0 -1
  1414. package/cli/app/.next-cli-build/static/chunks/app/api/v1/images/generations/route-915c9a5b78eafa55.js +0 -1
  1415. package/cli/app/.next-cli-build/static/chunks/app/api/v1/messages/count_tokens/route-915c9a5b78eafa55.js +0 -1
  1416. package/cli/app/.next-cli-build/static/chunks/app/api/v1/messages/route-915c9a5b78eafa55.js +0 -1
  1417. package/cli/app/.next-cli-build/static/chunks/app/api/v1/models/[kind]/route-915c9a5b78eafa55.js +0 -1
  1418. package/cli/app/.next-cli-build/static/chunks/app/api/v1/models/info/route-915c9a5b78eafa55.js +0 -1
  1419. package/cli/app/.next-cli-build/static/chunks/app/api/v1/models/route-915c9a5b78eafa55.js +0 -1
  1420. package/cli/app/.next-cli-build/static/chunks/app/api/v1/responses/compact/route-915c9a5b78eafa55.js +0 -1
  1421. package/cli/app/.next-cli-build/static/chunks/app/api/v1/responses/route-915c9a5b78eafa55.js +0 -1
  1422. package/cli/app/.next-cli-build/static/chunks/app/api/v1/route-915c9a5b78eafa55.js +0 -1
  1423. package/cli/app/.next-cli-build/static/chunks/app/api/v1/search/route-915c9a5b78eafa55.js +0 -1
  1424. package/cli/app/.next-cli-build/static/chunks/app/api/v1/web/fetch/route-915c9a5b78eafa55.js +0 -1
  1425. package/cli/app/.next-cli-build/static/chunks/app/api/v1beta/models/[...path]/route-915c9a5b78eafa55.js +0 -1
  1426. package/cli/app/.next-cli-build/static/chunks/app/api/v1beta/models/route-915c9a5b78eafa55.js +0 -1
  1427. package/cli/app/.next-cli-build/static/chunks/app/api/version/route-915c9a5b78eafa55.js +0 -1
  1428. package/cli/app/.next-cli-build/static/chunks/app/api/version/shutdown/route-915c9a5b78eafa55.js +0 -1
  1429. package/cli/app/.next-cli-build/static/chunks/app/api/version/update/route-915c9a5b78eafa55.js +0 -1
  1430. package/cli/app/.next-cli-build/static/chunks/app/login/page-9ea3f794879db097.js +0 -1
  1431. package/cli/app/.next-cli-build/static/chunks/app/manifest.webmanifest/route-915c9a5b78eafa55.js +0 -1
  1432. package/cli/app/.next-cli-build/static/chunks/app/page-915c9a5b78eafa55.js +0 -1
  1433. package/cli/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/app-error-915c9a5b78eafa55.js +0 -1
  1434. package/cli/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/forbidden-915c9a5b78eafa55.js +0 -1
  1435. package/cli/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/not-found-915c9a5b78eafa55.js +0 -1
  1436. package/cli/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/unauthorized-915c9a5b78eafa55.js +0 -1
  1437. package/cli/app/.next-cli-build/static/gQ1kqTy9hoyJ5eXUJs8MC/_buildManifest.js +0 -1
  1438. package/i18n/README.ja-JP.md +0 -34
  1439. package/i18n/README.ru.md +0 -34
  1440. package/i18n/README.vi.md +0 -34
  1441. package/i18n/README.zh-CN.md +0 -34
  1442. package/images/screenshots/automation.png +0 -0
  1443. package/images/screenshots/endpoint.png +0 -0
  1444. package/images/screenshots/playground.png +0 -0
  1445. package/images/screenshots/providers.png +0 -0
  1446. package/images/screenshots/usage.png +0 -0
  1447. package/images/zevairouter.png +0 -0
  1448. package/jsconfig.json +0 -12
  1449. package/next.config.mjs +0 -96
  1450. package/open-sse/config/appConstants.js +0 -230
  1451. package/open-sse/config/codexInstructions.js +0 -119
  1452. package/open-sse/config/constants.js +0 -4
  1453. package/open-sse/config/defaultThinkingSignature.js +0 -12
  1454. package/open-sse/config/errorConfig.js +0 -92
  1455. package/open-sse/config/googleTtsLanguages.js +0 -62
  1456. package/open-sse/config/kiroConstants.js +0 -360
  1457. package/open-sse/config/models.js +0 -13
  1458. package/open-sse/config/ollamaModels.js +0 -19
  1459. package/open-sse/config/providerModels.js +0 -1058
  1460. package/open-sse/config/providers.js +0 -543
  1461. package/open-sse/config/runtimeConfig.js +0 -72
  1462. package/open-sse/config/ttsModels.js +0 -129
  1463. package/open-sse/context/injectContext.js +0 -82
  1464. package/open-sse/executors/antigravity.js +0 -605
  1465. package/open-sse/executors/autoclaw.js +0 -121
  1466. package/open-sse/executors/azure.js +0 -57
  1467. package/open-sse/executors/base.js +0 -221
  1468. package/open-sse/executors/codebuddy-cn.js +0 -31
  1469. package/open-sse/executors/codex.js +0 -484
  1470. package/open-sse/executors/commandcode.js +0 -88
  1471. package/open-sse/executors/cursor.js +0 -795
  1472. package/open-sse/executors/default.js +0 -532
  1473. package/open-sse/executors/gemini-cli.js +0 -89
  1474. package/open-sse/executors/github.js +0 -379
  1475. package/open-sse/executors/grok-cli.js +0 -397
  1476. package/open-sse/executors/grok-web.js +0 -345
  1477. package/open-sse/executors/iflow.js +0 -108
  1478. package/open-sse/executors/index.js +0 -92
  1479. package/open-sse/executors/kimchi.js +0 -123
  1480. package/open-sse/executors/kiro.js +0 -508
  1481. package/open-sse/executors/mimo-free.js +0 -156
  1482. package/open-sse/executors/ollama-local.js +0 -14
  1483. package/open-sse/executors/opencode-go.js +0 -41
  1484. package/open-sse/executors/opencode.js +0 -32
  1485. package/open-sse/executors/perplexity-web.js +0 -507
  1486. package/open-sse/executors/qoder.js +0 -468
  1487. package/open-sse/executors/qwen.js +0 -129
  1488. package/open-sse/executors/vertex.js +0 -131
  1489. package/open-sse/executors/xiaomi-tokenplan.js +0 -19
  1490. package/open-sse/handlers/chatCore/nonStreamingHandler.js +0 -233
  1491. package/open-sse/handlers/chatCore/requestDetail.js +0 -112
  1492. package/open-sse/handlers/chatCore/sseToJsonHandler.js +0 -245
  1493. package/open-sse/handlers/chatCore/streamingHandler.js +0 -103
  1494. package/open-sse/handlers/chatCore.js +0 -383
  1495. package/open-sse/handlers/embeddingProviders/_base.js +0 -4
  1496. package/open-sse/handlers/embeddingProviders/gemini.js +0 -57
  1497. package/open-sse/handlers/embeddingProviders/index.js +0 -23
  1498. package/open-sse/handlers/embeddingProviders/openai.js +0 -39
  1499. package/open-sse/handlers/embeddingProviders/openaiCompatNode.js +0 -16
  1500. package/open-sse/handlers/embeddingsCore.js +0 -126
  1501. package/open-sse/handlers/fetch/index.js +0 -237
  1502. package/open-sse/handlers/imageGenerationCore.js +0 -189
  1503. package/open-sse/handlers/imageProviders/_base.js +0 -31
  1504. package/open-sse/handlers/imageProviders/blackForestLabs.js +0 -46
  1505. package/open-sse/handlers/imageProviders/cloudflareAi.js +0 -181
  1506. package/open-sse/handlers/imageProviders/codex.js +0 -201
  1507. package/open-sse/handlers/imageProviders/comfyui.js +0 -11
  1508. package/open-sse/handlers/imageProviders/falAi.js +0 -44
  1509. package/open-sse/handlers/imageProviders/gemini.js +0 -28
  1510. package/open-sse/handlers/imageProviders/huggingface.js +0 -25
  1511. package/open-sse/handlers/imageProviders/index.js +0 -40
  1512. package/open-sse/handlers/imageProviders/nanobanana.js +0 -61
  1513. package/open-sse/handlers/imageProviders/openai.js +0 -40
  1514. package/open-sse/handlers/imageProviders/runwayml.js +0 -50
  1515. package/open-sse/handlers/imageProviders/sdwebui.js +0 -20
  1516. package/open-sse/handlers/imageProviders/stabilityAi.js +0 -37
  1517. package/open-sse/handlers/responsesHandler.js +0 -111
  1518. package/open-sse/handlers/search/callers.js +0 -371
  1519. package/open-sse/handlers/search/chatSearch.js +0 -409
  1520. package/open-sse/handlers/search/index.js +0 -201
  1521. package/open-sse/handlers/search/normalizers.js +0 -223
  1522. package/open-sse/handlers/sttCore.js +0 -194
  1523. package/open-sse/handlers/ttsCore.js +0 -74
  1524. package/open-sse/handlers/ttsProviders/_base.js +0 -39
  1525. package/open-sse/handlers/ttsProviders/edgeTts.js +0 -92
  1526. package/open-sse/handlers/ttsProviders/elevenlabs.js +0 -51
  1527. package/open-sse/handlers/ttsProviders/gemini.js +0 -120
  1528. package/open-sse/handlers/ttsProviders/genericFormats.js +0 -169
  1529. package/open-sse/handlers/ttsProviders/googleTts.js +0 -57
  1530. package/open-sse/handlers/ttsProviders/index.js +0 -50
  1531. package/open-sse/handlers/ttsProviders/localDevice.js +0 -90
  1532. package/open-sse/handlers/ttsProviders/minimax.js +0 -59
  1533. package/open-sse/handlers/ttsProviders/openai.js +0 -33
  1534. package/open-sse/handlers/ttsProviders/openrouter.js +0 -73
  1535. package/open-sse/index.js +0 -82
  1536. package/open-sse/rtk/applyFilter.js +0 -15
  1537. package/open-sse/rtk/autodetect.js +0 -111
  1538. package/open-sse/rtk/caveman.js +0 -100
  1539. package/open-sse/rtk/cavemanPrompts.js +0 -78
  1540. package/open-sse/rtk/constants.js +0 -55
  1541. package/open-sse/rtk/filters/buildOutput.js +0 -127
  1542. package/open-sse/rtk/filters/dedupLog.js +0 -44
  1543. package/open-sse/rtk/filters/find.js +0 -49
  1544. package/open-sse/rtk/filters/gitDiff.js +0 -92
  1545. package/open-sse/rtk/filters/gitStatus.js +0 -117
  1546. package/open-sse/rtk/filters/grep.js +0 -48
  1547. package/open-sse/rtk/filters/ls.js +0 -79
  1548. package/open-sse/rtk/filters/readNumbered.js +0 -27
  1549. package/open-sse/rtk/filters/searchList.js +0 -52
  1550. package/open-sse/rtk/filters/smartTruncate.js +0 -15
  1551. package/open-sse/rtk/filters/tree.js +0 -32
  1552. package/open-sse/rtk/headroom.js +0 -348
  1553. package/open-sse/rtk/index.js +0 -155
  1554. package/open-sse/rtk/ponytail.js +0 -91
  1555. package/open-sse/rtk/ponytailPrompts.js +0 -44
  1556. package/open-sse/rtk/pxpipe.js +0 -104
  1557. package/open-sse/rtk/registry.js +0 -38
  1558. package/open-sse/services/accountFallback.js +0 -349
  1559. package/open-sse/services/antigravityHeaderScrub.js +0 -78
  1560. package/open-sse/services/antigravityIdentity.js +0 -115
  1561. package/open-sse/services/antigravityObfuscation.js +0 -92
  1562. package/open-sse/services/clinepassModels.js +0 -63
  1563. package/open-sse/services/combo.js +0 -189
  1564. package/open-sse/services/compact.js +0 -71
  1565. package/open-sse/services/copilotModels.js +0 -155
  1566. package/open-sse/services/kimchiModels.js +0 -176
  1567. package/open-sse/services/kiroModels.js +0 -320
  1568. package/open-sse/services/model.js +0 -281
  1569. package/open-sse/services/oauthCredentialManager.js +0 -151
  1570. package/open-sse/services/projectId.js +0 -463
  1571. package/open-sse/services/provider.js +0 -356
  1572. package/open-sse/services/qoderModels.js +0 -216
  1573. package/open-sse/services/tokenRefresh.js +0 -949
  1574. package/open-sse/services/usage.js +0 -2415
  1575. package/open-sse/transformer/responsesTransformer.js +0 -439
  1576. package/open-sse/transformer/streamToJsonConverter.js +0 -107
  1577. package/open-sse/translator/formats.js +0 -36
  1578. package/open-sse/translator/helpers/claudeHelper.js +0 -216
  1579. package/open-sse/translator/helpers/geminiHelper.js +0 -372
  1580. package/open-sse/translator/helpers/imageHelper.js +0 -34
  1581. package/open-sse/translator/helpers/maxTokensHelper.js +0 -27
  1582. package/open-sse/translator/helpers/openaiHelper.js +0 -130
  1583. package/open-sse/translator/helpers/responsesApiHelper.js +0 -139
  1584. package/open-sse/translator/helpers/toolCallHelper.js +0 -148
  1585. package/open-sse/translator/index.js +0 -251
  1586. package/open-sse/translator/request/antigravity-to-openai.js +0 -229
  1587. package/open-sse/translator/request/claude-to-openai.js +0 -232
  1588. package/open-sse/translator/request/gemini-to-openai.js +0 -147
  1589. package/open-sse/translator/request/openai-responses.js +0 -318
  1590. package/open-sse/translator/request/openai-to-claude.js +0 -401
  1591. package/open-sse/translator/request/openai-to-commandcode.js +0 -170
  1592. package/open-sse/translator/request/openai-to-cursor.js +0 -183
  1593. package/open-sse/translator/request/openai-to-gemini.js +0 -476
  1594. package/open-sse/translator/request/openai-to-kiro.js +0 -629
  1595. package/open-sse/translator/request/openai-to-kiro.old.js +0 -278
  1596. package/open-sse/translator/request/openai-to-ollama.js +0 -192
  1597. package/open-sse/translator/request/openai-to-vertex.js +0 -42
  1598. package/open-sse/translator/response/claude-to-openai.js +0 -206
  1599. package/open-sse/translator/response/commandcode-to-openai.js +0 -197
  1600. package/open-sse/translator/response/cursor-to-openai.js +0 -30
  1601. package/open-sse/translator/response/gemini-to-openai.js +0 -245
  1602. package/open-sse/translator/response/kiro-to-openai.js +0 -195
  1603. package/open-sse/translator/response/ollama-to-openai.js +0 -152
  1604. package/open-sse/translator/response/openai-responses.js +0 -590
  1605. package/open-sse/translator/response/openai-to-antigravity.js +0 -122
  1606. package/open-sse/translator/response/openai-to-claude.js +0 -266
  1607. package/open-sse/utils/bypassHandler.js +0 -298
  1608. package/open-sse/utils/claudeCloaking.js +0 -155
  1609. package/open-sse/utils/claudeHeaderCache.js +0 -70
  1610. package/open-sse/utils/clientDetector.js +0 -64
  1611. package/open-sse/utils/cursorChecksum.js +0 -152
  1612. package/open-sse/utils/cursorProtobuf.js +0 -907
  1613. package/open-sse/utils/debugLog.js +0 -14
  1614. package/open-sse/utils/error.js +0 -147
  1615. package/open-sse/utils/ollamaTransform.js +0 -85
  1616. package/open-sse/utils/proxyFetch.js +0 -369
  1617. package/open-sse/utils/reasoningContentInjector.js +0 -79
  1618. package/open-sse/utils/requestLogger.js +0 -251
  1619. package/open-sse/utils/responsesStreamHelpers.js +0 -49
  1620. package/open-sse/utils/sessionManager.js +0 -231
  1621. package/open-sse/utils/stream.js +0 -480
  1622. package/open-sse/utils/streamHandler.js +0 -262
  1623. package/open-sse/utils/streamHelpers.js +0 -122
  1624. package/open-sse/utils/thinkingSuffix.js +0 -64
  1625. package/open-sse/utils/toolDeduper.js +0 -49
  1626. package/open-sse/utils/usageTracking.js +0 -351
  1627. package/postcss.config.mjs +0 -12
  1628. package/public/favicon.svg +0 -16
  1629. package/public/file.svg +0 -1
  1630. package/public/globe.svg +0 -1
  1631. package/public/i18n/literals/ar.json +0 -195
  1632. package/public/i18n/literals/bn.json +0 -195
  1633. package/public/i18n/literals/cs.json +0 -195
  1634. package/public/i18n/literals/da.json +0 -195
  1635. package/public/i18n/literals/de.json +0 -195
  1636. package/public/i18n/literals/el.json +0 -195
  1637. package/public/i18n/literals/es.json +0 -195
  1638. package/public/i18n/literals/fi.json +0 -195
  1639. package/public/i18n/literals/fr.json +0 -195
  1640. package/public/i18n/literals/he.json +0 -195
  1641. package/public/i18n/literals/hi.json +0 -195
  1642. package/public/i18n/literals/hu.json +0 -195
  1643. package/public/i18n/literals/id.json +0 -195
  1644. package/public/i18n/literals/it.json +0 -195
  1645. package/public/i18n/literals/ja.json +0 -195
  1646. package/public/i18n/literals/ko.json +0 -195
  1647. package/public/i18n/literals/nl.json +0 -195
  1648. package/public/i18n/literals/no.json +0 -195
  1649. package/public/i18n/literals/pl.json +0 -195
  1650. package/public/i18n/literals/pt-BR.json +0 -195
  1651. package/public/i18n/literals/pt-PT.json +0 -195
  1652. package/public/i18n/literals/ro.json +0 -195
  1653. package/public/i18n/literals/ru.json +0 -195
  1654. package/public/i18n/literals/sv.json +0 -195
  1655. package/public/i18n/literals/th.json +0 -195
  1656. package/public/i18n/literals/tl.json +0 -195
  1657. package/public/i18n/literals/tr.json +0 -195
  1658. package/public/i18n/literals/uk.json +0 -195
  1659. package/public/i18n/literals/ur.json +0 -195
  1660. package/public/i18n/literals/vi.json +0 -195
  1661. package/public/i18n/literals/zh-CN.json +0 -772
  1662. package/public/i18n/literals/zh-TW.json +0 -195
  1663. package/public/icons/discord.svg +0 -4
  1664. package/public/icons/icon-192.svg +0 -16
  1665. package/public/icons/icon-512.svg +0 -16
  1666. package/public/next.svg +0 -1
  1667. package/public/providers/alicode-intl.png +0 -0
  1668. package/public/providers/alicode.png +0 -0
  1669. package/public/providers/amp.png +0 -0
  1670. package/public/providers/anthropic-m.png +0 -0
  1671. package/public/providers/anthropic.png +0 -0
  1672. package/public/providers/antigravity.png +0 -0
  1673. package/public/providers/assemblyai.png +0 -0
  1674. package/public/providers/autoclaw.png +0 -0
  1675. package/public/providers/aws-polly.png +0 -0
  1676. package/public/providers/azure.png +0 -0
  1677. package/public/providers/black-forest-labs.png +0 -0
  1678. package/public/providers/blackbox.png +0 -0
  1679. package/public/providers/brave-search.png +0 -0
  1680. package/public/providers/byteplus.png +0 -0
  1681. package/public/providers/cartesia.png +0 -0
  1682. package/public/providers/cerebras.png +0 -0
  1683. package/public/providers/chutes.png +0 -0
  1684. package/public/providers/claude.png +0 -0
  1685. package/public/providers/cline.png +0 -0
  1686. package/public/providers/clinepass.png +0 -0
  1687. package/public/providers/cloudflare-ai.png +0 -0
  1688. package/public/providers/codebuddy-cn.png +0 -0
  1689. package/public/providers/codebuddy.png +0 -0
  1690. package/public/providers/codebuddy.svg +0 -37
  1691. package/public/providers/codex.png +0 -0
  1692. package/public/providers/cohere.png +0 -0
  1693. package/public/providers/comfyui.png +0 -0
  1694. package/public/providers/commandcode.png +0 -0
  1695. package/public/providers/continue.png +0 -0
  1696. package/public/providers/copilot.png +0 -0
  1697. package/public/providers/coqui.png +0 -0
  1698. package/public/providers/cursor.png +0 -0
  1699. package/public/providers/deepgram.png +0 -0
  1700. package/public/providers/deepseek-tui.png +0 -0
  1701. package/public/providers/deepseek.png +0 -0
  1702. package/public/providers/droid.png +0 -0
  1703. package/public/providers/edge-tts.png +0 -0
  1704. package/public/providers/elevenlabs.png +0 -0
  1705. package/public/providers/exa.png +0 -0
  1706. package/public/providers/fal-ai.png +0 -0
  1707. package/public/providers/firecrawl.png +0 -0
  1708. package/public/providers/fireworks.png +0 -0
  1709. package/public/providers/gemini-cli.png +0 -0
  1710. package/public/providers/gemini.png +0 -0
  1711. package/public/providers/github.png +0 -0
  1712. package/public/providers/glm-cn.png +0 -0
  1713. package/public/providers/glm.png +0 -0
  1714. package/public/providers/google-pse.png +0 -0
  1715. package/public/providers/google-tts.png +0 -0
  1716. package/public/providers/grok-cli.png +0 -0
  1717. package/public/providers/grok-web.png +0 -0
  1718. package/public/providers/groq.png +0 -0
  1719. package/public/providers/hermes.png +0 -0
  1720. package/public/providers/huggingface.png +0 -0
  1721. package/public/providers/hyperbolic.png +0 -0
  1722. package/public/providers/iflow.png +0 -0
  1723. package/public/providers/inworld.png +0 -0
  1724. package/public/providers/jcode.png +0 -0
  1725. package/public/providers/jina-ai.png +0 -0
  1726. package/public/providers/jina-reader.png +0 -0
  1727. package/public/providers/kilocode.png +0 -0
  1728. package/public/providers/kimchi.png +0 -0
  1729. package/public/providers/kimchi.svg +0 -4
  1730. package/public/providers/kimi-coding.png +0 -0
  1731. package/public/providers/kimi.png +0 -0
  1732. package/public/providers/kiro.png +0 -0
  1733. package/public/providers/linkup.png +0 -0
  1734. package/public/providers/local-device.png +0 -0
  1735. package/public/providers/mimo-free.png +0 -0
  1736. package/public/providers/minimax-cn.png +0 -0
  1737. package/public/providers/minimax.png +0 -0
  1738. package/public/providers/mistral.png +0 -0
  1739. package/public/providers/nanobanana.png +0 -0
  1740. package/public/providers/nebius.png +0 -0
  1741. package/public/providers/nvidia.png +0 -0
  1742. package/public/providers/oai-cc.png +0 -0
  1743. package/public/providers/oai-r.png +0 -0
  1744. package/public/providers/ollama-local.png +0 -0
  1745. package/public/providers/ollama.png +0 -0
  1746. package/public/providers/openai.png +0 -0
  1747. package/public/providers/openclaw.png +0 -0
  1748. package/public/providers/opencode-go.png +0 -0
  1749. package/public/providers/opencode.png +0 -0
  1750. package/public/providers/openrouter.png +0 -0
  1751. package/public/providers/perplexity-agent.png +0 -0
  1752. package/public/providers/perplexity-web.png +0 -0
  1753. package/public/providers/perplexity.png +0 -0
  1754. package/public/providers/playht.png +0 -0
  1755. package/public/providers/qoder.png +0 -0
  1756. package/public/providers/qwen.png +0 -0
  1757. package/public/providers/recraft.png +0 -0
  1758. package/public/providers/roo.png +0 -0
  1759. package/public/providers/runwayml.png +0 -0
  1760. package/public/providers/sdwebui.png +0 -0
  1761. package/public/providers/searchapi.png +0 -0
  1762. package/public/providers/searxng.png +0 -0
  1763. package/public/providers/serper.png +0 -0
  1764. package/public/providers/siliconflow.png +0 -0
  1765. package/public/providers/stability-ai.png +0 -0
  1766. package/public/providers/tavily.png +0 -0
  1767. package/public/providers/together.png +0 -0
  1768. package/public/providers/topaz.png +0 -0
  1769. package/public/providers/tortoise.png +0 -0
  1770. package/public/providers/vertex-partner.png +0 -0
  1771. package/public/providers/vertex.png +0 -0
  1772. package/public/providers/volcengine-ark.png +0 -0
  1773. package/public/providers/voyage-ai.png +0 -0
  1774. package/public/providers/xai.png +0 -0
  1775. package/public/providers/xiaomi-mimo.png +0 -0
  1776. package/public/providers/xiaomi-tokenplan.png +0 -0
  1777. package/public/providers/youcom.png +0 -0
  1778. package/public/sw.js +0 -22
  1779. package/public/vercel.svg +0 -1
  1780. package/public/window.svg +0 -1
  1781. package/scripts/translate-readme.js +0 -201
  1782. package/src/app/(dashboard)/dashboard/automation/page.js +0 -774
  1783. package/src/app/(dashboard)/dashboard/basic-chat/BasicChatPageClient.js +0 -1592
  1784. package/src/app/(dashboard)/dashboard/basic-chat/page.js +0 -5
  1785. package/src/app/(dashboard)/dashboard/cli-tools/CLIToolsPageClient.js +0 -77
  1786. package/src/app/(dashboard)/dashboard/cli-tools/[toolId]/ToolDetailClient.js +0 -173
  1787. package/src/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js +0 -11
  1788. package/src/app/(dashboard)/dashboard/cli-tools/components/AntigravityToolCard.js +0 -487
  1789. package/src/app/(dashboard)/dashboard/cli-tools/components/ApiKeySelect.js +0 -14
  1790. package/src/app/(dashboard)/dashboard/cli-tools/components/BaseUrlSelect.js +0 -176
  1791. package/src/app/(dashboard)/dashboard/cli-tools/components/ClaudeToolCard.js +0 -396
  1792. package/src/app/(dashboard)/dashboard/cli-tools/components/ClineToolCard.js +0 -307
  1793. package/src/app/(dashboard)/dashboard/cli-tools/components/CodexToolCard.js +0 -466
  1794. package/src/app/(dashboard)/dashboard/cli-tools/components/CopilotToolCard.js +0 -330
  1795. package/src/app/(dashboard)/dashboard/cli-tools/components/CoworkToolCard.js +0 -646
  1796. package/src/app/(dashboard)/dashboard/cli-tools/components/DeepSeekTuiToolCard.js +0 -344
  1797. package/src/app/(dashboard)/dashboard/cli-tools/components/DefaultToolCard.js +0 -271
  1798. package/src/app/(dashboard)/dashboard/cli-tools/components/DroidToolCard.js +0 -421
  1799. package/src/app/(dashboard)/dashboard/cli-tools/components/EndpointPresetControl.js +0 -129
  1800. package/src/app/(dashboard)/dashboard/cli-tools/components/HermesToolCard.js +0 -323
  1801. package/src/app/(dashboard)/dashboard/cli-tools/components/JcodeToolCard.js +0 -386
  1802. package/src/app/(dashboard)/dashboard/cli-tools/components/KiloToolCard.js +0 -280
  1803. package/src/app/(dashboard)/dashboard/cli-tools/components/MitmLinkCard.js +0 -40
  1804. package/src/app/(dashboard)/dashboard/cli-tools/components/MitmServerCard.js +0 -329
  1805. package/src/app/(dashboard)/dashboard/cli-tools/components/MitmToolCard.js +0 -320
  1806. package/src/app/(dashboard)/dashboard/cli-tools/components/OpenClawToolCard.js +0 -394
  1807. package/src/app/(dashboard)/dashboard/cli-tools/components/OpenCodeToolCard.js +0 -512
  1808. package/src/app/(dashboard)/dashboard/cli-tools/components/ToolSummaryCard.js +0 -40
  1809. package/src/app/(dashboard)/dashboard/cli-tools/components/cliEndpointMatch.js +0 -13
  1810. package/src/app/(dashboard)/dashboard/cli-tools/components/index.js +0 -19
  1811. package/src/app/(dashboard)/dashboard/cli-tools/page.js +0 -7
  1812. package/src/app/(dashboard)/dashboard/combos/page.js +0 -615
  1813. package/src/app/(dashboard)/dashboard/console-log/ConsoleLogClient.js +0 -118
  1814. package/src/app/(dashboard)/dashboard/console-log/page.js +0 -8
  1815. package/src/app/(dashboard)/dashboard/context/page.js +0 -276
  1816. package/src/app/(dashboard)/dashboard/endpoint/EndpointPageClient.js +0 -1594
  1817. package/src/app/(dashboard)/dashboard/endpoint/endpointConstants.js +0 -32
  1818. package/src/app/(dashboard)/dashboard/endpoint/page.js +0 -7
  1819. package/src/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js +0 -1913
  1820. package/src/app/(dashboard)/dashboard/media-providers/[kind]/page.js +0 -289
  1821. package/src/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js +0 -413
  1822. package/src/app/(dashboard)/dashboard/media-providers/web/page.js +0 -209
  1823. package/src/app/(dashboard)/dashboard/mitm/MitmPageClient.js +0 -121
  1824. package/src/app/(dashboard)/dashboard/mitm/page.js +0 -5
  1825. package/src/app/(dashboard)/dashboard/page.js +0 -7
  1826. package/src/app/(dashboard)/dashboard/playground/page.js +0 -5
  1827. package/src/app/(dashboard)/dashboard/profile/page.js +0 -1284
  1828. package/src/app/(dashboard)/dashboard/providers/[id]/AddApiKeyModal.js +0 -389
  1829. package/src/app/(dashboard)/dashboard/providers/[id]/AddCustomModelModal.js +0 -126
  1830. package/src/app/(dashboard)/dashboard/providers/[id]/CompatibleModelsSection.js +0 -250
  1831. package/src/app/(dashboard)/dashboard/providers/[id]/ConnectionRow.js +0 -318
  1832. package/src/app/(dashboard)/dashboard/providers/[id]/CooldownTimer.js +0 -42
  1833. package/src/app/(dashboard)/dashboard/providers/[id]/EditCompatibleNodeModal.js +0 -162
  1834. package/src/app/(dashboard)/dashboard/providers/[id]/ModelRow.js +0 -99
  1835. package/src/app/(dashboard)/dashboard/providers/[id]/PassthroughModelsSection.js +0 -183
  1836. package/src/app/(dashboard)/dashboard/providers/[id]/page.js +0 -2171
  1837. package/src/app/(dashboard)/dashboard/providers/[id]/page.new.js +0 -1726
  1838. package/src/app/(dashboard)/dashboard/providers/components/ConnectionsCard.js +0 -499
  1839. package/src/app/(dashboard)/dashboard/providers/components/ModelAvailabilityBadge.js +0 -186
  1840. package/src/app/(dashboard)/dashboard/providers/components/ModelsCard.js +0 -295
  1841. package/src/app/(dashboard)/dashboard/providers/new/page.js +0 -220
  1842. package/src/app/(dashboard)/dashboard/providers/page.js +0 -1518
  1843. package/src/app/(dashboard)/dashboard/proxy-pools/page.js +0 -1095
  1844. package/src/app/(dashboard)/dashboard/pxpipe/PxpipeClient.js +0 -284
  1845. package/src/app/(dashboard)/dashboard/pxpipe/page.js +0 -5
  1846. package/src/app/(dashboard)/dashboard/quota/page.js +0 -11
  1847. package/src/app/(dashboard)/dashboard/terminal/TerminalPageClient.js +0 -735
  1848. package/src/app/(dashboard)/dashboard/terminal/page.js +0 -7
  1849. package/src/app/(dashboard)/dashboard/token-saver/TokenSaverClient.js +0 -1018
  1850. package/src/app/(dashboard)/dashboard/token-saver/page.js +0 -5
  1851. package/src/app/(dashboard)/dashboard/translator/page.js +0 -303
  1852. package/src/app/(dashboard)/dashboard/usage/components/OverviewCards.js +0 -87
  1853. package/src/app/(dashboard)/dashboard/usage/components/ProviderLimits/ProviderLimitCard.js +0 -183
  1854. package/src/app/(dashboard)/dashboard/usage/components/ProviderLimits/QuotaProgressBar.js +0 -127
  1855. package/src/app/(dashboard)/dashboard/usage/components/ProviderLimits/QuotaTable.js +0 -269
  1856. package/src/app/(dashboard)/dashboard/usage/components/ProviderLimits/index.js +0 -1569
  1857. package/src/app/(dashboard)/dashboard/usage/components/ProviderLimits/utils.js +0 -320
  1858. package/src/app/(dashboard)/dashboard/usage/components/ProviderTopology.js +0 -468
  1859. package/src/app/(dashboard)/dashboard/usage/components/RequestDetailsTab.js +0 -435
  1860. package/src/app/(dashboard)/dashboard/usage/components/UsageChart.js +0 -155
  1861. package/src/app/(dashboard)/dashboard/usage/components/UsageTable.js +0 -253
  1862. package/src/app/(dashboard)/dashboard/usage/page.js +0 -75
  1863. package/src/app/(dashboard)/layout.js +0 -6
  1864. package/src/app/api/auth/login/route.js +0 -76
  1865. package/src/app/api/auth/logout/route.js +0 -14
  1866. package/src/app/api/auth/oidc/callback/route.js +0 -87
  1867. package/src/app/api/auth/oidc/start/route.js +0 -52
  1868. package/src/app/api/auth/oidc/test/route.js +0 -86
  1869. package/src/app/api/auth/status/route.js +0 -45
  1870. package/src/app/api/cache/stats/route.js +0 -13
  1871. package/src/app/api/changelog/route.js +0 -48
  1872. package/src/app/api/cli-tools/all-statuses/route.js +0 -46
  1873. package/src/app/api/cli-tools/antigravity-mitm/alias/route.js +0 -53
  1874. package/src/app/api/cli-tools/antigravity-mitm/route.js +0 -202
  1875. package/src/app/api/cli-tools/claude-settings/route.js +0 -203
  1876. package/src/app/api/cli-tools/cline-settings/route.js +0 -133
  1877. package/src/app/api/cli-tools/codex-gateway/accounts/route.js +0 -16
  1878. package/src/app/api/cli-tools/codex-settings/route.js +0 -271
  1879. package/src/app/api/cli-tools/copilot-settings/route.js +0 -153
  1880. package/src/app/api/cli-tools/cowork-mcp-registry/route.js +0 -77
  1881. package/src/app/api/cli-tools/cowork-mcp-tools/route.js +0 -95
  1882. package/src/app/api/cli-tools/cowork-settings/route.js +0 -412
  1883. package/src/app/api/cli-tools/deepseek-tui-settings/route.js +0 -164
  1884. package/src/app/api/cli-tools/droid-settings/route.js +0 -213
  1885. package/src/app/api/cli-tools/hermes-settings/route.js +0 -175
  1886. package/src/app/api/cli-tools/jcode-settings/route.js +0 -216
  1887. package/src/app/api/cli-tools/kilo-settings/route.js +0 -131
  1888. package/src/app/api/cli-tools/openclaw-settings/route.js +0 -292
  1889. package/src/app/api/cli-tools/opencode-settings/route.js +0 -259
  1890. package/src/app/api/combos/[id]/route.js +0 -81
  1891. package/src/app/api/combos/route.js +0 -48
  1892. package/src/app/api/context/[id]/route.js +0 -35
  1893. package/src/app/api/context/bulk/route.js +0 -25
  1894. package/src/app/api/context/route.js +0 -33
  1895. package/src/app/api/dashboard/chat/completions/route.js +0 -74
  1896. package/src/app/api/headroom/extras/route.js +0 -46
  1897. package/src/app/api/headroom/proxy/[...path]/route.js +0 -104
  1898. package/src/app/api/headroom/restart/route.js +0 -35
  1899. package/src/app/api/headroom/start/route.js +0 -35
  1900. package/src/app/api/headroom/status/route.js +0 -18
  1901. package/src/app/api/headroom/stop/route.js +0 -14
  1902. package/src/app/api/health/ready/route.js +0 -21
  1903. package/src/app/api/health/route.js +0 -15
  1904. package/src/app/api/init/route.js +0 -12
  1905. package/src/app/api/keys/[id]/rotate/route.js +0 -14
  1906. package/src/app/api/keys/[id]/route.js +0 -69
  1907. package/src/app/api/keys/route.js +0 -42
  1908. package/src/app/api/locale/route.js +0 -30
  1909. package/src/app/api/mcp/[plugin]/message/route.js +0 -21
  1910. package/src/app/api/mcp/[plugin]/sse/route.js +0 -37
  1911. package/src/app/api/media-providers/tts/deepgram/voices/route.js +0 -65
  1912. package/src/app/api/media-providers/tts/elevenlabs/voices/route.js +0 -71
  1913. package/src/app/api/media-providers/tts/inworld/voices/route.js +0 -61
  1914. package/src/app/api/media-providers/tts/minimax/voices/route.js +0 -113
  1915. package/src/app/api/media-providers/tts/voices/route.js +0 -99
  1916. package/src/app/api/metrics/route.js +0 -32
  1917. package/src/app/api/models/alias/route.js +0 -53
  1918. package/src/app/api/models/availability/route.js +0 -103
  1919. package/src/app/api/models/custom/route.js +0 -48
  1920. package/src/app/api/models/disabled/route.js +0 -50
  1921. package/src/app/api/models/route.js +0 -68
  1922. package/src/app/api/models/test/ping.js +0 -191
  1923. package/src/app/api/models/test/route.js +0 -14
  1924. package/src/app/api/oauth/[provider]/[action]/route.js +0 -340
  1925. package/src/app/api/oauth/antigravity/bulk-import/[jobId]/cancel/route.js +0 -19
  1926. package/src/app/api/oauth/antigravity/bulk-import/[jobId]/manual/[workerId]/route.js +0 -30
  1927. package/src/app/api/oauth/antigravity/bulk-import/[jobId]/route.js +0 -23
  1928. package/src/app/api/oauth/antigravity/bulk-import/latest/route.js +0 -24
  1929. package/src/app/api/oauth/antigravity/bulk-import/route.js +0 -51
  1930. package/src/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/cancel/route.js +0 -19
  1931. package/src/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/manual/[workerId]/route.js +0 -30
  1932. package/src/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/route.js +0 -25
  1933. package/src/app/api/oauth/cloudflare-ai/bulk-import/latest/route.js +0 -27
  1934. package/src/app/api/oauth/cloudflare-ai/bulk-import/route.js +0 -56
  1935. package/src/app/api/oauth/codebuddy/bulk-import/[jobId]/cancel/route.js +0 -19
  1936. package/src/app/api/oauth/codebuddy/bulk-import/[jobId]/manual/[workerId]/route.js +0 -30
  1937. package/src/app/api/oauth/codebuddy/bulk-import/[jobId]/route.js +0 -23
  1938. package/src/app/api/oauth/codebuddy/bulk-import/latest/route.js +0 -25
  1939. package/src/app/api/oauth/codebuddy/bulk-import/route.js +0 -51
  1940. package/src/app/api/oauth/codebuddy/bulk-token/route.js +0 -118
  1941. package/src/app/api/oauth/codebuddy/quota-cookie/route.js +0 -133
  1942. package/src/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/cancel/route.js +0 -19
  1943. package/src/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/manual/[workerId]/route.js +0 -30
  1944. package/src/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/route.js +0 -26
  1945. package/src/app/api/oauth/codebuddy-cn/bulk-import/latest/route.js +0 -27
  1946. package/src/app/api/oauth/codebuddy-cn/bulk-import/route.js +0 -61
  1947. package/src/app/api/oauth/codebuddy-cn/bulk-token/route.js +0 -119
  1948. package/src/app/api/oauth/codebuddy-cn/quota-cookie/route.js +0 -28
  1949. package/src/app/api/oauth/codex/import-token/route.js +0 -96
  1950. package/src/app/api/oauth/cursor/auto-import/route.js +0 -257
  1951. package/src/app/api/oauth/cursor/import/route.js +0 -100
  1952. package/src/app/api/oauth/gitlab/pat/route.js +0 -62
  1953. package/src/app/api/oauth/iflow/cookie/route.js +0 -137
  1954. package/src/app/api/oauth/kiro/auto-import/route.js +0 -85
  1955. package/src/app/api/oauth/kiro/bulk-import/[jobId]/cancel/route.js +0 -19
  1956. package/src/app/api/oauth/kiro/bulk-import/[jobId]/manual/[workerId]/route.js +0 -30
  1957. package/src/app/api/oauth/kiro/bulk-import/[jobId]/route.js +0 -23
  1958. package/src/app/api/oauth/kiro/bulk-import/latest/route.js +0 -25
  1959. package/src/app/api/oauth/kiro/bulk-import/route.js +0 -51
  1960. package/src/app/api/oauth/kiro/import/route.js +0 -110
  1961. package/src/app/api/oauth/kiro/social-authorize/route.js +0 -27
  1962. package/src/app/api/oauth/kiro/social-exchange/route.js +0 -41
  1963. package/src/app/api/oauth/qoder/bulk-import/[jobId]/cancel/route.js +0 -19
  1964. package/src/app/api/oauth/qoder/bulk-import/[jobId]/manual/[workerId]/route.js +0 -30
  1965. package/src/app/api/oauth/qoder/bulk-import/[jobId]/route.js +0 -23
  1966. package/src/app/api/oauth/qoder/bulk-import/latest/route.js +0 -24
  1967. package/src/app/api/oauth/qoder/bulk-import/route.js +0 -49
  1968. package/src/app/api/pricing/route.js +0 -134
  1969. package/src/app/api/provider-nodes/[id]/route.js +0 -101
  1970. package/src/app/api/provider-nodes/route.js +0 -104
  1971. package/src/app/api/provider-nodes/validate/route.js +0 -201
  1972. package/src/app/api/providers/[id]/models/route.js +0 -605
  1973. package/src/app/api/providers/[id]/route.js +0 -189
  1974. package/src/app/api/providers/[id]/test/route.js +0 -23
  1975. package/src/app/api/providers/[id]/test/testUtils.js +0 -811
  1976. package/src/app/api/providers/[id]/test-models/route.js +0 -66
  1977. package/src/app/api/providers/bulk-delete/route.js +0 -60
  1978. package/src/app/api/providers/client/route.js +0 -134
  1979. package/src/app/api/providers/kilo/free-models/route.js +0 -55
  1980. package/src/app/api/providers/route.js +0 -207
  1981. package/src/app/api/providers/suggested-models/filters.js +0 -20
  1982. package/src/app/api/providers/suggested-models/route.js +0 -33
  1983. package/src/app/api/providers/test-batch/route.js +0 -131
  1984. package/src/app/api/providers/validate/route.js +0 -637
  1985. package/src/app/api/proxy-pools/[id]/route.js +0 -123
  1986. package/src/app/api/proxy-pools/[id]/test/route.js +0 -70
  1987. package/src/app/api/proxy-pools/cloudflare-deploy/route.js +0 -145
  1988. package/src/app/api/proxy-pools/deno-deploy/route.js +0 -175
  1989. package/src/app/api/proxy-pools/route.js +0 -93
  1990. package/src/app/api/proxy-pools/vercel-deploy/route.js +0 -142
  1991. package/src/app/api/pxpipe/health/route.js +0 -16
  1992. package/src/app/api/pxpipe/install/route.js +0 -20
  1993. package/src/app/api/pxpipe/logs/route.js +0 -21
  1994. package/src/app/api/pxpipe/restart/route.js +0 -16
  1995. package/src/app/api/pxpipe/start/route.js +0 -26
  1996. package/src/app/api/pxpipe/stats/route.js +0 -17
  1997. package/src/app/api/pxpipe/status/route.js +0 -21
  1998. package/src/app/api/pxpipe/stop/route.js +0 -16
  1999. package/src/app/api/settings/database/route.js +0 -36
  2000. package/src/app/api/settings/proxy-test/route.js +0 -23
  2001. package/src/app/api/settings/require-login/route.js +0 -15
  2002. package/src/app/api/settings/route.js +0 -115
  2003. package/src/app/api/shutdown/route.js +0 -24
  2004. package/src/app/api/tags/route.js +0 -18
  2005. package/src/app/api/terminal/auth/setup/route.js +0 -72
  2006. package/src/app/api/terminal/auth/status/route.js +0 -27
  2007. package/src/app/api/terminal/auth/unlock/route.js +0 -69
  2008. package/src/app/api/terminal/session/[id]/input/route.js +0 -32
  2009. package/src/app/api/terminal/session/[id]/resize/route.js +0 -18
  2010. package/src/app/api/terminal/session/[id]/route.js +0 -37
  2011. package/src/app/api/terminal/session/[id]/stream/route.js +0 -100
  2012. package/src/app/api/terminal/session/route.js +0 -30
  2013. package/src/app/api/translator/console-logs/route.js +0 -24
  2014. package/src/app/api/translator/console-logs/stream/route.js +0 -79
  2015. package/src/app/api/translator/load/route.js +0 -45
  2016. package/src/app/api/translator/save/route.js +0 -44
  2017. package/src/app/api/translator/send/route.js +0 -94
  2018. package/src/app/api/translator/translate/route.js +0 -90
  2019. package/src/app/api/tunnel/disable/route.js +0 -12
  2020. package/src/app/api/tunnel/enable/route.js +0 -16
  2021. package/src/app/api/tunnel/status/route.js +0 -13
  2022. package/src/app/api/tunnel/tailscale-check/route.js +0 -50
  2023. package/src/app/api/tunnel/tailscale-disable/route.js +0 -12
  2024. package/src/app/api/tunnel/tailscale-enable/route.js +0 -12
  2025. package/src/app/api/tunnel/tailscale-install/route.js +0 -72
  2026. package/src/app/api/usage/[connectionId]/route.js +0 -40
  2027. package/src/app/api/usage/aggregate/route.js +0 -120
  2028. package/src/app/api/usage/chart/route.js +0 -21
  2029. package/src/app/api/usage/history/route.js +0 -12
  2030. package/src/app/api/usage/logs/route.js +0 -12
  2031. package/src/app/api/usage/providers/route.js +0 -42
  2032. package/src/app/api/usage/request-details/route.js +0 -57
  2033. package/src/app/api/usage/request-logs/route.js +0 -13
  2034. package/src/app/api/usage/stats/route.js +0 -23
  2035. package/src/app/api/usage/stream/route.js +0 -79
  2036. package/src/app/api/v1/api/chat/route.js +0 -37
  2037. package/src/app/api/v1/audio/speech/route.js +0 -16
  2038. package/src/app/api/v1/audio/transcriptions/route.js +0 -19
  2039. package/src/app/api/v1/audio/voices/route.js +0 -68
  2040. package/src/app/api/v1/chat/completions/route.js +0 -35
  2041. package/src/app/api/v1/embeddings/route.js +0 -21
  2042. package/src/app/api/v1/images/generations/route.js +0 -16
  2043. package/src/app/api/v1/messages/count_tokens/route.js +0 -59
  2044. package/src/app/api/v1/messages/route.js +0 -36
  2045. package/src/app/api/v1/models/[kind]/route.js +0 -55
  2046. package/src/app/api/v1/models/info/route.js +0 -110
  2047. package/src/app/api/v1/models/route.js +0 -497
  2048. package/src/app/api/v1/responses/compact/route.js +0 -37
  2049. package/src/app/api/v1/responses/route.js +0 -30
  2050. package/src/app/api/v1/route.js +0 -1
  2051. package/src/app/api/v1/search/route.js +0 -21
  2052. package/src/app/api/v1/web/fetch/route.js +0 -21
  2053. package/src/app/api/v1beta/models/[...path]/route.js +0 -368
  2054. package/src/app/api/v1beta/models/route.js +0 -44
  2055. package/src/app/api/version/route.js +0 -198
  2056. package/src/app/api/version/shutdown/route.js +0 -15
  2057. package/src/app/api/version/update/route.js +0 -21
  2058. package/src/app/callback/page.js +0 -149
  2059. package/src/app/dashboard/settings/pricing/page.js +0 -174
  2060. package/src/app/globals.css +0 -659
  2061. package/src/app/landing/components/AnimatedBackground.js +0 -57
  2062. package/src/app/landing/components/Features.js +0 -133
  2063. package/src/app/landing/components/FlowAnimation.js +0 -175
  2064. package/src/app/landing/components/Footer.js +0 -61
  2065. package/src/app/landing/components/GetStarted.js +0 -97
  2066. package/src/app/landing/components/HeroSection.js +0 -72
  2067. package/src/app/landing/components/HowItWorks.js +0 -66
  2068. package/src/app/landing/components/Navigation.js +0 -77
  2069. package/src/app/landing/page.js +0 -106
  2070. package/src/app/layout.js +0 -48
  2071. package/src/app/login/page.js +0 -197
  2072. package/src/app/manifest.js +0 -30
  2073. package/src/app/page.js +0 -5
  2074. package/src/dashboardGuard.js +0 -288
  2075. package/src/i18n/RuntimeI18nProvider.js +0 -27
  2076. package/src/i18n/config.js +0 -146
  2077. package/src/i18n/runtime.js +0 -162
  2078. package/src/lib/alerter.js +0 -122
  2079. package/src/lib/appUpdater.js +0 -204
  2080. package/src/lib/auth/dashboardSession.js +0 -68
  2081. package/src/lib/auth/loginLimiter.js +0 -52
  2082. package/src/lib/auth/oidc.js +0 -303
  2083. package/src/lib/auth/terminalSession.js +0 -88
  2084. package/src/lib/autoclaw/constants.js +0 -63
  2085. package/src/lib/consoleLogBuffer.js +0 -79
  2086. package/src/lib/dataDir.js +0 -29
  2087. package/src/lib/db/adapters/betterSqliteAdapter.js +0 -55
  2088. package/src/lib/db/adapters/bunSqliteAdapter.js +0 -63
  2089. package/src/lib/db/adapters/nodeSqliteAdapter.js +0 -84
  2090. package/src/lib/db/adapters/sqljsAdapter.js +0 -150
  2091. package/src/lib/db/backup.js +0 -36
  2092. package/src/lib/db/dataDirMigration.js +0 -52
  2093. package/src/lib/db/driver.js +0 -111
  2094. package/src/lib/db/helpers/jsonCol.js +0 -9
  2095. package/src/lib/db/helpers/kvStore.js +0 -39
  2096. package/src/lib/db/helpers/metaStore.js +0 -22
  2097. package/src/lib/db/index.js +0 -218
  2098. package/src/lib/db/maintenance.js +0 -72
  2099. package/src/lib/db/migrate.js +0 -295
  2100. package/src/lib/db/migrations/001-initial.js +0 -17
  2101. package/src/lib/db/migrations/index.js +0 -10
  2102. package/src/lib/db/paths.js +0 -21
  2103. package/src/lib/db/repos/aliasRepo.js +0 -62
  2104. package/src/lib/db/repos/apiKeysRepo.js +0 -193
  2105. package/src/lib/db/repos/combosRepo.js +0 -73
  2106. package/src/lib/db/repos/connectionsRepo.js +0 -247
  2107. package/src/lib/db/repos/contextFilesRepo.js +0 -124
  2108. package/src/lib/db/repos/disabledModelsRepo.js +0 -56
  2109. package/src/lib/db/repos/nodesRepo.js +0 -95
  2110. package/src/lib/db/repos/pricingRepo.js +0 -108
  2111. package/src/lib/db/repos/proxyPoolsRepo.js +0 -103
  2112. package/src/lib/db/repos/quotaCacheRepo.js +0 -80
  2113. package/src/lib/db/repos/requestDetailsRepo.js +0 -249
  2114. package/src/lib/db/repos/settingsRepo.js +0 -118
  2115. package/src/lib/db/repos/usageRepo.js +0 -796
  2116. package/src/lib/db/schema.js +0 -193
  2117. package/src/lib/db/version.js +0 -21
  2118. package/src/lib/disabledModelsDb.js +0 -4
  2119. package/src/lib/headroom/detect.js +0 -192
  2120. package/src/lib/headroom/process.js +0 -260
  2121. package/src/lib/localDb.js +0 -26
  2122. package/src/lib/mcp/stdioSseBridge.js +0 -198
  2123. package/src/lib/mitmAliasCache.js +0 -46
  2124. package/src/lib/network/connectionProxy.js +0 -187
  2125. package/src/lib/network/initOutboundProxy.js +0 -25
  2126. package/src/lib/network/outboundProxy.js +0 -82
  2127. package/src/lib/network/proxyTest.js +0 -91
  2128. package/src/lib/oauth/constants/oauth.js +0 -337
  2129. package/src/lib/oauth/constants/xai.js +0 -61
  2130. package/src/lib/oauth/providers.js +0 -1821
  2131. package/src/lib/oauth/services/antigravity.js +0 -321
  2132. package/src/lib/oauth/services/antigravityBulkImportManager.js +0 -364
  2133. package/src/lib/oauth/services/autoclawTokenMonitor.js +0 -145
  2134. package/src/lib/oauth/services/bulkImportBrowserEngine.js +0 -646
  2135. package/src/lib/oauth/services/claude.js +0 -136
  2136. package/src/lib/oauth/services/cloudflareAiBulkImportManager.js +0 -503
  2137. package/src/lib/oauth/services/codebuddyAutomation.js +0 -6
  2138. package/src/lib/oauth/services/codebuddyBulkImportManager.js +0 -1033
  2139. package/src/lib/oauth/services/codebuddyCnBulkImportManager.js +0 -1878
  2140. package/src/lib/oauth/services/codebuddyCnPhoneAutomation.js +0 -1234
  2141. package/src/lib/oauth/services/codex.js +0 -144
  2142. package/src/lib/oauth/services/cursor.js +0 -179
  2143. package/src/lib/oauth/services/displayEnv.js +0 -134
  2144. package/src/lib/oauth/services/fiveSimClient.js +0 -370
  2145. package/src/lib/oauth/services/gemini.js +0 -240
  2146. package/src/lib/oauth/services/github.js +0 -225
  2147. package/src/lib/oauth/services/googleAutomation.js +0 -9
  2148. package/src/lib/oauth/services/iflow.js +0 -202
  2149. package/src/lib/oauth/services/index.js +0 -17
  2150. package/src/lib/oauth/services/kiro.js +0 -334
  2151. package/src/lib/oauth/services/kiroBulkImportManager.js +0 -1389
  2152. package/src/lib/oauth/services/kiroConnections.js +0 -93
  2153. package/src/lib/oauth/services/kiroGoogleAutomation.js +0 -2587
  2154. package/src/lib/oauth/services/oauth.js +0 -157
  2155. package/src/lib/oauth/services/openai.js +0 -123
  2156. package/src/lib/oauth/services/proxyUtils.js +0 -26
  2157. package/src/lib/oauth/services/qoder.js +0 -233
  2158. package/src/lib/oauth/services/qoderBulkImportManager.js +0 -340
  2159. package/src/lib/oauth/services/qwen.js +0 -170
  2160. package/src/lib/oauth/services/socksHttpBridge.js +0 -165
  2161. package/src/lib/oauth/services/tempmailClient.js +0 -288
  2162. package/src/lib/oauth/services/xai.js +0 -238
  2163. package/src/lib/oauth/utils/banner.js +0 -63
  2164. package/src/lib/oauth/utils/pkce.js +0 -39
  2165. package/src/lib/oauth/utils/server.js +0 -415
  2166. package/src/lib/oauth/utils/ui.js +0 -48
  2167. package/src/lib/providerNormalization.js +0 -45
  2168. package/src/lib/pxpipe/events.js +0 -125
  2169. package/src/lib/pxpipe/install.js +0 -123
  2170. package/src/lib/pxpipe/loader.js +0 -70
  2171. package/src/lib/pxpipe/service.js +0 -49
  2172. package/src/lib/qoder/constants.js +0 -64
  2173. package/src/lib/qoder/cosy.js +0 -175
  2174. package/src/lib/qoder/encoding.js +0 -55
  2175. package/src/lib/requestDetailsDb.js +0 -4
  2176. package/src/lib/responseCache.js +0 -159
  2177. package/src/lib/safeFetch.js +0 -70
  2178. package/src/lib/systemSpecs.js +0 -167
  2179. package/src/lib/terminal/ptyBridge.py +0 -163
  2180. package/src/lib/terminal/sessionManager.js +0 -434
  2181. package/src/lib/tunnel/cloudflare/cloudflared.js +0 -460
  2182. package/src/lib/tunnel/cloudflare/config.js +0 -9
  2183. package/src/lib/tunnel/cloudflare/healthCheck.js +0 -29
  2184. package/src/lib/tunnel/cloudflare/manager.js +0 -151
  2185. package/src/lib/tunnel/cloudflare/pid.js +0 -23
  2186. package/src/lib/tunnel/index.js +0 -48
  2187. package/src/lib/tunnel/shared/dnsResolver.js +0 -17
  2188. package/src/lib/tunnel/shared/internetCheck.js +0 -26
  2189. package/src/lib/tunnel/shared/state.js +0 -41
  2190. package/src/lib/tunnel/shared/watchdogConfig.js +0 -8
  2191. package/src/lib/tunnel/tailscale/config.js +0 -7
  2192. package/src/lib/tunnel/tailscale/healthCheck.js +0 -29
  2193. package/src/lib/tunnel/tailscale/manager.js +0 -129
  2194. package/src/lib/tunnel/tailscale/tailscale.js +0 -790
  2195. package/src/lib/updater/updater.js +0 -327
  2196. package/src/lib/usage/fetcher.js +0 -208
  2197. package/src/lib/usage/quotaRefresh.js +0 -71
  2198. package/src/lib/usage/quotaService.js +0 -154
  2199. package/src/lib/usageDb.js +0 -7
  2200. package/src/mitm/antigravityIdeVersion.js +0 -50
  2201. package/src/mitm/cert/generate.js +0 -32
  2202. package/src/mitm/cert/install.js +0 -274
  2203. package/src/mitm/cert/rootCA.js +0 -173
  2204. package/src/mitm/config.js +0 -87
  2205. package/src/mitm/dbReader.js +0 -22
  2206. package/src/mitm/dns/dnsConfig.js +0 -266
  2207. package/src/mitm/handlers/antigravity.js +0 -33
  2208. package/src/mitm/handlers/base.js +0 -226
  2209. package/src/mitm/handlers/copilot.js +0 -35
  2210. package/src/mitm/handlers/cursor.js +0 -15
  2211. package/src/mitm/handlers/kiro.js +0 -533
  2212. package/src/mitm/logger.js +0 -106
  2213. package/src/mitm/manager.js +0 -862
  2214. package/src/mitm/paths.js +0 -32
  2215. package/src/mitm/server.js +0 -447
  2216. package/src/mitm/winElevated.js +0 -81
  2217. package/src/models/index.js +0 -38
  2218. package/src/proxy.js +0 -5
  2219. package/src/shared/components/AddCustomEmbeddingModal.js +0 -184
  2220. package/src/shared/components/Avatar.js +0 -88
  2221. package/src/shared/components/Badge.js +0 -54
  2222. package/src/shared/components/BulkAccountAutomationModal.js +0 -644
  2223. package/src/shared/components/Button.js +0 -57
  2224. package/src/shared/components/Card.js +0 -116
  2225. package/src/shared/components/ChangelogModal.js +0 -108
  2226. package/src/shared/components/CodeBuddyCnPhoneRegisterModal.js +0 -565
  2227. package/src/shared/components/CodeBuddyQuotaCookieModal.js +0 -109
  2228. package/src/shared/components/ComboFormModal.js +0 -176
  2229. package/src/shared/components/CursorAuthModal.js +0 -213
  2230. package/src/shared/components/Drawer.js +0 -82
  2231. package/src/shared/components/EditConnectionModal.js +0 -287
  2232. package/src/shared/components/Footer.js +0 -132
  2233. package/src/shared/components/GitLabAuthModal.js +0 -194
  2234. package/src/shared/components/Header.js +0 -399
  2235. package/src/shared/components/HeaderLanguage.js +0 -48
  2236. package/src/shared/components/HeaderMenu.js +0 -127
  2237. package/src/shared/components/IFlowCookieModal.js +0 -132
  2238. package/src/shared/components/Input.js +0 -76
  2239. package/src/shared/components/KiroAuthModal.js +0 -1172
  2240. package/src/shared/components/KiroOAuthWrapper.js +0 -150
  2241. package/src/shared/components/KiroSocialOAuthModal.js +0 -205
  2242. package/src/shared/components/LanguageSwitcher.js +0 -192
  2243. package/src/shared/components/Loading.js +0 -75
  2244. package/src/shared/components/ManualConfigModal.js +0 -44
  2245. package/src/shared/components/McpMarketplaceModal.js +0 -255
  2246. package/src/shared/components/Modal.js +0 -193
  2247. package/src/shared/components/ModelSelectModal.js +0 -547
  2248. package/src/shared/components/NoAuthProxyCard.js +0 -134
  2249. package/src/shared/components/OAuthModal.js +0 -709
  2250. package/src/shared/components/Pagination.js +0 -150
  2251. package/src/shared/components/PricingModal.js +0 -209
  2252. package/src/shared/components/ProviderIcon.js +0 -68
  2253. package/src/shared/components/ProviderInfoCard.js +0 -82
  2254. package/src/shared/components/RequestLogger.js +0 -122
  2255. package/src/shared/components/SegmentedControl.js +0 -53
  2256. package/src/shared/components/Select.js +0 -67
  2257. package/src/shared/components/Sidebar.js +0 -486
  2258. package/src/shared/components/ThemeProvider.js +0 -15
  2259. package/src/shared/components/ThemeToggle.js +0 -42
  2260. package/src/shared/components/Toggle.js +0 -95
  2261. package/src/shared/components/Tooltip.js +0 -25
  2262. package/src/shared/components/UsageStats.js +0 -574
  2263. package/src/shared/components/index.js +0 -46
  2264. package/src/shared/components/layouts/AuthLayout.js +0 -29
  2265. package/src/shared/components/layouts/DashboardLayout.js +0 -121
  2266. package/src/shared/components/layouts/index.js +0 -4
  2267. package/src/shared/constants/automationProviders.js +0 -23
  2268. package/src/shared/constants/cliTools.js +0 -397
  2269. package/src/shared/constants/colors.js +0 -77
  2270. package/src/shared/constants/config.js +0 -98
  2271. package/src/shared/constants/coworkPlugins.js +0 -75
  2272. package/src/shared/constants/index.js +0 -4
  2273. package/src/shared/constants/locales.js +0 -36
  2274. package/src/shared/constants/mitmToolHosts.js +0 -12
  2275. package/src/shared/constants/models.js +0 -38
  2276. package/src/shared/constants/pricing.js +0 -311
  2277. package/src/shared/constants/providers.js +0 -450
  2278. package/src/shared/constants/ttsProviders.js +0 -138
  2279. package/src/shared/hooks/index.js +0 -2
  2280. package/src/shared/hooks/useCopyToClipboard.js +0 -43
  2281. package/src/shared/hooks/useTheme.js +0 -60
  2282. package/src/shared/services/bootstrap.js +0 -12
  2283. package/src/shared/services/initializeApp.js +0 -277
  2284. package/src/shared/utils/api.js +0 -93
  2285. package/src/shared/utils/apiKey.js +0 -98
  2286. package/src/shared/utils/clineAuth.js +0 -37
  2287. package/src/shared/utils/cn.js +0 -11
  2288. package/src/shared/utils/codexCliConfig.js +0 -44
  2289. package/src/shared/utils/connectionStatus.js +0 -162
  2290. package/src/shared/utils/index.js +0 -40
  2291. package/src/shared/utils/machine.js +0 -6
  2292. package/src/shared/utils/machineId.js +0 -66
  2293. package/src/shared/utils/providerModelsFetcher.js +0 -30
  2294. package/src/sse/handlers/chat.js +0 -436
  2295. package/src/sse/handlers/embeddings.js +0 -141
  2296. package/src/sse/handlers/fetch.js +0 -213
  2297. package/src/sse/handlers/imageGeneration.js +0 -142
  2298. package/src/sse/handlers/search.js +0 -206
  2299. package/src/sse/handlers/stt.js +0 -88
  2300. package/src/sse/handlers/tts.js +0 -114
  2301. package/src/sse/services/auth.js +0 -537
  2302. package/src/sse/services/codexGateway.js +0 -215
  2303. package/src/sse/services/model.js +0 -99
  2304. package/src/sse/services/tokenRefresh.js +0 -319
  2305. package/src/sse/utils/logger.js +0 -75
  2306. package/src/store/headerSearchStore.js +0 -19
  2307. package/src/store/index.js +0 -6
  2308. package/src/store/notificationStore.js +0 -45
  2309. package/src/store/providerStore.js +0 -55
  2310. package/src/store/settingsStore.js +0 -51
  2311. package/src/store/themeStore.js +0 -54
  2312. package/src/store/userStore.js +0 -20
  2313. package/start.sh +0 -4
  2314. /package/cli/app/.next-cli-build/static/{gQ1kqTy9hoyJ5eXUJs8MC → sRgS_5eNahHOIlOLEqVvI}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- exports.id=5469,exports.ids=[5469],exports.modules={73180:(a,b,c)=>{"use strict";c.d(b,{default:()=>o});var d=c(48249),e=c(67484),f=c(26921),g=c(11656),h=c(50412);c(91431),c(96919);let i=[],j=["Explain this project like I'm new","Write a concise PR description","Debug this error message","Summarize the key trade-offs"];function k(){return globalThis.crypto?.randomUUID?globalThis.crypto.randomUUID():`chat_${Date.now()}_${Math.random().toString(16).slice(2)}`}function l(a){if("string"==typeof a)return a;if(null==a)return"";if(Array.isArray(a))return a.map(l).filter(Boolean).join(" ");if("object"==typeof a){if("string"==typeof a.message)return a.message;if("string"==typeof a.error)return a.error;try{return JSON.stringify(a)}catch{}}return String(a)}function m(a=""){let b=l(a).replace(/\s+/g," ").trim();return b?b.length>52?`${b.slice(0,52).trimEnd()}…`:b:"New chat"}async function n(a){return await new Promise((b,c)=>{let d=new FileReader;d.onload=()=>b(String(d.result||"")),d.onerror=()=>c(d.error||Error("Failed to read file")),d.readAsDataURL(a)})}function o(){let[a,b]=(0,e.useState)([]),[c,o]=(0,e.useState)(!0),[p,q]=(0,e.useState)(""),[r,s]=(0,e.useState)([]),[t,u]=(0,e.useState)(""),[v,w]=(0,e.useState)(""),[x,y]=(0,e.useState)(""),[z,A]=(0,e.useState)(""),[B,C]=(0,e.useState)([]),[D,E]=(0,e.useState)(!1),[F,G]=(0,e.useState)(""),[H,I]=(0,e.useState)(""),[J,K]=(0,e.useState)(!1),[L,M]=(0,e.useState)(!1),[N,O]=(0,e.useState)(""),[P,Q]=(0,e.useState)(!1),[R,S]=(0,e.useState)(!1),[T,U]=(0,e.useState)(""),[V,W]=(0,e.useState)(.7),[X,Y]=(0,e.useState)(""),Z=(0,e.useRef)(null),$=(0,e.useRef)(null);(0,e.useRef)(!1);let _=(0,e.useRef)(null),aa=(0,e.useRef)(null),ab=(0,e.useRef)(null),ac=(0,e.useRef)(null),ad=(0,e.useRef)(null),ae=(0,e.useMemo)(()=>{let b=new Map;for(let c of a)for(let a of c.models)b.set(a.id,{...a,providerId:c.providerId,providerName:c.providerName});return b},[a]),af=(0,e.useMemo)(()=>a.find(a=>a.providerId===v)||a[0]||null,[a,v]),ag=(0,e.useMemo)(()=>{if(x&&ae.has(x))return ae.get(x);if(t){let a=r.find(a=>a.id===t);if(a?.modelId&&ae.has(a.modelId))return ae.get(a.modelId)}return af?.models?.[0]||null},[x,ae,af,r,t]),ah=(0,e.useMemo)(()=>r.find(a=>a.id===t)||null,[r,t]),ai=ah?.messages||i,aj=(0,e.useMemo)(()=>[...r].sort((a,b)=>new Date(b.updatedAt).getTime()-new Date(a.updatedAt).getTime()),[r]),ak=!D&&!!ag&&(z.trim().length>0||B.length>0),al=(a,b)=>{s(c=>c.map(c=>c.id===a?b({...c,messages:Array.isArray(c.messages)?c.messages.map(a=>({...a})):[]}):c))},am=a=>a?{id:k(),title:"New chat",providerId:a.providerId,providerName:a.providerName,modelId:a.id,modelName:a.name,createdAt:new Date().toISOString(),updatedAt:new Date().toISOString(),messages:[]}:null,an=()=>{if(!ag)return;let a=am(ag);a&&(s(b=>[a,...b]),u(a.id),w(a.providerId),y(a.modelId),A(""),C([]),G(""),I(""))},ao=async a=>{let b=Array.from(a.target.files||[]);if(0===b.length)return;let c=b.filter(a=>a.type.startsWith("image/"));if(0===c.length){a.target.value="";return}let d=await Promise.all(c.map(async a=>({id:k(),name:a.name,type:a.type,size:a.size,dataUrl:await n(a)})));C(a=>[...a,...d]),a.target.value=""},ap=(a,b)=>{let c=m(b);al(a,a=>({...a,title:"New chat"===a.title?c:a.title,updatedAt:new Date().toISOString()}))},aq=async(a,b)=>{try{await navigator.clipboard.writeText(l(b)),U(a),setTimeout(()=>U(b=>b===a?"":b),1500)}catch{}},ar=async(a={})=>{let b=ag||af?.models?.[0]||null;if(!b)return;let c=!0===a.regenerate,d=t,e=r.find(a=>a.id===d),f="string"==typeof a.userText?a.userText:z.trim(),g=Array.isArray(a.attachments)?a.attachments:B;if(c){if(!e)return;let a=[...e.messages||[]];for(;a.length&&a[a.length-1]?.role==="assistant";)a.pop();let b=[...a].reverse().find(a=>"user"===a.role);if(!b)return;f=l(b.content).trim(),g=Array.isArray(b.attachments)?b.attachments:[],e={...e,messages:a},s(a=>a.map(a=>a.id===d?e:a))}if(!f&&(!g||0===g.length))return;if(!e){if(!(e=am(b)))return;d=e.id,s(a=>[e,...a]),u(d)}let h=c?null:{id:k(),role:"user",content:f,attachments:(g||[]).map(a=>({id:a.id,name:a.name,type:a.type,dataUrl:a.dataUrl})),createdAt:new Date().toISOString()},i=k(),j={id:i,role:"assistant",content:"",createdAt:new Date().toISOString(),status:"streaming"},n=[...c?[...e.messages||[]]:[...e.messages||[],h],j];s(a=>a.map(a=>a.id===d?{...a,providerId:b.providerId,providerName:b.providerName,modelId:b.id,modelName:b.name,messages:n,updatedAt:new Date().toISOString(),title:"New chat"===a.title?m(f):a.title}:a)),!c&&(A(""),C([]),ac.current&&(ac.current.style.height="auto")),E(!0),G(i),I(""),$.current?.abort(),$.current=new AbortController;let o=n.filter(a=>"assistant"!==a.role||a.id!==i).map(a=>({role:a.role,content:"user"===a.role?function(a){let b=l(a.content).trim(),c=Array.isArray(a.attachments)?a.attachments:[];if(0===c.length)return b;let d=[];for(let a of(b&&d.push({type:"text",text:b}),c))a?.dataUrl&&d.push({type:"image_url",image_url:{url:a.dataUrl}});return d.length>0?d:b}(a):a.content})),p=X.trim(),q=p?[{role:"system",content:p},...o]:o;try{let a=await fetch("/api/dashboard/chat/completions",{method:"POST",headers:{"Content-Type":"application/json",Accept:"text/event-stream"},body:JSON.stringify({model:b.requestModel||b.id,messages:q,stream:!0,temperature:V}),signal:$.current.signal});if(!a.ok){let b=await a.json().catch(()=>({}));throw Error(l(b.error||b.message||`Request failed (${a.status})`))}let c=a.body?.getReader();if(!c){let b=await a.json().catch(()=>({})),c=l(b?.choices?.[0]?.message?.content||b?.output_text||b?.error||b?.message||"");al(d,a=>({...a,messages:a.messages.map(a=>a.id===i?{...a,content:c,status:"done"}:a),updatedAt:new Date().toISOString()}));return}let e=new TextDecoder,g="",h="";for(;;){let{value:a,done:b}=await c.read();if(b)break;let f=(g+=e.decode(a,{stream:!0})).split(/\r?\n/);for(let a of(g=f.pop()||"",f)){let b=a.trim();if(!b.startsWith("data:"))continue;let c=b.slice(5).trim();if(c&&"[DONE]"!==c)try{let a=JSON.parse(c),b=function(a){if(!a||"object"!=typeof a)return"";let b=a.choices?.[0];return[(b?.delta||{}).content,b?.message?.content,a.output_text,a.text].map(l).filter(Boolean)[0]||""}(a);if(!b)continue;h+=b,I(h),al(d,a=>({...a,messages:a.messages.map(a=>a.id===i?{...a,content:h,status:"streaming"}:a),updatedAt:new Date().toISOString()}))}catch{}}}al(d,a=>({...a,messages:a.messages.map(a=>a.id===i?{...a,content:h||a.content,status:"done"}:a),updatedAt:new Date().toISOString()})),ap(d,f)}catch(a){if("AbortError"===a.name)al(d,a=>({...a,messages:a.messages.map(a=>a.id===i?{...a,content:a.content||"Stopped",status:"stopped"}:a),updatedAt:new Date().toISOString()})),ap(d,f);else{let b=l(a?.message||a);al(d,a=>({...a,messages:a.messages.map(a=>a.id===i?{...a,content:a.content||`Error: ${b}`,status:"error"}:a),updatedAt:new Date().toISOString()}))}}finally{E(!1),G(""),I(""),$.current=null}},as=ag?ag.name:"Select model",at=ag?`${ag.providerName||""} \xb7 ${ag.requestModel||ag.id}`.replace(/^ · /,""):"Connected providers only",au=(0,e.useMemo)(()=>{let b=N.trim().toLowerCase();return b?a.map(a=>{let c=(a.providerName||"").toLowerCase().includes(b)||(a.providerId||"").toLowerCase().includes(b)?a.models:a.models.filter(a=>`${a.name||""} ${a.requestModel||""} ${a.id||""}`.toLowerCase().includes(b));return{...a,models:c}}).filter(a=>a.models.length>0):a},[a,N]);return(0,d.jsxs)("div",{className:"relative flex h-full min-h-0 min-w-0 flex-1 overflow-hidden bg-bg text-text-main",children:[(0,d.jsxs)("aside",{id:"playground-history",className:`${P?"flex":"hidden"} fixed inset-y-0 left-0 z-30 w-[min(85vw,260px)] shrink-0 flex-col border-r border-border-subtle bg-surface/95 backdrop-blur-xl lg:static lg:z-auto lg:flex lg:w-[260px] lg:bg-surface/60`,children:[(0,d.jsxs)("div",{className:"flex items-center gap-2 border-b border-border-subtle p-3",children:[(0,d.jsxs)("button",{type:"button",onClick:an,disabled:!ag,className:"flex h-9 flex-1 items-center justify-center gap-2 rounded-[10px] bg-primary text-sm font-semibold text-white transition hover:bg-primary-hover disabled:cursor-not-allowed disabled:opacity-50",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"add"}),"New chat"]}),(0,d.jsx)("button",{type:"button",className:"flex size-11 items-center justify-center rounded-[10px] border border-border text-text-muted lg:hidden hover:bg-surface-2",onClick:()=>Q(!1),"aria-label":"Close history",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"close"})})]}),(0,d.jsxs)("div",{ref:aa,className:"flex-1 overflow-y-auto p-2 custom-scrollbar",children:[(0,d.jsx)("p",{className:"px-2 py-2 text-[11px] font-semibold uppercase tracking-wider text-text-subtle",children:"Chats"}),0===aj.length?(0,d.jsx)("div",{className:"rounded-[10px] border border-dashed border-border px-3 py-6 text-center text-xs text-text-muted",children:"No conversations yet"}):(0,d.jsx)("div",{className:"space-y-0.5",children:aj.map(a=>{let b=a.id===t,c=[...a.messages||[]].reverse().find(a=>"user"===a.role)||a.messages?.[0];return(0,d.jsxs)("button",{type:"button",onClick:()=>{var b;let c;b=a.id,(c=r.find(a=>a.id===b))&&(u(b),w(c.providerId||v),y(c.modelId||x),Q(!1))},className:`group flex w-full items-start gap-2 rounded-[10px] px-2.5 py-2.5 text-left transition ${b?"bg-primary/10 text-primary":"text-text-muted hover:bg-surface-2 hover:text-text-main"}`,children:[(0,d.jsx)("span",{className:"material-symbols-outlined mt-0.5 text-[16px] opacity-70",children:"chat_bubble"}),(0,d.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,d.jsx)("p",{className:"truncate text-[13px] font-medium leading-snug",children:a.title||"New chat"}),(0,d.jsxs)("p",{className:"mt-0.5 truncate text-[11px] opacity-60",children:[l(c?.content)||"Empty"," \xb7"," ",function(a){if(!a)return"Now";let b=new Date(a).getTime();if(Number.isNaN(b))return"Now";let c=Math.max(1,Math.round((Date.now()-b)/6e4));if(c<60)return`${c}m`;let d=Math.round(c/60);return d<24?`${d}h`:`${Math.round(d/24)}d`}(a.updatedAt)]})]})]},a.id)})})]}),(0,d.jsx)("div",{className:"border-t border-border-subtle p-3",children:(0,d.jsxs)("button",{type:"button",onClick:()=>{if(!t)return;let a=r.filter(a=>a.id!==t),b=a[0]||null;s(a),b?(u(b.id),w(b.providerId),y(b.modelId)):(u(""),w(""),y(""))},disabled:!t||0===r.length,className:"flex h-8 w-full items-center justify-center gap-1.5 rounded-[8px] text-xs font-medium text-text-muted transition hover:bg-surface-2 hover:text-danger disabled:opacity-40",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"delete"}),"Delete current chat"]})})]}),(0,d.jsxs)("div",{className:"relative flex min-w-0 flex-1 flex-col",children:[(0,d.jsxs)("div",{className:"flex shrink-0 items-center justify-between gap-2 border-b border-border-subtle px-3 py-2 lg:hidden",children:[(0,d.jsx)("button",{type:"button",onClick:()=>Q(!0),className:"flex size-11 items-center justify-center rounded-[10px] border border-border text-text-muted hover:bg-surface-2","aria-label":"Open chats","aria-expanded":P,"aria-controls":"playground-history",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[20px]",children:"history"})}),(0,d.jsxs)("div",{className:"min-w-0 text-center",children:[(0,d.jsx)("p",{className:"truncate text-sm font-semibold",children:as}),(0,d.jsx)("p",{className:"truncate text-[11px] text-text-subtle",children:at})]}),(0,d.jsx)("button",{type:"button",onClick:an,disabled:!ag,className:"flex size-11 items-center justify-center rounded-[10px] border border-border text-text-muted hover:bg-surface-2 disabled:opacity-40","aria-label":"New chat",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[20px]",children:"edit_square"})})]}),p?(0,d.jsx)("div",{role:"alert",className:"mx-4 mt-3 rounded-[10px] border border-danger/25 bg-danger/10 px-3 py-2.5 text-sm text-danger",children:(0,d.jsxs)("div",{className:"flex items-start gap-2",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"error"}),(0,d.jsx)("p",{children:p})]})}):null,(0,d.jsx)("div",{className:"flex-1 overflow-y-auto custom-scrollbar",children:0===ai.length?(0,d.jsxs)("div",{className:"flex min-h-full flex-col items-center justify-center px-6 pb-36 pt-10 text-center",children:[(0,d.jsx)("div",{className:"mb-4 flex size-12 items-center justify-center rounded-2xl border border-border bg-surface text-primary shadow-soft",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[26px]",children:"forum"})}),(0,d.jsx)("h2",{className:"text-[22px] font-semibold tracking-tight text-text-main",children:"How can I help?"}),(0,d.jsx)("p",{className:"mt-1.5 max-w-md text-[13px] leading-relaxed text-text-muted",children:"Pick a model below, then ask anything through your connected providers."}),(0,d.jsx)("div",{className:"mt-6 flex max-w-xl flex-wrap items-center justify-center gap-2",children:j.map(a=>(0,d.jsx)("button",{type:"button",disabled:!ag||c,onClick:()=>{A(a),requestAnimationFrame(()=>ac.current?.focus())},className:"rounded-full border border-border bg-surface px-3.5 py-2 text-left text-[12.5px] text-text-muted transition hover:border-primary/35 hover:bg-primary/5 hover:text-text-main disabled:opacity-40",children:a},a))}),c?(0,d.jsx)("p",{className:"mt-4 text-xs text-text-subtle",children:"Loading models…"}):null]}):(0,d.jsxs)("div",{className:"mx-auto w-full max-w-3xl px-4 py-6 lg:px-8",children:[ai.map((a,b)=>{let c="user"===a.role,e="assistant"===a.role,h=e&&a.id===F&&"streaming"===a.status,i=l(a.content)||(e?H:""),j="error"===a.status,k="stopped"===a.status,m=e&&b===ai.length-1&&"streaming"!==a.status;return(0,d.jsx)("div",{className:"group relative mb-1 border-b border-border-subtle/50 py-5 last:border-0",children:(0,d.jsxs)("div",{className:"flex gap-3.5",children:[(0,d.jsx)("div",{className:`flex size-7 shrink-0 items-center justify-center rounded-full text-[11px] font-bold ${c?"bg-primary text-white":"border border-border bg-surface-2 text-text-muted"}`,children:c?"Y":"AI"}),(0,d.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,d.jsx)("p",{className:"mb-1.5 text-[12px] font-semibold text-text-main",children:c?"You":ag?.name||"Assistant"}),a.attachments?.length?(0,d.jsx)("div",{className:"mb-3 grid max-w-md grid-cols-2 gap-2 sm:grid-cols-3",children:a.attachments.map(a=>(0,d.jsx)("a",{href:a.dataUrl,target:"_blank",rel:"noreferrer",className:"overflow-hidden rounded-lg border border-border",children:(0,d.jsx)("img",{src:a.dataUrl,alt:a.name,className:"h-24 w-full object-cover"})},a.id))}):null,e&&!j?(0,d.jsx)("div",{className:"playground-md text-[14.5px] leading-[1.7] text-text-main",dangerouslySetInnerHTML:{__html:function(a){let b=l(a);if(!b)return"";try{return g.A.sanitize(f.xI.parse(b))}catch{return b.replace(/</g,"&lt;").replace(/>/g,"&gt;")}}(i)||""}}):(0,d.jsx)("div",{className:`whitespace-pre-wrap break-words text-[14.5px] leading-[1.7] ${j?"text-danger":"text-text-main"}`,children:i}),e&&h?(0,d.jsx)("span",{className:"ml-0.5 inline-block animate-pulse text-primary",children:"▋"}):null,k?(0,d.jsx)("p",{className:"mt-2 text-xs text-text-muted",children:"Generation stopped"}):null,e&&i&&!h?(0,d.jsxs)("div",{className:"mt-2 flex items-center gap-1 opacity-100 transition sm:opacity-0 sm:group-hover:opacity-100 sm:group-focus-within:opacity-100",children:[(0,d.jsxs)("button",{type:"button",onClick:()=>aq(a.id,i),className:"inline-flex h-7 items-center gap-1 rounded-md px-2 text-[11px] font-medium text-text-muted hover:bg-surface-2 hover:text-text-main",title:"Copy",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:T===a.id?"check":"content_copy"}),T===a.id?"Copied":"Copy"]}),m&&!D?(0,d.jsxs)("button",{type:"button",onClick:()=>ar({regenerate:!0}),className:"inline-flex h-7 items-center gap-1 rounded-md px-2 text-[11px] font-medium text-text-muted hover:bg-surface-2 hover:text-text-main",title:"Regenerate",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"refresh"}),"Retry"]}):null]}):null]})]})},a.id)}),(0,d.jsx)("div",{ref:ad})]})}),(0,d.jsx)("div",{className:"shrink-0 border-t border-border-subtle bg-bg/90 backdrop-blur-xl",children:(0,d.jsxs)("div",{className:"mx-auto w-full max-w-3xl px-4 pb-4 pt-3 lg:px-6",children:[B.length>0?(0,d.jsx)("div",{className:"mb-2 flex flex-wrap gap-2",children:B.map(a=>(0,d.jsxs)("div",{className:"flex items-center gap-2 rounded-full border border-border bg-surface px-3 py-1.5",children:[(0,d.jsx)("span",{className:"max-w-[10rem] truncate text-xs text-text-muted",children:a.name}),(0,d.jsx)("button",{type:"button",onClick:()=>{var b;return b=a.id,void C(a=>a.filter(a=>a.id!==b))},className:"text-text-subtle hover:text-text-main","aria-label":"Remove attachment",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"close"})})]},a.id))}):null,(0,d.jsxs)("div",{className:"rounded-2xl border border-border-subtle bg-surface-2/80 shadow-soft ring-1 ring-border-subtle focus-within:border-primary/50 focus-within:ring-primary/20 transition",children:[(0,d.jsx)("textarea",{ref:ac,"aria-label":"Message",value:z,onChange:a=>A(a.target.value),onKeyDown:a=>{"Enter"===a.key&&!a.shiftKey&&(a.preventDefault(),ak&&ar())},placeholder:ag?`Message ${ag.name}…`:"Select a model below to start chatting",rows:1,disabled:!ag||c,className:"max-h-[28vh] min-h-[52px] w-full resize-none overflow-y-auto bg-transparent px-4 pt-3.5 text-[15px] leading-6 text-text-main outline-none placeholder:text-text-subtle custom-scrollbar disabled:opacity-50"}),(0,d.jsxs)("div",{className:"flex items-center justify-between gap-2 px-2.5 pb-2.5 pt-1",children:[(0,d.jsxs)("div",{className:"flex min-w-0 items-center gap-1.5",children:[(0,d.jsxs)("button",{type:"button",onClick:()=>Z.current?.click(),disabled:!ag||c,className:"inline-flex h-11 items-center gap-1.5 rounded-full border border-border bg-surface px-3 text-[12px] font-medium text-text-main transition hover:border-primary/40 hover:bg-primary/10 hover:text-primary disabled:cursor-not-allowed disabled:opacity-40",title:"Upload image",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"add_photo_alternate"}),(0,d.jsx)("span",{className:"hidden sm:inline",children:"Image"})]}),(0,d.jsx)("input",{ref:Z,type:"file",accept:"image/*",multiple:!0,className:"hidden",onChange:ao}),(0,d.jsxs)("div",{ref:ab,className:"relative",children:[(0,d.jsxs)("button",{type:"button",onClick:()=>S(a=>!a),className:`inline-flex h-11 items-center gap-1.5 rounded-full border px-3 text-[12px] font-medium transition ${R||X.trim()||.7!==V?"border-primary/40 bg-primary/10 text-primary":"border-border bg-surface text-text-main hover:border-primary/40 hover:bg-primary/10 hover:text-primary"}`,title:"Chat settings","aria-label":"Chat settings","aria-expanded":R,"aria-controls":"playground-chat-settings",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"tune"}),(0,d.jsx)("span",{className:"hidden sm:inline tabular-nums",children:V.toFixed(1)})]}),R?(0,d.jsxs)("div",{id:"playground-chat-settings",className:"absolute bottom-[calc(100%+8px)] left-0 z-40 w-[min(320px,calc(100vw-2rem))] space-y-3 rounded-xl border border-border bg-surface p-3 shadow-elevated",children:[(0,d.jsxs)("div",{children:[(0,d.jsxs)("div",{className:"mb-1.5 flex items-center justify-between gap-2",children:[(0,d.jsx)("p",{className:"text-[11px] font-semibold uppercase tracking-wider text-text-subtle",children:"Temperature"}),(0,d.jsx)("span",{className:"text-xs font-semibold tabular-nums text-text-main",children:V.toFixed(2)})]}),(0,d.jsx)("input",{type:"range",min:0,max:2,step:.05,value:V,onChange:a=>W(Number(a.target.value)),className:"w-full accent-[var(--color-primary,#E56A4A)]"}),(0,d.jsxs)("div",{className:"mt-1 flex justify-between text-[10px] text-text-subtle",children:[(0,d.jsx)("span",{children:"Precise"}),(0,d.jsx)("span",{children:"Creative"})]})]}),(0,d.jsxs)("div",{children:[(0,d.jsx)("p",{className:"mb-1.5 text-[11px] font-semibold uppercase tracking-wider text-text-subtle",children:"System prompt"}),(0,d.jsx)("textarea",{value:X,onChange:a=>Y(a.target.value),rows:4,placeholder:"Optional instructions for the model…",className:"w-full resize-y rounded-lg border border-border bg-bg px-2.5 py-2 text-[12.5px] leading-5 text-text-main outline-none placeholder:text-text-subtle focus:border-primary/40 custom-scrollbar"})]}),(0,d.jsx)("button",{type:"button",onClick:()=>{W(.7),Y("")},className:"text-[11px] font-medium text-text-muted hover:text-text-main",children:"Reset defaults"})]}):null]}),(0,d.jsxs)("div",{ref:_,className:"relative min-w-0",children:[(0,d.jsxs)("button",{type:"button",onClick:()=>{M(a=>{let b=!a;return b||O(""),b})},disabled:c||0===a.length,"aria-label":`Choose model, currently ${as}`,"aria-haspopup":"listbox","aria-expanded":L,"aria-controls":"playground-model-menu",className:"inline-flex h-11 max-w-[min(100vw-12rem,260px)] items-center gap-1.5 rounded-full border border-border bg-surface px-3 text-left transition hover:border-primary/40 hover:bg-surface-2 disabled:opacity-50",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px] text-primary shrink-0",children:"smart_toy"}),(0,d.jsx)("span",{className:"min-w-0 truncate text-[12.5px] font-semibold text-text-main",children:c?"Loading…":as}),(0,d.jsx)("span",{className:"material-symbols-outlined shrink-0 text-[16px] text-text-muted",children:L?"expand_less":"expand_more"})]}),L?(0,d.jsxs)("div",{id:"playground-model-menu",role:"listbox","aria-label":"Models",className:"absolute bottom-[calc(100%+8px)] left-0 z-40 w-[min(420px,calc(100vw-2rem))] overflow-hidden rounded-xl border border-border bg-surface shadow-elevated",children:[(0,d.jsxs)("div",{className:"border-b border-border-subtle px-3 py-2.5 space-y-2",children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("p",{className:"text-[11px] font-semibold uppercase tracking-wider text-text-subtle",children:"Models"}),(0,d.jsxs)("p",{className:"text-xs text-text-muted",children:[a.length," providers \xb7 search by name"]})]}),(0,d.jsxs)("div",{className:"relative",children:[(0,d.jsx)("span",{className:"material-symbols-outlined pointer-events-none absolute left-2.5 top-1/2 -translate-y-1/2 text-[16px] text-text-subtle",children:"search"}),(0,d.jsx)("input",{type:"search",value:N,onChange:a=>O(a.target.value),placeholder:"Search models…",autoFocus:!0,className:"w-full rounded-lg border border-border bg-bg py-1.5 pl-8 pr-3 text-[16px] text-text-main outline-none placeholder:text-text-subtle focus:border-primary/40"})]})]}),(0,d.jsx)("div",{className:"max-h-[min(50vh,360px)] overflow-y-auto p-1.5 custom-scrollbar",children:0===au.length?(0,d.jsxs)("p",{className:"px-3 py-6 text-center text-xs text-text-muted",children:["No models match “",N.trim(),"”"]}):au.map(a=>(0,d.jsxs)("div",{className:"mb-1",children:[(0,d.jsxs)("div",{className:"flex items-center justify-between px-2 py-1.5",children:[(0,d.jsx)("p",{className:"text-[11px] font-semibold uppercase tracking-wide text-text-subtle",children:a.providerName}),(0,d.jsx)(h.Ex,{size:"sm",variant:"default",children:a.models.length})]}),(0,d.jsx)("div",{className:"space-y-0.5",children:a.models.map(a=>{let b=a.id===x;return(0,d.jsxs)("button",{type:"button",role:"option","aria-selected":b,onClick:()=>{(a=>{let b=ae.get(a);if(!b)return;let c=r.find(a=>a.id===t);if(c&&c.messages.length>0){let a=am(b);if(!a)return;s(b=>[a,...b]),u(a.id)}else if(c)s(a=>a.map(a=>a.id===c.id?{...a,providerId:b.providerId,providerName:b.providerName,modelId:b.id,modelName:b.name}:a)),u(c.id);else{let a=am(b);if(!a)return;s(b=>[a,...b]),u(a.id)}w(b.providerId),y(b.id),M(!1)})(a.id),O("")},className:`flex w-full items-center gap-2 rounded-lg px-2.5 py-2 text-left transition ${b?"bg-primary/10 text-primary":"text-text-muted hover:bg-surface-2 hover:text-text-main"}`,children:[(0,d.jsxs)("span",{className:"min-w-0 flex-1",children:[(0,d.jsx)("span",{className:"block truncate text-[13px] font-medium",children:a.name}),(0,d.jsx)("span",{className:"block truncate text-[11px] opacity-60",children:a.requestModel})]}),b?(0,d.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"check"}):null]},a.id)})})]},a.providerId))})]}):null]})]}),(0,d.jsxs)("div",{className:"flex shrink-0 items-center gap-2",children:[D?(0,d.jsxs)("button",{type:"button",onClick:()=>{$.current?.abort()},className:"inline-flex h-11 items-center gap-1.5 rounded-full border border-border bg-surface px-3 text-[12px] font-semibold text-text-main transition hover:bg-surface-2",title:"Stop generating",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"stop_circle"}),(0,d.jsx)("span",{className:"hidden sm:inline",children:"Stop"})]}):null,(0,d.jsxs)("button",{type:"button",onClick:ar,disabled:!ak,className:`inline-flex h-11 min-w-9 items-center justify-center gap-1.5 rounded-full px-3.5 text-[13px] font-semibold transition ${ak?"bg-primary text-white shadow-[0_2px_12px_rgba(229,106,74,0.45)] hover:bg-primary-hover active:scale-[0.97]":"bg-surface-3 text-text-subtle cursor-not-allowed opacity-70"}`,title:"Send message",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px] font-bold",children:"send"}),(0,d.jsx)("span",{className:"hidden sm:inline",children:"Send"})]})]})]})]}),(0,d.jsx)("p",{className:"mt-2 text-center text-[11px] text-text-subtle",children:"Routed through ZevaiRouter \xb7 Enter to send \xb7 Shift+Enter for new line"})]})})]}),P?(0,d.jsx)("button",{type:"button",className:"fixed inset-0 z-20 bg-black/40 lg:hidden","aria-label":"Close history",onClick:()=>Q(!1)}):null]})}f.xI.setOptions({gfm:!0,breaks:!0})},75746:(a,b,c)=>{Promise.resolve().then(c.bind(c,79286))},79286:(a,b,c)=>{"use strict";c.d(b,{default:()=>d});let d=(0,c(77943).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/Users/firda/zevairouter/src/app/(dashboard)/dashboard/basic-chat/BasicChatPageClient.js\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/Users/firda/zevairouter/src/app/(dashboard)/dashboard/basic-chat/BasicChatPageClient.js","default")},93898:(a,b,c)=>{Promise.resolve().then(c.bind(c,73180))}};
1
+ exports.id=5469,exports.ids=[5469],exports.modules={73180:(a,b,c)=>{"use strict";c.d(b,{default:()=>o});var d=c(48249),e=c(67484),f=c(26921),g=c(11656),h=c(50412);c(91431),c(96919);let i=[],j=["Explain this project like I'm new","Write a concise PR description","Debug this error message","Summarize the key trade-offs"];function k(){return globalThis.crypto?.randomUUID?globalThis.crypto.randomUUID():`chat_${Date.now()}_${Math.random().toString(16).slice(2)}`}function l(a){if("string"==typeof a)return a;if(null==a)return"";if(Array.isArray(a))return a.map(l).filter(Boolean).join(" ");if("object"==typeof a){if("string"==typeof a.message)return a.message;if("string"==typeof a.error)return a.error;try{return JSON.stringify(a)}catch{}}return String(a)}function m(a=""){let b=l(a).replace(/\s+/g," ").trim();return b?b.length>52?`${b.slice(0,52).trimEnd()}…`:b:"New chat"}async function n(a){return await new Promise((b,c)=>{let d=new FileReader;d.onload=()=>b(String(d.result||"")),d.onerror=()=>c(d.error||Error("Failed to read file")),d.readAsDataURL(a)})}function o(){let[a,b]=(0,e.useState)([]),[c,o]=(0,e.useState)(!0),[p,q]=(0,e.useState)(""),[r,s]=(0,e.useState)([]),[t,u]=(0,e.useState)(""),[v,w]=(0,e.useState)(""),[x,y]=(0,e.useState)(""),[z,A]=(0,e.useState)(""),[B,C]=(0,e.useState)([]),[D,E]=(0,e.useState)(!1),[F,G]=(0,e.useState)(""),[H,I]=(0,e.useState)(""),[J,K]=(0,e.useState)(!1),[L,M]=(0,e.useState)(!1),[N,O]=(0,e.useState)(""),[P,Q]=(0,e.useState)(!1),[R,S]=(0,e.useState)(!1),[T,U]=(0,e.useState)(""),[V,W]=(0,e.useState)(.7),[X,Y]=(0,e.useState)(""),Z=(0,e.useRef)(null),$=(0,e.useRef)(null);(0,e.useRef)(!1);let _=(0,e.useRef)(null),aa=(0,e.useRef)(null),ab=(0,e.useRef)(null),ac=(0,e.useRef)(null),ad=(0,e.useRef)(null),ae=(0,e.useMemo)(()=>{let b=new Map;for(let c of a)for(let a of c.models)b.set(a.id,{...a,providerId:c.providerId,providerName:c.providerName});return b},[a]),af=(0,e.useMemo)(()=>a.find(a=>a.providerId===v)||a[0]||null,[a,v]),ag=(0,e.useMemo)(()=>{if(x&&ae.has(x))return ae.get(x);if(t){let a=r.find(a=>a.id===t);if(a?.modelId&&ae.has(a.modelId))return ae.get(a.modelId)}return af?.models?.[0]||null},[x,ae,af,r,t]),ah=(0,e.useMemo)(()=>r.find(a=>a.id===t)||null,[r,t]),ai=ah?.messages||i,aj=(0,e.useMemo)(()=>[...r].sort((a,b)=>new Date(b.updatedAt).getTime()-new Date(a.updatedAt).getTime()),[r]),ak=!D&&!!ag&&(z.trim().length>0||B.length>0),al=(a,b)=>{s(c=>c.map(c=>c.id===a?b({...c,messages:Array.isArray(c.messages)?c.messages.map(a=>({...a})):[]}):c))},am=a=>a?{id:k(),title:"New chat",providerId:a.providerId,providerName:a.providerName,modelId:a.id,modelName:a.name,createdAt:new Date().toISOString(),updatedAt:new Date().toISOString(),messages:[]}:null,an=()=>{if(!ag)return;let a=am(ag);a&&(s(b=>[a,...b]),u(a.id),w(a.providerId),y(a.modelId),A(""),C([]),G(""),I(""))},ao=async a=>{let b=Array.from(a.target.files||[]);if(0===b.length)return;let c=b.filter(a=>a.type.startsWith("image/"));if(0===c.length){a.target.value="";return}let d=await Promise.all(c.map(async a=>({id:k(),name:a.name,type:a.type,size:a.size,dataUrl:await n(a)})));C(a=>[...a,...d]),a.target.value=""},ap=(a,b)=>{let c=m(b);al(a,a=>({...a,title:"New chat"===a.title?c:a.title,updatedAt:new Date().toISOString()}))},aq=async(a,b)=>{try{await navigator.clipboard.writeText(l(b)),U(a),setTimeout(()=>U(b=>b===a?"":b),1500)}catch{}},ar=async(a={})=>{let b=ag||af?.models?.[0]||null;if(!b)return;let c=!0===a.regenerate,d=t,e=r.find(a=>a.id===d),f="string"==typeof a.userText?a.userText:z.trim(),g=Array.isArray(a.attachments)?a.attachments:B;if(c){if(!e)return;let a=[...e.messages||[]];for(;a.length&&a[a.length-1]?.role==="assistant";)a.pop();let b=[...a].reverse().find(a=>"user"===a.role);if(!b)return;f=l(b.content).trim(),g=Array.isArray(b.attachments)?b.attachments:[],e={...e,messages:a},s(a=>a.map(a=>a.id===d?e:a))}if(!f&&(!g||0===g.length))return;if(!e){if(!(e=am(b)))return;d=e.id,s(a=>[e,...a]),u(d)}let h=c?null:{id:k(),role:"user",content:f,attachments:(g||[]).map(a=>({id:a.id,name:a.name,type:a.type,dataUrl:a.dataUrl})),createdAt:new Date().toISOString()},i=k(),j={id:i,role:"assistant",content:"",createdAt:new Date().toISOString(),status:"streaming"},n=[...c?[...e.messages||[]]:[...e.messages||[],h],j];s(a=>a.map(a=>a.id===d?{...a,providerId:b.providerId,providerName:b.providerName,modelId:b.id,modelName:b.name,messages:n,updatedAt:new Date().toISOString(),title:"New chat"===a.title?m(f):a.title}:a)),!c&&(A(""),C([]),ac.current&&(ac.current.style.height="auto")),E(!0),G(i),I(""),$.current?.abort(),$.current=new AbortController;let o=n.filter(a=>"assistant"!==a.role||a.id!==i).map(a=>({role:a.role,content:"user"===a.role?function(a){let b=l(a.content).trim(),c=Array.isArray(a.attachments)?a.attachments:[];if(0===c.length)return b;let d=[];for(let a of(b&&d.push({type:"text",text:b}),c))a?.dataUrl&&d.push({type:"image_url",image_url:{url:a.dataUrl}});return d.length>0?d:b}(a):a.content})),p=X.trim(),q=p?[{role:"system",content:p},...o]:o;try{let a=await fetch("/api/dashboard/chat/completions",{method:"POST",headers:{"Content-Type":"application/json",Accept:"text/event-stream"},body:JSON.stringify({model:b.requestModel||b.id,messages:q,stream:!0,temperature:V}),signal:$.current.signal});if(!a.ok){let b=await a.json().catch(()=>({}));throw Error(l(b.error||b.message||`Request failed (${a.status})`))}let c=a.body?.getReader();if(!c){let b=await a.json().catch(()=>({})),c=l(b?.choices?.[0]?.message?.content||b?.output_text||b?.error||b?.message||"");al(d,a=>({...a,messages:a.messages.map(a=>a.id===i?{...a,content:c,status:"done"}:a),updatedAt:new Date().toISOString()}));return}let e=new TextDecoder,g="",h="";for(;;){let{value:a,done:b}=await c.read();if(b)break;let f=(g+=e.decode(a,{stream:!0})).split(/\r?\n/);for(let a of(g=f.pop()||"",f)){let b=a.trim();if(!b.startsWith("data:"))continue;let c=b.slice(5).trim();if(c&&"[DONE]"!==c)try{let a=JSON.parse(c),b=function(a){if(!a||"object"!=typeof a)return"";let b=a.choices?.[0];return[(b?.delta||{}).content,b?.message?.content,a.output_text,a.text].map(l).filter(Boolean)[0]||""}(a);if(!b)continue;h+=b,I(h),al(d,a=>({...a,messages:a.messages.map(a=>a.id===i?{...a,content:h,status:"streaming"}:a),updatedAt:new Date().toISOString()}))}catch{}}}al(d,a=>({...a,messages:a.messages.map(a=>a.id===i?{...a,content:h||a.content,status:"done"}:a),updatedAt:new Date().toISOString()})),ap(d,f)}catch(a){if("AbortError"===a.name)al(d,a=>({...a,messages:a.messages.map(a=>a.id===i?{...a,content:a.content||"Stopped",status:"stopped"}:a),updatedAt:new Date().toISOString()})),ap(d,f);else{let b=l(a?.message||a);al(d,a=>({...a,messages:a.messages.map(a=>a.id===i?{...a,content:a.content||`Error: ${b}`,status:"error"}:a),updatedAt:new Date().toISOString()}))}}finally{E(!1),G(""),I(""),$.current=null}},as=ag?ag.name:"Select model",at=ag?`${ag.providerName||""} \xb7 ${ag.requestModel||ag.id}`.replace(/^ · /,""):"Connected providers only",au=(0,e.useMemo)(()=>{let b=N.trim().toLowerCase();return b?a.map(a=>{let c=(a.providerName||"").toLowerCase().includes(b)||(a.providerId||"").toLowerCase().includes(b)?a.models:a.models.filter(a=>`${a.name||""} ${a.requestModel||""} ${a.id||""}`.toLowerCase().includes(b));return{...a,models:c}}).filter(a=>a.models.length>0):a},[a,N]);return(0,d.jsxs)("div",{className:"relative flex h-full min-h-0 min-w-0 flex-1 overflow-hidden bg-bg text-text-main",children:[(0,d.jsxs)("aside",{id:"playground-history",className:`${P?"flex":"hidden"} fixed inset-y-0 left-0 z-30 w-[min(85vw,260px)] shrink-0 flex-col border-r border-border-subtle bg-surface/95 backdrop-blur-xl lg:static lg:z-auto lg:flex lg:w-[260px] lg:bg-surface/60`,children:[(0,d.jsxs)("div",{className:"flex items-center gap-2 border-b border-border-subtle p-3",children:[(0,d.jsxs)("button",{type:"button",onClick:an,disabled:!ag,className:"flex h-9 flex-1 items-center justify-center gap-2 rounded-[10px] bg-primary text-sm font-semibold text-white transition hover:bg-primary-hover disabled:cursor-not-allowed disabled:opacity-50",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"add"}),"New chat"]}),(0,d.jsx)("button",{type:"button",className:"flex size-11 items-center justify-center rounded-[10px] border border-border text-text-muted lg:hidden hover:bg-surface-2",onClick:()=>Q(!1),"aria-label":"Close history",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"close"})})]}),(0,d.jsxs)("div",{ref:aa,className:"flex-1 overflow-y-auto p-2 custom-scrollbar",children:[(0,d.jsx)("p",{className:"px-2 py-2 text-[11px] font-semibold uppercase tracking-wider text-text-subtle",children:"Chats"}),0===aj.length?(0,d.jsx)("div",{className:"rounded-[10px] border border-dashed border-border px-3 py-6 text-center text-xs text-text-muted",children:"No conversations yet"}):(0,d.jsx)("div",{className:"space-y-0.5",children:aj.map(a=>{let b=a.id===t,c=[...a.messages||[]].reverse().find(a=>"user"===a.role)||a.messages?.[0];return(0,d.jsxs)("button",{type:"button",onClick:()=>{var b;let c;b=a.id,(c=r.find(a=>a.id===b))&&(u(b),w(c.providerId||v),y(c.modelId||x),Q(!1))},className:`group flex w-full items-start gap-2 rounded-[10px] px-2.5 py-2.5 text-left transition ${b?"bg-primary/10 text-primary":"text-text-muted hover:bg-surface-2 hover:text-text-main"}`,children:[(0,d.jsx)("span",{className:"material-symbols-outlined mt-0.5 text-[16px] opacity-70",children:"chat_bubble"}),(0,d.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,d.jsx)("p",{className:"truncate text-[13px] font-medium leading-snug",children:a.title||"New chat"}),(0,d.jsxs)("p",{className:"mt-0.5 truncate text-[11px] opacity-60",children:[l(c?.content)||"Empty"," \xb7"," ",function(a){if(!a)return"Now";let b=new Date(a).getTime();if(Number.isNaN(b))return"Now";let c=Math.max(1,Math.round((Date.now()-b)/6e4));if(c<60)return`${c}m`;let d=Math.round(c/60);return d<24?`${d}h`:`${Math.round(d/24)}d`}(a.updatedAt)]})]})]},a.id)})})]}),(0,d.jsx)("div",{className:"border-t border-border-subtle p-3",children:(0,d.jsxs)("button",{type:"button",onClick:()=>{if(!t)return;let a=r.filter(a=>a.id!==t),b=a[0]||null;s(a),b?(u(b.id),w(b.providerId),y(b.modelId)):(u(""),w(""),y(""))},disabled:!t||0===r.length,className:"flex h-8 w-full items-center justify-center gap-1.5 rounded-[8px] text-xs font-medium text-text-muted transition hover:bg-surface-2 hover:text-danger disabled:opacity-40",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"delete"}),"Delete current chat"]})})]}),(0,d.jsxs)("div",{className:"relative flex min-w-0 flex-1 flex-col",children:[(0,d.jsxs)("div",{className:"flex shrink-0 items-center justify-between gap-2 border-b border-border-subtle px-3 py-2 lg:hidden",children:[(0,d.jsx)("button",{type:"button",onClick:()=>Q(!0),className:"flex size-11 items-center justify-center rounded-[10px] border border-border text-text-muted hover:bg-surface-2","aria-label":"Open chats","aria-expanded":P,"aria-controls":"playground-history",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[20px]",children:"history"})}),(0,d.jsxs)("div",{className:"min-w-0 text-center",children:[(0,d.jsx)("p",{className:"truncate text-sm font-semibold",children:as}),(0,d.jsx)("p",{className:"truncate text-[11px] text-text-subtle",children:at})]}),(0,d.jsx)("button",{type:"button",onClick:an,disabled:!ag,className:"flex size-11 items-center justify-center rounded-[10px] border border-border text-text-muted hover:bg-surface-2 disabled:opacity-40","aria-label":"New chat",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[20px]",children:"edit_square"})})]}),p?(0,d.jsx)("div",{role:"alert",className:"mx-4 mt-3 rounded-[10px] border border-danger/25 bg-danger/10 px-3 py-2.5 text-sm text-danger",children:(0,d.jsxs)("div",{className:"flex items-start gap-2",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"error"}),(0,d.jsx)("p",{children:p})]})}):null,(0,d.jsx)("div",{className:"flex-1 overflow-y-auto custom-scrollbar",children:0===ai.length?(0,d.jsxs)("div",{className:"flex min-h-full flex-col items-center justify-center px-6 pb-36 pt-10 text-center",children:[(0,d.jsx)("div",{className:"mb-4 flex size-12 items-center justify-center rounded-2xl border border-border bg-surface text-primary shadow-soft",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[26px]",children:"forum"})}),(0,d.jsx)("h2",{className:"text-[22px] font-semibold tracking-tight text-text-main",children:"How can I help?"}),(0,d.jsx)("p",{className:"mt-1.5 max-w-md text-[13px] leading-relaxed text-text-muted",children:"Pick a model below, then ask anything through your connected providers."}),(0,d.jsx)("div",{className:"mt-6 flex max-w-xl flex-wrap items-center justify-center gap-2",children:j.map(a=>(0,d.jsx)("button",{type:"button",disabled:!ag||c,onClick:()=>{A(a),requestAnimationFrame(()=>ac.current?.focus())},className:"rounded-full border border-border bg-surface px-3.5 py-2 text-left text-[12.5px] text-text-muted transition hover:border-primary/35 hover:bg-primary/5 hover:text-text-main disabled:opacity-40",children:a},a))}),c?(0,d.jsx)("p",{className:"mt-4 text-xs text-text-subtle",children:"Loading models…"}):null]}):(0,d.jsxs)("div",{className:"mx-auto w-full max-w-3xl px-4 py-6 lg:px-8",children:[ai.map((a,b)=>{let c="user"===a.role,e="assistant"===a.role,h=e&&a.id===F&&"streaming"===a.status,i=l(a.content)||(e?H:""),j="error"===a.status,k="stopped"===a.status,m=e&&b===ai.length-1&&"streaming"!==a.status;return(0,d.jsx)("div",{className:"group relative mb-1 border-b border-border-subtle/50 py-5 last:border-0",children:(0,d.jsxs)("div",{className:"flex gap-3.5",children:[(0,d.jsx)("div",{className:`flex size-7 shrink-0 items-center justify-center rounded-full text-[11px] font-bold ${c?"bg-primary text-white":"border border-border bg-surface-2 text-text-muted"}`,children:c?"Y":"AI"}),(0,d.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,d.jsx)("p",{className:"mb-1.5 text-[12px] font-semibold text-text-main",children:c?"You":ag?.name||"Assistant"}),a.attachments?.length?(0,d.jsx)("div",{className:"mb-3 grid max-w-md grid-cols-2 gap-2 sm:grid-cols-3",children:a.attachments.map(a=>(0,d.jsx)("a",{href:a.dataUrl,target:"_blank",rel:"noreferrer",className:"overflow-hidden rounded-lg border border-border",children:(0,d.jsx)("img",{src:a.dataUrl,alt:a.name,className:"h-24 w-full object-cover"})},a.id))}):null,e&&!j?(0,d.jsx)("div",{className:"playground-md text-[14.5px] leading-[1.7] text-text-main",dangerouslySetInnerHTML:{__html:function(a){let b=l(a);if(!b)return"";try{return g.A.sanitize(f.xI.parse(b))}catch{return b.replace(/</g,"&lt;").replace(/>/g,"&gt;")}}(i)||""}}):(0,d.jsx)("div",{className:`whitespace-pre-wrap break-words text-[14.5px] leading-[1.7] ${j?"text-danger":"text-text-main"}`,children:i}),e&&h?(0,d.jsx)("span",{className:"ml-0.5 inline-block animate-pulse text-primary",children:"▋"}):null,k?(0,d.jsx)("p",{className:"mt-2 text-xs text-text-muted",children:"Generation stopped"}):null,e&&i&&!h?(0,d.jsxs)("div",{className:"mt-2 flex items-center gap-1 opacity-100 transition sm:opacity-0 sm:group-hover:opacity-100 sm:group-focus-within:opacity-100",children:[(0,d.jsxs)("button",{type:"button",onClick:()=>aq(a.id,i),className:"inline-flex h-7 items-center gap-1 rounded-md px-2 text-[11px] font-medium text-text-muted hover:bg-surface-2 hover:text-text-main",title:"Copy",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:T===a.id?"check":"content_copy"}),T===a.id?"Copied":"Copy"]}),m&&!D?(0,d.jsxs)("button",{type:"button",onClick:()=>ar({regenerate:!0}),className:"inline-flex h-7 items-center gap-1 rounded-md px-2 text-[11px] font-medium text-text-muted hover:bg-surface-2 hover:text-text-main",title:"Regenerate",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"refresh"}),"Retry"]}):null]}):null]})]})},a.id)}),(0,d.jsx)("div",{ref:ad})]})}),(0,d.jsx)("div",{className:"shrink-0 border-t border-border-subtle bg-bg/90 backdrop-blur-xl",children:(0,d.jsxs)("div",{className:"mx-auto w-full max-w-3xl px-4 pb-4 pt-3 lg:px-6",children:[B.length>0?(0,d.jsx)("div",{className:"mb-2 flex flex-wrap gap-2",children:B.map(a=>(0,d.jsxs)("div",{className:"flex items-center gap-2 rounded-full border border-border bg-surface px-3 py-1.5",children:[(0,d.jsx)("span",{className:"max-w-[10rem] truncate text-xs text-text-muted",children:a.name}),(0,d.jsx)("button",{type:"button",onClick:()=>{var b;return b=a.id,void C(a=>a.filter(a=>a.id!==b))},className:"text-text-subtle hover:text-text-main","aria-label":"Remove attachment",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"close"})})]},a.id))}):null,(0,d.jsxs)("div",{className:"rounded-2xl border border-border-subtle bg-surface-2/80 shadow-soft ring-1 ring-border-subtle focus-within:border-primary/50 focus-within:ring-primary/20 transition",children:[(0,d.jsx)("textarea",{ref:ac,"aria-label":"Message",value:z,onChange:a=>A(a.target.value),onKeyDown:a=>{"Enter"===a.key&&!a.shiftKey&&(a.preventDefault(),ak&&ar())},placeholder:ag?`Message ${ag.name}…`:"Select a model below to start chatting",rows:1,disabled:!ag||c,className:"max-h-[28vh] min-h-[52px] w-full resize-none overflow-y-auto bg-transparent px-4 pt-3.5 text-[15px] leading-6 text-text-main outline-none placeholder:text-text-subtle custom-scrollbar disabled:opacity-50"}),(0,d.jsxs)("div",{className:"flex items-center justify-between gap-2 px-2.5 pb-2.5 pt-1",children:[(0,d.jsxs)("div",{className:"flex min-w-0 items-center gap-1.5",children:[(0,d.jsxs)("button",{type:"button",onClick:()=>Z.current?.click(),disabled:!ag||c,className:"inline-flex h-11 items-center gap-1.5 rounded-full border border-border bg-surface px-3 text-[12px] font-medium text-text-main transition hover:border-primary/40 hover:bg-primary/10 hover:text-primary disabled:cursor-not-allowed disabled:opacity-40",title:"Upload image",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"add_photo_alternate"}),(0,d.jsx)("span",{className:"hidden sm:inline",children:"Image"})]}),(0,d.jsx)("input",{ref:Z,type:"file",accept:"image/*",multiple:!0,className:"hidden",onChange:ao}),(0,d.jsxs)("div",{ref:ab,className:"relative",children:[(0,d.jsxs)("button",{type:"button",onClick:()=>S(a=>!a),className:`inline-flex h-11 items-center gap-1.5 rounded-full border px-3 text-[12px] font-medium transition ${R||X.trim()||.7!==V?"border-primary/40 bg-primary/10 text-primary":"border-border bg-surface text-text-main hover:border-primary/40 hover:bg-primary/10 hover:text-primary"}`,title:"Chat settings","aria-label":"Chat settings","aria-expanded":R,"aria-controls":"playground-chat-settings",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"tune"}),(0,d.jsx)("span",{className:"hidden sm:inline tabular-nums",children:V.toFixed(1)})]}),R?(0,d.jsxs)("div",{id:"playground-chat-settings",className:"absolute bottom-[calc(100%+8px)] left-0 z-40 w-[min(320px,calc(100vw-2rem))] space-y-3 rounded-xl border border-border bg-surface p-3 shadow-elevated",children:[(0,d.jsxs)("div",{children:[(0,d.jsxs)("div",{className:"mb-1.5 flex items-center justify-between gap-2",children:[(0,d.jsx)("p",{className:"text-[11px] font-semibold uppercase tracking-wider text-text-subtle",children:"Temperature"}),(0,d.jsx)("span",{className:"text-xs font-semibold tabular-nums text-text-main",children:V.toFixed(2)})]}),(0,d.jsx)("input",{type:"range",min:0,max:2,step:.05,value:V,onChange:a=>W(Number(a.target.value)),className:"w-full accent-[var(--color-primary,#E56A4A)]"}),(0,d.jsxs)("div",{className:"mt-1 flex justify-between text-[10px] text-text-subtle",children:[(0,d.jsx)("span",{children:"Precise"}),(0,d.jsx)("span",{children:"Creative"})]})]}),(0,d.jsxs)("div",{children:[(0,d.jsx)("p",{className:"mb-1.5 text-[11px] font-semibold uppercase tracking-wider text-text-subtle",children:"System prompt"}),(0,d.jsx)("textarea",{value:X,onChange:a=>Y(a.target.value),rows:4,placeholder:"Optional instructions for the model…",className:"w-full resize-y rounded-lg border border-border bg-bg px-2.5 py-2 text-[12.5px] leading-5 text-text-main outline-none placeholder:text-text-subtle focus:border-primary/40 custom-scrollbar"})]}),(0,d.jsx)("button",{type:"button",onClick:()=>{W(.7),Y("")},className:"text-[11px] font-medium text-text-muted hover:text-text-main",children:"Reset defaults"})]}):null]}),(0,d.jsxs)("div",{ref:_,className:"relative min-w-0",children:[(0,d.jsxs)("button",{type:"button",onClick:()=>{M(a=>{let b=!a;return b||O(""),b})},disabled:c||0===a.length,"aria-label":`Choose model, currently ${as}`,"aria-haspopup":"listbox","aria-expanded":L,"aria-controls":"playground-model-menu",className:"inline-flex h-11 max-w-[min(100vw-12rem,260px)] items-center gap-1.5 rounded-full border border-border bg-surface px-3 text-left transition hover:border-primary/40 hover:bg-surface-2 disabled:opacity-50",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px] text-primary shrink-0",children:"smart_toy"}),(0,d.jsx)("span",{className:"min-w-0 truncate text-[12.5px] font-semibold text-text-main",children:c?"Loading…":as}),(0,d.jsx)("span",{className:"material-symbols-outlined shrink-0 text-[16px] text-text-muted",children:L?"expand_less":"expand_more"})]}),L?(0,d.jsxs)("div",{id:"playground-model-menu",role:"listbox","aria-label":"Models",className:"absolute bottom-[calc(100%+8px)] left-0 z-40 w-[min(420px,calc(100vw-2rem))] overflow-hidden rounded-xl border border-border bg-surface shadow-elevated",children:[(0,d.jsxs)("div",{className:"border-b border-border-subtle px-3 py-2.5 space-y-2",children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("p",{className:"text-[11px] font-semibold uppercase tracking-wider text-text-subtle",children:"Models"}),(0,d.jsxs)("p",{className:"text-xs text-text-muted",children:[a.length," providers \xb7 search by name"]})]}),(0,d.jsxs)("div",{className:"relative",children:[(0,d.jsx)("span",{className:"material-symbols-outlined pointer-events-none absolute left-2.5 top-1/2 -translate-y-1/2 text-[16px] text-text-subtle",children:"search"}),(0,d.jsx)("input",{type:"search",value:N,onChange:a=>O(a.target.value),placeholder:"Search models…",autoFocus:!0,className:"w-full rounded-lg border border-border bg-bg py-1.5 pl-8 pr-3 text-[16px] text-text-main outline-none placeholder:text-text-subtle focus:border-primary/40"})]})]}),(0,d.jsx)("div",{className:"max-h-[min(50vh,360px)] overflow-y-auto p-1.5 custom-scrollbar",children:0===au.length?(0,d.jsxs)("p",{className:"px-3 py-6 text-center text-xs text-text-muted",children:["No models match “",N.trim(),"”"]}):au.map(a=>(0,d.jsxs)("div",{className:"mb-1",children:[(0,d.jsxs)("div",{className:"flex items-center justify-between px-2 py-1.5",children:[(0,d.jsx)("p",{className:"text-[11px] font-semibold uppercase tracking-wide text-text-subtle",children:a.providerName}),(0,d.jsx)(h.Ex,{size:"sm",variant:"default",children:a.models.length})]}),(0,d.jsx)("div",{className:"space-y-0.5",children:a.models.map(a=>{let b=a.id===x;return(0,d.jsxs)("button",{type:"button",role:"option","aria-selected":b,onClick:()=>{(a=>{let b=ae.get(a);if(!b)return;let c=r.find(a=>a.id===t);if(c&&c.messages.length>0){let a=am(b);if(!a)return;s(b=>[a,...b]),u(a.id)}else if(c)s(a=>a.map(a=>a.id===c.id?{...a,providerId:b.providerId,providerName:b.providerName,modelId:b.id,modelName:b.name}:a)),u(c.id);else{let a=am(b);if(!a)return;s(b=>[a,...b]),u(a.id)}w(b.providerId),y(b.id),M(!1)})(a.id),O("")},className:`flex w-full items-center gap-2 rounded-lg px-2.5 py-2 text-left transition ${b?"bg-primary/10 text-primary":"text-text-muted hover:bg-surface-2 hover:text-text-main"}`,children:[(0,d.jsxs)("span",{className:"min-w-0 flex-1",children:[(0,d.jsx)("span",{className:"block truncate text-[13px] font-medium",children:a.name}),(0,d.jsx)("span",{className:"block truncate text-[11px] opacity-60",children:a.requestModel})]}),b?(0,d.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"check"}):null]},a.id)})})]},a.providerId))})]}):null]})]}),(0,d.jsxs)("div",{className:"flex shrink-0 items-center gap-2",children:[D?(0,d.jsxs)("button",{type:"button",onClick:()=>{$.current?.abort()},className:"inline-flex h-11 items-center gap-1.5 rounded-full border border-border bg-surface px-3 text-[12px] font-semibold text-text-main transition hover:bg-surface-2",title:"Stop generating",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"stop_circle"}),(0,d.jsx)("span",{className:"hidden sm:inline",children:"Stop"})]}):null,(0,d.jsxs)("button",{type:"button",onClick:ar,disabled:!ak,className:`inline-flex h-11 min-w-9 items-center justify-center gap-1.5 rounded-full px-3.5 text-[13px] font-semibold transition ${ak?"bg-primary text-white shadow-[0_2px_12px_rgba(229,106,74,0.45)] hover:bg-primary-hover active:scale-[0.97]":"bg-surface-3 text-text-subtle cursor-not-allowed opacity-70"}`,title:"Send message",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px] font-bold",children:"send"}),(0,d.jsx)("span",{className:"hidden sm:inline",children:"Send"})]})]})]})]}),(0,d.jsx)("p",{className:"mt-2 text-center text-[11px] text-text-subtle",children:"Routed through ZevaiRouter \xb7 Enter to send \xb7 Shift+Enter for new line"})]})})]}),P?(0,d.jsx)("button",{type:"button",className:"fixed inset-0 z-20 bg-black/40 lg:hidden","aria-label":"Close history",onClick:()=>Q(!1)}):null]})}f.xI.setOptions({gfm:!0,breaks:!0})},75746:(a,b,c)=>{Promise.resolve().then(c.bind(c,79286))},79286:(a,b,c)=>{"use strict";c.d(b,{default:()=>d});let d=(0,c(77943).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/zevairouter-build/src/app/(dashboard)/dashboard/basic-chat/BasicChatPageClient.js\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/zevairouter-build/src/app/(dashboard)/dashboard/basic-chat/BasicChatPageClient.js","default")},93898:(a,b,c)=>{Promise.resolve().then(c.bind(c,73180))}};
@@ -1,11 +1,12 @@
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={"./cloakbrowserRuntime":99436,"./cloakbrowserRuntime.js":99436,"./postinstall":77897,"./postinstall.js":77897,"./safeGlobalInstall":65185,"./safeGlobalInstall.js":65185,"./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()}}}},65185:(a,b,c)=>{"use strict";a=c.nmd(a);let{execFileSync:d,spawnSync:e}=c(79646),f=c(29021),g=c(21820),h=c(33873),i="zevairouter",j="zevai";function k(a){console.log(`[zevai-install] ${a}`)}function l(a){console.warn(`[zevai-install] ${a}`)}function m(){let a=process.platform;return"darwin"===a?{id:"mac",label:"macOS"}:"win32"===a?{id:"windows",label:"Windows"}:"linux"===a?{id:"linux",label:"Linux"}:{id:a,label:a}}function n(){let a=h.dirname(process.execPath);for(let b of"win32"===process.platform?[h.join(a,"npm.cmd"),h.join(a,"npm"),"npm.cmd","npm"]:[h.join(a,"npm"),h.join(a,"..","lib","node_modules","npm","bin","npm-cli.js")])if("npm"!==b&&"npm.cmd"!==b&&f.existsSync(b))return b;try{let a="win32"===process.platform?"where":"which",b=d(a,["npm"],{encoding:"utf8"}).trim().split(/\r?\n/)[0];if(b)return b}catch{}return"win32"===process.platform?"npm.cmd":"npm"}function o(a,b,c={}){let d={...process.env,npm_config_fund:"false",npm_config_audit:"false",npm_config_update_notifier:"false",npm_node_execpath:process.execPath},f=a.endsWith("npm-cli.js"),g=e(f?process.execPath:a,f?[a,...b]:b,{encoding:"utf8",env:d,shell:"win32"===process.platform&&!f,timeout:c.timeout||6e5});return{ok:0===g.status,status:g.status,stdout:g.stdout||"",stderr:g.stderr||"",error:g.error}}function p(a){let b=(o(a,["root","-g"],{timeout:3e4}).stdout||"").trim().split(/\r?\n/).filter(Boolean).pop();return b&&f.existsSync(b)?b:"win32"===process.platform?h.join(h.dirname(process.execPath),"node_modules"):h.join(h.dirname(process.execPath),"..","lib","node_modules")}function q(a){let b=(o(a,["prefix","-g"],{timeout:3e4}).stdout||"").trim().split(/\r?\n/).filter(Boolean).pop();if(b&&f.existsSync(b)){if("win32"===process.platform)return b;let a=h.join(b,"bin");if(f.existsSync(a))return a}return h.dirname(process.execPath)}function r(a){let b=h.join(a,i);f.existsSync(b)&&(k(`Removing previous install: ${b}`),f.rmSync(b,{recursive:!0,force:!0,maxRetries:5,retryDelay:200}));try{for(let b of f.readdirSync(a))if(b.startsWith(`.${i}-`)||b===`.${i}`){let c=h.join(a,b);k(`Removing leftover: ${c}`),f.rmSync(c,{recursive:!0,force:!0,maxRetries:5,retryDelay:200})}}catch{}}function s(a){for(let b of"win32"===process.platform?[`${j}.cmd`,`${j}`,`${j}.ps1`]:[j]){let c=h.join(a,b);try{f.existsSync(c)&&f.rmSync(c,{force:!0})}catch{}}}function t(a){try{let b=h.join(a,i,"package.json");return JSON.parse(f.readFileSync(b,"utf8")).version||null}catch{return null}}function u(a){try{return f.existsSync(h.join(a,i,"package.json"))}catch{return!1}}function v(a={}){let b=m(),c=a.version||"latest",d=a.packageSpec||`${i}@${c}`,g=n(),w=p(g),x=q(g),y=u(w),z=y?t(w):null;k(`OS: ${b.label} (${process.platform}/${process.arch})`),k(`Node: ${process.version} @ ${process.execPath}`),k(`npm: ${g}`),k(`global root: ${w}`),k(`global bin: ${x}`),k(`installing: ${d}${z?` (was ${z})`:""}`);let A=!0===a.forceClean;A&&!y?(r(w),s(x)):A&&y&&l("forceClean requested but existing package kept until install succeeds (OOM-safe)");let B=["install","-g",d,"--prefer-online"];process.env.npm_config_registry||process.env.ZEVAI_NPM_REGISTRY&&B.push("--registry",process.env.ZEVAI_NPM_REGISTRY);let C=o(g,B,{timeout:6e5}),D=`${C.stderr}
2
- ${C.stdout}
3
- ${C.error||""}`;if(!C.ok&&/ENOTEMPTY|directory not empty|rename/i.test(D)&&(l("ENOTEMPTY/rename failed — force-clean and retry once"),r(w),s(x),C=o(g,B,{timeout:6e5}),D=`${C.stderr}
4
- ${C.stdout}
5
- ${C.error||""}`),!C.ok&&/Killed|ENOMEM|JavaScript heap out of memory|signal SIGKILL/i.test(D)&&(l("Install killed (likely OOM). Retrying once — ensure 1–2GB swap on 2GB VPS."),C=o(g,B,{timeout:6e5}),D=`${C.stderr}
6
- ${C.stdout}
7
- ${C.error||""}`),!C.ok){let a=u(w),c=a?t(w):null;return{ok:!1,nodePath:process.execPath,npmPath:g,globalRoot:w,platform:b,version:c||void 0,error:(D.slice(0,1200)||`npm exited ${C.status}`)+(a?`
8
- (Previous install still present: ${i}@${c||"?"}. Binary should still work.)`:"\n(Package missing after failed install — run: npm i -g zevairouter@latest --prefer-online)"),log:D.slice(0,3e3)}}let E=t(w),F="win32"===process.platform?h.join(x,`${j}.cmd`):h.join(x,j);try{let a=(e("win32"===process.platform?"where":"which",[j],{encoding:"utf8",shell:"win32"===process.platform}).stdout||"").trim().split(/\r?\n/)[0];a&&f.existsSync(F)&&h.resolve(a)!==h.resolve(F)&&(l(`PATH resolves '${j}' to ${a}`),l(`This install put binary at ${F}`),l("Use the Node that owns this install, or put that bin dir first in PATH."))}catch{}return k(`OK ${i}@${E||"?"} → ${F}`),{ok:!0,version:E,zevaiPath:f.existsSync(F)?F:null,nodePath:process.execPath,npmPath:g,globalRoot:w,globalBin:x,platform:b}}function w(){let a=m(),b=n(),c=p(b),d=q(b),k=h.join(c,i),l=null;try{l=JSON.parse(f.readFileSync(h.join(k,"package.json"),"utf8")).version}catch{l=null}console.log(`
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={"./cloakbrowserRuntime":99436,"./cloakbrowserRuntime.js":99436,"./postinstall":77897,"./postinstall.js":77897,"./safeGlobalInstall":65185,"./safeGlobalInstall.js":65185,"./sqliteRuntime":24344,"./sqliteRuntime.js":24344,"./startupRuntime":83445,"./startupRuntime.js":83445,"./streamCommand":69069,"./streamCommand.js":69069,"./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()}}}},65185:(a,b,c)=>{"use strict";a=c.nmd(a);let{execFileSync:d,spawnSync:e}=c(79646),f=c(29021),g=c(21820),h=c(33873),i="zevairouter",j="zevai";function k(a){console.log(`[zevai-install] ${a}`)}function l(a){console.warn(`[zevai-install] ${a}`)}function m(){let a=process.platform;return"darwin"===a?{id:"mac",label:"macOS"}:"win32"===a?{id:"windows",label:"Windows"}:"linux"===a?{id:"linux",label:"Linux"}:{id:a,label:a}}function n(){let a=h.dirname(process.execPath);for(let b of"win32"===process.platform?[h.join(a,"node_modules","npm","bin","npm-cli.js"),h.join(a,"npm.cmd"),h.join(a,"npm"),"npm.cmd","npm"]:[h.join(a,"npm"),h.join(a,"..","lib","node_modules","npm","bin","npm-cli.js")])if("npm"!==b&&"npm.cmd"!==b&&f.existsSync(b))return b;try{let a="win32"===process.platform?"where":"which",b=d(a,["npm"],{encoding:"utf8"}).trim().split(/\r?\n/)[0];if(b)return b}catch{}return"win32"===process.platform?"npm.cmd":"npm"}function o(a,b,c={}){let d={...process.env,npm_config_fund:"false",npm_config_audit:"false",npm_config_update_notifier:"false",npm_node_execpath:process.execPath},i=a.endsWith("npm-cli.js"),j=i?process.execPath:a,k=i?[a,...b]:b;if(c.stream){let a=f.mkdtempSync(h.join(g.tmpdir(),"zevai-command-")),b=h.join(a,"result.json");try{let a=h.join(__dirname,"streamCommand.js"),g=e(process.execPath,[a,b,j,...k],{env:{...d,ZEVAI_STREAM_COMMAND_SHELL:"win32"!==process.platform||i?"0":"1"},stdio:"inherit",timeout:c.timeout||6e5,windowsHide:!0}),l={};try{l=JSON.parse(f.readFileSync(b,"utf8"))}catch{}return{ok:0===g.status&&0===l.status,status:l.status??g.status,stdout:l.stdout||"",stderr:l.stderr||"",error:g.error||l.error||null}}finally{try{f.rmSync(a,{recursive:!0,force:!0})}catch{}}}let l=e(j,k,{encoding:"utf8",env:d,shell:"win32"===process.platform&&!i,timeout:c.timeout||6e5});return{ok:0===l.status,status:l.status,stdout:l.stdout||"",stderr:l.stderr||"",error:l.error}}function p(a){let b=(o(a,["root","-g"],{timeout:3e4}).stdout||"").trim().split(/\r?\n/).filter(Boolean).pop();return b&&f.existsSync(b)?b:"win32"===process.platform?h.join(h.dirname(process.execPath),"node_modules"):h.join(h.dirname(process.execPath),"..","lib","node_modules")}function q(a){let b=(o(a,["prefix","-g"],{timeout:3e4}).stdout||"").trim().split(/\r?\n/).filter(Boolean).pop();if(b&&f.existsSync(b)){if("win32"===process.platform)return b;let a=h.join(b,"bin");if(f.existsSync(a))return a}return h.dirname(process.execPath)}function r(a){let b=h.join(a,i);f.existsSync(b)&&(k(`Removing previous install: ${b}`),f.rmSync(b,{recursive:!0,force:!0,maxRetries:5,retryDelay:200}));try{for(let b of f.readdirSync(a))if(b.startsWith(`.${i}-`)||b===`.${i}`){let c=h.join(a,b);k(`Removing leftover: ${c}`),f.rmSync(c,{recursive:!0,force:!0,maxRetries:5,retryDelay:200})}}catch{}}function s(a){for(let b of"win32"===process.platform?[`${j}.cmd`,`${j}`,`${j}.ps1`]:[j]){let c=h.join(a,b);try{f.existsSync(c)&&f.rmSync(c,{force:!0})}catch{}}}function t(){return"win32"===process.platform?[`${j}.cmd`,j,`${j}.ps1`]:[j]}function u(a,b){let c=h.join(a,i);if(!f.existsSync(h.join(c,"package.json")))return null;let d=f.mkdtempSync(h.join(g.tmpdir(),"zevai-install-rollback-")),e=h.join(d,i),j=h.join(d,"bin");try{for(let a of(f.cpSync(c,e,{recursive:!0,preserveTimestamps:!0,verbatimSymlinks:!0}),f.mkdirSync(j,{recursive:!0}),t())){let c=h.join(b,a);f.existsSync(c)&&f.cpSync(c,h.join(j,a),{preserveTimestamps:!0,verbatimSymlinks:!0})}return{backupRoot:d,packageBackup:e,binBackup:j}}catch(a){try{f.rmSync(d,{recursive:!0,force:!0})}catch{}throw a}}function v(a,b,c){if(!a)return;let d=h.join(b,i);for(let b of(f.rmSync(d,{recursive:!0,force:!0,maxRetries:5,retryDelay:200}),f.cpSync(a.packageBackup,d,{recursive:!0,preserveTimestamps:!0,verbatimSymlinks:!0}),s(c),t())){let d=h.join(a.binBackup,b);f.existsSync(d)&&f.cpSync(d,h.join(c,b),{preserveTimestamps:!0,verbatimSymlinks:!0})}}function w(a){if(a)try{f.rmSync(a.backupRoot,{recursive:!0,force:!0})}catch{}}function x(a){try{let b=h.join(a,i,"package.json");return JSON.parse(f.readFileSync(b,"utf8")).version||null}catch{return null}}function y(a){try{return f.existsSync(h.join(a,i,"package.json"))}catch{return!1}}function z(a={}){let b=m(),c=String(a.version||"latest").replace(/^v(?=\d)/,""),d=a.packageSpec||`${i}@${c}`,g=/^(?:latest|\d+\.\d+\.\d+(?:[-+][0-9A-Za-z.-]+)?)$/.test(c),t=d===`${i}@${c}`;if(!g||!t)return{ok:!1,nodePath:process.execPath,npmPath:"",globalRoot:"",platform:b,error:"Version must be 'latest' or an exact semantic version (for example 1.2.3)."};let A=n(),B=p(A),C=q(A),D=y(B),E=D?x(B):null,F=null;if(D&&!a.externalRollback)try{F=u(B,C),k(`rollback snapshot: ${F.backupRoot}`)}catch(a){return{ok:!1,nodePath:process.execPath,npmPath:A,globalRoot:B,platform:b,version:E||void 0,error:`Refusing to update without a rollback snapshot: ${a.message}`}}k(`OS: ${b.label} (${process.platform}/${process.arch})`),k(`Node: ${process.version} @ ${process.execPath}`),k(`npm: ${A}`),k(`global root: ${B}`),k(`global bin: ${C}`),k(`installing: ${d}${E?` (was ${E})`:""}`);let G=!0===a.forceClean;G&&!D?(r(B),s(C)):G&&D&&l("forceClean requested but existing package kept until install succeeds (OOM-safe)");let H=["install","-g",d,"--prefer-online"];process.env.npm_config_registry||process.env.ZEVAI_NPM_REGISTRY&&H.push("--registry",process.env.ZEVAI_NPM_REGISTRY);let I=o(A,H,{timeout:6e5,stream:!0}),J=`${I.stderr}
2
+ ${I.stdout}
3
+ ${I.error||""}`;if(!I.ok&&/ENOTEMPTY|directory not empty|rename/i.test(J)){l("ENOTEMPTY/rename failed — force-clean and retry once");try{r(B),s(C),I=o(A,H,{timeout:6e5,stream:!0}),J=`${I.stderr}
4
+ ${I.stdout}
5
+ ${I.error||""}`}catch(a){I={ok:!1,status:null,stderr:a.message,stdout:"",error:a},J=`ENOTEMPTY recovery failed: ${a.message}`}}if(!I.ok&&/Killed|ENOMEM|JavaScript heap out of memory|signal SIGKILL/i.test(J)&&(l("Install killed (likely OOM). Retrying once — ensure 1–2GB swap on 2GB VPS."),I=o(A,H,{timeout:6e5,stream:!0}),J=`${I.stderr}
6
+ ${I.stdout}
7
+ ${I.error||""}`),!I.ok){let a="";if(F)try{v(F,B,C),l(`Install failed; restored ${i}@${E||"?"}.`)}catch(b){a=`
8
+ Rollback failed: ${b.message}`}w(F);let c=y(B),d=c?x(B):null;return{ok:!1,nodePath:process.execPath,npmPath:A,globalRoot:B,platform:b,version:d||void 0,error:(J.slice(0,1200)||`npm exited ${I.status}`)+a+(c?`
9
+ (Previous install still present: ${i}@${d||"?"}. Binary should still work.)`:"\n(Package missing after failed install — run: npm i -g zevairouter@latest --prefer-online)"),log:J.slice(0,3e3)}}let K=x(B),L="win32"===process.platform?h.join(C,`${j}.cmd`):h.join(C,j),M="latest"!==c?String(c).replace(/^v/,""):null,N=M&&K!==M;if(!K||!f.existsSync(L)||N){let a="";if(F)try{v(F,B,C)}catch(b){a=` Rollback failed: ${b.message}`}return w(F),{ok:!1,nodePath:process.execPath,npmPath:A,globalRoot:B,platform:b,version:F&&E||void 0,error:N?`npm installed ${K||"an unknown version"}, expected ${M}.${a}`:`npm exited successfully but the installed package or zevai binary is incomplete.${a}`}}a.retainRollback||w(F);try{let a=(e("win32"===process.platform?"where":"which",[j],{encoding:"utf8",shell:"win32"===process.platform}).stdout||"").trim().split(/\r?\n/)[0];a&&f.existsSync(L)&&h.resolve(a)!==h.resolve(L)&&(l(`PATH resolves '${j}' to ${a}`),l(`This install put binary at ${L}`),l("Use the Node that owns this install, or put that bin dir first in PATH."))}catch{}return k(`OK ${i}@${K||"?"} → ${L}`),{ok:!0,version:K,zevaiPath:f.existsSync(L)?L:null,nodePath:process.execPath,npmPath:A,globalRoot:B,globalBin:C,platform:b,rollback:a.retainRollback?F:null,previousVersion:E||null}}function A(){let a=m(),b=n(),c=p(b),d=q(b),k=h.join(c,i),l=null;try{l=JSON.parse(f.readFileSync(h.join(k,"package.json"),"utf8")).version}catch{l=null}console.log(`
9
10
  Zevai install doctor
10
11
  ────────────────────
11
12
  OS: ${a.label} (${process.platform}/${process.arch})
@@ -17,8 +18,8 @@ Zevai install doctor
17
18
  package dir: ${k} ${f.existsSync(k)?"(exists)":"(missing)"}
18
19
  version: ${l||"not installed for this Node"}
19
20
  home data: ${h.join(g.homedir(),".zevai")}
20
- `);try{let a=(e("win32"===process.platform?"where":"which",["-a",j],{encoding:"utf8",shell:"win32"===process.platform}).stdout||"").trim().split(/\r?\n/).filter(Boolean);if(a.length){for(let b of(console.log(" PATH zevai binaries:"),a))console.log(` - ${b}`);a.length>1&&console.log("\n ⚠ Multiple zevai on PATH — use one Node only (nvm use / brew unlink).")}}catch{console.log(" PATH zevai: not found")}console.log("")}if(c.c[c.s]===a){let a=process.argv.slice(2);(a.includes("--doctor")||a.includes("doctor"))&&(w(),process.exit(0));let b="latest",c=a.indexOf("--version");c>=0&&a[c+1]&&(b=a[c+1]),a.includes("--latest")&&(b="latest");let d=v({version:b,forceClean:a.includes("--force-clean")||a.includes("--clean")});d.ok||(console.error(d.error||"install failed"),process.exit(1)),console.log(`
21
- Done. Run: zevai --version`),d.zevaiPath&&console.log(`Binary: ${d.zevaiPath}`),process.exit(0)}a.exports={safeInstallGlobal:v,printDoctor:w,detectPlatform:m,resolveNpmForThisNode:n,getGlobalRoot:p,APP_NAME:i,BIN_NAME:j}},75949:(a,b,c)=>{"use strict";c.r(b),c.d(b,{DEFAULT_BULK_IMPORT_ENGINE:()=>h,PROXY_EGRESS_ECHO_URLS:()=>k,buildAccountFingerprint:()=>n,buildFingerprintInitScript:()=>p,buildVerifiedProxyLaunchOptions:()=>w,compactAccountFingerprint:()=>o,extractCloakProxyProfile:()=>x,forceCloseBrowser:()=>C,getCloakProxyProfile:()=>y,launchBulkImportBrowser:()=>A,makeBrowserLauncher:()=>B,newStealthContext:()=>q,normalizeBulkImportEngine:()=>m,parseProxyEgressIp:()=>r,probeProxyEgressBeforeLaunch:()=>t,resolveProxyLaunchProfile:()=>v});var d=c(77598),e=c(77030),f=c.n(e),g=c(47774);let h="cloakbrowser",i=new Set(["cloakbrowser"]),j=new WeakMap,k=Object.freeze(["https://myip.ipip.net","https://ip.3322.net","https://cip.cc"]),l=Object.freeze({CN:{timezone:"Asia/Shanghai",locale:"zh-CN"},HK:{timezone:"Asia/Hong_Kong",locale:"zh-HK"},MO:{timezone:"Asia/Macau",locale:"zh-MO"},TW:{timezone:"Asia/Taipei",locale:"zh-TW"},SG:{timezone:"Asia/Singapore",locale:"en-SG"},JP:{timezone:"Asia/Tokyo",locale:"ja-JP"},KR:{timezone:"Asia/Seoul",locale:"ko-KR"},US:{locale:"en-US"},GB:{locale:"en-GB"}});function m(a){if("string"!=typeof a||!a.trim())return h;let b=a.trim().toLowerCase();return"cloak"===b||"cloackbrowser"===b||"cloack"===b||"cloak-browser"===b||"chromium"===b||"chrome"===b||"camoufox"===b||"playwright"===b?"cloakbrowser":i.has(b)?b:h}function n(a){let b=(0,d.createHash)("sha256").update(String(a??`${Date.now()}-${Math.random()}`)).digest(),c=0,e=()=>(c>=b.length&&(b=(0,d.createHash)("sha256").update(b).digest(),c=0),b[c++]),f=a=>a[Math.floor(e()/256*a.length)%a.length],g=f([{width:1366,height:768},{width:1440,height:900},{width:1536,height:864},{width:1920,height:1080},{width:1280,height:800},{width:1600,height:900},{width:1280,height:720},{width:1680,height:1050},{width:2560,height:1440}]),h=g.width-e()%17,i=g.height-e()%13,j=f([0,30,40,48]),k=f([24,30,32]);return{seed:String(a??""),viewport:{width:h,height:i},deviceScaleFactor:f([1,1,1.25,1.5,2]),hardwareConcurrency:f([4,6,8,8,12,16]),deviceMemory:f([4,8,8,16]),maxTouchPoints:0,screen:{width:h,height:i,availWidth:h,availHeight:Math.max(i-j,Math.floor(.92*i)),colorDepth:k,pixelDepth:k}}}function o(a,{maxWidth:b=1280,maxHeight:c=800,maxDeviceScaleFactor:d=1.25}={}){if(!a||"object"!=typeof a)return a;let e=a.viewport||{},f=a.screen||{},g=Math.min(Number(e.width)||b,b),h=Math.min(Number(e.height)||c,c),i=Number(f.height)||h,j=Number(f.availHeight)||i,k=Math.max(0,i-j);return{...a,viewport:{width:g,height:h},deviceScaleFactor:Math.min(Number(a.deviceScaleFactor)||1,d),screen:{...f,width:g,height:h,availWidth:g,availHeight:Math.max(0,h-Math.min(k,48))}}}function p({languages:a,fingerprint:b}={}){return`
21
+ `);try{let a=(e("win32"===process.platform?"where":"which",["-a",j],{encoding:"utf8",shell:"win32"===process.platform}).stdout||"").trim().split(/\r?\n/).filter(Boolean);if(a.length){for(let b of(console.log(" PATH zevai binaries:"),a))console.log(` - ${b}`);a.length>1&&console.log("\n ⚠ Multiple zevai on PATH — use one Node only (nvm use / brew unlink).")}}catch{console.log(" PATH zevai: not found")}console.log("")}if(c.c[c.s]===a){let a=process.argv.slice(2);(a.includes("--doctor")||a.includes("doctor"))&&(A(),process.exit(0));let b="latest",c=a.indexOf("--version");c>=0&&a[c+1]&&(b=a[c+1]),a.includes("--latest")&&(b="latest");let d=z({version:b,forceClean:a.includes("--force-clean")||a.includes("--clean"),externalRollback:a.includes("--external-rollback")});d.ok||(console.error(d.error||"install failed"),process.exit(1)),console.log(`
22
+ Done. Run: zevai --version`),d.zevaiPath&&console.log(`Binary: ${d.zevaiPath}`),process.exit(0)}a.exports={cleanupInstallRollback:w,createInstallRollback:u,safeInstallGlobal:z,printDoctor:A,detectPlatform:m,resolveNpmForThisNode:n,restoreInstallRollback:v,getGlobalRoot:p,APP_NAME:i,BIN_NAME:j}},69069:(a,b,c)=>{"use strict";let{spawn:d}=c(79646),e=c(29021),[,,f,g,...h]=process.argv,i="1"===process.env.ZEVAI_STREAM_COMMAND_SHELL,j="",k="",l=!1;function m(a,b){let c=a+b.toString();return c.length<=131072?c:c.slice(-131072)}function n(a,b){l||(l=!0,e.writeFileSync(f,JSON.stringify({status:a,stdout:j,stderr:k,error:b?String(b.message||b):""})))}f&&g||(process.stderr.write("streamCommand requires a result path and command\n"),process.exit(2));let o=d(g,h,{env:process.env,shell:i,stdio:["ignore","pipe","pipe"],windowsHide:!0});for(let a of(o.stdout.on("data",a=>{j=m(j,a),process.stdout.write(a)}),o.stderr.on("data",a=>{k=m(k,a),process.stderr.write(a)}),o.on("error",a=>{n(null,a),process.exitCode=1}),o.on("close",(a,b)=>{n(a,b?Error(`terminated by ${b}`):null),process.exitCode=Number.isInteger(a)&&a>=0?a:1}),["SIGINT","SIGTERM"]))process.once(a,()=>{try{o.kill(a)}catch{}})},75949:(a,b,c)=>{"use strict";c.r(b),c.d(b,{DEFAULT_BROWSER_LAUNCH_TIMEOUT_MS:()=>m,DEFAULT_BULK_IMPORT_ENGINE:()=>h,DEFAULT_CONTEXT_CLOSE_TIMEOUT_MS:()=>o,DEFAULT_CONTEXT_CREATE_TIMEOUT_MS:()=>n,PROXY_EGRESS_ECHO_URLS:()=>p,buildAccountFingerprint:()=>s,buildFingerprintInitScript:()=>u,buildVerifiedProxyLaunchOptions:()=>C,compactAccountFingerprint:()=>t,extractCloakProxyProfile:()=>D,forceCloseBrowser:()=>M,getBrowserProcessId:()=>I,getBulkImportBrowserHeadless:()=>F,getCloakProxyProfile:()=>E,launchBulkImportBrowser:()=>K,makeBrowserLauncher:()=>L,newStealthContext:()=>v,normalizeBulkImportEngine:()=>r,parseProxyEgressIp:()=>x,probeProxyEgressBeforeLaunch:()=>z,resolveProxyLaunchProfile:()=>B,withAutomationTimeout:()=>w});var d=c(77598),e=c(77030),f=c.n(e),g=c(47774);let h="cloakbrowser",i=new Set(["cloakbrowser"]),j=new WeakMap,k=new WeakMap,l=new WeakMap,m=9e4,n=3e4,o=5e3,p=Object.freeze(["https://myip.ipip.net","https://ip.3322.net","https://cip.cc"]),q=Object.freeze({CN:{timezone:"Asia/Shanghai",locale:"zh-CN"},HK:{timezone:"Asia/Hong_Kong",locale:"zh-HK"},MO:{timezone:"Asia/Macau",locale:"zh-MO"},TW:{timezone:"Asia/Taipei",locale:"zh-TW"},SG:{timezone:"Asia/Singapore",locale:"en-SG"},JP:{timezone:"Asia/Tokyo",locale:"ja-JP"},KR:{timezone:"Asia/Seoul",locale:"ko-KR"},US:{locale:"en-US"},GB:{locale:"en-GB"}});function r(a){if("string"!=typeof a||!a.trim())return h;let b=a.trim().toLowerCase();return"cloak"===b||"cloackbrowser"===b||"cloack"===b||"cloak-browser"===b||"chromium"===b||"chrome"===b||"camoufox"===b||"playwright"===b?"cloakbrowser":i.has(b)?b:h}function s(a){let b=(0,d.createHash)("sha256").update(String(a??`${Date.now()}-${Math.random()}`)).digest(),c=0,e=()=>(c>=b.length&&(b=(0,d.createHash)("sha256").update(b).digest(),c=0),b[c++]),f=a=>a[Math.floor(e()/256*a.length)%a.length],g=f([{width:1366,height:768},{width:1440,height:900},{width:1536,height:864},{width:1920,height:1080},{width:1280,height:800},{width:1600,height:900},{width:1280,height:720},{width:1680,height:1050},{width:2560,height:1440}]),h=g.width-e()%17,i=g.height-e()%13,j=f([0,30,40,48]),k=f([24,30,32]);return{seed:String(a??""),viewport:{width:h,height:i},deviceScaleFactor:f([1,1,1.25,1.5,2]),hardwareConcurrency:f([4,6,8,8,12,16]),deviceMemory:f([4,8,8,16]),maxTouchPoints:0,screen:{width:h,height:i,availWidth:h,availHeight:Math.max(i-j,Math.floor(.92*i)),colorDepth:k,pixelDepth:k}}}function t(a,{maxWidth:b=1280,maxHeight:c=800,maxDeviceScaleFactor:d=1.25}={}){if(!a||"object"!=typeof a)return a;let e=a.viewport||{},f=a.screen||{},g=Math.min(Number(e.width)||b,b),h=Math.min(Number(e.height)||c,c),i=Number(f.height)||h,j=Number(f.availHeight)||i,k=Math.max(0,i-j);return{...a,viewport:{width:g,height:h},deviceScaleFactor:Math.min(Number(a.deviceScaleFactor)||1,d),screen:{...f,width:g,height:h,availWidth:g,availHeight:Math.max(0,h-Math.min(k,48))}}}function u({languages:a,fingerprint:b}={}){return`
22
23
  (() => {
23
24
  const profile = ${JSON.stringify({languages:Array.isArray(a)?a:null,hardwareConcurrency:b?.hardwareConcurrency??null,deviceMemory:b?.deviceMemory??null,maxTouchPoints:b?.maxTouchPoints??null,screen:b?.screen??null})};
24
25
  try {
@@ -52,9 +53,9 @@ Done. Run: zevai --version`),d.zevaiPath&&console.log(`Binary: ${d.zevaiPath}`)
52
53
  }
53
54
  } catch {}
54
55
  })();
55
- `}async function q(a,b={}){let{languages:c,fingerprint:d,...e}=b||{},f=await a.newContext(e);if(Array.isArray(c)&&c.length||d&&"object"==typeof d)try{await f.addInitScript(p({languages:c,fingerprint:d}))}catch{}return f}function r(a){let b=String(a||"").trim();if(!b)return null;if(f().isIP(b))return b;try{let a=JSON.parse(b);for(let b of["ip","query","address","origin"]){let c=String(a?.[b]||"").trim();if(f().isIP(c))return c}}catch{}for(let a of b.matchAll(/(?:\d{1,3}\.){3}\d{1,3}/g))if(f().isIP(a[0]))return a[0];for(let a of b.split(/[\s,;()[\]{}<>"'=\uFF1A]+/)){let b=a.replace(/^[^0-9a-f:]+|[^0-9a-f:]+$/gi,"");if(b.includes(":")&&f().isIP(b))return b}return null}async function s(a){if(a){if("function"==typeof a.close)return void await Promise.resolve(a.close()).catch(()=>null);"function"==typeof a.destroy&&await Promise.resolve(a.destroy()).catch(()=>null)}}async function t(a,{timeoutMs:b=8e3,urls:c=k,fetchImpl:d=g.hd,createProxyAgent:e=a=>new g.ProxyAgent(a)}={}){let f=null,h=[],i=null;try{try{f=e(a)}catch{return{ok:!1,ip:null,url:null,attempts:0,attemptedUrls:h,error:"proxy agent setup failed"}}for(let a of c){h.push(a);try{let c=await d(a,{dispatcher:f,redirect:"follow",signal:AbortSignal.timeout(b),headers:{Accept:"text/plain, application/json;q=0.9, */*;q=0.1","Cache-Control":"no-cache"}});if(!c?.ok){i=`HTTP ${c?.status||0}`;continue}let e=r(await c.text());if(!e){i="exit-IP response was not recognized";continue}return{ok:!0,ip:e,url:a,attempts:h.length,attemptedUrls:h,error:null}}catch(a){i=a?.name==="TimeoutError"?`timed out after ${b}ms`:"request failed"}}return{ok:!1,ip:null,url:null,attempts:h.length,attemptedUrls:h,error:i||"all exit-IP services failed"}}finally{await s(f)}}async function u(a,{timeoutMs:b=5e3,fetchImpl:c=g.hd}={}){try{let d=await c(`https://ipwho.is/${encodeURIComponent(a)}`,{redirect:"follow",signal:AbortSignal.timeout(b),headers:{Accept:"application/json"}});if(!d?.ok)return null;let e=await d.json();if(e?.success===!1)return null;let f=String(e?.country_code||"").trim().toUpperCase(),g=String(e?.timezone?.id||"").trim(),h=l[f]?.locale||(f?`en-${f}`:"");return g&&h?{countryCode:f||null,timezone:g,locale:h,source:"ip-geo"}:null}catch{return null}}async function v(a,b={}){let c=await t(a,b);if(!c.ok||!c.ip){let a=Error(`Manual proxy exit IP could not be verified before browser launch (${c.error||"no response"}); no phone number was purchased`);throw a.code="CLOAKBROWSER_PROXY_EGRESS_UNAVAILABLE",a}let d=function(a){try{let b=new URL(String(a||"").trim()),c=[...decodeURIComponent(b.username||"").matchAll(/(?:^|__)cr\.([a-z]{2})(?=__|$)/gi)],d=c.at(-1)?.[1]?.toUpperCase()||null,e=d?l[d]:null;return e?.timezone&&e?.locale?{countryCode:d,...e,source:"proxy-country"}:null}catch{return null}}(a)||await u(c.ip,b);if(!d?.timezone||!d?.locale){let a=Error("Manual proxy region could not be aligned with CloakBrowser; no phone number was purchased");throw a.code="CLOAKBROWSER_PROXY_GEOIP_UNAVAILABLE",a}return Object.freeze({egressIp:c.ip,timezone:d.timezone,locale:d.locale,countryCode:d.countryCode||null,source:d.source,probeUrl:c.url,probeAttempts:c.attempts})}function w(a,b){let c=["--fingerprint-webrtc-ip=","--fingerprint-timezone=","--fingerprint-locale=","--lang="],d=(a?.args||[]).filter(a=>!c.some(b=>String(a).startsWith(b)));return d.push(`--fingerprint-webrtc-ip=${b.egressIp}`,`--fingerprint-timezone=${b.timezone}`,`--lang=${b.locale}`,`--fingerprint-locale=${b.locale}`),{...a,args:d,timezone:b.timezone,locale:b.locale,geoip:!1}}function x(a=[]){let b=b=>{let c=`${b}=`,d=(a||[]).find(a=>String(a).startsWith(c));return d?String(d).slice(c.length):null};return{egressIp:b("--fingerprint-webrtc-ip"),timezone:b("--fingerprint-timezone"),locale:b("--fingerprint-locale")||b("--lang")}}function y(a){return a&&"object"==typeof a&&j.get(a)||null}async function z({proxyUrl:a,headless:b=!1,windowSize:d=null,requireProxyGeoip:e=!1}={}){let{ensureDisplayForHeadedBrowser:f}=await c.e(3331).then(c.bind(c,13331)),g=function(a){try{return c(50982)(`./${a}`)}catch{return null}}("cloakbrowserRuntime"),h=null;if(g?.ensureCloakbrowserRuntime){let a=g.ensureCloakbrowserRuntime({silent:!1});if(!a.ok&&a.error)throw a.error;h=a.module||g.loadCloakbrowserModule?.()}if(!h?.launch)try{let a=await Promise.resolve().then(function(){var a=Error("Cannot find module 'cloakbrowser'");throw a.code="MODULE_NOT_FOUND",a});h=a?.default||a}catch(b){let a=Error("cloakbrowser is not installed. Bulk import will auto-install on next run, or run: cd ~/.zevai/runtime && npm install cloakbrowser mmdb-lib playwright-core");throw a.code="CLOAKBROWSER_PACKAGE_MISSING",a.cause=b,a}if(!h?.launch){let a=Error("cloakbrowser loaded but launch() is missing");throw a.code="CLOAKBROWSER_API_MISMATCH",a}let i=!0===b;if(!i){let a=f();if(!a.ok)throw a.error}let k={headless:i,humanize:!0};a&&(k.proxy=a,k.geoip=!0),d?.width&&d?.height&&(k.args=[`--window-size=${d.width},${d.height}`]);let l=k,m=null;a&&e&&(l=w(k,m=await v(a)));try{let a=await h.launch(l);return m&&j.set(a,Object.freeze({...m})),a}catch(b){let a=String(b?.message||b||"");if(!i&&/XServer|DISPLAY|Missing X server|headed browser|no DISPLAY/i.test(a)){if(f().ok){let a=await h.launch(l);return m&&j.set(a,Object.freeze({...m})),a}let c=Error(`${a}
56
+ `}async function v(a,b={}){let{languages:c,fingerprint:d,...e}=b||{},f=await a.newContext(e);if(Array.isArray(c)&&c.length||d&&"object"==typeof d)try{await f.addInitScript(u({languages:c,fingerprint:d}))}catch{}return f}async function w(a,{timeoutMs:b,message:c=`Automation operation timed out after ${b}ms`,code:d="AUTOMATION_TIMEOUT",onTimeout:e,onLateResolve:f}={}){let g=Promise.resolve(a);if(!Number.isFinite(b)||b<=0)return g;let h=null,i=!1,j=new Promise((a,f)=>{h=setTimeout(()=>{i=!0;try{e?.()}catch{}f(Object.assign(Error(c),{code:d}))},b),h.unref?.()});try{return await Promise.race([g,j])}finally{h&&clearTimeout(h),i&&"function"==typeof f&&g.then(f).catch(()=>null)}}function x(a){let b=String(a||"").trim();if(!b)return null;if(f().isIP(b))return b;try{let a=JSON.parse(b);for(let b of["ip","query","address","origin"]){let c=String(a?.[b]||"").trim();if(f().isIP(c))return c}}catch{}for(let a of b.matchAll(/(?:\d{1,3}\.){3}\d{1,3}/g))if(f().isIP(a[0]))return a[0];for(let a of b.split(/[\s,;()[\]{}<>"'=\uFF1A]+/)){let b=a.replace(/^[^0-9a-f:]+|[^0-9a-f:]+$/gi,"");if(b.includes(":")&&f().isIP(b))return b}return null}async function y(a){if(a){if("function"==typeof a.close)return void await Promise.resolve(a.close()).catch(()=>null);"function"==typeof a.destroy&&await Promise.resolve(a.destroy()).catch(()=>null)}}async function z(a,{timeoutMs:b=8e3,urls:c=p,fetchImpl:d=g.hd,createProxyAgent:e=a=>new g.ProxyAgent(a)}={}){let f=null,h=[],i=null;try{try{f=e(a)}catch{return{ok:!1,ip:null,url:null,attempts:0,attemptedUrls:h,error:"proxy agent setup failed"}}for(let a of c){h.push(a);try{let c=await d(a,{dispatcher:f,redirect:"follow",signal:AbortSignal.timeout(b),headers:{Accept:"text/plain, application/json;q=0.9, */*;q=0.1","Cache-Control":"no-cache"}});if(!c?.ok){i=`HTTP ${c?.status||0}`;continue}let e=x(await c.text());if(!e){i="exit-IP response was not recognized";continue}return{ok:!0,ip:e,url:a,attempts:h.length,attemptedUrls:h,error:null}}catch(a){i=a?.name==="TimeoutError"?`timed out after ${b}ms`:"request failed"}}return{ok:!1,ip:null,url:null,attempts:h.length,attemptedUrls:h,error:i||"all exit-IP services failed"}}finally{await y(f)}}async function A(a,{timeoutMs:b=5e3,fetchImpl:c=g.hd}={}){try{let d=await c(`https://ipwho.is/${encodeURIComponent(a)}`,{redirect:"follow",signal:AbortSignal.timeout(b),headers:{Accept:"application/json"}});if(!d?.ok)return null;let e=await d.json();if(e?.success===!1)return null;let f=String(e?.country_code||"").trim().toUpperCase(),g=String(e?.timezone?.id||"").trim(),h=q[f]?.locale||(f?`en-${f}`:"");return g&&h?{countryCode:f||null,timezone:g,locale:h,source:"ip-geo"}:null}catch{return null}}async function B(a,b={}){let c=await z(a,b);if(!c.ok||!c.ip){let a=Error(`Manual proxy exit IP could not be verified before browser launch (${c.error||"no response"}); no phone number was purchased`);throw a.code="CLOAKBROWSER_PROXY_EGRESS_UNAVAILABLE",a}let d=function(a){try{let b=new URL(String(a||"").trim()),c=[...decodeURIComponent(b.username||"").matchAll(/(?:^|__)cr\.([a-z]{2})(?=__|$)/gi)],d=c.at(-1)?.[1]?.toUpperCase()||null,e=d?q[d]:null;return e?.timezone&&e?.locale?{countryCode:d,...e,source:"proxy-country"}:null}catch{return null}}(a)||await A(c.ip,b);if(!d?.timezone||!d?.locale){let a=Error("Manual proxy region could not be aligned with CloakBrowser; no phone number was purchased");throw a.code="CLOAKBROWSER_PROXY_GEOIP_UNAVAILABLE",a}return Object.freeze({egressIp:c.ip,timezone:d.timezone,locale:d.locale,countryCode:d.countryCode||null,source:d.source,probeUrl:c.url,probeAttempts:c.attempts})}function C(a,b){let c=["--fingerprint-webrtc-ip=","--fingerprint-timezone=","--fingerprint-locale=","--lang="],d=(a?.args||[]).filter(a=>!c.some(b=>String(a).startsWith(b)));return d.push(`--fingerprint-webrtc-ip=${b.egressIp}`,`--fingerprint-timezone=${b.timezone}`,`--lang=${b.locale}`,`--fingerprint-locale=${b.locale}`),{...a,args:d,timezone:b.timezone,locale:b.locale,geoip:!1}}function D(a=[]){let b=b=>{let c=`${b}=`,d=(a||[]).find(a=>String(a).startsWith(c));return d?String(d).slice(c.length):null};return{egressIp:b("--fingerprint-webrtc-ip"),timezone:b("--fingerprint-timezone"),locale:b("--fingerprint-locale")||b("--lang")}}function E(a){return a&&"object"==typeof a&&j.get(a)||null}function F(a){return a&&"object"==typeof a&&l.has(a)?l.get(a):null}function G(a){if(!a||"object"!=typeof a)return null;let b=k.get(a);if(b)return b;try{let b="function"==typeof a.process?a.process():null;if(b?.pid)return b}catch{}try{let b=a?._connection?.toImpl?.(a),c=b?.options?.browserProcess?.process||null;if(c?.pid)return c}catch{}return null}function H(a){let b=G(a);return a&&b&&k.set(a,b),b}function I(a){let b=Number(G(a)?.pid);return Number.isFinite(b)&&b>1?b:null}async function J({proxyUrl:a,headless:b=!1,windowSize:d=null,requireProxyGeoip:e=!1}={}){let{ensureDisplayForHeadedBrowser:f}=await c.e(3331).then(c.bind(c,13331)),g=function(a){try{return c(50982)(`./${a}`)}catch{return null}}("cloakbrowserRuntime"),h=null;if(g?.ensureCloakbrowserRuntime){let a=g.ensureCloakbrowserRuntime({silent:!1});if(!a.ok&&a.error)throw a.error;h=a.module||g.loadCloakbrowserModule?.()}if(!h?.launch)try{let a=await Promise.resolve().then(function(){var a=Error("Cannot find module 'cloakbrowser'");throw a.code="MODULE_NOT_FOUND",a});h=a?.default||a}catch(b){let a=Error("cloakbrowser is not installed. Bulk import will auto-install on next run, or run: cd ~/.zevai/runtime && npm install cloakbrowser mmdb-lib playwright-core");throw a.code="CLOAKBROWSER_PACKAGE_MISSING",a.cause=b,a}if(!h?.launch){let a=Error("cloakbrowser loaded but launch() is missing");throw a.code="CLOAKBROWSER_API_MISMATCH",a}let i=!0===b;if(!i){let a=f();if(!a.ok)throw a.error}let k={headless:i,humanize:!0};a&&(k.proxy=a,k.geoip=!0),d?.width&&d?.height&&(k.args=[`--window-size=${d.width},${d.height}`]);let m=k,n=null;a&&e&&(m=C(k,n=await B(a)));try{let a=await h.launch(m);return H(a),l.set(a,i),n&&j.set(a,Object.freeze({...n})),a}catch(b){let a=String(b?.message||b||"");if(!i&&/XServer|DISPLAY|Missing X server|headed browser|no DISPLAY/i.test(a)){if(f().ok){let a=await h.launch(m);return H(a),l.set(a,i),n&&j.set(a,Object.freeze({...n})),a}let c=Error(`${a}
56
57
 
57
58
  VPS has no display. Install a virtual screen then retry:
58
59
  sudo apt-get update && sudo apt-get install -y xvfb
59
60
  sudo systemctl restart zevairouter
60
- ZevaiRouter auto-starts Xvfb when installed.`);throw c.code="NO_DISPLAY",c.cause=b,c}throw b}}async function A({engine:a=h,proxyUrl:b,headless:c=!1,windowSize:d=null,requireProxyGeoip:e=!1}={}){return m(a),z({proxyUrl:b,headless:!0===c,windowSize:d,requireProxyGeoip:e})}function B({engine:a,proxyUrl:b,headless:c=!1,windowSize:d=null}={}){return()=>A({engine:a,proxyUrl:b,headless:c,windowSize:d})}async function C(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))}}},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),{ensureCloakbrowserRuntime:j}=c(99436),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("✓ CloakBrowser ready (sole automation browser 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-core","cloakbrowser","mmdb-lib"]){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("CloakBrowser runtime linked into app bundle")}catch{}}()):m(`CloakBrowser skipped: ${a.error?.message||a.reason||"unknown"}`)}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(Object(function(){var a=Error("Cannot find module 'node-pty'");throw a.code="MODULE_NOT_FOUND",a}())),{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)},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.5.2",n="mmdb-lib",o="^3.0.2",p="playwright-core",q="^1.54.2",r="function"==typeof require?require:c(51029);function s(){try{let a=f.join(h(),"noop.js");return d(a)}catch{return null}}let t=null;function u(a){return e.existsSync(f.join(i(),a,"package.json"))}function v(a){let b=String(a||"").trim().match(/^v?(\d+)\.(\d+)\.(\d+)(?:-([0-9A-Za-z.-]+))?(?:\+[0-9A-Za-z.-]+)?$/);return b?{major:Number.parseInt(b[1],10),minor:Number.parseInt(b[2],10),patch:Number.parseInt(b[3],10),prerelease:b[4]?b[4].split("."):[]}:null}function w(a,b){for(let c of["major","minor","patch"])if(a[c]!==b[c])return a[c]<b[c]?-1:1;return function(a,b){if(0===a.length&&0===b.length)return 0;if(0===a.length)return 1;if(0===b.length)return -1;let c=Math.max(a.length,b.length);for(let d=0;d<c;d+=1){if(void 0===a[d])return -1;if(void 0===b[d])return 1;if(a[d]===b[d])continue;let c=/^\d+$/.test(a[d]),e=/^\d+$/.test(b[d]);if(c&&e)return Number.parseInt(a[d],10)<Number.parseInt(b[d],10)?-1:1;if(c!==e)return c?-1:1;return a[d]<b[d]?-1:1}return 0}(a.prerelease,b.prerelease)}function x(a,b){let c,d=v(a),e=String(b||"").trim().match(/^\^\s*(.+)$/),f=v(e?.[1]);return!!d&&!!f&&(!(d.prerelease.length>0)||0!==f.prerelease.length)&&(c=f.major>0?{major:f.major+1,minor:0,patch:0,prerelease:[]}:f.minor>0?{major:0,minor:f.minor+1,patch:0,prerelease:[]}:{major:0,minor:0,patch:f.patch+1,prerelease:[]},w(d,f)>=0&&0>w(d,c))}function y(a){try{let b=JSON.parse(e.readFileSync(f.join(i(),a,"package.json"),"utf8"));return"string"==typeof b.version?b.version:null}catch{return null}}function z(a,b){return!!a?.launch&&x(b,m)}function A(){try{let a=s(),b=f.join(i(),l);if(a&&e.existsSync(f.join(b,"package.json")))return a(b)}catch{}try{return r(l)}catch{}try{let a=f.join(i(),l);if(e.existsSync(f.join(a,"package.json")))return r(a)}catch{}return null}function B(){try{let a=s(),b=f.join(i(),n);if(a&&e.existsSync(f.join(b,"package.json")))return a(b)}catch{}try{return r(n)}catch{}return null}a.exports={ensureCloakbrowserRuntime:function({silent:a=!1}={}){let b=y(l);if(t?.ok&&z(t.module,b)&&B()&&u(p))return t;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 d=A(),e=!z(d,b),r=!B()&&!u(n),s=!u(p);if(e||r||s){let b=[];e&&b.push(`${l}@${m}`),r&&b.push(`${n}@${o}`),s&&b.push(`${p}@${q}`),a||console.log(`[cloakbrowser] Installing ${b.join(", ")} into runtime…`);let d=g({cwd:h(),pkgs:b,timeout:3e5});if(!d.ok){let a=j(d.stderr||d.stdout||""),c=Error(`Failed to install ${b.join(", ")}. On the host run: cd "${h()}" && npm install ${b.join(" ")} — ${a}`);return c.code="CLOAKBROWSER_INSTALL_FAILED",{ok:!1,error:c}}e&&function(a){let b=`${f.join(i(),a)}${f.sep}`;for(let a of Object.keys(c.c))a.startsWith(b)&&delete c.c[a]}(l)}if(d=A(),b=y(l),!d?.launch){let a=Error(`cloakbrowser installed but launch() is missing. Reinstall: cd "${h()}" && npm install ${l}@${m} ${n}@${o} ${p}@${q}`);return a.code="CLOAKBROWSER_API_MISMATCH",{ok:!1,error:a}}if(!x(b,m)){let a=Error(`cloakbrowser version mismatch: installed ${b||"unknown"}, required ${m}. Reinstall: cd "${h()}" && npm install ${l}@${m}`);return a.code="CLOAKBROWSER_VERSION_MISMATCH",{ok:!1,error:a}}if(!B()&&!u(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 t={ok:!0,module:d,version:b}},loadCloakbrowserModule:function(){return A()},CLOAKBROWSER_PACKAGE:l,CLOAKBROWSER_VERSION:m,MMDB_PACKAGE:n,MMDB_VERSION:o,PLAYWRIGHT_CORE_PACKAGE:p,PLAYWRIGHT_CORE_VERSION:q,__test__:{parseSemver:v,compareSemver:w,satisfiesCaretRange:x,isCloakbrowserRuntimeCompatible:z}}}};
61
+ ZevaiRouter auto-starts Xvfb when installed.`);throw c.code="NO_DISPLAY",c.cause=b,c}throw b}}async function K({engine:a=h,proxyUrl:b,headless:c=!1,windowSize:d=null,requireProxyGeoip:e=!1,timeoutMs:f=m}={}){return r(a),w(J({proxyUrl:b,headless:!0===c,windowSize:d,requireProxyGeoip:e}),{timeoutMs:f,message:`CloakBrowser launch timed out after ${Math.round(f/1e3)}s`,code:"BROWSER_LAUNCH_TIMEOUT",onLateResolve:a=>M(a)})}function L({engine:a,proxyUrl:b,headless:c=!1,windowSize:d=null}={}){return()=>K({engine:a,proxyUrl:b,headless:c,windowSize:d})}async function M(a,{timeoutMs:b=4e3}={}){if(!a)return;let c=G(a),d=Number(c?.pid),e=Number.isFinite(d)&&d>1?d:null;try{await w(Promise.resolve().then(()=>a.close()),{timeoutMs:b,message:`Browser close timed out after ${b}ms`,code:"BROWSER_CLOSE_TIMEOUT"})}catch{}let f=()=>{if(!c||null!=c.exitCode||null!=c.signalCode)return!1;if(!e)return!0;try{return process.kill(e,0),!0}catch{return!1}};if(c&&f()){let a=a=>{if(e&&"win32"!==process.platform)try{process.kill(-e,a)}catch{}try{"function"==typeof c.kill?c.kill(a):e&&process.kill(e,a)}catch{}};a("SIGTERM"),await new Promise(a=>setTimeout(a,400)),f()&&a("SIGKILL")}}},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),{ensureCloakbrowserRuntime:j}=c(99436),{hasBuiltInNodeSqlite:k}=c(83445),l=String(process.env.ZEVAI_MINIMAL_POSTINSTALL||"").toLowerCase(),m="0"!==l&&"false"!==l,n="1"===process.env.ZEVAI_SKIP_RUNTIME_POSTINSTALL||"true"===process.env.ZEVAI_SKIP_RUNTIME_POSTINSTALL;function o(a){console.log(`[zevai] ${a}`)}function p(a){console.warn(`[zevai] ${a}`)}(async function(){if(n)return void o("Runtime warm-up skipped by ZEVAI_SKIP_RUNTIME_POSTINSTALL");if(o(m?"Minimal postinstall (ZEVAI_MINIMAL_POSTINSTALL=1) — browsers install on first use":"Preparing full runtime so all features work after this install…"),k())o("✓ Built-in node:sqlite engine ready");else try{f({silent:!0}).betterSqlite?o("✓ SQLite native engine ready"):p("SQLite native engine unavailable — the bundled sql.js fallback will be used")}catch(a){p(`SQLite native warm-up skipped: ${a.message} — the bundled fallback remains available`)}try{let a=i({silent:!0});a.systray||a.skipped?o(a.skipped?"\xb7 Native tray helper not required on Windows":"✓ System tray helper ready"):p("System tray helper unavailable — start with `zevai` in the terminal")}catch(a){p(`Tray warm-up skipped: ${a.message}`)}if(m)return void o("Done (minimal). Automation downloads CloakBrowser on first use.");try{let a=j({silent:!0});if(a.ok)if("function"!=typeof a.module?.ensureBinary)p("CloakBrowser package is installed but ensureBinary() is unavailable");else{let b=await a.module.ensureBinary();if(!b||!e.existsSync(b))throw Error("binary download completed without an executable path");o(`✓ CloakBrowser binary ready (${b})`),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-core","cloakbrowser","mmdb-lib"]){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}))}o("CloakBrowser runtime linked into app bundle")}catch{}}()}else p(`CloakBrowser packages unavailable: ${a.error?.message||a.reason||"unknown"}`)}catch(a){p(`CloakBrowser binary warm-up failed: ${a.message}. Automation will retry on first use.`)}try{let a=function(){if("win32"===process.platform)return{ok:!0,skipped:"windows uses pipe shell"};try{return c(Object(function(){var a=Error("Cannot find module 'node-pty'");throw a.code="MODULE_NOT_FOUND",a}())),{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?o(a.already?"✓ node-pty already available":"✓ node-pty ready (web terminal)"):a.skipped?o(`\xb7 node-pty skipped (${a.skipped})`):p(`node-pty skipped: ${a.reason||"unknown"} — terminal still works`)}catch(a){p(`node-pty skipped: ${a.message}`)}o("Runtime warm-up finished. Start with: zevai")})().catch(a=>{console.error(`[zevai] postinstall failed: ${a.stack||a.message}`),process.exitCode=1})},83445:(a,b,c)=>{"use strict";let{builtinModules:d}=c(98995);function e(a=d){return a.includes("node:sqlite")||a.includes("sqlite")}a.exports={hasBuiltInNodeSqlite:e,prepareStartupRuntime:function({trayMode:a=!1,modules:b=d,loadSqliteRuntime:f=()=>c(24344),loadTrayRuntime:g=()=>c(52784)}={}){let h=f();if(!e(b))try{h.ensureSqliteRuntime({silent:!0})}catch{}if(a)try{g().ensureTrayRuntime({silent:!0})}catch{}return{buildEnvWithRuntime:h.buildEnvWithRuntime}}}},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.5.2",n="mmdb-lib",o="^3.0.2",p="playwright-core",q="^1.54.2",r="function"==typeof require?require:c(51029);function s(){try{let a=f.join(h(),"noop.js");return d(a)}catch{return null}}let t=null;function u(a){return e.existsSync(f.join(i(),a,"package.json"))}function v(a){let b=String(a||"").trim().match(/^v?(\d+)\.(\d+)\.(\d+)(?:-([0-9A-Za-z.-]+))?(?:\+[0-9A-Za-z.-]+)?$/);return b?{major:Number.parseInt(b[1],10),minor:Number.parseInt(b[2],10),patch:Number.parseInt(b[3],10),prerelease:b[4]?b[4].split("."):[]}:null}function w(a,b){for(let c of["major","minor","patch"])if(a[c]!==b[c])return a[c]<b[c]?-1:1;return function(a,b){if(0===a.length&&0===b.length)return 0;if(0===a.length)return 1;if(0===b.length)return -1;let c=Math.max(a.length,b.length);for(let d=0;d<c;d+=1){if(void 0===a[d])return -1;if(void 0===b[d])return 1;if(a[d]===b[d])continue;let c=/^\d+$/.test(a[d]),e=/^\d+$/.test(b[d]);if(c&&e)return Number.parseInt(a[d],10)<Number.parseInt(b[d],10)?-1:1;if(c!==e)return c?-1:1;return a[d]<b[d]?-1:1}return 0}(a.prerelease,b.prerelease)}function x(a,b){let c,d=v(a),e=String(b||"").trim().match(/^\^\s*(.+)$/),f=v(e?.[1]);return!!d&&!!f&&(!(d.prerelease.length>0)||0!==f.prerelease.length)&&(c=f.major>0?{major:f.major+1,minor:0,patch:0,prerelease:[]}:f.minor>0?{major:0,minor:f.minor+1,patch:0,prerelease:[]}:{major:0,minor:0,patch:f.patch+1,prerelease:[]},w(d,f)>=0&&0>w(d,c))}function y(a){try{let b=JSON.parse(e.readFileSync(f.join(i(),a,"package.json"),"utf8"));return"string"==typeof b.version?b.version:null}catch{return null}}function z(a,b){return!!a?.launch&&x(b,m)}function A(){try{let a=s(),b=f.join(i(),l);if(a&&e.existsSync(f.join(b,"package.json")))return a(b)}catch{}try{return r(l)}catch{}try{let a=f.join(i(),l);if(e.existsSync(f.join(a,"package.json")))return r(a)}catch{}return null}function B(){try{let a=s(),b=f.join(i(),n);if(a&&e.existsSync(f.join(b,"package.json")))return a(b)}catch{}try{return r(n)}catch{}return null}a.exports={ensureCloakbrowserRuntime:function({silent:a=!1}={}){let b=y(l);if(t?.ok&&z(t.module,b)&&B()&&u(p))return t;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 d=A(),e=!z(d,b),r=!B()&&!u(n),s=!u(p);if(e||r||s){let b=[];e&&b.push(`${l}@${m}`),r&&b.push(`${n}@${o}`),s&&b.push(`${p}@${q}`),a||console.log(`[cloakbrowser] Installing ${b.join(", ")} into runtime…`);let d=g({cwd:h(),pkgs:b,timeout:3e5});if(!d.ok){let a=j(d.stderr||d.stdout||""),c=Error(`Failed to install ${b.join(", ")}. On the host run: cd "${h()}" && npm install ${b.join(" ")} — ${a}`);return c.code="CLOAKBROWSER_INSTALL_FAILED",{ok:!1,error:c}}e&&function(a){let b=`${f.join(i(),a)}${f.sep}`;for(let a of Object.keys(c.c))a.startsWith(b)&&delete c.c[a]}(l)}if(d=A(),b=y(l),!d?.launch){let a=Error(`cloakbrowser installed but launch() is missing. Reinstall: cd "${h()}" && npm install ${l}@${m} ${n}@${o} ${p}@${q}`);return a.code="CLOAKBROWSER_API_MISMATCH",{ok:!1,error:a}}if(!x(b,m)){let a=Error(`cloakbrowser version mismatch: installed ${b||"unknown"}, required ${m}. Reinstall: cd "${h()}" && npm install ${l}@${m}`);return a.code="CLOAKBROWSER_VERSION_MISMATCH",{ok:!1,error:a}}if(!B()&&!u(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 t={ok:!0,module:d,version:b}},loadCloakbrowserModule:function(){return A()},CLOAKBROWSER_PACKAGE:l,CLOAKBROWSER_VERSION:m,MMDB_PACKAGE:n,MMDB_VERSION:o,PLAYWRIGHT_CORE_PACKAGE:p,PLAYWRIGHT_CORE_VERSION:q,__test__:{parseSemver:v,compareSemver:w,satisfiesCaretRange:x,isCloakbrowserRuntimeCompatible:z}}}};
@@ -1 +1 @@
1
- "use strict";exports.id=6036,exports.ids=[6036],exports.modules={76036:(a,b,c)=>{c.d(b,{runStartupMaintenanceOnce:()=>h});var d=c(91117);let e="usageHistoryVacuum_v1";function f(){let a=parseInt(process.env.USAGE_HISTORY_RETENTION_DAYS||"60",10);return Number.isFinite(a)&&a>0?a:60}function g(a,b=f()){if(!a||!b||b<=0)return 0;try{let c=a.get("SELECT COUNT(*) as c FROM usageHistory")?.c??0;a.run("DELETE FROM usageHistory WHERE timestamp < ?",[new Date(Date.now()-864e5*b).toISOString()]);let d=a.get("SELECT COUNT(*) as c FROM usageHistory")?.c??0;return Math.max(0,c-d)}catch(a){return console.warn(`[DB][maintenance] prune failed: ${a.message}`),0}}function h(a){if(a){try{if(!(0,d.dy)(a,e,null)){let b=f(),c=g(a,b);try{a.exec("VACUUM"),(0,d.np)(a,e,new Date().toISOString()),console.log(`[DB][maintenance] one-time prune (<${b}d, ${c} rows) + VACUUM done`)}catch(a){console.warn(`[DB][maintenance] VACUUM failed, will retry next boot: ${a.message}`)}}}catch(a){console.warn(`[DB][maintenance] startup maintenance skipped: ${a.message}`)}if(!global._usageHistoryPruneTimer)try{global._usageHistoryPruneTimer=setInterval(()=>{try{g(a)}catch{}},216e5),"function"==typeof global._usageHistoryPruneTimer.unref&&global._usageHistoryPruneTimer.unref()}catch{}}}}};
1
+ "use strict";exports.id=6036,exports.ids=[6036],exports.modules={76036:(a,b,c)=>{c.d(b,{runStartupMaintenanceOnce:()=>h,stopStartupMaintenance:()=>i});var d=c(91117);let e="usageHistoryVacuum_v1";function f(){let a=parseInt(process.env.USAGE_HISTORY_RETENTION_DAYS||"60",10);return Number.isFinite(a)&&a>0?a:60}function g(a,b=f()){if(!a||!b||b<=0)return 0;try{let c=a.get("SELECT COUNT(*) as c FROM usageHistory")?.c??0;a.run("DELETE FROM usageHistory WHERE timestamp < ?",[new Date(Date.now()-864e5*b).toISOString()]);let d=a.get("SELECT COUNT(*) as c FROM usageHistory")?.c??0;return Math.max(0,c-d)}catch(a){return console.warn(`[DB][maintenance] prune failed: ${a.message}`),0}}function h(a){if(a){try{if(!(0,d.dy)(a,e,null)){let b=f(),c=g(a,b);try{a.exec("VACUUM"),(0,d.np)(a,e,new Date().toISOString()),console.log(`[DB][maintenance] one-time prune (<${b}d, ${c} rows) + VACUUM done`)}catch(a){console.warn(`[DB][maintenance] VACUUM failed, will retry next boot: ${a.message}`)}}}catch(a){console.warn(`[DB][maintenance] startup maintenance skipped: ${a.message}`)}if(!global._usageHistoryPruneTimer)try{global._usageHistoryPruneTimer=setInterval(()=>{try{g(a)}catch{}},216e5),"function"==typeof global._usageHistoryPruneTimer.unref&&global._usageHistoryPruneTimer.unref()}catch{}}}function i(){global._usageHistoryPruneTimer&&(clearInterval(global._usageHistoryPruneTimer),global._usageHistoryPruneTimer=null)}}};
@@ -1 +1 @@
1
- "use strict";exports.id=698,exports.ids=[698],exports.modules={90698:(a,b,c)=>{c.d(b,{createBunSqliteAdapter:()=>e});var d=c(76040);async function e(a){let{Database:b}=await Promise.resolve().then(c.t.bind(c,81787,23)),e=new b(a,{create:!0});e.exec(d.oG);let f=new Map;function g(a){let b=f.get(a);return b||(b=e.prepare(a),f.set(a,b)),b}let h=setInterval(()=>{try{e.exec("PRAGMA wal_checkpoint(TRUNCATE)")}catch{}},6e4);function i(){try{e.exec("PRAGMA wal_checkpoint(TRUNCATE)")}catch{}try{f.clear()}catch{}try{e.close()}catch{}}"function"==typeof h.unref&&h.unref();let j=()=>i();return process.once("beforeExit",j),process.once("SIGINT",()=>{j(),process.exit(0)}),process.once("SIGTERM",()=>{j(),process.exit(0)}),{driver:"bun:sqlite",run(a,b=[]){let c=g(a).run(...b);return{changes:Number(c.changes??0),lastInsertRowid:Number(c.lastInsertRowid??0)}},get:(a,b=[])=>g(a).get(...b),all:(a,b=[])=>g(a).all(...b),exec:a=>e.exec(a),transaction:a=>e.transaction(a)(),checkpoint(){e.exec("PRAGMA wal_checkpoint(TRUNCATE)")},close(){clearInterval(h),i()},raw:e}}}};
1
+ "use strict";exports.id=698,exports.ids=[698],exports.modules={90698:(a,b,c)=>{c.d(b,{createBunSqliteAdapter:()=>e});var d=c(76040);async function e(a){let{Database:b}=await Promise.resolve().then(c.t.bind(c,81787,23)),e=new b(a,{create:!0});e.exec(d.oG);let f=new Map;function g(a){let b=f.get(a);return b||(b=e.prepare(a),f.set(a,b)),b}let h=setInterval(()=>{try{e.exec("PRAGMA wal_checkpoint(TRUNCATE)")}catch{}},6e4);"function"==typeof h.unref&&h.unref();let i=!1;function j(){if(!i){i=!0;try{e.exec("PRAGMA wal_checkpoint(TRUNCATE)")}catch{}try{f.clear()}catch{}try{e.close()}catch{}}}let k=()=>j();return process.once("beforeExit",k),{driver:"bun:sqlite",run(a,b=[]){let c=g(a).run(...b);return{changes:Number(c.changes??0),lastInsertRowid:Number(c.lastInsertRowid??0)}},get:(a,b=[])=>g(a).get(...b),all:(a,b=[])=>g(a).all(...b),exec:a=>e.exec(a),transaction:a=>e.transaction(a)(),checkpoint(){e.exec("PRAGMA wal_checkpoint(TRUNCATE)")},close(){clearInterval(h),process.removeListener("beforeExit",k),j()},raw:e}}}};
@@ -50,7 +50,7 @@ ${c}
50
50
  `.replace(/'/g,"'\\''");await t(`printf '%s' '${e}' | tee ${q} > /dev/null`,b),await u(b)}i(`🌐 DNS ${a}: ✅ added ${d.join(", ")}`)}catch(a){throw Error(a.message?.includes("incorrect password")?"Wrong sudo password":`Failed to add DNS entry: ${a.message}`)}}async function x(a,b){let c=k[a];if(!c)throw Error(`Unknown tool: ${a}`);let d=c.filter(a=>v(a));if(0===d.length)return void i(`🌐 DNS ${a}: already inactive`);try{if(o){let a=g.readFileSync(q,"utf8"),b=a.split(/\r?\n/).filter(a=>!d.some(b=>a.includes(b))).join("\r\n").replace(/[\r\n\s]+$/g,"")+"\r\n";n(q,a,b),await l("ipconfig /flushdns | Out-Null")}else{let a=(g.readFileSync(q,"utf8").split(/\r?\n/).filter(a=>!d.some(b=>a.includes(b))).join("\n").replace(/[\r\n\s]+$/g,"")+"\n").replace(/'/g,"'\\''");await t(`printf '%s' '${a}' | tee ${q} > /dev/null`,b),await u(b)}i(`🌐 DNS ${a}: ✅ removed ${d.join(", ")}`)}catch(a){throw Error(a.message?.includes("incorrect password")?"Wrong sudo password":`Failed to remove DNS entry: ${a.message}`)}}async function y(a){for(let b of Object.keys(k))try{await x(b,a)}catch(a){j(`DNS ${b}: failed to remove — ${a.message}`)}}a.exports={TOOL_HOSTS:k,addDNSEntry:w,removeDNSEntry:x,removeAllDNSEntries:y,removeAllDNSEntriesSync:function(){try{if(!g.existsSync(q))return;let a=Object.values(k).flat(),b=g.readFileSync(q,"utf8"),c=o?"\r\n":"\n",d=b.split(/\r?\n/).filter(b=>!a.some(a=>b.includes(a))).join(c).replace(/[\r\n\s]+$/g,"")+c;if(d===b)return;if(g.writeFileSync(q,d,"utf8"),o)try{f("ipconfig /flushdns",{windowsHide:!0,stdio:"ignore"})}catch{}else if(p)try{f("dscacheutil -flushcache && killall -HUP mDNSResponder",{stdio:"ignore"})}catch{}else try{f("resolvectl flush-caches 2>/dev/null || true",{stdio:"ignore"})}catch{}}catch{}},execWithPassword:t,isSudoAvailable:r,canRunSudoWithoutPassword:s,isSudoPasswordRequired:function(){return!o&&r()&&!s()},checkDNSEntry:v,checkAllDNSStatus:function(){try{let a=g.readFileSync(q,"utf8"),b={};for(let[c,d]of Object.entries(k))b[c]=d.every(b=>a.includes(b));return b}catch{return Object.fromEntries(Object.keys(k).map(a=>[a,!1]))}}}},78335:()=>{},82193:(a,b,c)=>{"use strict";let d=c(29021),e=c(33873),f=c(21820),g="zevairouter";function h(){return"win32"===process.platform?e.join(process.env.APPDATA||e.join(f.homedir(),"AppData","Roaming"),g):e.join(f.homedir(),`.${g}`)}let i=function(){let a=process.env.DATA_DIR;if(!a)return h();try{return d.mkdirSync(a,{recursive:!0}),a}catch(b){if(b?.code==="EACCES"||b?.code==="EPERM")return console.warn(`[DATA_DIR] '${a}' not writable → fallback ~/.${g}`),h();throw b}}(),j=e.join(i,"mitm");a.exports={DATA_DIR:i,MITM_DIR:j}},85341:a=>{"use strict";a.exports={TOOL_HOSTS:{antigravity:["daily-cloudcode-pa.googleapis.com","cloudcode-pa.googleapis.com"],copilot:["api.individual.githubcopilot.com"],kiro:["q.us-east-1.amazonaws.com","codewhisperer.us-east-1.amazonaws.com"],cursor:["api2.cursor.sh"]}}},87777:(a,b,c)=>{"use strict";let d=c(29021),e=c(33873),f=c(74075),{DATA_DIR:g}=c(82193),{LOG_BLACKLIST_URL_PARTS:h}=c(17511);function i(){return new Date().toLocaleTimeString("en-US",{hour12:!1})}let j=e.join(g,"logs","mitm");d.existsSync(j)||d.mkdirSync(j,{recursive:!0});let k=/^\s*(\{\s*\}|\[\s*\]|null)?\s*$/;function l(a,b=80){return String(a).replace(/[^a-zA-Z0-9]/g,"_").substring(0,b)}function m(a){return!!a&&h.some(b=>a.includes(b))}a.exports={log:a=>console.log(`[${i()}] [MITM] ${a}`),err:a=>console.error(`[${i()}] ❌ [MITM] ${a}`),dumpRequest:function(a,b,c="raw"){if(m(a.url))return null;try{let f=new Date().toISOString().replace(/[:.]/g,"-"),g=l((a.headers.host||"")+a.url),h=e.join(j,`${f}_${c}_${g}.req.json`),i=null;try{i=JSON.parse(b.toString())}catch{}return d.writeFileSync(h,JSON.stringify({method:a.method,url:a.url,host:a.headers.host,headers:a.headers,body:i??b.toString("utf8")},null,2)),h}catch{return null}},createResponseDumper:function(a,b="raw"){if(m(a.url))return null;let c=new Date().toISOString().replace(/[:.]/g,"-"),g=l((a.headers.host||"")+a.url),h=e.join(j,`${c}_${b}_${g}.res.txt`),i=0,n={},o=[];return{writeHeader:(a,b)=>{i=a,n=b||{}},writeChunk:a=>{null!=a&&o.push(Buffer.isBuffer(a)?a:Buffer.from(a))},end:()=>{try{let a=Buffer.concat(o),b=n["content-encoding"]||n["Content-Encoding"],c=(function(a,b){if(!a||0===a.length)return a;try{let c=(b||"").toLowerCase();if(c.includes("gzip"))return f.gunzipSync(a);if(c.includes("br"))return f.brotliDecompressSync(a);if(c.includes("deflate"))return f.inflateSync(a)}catch{}return a})(a,b).toString("utf8");if(k.test(c))return;let e={...n};delete e["content-encoding"],delete e["Content-Encoding"];let g=`STATUS: ${i}
51
51
  HEADERS: ${JSON.stringify(e,null,2)}
52
52
  ---BODY---
53
- ${c}`;d.writeFileSync(h,g)}catch{}},file:h}},clearDumpDir:function(){try{if(!d.existsSync(j))return;for(let a of d.readdirSync(j))try{d.rmSync(e.join(j,a),{recursive:!0,force:!0})}catch{}}catch{}}}},89718:(a,b,c)=>{"use strict";c.d(b,{CG:()=>d.CG,Dj:()=>d.Dj,Fh:()=>d.Fh,Iq:()=>d.Iq,K1:()=>d.K1,KJ:()=>d.KJ,KK:()=>d.KK,L:()=>d.L,L9:()=>d.L9,Lh:()=>d.Lh,Mc:()=>d.Mc,NR:()=>d.NR,PX:()=>d.PX,Pb:()=>d.Pb,Pc:()=>d.Pc,QI:()=>d.QI,Q_:()=>d.Q_,Qu:()=>d.Qu,S8:()=>d.S8,Uv:()=>d.Uv,VT:()=>d.VT,XW:()=>d.XW,Xx:()=>d.Xx,Yd:()=>d.Yd,ZO:()=>d.ZO,bI:()=>d.bI,c:()=>d.c,dK:()=>d.dK,deleteModelAlias:()=>d.fv,ek:()=>d.ek,fK:()=>d.fK,getModelAliases:()=>d.OM,getProviderConnections:()=>d.P,getQuotaSnapshot:()=>d.LF,ho:()=>d.ho,hr:()=>d.hr,i0:()=>d.i0,iE:()=>d.iE,jd:()=>d.jd,mt:()=>d.mt,o5:()=>d.o5,oG:()=>d.oG,op:()=>d.op,p3:()=>d.p3,qd:()=>d.qd,r4:()=>d.r4,tV:()=>d.tV,uL:()=>d.uL,ui:()=>d.ui,updateProviderConnection:()=>d.rj,uv:()=>d.uv,yF:()=>d.yF,yW:()=>d.yW,yg:()=>d.yg,zP:()=>d.zP,zY:()=>d.zY});var d=c(80601)},96182:(a,b,c)=>{"use strict";let{exec:d,spawn:e,execSync:f}=c(79646),g=c(33873),h=c(29021),i=c(21820),j=c(91645),k=c(55591),l=c(55511),{addDNSEntry:m,removeDNSEntry:n,removeAllDNSEntries:o,removeAllDNSEntriesSync:p,checkAllDNSStatus:q,TOOL_HOSTS:r,isSudoAvailable:s,isSudoPasswordRequired:t}=c(66936),{isAdmin:u}=c(64809),v="win32"===process.platform,w="darwin"===process.platform,{generateCert:x}=c(26033),{installCert:y,uninstallCert:z}=c(9631),{isCertExpired:A}=c(8578),{DATA_DIR:B,MITM_DIR:C}=c(82193),{log:D,err:E}=c(87777),{LSOF_BIN:F}=c(17511),G="http://localhost:1997";function H(a){return null==a||""===a?"''":`'${String(a).replace(/'/g,"'\\''")}'`}async function I(){if(!_)return G;try{let a=await _(),b=a&&null!=a.mitmRouterBaseUrl?String(a.mitmRouterBaseUrl).trim():"";if(!b)return G;let c=new URL(b);if("http:"!==c.protocol&&"https:"!==c.protocol)return G;return b.replace(/\/+$/,"")}catch{return G}}let J=g.join(C,".mitm.pid"),K=[5e3,1e4,2e4,3e4,6e4],L=0,M=0,N=!1;function O(){if(process.env.MITM_SERVER_PATH)return process.env.MITM_SERVER_PATH;let a=g.join(__dirname,"server.js");if(h.existsSync(a))return a;let b=g.join(process.cwd(),"src","mitm","server.js");if(h.existsSync(b))return b;let c=g.join(process.cwd(),"..","src","mitm","server.js");return h.existsSync(c)?c:b}function P(a){try{if(!a||!h.existsSync(a)||!a.includes(`${g.sep}node_modules${g.sep}`))return a;let b=g.join(B,"runtime","mitm"),c=g.join(b,"server.js");if(h.existsSync(c))try{if(h.statSync(a).size===h.statSync(c).size)return c}catch{}return h.mkdirSync(b,{recursive:!0}),h.copyFileSync(a,c),c}catch(b){try{D(`[MITM] runtime copy failed: ${b.message}`)}catch{}return a}}let Q=P(O()),R="aes-256-gcm",S="zevai-mitm-pwd",T=String.fromCharCode(57,114,111,117,116,101,114)+"-mitm-pwd",U=null,V=null;function W(){return globalThis.__mitmSudoPassword||null}function X(a){globalThis.__mitmSudoPassword=a}function Y(a){try{return process.kill(a,0),!0}catch(a){return"EACCES"===a.code}}function Z(a,b=!1,e=null){if(v)d(`taskkill ${b?"/F ":""}/PID ${a}`,{windowsHide:!0},()=>{});else{let f=b?"SIGKILL":"SIGTERM",g=`pkill -${f} -P ${a} 2>/dev/null; kill -${f} ${a} 2>/dev/null`;if(e||s()){let{execWithPassword:a}=c(66936);a(g,e||"").catch(()=>d(g,{windowsHide:!0},()=>{}))}else d(g,{windowsHide:!0},()=>{})}}function $(a=S){try{let{machineIdSync:b}=c(19713),d=b();return l.createHash("sha256").update(d+a).digest()}catch{return l.createHash("sha256").update(a).digest()}}let _=null,aa=null;async function ab(a,b){if(aa)try{let c,d,e,f,g,h={mitmEnabled:a};b&&(c=$(S),d=l.randomBytes(12),e=l.createCipheriv(R,c,d),f=Buffer.concat([e.update(b,"utf8"),e.final()]),g=e.getAuthTag(),h.mitmSudoEncrypted=`${d.toString("hex")}:${g.toString("hex")}:${f.toString("hex")}`),await aa(h)}catch(a){E(`Failed to save settings: ${a.message}`)}}async function ac(){if(aa)try{await aa({mitmSudoEncrypted:null})}catch(a){E(`Failed to clear encrypted password: ${a.message}`)}}async function ad(){if(!_)return null;try{var a;let b,c=await _();if(!c.mitmSudoEncrypted)return null;return a=c.mitmSudoEncrypted,(b=b=>{try{let[c,d,e]=a.split(":");if(!c||!d||!e)return null;let f=$(b),g=l.createDecipheriv(R,f,Buffer.from(c,"hex"));return g.setAuthTag(Buffer.from(d,"hex")),Buffer.concat([g.update(Buffer.from(e,"hex")),g.final()]).toString("utf8")}catch{return null}})(S)||b(T)}catch{return null}}async function ae(a,b){if(aa&&_)try{let c={...(await _()).dnsToolEnabled||{},[a]:b};await aa({dnsToolEnabled:c})}catch(a){E(`Failed to save DNS state: ${a.message}`)}}async function af(){if(!_)return{};try{return(await _()).dnsToolEnabled||{}}catch{return{}}}async function ag(a){let b=await af(),c=a||W()||await ad();for(let[a,d]of Object.entries(b))if(d&&r[a])try{await m(a,c)}catch(b){E(`DNS ${a}: restore failed — ${b.message}`)}}async function ah(){return v?u():!(!u()&&t())||!!(W()||await ad())}function ai(a){return new Promise(a=>{v?d('powershell -NonInteractive -WindowStyle Hidden -Command "$c = Get-NetTCPConnection -LocalPort 443 -State Listen -ErrorAction SilentlyContinue | Select-Object -First 1; if ($c) { $c.OwningProcess } else { 0 }"',{windowsHide:!0},(b,c)=>{if(b)return a(null);let e=parseInt(c.trim(),10);if(!e||e<=4)return a(null);d(`tasklist /FI "PID eq ${e}" /FO CSV /NH`,{windowsHide:!0},(b,c)=>{let d=c?.match(/"([^"]+)"/);a({pid:e,name:d?d[1]:"unknown"})})}):d(`${F} -nP -iTCP:443 -sTCP:LISTEN -t`,{windowsHide:!0},(b,c)=>{if(b||!c?.trim())return a(null);let e=parseInt(c.trim().split("\n")[0],10);if(!e||isNaN(e))return a(null);d(`ps -p ${e} -o comm=`,{windowsHide:!0},(b,c)=>{a({pid:e,name:c?.trim()||"unknown"})})})})}async function aj(a){if(U&&!U.killed){try{U.kill("SIGKILL")}catch{}U=null,V=null}try{if(h.existsSync(J)){let b=parseInt(h.readFileSync(J,"utf-8").trim(),10);b&&Y(b)&&(Z(b,!0,a),await new Promise(a=>setTimeout(a,500))),h.unlinkSync(J)}}catch{}if(!v&&Q)try{let b=Q.replace(/'/g,"'\\''");if(a||s()){let{execWithPassword:d}=c(66936);await d(`pkill -SIGKILL -f "${b}" 2>/dev/null || true`,a||"").catch(()=>{})}else d(`pkill -SIGKILL -f "${b}" 2>/dev/null || true`,{windowsHide:!0},()=>{});await new Promise(a=>setTimeout(a,500))}catch{}}async function ak(){let a=null!==U&&!U.killed,b=V;if(!a)try{if(h.existsSync(J)){let c=parseInt(h.readFileSync(J,"utf-8").trim(),10);c&&Y(c)?(a=!0,b=c):h.unlinkSync(J)}}catch{}let d=q(),e=g.join(C,"rootCA.crt"),f=h.existsSync(e),{checkCertInstalled:i}=c(9631),j=!!f&&await i(e);return{running:a,pid:b,certExists:f,certTrusted:j,dnsStatus:d}}async function al(a){if(N)return;if(Date.now()-M>=6e4&&(L=0),L>=5)return void E("Max restart attempts reached. Giving up.");let b=K[Math.min(L,K.length-1)];L++,N=!0,D(`Restarting in ${b/1e3}s... (${L}/5)`),await new Promise(a=>setTimeout(a,b));try{let b=_?await _():null;if(b&&!b.mitmEnabled){D("MITM disabled, skipping restart"),N=!1;return}let c=W()||await ad();if(!c&&!v){E("No cached password, cannot auto-restart"),N=!1;return}await an(a,c),D("\uD83D\uDD04 Restarted successfully"),L=0,N=!1}catch(b){E(`Restart attempt ${L}/5 failed: ${b.message}`),N=!1,al(a)}}async function am(a,b){if(a&&a.pid){if(v)try{f(`powershell -NonInteractive -WindowStyle Hidden -Command "Stop-Process -Id ${a.pid} -Force -ErrorAction SilentlyContinue"`,{windowsHide:!0})}catch{}else try{let{execWithPassword:d}=c(66936);b||s()?await d(`kill -9 ${a.pid}`,b||""):f(`kill -9 ${a.pid}`,{windowsHide:!0})}catch{}await new Promise(a=>setTimeout(a,800))}}async function an(a,b,l=!1){if(!U||U.killed)try{if(h.existsSync(J)){let a=parseInt(h.readFileSync(J,"utf-8").trim(),10);if(a&&Y(a))return V=a,D(`♻️ Reusing existing process (PID: ${a})`),await ab(!0,b),b&&X(b),{running:!0,pid:a};h.unlinkSync(J)}}catch{}if(U&&!U.killed)throw Error("MITM server is already running");if(await aj(b),!v){let a=await new Promise(a=>{let b=j.createServer();b.once("error",b=>{"EADDRINUSE"===b.code?a("in-use"):a("no-permission")}),b.once("listening",()=>{b.close(()=>a("free"))}),b.listen(443,"127.0.0.1")});if("in-use"===a||"no-permission"===a){let a=await ai(b);if(a){let c=a.name.includes("/")?a.name.split("/").filter(Boolean).pop():a.name;if(l)D(`Killing process on port 443 (PID ${a.pid}, name=${c})...`),await am(a,b);else{let b=Error(`Port 443 is already in use by "${c}" (PID ${a.pid}).`);throw b.code="PORT_443_BUSY",b.portOwner={pid:a.pid,name:c},b}}}}let m=g.join(C,"rootCA.crt"),n=g.join(C,"rootCA.key"),o=h.existsSync(m)&&h.existsSync(n);if(!o||A(m)){if(o){D("\uD83D\uDD10 Cert expired — uninstalling old cert...");let a=b||W()||await ad();try{await z(a,m)}catch{}}D("\uD83D\uDD10 Generating Root CA..."),await x()}let{checkCertInstalled:p}=c(9631),r=await p(m),u=!v&&!w&&!s();if(r)D("\uD83D\uDD10 Cert: already trusted ✅");else{D("\uD83D\uDD10 Cert: not trusted → installing...");let a=b||W()||await ad();if(u)D(`🔐 Cert: skipping system trust (no sudo). Install ${m} as a trusted CA on machines that use this proxy.`);else{if(!a&&t())throw Error("Sudo password required to install Root CA certificate");try{await y(a,m),D("\uD83D\uDD10 Cert: ✅ trusted")}catch(a){throw Error(`Failed to trust certificate: ${a.message}`)}}}let B=Q;if((!B||!h.existsSync(B))&&(D(`[MITM] server.js missing at ${B} → recopying`),!(B=P(O()))||!h.existsSync(B)))throw Error(`MITM server.js not found at ${B}. Reinstall zevairouter.`);let G=await I();if(D(`🚀 Starting server... (router: ${G})`),v){let c=await ai(b);if(c)if(l)D(`Killing process on port 443 (PID ${c.pid}, name=${c.name})...`),await am(c,b);else{let a=Error(`Port 443 is already in use by "${c.name}" (PID ${c.pid}).`);throw a.code="PORT_443_BUSY",a.portOwner={pid:c.pid,name:c.name},a}U=e(process.execPath,[B],{detached:!1,windowsHide:!0,cwd:i.tmpdir(),stdio:["ignore","pipe","pipe"],env:{...process.env,ROUTER_API_KEY:a,NODE_ENV:"production",MITM_ROUTER_BASE:G}}),aa&&await aa({mitmCertInstalled:!0}).catch(()=>{})}else s()?((U=e("sudo",["-S","-E","sh","-c",[`HOME=${H(i.homedir())}`,`ROUTER_API_KEY=${H(a)}`,`MITM_ROUTER_BASE=${H(G)}`,"NODE_ENV=production",H(process.execPath),H(B)].join(" ")],{detached:!1,windowsHide:!0,stdio:["pipe","pipe","pipe"]})).stdin.write(`${b}
53
+ ${c}`;d.writeFileSync(h,g)}catch{}},file:h}},clearDumpDir:function(){try{if(!d.existsSync(j))return;for(let a of d.readdirSync(j))try{d.rmSync(e.join(j,a),{recursive:!0,force:!0})}catch{}}catch{}}}},89718:(a,b,c)=>{"use strict";c.d(b,{CG:()=>d.CG,Dj:()=>d.Dj,Fh:()=>d.Fh,Iq:()=>d.Iq,K1:()=>d.K1,KJ:()=>d.KJ,KK:()=>d.KK,L:()=>d.L,L9:()=>d.L9,Lh:()=>d.Lh,Mc:()=>d.Mc,NR:()=>d.NR,PX:()=>d.PX,Pb:()=>d.Pb,Pc:()=>d.Pc,QI:()=>d.QI,Q_:()=>d.Q_,Qu:()=>d.Qu,S8:()=>d.S8,Uv:()=>d.Uv,VT:()=>d.VT,XW:()=>d.XW,Xx:()=>d.Xx,Yd:()=>d.Yd,ZO:()=>d.ZO,bI:()=>d.bI,c:()=>d.c,dK:()=>d.dK,deleteModelAlias:()=>d.fv,ek:()=>d.ek,fK:()=>d.fK,getModelAliases:()=>d.OM,getProviderConnections:()=>d.P,getQuotaSnapshot:()=>d.LF,ho:()=>d.ho,hr:()=>d.hr,i0:()=>d.i0,iE:()=>d.iE,jd:()=>d.jd,mt:()=>d.mt,o5:()=>d.o5,oG:()=>d.oG,op:()=>d.op,p3:()=>d.p3,qd:()=>d.qd,r4:()=>d.r4,tV:()=>d.tV,uL:()=>d.uL,ui:()=>d.ui,updateProviderConnection:()=>d.rj,uv:()=>d.uv,yF:()=>d.yF,yW:()=>d.yW,yg:()=>d.yg,zP:()=>d.zP,zY:()=>d.zY});var d=c(70877)},96182:(a,b,c)=>{"use strict";let{exec:d,spawn:e,execSync:f}=c(79646),g=c(33873),h=c(29021),i=c(21820),j=c(91645),k=c(55591),l=c(55511),{addDNSEntry:m,removeDNSEntry:n,removeAllDNSEntries:o,removeAllDNSEntriesSync:p,checkAllDNSStatus:q,TOOL_HOSTS:r,isSudoAvailable:s,isSudoPasswordRequired:t}=c(66936),{isAdmin:u}=c(64809),v="win32"===process.platform,w="darwin"===process.platform,{generateCert:x}=c(26033),{installCert:y,uninstallCert:z}=c(9631),{isCertExpired:A}=c(8578),{DATA_DIR:B,MITM_DIR:C}=c(82193),{log:D,err:E}=c(87777),{LSOF_BIN:F}=c(17511),G="http://localhost:1997";function H(a){return null==a||""===a?"''":`'${String(a).replace(/'/g,"'\\''")}'`}async function I(){if(!_)return G;try{let a=await _(),b=a&&null!=a.mitmRouterBaseUrl?String(a.mitmRouterBaseUrl).trim():"";if(!b)return G;let c=new URL(b);if("http:"!==c.protocol&&"https:"!==c.protocol)return G;return b.replace(/\/+$/,"")}catch{return G}}let J=g.join(C,".mitm.pid"),K=[5e3,1e4,2e4,3e4,6e4],L=0,M=0,N=!1;function O(){if(process.env.MITM_SERVER_PATH)return process.env.MITM_SERVER_PATH;let a=g.join(__dirname,"server.js");if(h.existsSync(a))return a;let b=g.join(process.cwd(),"src","mitm","server.js");if(h.existsSync(b))return b;let c=g.join(process.cwd(),"..","src","mitm","server.js");return h.existsSync(c)?c:b}function P(a){try{if(!a||!h.existsSync(a)||!a.includes(`${g.sep}node_modules${g.sep}`))return a;let b=g.join(B,"runtime","mitm"),c=g.join(b,"server.js");if(h.existsSync(c))try{if(h.statSync(a).size===h.statSync(c).size)return c}catch{}return h.mkdirSync(b,{recursive:!0}),h.copyFileSync(a,c),c}catch(b){try{D(`[MITM] runtime copy failed: ${b.message}`)}catch{}return a}}let Q=P(O()),R="aes-256-gcm",S="zevai-mitm-pwd",T=String.fromCharCode(57,114,111,117,116,101,114)+"-mitm-pwd",U=null,V=null;function W(){return globalThis.__mitmSudoPassword||null}function X(a){globalThis.__mitmSudoPassword=a}function Y(a){try{return process.kill(a,0),!0}catch(a){return"EACCES"===a.code}}function Z(a,b=!1,e=null){if(v)d(`taskkill ${b?"/F ":""}/PID ${a}`,{windowsHide:!0},()=>{});else{let f=b?"SIGKILL":"SIGTERM",g=`pkill -${f} -P ${a} 2>/dev/null; kill -${f} ${a} 2>/dev/null`;if(e||s()){let{execWithPassword:a}=c(66936);a(g,e||"").catch(()=>d(g,{windowsHide:!0},()=>{}))}else d(g,{windowsHide:!0},()=>{})}}function $(a=S){try{let{machineIdSync:b}=c(19713),d=b();return l.createHash("sha256").update(d+a).digest()}catch{return l.createHash("sha256").update(a).digest()}}let _=null,aa=null;async function ab(a,b){if(aa)try{let c,d,e,f,g,h={mitmEnabled:a};b&&(c=$(S),d=l.randomBytes(12),e=l.createCipheriv(R,c,d),f=Buffer.concat([e.update(b,"utf8"),e.final()]),g=e.getAuthTag(),h.mitmSudoEncrypted=`${d.toString("hex")}:${g.toString("hex")}:${f.toString("hex")}`),await aa(h)}catch(a){E(`Failed to save settings: ${a.message}`)}}async function ac(){if(aa)try{await aa({mitmSudoEncrypted:null})}catch(a){E(`Failed to clear encrypted password: ${a.message}`)}}async function ad(){if(!_)return null;try{var a;let b,c=await _();if(!c.mitmSudoEncrypted)return null;return a=c.mitmSudoEncrypted,(b=b=>{try{let[c,d,e]=a.split(":");if(!c||!d||!e)return null;let f=$(b),g=l.createDecipheriv(R,f,Buffer.from(c,"hex"));return g.setAuthTag(Buffer.from(d,"hex")),Buffer.concat([g.update(Buffer.from(e,"hex")),g.final()]).toString("utf8")}catch{return null}})(S)||b(T)}catch{return null}}async function ae(a,b){if(aa&&_)try{let c={...(await _()).dnsToolEnabled||{},[a]:b};await aa({dnsToolEnabled:c})}catch(a){E(`Failed to save DNS state: ${a.message}`)}}async function af(){if(!_)return{};try{return(await _()).dnsToolEnabled||{}}catch{return{}}}async function ag(a){let b=await af(),c=a||W()||await ad();for(let[a,d]of Object.entries(b))if(d&&r[a])try{await m(a,c)}catch(b){E(`DNS ${a}: restore failed — ${b.message}`)}}async function ah(){return v?u():!(!u()&&t())||!!(W()||await ad())}function ai(a){return new Promise(a=>{v?d('powershell -NonInteractive -WindowStyle Hidden -Command "$c = Get-NetTCPConnection -LocalPort 443 -State Listen -ErrorAction SilentlyContinue | Select-Object -First 1; if ($c) { $c.OwningProcess } else { 0 }"',{windowsHide:!0},(b,c)=>{if(b)return a(null);let e=parseInt(c.trim(),10);if(!e||e<=4)return a(null);d(`tasklist /FI "PID eq ${e}" /FO CSV /NH`,{windowsHide:!0},(b,c)=>{let d=c?.match(/"([^"]+)"/);a({pid:e,name:d?d[1]:"unknown"})})}):d(`${F} -nP -iTCP:443 -sTCP:LISTEN -t`,{windowsHide:!0},(b,c)=>{if(b||!c?.trim())return a(null);let e=parseInt(c.trim().split("\n")[0],10);if(!e||isNaN(e))return a(null);d(`ps -p ${e} -o comm=`,{windowsHide:!0},(b,c)=>{a({pid:e,name:c?.trim()||"unknown"})})})})}async function aj(a){if(U&&!U.killed){try{U.kill("SIGKILL")}catch{}U=null,V=null}try{if(h.existsSync(J)){let b=parseInt(h.readFileSync(J,"utf-8").trim(),10);b&&Y(b)&&(Z(b,!0,a),await new Promise(a=>setTimeout(a,500))),h.unlinkSync(J)}}catch{}if(!v&&Q)try{let b=Q.replace(/'/g,"'\\''");if(a||s()){let{execWithPassword:d}=c(66936);await d(`pkill -SIGKILL -f "${b}" 2>/dev/null || true`,a||"").catch(()=>{})}else d(`pkill -SIGKILL -f "${b}" 2>/dev/null || true`,{windowsHide:!0},()=>{});await new Promise(a=>setTimeout(a,500))}catch{}}async function ak(){let a=null!==U&&!U.killed,b=V;if(!a)try{if(h.existsSync(J)){let c=parseInt(h.readFileSync(J,"utf-8").trim(),10);c&&Y(c)?(a=!0,b=c):h.unlinkSync(J)}}catch{}let d=q(),e=g.join(C,"rootCA.crt"),f=h.existsSync(e),{checkCertInstalled:i}=c(9631),j=!!f&&await i(e);return{running:a,pid:b,certExists:f,certTrusted:j,dnsStatus:d}}async function al(a){if(N)return;if(Date.now()-M>=6e4&&(L=0),L>=5)return void E("Max restart attempts reached. Giving up.");let b=K[Math.min(L,K.length-1)];L++,N=!0,D(`Restarting in ${b/1e3}s... (${L}/5)`),await new Promise(a=>setTimeout(a,b));try{let b=_?await _():null;if(b&&!b.mitmEnabled){D("MITM disabled, skipping restart"),N=!1;return}let c=W()||await ad();if(!c&&!v){E("No cached password, cannot auto-restart"),N=!1;return}await an(a,c),D("\uD83D\uDD04 Restarted successfully"),L=0,N=!1}catch(b){E(`Restart attempt ${L}/5 failed: ${b.message}`),N=!1,al(a)}}async function am(a,b){if(a&&a.pid){if(v)try{f(`powershell -NonInteractive -WindowStyle Hidden -Command "Stop-Process -Id ${a.pid} -Force -ErrorAction SilentlyContinue"`,{windowsHide:!0})}catch{}else try{let{execWithPassword:d}=c(66936);b||s()?await d(`kill -9 ${a.pid}`,b||""):f(`kill -9 ${a.pid}`,{windowsHide:!0})}catch{}await new Promise(a=>setTimeout(a,800))}}async function an(a,b,l=!1){if(!U||U.killed)try{if(h.existsSync(J)){let a=parseInt(h.readFileSync(J,"utf-8").trim(),10);if(a&&Y(a))return V=a,D(`♻️ Reusing existing process (PID: ${a})`),await ab(!0,b),b&&X(b),{running:!0,pid:a};h.unlinkSync(J)}}catch{}if(U&&!U.killed)throw Error("MITM server is already running");if(await aj(b),!v){let a=await new Promise(a=>{let b=j.createServer();b.once("error",b=>{"EADDRINUSE"===b.code?a("in-use"):a("no-permission")}),b.once("listening",()=>{b.close(()=>a("free"))}),b.listen(443,"127.0.0.1")});if("in-use"===a||"no-permission"===a){let a=await ai(b);if(a){let c=a.name.includes("/")?a.name.split("/").filter(Boolean).pop():a.name;if(l)D(`Killing process on port 443 (PID ${a.pid}, name=${c})...`),await am(a,b);else{let b=Error(`Port 443 is already in use by "${c}" (PID ${a.pid}).`);throw b.code="PORT_443_BUSY",b.portOwner={pid:a.pid,name:c},b}}}}let m=g.join(C,"rootCA.crt"),n=g.join(C,"rootCA.key"),o=h.existsSync(m)&&h.existsSync(n);if(!o||A(m)){if(o){D("\uD83D\uDD10 Cert expired — uninstalling old cert...");let a=b||W()||await ad();try{await z(a,m)}catch{}}D("\uD83D\uDD10 Generating Root CA..."),await x()}let{checkCertInstalled:p}=c(9631),r=await p(m),u=!v&&!w&&!s();if(r)D("\uD83D\uDD10 Cert: already trusted ✅");else{D("\uD83D\uDD10 Cert: not trusted → installing...");let a=b||W()||await ad();if(u)D(`🔐 Cert: skipping system trust (no sudo). Install ${m} as a trusted CA on machines that use this proxy.`);else{if(!a&&t())throw Error("Sudo password required to install Root CA certificate");try{await y(a,m),D("\uD83D\uDD10 Cert: ✅ trusted")}catch(a){throw Error(`Failed to trust certificate: ${a.message}`)}}}let B=Q;if((!B||!h.existsSync(B))&&(D(`[MITM] server.js missing at ${B} → recopying`),!(B=P(O()))||!h.existsSync(B)))throw Error(`MITM server.js not found at ${B}. Reinstall zevairouter.`);let G=await I();if(D(`🚀 Starting server... (router: ${G})`),v){let c=await ai(b);if(c)if(l)D(`Killing process on port 443 (PID ${c.pid}, name=${c.name})...`),await am(c,b);else{let a=Error(`Port 443 is already in use by "${c.name}" (PID ${c.pid}).`);throw a.code="PORT_443_BUSY",a.portOwner={pid:c.pid,name:c.name},a}U=e(process.execPath,[B],{detached:!1,windowsHide:!0,cwd:i.tmpdir(),stdio:["ignore","pipe","pipe"],env:{...process.env,ROUTER_API_KEY:a,NODE_ENV:"production",MITM_ROUTER_BASE:G}}),aa&&await aa({mitmCertInstalled:!0}).catch(()=>{})}else s()?((U=e("sudo",["-S","-E","sh","-c",[`HOME=${H(i.homedir())}`,`ROUTER_API_KEY=${H(a)}`,`MITM_ROUTER_BASE=${H(G)}`,"NODE_ENV=production",H(process.execPath),H(B)].join(" ")],{detached:!1,windowsHide:!0,stdio:["pipe","pipe","pipe"]})).stdin.write(`${b}
54
54
  `),U.stdin.end()):U=e(process.execPath,[B],{detached:!1,windowsHide:!0,cwd:i.tmpdir(),stdio:["ignore","pipe","pipe"],env:{...process.env,ROUTER_API_KEY:a,NODE_ENV:"production",MITM_ROUTER_BASE:G}});if(U&&(V=U.pid,h.writeFileSync(J,String(V)),M=Date.now()),w){let a=g.join(C,"rootCA.crt");h.existsSync(a)&&d(`launchctl setenv NODE_EXTRA_CA_CERTS "${a}"`,{windowsHide:!0},b=>{b?D(`[launchctl] Failed to set NODE_EXTRA_CA_CERTS: ${b.message}`):D(`[launchctl] NODE_EXTRA_CA_CERTS set to ${a}`)})}else if(v){let a=g.join(C,"rootCA.crt");h.existsSync(a)&&d(`setx NODE_EXTRA_CA_CERTS "${a}"`,{windowsHide:!0},a=>{a?D(`[setx] Failed to set NODE_EXTRA_CA_CERTS: ${a.message}`):D("[setx] NODE_EXTRA_CA_CERTS set for current user")})}let K=null;U&&(U.stdout.on("data",a=>{process.stdout.write(a)}),U.stderr.on("data",a=>{let b=a.toString().trim();b&&(v||!b.includes("Password:")&&!b.includes("password for"))&&(E(b),K=b),!v&&(b.includes("incorrect password")||b.includes("no password was provided"))&&(X(null),ac(),N=!0)}),U.on("exit",b=>{D(`Server exited (code: ${b})`),U=null,V=null;try{h.unlinkSync(J)}catch{}0===b||N||al(a)}));let L=await function(a=443){return new Promise(b=>{let c=Date.now()+8e3,d=()=>{let e=k.request({hostname:"127.0.0.1",port:a,path:"/_mitm_health",method:"GET",rejectUnauthorized:!1},a=>{let c="";a.on("data",a=>{c+=a}),a.on("end",()=>{try{let a=JSON.parse(c);b(!0===a.ok?{ok:!0,pid:a.pid||null}:null)}catch{b(null)}})});e.on("error",()=>{Date.now()<c?setTimeout(d,500):b(null)}),e.end()};d()})}(443);if(!L){if(U&&!U.killed){try{U.kill()}catch{}U=null}let a=function(){try{if(v){let a=f('powershell -NonInteractive -WindowStyle Hidden -Command "$c = Get-NetTCPConnection -LocalPort 443 -State Listen -ErrorAction SilentlyContinue | Select-Object -First 1; if ($c) { $c.OwningProcess } else { 0 }"',{encoding:"utf8",windowsHide:!0}).trim(),b=parseInt(a,10);if(b&&b>4){let a=f(`tasklist /FI "PID eq ${b}" /FO CSV /NH`,{encoding:"utf8",windowsHide:!0}).match(/"([^"]+)"/);if(a)return a[1].replace(".exe","")}}else{let a=f(`${F} -i :443`,{encoding:"utf8",windowsHide:!0}).trim().split("\n");if(a.length>1)return a[1].split(/\s+/)[0]}}catch{}return null}(),b=a?` Port 443 already in use by ${a}.`:"",c=K||`Check sudo password or port 443 access.${b}`;throw Error(`MITM server failed to start. ${c}`)}for(let[a,b]of(aa&&await aa({mitmCertInstalled:!0}).catch(()=>{}),D(`✅ Server healthy (PID: ${V||L.pid})`),Object.entries(q())))D(`🌐 DNS ${a}: ${b?"✅ active":"❌ inactive"}`);return await ab(!0,b),b&&X(b),{running:!0,pid:V}}async function ao(a){N=!0,L=0,D("⏹ Stopping server...");let b=U,e=b&&!b.killed?b.pid:(()=>{try{return parseInt(h.readFileSync(J,"utf-8").trim(),10)}catch{return null}})();if(e&&Y(e)&&(D(`Killing server (PID: ${e})...`),Z(e,!1,a),await new Promise(a=>setTimeout(a,1e3)),Y(e)&&Z(e,!0,a)),U=null,V=null,v){let a=g.join(process.env.SystemRoot||"C:\\Windows","System32","drivers","etc","hosts"),b=Object.values(r).flat();try{let{isAdmin:d,runElevatedPowerShell:e,quotePs:f}=c(64809);if(d()){let d=h.readFileSync(a,"utf8"),e=d.split(/\r?\n/).filter(a=>!b.some(b=>a.includes(b))).join("\r\n").replace(/[\r\n\s]+$/g,"")+"\r\n";e!==d&&h.writeFileSync(a,e,"utf8");try{c(79646).execSync("ipconfig /flushdns",{windowsHide:!0,stdio:"ignore"})}catch{}D("\uD83C\uDF10 DNS: ✅ all tool hosts removed")}else{let c=b.map(f).join(","),d=`
55
55
  $hosts = @(${c})
56
56
  $lines = Get-Content -LiteralPath ${f(a)}
@@ -1 +1 @@
1
- "use strict";exports.id=7965,exports.ids=[7965],exports.modules={57965:(a,b,c)=>{c.d(b,{createNodeSqliteAdapter:()=>e});var d=c(76040);async function e(a){let b=process.emit;process.emit=function(a,c,...d){return!("warning"===a&&c?.name==="ExperimentalWarning"&&/SQLite/i.test(c.message||""))&&b.call(process,a,c,...d)};let e=new(await Promise.resolve().then(c.t.bind(c,79868,23))).DatabaseSync(a);e.exec(d.oG);let f=new Map;function g(a){let b=f.get(a);return b||(b=e.prepare(a),f.set(a,b)),b}let h=setInterval(()=>{try{e.exec("PRAGMA wal_checkpoint(TRUNCATE)")}catch{}},6e4);function i(){try{e.exec("PRAGMA wal_checkpoint(TRUNCATE)")}catch{}try{f.clear()}catch{}try{e.close()}catch{}}"function"==typeof h.unref&&h.unref();let j=()=>i();return process.once("beforeExit",j),process.once("SIGINT",()=>{j(),process.exit(0)}),process.once("SIGTERM",()=>{j(),process.exit(0)}),{driver:"node:sqlite",run(a,b=[]){let c=g(a).run(...b);return{changes:Number(c.changes??0),lastInsertRowid:Number(c.lastInsertRowid??0)}},get:(a,b=[])=>g(a).get(...b),all:(a,b=[])=>g(a).all(...b),exec:a=>e.exec(a),transaction(a){let b=`sp_${Math.random().toString(36).slice(2)}`;e.exec(`SAVEPOINT ${b}`);try{let c=a();return e.exec(`RELEASE ${b}`),c}catch(a){try{e.exec(`ROLLBACK TO ${b}`),e.exec(`RELEASE ${b}`)}catch{}throw a}},checkpoint(){e.exec("PRAGMA wal_checkpoint(TRUNCATE)")},close(){clearInterval(h),i()},raw:e}}}};
1
+ "use strict";exports.id=7965,exports.ids=[7965],exports.modules={57965:(a,b,c)=>{c.d(b,{createNodeSqliteAdapter:()=>e});var d=c(76040);async function e(a){let b=process.emit;process.emit=function(a,c,...d){return!("warning"===a&&c?.name==="ExperimentalWarning"&&/SQLite/i.test(c.message||""))&&b.call(process,a,c,...d)};let e=new(await Promise.resolve().then(c.t.bind(c,79868,23))).DatabaseSync(a);e.exec(d.oG);let f=new Map;function g(a){let b=f.get(a);return b||(b=e.prepare(a),f.set(a,b)),b}let h=setInterval(()=>{try{e.exec("PRAGMA wal_checkpoint(TRUNCATE)")}catch{}},6e4);"function"==typeof h.unref&&h.unref();let i=!1;function j(){if(!i){i=!0;try{e.exec("PRAGMA wal_checkpoint(TRUNCATE)")}catch{}try{f.clear()}catch{}try{e.close()}catch{}}}let k=()=>j();return process.once("beforeExit",k),{driver:"node:sqlite",run(a,b=[]){let c=g(a).run(...b);return{changes:Number(c.changes??0),lastInsertRowid:Number(c.lastInsertRowid??0)}},get:(a,b=[])=>g(a).get(...b),all:(a,b=[])=>g(a).all(...b),exec:a=>e.exec(a),transaction(a){let b=`sp_${Math.random().toString(36).slice(2)}`;e.exec(`SAVEPOINT ${b}`);try{let c=a();return e.exec(`RELEASE ${b}`),c}catch(a){try{e.exec(`ROLLBACK TO ${b}`),e.exec(`RELEASE ${b}`)}catch{}throw a}},checkpoint(){e.exec("PRAGMA wal_checkpoint(TRUNCATE)")},close(){clearInterval(h),process.removeListener("beforeExit",k),j()},raw:e}}}};
@@ -0,0 +1 @@
1
+ "use strict";exports.id=8028,exports.ids=[8028],exports.modules={58028:(a,b,c)=>{c.d(b,{R:()=>C});var d=c(80238),e=c(89718),f=c(75681);function g(a){return a?.length?{includes:a.filter(a=>!a.startsWith("-")),excludes:a.filter(a=>a.startsWith("-")).map(a=>a.slice(1))}:{includes:[],excludes:[]}}function h(a,b){let c=a.providerOptions?.[b];if("string"==typeof c&&c.trim().length>0)return c.trim();let d=a.providerSpecificData?.[b];if("string"==typeof d&&d.trim().length>0)return d.trim()}function i(a,b){return(h(b,"baseUrl")||a.baseUrl).replace(/\/+$/,"")}function j(a,b){if("number"==typeof a&&!(a<=0)&&!(b<=0))return Math.floor(a/b)+1}let k={serper:function(a,b){let c="news"===b.searchType?"/news":"/search",d={q:b.query,num:b.maxResults};return b.country&&(d.gl=b.country.toLowerCase()),b.language&&(d.hl=b.language),{url:`${i(a,b)}${c}`,init:{method:"POST",headers:{"Content-Type":"application/json","X-API-Key":b.token},body:JSON.stringify(d)}}},"brave-search":function(a,b){let c="news"===b.searchType?"/news/search":"/web/search",d=new URLSearchParams({q:b.query,count:String(b.maxResults)});return b.country&&d.set("country",b.country),b.language&&d.set("search_lang",b.language),{url:`${i(a,b)}${c}?${d}`,init:{method:"GET",headers:{Accept:"application/json","X-Subscription-Token":b.token}}}},perplexity:function(a,b){let c={query:b.query,max_results:b.maxResults};return b.country&&(c.country=b.country),b.language&&(c.search_language_filter=[b.language]),b.domainFilter?.length&&(c.search_domain_filter=b.domainFilter),{url:i(a,b),init:{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${b.token}`},body:JSON.stringify(c)}}},exa:function(a,b){let{includes:c,excludes:d}=g(b.domainFilter),e={query:b.query,numResults:b.maxResults,type:"auto",text:!0,highlights:!0};return c.length&&(e.includeDomains=c),d.length&&(e.excludeDomains=d),"news"===b.searchType&&(e.category="news"),{url:i(a,b),init:{method:"POST",headers:{"Content-Type":"application/json","x-api-key":b.token},body:JSON.stringify(e)}}},tavily:function(a,b){let{includes:c,excludes:d}=g(b.domainFilter),e={query:b.query,max_results:b.maxResults,topic:"news"===b.searchType?"news":"general"};return c.length&&(e.include_domains=c),d.length&&(e.exclude_domains=d),b.country&&(e.country=b.country),{url:i(a,b),init:{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${b.token}`},body:JSON.stringify(e)}}},"google-pse":function(a,b){let c=b.token,d=h(b,"cx");if(!c||!d)throw Error("Google Programmable Search requires both apiKey and cx");let e=new URLSearchParams({key:c,cx:d,q:b.query,num:String(Math.min(b.maxResults,10))});if(b.country&&e.set("gl",b.country.toLowerCase()),b.language&&e.set("hl",b.language),b.timeRange&&"any"!==b.timeRange){let a={day:"d1",week:"w1",month:"m1",year:"y1"}[b.timeRange];a&&e.set("dateRestrict",a)}return"number"==typeof b.offset&&b.offset>0&&e.set("start",String(Math.min(b.offset+1,91))),{url:`${i(a,b)}?${e}`,init:{method:"GET",headers:{Accept:"application/json"}}}},linkup:function(a,b){let c=b.token;if(!c)throw Error("Linkup Search requires an API key");let{includes:d,excludes:e}=g(b.domainFilter),f=h(b,"depth"),j=f&&["fast","standard","deep"].includes(f)?f:"standard",k={q:b.query,depth:j,outputType:"searchResults",maxResults:b.maxResults};if(d.length&&(k.includeDomains=d),e.length&&(k.excludeDomains=e),b.timeRange&&"any"!==b.timeRange){let a=new Date,c=a.toISOString().slice(0,10),d=new Date(a);"day"===b.timeRange&&d.setUTCDate(d.getUTCDate()-1),"week"===b.timeRange&&d.setUTCDate(d.getUTCDate()-7),"month"===b.timeRange&&d.setUTCMonth(d.getUTCMonth()-1),"year"===b.timeRange&&d.setUTCFullYear(d.getUTCFullYear()-1),k.fromDate=d.toISOString().slice(0,10),k.toDate=c}return{url:i(a,b),init:{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${c}`},body:JSON.stringify(k)}}},searchapi:function(a,b){let c=b.token;if(!c)throw Error("SearchAPI requires an API key");let d=new URLSearchParams({engine:"news"===b.searchType?"google_news":"google",q:b.query,api_key:c});b.country&&d.set("gl",b.country.toLowerCase()),b.language&&d.set("hl",b.language);let e=j(b.offset,b.maxResults);return e&&d.set("page",String(e)),{url:`${i(a,b)}?${d}`,init:{method:"GET",headers:{Accept:"application/json"}}}},youcom:function(a,b){let c=b.token;if(!c)throw Error("You.com Search requires an API key");let{includes:d,excludes:e}=g(b.domainFilter),f=new URLSearchParams({query:b.query,count:String(Math.min(b.maxResults,100))});return b.timeRange&&"any"!==b.timeRange&&f.set("freshness",b.timeRange),"number"==typeof b.offset&&b.offset>0&&b.maxResults>0&&f.set("offset",String(Math.min(Math.floor(b.offset/b.maxResults),9))),b.country&&f.set("country",b.country),b.language&&f.set("language",b.language),d.length&&f.set("include_domains",d.join(",")),e.length&&f.set("exclude_domains",e.join(",")),b.contentOptions?.full_page&&(f.set("livecrawl","news"===b.searchType?"news":"web"),f.append("livecrawl_formats","markdown"===b.contentOptions.format?"markdown":"html")),{url:`${i(a,b)}?${f}`,init:{method:"GET",headers:{Accept:"application/json","X-API-Key":c}}}},searxng:function(a,b){let c=i(a,b),d=c.endsWith("/search")?c:`${c}/search`,e=new URLSearchParams({q:b.query,format:"json",categories:"news"===b.searchType?"news":"general"});b.language&&e.set("language",b.language),b.timeRange&&"any"!==b.timeRange&&e.set("time_range",b.timeRange);let f=j(b.offset,b.maxResults);return f&&e.set("pageno",String(f)),{url:`${d}?${e}`,init:{method:"GET",headers:{Accept:"application/json"}}}}};function l(a,b,c,d){let e=b.url||"";return{title:b.title||"",url:e,display_url:e?e.replace(/^https?:\/\/(www\.)?/,"").split("?")[0]:void 0,snippet:b.snippet||"",position:c+1,score:"number"==typeof b.score?Math.min(1,Math.max(0,b.score)):null,published_at:b.published_at||null,favicon_url:b.favicon_url||null,content:b.full_text?{format:b.text_format||"text",text:b.full_text,length:b.full_text.length}:null,metadata:{author:b.author||null,language:null,source_type:b.source_type||null,image_url:b.image_url||null},citation:{provider:a,retrieved_at:d,rank:c+1},provider_raw:null}}let m={serper:function(a,b,c){let d=new Date().toISOString(),e="news"===c?a.news:a.organic;if(!Array.isArray(e))return{results:[],totalResults:null};let f=e.map((a,b)=>l("serper",{title:a.title,url:a.link,snippet:a.snippet||a.description,published_at:a.date},b,d)),g=a.searchParameters?.totalResults;return{results:f,totalResults:"number"==typeof g?g:null}},"brave-search":function(a,b,c){let d=new Date().toISOString(),e="news"===c?a.news||a:a.web,f=e?.results;return Array.isArray(f)?{results:f.map((a,b)=>l("brave-search",{title:a.title,url:a.url,snippet:a.description,published_at:a.page_age||a.age,favicon_url:a.meta_url?.favicon||a.favicon},b,d)),totalResults:e?.totalCount??null}:{results:[],totalResults:null}},perplexity:function(a,b,c){let d=new Date().toISOString(),e=a.results;if(!Array.isArray(e))return{results:[],totalResults:null};let f=e.map((a,b)=>l("perplexity",{title:a.title,url:a.url,snippet:a.snippet,published_at:a.date||a.last_updated},b,d));return{results:f,totalResults:f.length}},exa:function(a,b,c){let d=new Date().toISOString(),e=a.results;if(!Array.isArray(e))return{results:[],totalResults:null};let f=e.map((a,b)=>l("exa",{title:a.title,url:a.url,snippet:a.highlights?.[0]||a.text?.slice(0,300)||"",score:a.score,published_at:a.publishedDate,favicon_url:a.favicon,author:a.author,image_url:a.image,full_text:a.text,text_format:"text"},b,d));return{results:f,totalResults:f.length}},tavily:function(a,b,c){let d=new Date().toISOString(),e=a.results;if(!Array.isArray(e))return{results:[],totalResults:null};let f=e.map((a,b)=>l("tavily",{title:a.title,url:a.url,snippet:a.content||"",score:a.score,published_at:a.published_date,full_text:a.raw_content,text_format:"text"},b,d));return{results:f,totalResults:f.length}},"google-pse":function(a,b,c){let d=new Date().toISOString(),e=(Array.isArray(a.items)?a.items:[]).map((a,b)=>l("google-pse",{title:a.title,url:a.link,snippet:a.snippet,image_url:a.pagemap?.cse_image?.[0]?.src||a.pagemap?.cse_thumbnail?.[0]?.src||a.pagemap?.metatags?.[0]?.["og:image"]},b,d)),f=a.searchInformation?.totalResults??a.queries?.request?.[0]?.totalResults??null,g="string"==typeof f?Number(f):f;return{results:e,totalResults:Number.isFinite(g)?g:null}},linkup:function(a,b,c){let d=new Date().toISOString(),e=(Array.isArray(a.results)?a.results:[]).map((a,b)=>l("linkup",{title:a.name||a.title,url:a.url,snippet:a.content||a.snippet||"",source_type:a.type||"web",image_url:a.image_url||a.imageUrl||null,full_text:a.content,text_format:"text"},b,d));return{results:e,totalResults:e.length}},searchapi:function(a,b,c){let d=new Date().toISOString(),e=(Array.isArray(a.organic_results)?a.organic_results:Array.isArray(a.top_stories)?a.top_stories:[]).map((a,b)=>l("searchapi",{title:a.title,url:a.link,snippet:a.snippet||a.description||"",published_at:a.date||a.published_at,favicon_url:a.favicon,author:a.source||null,image_url:a.thumbnail||null},b,d)),f=a.search_information?.total_results,g="number"==typeof f?f:"string"==typeof f?Number(f):null;return{results:e,totalResults:Number.isFinite(g)?g:e.length}},youcom:function(a,b,c){let d=new Date().toISOString(),e=a?.results&&"object"==typeof a.results?a.results:void 0,f="news"===c?e?.news||[]:e?.web||[],g=(Array.isArray(f)?f:[]).map((a,b)=>{let e=Array.isArray(a.snippets)?a.snippets.find(a=>"string"==typeof a):null,f="string"==typeof a.markdown?a.markdown:"string"==typeof a.html?a.html:void 0,g="string"==typeof a.markdown?"markdown":"html";return l("youcom",{title:a.title,url:a.url,snippet:"string"==typeof e?e:"string"==typeof a.description?a.description:"",published_at:a.page_age,favicon_url:a.favicon_url,image_url:a.thumbnail_url,source_type:c,full_text:f,text_format:f?g:void 0},b,d)});return{results:g,totalResults:g.length}},searxng:function(a,b,c){let d=new Date().toISOString(),e=(Array.isArray(a.results)?a.results:[]).map((a,b)=>l("searxng",{title:a.title,url:a.url,snippet:a.content||a.snippet||"",published_at:a.publishedDate||a.published_date||null,source_type:Array.isArray(a.engines)?a.engines.join(", "):a.engine||a.category||null,image_url:a.thumbnail||a.img_src||null},b,d));return{results:e,totalResults:e.length}}};function n(a){return a?"string"==typeof a?{url:a}:"object"==typeof a&&a.url?a:null:null}let o={gemini:{endpoint:a=>`https://generativelanguage.googleapis.com/v1beta/models/${a}:generateContent`,defaultModel:"gemini-2.5-flash",buildBody:a=>({contents:[{role:"user",parts:[{text:a}]}],tools:[{google_search:{}}]}),buildHeaders:a=>({"Content-Type":"application/json","x-goog-api-key":a}),extractAnswer:a=>{let b=a?.candidates?.[0],c=(b?.content?.parts||[]).map(a=>a?.text||"").filter(Boolean).join("");return{text:c,citations:(b?.groundingMetadata?.groundingChunks||[]).map(a=>a?.web).filter(Boolean).map(a=>({url:a.uri||a.url,title:a.title||""})).filter(a=>a.url),tokens:a?.usageMetadata?.totalTokenCount||0}}},openai:{endpoint:()=>"https://api.openai.com/v1/chat/completions",defaultModel:"gpt-4o-mini",buildBody:(a,b)=>{let c={model:b,messages:[{role:"user",content:a}]};return/search/i.test(b)||(c.tools=[{type:"web_search"}]),c},buildHeaders:a=>({"Content-Type":"application/json",Authorization:`Bearer ${a}`}),extractAnswer:a=>{let b=a?.choices?.[0]?.message||{},c=b.content||"",d=(Array.isArray(b.annotations)?b.annotations:[]).map(a=>a?.url_citation).filter(Boolean).map(a=>({url:a.url,title:a.title||""})),e=Array.isArray(a?.citations)?a.citations.map(n).filter(Boolean):[];return{text:c,citations:d.length?d:e,tokens:a?.usage?.total_tokens||0}}},xai:{endpoint:()=>"https://api.x.ai/v1/responses",defaultModel:"grok-4.20-reasoning",buildBody:(a,b)=>({model:b,input:[{role:"user",content:a}],tools:[{type:"web_search"}]}),buildHeaders:a=>({"Content-Type":"application/json",Authorization:`Bearer ${a}`}),extractAnswer:a=>{let b=Array.isArray(a?.output)?a.output:[],c="",d=[];for(let a of b)for(let b of Array.isArray(a?.content)?a.content:[])for(let a of("string"==typeof b?.text&&(c+=b.text),Array.isArray(b?.annotations)?b.annotations:[])){let b=n(a?.url?a:a?.url_citation);b&&d.push(b)}if(!d.length&&Array.isArray(a?.citations))for(let b of a.citations){let a=n(b);a&&d.push(a)}return{text:c,citations:d,tokens:a?.usage?.total_tokens||0}}},kimi:{endpoint:()=>"https://api.moonshot.cn/v1/chat/completions",defaultModel:"kimi-k2.5",buildBody:(a,b)=>({model:b,messages:[{role:"user",content:a}],tools:[{type:"builtin_function",function:{name:"$web_search"}}]}),buildHeaders:a=>({"Content-Type":"application/json",Authorization:`Bearer ${a}`}),extractAnswer:a=>{let b=a?.choices?.[0]?.message||{},c=b.content||"",d=Array.isArray(b.tool_calls)?b.tool_calls:[],e=[];for(let a of d){let b,c=a?.function?.arguments;if(!c)continue;try{b="string"==typeof c?JSON.parse(c):c}catch{continue}let d=b?.search_results||b?.results||b?.references||[];if(Array.isArray(d))for(let a of d){let b=a?.url||a?.link;b&&e.push({url:b,title:a.title||"",snippet:a.snippet||a.summary||""})}}return{text:c,citations:e,tokens:a?.usage?.total_tokens||0}}},minimax:{endpoint:()=>"https://api.minimaxi.com/v1/text/chatcompletion_v2",defaultModel:"MiniMax-M2.7",buildBody:(a,b)=>({model:b,messages:[{role:"user",content:a}],tools:[{type:"web_search"}]}),buildHeaders:a=>({"Content-Type":"application/json",Authorization:`Bearer ${a}`}),extractAnswer:a=>{let b=a?.choices?.[0]?.message||{},c=b.content||"",d=[];for(let b of Array.isArray(a?.web_search_results)?a.web_search_results:[]){let a=b?.url||b?.link;a&&d.push({url:a,title:b.title||"",snippet:b.snippet||b.summary||""})}if(!d.length)for(let a of Array.isArray(b.tool_calls)?b.tool_calls:[]){let b,c=a?.function?.arguments;if(!c)continue;try{b="string"==typeof c?JSON.parse(c):c}catch{continue}let e=b?.results||b?.search_results||[];if(Array.isArray(e))for(let a of e){let b=a?.url||a?.link;b&&d.push({url:b,title:a.title||"",snippet:a.snippet||""})}}return{text:c,citations:d,tokens:a?.usage?.total_tokens||0}}},perplexity:{endpoint:()=>"https://api.perplexity.ai/chat/completions",defaultModel:"sonar",buildBody:(a,b)=>({model:b,messages:[{role:"user",content:a}]}),buildHeaders:a=>({"Content-Type":"application/json",Authorization:`Bearer ${a}`}),extractAnswer:a=>{let b=(a?.choices?.[0]?.message||{}).content||"",c=a?.citations||[];return{text:b,citations:Array.isArray(c)?c.map(n).filter(Boolean):[],tokens:a?.usage?.total_tokens||0}}}};async function p({provider:a,query:b,maxResults:c,model:d,credentials:e,log:f}){let g,h,i=Date.now(),j=o[a];if(!j)return{success:!1,status:400,error:`Unsupported chat-search provider: ${a}`};if(!b||"string"!=typeof b)return{success:!1,status:400,error:"Missing query"};let k=e?.apiKey||e?.accessToken;if(!k)return{success:!1,status:401,error:"Missing credentials (apiKey or accessToken)"};let l=Number.isFinite(c)&&c>0?Math.floor(c):10,m=d||j.defaultModel,n=j.endpoint(m),q=j.buildBody(b,m),r=j.buildHeaders(k),s=new AbortController,t=setTimeout(()=>s.abort(),15e3),u=Date.now();try{g=await fetch(n,{method:"POST",headers:r,body:JSON.stringify(q),signal:s.signal})}catch(b){if(clearTimeout(t),b?.name==="AbortError")return f?.warn?.(`[chatSearch] timeout provider=${a}`),{success:!1,status:504,error:"Upstream timeout"};return f?.error?.(`[chatSearch] network error provider=${a}: ${b?.message}`),{success:!1,status:502,error:`Network error: ${b?.message||"unknown"}`}}clearTimeout(t);let v=Date.now()-u;try{h=await g.json()}catch{return{success:!1,status:502,error:`Invalid upstream response (status ${g.status})`}}if(!g.ok){let b=h?.error?.message||h?.error||h?.message||`Upstream HTTP ${g.status}`;return f?.warn?.(`[chatSearch] upstream error provider=${a} status=${g.status}`),{success:!1,status:g.status,error:"string"==typeof b?b:JSON.stringify(b)}}let{text:w,citations:x,tokens:y}=j.extractAnswer(h),z=new Date().toISOString(),A=(x||[]).slice(0,l).map((b,c)=>({title:b.title||"",url:b.url,snippet:b.snippet||"",position:c+1,score:null,published_at:null,favicon_url:null,content:null,metadata:{},citation:{provider:a,retrieved_at:z,rank:c+1},provider_raw:null}));return{success:!0,status:200,data:{provider:a,query:b,results:A,answer:{source:a,text:w||"",model:m},usage:{queries_used:1,search_cost_usd:0,llm_tokens:y||0},metrics:{response_time_ms:Date.now()-i,upstream_latency_ms:v,total_results_available:null},errors:[]}}}let q=new Set([400,401,403,404]),r=/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F]/;function s(a,b=200){return new Response(JSON.stringify(a),{status:b,headers:{"Content-Type":"application/json","Access-Control-Allow-Origin":"*"}})}function t(a,b){return{success:!1,status:a,error:b,response:s({error:{message:b,code:a}},a)}}function u(a){return{success:!0,data:a,response:s(a,200)}}async function v({provider:a,providerConfig:b,body:c,credentials:d,log:e,globalStartTime:f}){var g,h,j,l;let n,o,p=Date.now(),q=d?.apiKey||d?.accessToken||void 0;if("none"!==b.authType&&!q)return{success:!1,status:401,error:`No credentials for provider: ${a.id}`};let r={query:c.query,searchType:c.search_type||b.searchTypes?.[0]||"web",maxResults:Math.min(c.max_results||b.defaultMaxResults||5,b.maxMaxResults||100),token:q,country:c.country,language:c.language,timeRange:c.time_range,offset:c.offset,domainFilter:c.domain_filter,contentOptions:c.content_options,providerOptions:c.provider_options,providerSpecificData:d?.providerSpecificData};try{let c;({url:n,init:o}=(g={id:a.id,...b},(c=k[g.id])?c(g,r):{url:i(g,r),init:{method:g.method||"POST",headers:{"Content-Type":"application/json",...r.token?{Authorization:`Bearer ${r.token}`}:{}},body:JSON.stringify({query:r.query,max_results:r.maxResults,search_type:r.searchType})}}))}catch(b){return{success:!1,status:400,error:b?.message||`Invalid request for ${a.id}`}}let s=15e3-(Date.now()-f),t=Math.min(b.timeoutMs||1e4,Math.max(s,1e3)),u=new AbortController,w=setTimeout(()=>u.abort(),t);e?.info?.("SEARCH",`${a.id} | "${r.query.slice(0,80)}" | type=${r.searchType}`);try{let c,d=await fetch(n,{...o,headers:function(a){if(!a)return a;let b={};for(let[c,d]of Object.entries(a))b[c]="string"==typeof d?d.replace(/[^\x00-\xFF]/g,"").trim():d;return b}(o.headers),signal:u.signal});if(clearTimeout(w),!d.ok){let b=await d.text().catch(()=>"");return e?.error?.("SEARCH",`${a.id} ${d.status}: ${b.slice(0,200)}`),{success:!1,status:d.status,error:`${a.id} returned ${d.status}: ${b.slice(0,200)}`}}let f=await d.json(),g=(h=a.id,j=r.query,l=r.searchType,(c=m[h])?c(f,j,l):{results:[],totalResults:null}),i=g.results.slice(0,r.maxResults),k=Date.now()-p;return{success:!0,data:{provider:a.id,query:r.query,results:i,answer:null,usage:{queries_used:1,search_cost_usd:b.costPerQuery||0},metrics:{response_time_ms:k,upstream_latency_ms:k,total_results_available:g.totalResults},errors:[]}}}catch(c){clearTimeout(w);let b="AbortError"===c.name;return e?.error?.("SEARCH",`${a.id} ${b?"timeout":"error"}: ${c.message}`),{success:!1,status:b?504:502,error:`${a.id} ${b?"timeout":"error"}: ${c.message}`}}}async function w({body:a,provider:b,providerConfig:c,credentials:d,log:e}){let f,g=Date.now(),{clean:h,error:i}=function(a){if(r.test(a))return{error:"Query contains invalid control characters"};let b=a.normalize("NFKC").trim().replace(/\s+/g," ");return b?{clean:b}:{error:"Query is empty after normalization"}}(a.query||"");if(i)return t(400,i);let j={...a,query:h};if(c)f=await v({provider:b,providerConfig:c,body:j,credentials:d,log:e,globalStartTime:g});else{if(!b.searchViaChat)return t(400,`Provider ${b.id} does not support web search`);f=await p({provider:b.id,query:h,maxResults:j.max_results,model:b.searchViaChat.defaultModel,credentials:d,log:e})}if(f.success)return u(f.data);if(!q.has(f.status||0)&&Date.now()-g<15e3&&b.searchViaChat&&c){e?.warn?.("SEARCH",`${b.id} dedicated failed (${f.status}), falling back to chat-based search`);let a=await p({provider:b.id,query:h,maxResults:j.max_results,model:b.searchViaChat.defaultModel,credentials:d,log:e});if(a.success)return u(a.data)}return t(f.status||502,f.error||"Search failed")}var x=c(43659),y=c(41004),z=c(7803),A=c(67828),B=c(18910);async function C(a){let b;try{b=await a.json()}catch{return z.warn("SEARCH","Invalid JSON body"),(0,x.yj)(y.gx.BAD_REQUEST,"Invalid JSON body")}let c=new URL(a.url),f=b.provider||b.model,g=b.query;z.request("POST",`${c.pathname} | ${f}`);let h=(0,d.Tr)(a);h?z.debug("AUTH",`API Key: ${z.maskKey(h)}`):z.debug("AUTH","No API key provided (local mode)");let i=await (0,e.mt)();if(i.requireApiKey){if(!h)return z.warn("AUTH","Missing API key (requireApiKey=true)"),(0,x.yj)(y.gx.UNAUTHORIZED,"Missing API key");if(!await (0,d.kI)(h))return z.warn("AUTH","Invalid API key (requireApiKey=true)"),(0,x.yj)(y.gx.UNAUTHORIZED,"Invalid API key")}if(!f||"string"!=typeof f)return z.warn("SEARCH","Missing provider/model"),(0,x.yj)(y.gx.BAD_REQUEST,"Missing required field: provider (or model)");if(!g||"string"!=typeof g||!g.trim())return z.warn("SEARCH","Missing query"),(0,x.yj)(y.gx.BAD_REQUEST,"Missing required field: query");let j=await (0,e.Uv)(),k=(0,B.Vu)(f,j);if(k){let c=i.comboStrategies||{},d=c[f]?.fallbackStrategy||i.comboStrategy||"fallback",e=i.comboStickyRoundRobinLimit;return z.info("SEARCH",`Combo "${f}" with ${k.length} providers (strategy: ${d}, sticky: ${e})`),(0,B.Pr)({body:b,models:k,handleSingleModel:(b,c)=>D(b,c,a,h,i),log:z,comboName:f,comboStrategy:d,comboStickyLimit:e})}return D(b,f,a,h,i)}async function D(a,b,c,e,g){let h=a.query,i=(0,f.rs)(b),j=f.AI_PROVIDERS[i];if(!j)return z.warn("SEARCH","Unknown provider",{provider:b}),(0,x.yj)(y.gx.BAD_REQUEST,`Unknown provider: ${b}`);let k=j.searchConfig;if(!(k||j.searchViaChat))return z.warn("SEARCH","Provider does not support web search",{provider:i}),(0,x.yj)(y.gx.BAD_REQUEST,`Provider ${i} does not support web search`);b!==i?z.info("ROUTING",`${b} → ${i}`):z.info("ROUTING",`Provider: ${i}`);let l={query:h.trim(),provider:i,max_results:a.max_results,search_type:a.search_type,country:a.country,language:a.language,time_range:a.time_range,offset:a.offset,domain_filter:a.domain_filter,content_options:a.content_options,provider_options:a.provider_options};if(j.noAuth){z.info("AUTH",`\x1b[32m${i} no-auth mode\x1b[0m`);let a=await w({body:l,provider:j,providerConfig:k,credentials:null,log:z});return a.success,a.response}let m=new Set,n=null,o=null;for(;;){let a=await (0,d.c1)(i,m);if(!a||a.allRateLimited){if(a?.allRateLimited){let b=n||a.lastError||"Unavailable",c=o||Number(a.lastErrorCode)||y.gx.SERVICE_UNAVAILABLE;return z.warn("SEARCH",`[${i}] ${b} (${a.retryAfterHuman})`),(0,x.wO)(c,`[${i}] ${b}`,a.retryAfter,a.retryAfterHuman)}if(0===m.size)return z.error("AUTH",`No credentials for provider: ${i}`),(0,x.yj)(y.gx.BAD_REQUEST,`No credentials for provider: ${i}`);return z.warn("SEARCH","No more accounts available",{provider:i}),(0,x.yj)(o||y.gx.SERVICE_UNAVAILABLE,n||"All accounts unavailable")}z.info("AUTH",`\x1b[32mUsing ${i} account: ${a.connectionName}\x1b[0m`);let b=await (0,A.eU)(i,a),c=await w({body:l,provider:j,providerConfig:k,credentials:b,log:z,onCredentialsRefreshed:async b=>{await (0,A.vN)(a.connectionId,{accessToken:b.accessToken,refreshToken:b.refreshToken,providerSpecificData:b.providerSpecificData,testStatus:"active"})},onRequestSuccess:async()=>{await (0,d.Pt)(a.connectionId,a)}});if(c.success)return c.response;let{shouldFallback:e}=await (0,d.vk)(a.connectionId,c.status,c.error,i);if(e){z.warn("AUTH",`Account ${a.connectionName} unavailable (${c.status}), trying fallback`),m.add(a.connectionId),n=c.error,o=c.status;continue}return c.response}}}};