zevairouter 1.0.154 → 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 (1857) hide show
  1. package/CHANGELOG.md +29 -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 +9 -9
  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/server/app/(dashboard)/dashboard/automation/page.js +2 -2
  11. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/automation/page.js.nft.json +1 -1
  12. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/automation/page_client-reference-manifest.js +1 -1
  13. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page.js +1 -1
  14. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page.js.nft.json +1 -1
  15. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
  16. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js +2 -2
  17. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js.nft.json +1 -1
  18. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page_client-reference-manifest.js +1 -1
  19. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js +2 -2
  20. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
  21. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  22. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page.js +1 -1
  23. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page.js.nft.json +1 -1
  24. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  25. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page.js +2 -2
  26. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page.js.nft.json +1 -1
  27. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
  28. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/context/page.js +2 -2
  29. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/context/page.js.nft.json +1 -1
  30. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/context/page_client-reference-manifest.js +1 -1
  31. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js +1 -1
  32. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
  33. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  34. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js +2 -2
  35. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js.nft.json +1 -1
  36. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
  37. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js +1 -1
  38. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js.nft.json +1 -1
  39. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -1
  40. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js +2 -2
  41. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js.nft.json +1 -1
  42. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +1 -1
  43. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page.js +2 -2
  44. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page.js.nft.json +1 -1
  45. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +1 -1
  46. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page.js +1 -1
  47. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page.js.nft.json +1 -1
  48. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
  49. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js +1 -1
  50. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
  51. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  52. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/playground/page.js +1 -1
  53. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/playground/page.js.nft.json +1 -1
  54. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/playground/page_client-reference-manifest.js +1 -1
  55. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page.js +1 -1
  56. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page.js.nft.json +1 -1
  57. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  58. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js +2 -2
  59. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js.nft.json +1 -1
  60. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  61. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page.js +1 -1
  62. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page.js.nft.json +1 -1
  63. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  64. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page.js +1 -1
  65. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page.js.nft.json +1 -1
  66. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  67. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page.js +1 -1
  68. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page.js.nft.json +1 -1
  69. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
  70. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page.js +1 -1
  71. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page.js.nft.json +1 -1
  72. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page_client-reference-manifest.js +1 -1
  73. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page.js +1 -1
  74. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page.js.nft.json +1 -1
  75. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
  76. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/terminal/page.js +2 -2
  77. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/terminal/page.js.nft.json +1 -1
  78. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/terminal/page_client-reference-manifest.js +1 -1
  79. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page.js +1 -1
  80. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page.js.nft.json +1 -1
  81. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page_client-reference-manifest.js +1 -1
  82. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page.js +1 -1
  83. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page.js.nft.json +1 -1
  84. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  85. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page.js +2 -2
  86. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page.js.nft.json +1 -1
  87. package/cli/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  88. package/cli/app/.next-cli-build/server/app/_global-error/page.js.nft.json +1 -1
  89. package/cli/app/.next-cli-build/server/app/_global-error/page_client-reference-manifest.js +1 -1
  90. package/cli/app/.next-cli-build/server/app/_global-error.html +1 -1
  91. package/cli/app/.next-cli-build/server/app/_global-error.rsc +1 -1
  92. package/cli/app/.next-cli-build/server/app/_global-error.segments/_full.segment.rsc +1 -1
  93. package/cli/app/.next-cli-build/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  94. package/cli/app/.next-cli-build/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  95. package/cli/app/.next-cli-build/server/app/_global-error.segments/_head.segment.rsc +1 -1
  96. package/cli/app/.next-cli-build/server/app/_global-error.segments/_index.segment.rsc +1 -1
  97. package/cli/app/.next-cli-build/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  98. package/cli/app/.next-cli-build/server/app/_not-found/page.js +1 -1
  99. package/cli/app/.next-cli-build/server/app/_not-found/page.js.nft.json +1 -1
  100. package/cli/app/.next-cli-build/server/app/_not-found/page_client-reference-manifest.js +1 -1
  101. package/cli/app/.next-cli-build/server/app/_not-found.html +1 -1
  102. package/cli/app/.next-cli-build/server/app/_not-found.rsc +3 -3
  103. package/cli/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +3 -3
  104. package/cli/app/.next-cli-build/server/app/_not-found.segments/_head.segment.rsc +1 -1
  105. package/cli/app/.next-cli-build/server/app/_not-found.segments/_index.segment.rsc +3 -3
  106. package/cli/app/.next-cli-build/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  107. package/cli/app/.next-cli-build/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  108. package/cli/app/.next-cli-build/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  109. package/cli/app/.next-cli-build/server/app/api/auth/login/route.js +1 -1
  110. package/cli/app/.next-cli-build/server/app/api/auth/login/route.js.nft.json +1 -1
  111. package/cli/app/.next-cli-build/server/app/api/auth/login/route_client-reference-manifest.js +1 -1
  112. package/cli/app/.next-cli-build/server/app/api/auth/logout/route.js +1 -1
  113. package/cli/app/.next-cli-build/server/app/api/auth/logout/route.js.nft.json +1 -1
  114. package/cli/app/.next-cli-build/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
  115. package/cli/app/.next-cli-build/server/app/api/auth/oidc/callback/route.js +1 -1
  116. package/cli/app/.next-cli-build/server/app/api/auth/oidc/callback/route.js.nft.json +1 -1
  117. package/cli/app/.next-cli-build/server/app/api/auth/oidc/callback/route_client-reference-manifest.js +1 -1
  118. package/cli/app/.next-cli-build/server/app/api/auth/oidc/start/route.js +1 -1
  119. package/cli/app/.next-cli-build/server/app/api/auth/oidc/start/route.js.nft.json +1 -1
  120. package/cli/app/.next-cli-build/server/app/api/auth/oidc/start/route_client-reference-manifest.js +1 -1
  121. package/cli/app/.next-cli-build/server/app/api/auth/oidc/test/route.js +1 -1
  122. package/cli/app/.next-cli-build/server/app/api/auth/oidc/test/route.js.nft.json +1 -1
  123. package/cli/app/.next-cli-build/server/app/api/auth/oidc/test/route_client-reference-manifest.js +1 -1
  124. package/cli/app/.next-cli-build/server/app/api/auth/status/route.js +1 -1
  125. package/cli/app/.next-cli-build/server/app/api/auth/status/route.js.nft.json +1 -1
  126. package/cli/app/.next-cli-build/server/app/api/auth/status/route_client-reference-manifest.js +1 -1
  127. package/cli/app/.next-cli-build/server/app/api/cache/stats/route.js +1 -1
  128. package/cli/app/.next-cli-build/server/app/api/cache/stats/route.js.nft.json +1 -1
  129. package/cli/app/.next-cli-build/server/app/api/cache/stats/route_client-reference-manifest.js +1 -1
  130. package/cli/app/.next-cli-build/server/app/api/changelog/route.js +1 -1
  131. package/cli/app/.next-cli-build/server/app/api/changelog/route.js.nft.json +1 -1
  132. package/cli/app/.next-cli-build/server/app/api/changelog/route_client-reference-manifest.js +1 -1
  133. package/cli/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js +1 -1
  134. package/cli/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js.nft.json +1 -1
  135. package/cli/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route_client-reference-manifest.js +1 -1
  136. package/cli/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js +1 -1
  137. package/cli/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js.nft.json +1 -1
  138. package/cli/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route_client-reference-manifest.js +1 -1
  139. package/cli/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js +1 -1
  140. package/cli/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js.nft.json +1 -1
  141. package/cli/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route_client-reference-manifest.js +1 -1
  142. package/cli/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route.js +1 -1
  143. package/cli/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route.js.nft.json +1 -1
  144. package/cli/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route_client-reference-manifest.js +1 -1
  145. package/cli/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js +1 -1
  146. package/cli/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js.nft.json +1 -1
  147. package/cli/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route_client-reference-manifest.js +1 -1
  148. package/cli/app/.next-cli-build/server/app/api/cli-tools/codex-gateway/accounts/route.js +1 -1
  149. package/cli/app/.next-cli-build/server/app/api/cli-tools/codex-gateway/accounts/route.js.nft.json +1 -1
  150. package/cli/app/.next-cli-build/server/app/api/cli-tools/codex-gateway/accounts/route_client-reference-manifest.js +1 -1
  151. package/cli/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js +1 -1
  152. package/cli/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js.nft.json +1 -1
  153. package/cli/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route_client-reference-manifest.js +1 -1
  154. package/cli/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js +1 -1
  155. package/cli/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js.nft.json +1 -1
  156. package/cli/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route_client-reference-manifest.js +1 -1
  157. package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js +1 -1
  158. package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js.nft.json +1 -1
  159. package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route_client-reference-manifest.js +1 -1
  160. package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js +1 -1
  161. package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js.nft.json +1 -1
  162. package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route_client-reference-manifest.js +1 -1
  163. package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js +1 -1
  164. package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js.nft.json +1 -1
  165. package/cli/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route_client-reference-manifest.js +1 -1
  166. package/cli/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js +1 -1
  167. package/cli/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js.nft.json +1 -1
  168. package/cli/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route_client-reference-manifest.js +1 -1
  169. package/cli/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js +1 -1
  170. package/cli/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js.nft.json +1 -1
  171. package/cli/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route_client-reference-manifest.js +1 -1
  172. package/cli/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js +1 -1
  173. package/cli/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js.nft.json +1 -1
  174. package/cli/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route_client-reference-manifest.js +1 -1
  175. package/cli/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js +1 -1
  176. package/cli/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js.nft.json +1 -1
  177. package/cli/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route_client-reference-manifest.js +1 -1
  178. package/cli/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js +1 -1
  179. package/cli/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js.nft.json +1 -1
  180. package/cli/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route_client-reference-manifest.js +1 -1
  181. package/cli/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js +1 -1
  182. package/cli/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js.nft.json +1 -1
  183. package/cli/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route_client-reference-manifest.js +1 -1
  184. package/cli/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js +1 -1
  185. package/cli/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js.nft.json +1 -1
  186. package/cli/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route_client-reference-manifest.js +1 -1
  187. package/cli/app/.next-cli-build/server/app/api/combos/[id]/route.js +1 -1
  188. package/cli/app/.next-cli-build/server/app/api/combos/[id]/route.js.nft.json +1 -1
  189. package/cli/app/.next-cli-build/server/app/api/combos/[id]/route_client-reference-manifest.js +1 -1
  190. package/cli/app/.next-cli-build/server/app/api/combos/route.js +1 -1
  191. package/cli/app/.next-cli-build/server/app/api/combos/route.js.nft.json +1 -1
  192. package/cli/app/.next-cli-build/server/app/api/combos/route_client-reference-manifest.js +1 -1
  193. package/cli/app/.next-cli-build/server/app/api/context/[id]/route.js +1 -1
  194. package/cli/app/.next-cli-build/server/app/api/context/[id]/route.js.nft.json +1 -1
  195. package/cli/app/.next-cli-build/server/app/api/context/[id]/route_client-reference-manifest.js +1 -1
  196. package/cli/app/.next-cli-build/server/app/api/context/bulk/route.js +1 -1
  197. package/cli/app/.next-cli-build/server/app/api/context/bulk/route.js.nft.json +1 -1
  198. package/cli/app/.next-cli-build/server/app/api/context/bulk/route_client-reference-manifest.js +1 -1
  199. package/cli/app/.next-cli-build/server/app/api/context/route.js +1 -1
  200. package/cli/app/.next-cli-build/server/app/api/context/route.js.nft.json +1 -1
  201. package/cli/app/.next-cli-build/server/app/api/context/route_client-reference-manifest.js +1 -1
  202. package/cli/app/.next-cli-build/server/app/api/dashboard/chat/completions/route.js +1 -1
  203. package/cli/app/.next-cli-build/server/app/api/dashboard/chat/completions/route.js.nft.json +1 -1
  204. package/cli/app/.next-cli-build/server/app/api/dashboard/chat/completions/route_client-reference-manifest.js +1 -1
  205. package/cli/app/.next-cli-build/server/app/api/dashboard/cli-tools/keys/route.js +1 -1
  206. package/cli/app/.next-cli-build/server/app/api/dashboard/cli-tools/keys/route.js.nft.json +1 -1
  207. package/cli/app/.next-cli-build/server/app/api/dashboard/cli-tools/keys/route_client-reference-manifest.js +1 -1
  208. package/cli/app/.next-cli-build/server/app/api/dashboard/media/[operation]/route.js +1 -1
  209. package/cli/app/.next-cli-build/server/app/api/dashboard/media/[operation]/route.js.nft.json +1 -1
  210. package/cli/app/.next-cli-build/server/app/api/dashboard/media/[operation]/route_client-reference-manifest.js +1 -1
  211. package/cli/app/.next-cli-build/server/app/api/headroom/extras/route.js +1 -1
  212. package/cli/app/.next-cli-build/server/app/api/headroom/extras/route.js.nft.json +1 -1
  213. package/cli/app/.next-cli-build/server/app/api/headroom/extras/route_client-reference-manifest.js +1 -1
  214. package/cli/app/.next-cli-build/server/app/api/headroom/proxy/[...path]/route.js +1 -1
  215. package/cli/app/.next-cli-build/server/app/api/headroom/proxy/[...path]/route.js.nft.json +1 -1
  216. package/cli/app/.next-cli-build/server/app/api/headroom/proxy/[...path]/route_client-reference-manifest.js +1 -1
  217. package/cli/app/.next-cli-build/server/app/api/headroom/restart/route.js +1 -1
  218. package/cli/app/.next-cli-build/server/app/api/headroom/restart/route.js.nft.json +1 -1
  219. package/cli/app/.next-cli-build/server/app/api/headroom/restart/route_client-reference-manifest.js +1 -1
  220. package/cli/app/.next-cli-build/server/app/api/headroom/start/route.js +1 -1
  221. package/cli/app/.next-cli-build/server/app/api/headroom/start/route.js.nft.json +1 -1
  222. package/cli/app/.next-cli-build/server/app/api/headroom/start/route_client-reference-manifest.js +1 -1
  223. package/cli/app/.next-cli-build/server/app/api/headroom/status/route.js +1 -1
  224. package/cli/app/.next-cli-build/server/app/api/headroom/status/route.js.nft.json +1 -1
  225. package/cli/app/.next-cli-build/server/app/api/headroom/status/route_client-reference-manifest.js +1 -1
  226. package/cli/app/.next-cli-build/server/app/api/headroom/stop/route.js +1 -1
  227. package/cli/app/.next-cli-build/server/app/api/headroom/stop/route.js.nft.json +1 -1
  228. package/cli/app/.next-cli-build/server/app/api/headroom/stop/route_client-reference-manifest.js +1 -1
  229. package/cli/app/.next-cli-build/server/app/api/health/ready/route.js +1 -1
  230. package/cli/app/.next-cli-build/server/app/api/health/ready/route.js.nft.json +1 -1
  231. package/cli/app/.next-cli-build/server/app/api/health/ready/route_client-reference-manifest.js +1 -1
  232. package/cli/app/.next-cli-build/server/app/api/health/route.js +1 -1
  233. package/cli/app/.next-cli-build/server/app/api/health/route.js.nft.json +1 -1
  234. package/cli/app/.next-cli-build/server/app/api/health/route_client-reference-manifest.js +1 -1
  235. package/cli/app/.next-cli-build/server/app/api/init/route.js +1 -1
  236. package/cli/app/.next-cli-build/server/app/api/init/route.js.nft.json +1 -1
  237. package/cli/app/.next-cli-build/server/app/api/init/route_client-reference-manifest.js +1 -1
  238. package/cli/app/.next-cli-build/server/app/api/keys/[id]/rotate/route.js +1 -1
  239. package/cli/app/.next-cli-build/server/app/api/keys/[id]/rotate/route.js.nft.json +1 -1
  240. package/cli/app/.next-cli-build/server/app/api/keys/[id]/rotate/route_client-reference-manifest.js +1 -1
  241. package/cli/app/.next-cli-build/server/app/api/keys/[id]/route.js +1 -1
  242. package/cli/app/.next-cli-build/server/app/api/keys/[id]/route.js.nft.json +1 -1
  243. package/cli/app/.next-cli-build/server/app/api/keys/[id]/route_client-reference-manifest.js +1 -1
  244. package/cli/app/.next-cli-build/server/app/api/keys/route.js +1 -1
  245. package/cli/app/.next-cli-build/server/app/api/keys/route.js.nft.json +1 -1
  246. package/cli/app/.next-cli-build/server/app/api/keys/route_client-reference-manifest.js +1 -1
  247. package/cli/app/.next-cli-build/server/app/api/locale/route.js +1 -1
  248. package/cli/app/.next-cli-build/server/app/api/locale/route.js.nft.json +1 -1
  249. package/cli/app/.next-cli-build/server/app/api/locale/route_client-reference-manifest.js +1 -1
  250. package/cli/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route.js +1 -1
  251. package/cli/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route.js.nft.json +1 -1
  252. package/cli/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route_client-reference-manifest.js +1 -1
  253. package/cli/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route.js +1 -1
  254. package/cli/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route.js.nft.json +1 -1
  255. package/cli/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route_client-reference-manifest.js +1 -1
  256. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js +1 -1
  257. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js.nft.json +1 -1
  258. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route_client-reference-manifest.js +1 -1
  259. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js +1 -1
  260. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js.nft.json +1 -1
  261. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route_client-reference-manifest.js +1 -1
  262. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js +1 -1
  263. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js.nft.json +1 -1
  264. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route_client-reference-manifest.js +1 -1
  265. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js +1 -1
  266. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js.nft.json +1 -1
  267. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route_client-reference-manifest.js +1 -1
  268. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/voices/route.js +1 -1
  269. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/voices/route.js.nft.json +1 -1
  270. package/cli/app/.next-cli-build/server/app/api/media-providers/tts/voices/route_client-reference-manifest.js +1 -1
  271. package/cli/app/.next-cli-build/server/app/api/metrics/route.js +1 -1
  272. package/cli/app/.next-cli-build/server/app/api/metrics/route.js.nft.json +1 -1
  273. package/cli/app/.next-cli-build/server/app/api/metrics/route_client-reference-manifest.js +1 -1
  274. package/cli/app/.next-cli-build/server/app/api/models/alias/route.js +1 -1
  275. package/cli/app/.next-cli-build/server/app/api/models/alias/route.js.nft.json +1 -1
  276. package/cli/app/.next-cli-build/server/app/api/models/alias/route_client-reference-manifest.js +1 -1
  277. package/cli/app/.next-cli-build/server/app/api/models/availability/route.js +1 -1
  278. package/cli/app/.next-cli-build/server/app/api/models/availability/route.js.nft.json +1 -1
  279. package/cli/app/.next-cli-build/server/app/api/models/availability/route_client-reference-manifest.js +1 -1
  280. package/cli/app/.next-cli-build/server/app/api/models/custom/route.js +1 -1
  281. package/cli/app/.next-cli-build/server/app/api/models/custom/route.js.nft.json +1 -1
  282. package/cli/app/.next-cli-build/server/app/api/models/custom/route_client-reference-manifest.js +1 -1
  283. package/cli/app/.next-cli-build/server/app/api/models/disabled/route.js +1 -1
  284. package/cli/app/.next-cli-build/server/app/api/models/disabled/route.js.nft.json +1 -1
  285. package/cli/app/.next-cli-build/server/app/api/models/disabled/route_client-reference-manifest.js +1 -1
  286. package/cli/app/.next-cli-build/server/app/api/models/route.js +1 -1
  287. package/cli/app/.next-cli-build/server/app/api/models/route.js.nft.json +1 -1
  288. package/cli/app/.next-cli-build/server/app/api/models/route_client-reference-manifest.js +1 -1
  289. package/cli/app/.next-cli-build/server/app/api/models/test/route.js +1 -1
  290. package/cli/app/.next-cli-build/server/app/api/models/test/route.js.nft.json +1 -1
  291. package/cli/app/.next-cli-build/server/app/api/models/test/route_client-reference-manifest.js +1 -1
  292. package/cli/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js +1 -1
  293. package/cli/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js.nft.json +1 -1
  294. package/cli/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route_client-reference-manifest.js +1 -1
  295. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/cancel/route.js +1 -1
  296. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
  297. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/cancel/route_client-reference-manifest.js +1 -1
  298. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/manual/[workerId]/route.js +1 -1
  299. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
  300. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/manual/[workerId]/route_client-reference-manifest.js +1 -1
  301. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/route.js +1 -1
  302. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/route.js.nft.json +1 -1
  303. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/[jobId]/route_client-reference-manifest.js +1 -1
  304. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/latest/route.js +1 -1
  305. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/latest/route.js.nft.json +1 -1
  306. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/latest/route_client-reference-manifest.js +1 -1
  307. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/route.js +1 -1
  308. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/route.js.nft.json +1 -1
  309. package/cli/app/.next-cli-build/server/app/api/oauth/antigravity/bulk-import/route_client-reference-manifest.js +1 -1
  310. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/cancel/route.js +1 -1
  311. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
  312. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/cancel/route_client-reference-manifest.js +1 -1
  313. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/manual/[workerId]/route.js +1 -1
  314. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
  315. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/manual/[workerId]/route_client-reference-manifest.js +1 -1
  316. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/route.js +1 -1
  317. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/route.js.nft.json +1 -1
  318. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/route_client-reference-manifest.js +1 -1
  319. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/latest/route.js +1 -1
  320. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/latest/route.js.nft.json +1 -1
  321. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/latest/route_client-reference-manifest.js +1 -1
  322. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/route.js +1 -1
  323. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/route.js.nft.json +1 -1
  324. package/cli/app/.next-cli-build/server/app/api/oauth/cloudflare-ai/bulk-import/route_client-reference-manifest.js +1 -1
  325. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/cancel/route.js +1 -1
  326. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
  327. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/cancel/route_client-reference-manifest.js +1 -1
  328. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/manual/[workerId]/route.js +1 -1
  329. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
  330. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/manual/[workerId]/route_client-reference-manifest.js +1 -1
  331. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/route.js +1 -1
  332. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/route.js.nft.json +1 -1
  333. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/[jobId]/route_client-reference-manifest.js +1 -1
  334. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/latest/route.js +1 -1
  335. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/latest/route.js.nft.json +1 -1
  336. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/latest/route_client-reference-manifest.js +1 -1
  337. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/route.js +1 -1
  338. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/route.js.nft.json +1 -1
  339. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-import/route_client-reference-manifest.js +1 -1
  340. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-token/route.js +1 -1
  341. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-token/route.js.nft.json +1 -1
  342. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/bulk-token/route_client-reference-manifest.js +1 -1
  343. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/quota-cookie/route.js +1 -1
  344. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/quota-cookie/route.js.nft.json +1 -1
  345. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy/quota-cookie/route_client-reference-manifest.js +1 -1
  346. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/cancel/route.js +1 -1
  347. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
  348. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/cancel/route_client-reference-manifest.js +1 -1
  349. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/manual/[workerId]/route.js +1 -1
  350. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
  351. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/manual/[workerId]/route_client-reference-manifest.js +1 -1
  352. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/route.js +1 -1
  353. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/route.js.nft.json +1 -1
  354. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/route_client-reference-manifest.js +1 -1
  355. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/latest/route.js +1 -1
  356. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/latest/route.js.nft.json +1 -1
  357. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/latest/route_client-reference-manifest.js +1 -1
  358. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/route.js +1 -1
  359. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/route.js.nft.json +1 -1
  360. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-import/route_client-reference-manifest.js +1 -1
  361. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-token/route.js +1 -1
  362. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-token/route.js.nft.json +1 -1
  363. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/bulk-token/route_client-reference-manifest.js +1 -1
  364. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/quota-cookie/route.js +1 -1
  365. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/quota-cookie/route.js.nft.json +1 -1
  366. package/cli/app/.next-cli-build/server/app/api/oauth/codebuddy-cn/quota-cookie/route_client-reference-manifest.js +1 -1
  367. package/cli/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js +1 -1
  368. package/cli/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js.nft.json +1 -1
  369. package/cli/app/.next-cli-build/server/app/api/oauth/codex/import-token/route_client-reference-manifest.js +1 -1
  370. package/cli/app/.next-cli-build/server/app/api/oauth/cursor/auto-import/route.js +1 -1
  371. package/cli/app/.next-cli-build/server/app/api/oauth/cursor/auto-import/route.js.nft.json +1 -1
  372. package/cli/app/.next-cli-build/server/app/api/oauth/cursor/auto-import/route_client-reference-manifest.js +1 -1
  373. package/cli/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js +1 -1
  374. package/cli/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js.nft.json +1 -1
  375. package/cli/app/.next-cli-build/server/app/api/oauth/cursor/import/route_client-reference-manifest.js +1 -1
  376. package/cli/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js +1 -1
  377. package/cli/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js.nft.json +1 -1
  378. package/cli/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route_client-reference-manifest.js +1 -1
  379. package/cli/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js +1 -1
  380. package/cli/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js.nft.json +1 -1
  381. package/cli/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route_client-reference-manifest.js +1 -1
  382. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/auto-import/route.js +1 -1
  383. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/auto-import/route.js.nft.json +1 -1
  384. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/auto-import/route_client-reference-manifest.js +1 -1
  385. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/cancel/route.js +1 -1
  386. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
  387. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/cancel/route_client-reference-manifest.js +1 -1
  388. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/manual/[workerId]/route.js +1 -1
  389. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
  390. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/manual/[workerId]/route_client-reference-manifest.js +1 -1
  391. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/route.js +1 -1
  392. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/route.js.nft.json +1 -1
  393. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/[jobId]/route_client-reference-manifest.js +1 -1
  394. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/latest/route.js +1 -1
  395. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/latest/route.js.nft.json +1 -1
  396. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/latest/route_client-reference-manifest.js +1 -1
  397. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/route.js +1 -1
  398. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/route.js.nft.json +1 -1
  399. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/bulk-import/route_client-reference-manifest.js +1 -1
  400. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js +1 -1
  401. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js.nft.json +1 -1
  402. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/import/route_client-reference-manifest.js +1 -1
  403. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/social-authorize/route.js +1 -1
  404. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/social-authorize/route.js.nft.json +1 -1
  405. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/social-authorize/route_client-reference-manifest.js +1 -1
  406. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js +1 -1
  407. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js.nft.json +1 -1
  408. package/cli/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route_client-reference-manifest.js +1 -1
  409. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/cancel/route.js +1 -1
  410. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/cancel/route.js.nft.json +1 -1
  411. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/cancel/route_client-reference-manifest.js +1 -1
  412. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/manual/[workerId]/route.js +1 -1
  413. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/manual/[workerId]/route.js.nft.json +1 -1
  414. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/manual/[workerId]/route_client-reference-manifest.js +1 -1
  415. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/route.js +1 -1
  416. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/route.js.nft.json +1 -1
  417. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/[jobId]/route_client-reference-manifest.js +1 -1
  418. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/latest/route.js +1 -1
  419. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/latest/route.js.nft.json +1 -1
  420. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/latest/route_client-reference-manifest.js +1 -1
  421. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/route.js +1 -1
  422. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/route.js.nft.json +1 -1
  423. package/cli/app/.next-cli-build/server/app/api/oauth/qoder/bulk-import/route_client-reference-manifest.js +1 -1
  424. package/cli/app/.next-cli-build/server/app/api/pricing/route.js +1 -1
  425. package/cli/app/.next-cli-build/server/app/api/pricing/route.js.nft.json +1 -1
  426. package/cli/app/.next-cli-build/server/app/api/pricing/route_client-reference-manifest.js +1 -1
  427. package/cli/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js +1 -1
  428. package/cli/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js.nft.json +1 -1
  429. package/cli/app/.next-cli-build/server/app/api/provider-nodes/[id]/route_client-reference-manifest.js +1 -1
  430. package/cli/app/.next-cli-build/server/app/api/provider-nodes/route.js +1 -1
  431. package/cli/app/.next-cli-build/server/app/api/provider-nodes/route.js.nft.json +1 -1
  432. package/cli/app/.next-cli-build/server/app/api/provider-nodes/route_client-reference-manifest.js +1 -1
  433. package/cli/app/.next-cli-build/server/app/api/provider-nodes/validate/route.js +1 -1
  434. package/cli/app/.next-cli-build/server/app/api/provider-nodes/validate/route.js.nft.json +1 -1
  435. package/cli/app/.next-cli-build/server/app/api/provider-nodes/validate/route_client-reference-manifest.js +1 -1
  436. package/cli/app/.next-cli-build/server/app/api/providers/[id]/models/route.js +1 -1
  437. package/cli/app/.next-cli-build/server/app/api/providers/[id]/models/route.js.nft.json +1 -1
  438. package/cli/app/.next-cli-build/server/app/api/providers/[id]/models/route_client-reference-manifest.js +1 -1
  439. package/cli/app/.next-cli-build/server/app/api/providers/[id]/route.js +1 -1
  440. package/cli/app/.next-cli-build/server/app/api/providers/[id]/route.js.nft.json +1 -1
  441. package/cli/app/.next-cli-build/server/app/api/providers/[id]/route_client-reference-manifest.js +1 -1
  442. package/cli/app/.next-cli-build/server/app/api/providers/[id]/test/route.js +1 -1
  443. package/cli/app/.next-cli-build/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
  444. package/cli/app/.next-cli-build/server/app/api/providers/[id]/test/route_client-reference-manifest.js +1 -1
  445. package/cli/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js +1 -1
  446. package/cli/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js.nft.json +1 -1
  447. package/cli/app/.next-cli-build/server/app/api/providers/[id]/test-models/route_client-reference-manifest.js +1 -1
  448. package/cli/app/.next-cli-build/server/app/api/providers/bulk-delete/route.js +1 -1
  449. package/cli/app/.next-cli-build/server/app/api/providers/bulk-delete/route.js.nft.json +1 -1
  450. package/cli/app/.next-cli-build/server/app/api/providers/bulk-delete/route_client-reference-manifest.js +1 -1
  451. package/cli/app/.next-cli-build/server/app/api/providers/client/route.js +1 -1
  452. package/cli/app/.next-cli-build/server/app/api/providers/client/route.js.nft.json +1 -1
  453. package/cli/app/.next-cli-build/server/app/api/providers/client/route_client-reference-manifest.js +1 -1
  454. package/cli/app/.next-cli-build/server/app/api/providers/kilo/free-models/route.js +1 -1
  455. package/cli/app/.next-cli-build/server/app/api/providers/kilo/free-models/route.js.nft.json +1 -1
  456. package/cli/app/.next-cli-build/server/app/api/providers/kilo/free-models/route_client-reference-manifest.js +1 -1
  457. package/cli/app/.next-cli-build/server/app/api/providers/route.js +1 -1
  458. package/cli/app/.next-cli-build/server/app/api/providers/route.js.nft.json +1 -1
  459. package/cli/app/.next-cli-build/server/app/api/providers/route_client-reference-manifest.js +1 -1
  460. package/cli/app/.next-cli-build/server/app/api/providers/suggested-models/route.js +1 -1
  461. package/cli/app/.next-cli-build/server/app/api/providers/suggested-models/route.js.nft.json +1 -1
  462. package/cli/app/.next-cli-build/server/app/api/providers/suggested-models/route_client-reference-manifest.js +1 -1
  463. package/cli/app/.next-cli-build/server/app/api/providers/test-batch/route.js +1 -1
  464. package/cli/app/.next-cli-build/server/app/api/providers/test-batch/route.js.nft.json +1 -1
  465. package/cli/app/.next-cli-build/server/app/api/providers/test-batch/route_client-reference-manifest.js +1 -1
  466. package/cli/app/.next-cli-build/server/app/api/providers/validate/route.js +1 -1
  467. package/cli/app/.next-cli-build/server/app/api/providers/validate/route.js.nft.json +1 -1
  468. package/cli/app/.next-cli-build/server/app/api/providers/validate/route_client-reference-manifest.js +1 -1
  469. package/cli/app/.next-cli-build/server/app/api/proxy-pools/[id]/route.js +1 -1
  470. package/cli/app/.next-cli-build/server/app/api/proxy-pools/[id]/route.js.nft.json +1 -1
  471. package/cli/app/.next-cli-build/server/app/api/proxy-pools/[id]/route_client-reference-manifest.js +1 -1
  472. package/cli/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js +1 -1
  473. package/cli/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js.nft.json +1 -1
  474. package/cli/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route_client-reference-manifest.js +1 -1
  475. package/cli/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route.js +1 -1
  476. package/cli/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route.js.nft.json +1 -1
  477. package/cli/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route_client-reference-manifest.js +1 -1
  478. package/cli/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route.js +1 -1
  479. package/cli/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route.js.nft.json +1 -1
  480. package/cli/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route_client-reference-manifest.js +1 -1
  481. package/cli/app/.next-cli-build/server/app/api/proxy-pools/route.js +1 -1
  482. package/cli/app/.next-cli-build/server/app/api/proxy-pools/route.js.nft.json +1 -1
  483. package/cli/app/.next-cli-build/server/app/api/proxy-pools/route_client-reference-manifest.js +1 -1
  484. package/cli/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js +1 -1
  485. package/cli/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js.nft.json +1 -1
  486. package/cli/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route_client-reference-manifest.js +1 -1
  487. package/cli/app/.next-cli-build/server/app/api/pxpipe/health/route.js +1 -1
  488. package/cli/app/.next-cli-build/server/app/api/pxpipe/health/route.js.nft.json +1 -1
  489. package/cli/app/.next-cli-build/server/app/api/pxpipe/health/route_client-reference-manifest.js +1 -1
  490. package/cli/app/.next-cli-build/server/app/api/pxpipe/install/route.js +1 -1
  491. package/cli/app/.next-cli-build/server/app/api/pxpipe/install/route.js.nft.json +1 -1
  492. package/cli/app/.next-cli-build/server/app/api/pxpipe/install/route_client-reference-manifest.js +1 -1
  493. package/cli/app/.next-cli-build/server/app/api/pxpipe/restart/route.js +1 -1
  494. package/cli/app/.next-cli-build/server/app/api/pxpipe/restart/route.js.nft.json +1 -1
  495. package/cli/app/.next-cli-build/server/app/api/pxpipe/restart/route_client-reference-manifest.js +1 -1
  496. package/cli/app/.next-cli-build/server/app/api/pxpipe/start/route.js +1 -1
  497. package/cli/app/.next-cli-build/server/app/api/pxpipe/start/route.js.nft.json +1 -1
  498. package/cli/app/.next-cli-build/server/app/api/pxpipe/start/route_client-reference-manifest.js +1 -1
  499. package/cli/app/.next-cli-build/server/app/api/pxpipe/stats/route.js +1 -1
  500. package/cli/app/.next-cli-build/server/app/api/pxpipe/stats/route.js.nft.json +1 -1
  501. package/cli/app/.next-cli-build/server/app/api/pxpipe/stats/route_client-reference-manifest.js +1 -1
  502. package/cli/app/.next-cli-build/server/app/api/pxpipe/status/route.js +1 -1
  503. package/cli/app/.next-cli-build/server/app/api/pxpipe/status/route.js.nft.json +1 -1
  504. package/cli/app/.next-cli-build/server/app/api/pxpipe/status/route_client-reference-manifest.js +1 -1
  505. package/cli/app/.next-cli-build/server/app/api/pxpipe/stop/route.js +1 -1
  506. package/cli/app/.next-cli-build/server/app/api/pxpipe/stop/route.js.nft.json +1 -1
  507. package/cli/app/.next-cli-build/server/app/api/pxpipe/stop/route_client-reference-manifest.js +1 -1
  508. package/cli/app/.next-cli-build/server/app/api/settings/database/route.js +1 -1
  509. package/cli/app/.next-cli-build/server/app/api/settings/database/route.js.nft.json +1 -1
  510. package/cli/app/.next-cli-build/server/app/api/settings/database/route_client-reference-manifest.js +1 -1
  511. package/cli/app/.next-cli-build/server/app/api/settings/proxy-test/route.js +1 -1
  512. package/cli/app/.next-cli-build/server/app/api/settings/proxy-test/route.js.nft.json +1 -1
  513. package/cli/app/.next-cli-build/server/app/api/settings/proxy-test/route_client-reference-manifest.js +1 -1
  514. package/cli/app/.next-cli-build/server/app/api/settings/require-login/route.js +1 -1
  515. package/cli/app/.next-cli-build/server/app/api/settings/require-login/route.js.nft.json +1 -1
  516. package/cli/app/.next-cli-build/server/app/api/settings/require-login/route_client-reference-manifest.js +1 -1
  517. package/cli/app/.next-cli-build/server/app/api/settings/route.js +1 -1
  518. package/cli/app/.next-cli-build/server/app/api/settings/route.js.nft.json +1 -1
  519. package/cli/app/.next-cli-build/server/app/api/settings/route_client-reference-manifest.js +1 -1
  520. package/cli/app/.next-cli-build/server/app/api/shutdown/route.js +1 -1
  521. package/cli/app/.next-cli-build/server/app/api/shutdown/route.js.nft.json +1 -1
  522. package/cli/app/.next-cli-build/server/app/api/shutdown/route_client-reference-manifest.js +1 -1
  523. package/cli/app/.next-cli-build/server/app/api/tags/route.js +1 -1
  524. package/cli/app/.next-cli-build/server/app/api/tags/route.js.nft.json +1 -1
  525. package/cli/app/.next-cli-build/server/app/api/tags/route_client-reference-manifest.js +1 -1
  526. package/cli/app/.next-cli-build/server/app/api/terminal/auth/setup/route.js +1 -1
  527. package/cli/app/.next-cli-build/server/app/api/terminal/auth/setup/route.js.nft.json +1 -1
  528. package/cli/app/.next-cli-build/server/app/api/terminal/auth/setup/route_client-reference-manifest.js +1 -1
  529. package/cli/app/.next-cli-build/server/app/api/terminal/auth/status/route.js +1 -1
  530. package/cli/app/.next-cli-build/server/app/api/terminal/auth/status/route.js.nft.json +1 -1
  531. package/cli/app/.next-cli-build/server/app/api/terminal/auth/status/route_client-reference-manifest.js +1 -1
  532. package/cli/app/.next-cli-build/server/app/api/terminal/auth/unlock/route.js +1 -1
  533. package/cli/app/.next-cli-build/server/app/api/terminal/auth/unlock/route.js.nft.json +1 -1
  534. package/cli/app/.next-cli-build/server/app/api/terminal/auth/unlock/route_client-reference-manifest.js +1 -1
  535. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/input/route.js +1 -1
  536. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/input/route.js.nft.json +1 -1
  537. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/input/route_client-reference-manifest.js +1 -1
  538. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/resize/route.js +1 -1
  539. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/resize/route.js.nft.json +1 -1
  540. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/resize/route_client-reference-manifest.js +1 -1
  541. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/route.js +1 -1
  542. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/route.js.nft.json +1 -1
  543. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/route_client-reference-manifest.js +1 -1
  544. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/stream/route.js +1 -1
  545. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/stream/route.js.nft.json +1 -1
  546. package/cli/app/.next-cli-build/server/app/api/terminal/session/[id]/stream/route_client-reference-manifest.js +1 -1
  547. package/cli/app/.next-cli-build/server/app/api/terminal/session/route.js +1 -1
  548. package/cli/app/.next-cli-build/server/app/api/terminal/session/route.js.nft.json +1 -1
  549. package/cli/app/.next-cli-build/server/app/api/terminal/session/route_client-reference-manifest.js +1 -1
  550. package/cli/app/.next-cli-build/server/app/api/translator/console-logs/route.js +1 -1
  551. package/cli/app/.next-cli-build/server/app/api/translator/console-logs/route.js.nft.json +1 -1
  552. package/cli/app/.next-cli-build/server/app/api/translator/console-logs/route_client-reference-manifest.js +1 -1
  553. package/cli/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js +2 -2
  554. package/cli/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js.nft.json +1 -1
  555. package/cli/app/.next-cli-build/server/app/api/translator/console-logs/stream/route_client-reference-manifest.js +1 -1
  556. package/cli/app/.next-cli-build/server/app/api/translator/load/route.js +1 -1
  557. package/cli/app/.next-cli-build/server/app/api/translator/load/route.js.nft.json +1 -1
  558. package/cli/app/.next-cli-build/server/app/api/translator/load/route_client-reference-manifest.js +1 -1
  559. package/cli/app/.next-cli-build/server/app/api/translator/save/route.js +1 -1
  560. package/cli/app/.next-cli-build/server/app/api/translator/save/route.js.nft.json +1 -1
  561. package/cli/app/.next-cli-build/server/app/api/translator/save/route_client-reference-manifest.js +1 -1
  562. package/cli/app/.next-cli-build/server/app/api/translator/send/route.js +1 -1
  563. package/cli/app/.next-cli-build/server/app/api/translator/send/route.js.nft.json +1 -1
  564. package/cli/app/.next-cli-build/server/app/api/translator/send/route_client-reference-manifest.js +1 -1
  565. package/cli/app/.next-cli-build/server/app/api/translator/translate/route.js +1 -1
  566. package/cli/app/.next-cli-build/server/app/api/translator/translate/route.js.nft.json +1 -1
  567. package/cli/app/.next-cli-build/server/app/api/translator/translate/route_client-reference-manifest.js +1 -1
  568. package/cli/app/.next-cli-build/server/app/api/tunnel/disable/route.js +1 -1
  569. package/cli/app/.next-cli-build/server/app/api/tunnel/disable/route.js.nft.json +1 -1
  570. package/cli/app/.next-cli-build/server/app/api/tunnel/disable/route_client-reference-manifest.js +1 -1
  571. package/cli/app/.next-cli-build/server/app/api/tunnel/enable/route.js +1 -1
  572. package/cli/app/.next-cli-build/server/app/api/tunnel/enable/route.js.nft.json +1 -1
  573. package/cli/app/.next-cli-build/server/app/api/tunnel/enable/route_client-reference-manifest.js +1 -1
  574. package/cli/app/.next-cli-build/server/app/api/tunnel/status/route.js +1 -1
  575. package/cli/app/.next-cli-build/server/app/api/tunnel/status/route.js.nft.json +1 -1
  576. package/cli/app/.next-cli-build/server/app/api/tunnel/status/route_client-reference-manifest.js +1 -1
  577. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-check/route.js +1 -1
  578. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-check/route.js.nft.json +1 -1
  579. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-check/route_client-reference-manifest.js +1 -1
  580. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route.js +1 -1
  581. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route.js.nft.json +1 -1
  582. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route_client-reference-manifest.js +1 -1
  583. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route.js +1 -1
  584. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route.js.nft.json +1 -1
  585. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route_client-reference-manifest.js +1 -1
  586. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js +1 -1
  587. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js.nft.json +1 -1
  588. package/cli/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route_client-reference-manifest.js +1 -1
  589. package/cli/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js +1 -1
  590. package/cli/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
  591. package/cli/app/.next-cli-build/server/app/api/usage/[connectionId]/route_client-reference-manifest.js +1 -1
  592. package/cli/app/.next-cli-build/server/app/api/usage/aggregate/route.js +1 -1
  593. package/cli/app/.next-cli-build/server/app/api/usage/aggregate/route.js.nft.json +1 -1
  594. package/cli/app/.next-cli-build/server/app/api/usage/aggregate/route_client-reference-manifest.js +1 -1
  595. package/cli/app/.next-cli-build/server/app/api/usage/chart/route.js +1 -1
  596. package/cli/app/.next-cli-build/server/app/api/usage/chart/route.js.nft.json +1 -1
  597. package/cli/app/.next-cli-build/server/app/api/usage/chart/route_client-reference-manifest.js +1 -1
  598. package/cli/app/.next-cli-build/server/app/api/usage/history/route.js +1 -1
  599. package/cli/app/.next-cli-build/server/app/api/usage/history/route.js.nft.json +1 -1
  600. package/cli/app/.next-cli-build/server/app/api/usage/history/route_client-reference-manifest.js +1 -1
  601. package/cli/app/.next-cli-build/server/app/api/usage/providers/route.js +1 -1
  602. package/cli/app/.next-cli-build/server/app/api/usage/providers/route.js.nft.json +1 -1
  603. package/cli/app/.next-cli-build/server/app/api/usage/providers/route_client-reference-manifest.js +1 -1
  604. package/cli/app/.next-cli-build/server/app/api/usage/request-details/route.js +1 -1
  605. package/cli/app/.next-cli-build/server/app/api/usage/request-details/route.js.nft.json +1 -1
  606. package/cli/app/.next-cli-build/server/app/api/usage/request-details/route_client-reference-manifest.js +1 -1
  607. package/cli/app/.next-cli-build/server/app/api/usage/request-logs/route.js +1 -1
  608. package/cli/app/.next-cli-build/server/app/api/usage/request-logs/route.js.nft.json +1 -1
  609. package/cli/app/.next-cli-build/server/app/api/usage/request-logs/route_client-reference-manifest.js +1 -1
  610. package/cli/app/.next-cli-build/server/app/api/usage/stats/route.js +1 -1
  611. package/cli/app/.next-cli-build/server/app/api/usage/stats/route.js.nft.json +1 -1
  612. package/cli/app/.next-cli-build/server/app/api/usage/stats/route_client-reference-manifest.js +1 -1
  613. package/cli/app/.next-cli-build/server/app/api/usage/stream/route.js +1 -1
  614. package/cli/app/.next-cli-build/server/app/api/usage/stream/route.js.nft.json +1 -1
  615. package/cli/app/.next-cli-build/server/app/api/usage/stream/route_client-reference-manifest.js +1 -1
  616. package/cli/app/.next-cli-build/server/app/api/v1/api/chat/route.js +1 -1
  617. package/cli/app/.next-cli-build/server/app/api/v1/api/chat/route.js.nft.json +1 -1
  618. package/cli/app/.next-cli-build/server/app/api/v1/api/chat/route_client-reference-manifest.js +1 -1
  619. package/cli/app/.next-cli-build/server/app/api/v1/audio/speech/route.js +1 -1
  620. package/cli/app/.next-cli-build/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
  621. package/cli/app/.next-cli-build/server/app/api/v1/audio/speech/route_client-reference-manifest.js +1 -1
  622. package/cli/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js +1 -1
  623. package/cli/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
  624. package/cli/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route_client-reference-manifest.js +1 -1
  625. package/cli/app/.next-cli-build/server/app/api/v1/audio/voices/route.js +1 -1
  626. package/cli/app/.next-cli-build/server/app/api/v1/audio/voices/route.js.nft.json +1 -1
  627. package/cli/app/.next-cli-build/server/app/api/v1/audio/voices/route_client-reference-manifest.js +1 -1
  628. package/cli/app/.next-cli-build/server/app/api/v1/chat/completions/route.js +1 -1
  629. package/cli/app/.next-cli-build/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
  630. package/cli/app/.next-cli-build/server/app/api/v1/chat/completions/route_client-reference-manifest.js +1 -1
  631. package/cli/app/.next-cli-build/server/app/api/v1/embeddings/route.js +1 -1
  632. package/cli/app/.next-cli-build/server/app/api/v1/embeddings/route.js.nft.json +1 -1
  633. package/cli/app/.next-cli-build/server/app/api/v1/embeddings/route_client-reference-manifest.js +1 -1
  634. package/cli/app/.next-cli-build/server/app/api/v1/images/generations/route.js +1 -1
  635. package/cli/app/.next-cli-build/server/app/api/v1/images/generations/route.js.nft.json +1 -1
  636. package/cli/app/.next-cli-build/server/app/api/v1/images/generations/route_client-reference-manifest.js +1 -1
  637. package/cli/app/.next-cli-build/server/app/api/v1/messages/count_tokens/route.js +1 -1
  638. package/cli/app/.next-cli-build/server/app/api/v1/messages/count_tokens/route.js.nft.json +1 -1
  639. package/cli/app/.next-cli-build/server/app/api/v1/messages/count_tokens/route_client-reference-manifest.js +1 -1
  640. package/cli/app/.next-cli-build/server/app/api/v1/messages/route.js +1 -1
  641. package/cli/app/.next-cli-build/server/app/api/v1/messages/route.js.nft.json +1 -1
  642. package/cli/app/.next-cli-build/server/app/api/v1/messages/route_client-reference-manifest.js +1 -1
  643. package/cli/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js +1 -1
  644. package/cli/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js.nft.json +1 -1
  645. package/cli/app/.next-cli-build/server/app/api/v1/models/[kind]/route_client-reference-manifest.js +1 -1
  646. package/cli/app/.next-cli-build/server/app/api/v1/models/info/route.js +1 -1
  647. package/cli/app/.next-cli-build/server/app/api/v1/models/info/route.js.nft.json +1 -1
  648. package/cli/app/.next-cli-build/server/app/api/v1/models/info/route_client-reference-manifest.js +1 -1
  649. package/cli/app/.next-cli-build/server/app/api/v1/models/route.js +1 -1
  650. package/cli/app/.next-cli-build/server/app/api/v1/models/route.js.nft.json +1 -1
  651. package/cli/app/.next-cli-build/server/app/api/v1/models/route_client-reference-manifest.js +1 -1
  652. package/cli/app/.next-cli-build/server/app/api/v1/responses/compact/route.js +1 -1
  653. package/cli/app/.next-cli-build/server/app/api/v1/responses/compact/route.js.nft.json +1 -1
  654. package/cli/app/.next-cli-build/server/app/api/v1/responses/compact/route_client-reference-manifest.js +1 -1
  655. package/cli/app/.next-cli-build/server/app/api/v1/responses/route.js +1 -1
  656. package/cli/app/.next-cli-build/server/app/api/v1/responses/route.js.nft.json +1 -1
  657. package/cli/app/.next-cli-build/server/app/api/v1/responses/route_client-reference-manifest.js +1 -1
  658. package/cli/app/.next-cli-build/server/app/api/v1/route.js +1 -1
  659. package/cli/app/.next-cli-build/server/app/api/v1/route.js.nft.json +1 -1
  660. package/cli/app/.next-cli-build/server/app/api/v1/route_client-reference-manifest.js +1 -1
  661. package/cli/app/.next-cli-build/server/app/api/v1/search/route.js +1 -1
  662. package/cli/app/.next-cli-build/server/app/api/v1/search/route.js.nft.json +1 -1
  663. package/cli/app/.next-cli-build/server/app/api/v1/search/route_client-reference-manifest.js +1 -1
  664. package/cli/app/.next-cli-build/server/app/api/v1/web/fetch/route.js +1 -1
  665. package/cli/app/.next-cli-build/server/app/api/v1/web/fetch/route.js.nft.json +1 -1
  666. package/cli/app/.next-cli-build/server/app/api/v1/web/fetch/route_client-reference-manifest.js +1 -1
  667. package/cli/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js +1 -1
  668. package/cli/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
  669. package/cli/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route_client-reference-manifest.js +1 -1
  670. package/cli/app/.next-cli-build/server/app/api/v1beta/models/route.js +1 -1
  671. package/cli/app/.next-cli-build/server/app/api/v1beta/models/route.js.nft.json +1 -1
  672. package/cli/app/.next-cli-build/server/app/api/v1beta/models/route_client-reference-manifest.js +1 -1
  673. package/cli/app/.next-cli-build/server/app/api/version/route.js +1 -1
  674. package/cli/app/.next-cli-build/server/app/api/version/route.js.nft.json +1 -1
  675. package/cli/app/.next-cli-build/server/app/api/version/route_client-reference-manifest.js +1 -1
  676. package/cli/app/.next-cli-build/server/app/api/version/shutdown/route.js +1 -1
  677. package/cli/app/.next-cli-build/server/app/api/version/shutdown/route.js.nft.json +1 -1
  678. package/cli/app/.next-cli-build/server/app/api/version/shutdown/route_client-reference-manifest.js +1 -1
  679. package/cli/app/.next-cli-build/server/app/api/version/update/route.js +1 -1
  680. package/cli/app/.next-cli-build/server/app/api/version/update/route.js.nft.json +1 -1
  681. package/cli/app/.next-cli-build/server/app/api/version/update/route_client-reference-manifest.js +1 -1
  682. package/cli/app/.next-cli-build/server/app/callback/page.js +1 -1
  683. package/cli/app/.next-cli-build/server/app/callback/page.js.nft.json +1 -1
  684. package/cli/app/.next-cli-build/server/app/callback/page_client-reference-manifest.js +1 -1
  685. package/cli/app/.next-cli-build/server/app/callback.html +1 -1
  686. package/cli/app/.next-cli-build/server/app/callback.rsc +3 -3
  687. package/cli/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +3 -3
  688. package/cli/app/.next-cli-build/server/app/callback.segments/_head.segment.rsc +1 -1
  689. package/cli/app/.next-cli-build/server/app/callback.segments/_index.segment.rsc +3 -3
  690. package/cli/app/.next-cli-build/server/app/callback.segments/_tree.segment.rsc +1 -1
  691. package/cli/app/.next-cli-build/server/app/callback.segments/callback/__PAGE__.segment.rsc +1 -1
  692. package/cli/app/.next-cli-build/server/app/callback.segments/callback.segment.rsc +1 -1
  693. package/cli/app/.next-cli-build/server/app/dashboard/automation.html +1 -1
  694. package/cli/app/.next-cli-build/server/app/dashboard/automation.rsc +5 -5
  695. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk/dashboard/automation/__PAGE__.segment.rsc +2 -2
  696. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk/dashboard/automation.segment.rsc +1 -1
  697. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  698. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  699. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_full.segment.rsc +5 -5
  700. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_head.segment.rsc +1 -1
  701. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_index.segment.rsc +3 -3
  702. package/cli/app/.next-cli-build/server/app/dashboard/automation.segments/_tree.segment.rsc +1 -1
  703. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.html +1 -1
  704. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.rsc +5 -5
  705. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +2 -2
  706. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat.segment.rsc +1 -1
  707. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  708. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  709. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_full.segment.rsc +5 -5
  710. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_head.segment.rsc +1 -1
  711. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_index.segment.rsc +3 -3
  712. package/cli/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +1 -1
  713. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.html +1 -1
  714. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.rsc +5 -5
  715. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +2 -2
  716. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools.segment.rsc +1 -1
  717. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  718. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  719. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_full.segment.rsc +5 -5
  720. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_head.segment.rsc +1 -1
  721. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_index.segment.rsc +3 -3
  722. package/cli/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +1 -1
  723. package/cli/app/.next-cli-build/server/app/dashboard/combos.html +1 -1
  724. package/cli/app/.next-cli-build/server/app/dashboard/combos.rsc +5 -5
  725. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +2 -2
  726. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos.segment.rsc +1 -1
  727. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  728. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  729. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_full.segment.rsc +5 -5
  730. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_head.segment.rsc +1 -1
  731. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_index.segment.rsc +3 -3
  732. package/cli/app/.next-cli-build/server/app/dashboard/combos.segments/_tree.segment.rsc +1 -1
  733. package/cli/app/.next-cli-build/server/app/dashboard/context.html +1 -1
  734. package/cli/app/.next-cli-build/server/app/dashboard/context.rsc +5 -5
  735. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/!KGRhc2hib2FyZCk/dashboard/context/__PAGE__.segment.rsc +2 -2
  736. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/!KGRhc2hib2FyZCk/dashboard/context.segment.rsc +1 -1
  737. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  738. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  739. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_full.segment.rsc +5 -5
  740. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_head.segment.rsc +1 -1
  741. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_index.segment.rsc +3 -3
  742. package/cli/app/.next-cli-build/server/app/dashboard/context.segments/_tree.segment.rsc +1 -1
  743. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.html +1 -1
  744. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.rsc +5 -5
  745. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +2 -2
  746. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint.segment.rsc +1 -1
  747. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  748. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  749. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_full.segment.rsc +5 -5
  750. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_head.segment.rsc +1 -1
  751. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_index.segment.rsc +3 -3
  752. package/cli/app/.next-cli-build/server/app/dashboard/endpoint.segments/_tree.segment.rsc +1 -1
  753. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.html +1 -1
  754. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.rsc +5 -5
  755. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web/__PAGE__.segment.rsc +2 -2
  756. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web.segment.rsc +1 -1
  757. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers.segment.rsc +1 -1
  758. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  759. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  760. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_full.segment.rsc +5 -5
  761. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_head.segment.rsc +1 -1
  762. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_index.segment.rsc +3 -3
  763. package/cli/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_tree.segment.rsc +1 -1
  764. package/cli/app/.next-cli-build/server/app/dashboard/mitm.html +1 -1
  765. package/cli/app/.next-cli-build/server/app/dashboard/mitm.rsc +5 -5
  766. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +2 -2
  767. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm.segment.rsc +1 -1
  768. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  769. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  770. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_full.segment.rsc +5 -5
  771. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_head.segment.rsc +1 -1
  772. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_index.segment.rsc +3 -3
  773. package/cli/app/.next-cli-build/server/app/dashboard/mitm.segments/_tree.segment.rsc +1 -1
  774. package/cli/app/.next-cli-build/server/app/dashboard/playground.html +1 -1
  775. package/cli/app/.next-cli-build/server/app/dashboard/playground.rsc +5 -5
  776. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk/dashboard/playground/__PAGE__.segment.rsc +2 -2
  777. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk/dashboard/playground.segment.rsc +1 -1
  778. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  779. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  780. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_full.segment.rsc +5 -5
  781. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_head.segment.rsc +1 -1
  782. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_index.segment.rsc +3 -3
  783. package/cli/app/.next-cli-build/server/app/dashboard/playground.segments/_tree.segment.rsc +1 -1
  784. package/cli/app/.next-cli-build/server/app/dashboard/profile.html +1 -1
  785. package/cli/app/.next-cli-build/server/app/dashboard/profile.rsc +5 -5
  786. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +2 -2
  787. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile.segment.rsc +1 -1
  788. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  789. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  790. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_full.segment.rsc +5 -5
  791. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_head.segment.rsc +1 -1
  792. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_index.segment.rsc +3 -3
  793. package/cli/app/.next-cli-build/server/app/dashboard/profile.segments/_tree.segment.rsc +1 -1
  794. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.html +1 -1
  795. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.rsc +5 -5
  796. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +2 -2
  797. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new.segment.rsc +1 -1
  798. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  799. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  800. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  801. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_full.segment.rsc +5 -5
  802. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_head.segment.rsc +1 -1
  803. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_index.segment.rsc +3 -3
  804. package/cli/app/.next-cli-build/server/app/dashboard/providers/new.segments/_tree.segment.rsc +1 -1
  805. package/cli/app/.next-cli-build/server/app/dashboard/providers.html +1 -1
  806. package/cli/app/.next-cli-build/server/app/dashboard/providers.rsc +5 -5
  807. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +2 -2
  808. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  809. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  810. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  811. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_full.segment.rsc +5 -5
  812. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_head.segment.rsc +1 -1
  813. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_index.segment.rsc +3 -3
  814. package/cli/app/.next-cli-build/server/app/dashboard/providers.segments/_tree.segment.rsc +1 -1
  815. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.html +1 -1
  816. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.rsc +5 -5
  817. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +2 -2
  818. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools.segment.rsc +1 -1
  819. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  820. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  821. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +5 -5
  822. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_head.segment.rsc +1 -1
  823. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_index.segment.rsc +3 -3
  824. package/cli/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +1 -1
  825. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.html +1 -1
  826. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.rsc +5 -5
  827. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard/pxpipe/__PAGE__.segment.rsc +2 -2
  828. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard/pxpipe.segment.rsc +1 -1
  829. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  830. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  831. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_full.segment.rsc +5 -5
  832. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_head.segment.rsc +1 -1
  833. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_index.segment.rsc +3 -3
  834. package/cli/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_tree.segment.rsc +1 -1
  835. package/cli/app/.next-cli-build/server/app/dashboard/quota.html +2 -2
  836. package/cli/app/.next-cli-build/server/app/dashboard/quota.rsc +6 -6
  837. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +3 -3
  838. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota.segment.rsc +1 -1
  839. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  840. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  841. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_full.segment.rsc +6 -6
  842. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_head.segment.rsc +1 -1
  843. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_index.segment.rsc +3 -3
  844. package/cli/app/.next-cli-build/server/app/dashboard/quota.segments/_tree.segment.rsc +1 -1
  845. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing/page.js +2 -2
  846. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing/page.js.nft.json +1 -1
  847. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  848. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.html +1 -1
  849. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.rsc +3 -3
  850. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +3 -3
  851. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +1 -1
  852. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +3 -3
  853. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +1 -1
  854. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +1 -1
  855. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing.segment.rsc +1 -1
  856. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings.segment.rsc +1 -1
  857. package/cli/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard.segment.rsc +1 -1
  858. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.html +1 -1
  859. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.rsc +5 -5
  860. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver/__PAGE__.segment.rsc +2 -2
  861. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver.segment.rsc +1 -1
  862. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  863. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  864. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_full.segment.rsc +5 -5
  865. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_head.segment.rsc +1 -1
  866. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_index.segment.rsc +3 -3
  867. package/cli/app/.next-cli-build/server/app/dashboard/token-saver.segments/_tree.segment.rsc +1 -1
  868. package/cli/app/.next-cli-build/server/app/dashboard/translator.html +1 -1
  869. package/cli/app/.next-cli-build/server/app/dashboard/translator.rsc +5 -5
  870. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +2 -2
  871. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator.segment.rsc +1 -1
  872. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  873. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  874. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_full.segment.rsc +5 -5
  875. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_head.segment.rsc +1 -1
  876. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_index.segment.rsc +3 -3
  877. package/cli/app/.next-cli-build/server/app/dashboard/translator.segments/_tree.segment.rsc +1 -1
  878. package/cli/app/.next-cli-build/server/app/dashboard/usage.html +1 -1
  879. package/cli/app/.next-cli-build/server/app/dashboard/usage.rsc +5 -5
  880. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +2 -2
  881. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage.segment.rsc +1 -1
  882. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  883. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  884. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_full.segment.rsc +5 -5
  885. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_head.segment.rsc +1 -1
  886. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_index.segment.rsc +3 -3
  887. package/cli/app/.next-cli-build/server/app/dashboard/usage.segments/_tree.segment.rsc +1 -1
  888. package/cli/app/.next-cli-build/server/app/dashboard.html +1 -1
  889. package/cli/app/.next-cli-build/server/app/dashboard.rsc +5 -5
  890. package/cli/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +2 -2
  891. package/cli/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  892. package/cli/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  893. package/cli/app/.next-cli-build/server/app/dashboard.segments/_full.segment.rsc +5 -5
  894. package/cli/app/.next-cli-build/server/app/dashboard.segments/_head.segment.rsc +1 -1
  895. package/cli/app/.next-cli-build/server/app/dashboard.segments/_index.segment.rsc +3 -3
  896. package/cli/app/.next-cli-build/server/app/dashboard.segments/_tree.segment.rsc +1 -1
  897. package/cli/app/.next-cli-build/server/app/index.html +1 -1
  898. package/cli/app/.next-cli-build/server/app/index.rsc +3 -3
  899. package/cli/app/.next-cli-build/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  900. package/cli/app/.next-cli-build/server/app/index.segments/_full.segment.rsc +3 -3
  901. package/cli/app/.next-cli-build/server/app/index.segments/_head.segment.rsc +1 -1
  902. package/cli/app/.next-cli-build/server/app/index.segments/_index.segment.rsc +3 -3
  903. package/cli/app/.next-cli-build/server/app/index.segments/_tree.segment.rsc +1 -1
  904. package/cli/app/.next-cli-build/server/app/landing/page.js +1 -1
  905. package/cli/app/.next-cli-build/server/app/landing/page.js.nft.json +1 -1
  906. package/cli/app/.next-cli-build/server/app/landing/page_client-reference-manifest.js +1 -1
  907. package/cli/app/.next-cli-build/server/app/landing.html +1 -1
  908. package/cli/app/.next-cli-build/server/app/landing.rsc +4 -4
  909. package/cli/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +4 -4
  910. package/cli/app/.next-cli-build/server/app/landing.segments/_head.segment.rsc +1 -1
  911. package/cli/app/.next-cli-build/server/app/landing.segments/_index.segment.rsc +3 -3
  912. package/cli/app/.next-cli-build/server/app/landing.segments/_tree.segment.rsc +1 -1
  913. package/cli/app/.next-cli-build/server/app/landing.segments/landing/__PAGE__.segment.rsc +2 -2
  914. package/cli/app/.next-cli-build/server/app/landing.segments/landing.segment.rsc +1 -1
  915. package/cli/app/.next-cli-build/server/app/login/page.js +2 -2
  916. package/cli/app/.next-cli-build/server/app/login/page.js.nft.json +1 -1
  917. package/cli/app/.next-cli-build/server/app/login/page_client-reference-manifest.js +1 -1
  918. package/cli/app/.next-cli-build/server/app/login.html +1 -1
  919. package/cli/app/.next-cli-build/server/app/login.rsc +4 -4
  920. package/cli/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +4 -4
  921. package/cli/app/.next-cli-build/server/app/login.segments/_head.segment.rsc +1 -1
  922. package/cli/app/.next-cli-build/server/app/login.segments/_index.segment.rsc +3 -3
  923. package/cli/app/.next-cli-build/server/app/login.segments/_tree.segment.rsc +1 -1
  924. package/cli/app/.next-cli-build/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
  925. package/cli/app/.next-cli-build/server/app/login.segments/login.segment.rsc +1 -1
  926. package/cli/app/.next-cli-build/server/app/manifest.webmanifest/route.js.nft.json +1 -1
  927. package/cli/app/.next-cli-build/server/app/manifest.webmanifest/route_client-reference-manifest.js +1 -1
  928. package/cli/app/.next-cli-build/server/app/page.js +1 -1
  929. package/cli/app/.next-cli-build/server/app/page.js.nft.json +1 -1
  930. package/cli/app/.next-cli-build/server/app/page_client-reference-manifest.js +1 -1
  931. package/cli/app/.next-cli-build/server/app-paths-manifest.json +9 -9
  932. package/cli/app/.next-cli-build/server/chunks/2030.js +1 -1
  933. package/cli/app/.next-cli-build/server/chunks/3155.js +1 -1
  934. package/cli/app/.next-cli-build/server/chunks/319.js +3 -3
  935. package/cli/app/.next-cli-build/server/chunks/4650.js +1 -1
  936. package/cli/app/.next-cli-build/server/chunks/4746.js +1 -1
  937. package/cli/app/.next-cli-build/server/chunks/5307.js +1 -1
  938. package/cli/app/.next-cli-build/server/chunks/5469.js +1 -1
  939. package/cli/app/.next-cli-build/server/chunks/5949.js +12 -11
  940. package/cli/app/.next-cli-build/server/chunks/8242.js +1 -1
  941. package/cli/app/.next-cli-build/server/chunks/8306.js +1 -1
  942. package/cli/app/.next-cli-build/server/chunks/9372.js +1 -1
  943. package/cli/app/.next-cli-build/server/chunks/9621.js +1 -1
  944. package/cli/app/.next-cli-build/server/middleware-build-manifest.js +1 -1
  945. package/cli/app/.next-cli-build/server/next-font-manifest.js +1 -1
  946. package/cli/app/.next-cli-build/server/next-font-manifest.json +1 -1
  947. package/cli/app/.next-cli-build/server/pages/404.html +1 -1
  948. package/cli/app/.next-cli-build/server/pages/500.html +1 -1
  949. package/cli/app/.next-cli-build/static/chunks/{620-a13f0f7b318585ab.js → 620-90911eeb765ca4bd.js} +1 -1
  950. package/cli/app/.next-cli-build/static/chunks/app/login/page-f7df7d9a053d65b7.js +1 -0
  951. package/cli/app/CHANGELOG.md +29 -0
  952. package/cli/app/cli/hooks/postinstall.js +82 -50
  953. package/cli/app/cli/hooks/safeGlobalInstall.js +178 -10
  954. package/cli/app/cli/hooks/startupRuntime.js +31 -0
  955. package/cli/app/cli/hooks/streamCommand.js +63 -0
  956. package/cli/app/package.json +46 -39
  957. package/cli/app/server.js +1 -1
  958. package/cli/cli.js +708 -248
  959. package/cli/hooks/postinstall.js +82 -50
  960. package/cli/hooks/safeGlobalInstall.js +178 -10
  961. package/cli/hooks/startupRuntime.js +31 -0
  962. package/cli/hooks/streamCommand.js +63 -0
  963. package/cli/package.json +6 -5
  964. package/cli/src/cli/systemdEnv.js +93 -0
  965. package/cli/src/cli/tray/autostart.js +55 -21
  966. package/cli/src/cli/tray/tray.js +1 -1
  967. package/cli/src/cli/updateRuntimeState.js +976 -0
  968. package/package.json +46 -39
  969. package/scripts/start-standalone.mjs +24 -15
  970. package/cli/app/.next-cli-build/static/chunks/app/login/page-9ea3f794879db097.js +0 -1
  971. package/i18n/README.ja-JP.md +0 -34
  972. package/i18n/README.ru.md +0 -34
  973. package/i18n/README.vi.md +0 -34
  974. package/i18n/README.zh-CN.md +0 -34
  975. package/images/screenshots/automation.png +0 -0
  976. package/images/screenshots/endpoint.png +0 -0
  977. package/images/screenshots/playground.png +0 -0
  978. package/images/screenshots/providers.png +0 -0
  979. package/images/screenshots/usage.png +0 -0
  980. package/images/zevairouter.png +0 -0
  981. package/jsconfig.json +0 -12
  982. package/next.config.mjs +0 -96
  983. package/open-sse/config/appConstants.js +0 -230
  984. package/open-sse/config/codexInstructions.js +0 -119
  985. package/open-sse/config/constants.js +0 -4
  986. package/open-sse/config/defaultThinkingSignature.js +0 -12
  987. package/open-sse/config/errorConfig.js +0 -92
  988. package/open-sse/config/googleTtsLanguages.js +0 -62
  989. package/open-sse/config/kiroConstants.js +0 -360
  990. package/open-sse/config/models.js +0 -13
  991. package/open-sse/config/ollamaModels.js +0 -19
  992. package/open-sse/config/providerModels.js +0 -1058
  993. package/open-sse/config/providers.js +0 -543
  994. package/open-sse/config/runtimeConfig.js +0 -72
  995. package/open-sse/config/ttsModels.js +0 -129
  996. package/open-sse/context/injectContext.js +0 -82
  997. package/open-sse/executors/antigravity.js +0 -605
  998. package/open-sse/executors/autoclaw.js +0 -121
  999. package/open-sse/executors/azure.js +0 -57
  1000. package/open-sse/executors/base.js +0 -221
  1001. package/open-sse/executors/codebuddy-cn.js +0 -31
  1002. package/open-sse/executors/codex.js +0 -484
  1003. package/open-sse/executors/commandcode.js +0 -88
  1004. package/open-sse/executors/cursor.js +0 -795
  1005. package/open-sse/executors/default.js +0 -532
  1006. package/open-sse/executors/gemini-cli.js +0 -89
  1007. package/open-sse/executors/github.js +0 -383
  1008. package/open-sse/executors/grok-cli.js +0 -397
  1009. package/open-sse/executors/grok-web.js +0 -345
  1010. package/open-sse/executors/iflow.js +0 -108
  1011. package/open-sse/executors/index.js +0 -92
  1012. package/open-sse/executors/kimchi.js +0 -123
  1013. package/open-sse/executors/kiro.js +0 -537
  1014. package/open-sse/executors/mimo-free.js +0 -156
  1015. package/open-sse/executors/ollama-local.js +0 -14
  1016. package/open-sse/executors/opencode-go.js +0 -41
  1017. package/open-sse/executors/opencode.js +0 -32
  1018. package/open-sse/executors/perplexity-web.js +0 -507
  1019. package/open-sse/executors/qoder.js +0 -468
  1020. package/open-sse/executors/qwen.js +0 -129
  1021. package/open-sse/executors/vertex.js +0 -131
  1022. package/open-sse/executors/xiaomi-tokenplan.js +0 -19
  1023. package/open-sse/handlers/chatCore/nonStreamingHandler.js +0 -261
  1024. package/open-sse/handlers/chatCore/requestDetail.js +0 -112
  1025. package/open-sse/handlers/chatCore/sseToJsonHandler.js +0 -540
  1026. package/open-sse/handlers/chatCore/streamingHandler.js +0 -125
  1027. package/open-sse/handlers/chatCore.js +0 -398
  1028. package/open-sse/handlers/embeddingProviders/_base.js +0 -4
  1029. package/open-sse/handlers/embeddingProviders/gemini.js +0 -57
  1030. package/open-sse/handlers/embeddingProviders/index.js +0 -23
  1031. package/open-sse/handlers/embeddingProviders/openai.js +0 -39
  1032. package/open-sse/handlers/embeddingProviders/openaiCompatNode.js +0 -16
  1033. package/open-sse/handlers/embeddingsCore.js +0 -126
  1034. package/open-sse/handlers/fetch/index.js +0 -237
  1035. package/open-sse/handlers/imageGenerationCore.js +0 -189
  1036. package/open-sse/handlers/imageProviders/_base.js +0 -31
  1037. package/open-sse/handlers/imageProviders/blackForestLabs.js +0 -46
  1038. package/open-sse/handlers/imageProviders/cloudflareAi.js +0 -181
  1039. package/open-sse/handlers/imageProviders/codex.js +0 -201
  1040. package/open-sse/handlers/imageProviders/comfyui.js +0 -11
  1041. package/open-sse/handlers/imageProviders/falAi.js +0 -44
  1042. package/open-sse/handlers/imageProviders/gemini.js +0 -28
  1043. package/open-sse/handlers/imageProviders/huggingface.js +0 -25
  1044. package/open-sse/handlers/imageProviders/index.js +0 -40
  1045. package/open-sse/handlers/imageProviders/nanobanana.js +0 -61
  1046. package/open-sse/handlers/imageProviders/openai.js +0 -40
  1047. package/open-sse/handlers/imageProviders/runwayml.js +0 -50
  1048. package/open-sse/handlers/imageProviders/sdwebui.js +0 -20
  1049. package/open-sse/handlers/imageProviders/stabilityAi.js +0 -37
  1050. package/open-sse/handlers/responsesHandler.js +0 -46
  1051. package/open-sse/handlers/search/callers.js +0 -371
  1052. package/open-sse/handlers/search/chatSearch.js +0 -409
  1053. package/open-sse/handlers/search/index.js +0 -201
  1054. package/open-sse/handlers/search/normalizers.js +0 -223
  1055. package/open-sse/handlers/sttCore.js +0 -194
  1056. package/open-sse/handlers/ttsCore.js +0 -74
  1057. package/open-sse/handlers/ttsProviders/_base.js +0 -39
  1058. package/open-sse/handlers/ttsProviders/edgeTts.js +0 -92
  1059. package/open-sse/handlers/ttsProviders/elevenlabs.js +0 -51
  1060. package/open-sse/handlers/ttsProviders/gemini.js +0 -120
  1061. package/open-sse/handlers/ttsProviders/genericFormats.js +0 -169
  1062. package/open-sse/handlers/ttsProviders/googleTts.js +0 -57
  1063. package/open-sse/handlers/ttsProviders/index.js +0 -50
  1064. package/open-sse/handlers/ttsProviders/localDevice.js +0 -90
  1065. package/open-sse/handlers/ttsProviders/minimax.js +0 -59
  1066. package/open-sse/handlers/ttsProviders/openai.js +0 -33
  1067. package/open-sse/handlers/ttsProviders/openrouter.js +0 -73
  1068. package/open-sse/index.js +0 -82
  1069. package/open-sse/rtk/applyFilter.js +0 -15
  1070. package/open-sse/rtk/autodetect.js +0 -111
  1071. package/open-sse/rtk/caveman.js +0 -100
  1072. package/open-sse/rtk/cavemanPrompts.js +0 -78
  1073. package/open-sse/rtk/constants.js +0 -55
  1074. package/open-sse/rtk/filters/buildOutput.js +0 -127
  1075. package/open-sse/rtk/filters/dedupLog.js +0 -44
  1076. package/open-sse/rtk/filters/find.js +0 -49
  1077. package/open-sse/rtk/filters/gitDiff.js +0 -92
  1078. package/open-sse/rtk/filters/gitStatus.js +0 -117
  1079. package/open-sse/rtk/filters/grep.js +0 -48
  1080. package/open-sse/rtk/filters/ls.js +0 -79
  1081. package/open-sse/rtk/filters/readNumbered.js +0 -27
  1082. package/open-sse/rtk/filters/searchList.js +0 -52
  1083. package/open-sse/rtk/filters/smartTruncate.js +0 -15
  1084. package/open-sse/rtk/filters/tree.js +0 -32
  1085. package/open-sse/rtk/headroom.js +0 -348
  1086. package/open-sse/rtk/index.js +0 -155
  1087. package/open-sse/rtk/ponytail.js +0 -91
  1088. package/open-sse/rtk/ponytailPrompts.js +0 -44
  1089. package/open-sse/rtk/pxpipe.js +0 -104
  1090. package/open-sse/rtk/registry.js +0 -38
  1091. package/open-sse/services/accountFallback.js +0 -467
  1092. package/open-sse/services/antigravityHeaderScrub.js +0 -78
  1093. package/open-sse/services/antigravityIdentity.js +0 -115
  1094. package/open-sse/services/antigravityObfuscation.js +0 -92
  1095. package/open-sse/services/clinepassModels.js +0 -63
  1096. package/open-sse/services/combo.js +0 -189
  1097. package/open-sse/services/compact.js +0 -71
  1098. package/open-sse/services/copilotModels.js +0 -155
  1099. package/open-sse/services/kimchiModels.js +0 -176
  1100. package/open-sse/services/kiroModels.js +0 -320
  1101. package/open-sse/services/model.js +0 -281
  1102. package/open-sse/services/oauthCredentialManager.js +0 -151
  1103. package/open-sse/services/projectId.js +0 -463
  1104. package/open-sse/services/provider.js +0 -356
  1105. package/open-sse/services/qoderModels.js +0 -216
  1106. package/open-sse/services/tokenRefresh.js +0 -949
  1107. package/open-sse/services/usage.js +0 -2415
  1108. package/open-sse/transformer/responsesTransformer.js +0 -509
  1109. package/open-sse/transformer/streamToJsonConverter.js +0 -151
  1110. package/open-sse/translator/formats.js +0 -36
  1111. package/open-sse/translator/helpers/claudeHelper.js +0 -217
  1112. package/open-sse/translator/helpers/geminiHelper.js +0 -372
  1113. package/open-sse/translator/helpers/imageHelper.js +0 -98
  1114. package/open-sse/translator/helpers/maxTokensHelper.js +0 -27
  1115. package/open-sse/translator/helpers/openaiHelper.js +0 -130
  1116. package/open-sse/translator/helpers/responsesApiHelper.js +0 -214
  1117. package/open-sse/translator/helpers/toolCallHelper.js +0 -148
  1118. package/open-sse/translator/index.js +0 -254
  1119. package/open-sse/translator/request/antigravity-to-openai.js +0 -255
  1120. package/open-sse/translator/request/claude-to-openai.js +0 -278
  1121. package/open-sse/translator/request/gemini-to-openai.js +0 -147
  1122. package/open-sse/translator/request/openai-responses.js +0 -212
  1123. package/open-sse/translator/request/openai-to-claude.js +0 -427
  1124. package/open-sse/translator/request/openai-to-commandcode.js +0 -178
  1125. package/open-sse/translator/request/openai-to-cursor.js +0 -195
  1126. package/open-sse/translator/request/openai-to-gemini.js +0 -478
  1127. package/open-sse/translator/request/openai-to-kiro.js +0 -641
  1128. package/open-sse/translator/request/openai-to-kiro.old.js +0 -278
  1129. package/open-sse/translator/request/openai-to-ollama.js +0 -192
  1130. package/open-sse/translator/request/openai-to-vertex.js +0 -42
  1131. package/open-sse/translator/response/claude-to-openai.js +0 -206
  1132. package/open-sse/translator/response/commandcode-to-openai.js +0 -197
  1133. package/open-sse/translator/response/cursor-to-openai.js +0 -30
  1134. package/open-sse/translator/response/gemini-to-openai.js +0 -245
  1135. package/open-sse/translator/response/kiro-to-openai.js +0 -195
  1136. package/open-sse/translator/response/ollama-to-openai.js +0 -152
  1137. package/open-sse/translator/response/openai-responses.js +0 -624
  1138. package/open-sse/translator/response/openai-to-antigravity.js +0 -122
  1139. package/open-sse/translator/response/openai-to-claude.js +0 -266
  1140. package/open-sse/utils/bypassHandler.js +0 -298
  1141. package/open-sse/utils/claudeCloaking.js +0 -155
  1142. package/open-sse/utils/claudeHeaderCache.js +0 -70
  1143. package/open-sse/utils/clientDetector.js +0 -64
  1144. package/open-sse/utils/cursorChecksum.js +0 -152
  1145. package/open-sse/utils/cursorProtobuf.js +0 -907
  1146. package/open-sse/utils/debugLog.js +0 -14
  1147. package/open-sse/utils/error.js +0 -147
  1148. package/open-sse/utils/ollamaTransform.js +0 -85
  1149. package/open-sse/utils/proxyFetch.js +0 -369
  1150. package/open-sse/utils/reasoningContentInjector.js +0 -79
  1151. package/open-sse/utils/requestLogger.js +0 -251
  1152. package/open-sse/utils/responsesStreamHelpers.js +0 -106
  1153. package/open-sse/utils/sessionManager.js +0 -231
  1154. package/open-sse/utils/stream.js +0 -590
  1155. package/open-sse/utils/streamHandler.js +0 -274
  1156. package/open-sse/utils/streamHelpers.js +0 -122
  1157. package/open-sse/utils/thinkingSuffix.js +0 -64
  1158. package/open-sse/utils/toolDeduper.js +0 -49
  1159. package/open-sse/utils/usageTracking.js +0 -351
  1160. package/postcss.config.mjs +0 -14
  1161. package/public/favicon.svg +0 -16
  1162. package/public/file.svg +0 -1
  1163. package/public/globe.svg +0 -1
  1164. package/public/i18n/literals/ar.json +0 -195
  1165. package/public/i18n/literals/bn.json +0 -195
  1166. package/public/i18n/literals/cs.json +0 -195
  1167. package/public/i18n/literals/da.json +0 -195
  1168. package/public/i18n/literals/de.json +0 -195
  1169. package/public/i18n/literals/el.json +0 -195
  1170. package/public/i18n/literals/es.json +0 -195
  1171. package/public/i18n/literals/fi.json +0 -195
  1172. package/public/i18n/literals/fr.json +0 -195
  1173. package/public/i18n/literals/he.json +0 -195
  1174. package/public/i18n/literals/hi.json +0 -195
  1175. package/public/i18n/literals/hu.json +0 -195
  1176. package/public/i18n/literals/id.json +0 -195
  1177. package/public/i18n/literals/it.json +0 -195
  1178. package/public/i18n/literals/ja.json +0 -195
  1179. package/public/i18n/literals/ko.json +0 -195
  1180. package/public/i18n/literals/nl.json +0 -195
  1181. package/public/i18n/literals/no.json +0 -195
  1182. package/public/i18n/literals/pl.json +0 -195
  1183. package/public/i18n/literals/pt-BR.json +0 -195
  1184. package/public/i18n/literals/pt-PT.json +0 -195
  1185. package/public/i18n/literals/ro.json +0 -195
  1186. package/public/i18n/literals/ru.json +0 -195
  1187. package/public/i18n/literals/sv.json +0 -195
  1188. package/public/i18n/literals/th.json +0 -195
  1189. package/public/i18n/literals/tl.json +0 -195
  1190. package/public/i18n/literals/tr.json +0 -195
  1191. package/public/i18n/literals/uk.json +0 -195
  1192. package/public/i18n/literals/ur.json +0 -195
  1193. package/public/i18n/literals/vi.json +0 -195
  1194. package/public/i18n/literals/zh-CN.json +0 -772
  1195. package/public/i18n/literals/zh-TW.json +0 -195
  1196. package/public/icons/discord.svg +0 -4
  1197. package/public/icons/icon-192.svg +0 -16
  1198. package/public/icons/icon-512.svg +0 -16
  1199. package/public/next.svg +0 -1
  1200. package/public/providers/alicode-intl.png +0 -0
  1201. package/public/providers/alicode.png +0 -0
  1202. package/public/providers/amp.png +0 -0
  1203. package/public/providers/anthropic-m.png +0 -0
  1204. package/public/providers/anthropic.png +0 -0
  1205. package/public/providers/antigravity.png +0 -0
  1206. package/public/providers/assemblyai.png +0 -0
  1207. package/public/providers/autoclaw.png +0 -0
  1208. package/public/providers/aws-polly.png +0 -0
  1209. package/public/providers/azure.png +0 -0
  1210. package/public/providers/black-forest-labs.png +0 -0
  1211. package/public/providers/blackbox.png +0 -0
  1212. package/public/providers/brave-search.png +0 -0
  1213. package/public/providers/byteplus.png +0 -0
  1214. package/public/providers/cartesia.png +0 -0
  1215. package/public/providers/cerebras.png +0 -0
  1216. package/public/providers/chutes.png +0 -0
  1217. package/public/providers/claude.png +0 -0
  1218. package/public/providers/cline.png +0 -0
  1219. package/public/providers/clinepass.png +0 -0
  1220. package/public/providers/cloudflare-ai.png +0 -0
  1221. package/public/providers/codebuddy-cn.png +0 -0
  1222. package/public/providers/codebuddy.png +0 -0
  1223. package/public/providers/codebuddy.svg +0 -37
  1224. package/public/providers/codex.png +0 -0
  1225. package/public/providers/cohere.png +0 -0
  1226. package/public/providers/comfyui.png +0 -0
  1227. package/public/providers/commandcode.png +0 -0
  1228. package/public/providers/continue.png +0 -0
  1229. package/public/providers/copilot.png +0 -0
  1230. package/public/providers/coqui.png +0 -0
  1231. package/public/providers/cursor.png +0 -0
  1232. package/public/providers/deepgram.png +0 -0
  1233. package/public/providers/deepseek-tui.png +0 -0
  1234. package/public/providers/deepseek.png +0 -0
  1235. package/public/providers/droid.png +0 -0
  1236. package/public/providers/edge-tts.png +0 -0
  1237. package/public/providers/elevenlabs.png +0 -0
  1238. package/public/providers/exa.png +0 -0
  1239. package/public/providers/fal-ai.png +0 -0
  1240. package/public/providers/firecrawl.png +0 -0
  1241. package/public/providers/fireworks.png +0 -0
  1242. package/public/providers/gemini-cli.png +0 -0
  1243. package/public/providers/gemini.png +0 -0
  1244. package/public/providers/github.png +0 -0
  1245. package/public/providers/glm-cn.png +0 -0
  1246. package/public/providers/glm.png +0 -0
  1247. package/public/providers/google-pse.png +0 -0
  1248. package/public/providers/google-tts.png +0 -0
  1249. package/public/providers/grok-cli.png +0 -0
  1250. package/public/providers/grok-web.png +0 -0
  1251. package/public/providers/groq.png +0 -0
  1252. package/public/providers/hermes.png +0 -0
  1253. package/public/providers/huggingface.png +0 -0
  1254. package/public/providers/hyperbolic.png +0 -0
  1255. package/public/providers/iflow.png +0 -0
  1256. package/public/providers/inworld.png +0 -0
  1257. package/public/providers/jcode.png +0 -0
  1258. package/public/providers/jina-ai.png +0 -0
  1259. package/public/providers/jina-reader.png +0 -0
  1260. package/public/providers/kilocode.png +0 -0
  1261. package/public/providers/kimchi.png +0 -0
  1262. package/public/providers/kimchi.svg +0 -4
  1263. package/public/providers/kimi-coding.png +0 -0
  1264. package/public/providers/kimi.png +0 -0
  1265. package/public/providers/kiro.png +0 -0
  1266. package/public/providers/linkup.png +0 -0
  1267. package/public/providers/local-device.png +0 -0
  1268. package/public/providers/mimo-free.png +0 -0
  1269. package/public/providers/minimax-cn.png +0 -0
  1270. package/public/providers/minimax.png +0 -0
  1271. package/public/providers/mistral.png +0 -0
  1272. package/public/providers/nanobanana.png +0 -0
  1273. package/public/providers/nebius.png +0 -0
  1274. package/public/providers/nvidia.png +0 -0
  1275. package/public/providers/oai-cc.png +0 -0
  1276. package/public/providers/oai-r.png +0 -0
  1277. package/public/providers/ollama-local.png +0 -0
  1278. package/public/providers/ollama.png +0 -0
  1279. package/public/providers/openai.png +0 -0
  1280. package/public/providers/openclaw.png +0 -0
  1281. package/public/providers/opencode-go.png +0 -0
  1282. package/public/providers/opencode.png +0 -0
  1283. package/public/providers/openrouter.png +0 -0
  1284. package/public/providers/perplexity-agent.png +0 -0
  1285. package/public/providers/perplexity-web.png +0 -0
  1286. package/public/providers/perplexity.png +0 -0
  1287. package/public/providers/playht.png +0 -0
  1288. package/public/providers/qoder.png +0 -0
  1289. package/public/providers/qwen.png +0 -0
  1290. package/public/providers/recraft.png +0 -0
  1291. package/public/providers/roo.png +0 -0
  1292. package/public/providers/runwayml.png +0 -0
  1293. package/public/providers/sdwebui.png +0 -0
  1294. package/public/providers/searchapi.png +0 -0
  1295. package/public/providers/searxng.png +0 -0
  1296. package/public/providers/serper.png +0 -0
  1297. package/public/providers/siliconflow.png +0 -0
  1298. package/public/providers/stability-ai.png +0 -0
  1299. package/public/providers/tavily.png +0 -0
  1300. package/public/providers/together.png +0 -0
  1301. package/public/providers/topaz.png +0 -0
  1302. package/public/providers/tortoise.png +0 -0
  1303. package/public/providers/vertex-partner.png +0 -0
  1304. package/public/providers/vertex.png +0 -0
  1305. package/public/providers/volcengine-ark.png +0 -0
  1306. package/public/providers/voyage-ai.png +0 -0
  1307. package/public/providers/xai.png +0 -0
  1308. package/public/providers/xiaomi-mimo.png +0 -0
  1309. package/public/providers/xiaomi-tokenplan.png +0 -0
  1310. package/public/providers/youcom.png +0 -0
  1311. package/public/sw.js +0 -22
  1312. package/public/vercel.svg +0 -1
  1313. package/public/window.svg +0 -1
  1314. package/scripts/translate-readme.js +0 -201
  1315. package/src/app/(dashboard)/dashboard/automation/page.js +0 -774
  1316. package/src/app/(dashboard)/dashboard/basic-chat/BasicChatPageClient.js +0 -1592
  1317. package/src/app/(dashboard)/dashboard/basic-chat/page.js +0 -5
  1318. package/src/app/(dashboard)/dashboard/cli-tools/CLIToolsPageClient.js +0 -81
  1319. package/src/app/(dashboard)/dashboard/cli-tools/[toolId]/ToolDetailClient.js +0 -173
  1320. package/src/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js +0 -11
  1321. package/src/app/(dashboard)/dashboard/cli-tools/components/AntigravityToolCard.js +0 -487
  1322. package/src/app/(dashboard)/dashboard/cli-tools/components/ApiKeySelect.js +0 -14
  1323. package/src/app/(dashboard)/dashboard/cli-tools/components/BaseUrlSelect.js +0 -176
  1324. package/src/app/(dashboard)/dashboard/cli-tools/components/ClaudeToolCard.js +0 -396
  1325. package/src/app/(dashboard)/dashboard/cli-tools/components/ClineToolCard.js +0 -307
  1326. package/src/app/(dashboard)/dashboard/cli-tools/components/CodexToolCard.js +0 -466
  1327. package/src/app/(dashboard)/dashboard/cli-tools/components/CopilotToolCard.js +0 -330
  1328. package/src/app/(dashboard)/dashboard/cli-tools/components/CoworkToolCard.js +0 -646
  1329. package/src/app/(dashboard)/dashboard/cli-tools/components/DeepSeekTuiToolCard.js +0 -344
  1330. package/src/app/(dashboard)/dashboard/cli-tools/components/DefaultToolCard.js +0 -271
  1331. package/src/app/(dashboard)/dashboard/cli-tools/components/DroidToolCard.js +0 -421
  1332. package/src/app/(dashboard)/dashboard/cli-tools/components/EndpointPresetControl.js +0 -129
  1333. package/src/app/(dashboard)/dashboard/cli-tools/components/HermesToolCard.js +0 -323
  1334. package/src/app/(dashboard)/dashboard/cli-tools/components/JcodeToolCard.js +0 -386
  1335. package/src/app/(dashboard)/dashboard/cli-tools/components/KiloToolCard.js +0 -280
  1336. package/src/app/(dashboard)/dashboard/cli-tools/components/MitmLinkCard.js +0 -40
  1337. package/src/app/(dashboard)/dashboard/cli-tools/components/MitmServerCard.js +0 -329
  1338. package/src/app/(dashboard)/dashboard/cli-tools/components/MitmToolCard.js +0 -320
  1339. package/src/app/(dashboard)/dashboard/cli-tools/components/OpenClawToolCard.js +0 -394
  1340. package/src/app/(dashboard)/dashboard/cli-tools/components/OpenCodeToolCard.js +0 -512
  1341. package/src/app/(dashboard)/dashboard/cli-tools/components/ToolSummaryCard.js +0 -40
  1342. package/src/app/(dashboard)/dashboard/cli-tools/components/cliEndpointMatch.js +0 -13
  1343. package/src/app/(dashboard)/dashboard/cli-tools/components/index.js +0 -19
  1344. package/src/app/(dashboard)/dashboard/cli-tools/page.js +0 -7
  1345. package/src/app/(dashboard)/dashboard/combos/page.js +0 -615
  1346. package/src/app/(dashboard)/dashboard/console-log/ConsoleLogClient.js +0 -118
  1347. package/src/app/(dashboard)/dashboard/console-log/page.js +0 -8
  1348. package/src/app/(dashboard)/dashboard/context/page.js +0 -276
  1349. package/src/app/(dashboard)/dashboard/endpoint/EndpointPageClient.js +0 -1594
  1350. package/src/app/(dashboard)/dashboard/endpoint/endpointConstants.js +0 -32
  1351. package/src/app/(dashboard)/dashboard/endpoint/page.js +0 -7
  1352. package/src/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js +0 -1907
  1353. package/src/app/(dashboard)/dashboard/media-providers/[kind]/page.js +0 -289
  1354. package/src/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js +0 -413
  1355. package/src/app/(dashboard)/dashboard/media-providers/web/page.js +0 -209
  1356. package/src/app/(dashboard)/dashboard/mitm/MitmPageClient.js +0 -121
  1357. package/src/app/(dashboard)/dashboard/mitm/page.js +0 -5
  1358. package/src/app/(dashboard)/dashboard/page.js +0 -7
  1359. package/src/app/(dashboard)/dashboard/playground/page.js +0 -5
  1360. package/src/app/(dashboard)/dashboard/profile/page.js +0 -1284
  1361. package/src/app/(dashboard)/dashboard/providers/[id]/AddApiKeyModal.js +0 -389
  1362. package/src/app/(dashboard)/dashboard/providers/[id]/AddCustomModelModal.js +0 -126
  1363. package/src/app/(dashboard)/dashboard/providers/[id]/CompatibleModelsSection.js +0 -250
  1364. package/src/app/(dashboard)/dashboard/providers/[id]/ConnectionRow.js +0 -295
  1365. package/src/app/(dashboard)/dashboard/providers/[id]/CooldownTimer.js +0 -42
  1366. package/src/app/(dashboard)/dashboard/providers/[id]/EditCompatibleNodeModal.js +0 -162
  1367. package/src/app/(dashboard)/dashboard/providers/[id]/ModelRow.js +0 -99
  1368. package/src/app/(dashboard)/dashboard/providers/[id]/PassthroughModelsSection.js +0 -183
  1369. package/src/app/(dashboard)/dashboard/providers/[id]/page.js +0 -2170
  1370. package/src/app/(dashboard)/dashboard/providers/[id]/page.new.js +0 -1726
  1371. package/src/app/(dashboard)/dashboard/providers/components/ConnectionsCard.js +0 -486
  1372. package/src/app/(dashboard)/dashboard/providers/components/ModelAvailabilityBadge.js +0 -186
  1373. package/src/app/(dashboard)/dashboard/providers/components/ModelsCard.js +0 -295
  1374. package/src/app/(dashboard)/dashboard/providers/new/page.js +0 -220
  1375. package/src/app/(dashboard)/dashboard/providers/page.js +0 -1518
  1376. package/src/app/(dashboard)/dashboard/proxy-pools/page.js +0 -1107
  1377. package/src/app/(dashboard)/dashboard/pxpipe/PxpipeClient.js +0 -284
  1378. package/src/app/(dashboard)/dashboard/pxpipe/page.js +0 -5
  1379. package/src/app/(dashboard)/dashboard/quota/page.js +0 -11
  1380. package/src/app/(dashboard)/dashboard/terminal/TerminalPageClient.js +0 -735
  1381. package/src/app/(dashboard)/dashboard/terminal/page.js +0 -7
  1382. package/src/app/(dashboard)/dashboard/token-saver/TokenSaverClient.js +0 -1018
  1383. package/src/app/(dashboard)/dashboard/token-saver/page.js +0 -5
  1384. package/src/app/(dashboard)/dashboard/translator/page.js +0 -303
  1385. package/src/app/(dashboard)/dashboard/usage/components/OverviewCards.js +0 -87
  1386. package/src/app/(dashboard)/dashboard/usage/components/ProviderLimits/ProviderLimitCard.js +0 -183
  1387. package/src/app/(dashboard)/dashboard/usage/components/ProviderLimits/QuotaProgressBar.js +0 -127
  1388. package/src/app/(dashboard)/dashboard/usage/components/ProviderLimits/QuotaTable.js +0 -269
  1389. package/src/app/(dashboard)/dashboard/usage/components/ProviderLimits/index.js +0 -1571
  1390. package/src/app/(dashboard)/dashboard/usage/components/ProviderLimits/utils.js +0 -320
  1391. package/src/app/(dashboard)/dashboard/usage/components/ProviderTopology.js +0 -468
  1392. package/src/app/(dashboard)/dashboard/usage/components/RequestDetailsTab.js +0 -454
  1393. package/src/app/(dashboard)/dashboard/usage/components/UsageChart.js +0 -155
  1394. package/src/app/(dashboard)/dashboard/usage/components/UsageTable.js +0 -253
  1395. package/src/app/(dashboard)/dashboard/usage/page.js +0 -75
  1396. package/src/app/(dashboard)/layout.js +0 -6
  1397. package/src/app/api/auth/login/route.js +0 -76
  1398. package/src/app/api/auth/logout/route.js +0 -14
  1399. package/src/app/api/auth/oidc/callback/route.js +0 -87
  1400. package/src/app/api/auth/oidc/start/route.js +0 -52
  1401. package/src/app/api/auth/oidc/test/route.js +0 -86
  1402. package/src/app/api/auth/status/route.js +0 -45
  1403. package/src/app/api/cache/stats/route.js +0 -13
  1404. package/src/app/api/changelog/route.js +0 -48
  1405. package/src/app/api/cli-tools/all-statuses/route.js +0 -46
  1406. package/src/app/api/cli-tools/antigravity-mitm/alias/route.js +0 -53
  1407. package/src/app/api/cli-tools/antigravity-mitm/route.js +0 -202
  1408. package/src/app/api/cli-tools/claude-settings/route.js +0 -203
  1409. package/src/app/api/cli-tools/cline-settings/route.js +0 -133
  1410. package/src/app/api/cli-tools/codex-gateway/accounts/route.js +0 -16
  1411. package/src/app/api/cli-tools/codex-settings/route.js +0 -271
  1412. package/src/app/api/cli-tools/copilot-settings/route.js +0 -153
  1413. package/src/app/api/cli-tools/cowork-mcp-registry/route.js +0 -77
  1414. package/src/app/api/cli-tools/cowork-mcp-tools/route.js +0 -95
  1415. package/src/app/api/cli-tools/cowork-settings/route.js +0 -412
  1416. package/src/app/api/cli-tools/deepseek-tui-settings/route.js +0 -164
  1417. package/src/app/api/cli-tools/droid-settings/route.js +0 -213
  1418. package/src/app/api/cli-tools/hermes-settings/route.js +0 -175
  1419. package/src/app/api/cli-tools/jcode-settings/route.js +0 -216
  1420. package/src/app/api/cli-tools/kilo-settings/route.js +0 -131
  1421. package/src/app/api/cli-tools/openclaw-settings/route.js +0 -292
  1422. package/src/app/api/cli-tools/opencode-settings/route.js +0 -259
  1423. package/src/app/api/combos/[id]/route.js +0 -81
  1424. package/src/app/api/combos/route.js +0 -48
  1425. package/src/app/api/context/[id]/route.js +0 -35
  1426. package/src/app/api/context/bulk/route.js +0 -25
  1427. package/src/app/api/context/route.js +0 -33
  1428. package/src/app/api/dashboard/chat/completions/route.js +0 -74
  1429. package/src/app/api/dashboard/cli-tools/keys/route.js +0 -33
  1430. package/src/app/api/dashboard/media/[operation]/route.js +0 -60
  1431. package/src/app/api/headroom/extras/route.js +0 -46
  1432. package/src/app/api/headroom/proxy/[...path]/route.js +0 -104
  1433. package/src/app/api/headroom/restart/route.js +0 -35
  1434. package/src/app/api/headroom/start/route.js +0 -35
  1435. package/src/app/api/headroom/status/route.js +0 -18
  1436. package/src/app/api/headroom/stop/route.js +0 -14
  1437. package/src/app/api/health/ready/route.js +0 -21
  1438. package/src/app/api/health/route.js +0 -15
  1439. package/src/app/api/init/route.js +0 -12
  1440. package/src/app/api/keys/[id]/rotate/route.js +0 -14
  1441. package/src/app/api/keys/[id]/route.js +0 -119
  1442. package/src/app/api/keys/route.js +0 -56
  1443. package/src/app/api/locale/route.js +0 -30
  1444. package/src/app/api/mcp/[plugin]/message/route.js +0 -21
  1445. package/src/app/api/mcp/[plugin]/sse/route.js +0 -37
  1446. package/src/app/api/media-providers/tts/deepgram/voices/route.js +0 -65
  1447. package/src/app/api/media-providers/tts/elevenlabs/voices/route.js +0 -71
  1448. package/src/app/api/media-providers/tts/inworld/voices/route.js +0 -61
  1449. package/src/app/api/media-providers/tts/minimax/voices/route.js +0 -113
  1450. package/src/app/api/media-providers/tts/voices/route.js +0 -99
  1451. package/src/app/api/metrics/route.js +0 -33
  1452. package/src/app/api/models/alias/route.js +0 -53
  1453. package/src/app/api/models/availability/route.js +0 -103
  1454. package/src/app/api/models/custom/route.js +0 -48
  1455. package/src/app/api/models/disabled/route.js +0 -50
  1456. package/src/app/api/models/route.js +0 -68
  1457. package/src/app/api/models/test/ping.js +0 -191
  1458. package/src/app/api/models/test/route.js +0 -14
  1459. package/src/app/api/oauth/[provider]/[action]/route.js +0 -340
  1460. package/src/app/api/oauth/antigravity/bulk-import/[jobId]/cancel/route.js +0 -19
  1461. package/src/app/api/oauth/antigravity/bulk-import/[jobId]/manual/[workerId]/route.js +0 -30
  1462. package/src/app/api/oauth/antigravity/bulk-import/[jobId]/route.js +0 -23
  1463. package/src/app/api/oauth/antigravity/bulk-import/latest/route.js +0 -24
  1464. package/src/app/api/oauth/antigravity/bulk-import/route.js +0 -51
  1465. package/src/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/cancel/route.js +0 -19
  1466. package/src/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/manual/[workerId]/route.js +0 -30
  1467. package/src/app/api/oauth/cloudflare-ai/bulk-import/[jobId]/route.js +0 -25
  1468. package/src/app/api/oauth/cloudflare-ai/bulk-import/latest/route.js +0 -27
  1469. package/src/app/api/oauth/cloudflare-ai/bulk-import/route.js +0 -56
  1470. package/src/app/api/oauth/codebuddy/bulk-import/[jobId]/cancel/route.js +0 -19
  1471. package/src/app/api/oauth/codebuddy/bulk-import/[jobId]/manual/[workerId]/route.js +0 -30
  1472. package/src/app/api/oauth/codebuddy/bulk-import/[jobId]/route.js +0 -23
  1473. package/src/app/api/oauth/codebuddy/bulk-import/latest/route.js +0 -25
  1474. package/src/app/api/oauth/codebuddy/bulk-import/route.js +0 -51
  1475. package/src/app/api/oauth/codebuddy/bulk-token/route.js +0 -118
  1476. package/src/app/api/oauth/codebuddy/quota-cookie/route.js +0 -133
  1477. package/src/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/cancel/route.js +0 -19
  1478. package/src/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/manual/[workerId]/route.js +0 -30
  1479. package/src/app/api/oauth/codebuddy-cn/bulk-import/[jobId]/route.js +0 -26
  1480. package/src/app/api/oauth/codebuddy-cn/bulk-import/latest/route.js +0 -27
  1481. package/src/app/api/oauth/codebuddy-cn/bulk-import/route.js +0 -61
  1482. package/src/app/api/oauth/codebuddy-cn/bulk-token/route.js +0 -119
  1483. package/src/app/api/oauth/codebuddy-cn/quota-cookie/route.js +0 -28
  1484. package/src/app/api/oauth/codex/import-token/route.js +0 -96
  1485. package/src/app/api/oauth/cursor/auto-import/route.js +0 -257
  1486. package/src/app/api/oauth/cursor/import/route.js +0 -100
  1487. package/src/app/api/oauth/gitlab/pat/route.js +0 -62
  1488. package/src/app/api/oauth/iflow/cookie/route.js +0 -137
  1489. package/src/app/api/oauth/kiro/auto-import/route.js +0 -85
  1490. package/src/app/api/oauth/kiro/bulk-import/[jobId]/cancel/route.js +0 -19
  1491. package/src/app/api/oauth/kiro/bulk-import/[jobId]/manual/[workerId]/route.js +0 -30
  1492. package/src/app/api/oauth/kiro/bulk-import/[jobId]/route.js +0 -23
  1493. package/src/app/api/oauth/kiro/bulk-import/latest/route.js +0 -25
  1494. package/src/app/api/oauth/kiro/bulk-import/route.js +0 -51
  1495. package/src/app/api/oauth/kiro/import/route.js +0 -110
  1496. package/src/app/api/oauth/kiro/social-authorize/route.js +0 -27
  1497. package/src/app/api/oauth/kiro/social-exchange/route.js +0 -41
  1498. package/src/app/api/oauth/qoder/bulk-import/[jobId]/cancel/route.js +0 -19
  1499. package/src/app/api/oauth/qoder/bulk-import/[jobId]/manual/[workerId]/route.js +0 -30
  1500. package/src/app/api/oauth/qoder/bulk-import/[jobId]/route.js +0 -23
  1501. package/src/app/api/oauth/qoder/bulk-import/latest/route.js +0 -24
  1502. package/src/app/api/oauth/qoder/bulk-import/route.js +0 -49
  1503. package/src/app/api/pricing/route.js +0 -134
  1504. package/src/app/api/provider-nodes/[id]/route.js +0 -101
  1505. package/src/app/api/provider-nodes/route.js +0 -104
  1506. package/src/app/api/provider-nodes/validate/route.js +0 -201
  1507. package/src/app/api/providers/[id]/models/route.js +0 -605
  1508. package/src/app/api/providers/[id]/route.js +0 -251
  1509. package/src/app/api/providers/[id]/test/route.js +0 -23
  1510. package/src/app/api/providers/[id]/test/testUtils.js +0 -811
  1511. package/src/app/api/providers/[id]/test-models/route.js +0 -66
  1512. package/src/app/api/providers/bulk-delete/route.js +0 -60
  1513. package/src/app/api/providers/client/route.js +0 -136
  1514. package/src/app/api/providers/kilo/free-models/route.js +0 -55
  1515. package/src/app/api/providers/route.js +0 -278
  1516. package/src/app/api/providers/suggested-models/filters.js +0 -20
  1517. package/src/app/api/providers/suggested-models/route.js +0 -34
  1518. package/src/app/api/providers/test-batch/route.js +0 -131
  1519. package/src/app/api/providers/validate/route.js +0 -637
  1520. package/src/app/api/proxy-pools/[id]/route.js +0 -135
  1521. package/src/app/api/proxy-pools/[id]/test/route.js +0 -72
  1522. package/src/app/api/proxy-pools/cloudflare-deploy/route.js +0 -145
  1523. package/src/app/api/proxy-pools/deno-deploy/route.js +0 -175
  1524. package/src/app/api/proxy-pools/route.js +0 -112
  1525. package/src/app/api/proxy-pools/vercel-deploy/route.js +0 -142
  1526. package/src/app/api/pxpipe/health/route.js +0 -16
  1527. package/src/app/api/pxpipe/install/route.js +0 -20
  1528. package/src/app/api/pxpipe/logs/route.js +0 -21
  1529. package/src/app/api/pxpipe/restart/route.js +0 -16
  1530. package/src/app/api/pxpipe/start/route.js +0 -26
  1531. package/src/app/api/pxpipe/stats/route.js +0 -17
  1532. package/src/app/api/pxpipe/status/route.js +0 -21
  1533. package/src/app/api/pxpipe/stop/route.js +0 -16
  1534. package/src/app/api/settings/database/route.js +0 -36
  1535. package/src/app/api/settings/proxy-test/route.js +0 -23
  1536. package/src/app/api/settings/require-login/route.js +0 -15
  1537. package/src/app/api/settings/route.js +0 -115
  1538. package/src/app/api/shutdown/route.js +0 -24
  1539. package/src/app/api/tags/route.js +0 -18
  1540. package/src/app/api/terminal/auth/setup/route.js +0 -72
  1541. package/src/app/api/terminal/auth/status/route.js +0 -27
  1542. package/src/app/api/terminal/auth/unlock/route.js +0 -69
  1543. package/src/app/api/terminal/session/[id]/input/route.js +0 -32
  1544. package/src/app/api/terminal/session/[id]/resize/route.js +0 -18
  1545. package/src/app/api/terminal/session/[id]/route.js +0 -37
  1546. package/src/app/api/terminal/session/[id]/stream/route.js +0 -100
  1547. package/src/app/api/terminal/session/route.js +0 -30
  1548. package/src/app/api/translator/console-logs/route.js +0 -24
  1549. package/src/app/api/translator/console-logs/stream/route.js +0 -79
  1550. package/src/app/api/translator/load/route.js +0 -45
  1551. package/src/app/api/translator/save/route.js +0 -44
  1552. package/src/app/api/translator/send/route.js +0 -94
  1553. package/src/app/api/translator/translate/route.js +0 -90
  1554. package/src/app/api/tunnel/disable/route.js +0 -12
  1555. package/src/app/api/tunnel/enable/route.js +0 -16
  1556. package/src/app/api/tunnel/status/route.js +0 -13
  1557. package/src/app/api/tunnel/tailscale-check/route.js +0 -50
  1558. package/src/app/api/tunnel/tailscale-disable/route.js +0 -12
  1559. package/src/app/api/tunnel/tailscale-enable/route.js +0 -12
  1560. package/src/app/api/tunnel/tailscale-install/route.js +0 -72
  1561. package/src/app/api/usage/[connectionId]/route.js +0 -40
  1562. package/src/app/api/usage/aggregate/route.js +0 -126
  1563. package/src/app/api/usage/chart/route.js +0 -21
  1564. package/src/app/api/usage/history/route.js +0 -12
  1565. package/src/app/api/usage/logs/route.js +0 -12
  1566. package/src/app/api/usage/providers/route.js +0 -42
  1567. package/src/app/api/usage/request-details/route.js +0 -57
  1568. package/src/app/api/usage/request-logs/route.js +0 -13
  1569. package/src/app/api/usage/stats/route.js +0 -23
  1570. package/src/app/api/usage/stream/route.js +0 -142
  1571. package/src/app/api/v1/api/chat/route.js +0 -37
  1572. package/src/app/api/v1/audio/speech/route.js +0 -16
  1573. package/src/app/api/v1/audio/transcriptions/route.js +0 -19
  1574. package/src/app/api/v1/audio/voices/route.js +0 -68
  1575. package/src/app/api/v1/chat/completions/route.js +0 -35
  1576. package/src/app/api/v1/embeddings/route.js +0 -21
  1577. package/src/app/api/v1/images/generations/route.js +0 -16
  1578. package/src/app/api/v1/messages/count_tokens/route.js +0 -59
  1579. package/src/app/api/v1/messages/route.js +0 -36
  1580. package/src/app/api/v1/models/[kind]/route.js +0 -55
  1581. package/src/app/api/v1/models/info/route.js +0 -110
  1582. package/src/app/api/v1/models/route.js +0 -497
  1583. package/src/app/api/v1/responses/compact/route.js +0 -55
  1584. package/src/app/api/v1/responses/route.js +0 -30
  1585. package/src/app/api/v1/route.js +0 -1
  1586. package/src/app/api/v1/search/route.js +0 -21
  1587. package/src/app/api/v1/web/fetch/route.js +0 -21
  1588. package/src/app/api/v1beta/models/[...path]/route.js +0 -368
  1589. package/src/app/api/v1beta/models/route.js +0 -44
  1590. package/src/app/api/version/route.js +0 -198
  1591. package/src/app/api/version/shutdown/route.js +0 -15
  1592. package/src/app/api/version/update/route.js +0 -21
  1593. package/src/app/callback/page.js +0 -149
  1594. package/src/app/dashboard/settings/pricing/page.js +0 -174
  1595. package/src/app/globals.css +0 -659
  1596. package/src/app/landing/components/AnimatedBackground.js +0 -57
  1597. package/src/app/landing/components/Features.js +0 -133
  1598. package/src/app/landing/components/FlowAnimation.js +0 -175
  1599. package/src/app/landing/components/Footer.js +0 -61
  1600. package/src/app/landing/components/GetStarted.js +0 -97
  1601. package/src/app/landing/components/HeroSection.js +0 -72
  1602. package/src/app/landing/components/HowItWorks.js +0 -66
  1603. package/src/app/landing/components/Navigation.js +0 -77
  1604. package/src/app/landing/page.js +0 -106
  1605. package/src/app/layout.js +0 -48
  1606. package/src/app/login/page.js +0 -197
  1607. package/src/app/manifest.js +0 -30
  1608. package/src/app/page.js +0 -5
  1609. package/src/dashboardGuard.js +0 -288
  1610. package/src/i18n/RuntimeI18nProvider.js +0 -27
  1611. package/src/i18n/config.js +0 -146
  1612. package/src/i18n/runtime.js +0 -162
  1613. package/src/lib/alerter.js +0 -122
  1614. package/src/lib/appUpdater.js +0 -204
  1615. package/src/lib/auth/dashboardSession.js +0 -68
  1616. package/src/lib/auth/loginLimiter.js +0 -52
  1617. package/src/lib/auth/oidc.js +0 -303
  1618. package/src/lib/auth/terminalSession.js +0 -88
  1619. package/src/lib/autoclaw/constants.js +0 -63
  1620. package/src/lib/consoleLogBuffer.js +0 -79
  1621. package/src/lib/dataDir.js +0 -29
  1622. package/src/lib/db/adapters/betterSqliteAdapter.js +0 -58
  1623. package/src/lib/db/adapters/bunSqliteAdapter.js +0 -65
  1624. package/src/lib/db/adapters/nodeSqliteAdapter.js +0 -86
  1625. package/src/lib/db/adapters/sqljsAdapter.js +0 -207
  1626. package/src/lib/db/backup.js +0 -36
  1627. package/src/lib/db/dataDirMigration.js +0 -52
  1628. package/src/lib/db/driver.js +0 -131
  1629. package/src/lib/db/helpers/jsonCol.js +0 -9
  1630. package/src/lib/db/helpers/kvStore.js +0 -39
  1631. package/src/lib/db/helpers/metaStore.js +0 -22
  1632. package/src/lib/db/index.js +0 -218
  1633. package/src/lib/db/maintenance.js +0 -78
  1634. package/src/lib/db/migrate.js +0 -295
  1635. package/src/lib/db/migrations/001-initial.js +0 -17
  1636. package/src/lib/db/migrations/index.js +0 -10
  1637. package/src/lib/db/paths.js +0 -21
  1638. package/src/lib/db/repos/aliasRepo.js +0 -62
  1639. package/src/lib/db/repos/apiKeysRepo.js +0 -193
  1640. package/src/lib/db/repos/combosRepo.js +0 -73
  1641. package/src/lib/db/repos/connectionsRepo.js +0 -247
  1642. package/src/lib/db/repos/contextFilesRepo.js +0 -124
  1643. package/src/lib/db/repos/disabledModelsRepo.js +0 -56
  1644. package/src/lib/db/repos/nodesRepo.js +0 -95
  1645. package/src/lib/db/repos/pricingRepo.js +0 -108
  1646. package/src/lib/db/repos/proxyPoolsRepo.js +0 -103
  1647. package/src/lib/db/repos/quotaCacheRepo.js +0 -80
  1648. package/src/lib/db/repos/requestDetailsRepo.js +0 -275
  1649. package/src/lib/db/repos/settingsRepo.js +0 -120
  1650. package/src/lib/db/repos/usageRepo.js +0 -935
  1651. package/src/lib/db/schema.js +0 -193
  1652. package/src/lib/db/version.js +0 -21
  1653. package/src/lib/disabledModelsDb.js +0 -4
  1654. package/src/lib/headroom/detect.js +0 -192
  1655. package/src/lib/headroom/process.js +0 -327
  1656. package/src/lib/localDb.js +0 -26
  1657. package/src/lib/mcp/stdioSseBridge.js +0 -198
  1658. package/src/lib/mitmAliasCache.js +0 -46
  1659. package/src/lib/network/connectionProxy.js +0 -187
  1660. package/src/lib/network/initOutboundProxy.js +0 -25
  1661. package/src/lib/network/outboundProxy.js +0 -82
  1662. package/src/lib/network/proxyTest.js +0 -91
  1663. package/src/lib/oauth/constants/oauth.js +0 -337
  1664. package/src/lib/oauth/constants/xai.js +0 -61
  1665. package/src/lib/oauth/providers.js +0 -1821
  1666. package/src/lib/oauth/services/antigravity.js +0 -321
  1667. package/src/lib/oauth/services/antigravityBulkImportManager.js +0 -364
  1668. package/src/lib/oauth/services/autoclawTokenMonitor.js +0 -145
  1669. package/src/lib/oauth/services/bulkImportBrowserEngine.js +0 -756
  1670. package/src/lib/oauth/services/claude.js +0 -136
  1671. package/src/lib/oauth/services/cloudflareAiBulkImportManager.js +0 -503
  1672. package/src/lib/oauth/services/codebuddyAutomation.js +0 -6
  1673. package/src/lib/oauth/services/codebuddyBulkImportManager.js +0 -1033
  1674. package/src/lib/oauth/services/codebuddyCnBulkImportManager.js +0 -2088
  1675. package/src/lib/oauth/services/codebuddyCnPhoneAutomation.js +0 -1294
  1676. package/src/lib/oauth/services/codex.js +0 -144
  1677. package/src/lib/oauth/services/cursor.js +0 -179
  1678. package/src/lib/oauth/services/displayEnv.js +0 -134
  1679. package/src/lib/oauth/services/fiveSimClient.js +0 -567
  1680. package/src/lib/oauth/services/gemini.js +0 -240
  1681. package/src/lib/oauth/services/github.js +0 -225
  1682. package/src/lib/oauth/services/googleAutomation.js +0 -9
  1683. package/src/lib/oauth/services/iflow.js +0 -202
  1684. package/src/lib/oauth/services/index.js +0 -17
  1685. package/src/lib/oauth/services/kiro.js +0 -334
  1686. package/src/lib/oauth/services/kiroBulkImportManager.js +0 -1522
  1687. package/src/lib/oauth/services/kiroConnections.js +0 -93
  1688. package/src/lib/oauth/services/kiroGoogleAutomation.js +0 -2587
  1689. package/src/lib/oauth/services/oauth.js +0 -157
  1690. package/src/lib/oauth/services/openai.js +0 -123
  1691. package/src/lib/oauth/services/proxyUtils.js +0 -26
  1692. package/src/lib/oauth/services/qoder.js +0 -233
  1693. package/src/lib/oauth/services/qoderBulkImportManager.js +0 -340
  1694. package/src/lib/oauth/services/qwen.js +0 -170
  1695. package/src/lib/oauth/services/socksHttpBridge.js +0 -165
  1696. package/src/lib/oauth/services/tempmailClient.js +0 -288
  1697. package/src/lib/oauth/services/xai.js +0 -238
  1698. package/src/lib/oauth/utils/banner.js +0 -63
  1699. package/src/lib/oauth/utils/pkce.js +0 -39
  1700. package/src/lib/oauth/utils/server.js +0 -415
  1701. package/src/lib/oauth/utils/ui.js +0 -48
  1702. package/src/lib/providerConnectionSanitizer.js +0 -180
  1703. package/src/lib/providerNormalization.js +0 -45
  1704. package/src/lib/pxpipe/events.js +0 -125
  1705. package/src/lib/pxpipe/install.js +0 -123
  1706. package/src/lib/pxpipe/loader.js +0 -70
  1707. package/src/lib/pxpipe/service.js +0 -49
  1708. package/src/lib/qoder/constants.js +0 -64
  1709. package/src/lib/qoder/cosy.js +0 -175
  1710. package/src/lib/qoder/encoding.js +0 -55
  1711. package/src/lib/requestDetailsDb.js +0 -4
  1712. package/src/lib/responseCache.js +0 -169
  1713. package/src/lib/safeFetch.js +0 -167
  1714. package/src/lib/systemSpecs.js +0 -167
  1715. package/src/lib/terminal/ptyBridge.py +0 -163
  1716. package/src/lib/terminal/sessionManager.js +0 -434
  1717. package/src/lib/tunnel/cloudflare/cloudflared.js +0 -460
  1718. package/src/lib/tunnel/cloudflare/config.js +0 -9
  1719. package/src/lib/tunnel/cloudflare/healthCheck.js +0 -29
  1720. package/src/lib/tunnel/cloudflare/manager.js +0 -151
  1721. package/src/lib/tunnel/cloudflare/pid.js +0 -23
  1722. package/src/lib/tunnel/index.js +0 -48
  1723. package/src/lib/tunnel/shared/dnsResolver.js +0 -17
  1724. package/src/lib/tunnel/shared/internetCheck.js +0 -26
  1725. package/src/lib/tunnel/shared/state.js +0 -41
  1726. package/src/lib/tunnel/shared/watchdogConfig.js +0 -8
  1727. package/src/lib/tunnel/tailscale/config.js +0 -7
  1728. package/src/lib/tunnel/tailscale/healthCheck.js +0 -29
  1729. package/src/lib/tunnel/tailscale/manager.js +0 -129
  1730. package/src/lib/tunnel/tailscale/tailscale.js +0 -790
  1731. package/src/lib/updater/updater.js +0 -327
  1732. package/src/lib/usage/fetcher.js +0 -208
  1733. package/src/lib/usage/quotaRefresh.js +0 -100
  1734. package/src/lib/usage/quotaService.js +0 -206
  1735. package/src/lib/usageDb.js +0 -7
  1736. package/src/mitm/antigravityIdeVersion.js +0 -50
  1737. package/src/mitm/cert/generate.js +0 -32
  1738. package/src/mitm/cert/install.js +0 -274
  1739. package/src/mitm/cert/rootCA.js +0 -173
  1740. package/src/mitm/config.js +0 -87
  1741. package/src/mitm/dbReader.js +0 -22
  1742. package/src/mitm/dns/dnsConfig.js +0 -266
  1743. package/src/mitm/handlers/antigravity.js +0 -33
  1744. package/src/mitm/handlers/base.js +0 -226
  1745. package/src/mitm/handlers/copilot.js +0 -35
  1746. package/src/mitm/handlers/cursor.js +0 -15
  1747. package/src/mitm/handlers/kiro.js +0 -533
  1748. package/src/mitm/logger.js +0 -106
  1749. package/src/mitm/manager.js +0 -862
  1750. package/src/mitm/paths.js +0 -32
  1751. package/src/mitm/server.js +0 -447
  1752. package/src/mitm/winElevated.js +0 -81
  1753. package/src/models/index.js +0 -38
  1754. package/src/proxy.js +0 -5
  1755. package/src/shared/components/AddCustomEmbeddingModal.js +0 -184
  1756. package/src/shared/components/Avatar.js +0 -88
  1757. package/src/shared/components/Badge.js +0 -54
  1758. package/src/shared/components/BulkAccountAutomationModal.js +0 -640
  1759. package/src/shared/components/Button.js +0 -57
  1760. package/src/shared/components/Card.js +0 -116
  1761. package/src/shared/components/ChangelogModal.js +0 -108
  1762. package/src/shared/components/CodeBuddyCnPhoneRegisterModal.js +0 -563
  1763. package/src/shared/components/CodeBuddyQuotaCookieModal.js +0 -109
  1764. package/src/shared/components/ComboFormModal.js +0 -176
  1765. package/src/shared/components/CursorAuthModal.js +0 -213
  1766. package/src/shared/components/Drawer.js +0 -82
  1767. package/src/shared/components/EditConnectionModal.js +0 -287
  1768. package/src/shared/components/Footer.js +0 -132
  1769. package/src/shared/components/GitLabAuthModal.js +0 -194
  1770. package/src/shared/components/Header.js +0 -399
  1771. package/src/shared/components/HeaderLanguage.js +0 -48
  1772. package/src/shared/components/HeaderMenu.js +0 -127
  1773. package/src/shared/components/IFlowCookieModal.js +0 -132
  1774. package/src/shared/components/Input.js +0 -76
  1775. package/src/shared/components/KiroAuthModal.js +0 -1169
  1776. package/src/shared/components/KiroOAuthWrapper.js +0 -150
  1777. package/src/shared/components/KiroSocialOAuthModal.js +0 -205
  1778. package/src/shared/components/LanguageSwitcher.js +0 -192
  1779. package/src/shared/components/Loading.js +0 -75
  1780. package/src/shared/components/ManualConfigModal.js +0 -44
  1781. package/src/shared/components/McpMarketplaceModal.js +0 -255
  1782. package/src/shared/components/Modal.js +0 -196
  1783. package/src/shared/components/ModelSelectModal.js +0 -547
  1784. package/src/shared/components/NoAuthProxyCard.js +0 -134
  1785. package/src/shared/components/OAuthModal.js +0 -709
  1786. package/src/shared/components/Pagination.js +0 -150
  1787. package/src/shared/components/PricingModal.js +0 -209
  1788. package/src/shared/components/ProviderIcon.js +0 -68
  1789. package/src/shared/components/ProviderInfoCard.js +0 -82
  1790. package/src/shared/components/RequestLogger.js +0 -122
  1791. package/src/shared/components/SegmentedControl.js +0 -53
  1792. package/src/shared/components/Select.js +0 -67
  1793. package/src/shared/components/Sidebar.js +0 -486
  1794. package/src/shared/components/ThemeProvider.js +0 -15
  1795. package/src/shared/components/ThemeToggle.js +0 -42
  1796. package/src/shared/components/Toggle.js +0 -95
  1797. package/src/shared/components/Tooltip.js +0 -25
  1798. package/src/shared/components/UsageStats.js +0 -571
  1799. package/src/shared/components/index.js +0 -46
  1800. package/src/shared/components/layouts/AuthLayout.js +0 -29
  1801. package/src/shared/components/layouts/DashboardLayout.js +0 -121
  1802. package/src/shared/components/layouts/index.js +0 -4
  1803. package/src/shared/constants/automationProviders.js +0 -23
  1804. package/src/shared/constants/cliTools.js +0 -397
  1805. package/src/shared/constants/colors.js +0 -77
  1806. package/src/shared/constants/config.js +0 -98
  1807. package/src/shared/constants/coworkPlugins.js +0 -75
  1808. package/src/shared/constants/index.js +0 -4
  1809. package/src/shared/constants/locales.js +0 -36
  1810. package/src/shared/constants/mitmToolHosts.js +0 -12
  1811. package/src/shared/constants/models.js +0 -38
  1812. package/src/shared/constants/pricing.js +0 -311
  1813. package/src/shared/constants/providers.js +0 -450
  1814. package/src/shared/constants/ttsProviders.js +0 -138
  1815. package/src/shared/hooks/index.js +0 -2
  1816. package/src/shared/hooks/useCopyToClipboard.js +0 -43
  1817. package/src/shared/hooks/useModelLockUntil.js +0 -18
  1818. package/src/shared/hooks/useTheme.js +0 -60
  1819. package/src/shared/services/bootstrap.js +0 -12
  1820. package/src/shared/services/initializeApp.js +0 -294
  1821. package/src/shared/utils/api.js +0 -93
  1822. package/src/shared/utils/apiKey.js +0 -98
  1823. package/src/shared/utils/asyncPolling.js +0 -27
  1824. package/src/shared/utils/clineAuth.js +0 -37
  1825. package/src/shared/utils/cn.js +0 -11
  1826. package/src/shared/utils/codexCliConfig.js +0 -44
  1827. package/src/shared/utils/connectionStatus.js +0 -168
  1828. package/src/shared/utils/dashboardMedia.js +0 -19
  1829. package/src/shared/utils/index.js +0 -40
  1830. package/src/shared/utils/machine.js +0 -6
  1831. package/src/shared/utils/machineId.js +0 -66
  1832. package/src/shared/utils/modelLockTimer.js +0 -32
  1833. package/src/shared/utils/providerModelsFetcher.js +0 -30
  1834. package/src/shared/utils/usageStats.js +0 -10
  1835. package/src/sse/handlers/chat.js +0 -445
  1836. package/src/sse/handlers/embeddings.js +0 -141
  1837. package/src/sse/handlers/fetch.js +0 -213
  1838. package/src/sse/handlers/imageGeneration.js +0 -142
  1839. package/src/sse/handlers/search.js +0 -206
  1840. package/src/sse/handlers/streamFailure.js +0 -34
  1841. package/src/sse/handlers/stt.js +0 -88
  1842. package/src/sse/handlers/tts.js +0 -114
  1843. package/src/sse/services/auth.js +0 -576
  1844. package/src/sse/services/codexGateway.js +0 -215
  1845. package/src/sse/services/model.js +0 -99
  1846. package/src/sse/services/tokenRefresh.js +0 -319
  1847. package/src/sse/utils/logger.js +0 -75
  1848. package/src/store/headerSearchStore.js +0 -19
  1849. package/src/store/index.js +0 -6
  1850. package/src/store/notificationStore.js +0 -45
  1851. package/src/store/providerStore.js +0 -55
  1852. package/src/store/settingsStore.js +0 -51
  1853. package/src/store/themeStore.js +0 -54
  1854. package/src/store/userStore.js +0 -20
  1855. package/start.sh +0 -4
  1856. /package/cli/app/.next-cli-build/static/{SC3btW1lCuB9q-iyIwwWK → sRgS_5eNahHOIlOLEqVvI}/_buildManifest.js +0 -0
  1857. /package/cli/app/.next-cli-build/static/{SC3btW1lCuB9q-iyIwwWK → 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_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`
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 {
@@ -57,4 +58,4 @@ Done. Run: zevai --version`),d.zevaiPath&&console.log(`Binary: ${d.zevaiPath}`)
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 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),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,3 +1,3 @@
1
1
  exports.id=8242,exports.ids=[8242],exports.modules={43173:(a,b,c)=>{"use strict";c.d(b,{default:()=>m});var d=c(48249),e=c(67484),f=c(49885),g=c.n(f),h=c(2116),i=c.n(h),j=c(50412),k=c(50377);let l=[{icon:"public",title:"Access Anywhere",desc:"Use your API from any network"},{icon:"group",title:"Share Endpoint",desc:"Share URL with team members"},{icon:"code",title:"Use in Cursor/Cline",desc:"Connect AI tools remotely"},{icon:"lock",title:"Encrypted",desc:"End-to-end TLS via Cloudflare"}];function m({machineId:a}){let[b,c]=(0,e.useState)([]),[f,g]=(0,e.useState)(!0),[h,r]=(0,e.useState)(!1),[s,t]=(0,e.useState)(""),[u,v]=(0,e.useState)(null),[w,x]=(0,e.useState)(null),[y,z]=(0,e.useState)(null),[A,B]=(0,e.useState)(null),[C,D]=(0,e.useState)(()=>new Set),[E,F]=(0,e.useState)(()=>({})),[G,H]=(0,e.useState)(!1),[I,J]=(0,e.useState)(!0),[K,L]=(0,e.useState)(!0),[M,N]=(0,e.useState)(!1),[O,P]=(0,e.useState)(!0),[Q,R]=(0,e.useState)(!1),[S,T]=(0,e.useState)(!1),[U,V]=(0,e.useState)(""),[W,X]=(0,e.useState)(""),[Y,Z]=(0,e.useState)(!1),[$,_]=(0,e.useState)(""),[aa,ab]=(0,e.useState)(null),[ac,ad]=(0,e.useState)(!1),[ae,af]=(0,e.useState)(!1),[ag,ah]=(0,e.useState)(!1),[ai,aj]=(0,e.useState)(!1),[ak,al]=(0,e.useState)(""),[am,an]=(0,e.useState)(!1),[ao,ap]=(0,e.useState)(""),[aq,ar]=(0,e.useState)(null),[as,at]=(0,e.useState)(""),[au,av]=(0,e.useState)(""),[aw,ax]=(0,e.useState)(null),[ay,az]=(0,e.useState)(!1),[aA,aB]=(0,e.useState)([]),[aC,aD]=(0,e.useState)(""),[aE,aF]=(0,e.useState)(!1),[aG,aH]=(0,e.useState)(!1),[aI,aJ]=(0,e.useState)(!1),aK=(0,e.useRef)(null);(0,e.useRef)(0),(0,e.useRef)(0),(0,e.useRef)(!1),(0,e.useRef)(!1),(0,e.useRef)(!1),(0,e.useRef)(!1);let[aL,aM]=(0,e.useState)(!1),[aN,aO]=(0,e.useState)(!1),[aP,aQ]=(0,e.useState)(!1),{copied:aR,copy:aS}=(0,k.C)(),aT=!I||!K,aU=I?"Change the default dashboard password before activating the tunnel.":'Enable "Require login" and set a custom password before activating the tunnel.';(0,e.useCallback)((a,b,c,d,e,f)=>{b.current?(c.current=0,d(!0),e.current||(e.current=!0,f(!0))):(c.current+=1,c.current>=5&&d(!1))},[]);let aV=async a=>{try{(await fetch("/api/settings",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({tunnelDashboardAccess:a})})).ok&&N(a)}catch(a){console.log("Error updating tunnelDashboardAccess:",a)}},aW=async a=>{try{(await fetch("/api/settings",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({requireApiKey:a})})).ok&&H(a)}catch(a){console.log("Error updating requireApiKey:",a)}},aX=async()=>{try{let a=await fetch("/api/keys"),b=await a.json();a.ok&&c(b.keys||[])}catch(a){console.log("Error fetching data:",a)}finally{g(!1)}},aY=async(...a)=>{Z(!0),_("Waiting for tunnel ready...");let b=a.filter(Boolean).map(a=>`${a}/api/health`),c=Date.now();for(;Date.now()-c<3e5;){if(await new Promise(a=>setTimeout(a,2e3)),await Promise.any(b.map(async a=>{if((await fetch(a,{mode:"cors",cache:"no-store"})).ok)return!0;throw Error("not ready")})).catch(()=>!1))return R(!0),Z(!1),_(""),!0;if((Date.now()-c)%1e4<2e3)try{let a=await fetch("/api/tunnel/status");if(a.ok){let b=await a.json();if(!b.tunnel?.enabled)return ab({type:"error",message:"Tunnel process stopped unexpectedly."}),Z(!1),_(""),!1}}catch{}}return ab({type:"error",message:"Tunnel created but not reachable. Please try again."}),Z(!1),_(""),!1},aZ=async()=>{ad(!1),Z(!0),ab(null),_("Creating tunnel...");let a=!0;(async()=>{for(;a;){try{let b=await fetch("/api/tunnel/status");if(b.ok){let c=await b.json();c.download?.downloading?_(`Downloading cloudflared... ${c.download.progress}%`):a&&_("Creating tunnel...")}}catch{}await new Promise(a=>setTimeout(a,1e3))}})();try{let b=await fetch("/api/tunnel/enable",{method:"POST"});a=!1;let c=await b.json();if(!b.ok)return void ab({type:"error",message:c.error||"Failed to enable tunnel"});let d=c.tunnelUrl;if(!d)return void ab({type:"error",message:"No tunnel URL returned"});V(d),X(c.publicUrl||""),await aY(c.publicUrl,d)}catch(a){ab({type:"error",message:a.message})}finally{a=!1,Z(!1),_("")}},a$=async()=>{Z(!0),ab(null);try{let a=await fetch("/api/tunnel/disable",{method:"POST"}),b=await a.json();a.ok?(R(!1),V(""),af(!1),ab({type:"success",message:"Tunnel disabled"})):ab({type:"error",message:b.error||"Failed to disable tunnel"})}catch(a){ab({type:"error",message:a.message})}finally{Z(!1)}},a_=async()=>{ax(null);try{let a=await fetch("/api/tunnel/tailscale-check");if(a.ok){let b=await a.json();return ax(b.installed),b}}catch{}return ax(!1),{installed:!1}},a0=async()=>{az(!0),ar(null),aB([]);try{let a=await fetch("/api/tunnel/tailscale-install",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sudoPassword:aC})});aD("");let b=a.body.getReader(),c=new TextDecoder,d="";for(;;){let{done:a,value:e}=await b.read();if(a)break;let f=(d+=c.decode(e,{stream:!0})).split("\n\n");for(let a of(d=f.pop()||"",f)){let b=a.split("\n"),c="progress",d=null;for(let a of b)if(a.startsWith("event: ")&&(c=a.slice(7).trim()),a.startsWith("data: "))try{d=JSON.parse(a.slice(6))}catch{}if(d)if("progress"===c)aB(a=>[...a.slice(-50),d.message]);else if("done"===c){ax(!0),az(!1),aH(!1),a4();return}else"error"===c&&ar({type:"error",message:d.error||"Install failed"})}}}catch(a){ar({type:"error",message:a.message})}finally{az(!1)}},a1=async a=>{ap("Waiting for Tailscale ready...");let b=`${a}/api/health`,c=Date.now();for(;Date.now()-c<3e5;){await new Promise(a=>setTimeout(a,2e3));try{let a=await fetch(b,{mode:"no-cors",cache:"no-store"});if(a.ok||"opaque"===a.type)return!0}catch{}}return!1},a2=(a,b)=>{at(a),av(b)},a3=()=>{at(""),av("")},a4=async()=>{aH(!1),aF(!0),an(!0),ar(null),ap("Connecting..."),a3();try{let a=await fetch("/api/tunnel/tailscale-enable",{method:"POST"}),b=await a.json();if(a.ok&&b.success){al(b.tunnelUrl||"");let a=await a1(b.tunnelUrl);ah(!0),ar(a?null:{type:"warning",message:"Connected but not reachable yet."});return}if(b.needsLogin&&b.authUrl){a2(b.authUrl,"Open Login Page"),ap('Login required — click "Open Login Page" to continue');for(let a=0;a<40;a++){await new Promise(a=>setTimeout(a,3e3));try{let a=await fetch("/api/tunnel/tailscale-check");if(a.ok&&(await a.json()).loggedIn){a3(),ap("Starting funnel...");let a=await fetch("/api/tunnel/tailscale-enable",{method:"POST"}),b=await a.json();if(a.ok&&b.success){al(b.tunnelUrl||"");let a=await a1(b.tunnelUrl);ah(!0),ar(a?null:{type:"warning",message:"Connected but not reachable yet."})}else b.funnelNotEnabled&&b.enableUrl?await a5(b.enableUrl):ar({type:"error",message:b.error||"Failed to start funnel"});return}}catch{}}a3(),ar({type:"error",message:"Login timed out. Please try again."});return}if(b.funnelNotEnabled&&b.enableUrl)return void await a5(b.enableUrl);ar({type:"error",message:b.error||"Failed to connect"})}catch(a){ar({type:"error",message:a.message})}finally{an(!1),aF(!1),ap(""),a3()}},a5=async a=>{a2(a,"Open Funnel Settings"),ap('Click "Open Funnel Settings" to enable Funnel...');for(let a=0;a<40;a++){await new Promise(a=>setTimeout(a,3e3));try{let a=await fetch("/api/tunnel/tailscale-enable",{method:"POST"}),b=await a.json();if(a.ok&&b.success){a3(),al(b.tunnelUrl||"");let a=await a1(b.tunnelUrl);ah(!0),ar(a?null:{type:"warning",message:"Connected but not reachable yet."});return}if(b.funnelNotEnabled)continue;if(b.error){a3(),ar({type:"error",message:b.error});return}}catch{}}a3(),ar({type:"error",message:"Timed out waiting for Funnel to be enabled."})},a6=async()=>{an(!0),ar(null);try{let a=await fetch("/api/tunnel/tailscale-disable",{method:"POST"}),b=await a.json();a.ok?(ah(!1),al(""),aJ(!1),ar({type:"success",message:"Tailscale disabled"})):ar({type:"error",message:b.error||"Failed to disable Tailscale"})}catch(a){ar({type:"error",message:a.message})}finally{an(!1)}},a7=async()=>{ar(null),aB([]);let a=await a_();a?.installed&&a?.hasCachedPassword?a4():aH(!0)},a8=async a=>{if(a.preventDefault(),s.trim()&&!y){z("create"),B(null);try{let a=await fetch("/api/keys",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:s})}),b=await a.json();if(!a.ok)throw Error(b.error||`Failed to create key (${a.status})`);v(b.key),b.id&&b.key&&F(a=>({...a,[b.id]:b.key})),await aX(),t(""),r(!1),B({type:"success",message:"API key created"})}catch(a){B({type:"error",message:a.message})}finally{z(null)}}},a9=async(a,b)=>{if(!y){z(`toggle:${a}`),B(null);try{let d=await fetch(`/api/keys/${a}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({isActive:b})});if(!d.ok)throw Error(`Failed to update key (${d.status})`);c(c=>c.map(c=>c.id===a?{...c,isActive:b}:c)),B({type:"success",message:"API key updated"})}catch(a){B({type:"error",message:a.message})}finally{z(null)}}},ba=async(a,b,d)=>{if(y)return;let e=""===d?0:Math.max(0,Number(d)||0);z(`budget:${a}`),B(null);try{let d=await fetch(`/api/keys/${a}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({[b]:e})});if(!d.ok)throw Error(`Failed to update budget (${d.status})`);c(c=>c.map(c=>c.id===a?{...c,[b]:e}:c)),B({type:"success",message:"Budget updated"})}catch(a){B({type:"error",message:a.message})}finally{z(null)}},bb=async a=>{if(E[a])return E[a];let b=await fetch(`/api/keys/${a}?reveal=1`,{cache:"no-store"}),c=await b.json().catch(()=>({}));if(!b.ok)throw Error(c.error||`Failed to reveal key (${b.status})`);let d=c.key?.key||c.key;if("string"!=typeof d||!d)throw Error("Key secret is not available");return F(b=>({...b,[a]:d})),d},bc=async a=>{if(C.has(a))return void D(b=>{let c=new Set(b);return c.delete(a),c});try{await bb(a),D(b=>{let c=new Set(b);return c.add(a),c}),B(null)}catch(a){B({type:"error",message:a.message})}},bd=async a=>{try{let b=await bb(a);aS(b,a),B(null)}catch(a){B({type:"error",message:a.message})}},[be,bf]=(0,e.useState)("/v1");return f?(0,d.jsxs)("div",{className:"flex flex-col gap-6 lg:gap-7",children:[(0,d.jsx)(j.Qv,{}),(0,d.jsx)(j.Qv,{})]}):(0,d.jsxs)("div",{className:"flex flex-col gap-6 lg:gap-7",children:[(0,d.jsxs)(j.Zp,{padding:"none",children:[(0,d.jsxs)("div",{className:"flex items-center gap-3 rounded-t-[13px] border-b border-border-subtle bg-linear-to-r from-primary/[0.07] via-primary/[0.025] to-transparent px-4 py-4 sm:px-5",children:[(0,d.jsx)("span",{className:"material-symbols-outlined flex size-11 shrink-0 items-center justify-center rounded-xl bg-primary/12 text-[22px] text-primary ring-1 ring-primary/15",children:"terminal"}),(0,d.jsxs)("div",{children:[(0,d.jsx)("h2",{className:"text-lg font-semibold leading-tight",children:"API Endpoint"}),(0,d.jsx)("p",{className:"mt-0.5 text-xs text-text-muted",children:"Choose how local and remote clients connect to Zevai Router."})]})]}),(0,d.jsxs)("div",{className:"p-4 sm:p-5",children:[(0,d.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,d.jsx)(n,{label:"Local",url:be,copyId:"local_url",copied:aR,onCopy:aS}),(0,d.jsxs)("div",{className:"grid min-w-0 grid-cols-[minmax(0,1fr)_auto_auto] items-center gap-2.5 rounded-xl border border-border-subtle bg-bg/55 p-3 transition-colors hover:border-primary/20 sm:flex",children:[(0,d.jsx)("span",{className:`col-span-full inline-flex min-h-8 w-full shrink-0 items-center justify-center rounded-lg px-2.5 text-[11px] font-semibold uppercase tracking-[0.08em] sm:w-[96px] ${Q?"bg-primary/10 text-primary":"bg-surface-2 text-text-muted"}`,children:"Tunnel"}),Q&&!Y&&S?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(j.pd,{"aria-label":"Cloudflare Tunnel endpoint URL",value:`${W||U}/v1`,readOnly:!0,className:"w-full min-w-0 font-mono text-sm sm:flex-1"}),(0,d.jsx)("button",{onClick:()=>aS(`${W||U}/v1`,"tunnel_url"),className:"flex size-11 shrink-0 items-center justify-center rounded-xl text-text-muted transition-colors hover:bg-black/5 hover:text-primary dark:hover:bg-white/5 sm:size-9 sm:rounded-lg",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"tunnel_url"===aR?"check":"content_copy"})}),(0,d.jsx)("button",{onClick:()=>af(!0),className:"flex size-11 shrink-0 items-center justify-center rounded-xl text-red-500 transition-colors hover:bg-red-500/10 sm:size-9 sm:rounded-lg",title:"Disable Tunnel",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"power_settings_new"})})]}):!Q||Y||S?Y?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"flex-1 flex items-center gap-2 px-3 py-1.5 rounded border border-border bg-input text-sm text-text-muted",children:[(0,d.jsx)("span",{className:"material-symbols-outlined animate-spin text-sm",children:"progress_activity"}),$||"Creating tunnel..."]}),(0,d.jsx)("button",{onClick:()=>{Z(!1),_("")},className:"flex size-11 shrink-0 items-center justify-center rounded-xl text-red-500 transition-colors hover:bg-red-500/10 sm:size-9 sm:rounded-lg",title:"Stop",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"power_settings_new"})})]}):aa?.type==="error"?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"flex-1 flex items-center gap-2 px-3 py-1.5 rounded border border-red-300 dark:border-red-800 bg-red-500/5 text-sm text-red-600 dark:text-red-400",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-sm",children:"error"}),aa.message]}),(0,d.jsx)(j.$n,{size:"sm",icon:"cloud_upload",className:"min-h-11 sm:min-h-8",onClick:()=>ad(!0),children:"Enable"})]}):O?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"flex-1 flex items-center gap-2 px-3 py-1.5 rounded border border-border bg-input text-sm text-text-muted",children:[(0,d.jsx)("span",{className:"material-symbols-outlined animate-spin text-sm",children:"progress_activity"}),"Checking..."]}),(0,d.jsx)("button",{onClick:()=>P(!1),className:"flex size-11 shrink-0 items-center justify-center rounded-xl text-red-500 transition-colors hover:bg-red-500/10 sm:size-9 sm:rounded-lg",title:"Stop",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"power_settings_new"})})]}):(0,d.jsx)(j.$n,{size:"sm",icon:"cloud_upload",className:"min-h-11 sm:min-h-8",onClick:()=>{aT?ab({type:"error",message:`Security required: ${aU}`}):G?ad(!0):ab({type:"error",message:'Security required: Enable "Require API key" before activating the tunnel.'})},children:"Enable"}):(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"flex-1 flex items-center gap-2 px-3 py-1.5 rounded border border-amber-300 dark:border-amber-800 bg-amber-500/5 text-sm text-amber-600 dark:text-amber-400",children:[(0,d.jsx)("span",{className:"material-symbols-outlined animate-spin text-sm",children:"progress_activity"}),aL?"Tunnel reconnecting...":"Tunnel checking..."]}),(0,d.jsx)("button",{onClick:()=>af(!0),className:"flex size-11 shrink-0 items-center justify-center rounded-xl text-red-500 transition-colors hover:bg-red-500/10 sm:size-9 sm:rounded-lg",title:"Disable Tunnel",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"power_settings_new"})})]})]}),(0,d.jsxs)("div",{className:"grid min-w-0 grid-cols-[minmax(0,1fr)_auto_auto] items-center gap-2.5 rounded-xl border border-border-subtle bg-bg/55 p-3 transition-colors hover:border-primary/20 sm:flex",children:[(0,d.jsx)("span",{className:`col-span-full inline-flex min-h-8 w-full shrink-0 items-center justify-center rounded-lg px-2.5 text-[11px] font-semibold uppercase tracking-[0.08em] sm:w-[96px] ${ag?"bg-primary/10 text-primary":"bg-surface-2 text-text-muted"}`,children:"Tailscale"}),ag&&!am&&ai?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(j.pd,{"aria-label":"Tailscale endpoint URL",value:`${ak}/v1`,readOnly:!0,className:"w-full min-w-0 font-mono text-sm sm:flex-1"}),(0,d.jsx)("button",{onClick:()=>aS(`${ak}/v1`,"ts_url"),className:"flex size-11 shrink-0 items-center justify-center rounded-xl text-text-muted transition-colors hover:bg-black/5 hover:text-primary dark:hover:bg-white/5 sm:size-9 sm:rounded-lg",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"ts_url"===aR?"check":"content_copy"})}),(0,d.jsx)("button",{onClick:()=>aJ(!0),className:"flex size-11 shrink-0 items-center justify-center rounded-xl text-red-500 transition-colors hover:bg-red-500/10 sm:size-9 sm:rounded-lg",title:"Disable Tailscale",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"power_settings_new"})})]}):!ag||am||ai?am||aE?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"flex-1 flex items-center gap-2 px-3 py-1.5 rounded border border-border bg-input text-sm text-text-muted",children:[(0,d.jsx)("span",{className:"material-symbols-outlined animate-spin text-sm",children:"progress_activity"}),ao||"Connecting..."]}),as&&(0,d.jsx)(j.$n,{size:"sm",icon:"open_in_new",onClick:()=>window.open(as,"tailscale_auth","width=600,height=700,noopener,noreferrer"),children:au||"Open"}),(0,d.jsx)("button",{onClick:()=>{an(!1),aF(!1),ap(""),a3()},className:"flex size-11 shrink-0 items-center justify-center rounded-xl text-red-500 transition-colors hover:bg-red-500/10 sm:size-9 sm:rounded-lg",title:"Stop",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"power_settings_new"})})]}):aq?.type==="error"?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"flex-1 flex items-center gap-2 px-3 py-1.5 rounded border border-red-300 dark:border-red-800 bg-red-500/5 text-sm text-red-600 dark:text-red-400",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-sm",children:"error"}),aq.message]}),(0,d.jsx)(j.$n,{size:"sm",icon:"vpn_lock",className:"min-h-11 sm:min-h-8",onClick:a7,children:"Enable"})]}):(0,d.jsx)(j.$n,{size:"sm",icon:"vpn_lock",onClick:()=>{aT?ar({type:"error",message:`Security required: ${aU}`}):a7()},className:"min-h-11 sm:min-h-8",children:"Enable"}):(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"flex-1 flex items-center gap-2 px-3 py-1.5 rounded border border-amber-300 dark:border-amber-800 bg-amber-500/5 text-sm text-amber-600 dark:text-amber-400",children:[(0,d.jsx)("span",{className:"material-symbols-outlined animate-spin text-sm",children:"progress_activity"}),aN?"Tailscale reconnecting...":"Tailscale checking..."]}),(0,d.jsx)("button",{onClick:()=>aJ(!0),className:"flex size-11 shrink-0 items-center justify-center rounded-xl text-red-500 transition-colors hover:bg-red-500/10 sm:size-9 sm:rounded-lg",title:"Disable Tailscale",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"power_settings_new"})})]})]})]}),aT&&!Q&&!ag&&(0,d.jsx)("div",{className:"mt-4",children:(0,d.jsx)(q,{message:aU,action:{label:"Open settings",href:"/dashboard/profile"}})}),(Q||ag)&&(0,d.jsxs)("div",{className:"mt-4 flex flex-col gap-2",children:[!G&&(0,d.jsx)(q,{message:"Require API key is disabled — your endpoint is publicly accessible without authentication.",action:{label:"Enable",href:"#require-api-key"}}),(!I||!K)&&(0,d.jsx)(q,{message:I?"Dashboard uses the default password — change it in Profile settings.":"Require login is disabled — anyone can access your dashboard via tunnel.",action:{label:I?"Change password":"Enable",href:"/dashboard/profile"}})]}),(Q||ag)&&(0,d.jsxs)("div",{className:"mt-4 pt-4 border-t border-border flex items-center gap-3",children:[(0,d.jsx)(j.lM,{touchTarget:!0,label:"Allow dashboard access via tunnel",checked:M,onChange:()=>aV(!M)}),(0,d.jsx)(p,{text:"When enabled, the dashboard can be accessed through your tunnel or Tailscale URL (login still required). When disabled, dashboard access via tunnel/Tailscale is completely blocked."})]})]})]}),(0,d.jsx)(j.Zp,{id:"rtk",padding:"none",className:"relative overflow-hidden border-primary/20 bg-linear-to-br from-primary/[0.08] via-surface to-surface",children:(0,d.jsxs)("div",{className:"relative flex flex-col gap-4 p-5 sm:flex-row sm:items-center sm:justify-between",children:[(0,d.jsxs)("div",{className:"flex min-w-0 items-center gap-3.5",children:[(0,d.jsx)("span",{className:"material-symbols-outlined flex size-11 shrink-0 items-center justify-center rounded-xl bg-primary text-[22px] text-white shadow-[0_10px_24px_-14px_rgba(229,106,74,0.9)]",children:"bolt"}),(0,d.jsxs)("div",{className:"min-w-0",children:[(0,d.jsx)("h2",{className:"text-lg font-semibold leading-tight",children:"Token Saver"}),(0,d.jsx)("p",{className:"mt-1 text-sm text-text-muted",children:"Tune RTK, Caveman, Ponytail, Headroom, and PXPIPE in one workspace."})]})]}),(0,d.jsxs)(i(),{href:"/dashboard/token-saver",className:"inline-flex min-h-11 w-full shrink-0 items-center justify-center gap-1.5 rounded-xl border border-primary/25 bg-surface/80 px-3.5 py-2 text-sm font-semibold text-text-main shadow-sm transition-[border-color,color,transform] hover:translate-x-0.5 hover:border-primary/50 hover:text-primary sm:min-h-0 sm:w-auto sm:rounded-lg",children:["Open workspace",(0,d.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"arrow_forward"})]})]})}),(0,d.jsxs)(j.Zp,{id:"require-api-key",children:[(0,d.jsxs)("div",{className:"mb-5 flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between",children:[(0,d.jsxs)("div",{className:"flex min-w-0 items-center gap-3",children:[(0,d.jsx)("span",{className:"material-symbols-outlined flex size-11 shrink-0 items-center justify-center rounded-xl bg-primary/10 text-[21px] text-primary ring-1 ring-primary/15",children:"vpn_key"}),(0,d.jsxs)("div",{className:"min-w-0",children:[(0,d.jsxs)("div",{className:"flex flex-wrap items-center gap-2",children:[(0,d.jsx)("h2",{className:"text-lg font-semibold leading-tight",children:"API Keys"}),(0,d.jsxs)("span",{className:"rounded-full bg-surface-2 px-2 py-0.5 text-[10px] font-semibold text-text-muted ring-1 ring-border-subtle",children:[b.length," ",1===b.length?"key":"keys"]})]}),(0,d.jsx)("p",{className:"mt-0.5 text-xs text-text-muted",children:"Control authentication and spending per client."})]})]}),(0,d.jsx)(j.$n,{icon:"add",onClick:()=>r(!0),className:"w-full sm:w-auto",children:"Create Key"})]}),A&&(0,d.jsx)("p",{role:"status",className:`mb-4 text-sm ${"error"===A.type?"text-red-500":"text-green-500"}`,children:A.message}),(0,d.jsxs)("div",{className:"mb-4 flex flex-col gap-3 rounded-xl border border-primary/15 bg-primary/[0.045] p-4 sm:flex-row sm:items-center sm:justify-between",children:[(0,d.jsxs)("div",{className:"flex items-start gap-3",children:[(0,d.jsx)("span",{className:"material-symbols-outlined mt-0.5 flex size-8 shrink-0 items-center justify-center rounded-lg bg-surface text-[17px] text-primary ring-1 ring-border-subtle",children:"shield_lock"}),(0,d.jsxs)("div",{children:[(0,d.jsx)("p",{className:"font-medium",children:"Require API key"}),(0,d.jsx)("p",{className:"mt-0.5 text-sm text-text-muted",children:"Reject requests that do not include a valid client key."})]})]}),(0,d.jsx)("div",{className:"shrink-0 self-end sm:self-auto",children:(0,d.jsx)(j.lM,{touchTarget:!0,label:"Require API key",checked:G,onChange:()=>aW(!G)})})]}),aP&&!G&&(0,d.jsx)("div",{className:"mb-4 -mt-2",children:(0,d.jsx)(q,{message:"Endpoint is exposed without an API key."})}),0===b.length?(0,d.jsxs)("div",{className:"rounded-xl border border-dashed border-border bg-surface-2/25 py-12 text-center",children:[(0,d.jsx)("div",{className:"inline-flex items-center justify-center w-16 h-16 rounded-full bg-primary/10 text-primary mb-4",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[32px]",children:"vpn_key"})}),(0,d.jsx)("p",{className:"text-text-main font-medium mb-1",children:"No API keys yet"}),(0,d.jsx)("p",{className:"text-sm text-text-muted mb-4",children:"Create your first API key to get started"}),(0,d.jsx)(j.$n,{icon:"add",onClick:()=>r(!0),children:"Create Key"})]}):(0,d.jsx)("div",{className:"grid grid-cols-1 gap-3 lg:grid-cols-2",children:b.map(a=>{var b,e;return(0,d.jsxs)("div",{className:`group flex min-w-0 flex-wrap items-center justify-between gap-3 rounded-xl border border-border-subtle bg-surface-2/25 p-4 transition-[border-color,box-shadow,opacity] hover:border-primary/20 hover:shadow-[0_14px_28px_-26px_rgba(15,23,42,0.65)] ${!1===a.isActive?"opacity-60":""}`,children:[(0,d.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,d.jsx)("p",{className:"text-sm font-medium",children:a.name}),(0,d.jsxs)("div",{className:"flex items-center gap-2 mt-1 min-w-0",children:[(0,d.jsx)("code",{className:"text-xs text-text-muted font-mono truncate max-w-[min(100%,28rem)]",children:(b=a,C.has(b.id)&&E[b.id]?E[b.id]:b.maskedKey||((e=b.key)?e.length>8?e.slice(0,8)+"...":e:"")||"••••••••")}),(0,d.jsx)("button",{type:"button",onClick:()=>bc(a.id),className:"flex size-11 shrink-0 items-center justify-center rounded-xl text-text-muted opacity-100 transition-all hover:bg-black/5 hover:text-primary dark:hover:bg-white/5 sm:size-7 sm:rounded-lg sm:opacity-0 sm:group-hover:opacity-100",title:C.has(a.id)?"Hide key":"Show key","aria-label":C.has(a.id)?"Hide API key":"Show API key",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:C.has(a.id)?"visibility_off":"visibility"})}),(0,d.jsx)("button",{type:"button",onClick:()=>bd(a.id),className:"flex size-11 shrink-0 items-center justify-center rounded-xl text-text-muted opacity-100 transition-all hover:bg-black/5 hover:text-primary dark:hover:bg-white/5 sm:size-7 sm:rounded-lg sm:opacity-0 sm:group-hover:opacity-100",title:"Copy key","aria-label":"Copy API key",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:aR===a.id?"check":"content_copy"})})]}),(0,d.jsxs)("p",{className:"text-xs text-text-muted mt-1",children:["Created ",new Date(a.createdAt).toLocaleDateString()]}),!1===a.isActive&&(0,d.jsx)("p",{className:"text-xs text-orange-500 mt-1",children:"Paused"}),(0,d.jsxs)("div",{className:"mt-3 flex flex-wrap items-center gap-3",children:[(0,d.jsxs)("label",{className:"flex items-center gap-1 text-[11px] text-text-muted",children:["Daily $",(0,d.jsx)("input",{type:"number",min:"0",step:"0.01",disabled:y===`budget:${a.id}`,defaultValue:a.budgetDaily||0,onBlur:b=>ba(a.id,"budgetDaily",b.target.value),className:"w-16 rounded border border-border bg-surface px-1 py-0.5 text-[11px]",title:"Daily budget cap in USD (0 = unlimited)"})]}),(0,d.jsxs)("label",{className:"flex items-center gap-1 text-[11px] text-text-muted",children:["Monthly $",(0,d.jsx)("input",{type:"number",min:"0",step:"0.01",disabled:y===`budget:${a.id}`,defaultValue:a.budgetMonthly||0,onBlur:b=>ba(a.id,"budgetMonthly",b.target.value),className:"w-16 rounded border border-border bg-surface px-1 py-0.5 text-[11px]",title:"Monthly budget cap in USD (0 = unlimited)"})]})]})]}),(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsx)("div",{className:"flex size-11 items-center justify-center sm:size-auto",children:(0,d.jsx)(j.lM,{size:"sm",touchTarget:!0,disabled:y===`toggle:${a.id}`,checked:a.isActive??!0,onChange:b=>{a.isActive&&!b?x({title:"Pause API Key",message:`Pause API key "${a.name}"?
2
2
 
3
- This key will stop working immediately but can be resumed later.`,onConfirm:async()=>{x(null),a9(a.id,b)}}):a9(a.id,b)},title:a.isActive?"Pause key":"Resume key"})}),(0,d.jsx)("button",{disabled:y===`delete:${a.id}`,onClick:()=>{var b;return b=a.id,void(!y&&x({title:"Delete API Key",message:"Delete this API key?",onConfirm:async()=>{x(null),z(`delete:${b}`),B(null);try{let a=await fetch(`/api/keys/${b}`,{method:"DELETE"});if(!a.ok)throw Error(`Failed to delete key (${a.status})`);c(a=>a.filter(a=>a.id!==b)),D(a=>{let c=new Set(a);return c.delete(b),c}),F(a=>{if(!(b in a))return a;let c={...a};return delete c[b],c}),B({type:"success",message:"API key deleted"})}catch(a){B({type:"error",message:a.message})}finally{z(null)}}}))},className:"flex size-11 items-center justify-center rounded-xl text-red-500 opacity-100 transition-all hover:bg-red-500/10 sm:size-9 sm:rounded-lg sm:opacity-0 sm:group-hover:opacity-100","aria-label":`Delete ${a.name}`,children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"delete"})})]})]},a.id)})})]}),(0,d.jsx)(j.aF,{isOpen:h,title:"Create API Key",onClose:()=>{r(!1),t("")},children:(0,d.jsxs)("form",{className:"flex flex-col gap-4",onSubmit:a8,children:[(0,d.jsx)(j.pd,{label:"Key Name",value:s,onChange:a=>t(a.target.value),placeholder:"Production Key"}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(j.$n,{type:"submit",fullWidth:!0,disabled:!s.trim()||"create"===y,children:"create"===y?"Creating...":"Create"}),(0,d.jsx)(j.$n,{type:"button",onClick:()=>{r(!1),t("")},variant:"ghost",fullWidth:!0,children:"Cancel"})]})]})}),(0,d.jsx)(j.aF,{isOpen:!!u,title:"API Key Created",onClose:()=>v(null),children:(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,d.jsxs)("div",{className:"bg-yellow-50 dark:bg-yellow-900/20 border border-yellow-200 dark:border-yellow-800 rounded-lg p-4",children:[(0,d.jsx)("p",{className:"text-sm text-yellow-800 dark:text-yellow-200 mb-2 font-medium",children:"Save this key now!"}),(0,d.jsx)("p",{className:"text-sm text-yellow-700 dark:text-yellow-300",children:"This is the only time you will see this key. Store it securely."})]}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(j.pd,{value:u||"",readOnly:!0,className:"flex-1 font-mono text-sm"}),(0,d.jsx)(j.$n,{variant:"secondary",icon:"created_key"===aR?"check":"content_copy",onClick:()=>aS(u,"created_key"),children:"created_key"===aR?"Copied!":"Copy"})]}),(0,d.jsx)(j.$n,{onClick:()=>v(null),fullWidth:!0,children:"Done"})]})}),(0,d.jsx)(j.aF,{isOpen:ac,title:"Enable Tunnel",onClose:()=>ad(!1),children:(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,d.jsx)("div",{className:"bg-surface-2 border border-border-subtle rounded-lg p-4",children:(0,d.jsxs)("div",{className:"flex items-start gap-3",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-primary",children:"cloud_upload"}),(0,d.jsxs)("div",{children:[(0,d.jsx)("p",{className:"text-sm text-text-main font-medium mb-1",children:"Cloudflare Tunnel"}),(0,d.jsx)("p",{className:"text-sm text-text-muted",children:"Expose your local ZevaiRouter to the internet. No port forwarding, no static IP needed. Share endpoint URL with your team or use it in Cursor, Cline, and other AI tools from anywhere."})]})]})}),(0,d.jsx)("div",{className:"grid grid-cols-2 gap-3",children:l.map(a=>(0,d.jsxs)("div",{className:"flex flex-col items-center text-center p-3 rounded-lg bg-sidebar/50",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-xl text-primary mb-1",children:a.icon}),(0,d.jsx)("p",{className:"text-xs font-semibold",children:a.title}),(0,d.jsx)("p",{className:"text-xs text-text-muted",children:a.desc})]},a.title))}),(0,d.jsx)("p",{className:"text-xs text-text-muted",children:"Requires outbound port 7844 (TCP/UDP). Connection may take 10-30s."}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(j.$n,{onClick:aZ,fullWidth:!0,children:"Start Tunnel"}),(0,d.jsx)(j.$n,{onClick:()=>ad(!1),variant:"ghost",fullWidth:!0,children:"Cancel"})]})]})}),(0,d.jsx)(j.aF,{isOpen:ae,title:"Disable Tunnel",onClose:()=>!Y&&af(!1),children:(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,d.jsx)("p",{className:"text-sm text-text-muted",children:"The Cloudflare tunnel will be disconnected. Remote access via tunnel URL will stop working."}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(j.$n,{onClick:a$,fullWidth:!0,disabled:Y,variant:"danger",children:Y?"Disabling...":"Disable"}),(0,d.jsx)(j.$n,{onClick:()=>af(!1),variant:"ghost",fullWidth:!0,disabled:Y,children:"Cancel"})]})]})}),(0,d.jsx)(j.aF,{isOpen:aG,title:"Tailscale Funnel",onClose:()=>{ay||(aH(!1),aD(""),ar(null))},children:(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[null===aw&&(0,d.jsxs)("p",{className:"text-sm text-text-muted flex items-center gap-2",children:[(0,d.jsx)("span",{className:"material-symbols-outlined animate-spin text-sm",children:"progress_activity"}),"Checking..."]}),!1===aw&&!ay&&(0,d.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,d.jsx)("p",{className:"text-sm text-text-muted",children:"Tailscale is not installed. Install it to enable Funnel."}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(j.$n,{onClick:a0,fullWidth:!0,children:"Install Tailscale"}),(0,d.jsx)(j.$n,{onClick:()=>aH(!1),variant:"ghost",fullWidth:!0,children:"Cancel"})]})]}),ay&&(0,d.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,d.jsxs)("div",{className:"flex items-center gap-2 text-sm text-text-muted",children:[(0,d.jsx)("span",{className:"material-symbols-outlined animate-spin text-sm",children:"progress_activity"}),"Installing Tailscale..."]}),aA.length>0&&(0,d.jsx)("div",{ref:aK,className:"bg-black/5 dark:bg-white/5 rounded p-2 max-h-40 overflow-y-auto font-mono text-xs text-text-muted",children:aA.map((a,b)=>(0,d.jsx)("div",{children:a},b))})]}),!0===aw&&!ay&&(0,d.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,d.jsxs)("div",{className:"flex items-center gap-2 text-sm text-green-600 dark:text-green-400",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"check_circle"}),"Tailscale installed"]}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(j.$n,{onClick:()=>a4(),fullWidth:!0,children:"Connect"}),(0,d.jsx)(j.$n,{onClick:()=>aH(!1),variant:"ghost",fullWidth:!0,children:"Cancel"})]})]}),aq&&(0,d.jsx)(o,{status:aq})]})}),(0,d.jsx)(j.aF,{isOpen:aI,title:"Disable Tailscale",onClose:()=>!am&&aJ(!1),children:(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,d.jsx)("p",{className:"text-sm text-text-muted",children:"Tailscale Funnel will be stopped. Remote access via Tailscale URL will stop working."}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(j.$n,{onClick:a6,fullWidth:!0,disabled:am,variant:"danger",children:am?"Disabling...":"Disable"}),(0,d.jsx)(j.$n,{onClick:()=>aJ(!1),variant:"ghost",fullWidth:!0,disabled:am,children:"Cancel"})]})]})}),(0,d.jsx)(j.uo,{isOpen:!!w,onClose:()=>x(null),onConfirm:w?.onConfirm,title:w?.title||"Confirm",message:w?.message,variant:"danger"})]})}function n({label:a,url:b,copyId:c,copied:e,onCopy:f,badge:g,actions:h}){return(0,d.jsxs)("div",{className:"grid min-w-0 grid-cols-[minmax(0,1fr)_auto_auto] items-center gap-2.5 rounded-xl border border-border-subtle bg-bg/55 p-3 transition-colors hover:border-primary/20 sm:flex",children:[(0,d.jsx)("span",{className:`col-span-full inline-flex min-h-8 w-full shrink-0 items-center justify-center rounded-lg px-2.5 text-[11px] font-semibold uppercase tracking-[0.08em] sm:w-[96px] ${"CF"===g||"TS"===g?"bg-primary/10 text-primary":"bg-surface-2 text-text-muted"}`,children:a}),(0,d.jsx)(j.pd,{"aria-label":`${a} endpoint URL`,value:b,readOnly:!0,className:"w-full min-w-0 font-mono text-sm sm:flex-1"}),(0,d.jsx)("button",{onClick:()=>f(b,c),className:"flex size-11 shrink-0 items-center justify-center rounded-xl text-text-muted transition-colors hover:bg-black/5 hover:text-primary dark:hover:bg-white/5 sm:size-9 sm:rounded-lg","aria-label":`Copy ${a} endpoint URL`,children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:e===c?"check":"content_copy"})}),h]})}function o({status:a,className:b=""}){return(0,d.jsx)("div",{className:`p-2 rounded text-sm ${b} ${"success"===a.type?"bg-green-500/10 text-green-600 dark:text-green-400":"warning"===a.type?"bg-yellow-500/10 text-yellow-600 dark:text-yellow-400":"info"===a.type?"bg-blue-500/10 text-blue-600 dark:text-blue-400":"bg-red-500/10 text-red-600 dark:text-red-400"}`,children:a.message.split(/(https?:\/\/[^\s]+)/g).map((a,b)=>/^https?:\/\//.test(a)?(0,d.jsx)("a",{href:a,target:"_blank",rel:"noreferrer",className:"underline font-medium",children:a},b):a)})}function p({text:a}){return(0,d.jsxs)("span",{className:"relative group inline-flex items-center",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px] text-text-muted cursor-help",children:"help"}),(0,d.jsx)("span",{className:"pointer-events-none absolute right-0 top-full z-50 mt-2 w-[min(16rem,calc(100vw-2rem))] rounded bg-gray-900 px-2.5 py-1.5 text-xs text-white opacity-0 shadow-lg transition-opacity group-hover:opacity-100 dark:bg-gray-800",children:a})]})}function q({message:a,action:b}){return(0,d.jsxs)("div",{className:"flex items-center gap-2 px-3 py-2 rounded-lg bg-amber-500/10 border border-amber-500/20 text-amber-700 dark:text-amber-400",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[16px] shrink-0 mt-0.5",children:"warning"}),(0,d.jsx)("p",{className:"text-xs flex-1",children:a}),b&&(0,d.jsx)("a",{href:b.href,className:"inline-flex min-h-11 shrink-0 items-center text-xs font-medium underline hover:opacity-80 sm:min-h-0",onClick:b.href.startsWith("#")?a=>{a.preventDefault(),document.getElementById(b.href.slice(1))?.scrollIntoView({behavior:"smooth"})}:void 0,children:b.label})]})}m.propTypes={machineId:g().string.isRequired}},51747:(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/endpoint/EndpointPageClient.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/endpoint/EndpointPageClient.js","default")},71885:(a,b,c)=>{Promise.resolve().then(c.bind(c,51747))},87250:(a,b,c)=>{"use strict";c.d(b,{D:()=>e});var d=c(54603);async function e(){return await (0,d.Xj)()}},95853:(a,b,c)=>{Promise.resolve().then(c.bind(c,43173))}};
3
+ This key will stop working immediately but can be resumed later.`,onConfirm:async()=>{x(null),a9(a.id,b)}}):a9(a.id,b)},title:a.isActive?"Pause key":"Resume key"})}),(0,d.jsx)("button",{disabled:y===`delete:${a.id}`,onClick:()=>{var b;return b=a.id,void(!y&&x({title:"Delete API Key",message:"Delete this API key?",onConfirm:async()=>{x(null),z(`delete:${b}`),B(null);try{let a=await fetch(`/api/keys/${b}`,{method:"DELETE"});if(!a.ok)throw Error(`Failed to delete key (${a.status})`);c(a=>a.filter(a=>a.id!==b)),D(a=>{let c=new Set(a);return c.delete(b),c}),F(a=>{if(!(b in a))return a;let c={...a};return delete c[b],c}),B({type:"success",message:"API key deleted"})}catch(a){B({type:"error",message:a.message})}finally{z(null)}}}))},className:"flex size-11 items-center justify-center rounded-xl text-red-500 opacity-100 transition-all hover:bg-red-500/10 sm:size-9 sm:rounded-lg sm:opacity-0 sm:group-hover:opacity-100","aria-label":`Delete ${a.name}`,children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"delete"})})]})]},a.id)})})]}),(0,d.jsx)(j.aF,{isOpen:h,title:"Create API Key",onClose:()=>{r(!1),t("")},children:(0,d.jsxs)("form",{className:"flex flex-col gap-4",onSubmit:a8,children:[(0,d.jsx)(j.pd,{label:"Key Name",value:s,onChange:a=>t(a.target.value),placeholder:"Production Key"}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(j.$n,{type:"submit",fullWidth:!0,disabled:!s.trim()||"create"===y,children:"create"===y?"Creating...":"Create"}),(0,d.jsx)(j.$n,{type:"button",onClick:()=>{r(!1),t("")},variant:"ghost",fullWidth:!0,children:"Cancel"})]})]})}),(0,d.jsx)(j.aF,{isOpen:!!u,title:"API Key Created",onClose:()=>v(null),children:(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,d.jsxs)("div",{className:"bg-yellow-50 dark:bg-yellow-900/20 border border-yellow-200 dark:border-yellow-800 rounded-lg p-4",children:[(0,d.jsx)("p",{className:"text-sm text-yellow-800 dark:text-yellow-200 mb-2 font-medium",children:"Save this key now!"}),(0,d.jsx)("p",{className:"text-sm text-yellow-700 dark:text-yellow-300",children:"This is the only time you will see this key. Store it securely."})]}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(j.pd,{value:u||"",readOnly:!0,className:"flex-1 font-mono text-sm"}),(0,d.jsx)(j.$n,{variant:"secondary",icon:"created_key"===aR?"check":"content_copy",onClick:()=>aS(u,"created_key"),children:"created_key"===aR?"Copied!":"Copy"})]}),(0,d.jsx)(j.$n,{onClick:()=>v(null),fullWidth:!0,children:"Done"})]})}),(0,d.jsx)(j.aF,{isOpen:ac,title:"Enable Tunnel",onClose:()=>ad(!1),children:(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,d.jsx)("div",{className:"bg-surface-2 border border-border-subtle rounded-lg p-4",children:(0,d.jsxs)("div",{className:"flex items-start gap-3",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-primary",children:"cloud_upload"}),(0,d.jsxs)("div",{children:[(0,d.jsx)("p",{className:"text-sm text-text-main font-medium mb-1",children:"Cloudflare Tunnel"}),(0,d.jsx)("p",{className:"text-sm text-text-muted",children:"Expose your local ZevaiRouter to the internet. No port forwarding, no static IP needed. Share endpoint URL with your team or use it in Cursor, Cline, and other AI tools from anywhere."})]})]})}),(0,d.jsx)("div",{className:"grid grid-cols-2 gap-3",children:l.map(a=>(0,d.jsxs)("div",{className:"flex flex-col items-center text-center p-3 rounded-lg bg-sidebar/50",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-xl text-primary mb-1",children:a.icon}),(0,d.jsx)("p",{className:"text-xs font-semibold",children:a.title}),(0,d.jsx)("p",{className:"text-xs text-text-muted",children:a.desc})]},a.title))}),(0,d.jsx)("p",{className:"text-xs text-text-muted",children:"Requires outbound port 7844 (TCP/UDP). Connection may take 10-30s."}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(j.$n,{onClick:aZ,fullWidth:!0,children:"Start Tunnel"}),(0,d.jsx)(j.$n,{onClick:()=>ad(!1),variant:"ghost",fullWidth:!0,children:"Cancel"})]})]})}),(0,d.jsx)(j.aF,{isOpen:ae,title:"Disable Tunnel",onClose:()=>!Y&&af(!1),children:(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,d.jsx)("p",{className:"text-sm text-text-muted",children:"The Cloudflare tunnel will be disconnected. Remote access via tunnel URL will stop working."}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(j.$n,{onClick:a$,fullWidth:!0,disabled:Y,variant:"danger",children:Y?"Disabling...":"Disable"}),(0,d.jsx)(j.$n,{onClick:()=>af(!1),variant:"ghost",fullWidth:!0,disabled:Y,children:"Cancel"})]})]})}),(0,d.jsx)(j.aF,{isOpen:aG,title:"Tailscale Funnel",onClose:()=>{ay||(aH(!1),aD(""),ar(null))},children:(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[null===aw&&(0,d.jsxs)("p",{className:"text-sm text-text-muted flex items-center gap-2",children:[(0,d.jsx)("span",{className:"material-symbols-outlined animate-spin text-sm",children:"progress_activity"}),"Checking..."]}),!1===aw&&!ay&&(0,d.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,d.jsx)("p",{className:"text-sm text-text-muted",children:"Tailscale is not installed. Install it to enable Funnel."}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(j.$n,{onClick:a0,fullWidth:!0,children:"Install Tailscale"}),(0,d.jsx)(j.$n,{onClick:()=>aH(!1),variant:"ghost",fullWidth:!0,children:"Cancel"})]})]}),ay&&(0,d.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,d.jsxs)("div",{className:"flex items-center gap-2 text-sm text-text-muted",children:[(0,d.jsx)("span",{className:"material-symbols-outlined animate-spin text-sm",children:"progress_activity"}),"Installing Tailscale..."]}),aA.length>0&&(0,d.jsx)("div",{ref:aK,className:"bg-black/5 dark:bg-white/5 rounded p-2 max-h-40 overflow-y-auto font-mono text-xs text-text-muted",children:aA.map((a,b)=>(0,d.jsx)("div",{children:a},b))})]}),!0===aw&&!ay&&(0,d.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,d.jsxs)("div",{className:"flex items-center gap-2 text-sm text-green-600 dark:text-green-400",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"check_circle"}),"Tailscale installed"]}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(j.$n,{onClick:()=>a4(),fullWidth:!0,children:"Connect"}),(0,d.jsx)(j.$n,{onClick:()=>aH(!1),variant:"ghost",fullWidth:!0,children:"Cancel"})]})]}),aq&&(0,d.jsx)(o,{status:aq})]})}),(0,d.jsx)(j.aF,{isOpen:aI,title:"Disable Tailscale",onClose:()=>!am&&aJ(!1),children:(0,d.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,d.jsx)("p",{className:"text-sm text-text-muted",children:"Tailscale Funnel will be stopped. Remote access via Tailscale URL will stop working."}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(j.$n,{onClick:a6,fullWidth:!0,disabled:am,variant:"danger",children:am?"Disabling...":"Disable"}),(0,d.jsx)(j.$n,{onClick:()=>aJ(!1),variant:"ghost",fullWidth:!0,disabled:am,children:"Cancel"})]})]})}),(0,d.jsx)(j.uo,{isOpen:!!w,onClose:()=>x(null),onConfirm:w?.onConfirm,title:w?.title||"Confirm",message:w?.message,variant:"danger"})]})}function n({label:a,url:b,copyId:c,copied:e,onCopy:f,badge:g,actions:h}){return(0,d.jsxs)("div",{className:"grid min-w-0 grid-cols-[minmax(0,1fr)_auto_auto] items-center gap-2.5 rounded-xl border border-border-subtle bg-bg/55 p-3 transition-colors hover:border-primary/20 sm:flex",children:[(0,d.jsx)("span",{className:`col-span-full inline-flex min-h-8 w-full shrink-0 items-center justify-center rounded-lg px-2.5 text-[11px] font-semibold uppercase tracking-[0.08em] sm:w-[96px] ${"CF"===g||"TS"===g?"bg-primary/10 text-primary":"bg-surface-2 text-text-muted"}`,children:a}),(0,d.jsx)(j.pd,{"aria-label":`${a} endpoint URL`,value:b,readOnly:!0,className:"w-full min-w-0 font-mono text-sm sm:flex-1"}),(0,d.jsx)("button",{onClick:()=>f(b,c),className:"flex size-11 shrink-0 items-center justify-center rounded-xl text-text-muted transition-colors hover:bg-black/5 hover:text-primary dark:hover:bg-white/5 sm:size-9 sm:rounded-lg","aria-label":`Copy ${a} endpoint URL`,children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:e===c?"check":"content_copy"})}),h]})}function o({status:a,className:b=""}){return(0,d.jsx)("div",{className:`p-2 rounded text-sm ${b} ${"success"===a.type?"bg-green-500/10 text-green-600 dark:text-green-400":"warning"===a.type?"bg-yellow-500/10 text-yellow-600 dark:text-yellow-400":"info"===a.type?"bg-blue-500/10 text-blue-600 dark:text-blue-400":"bg-red-500/10 text-red-600 dark:text-red-400"}`,children:a.message.split(/(https?:\/\/[^\s]+)/g).map((a,b)=>/^https?:\/\//.test(a)?(0,d.jsx)("a",{href:a,target:"_blank",rel:"noreferrer",className:"underline font-medium",children:a},b):a)})}function p({text:a}){return(0,d.jsxs)("span",{className:"relative group inline-flex items-center",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[14px] text-text-muted cursor-help",children:"help"}),(0,d.jsx)("span",{className:"pointer-events-none absolute right-0 top-full z-50 mt-2 w-[min(16rem,calc(100vw-2rem))] rounded bg-gray-900 px-2.5 py-1.5 text-xs text-white opacity-0 shadow-lg transition-opacity group-hover:opacity-100 dark:bg-gray-800",children:a})]})}function q({message:a,action:b}){return(0,d.jsxs)("div",{className:"flex items-center gap-2 px-3 py-2 rounded-lg bg-amber-500/10 border border-amber-500/20 text-amber-700 dark:text-amber-400",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[16px] shrink-0 mt-0.5",children:"warning"}),(0,d.jsx)("p",{className:"text-xs flex-1",children:a}),b&&(0,d.jsx)("a",{href:b.href,className:"inline-flex min-h-11 shrink-0 items-center text-xs font-medium underline hover:opacity-80 sm:min-h-0",onClick:b.href.startsWith("#")?a=>{a.preventDefault(),document.getElementById(b.href.slice(1))?.scrollIntoView({behavior:"smooth"})}:void 0,children:b.label})]})}m.propTypes={machineId:g().string.isRequired}},51747:(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/endpoint/EndpointPageClient.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/endpoint/EndpointPageClient.js","default")},71885:(a,b,c)=>{Promise.resolve().then(c.bind(c,51747))},87250:(a,b,c)=>{"use strict";c.d(b,{D:()=>e});var d=c(54603);async function e(){return await (0,d.Xj)()}},95853:(a,b,c)=>{Promise.resolve().then(c.bind(c,43173))}};
@@ -1 +1 @@
1
- exports.id=8306,exports.ids=[8306],exports.modules={30869:(a,b,c)=>{"use strict";c.d(b,{UY:()=>h,X3:()=>i,eh:()=>f.eh,fg:()=>e.fg,h0:()=>g});var d=c(39006),e=c(75681),f=c(81329);d.version;let g={npmPackageName:"zevairouter",installCmd:"npm i -g zevairouter",installCmdLatest:"npm i -g zevairouter@latest --prefer-online",shutdownCountdownSec:3,exitDelayMs:500,statusPort:20129,statusPollIntervalMs:1e3,statusLogTailLines:8,installRetries:3,installRetryDelayMs:5e3,lingerAfterDoneMs:3e4,waitForExitMinMs:5e3,waitForExitMaxMs:2e4,waitForExitCheckMs:500,appPort:1997},h={maxLines:200,pollIntervalMs:1e3},i={openrouter:"https://openrouter.ai/api/v1/chat/completions",glm:"https://api.z.ai/api/anthropic/v1/messages","glm-cn":"https://open.bigmodel.cn/api/coding/paas/v4/chat/completions",kimi:"https://api.kimi.com/coding/v1/messages",minimax:"https://api.minimax.io/anthropic/v1/messages","minimax-cn":"https://api.minimaxi.com/anthropic/v1/messages",alicode:"https://coding.dashscope.aliyuncs.com/v1/chat/completions","alicode-intl":"https://coding-intl.dashscope.aliyuncs.com/v1/chat/completions","volcengine-ark":"https://ark.cn-beijing.volces.com/api/coding/v3/chat/completions",byteplus:"https://ark.ap-southeast.bytepluses.com/api/coding/v3/chat/completions",openai:"https://api.openai.com/v1/chat/completions","vercel-ai-gateway":"https://ai-gateway.vercel.sh/v1/chat/completions",anthropic:"https://api.anthropic.com/v1/messages",gemini:"https://generativelanguage.googleapis.com/v1beta/models",ollama:"https://ollama.com/api/chat","ollama-local":"http://localhost:11434/api/chat"}},38238:(a,b,c)=>{"use strict";c.d(b,{P:()=>h});var d=c(89718),e=c(30869),f=c(54603);async function g(){let a=null;try{let b=await (0,d.PX)(!0);a=b.find(a=>!1!==a.isActive)?.key||null}catch{}let b={"Content-Type":"application/json"};return a&&(b.Authorization=`Bearer ${a}`),b["x-zevai-cli-token"]=await (0,f.Xj)("zevai-cli-auth"),b}async function h(a,b,c=`http://127.0.0.1:${process.env.PORT||e.h0.appPort}`){let d=await g(),f=Date.now();if("embedding"===b){let b=await fetch(`${c}/api/v1/embeddings`,{method:"POST",headers:d,body:JSON.stringify({model:a,input:"test"}),signal:AbortSignal.timeout(15e3)}),e=Date.now()-f,g=await b.text().catch(()=>""),h=null;try{h=g?JSON.parse(g):null}catch{}if(!b.ok){let a=h?.error?.message||h?.error||g;return{ok:!1,latencyMs:e,error:`HTTP ${b.status}${a?`: ${String(a).slice(0,240)}`:""}`,status:b.status}}return Array.isArray(h?.data)&&h.data.length>0&&Array.isArray(h.data[0]?.embedding)?{ok:!0,latencyMs:e,error:null,status:b.status}:{ok:!1,latencyMs:e,status:b.status,error:"Provider returned no embedding data"}}if("image"===b){let b=await fetch(`${c}/api/v1/images/generations`,{method:"POST",headers:d,body:JSON.stringify({model:a,prompt:"test"}),signal:AbortSignal.timeout(15e3)}),e=Date.now()-f,g=await b.text().catch(()=>""),h=null;try{h=g?JSON.parse(g):null}catch{}if(!b.ok){let a=h?.error?.message||h?.msg||h?.message||h?.error||g;return{ok:!1,latencyMs:e,error:`HTTP ${b.status}${a?`: ${String(a).slice(0,240)}`:""}`,status:b.status}}return Array.isArray(h?.data)&&h.data.length>0?{ok:!0,latencyMs:e,error:null,status:b.status}:{ok:!1,latencyMs:e,status:b.status,error:"Provider returned no image data for this model"}}if("stt"===b){let b,e,g,h,i=new FormData,j=(g=new DataView(e=new ArrayBuffer(44+(b=2*Math.max(1,Math.floor(4e3))))),(h=(a,b)=>{for(let c=0;c<b.length;c+=1)g.setUint8(a+c,b.charCodeAt(c))})(0,"RIFF"),g.setUint32(4,36+b,!0),h(8,"WAVE"),h(12,"fmt "),g.setUint32(16,16,!0),g.setUint16(20,1,!0),g.setUint16(22,1,!0),g.setUint32(24,16e3,!0),g.setUint32(28,32e3,!0),g.setUint16(32,2,!0),g.setUint16(34,16,!0),h(36,"data"),g.setUint32(40,b,!0),new Blob([e],{type:"audio/wav"}));i.append("file",j,"test.wav"),i.append("model",a);let k=await fetch(`${c}/api/v1/audio/transcriptions`,{method:"POST",headers:Object.fromEntries(Object.entries(d).filter(([a])=>"content-type"!==a.toLowerCase())),body:i,signal:AbortSignal.timeout(15e3)}),l=Date.now()-f,m=await k.text().catch(()=>""),n=null;try{n=m?JSON.parse(m):null}catch{}if(!k.ok){let a=n?.error?.message||n?.msg||n?.message||n?.error||m;return{ok:!1,latencyMs:l,error:`HTTP ${k.status}${a?`: ${String(a).slice(0,240)}`:""}`,status:k.status}}return("string"==typeof n?.text?n.text:"").trim()?{ok:!0,latencyMs:l,error:null,status:k.status}:{ok:!1,latencyMs:l,status:k.status,error:"Provider returned no transcription text for this model"}}let i=await fetch(`${c}/api/v1/chat/completions`,{method:"POST",headers:d,body:JSON.stringify({model:a,max_tokens:1,stream:!1,messages:[{role:"user",content:"hi"}]}),signal:AbortSignal.timeout(15e3)}),j=Date.now()-f,k=await i.text().catch(()=>""),l=null;try{l=k?JSON.parse(k):null}catch{}if(!i.ok){let a=l?.error?.message||l?.msg||l?.message||l?.error||k;return{ok:!1,latencyMs:j,error:`HTTP ${i.status}${a?`: ${String(a).slice(0,240)}`:""}`,status:i.status}}let m=l?.status,n=l?.msg||l?.message;if(null!=m&&"200"!==String(m)&&"0"!==String(m)&&n)return{ok:!1,latencyMs:j,status:i.status,error:`Provider status ${m}: ${String(n).slice(0,240)}`};if(l?.error){let a=l?.error?.message||l?.error||"Provider returned an error";return{ok:!1,latencyMs:j,status:i.status,error:String(a).slice(0,240)}}return Array.isArray(l?.choices)&&l.choices.length>0?{ok:!0,latencyMs:j,error:null,status:i.status}:{ok:!1,latencyMs:j,status:i.status,error:"Provider returned no completion choices for this model"}}},39006:a=>{"use strict";a.exports=JSON.parse('{"name":"zevairouter","version":"1.0.154","description":"Self-hosted AI router: many providers, one OpenAI-compatible /v1 endpoint and dashboard","bin":{"zevai":"./cli/cli.js"},"files":["cli/","src/","public/","scripts/","i18n/","assets/","images/","open-sse/","next.config.mjs","postcss.config.mjs","jsconfig.json","start.sh","package.json","README.md","LICENSE","CHANGELOG.md"],"scripts":{"dev":"next dev --webpack --port 1997","build":"next build --webpack","start":"node ./scripts/start-standalone.mjs","dev:bun":"bun --bun next dev --webpack --port 1997","build:bun":"bun --bun next build --webpack","start:bun":"bun ./.next/standalone/server.js","build:cli":"node cli/scripts/build-cli.js","release":"node cli/scripts/release.js","prepack":"node cli/scripts/build-cli.js","postinstall":"node cli/hooks/postinstall.js || exit 0"},"dependencies":{"@dnd-kit/core":"^6.3.1","@dnd-kit/modifiers":"^9.0.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@monaco-editor/react":"^4.7.0","@xterm/addon-fit":"^0.11.0","@xterm/addon-web-links":"^0.12.0","@xterm/xterm":"^6.0.0","@xyflow/react":"^12.10.1","bcryptjs":"^3.0.3","confbox":"^0.2.4","express":"^5.2.1","http-proxy-middleware":"^3.0.7","jose":"^6.1.3","marked":"^18.0.1","material-symbols":"^0.45.1","monaco-editor":"^0.55.1","next":"^16.2.12","node-forge":"^1.3.3","node-machine-id":"^1.1.12","open":"^11.0.0","ora":"^9.1.0","react":"19.2.4","react-dom":"19.2.4","react-is":"^19.2.7","recharts":"^3.7.0","selfsigned":"^5.5.0","socks":"^2.8.9","socks-proxy-agent":"^10.1.0","sql.js":"^1.14.1","undici":"^8.7.0","uuid":"^14.0.1","zustand":"^5.0.10"},"comment_optional_runtime":"Heavy packages are installed into ~/.zevai/runtime instead of the published tarball. Automation uses Playwright Chromium only; ZEVAI_MINIMAL_POSTINSTALL=1 skips its browser download. Other lazy runtimes are better-sqlite3 and node-pty.","overrides":{"body-parser":"^2.3.0","dompurify":"^3.4.12","postcss":"^8.5.10","sharp":"^0.35.0"},"comment_overrides":"Security floors for transitive runtime dependencies. Monaco still pins an old DOMPurify; Express and Next may resolve vulnerable body-parser/sharp releases without these minimums. Recheck and remove overrides once their parent packages require fixed versions.","devDependencies":{"@tailwindcss/postcss":"^4.1.18","better-sqlite3":"^12.6.2","esbuild":"^0.28.1","eslint":"^9","eslint-config-next":"16.2.9","postcss":"^8.5.10","tailwindcss":"^4"},"engines":{"node":">=22.5.0"},"keywords":["zevairouter","zevai","ai","router","proxy","kiro","codebuddy","claude","openai","api","quota","automation"],"license":"MIT","repository":{"type":"git","url":"https://github.com/Verifiedlabs/zevairouter"},"homepage":"https://github.com/Verifiedlabs/zevairouter"}')},54603:(a,b,c)=>{"use strict";c.d(b,{Xj:()=>q});var d=c(19713),e=c(73024),f=c.n(e),g=c(76760),h=c.n(g),i=c(77598),j=c.n(i),k=c(49120);let l=h().join(k.DATA_DIR,"machine-id"),m=h().join(k.DATA_DIR,"auth"),n=h().join(m,"cli-secret"),o=null,p=null;async function q(a=null){let b=a||process.env.MACHINE_ID_SALT||"endpoint-proxy-salt",c=function(){if(o)return o;try{if(o=f().readFileSync(l,"utf8").trim())return o}catch{}try{o=(0,d.machineIdSync)()}catch{o=j().randomUUID()}try{f().mkdirSync(k.DATA_DIR,{recursive:!0}),f().writeFileSync(l,o,{mode:384})}catch{}return o}(),e="zevai-cli-auth"===b?function(){if(p)return p;try{if(p=f().readFileSync(n,"utf8").trim())return p}catch{}p=j().randomBytes(32).toString("hex");try{f().mkdirSync(m,{recursive:!0}),f().writeFileSync(n,p,{mode:384})}catch{}return p}():"";return j().createHash("sha256").update(c+b+e).digest("hex").substring(0,16)}},78335:()=>{},81329:(a,b,c)=>{"use strict";c.d(b,{Xg:()=>d.Xg,eh:()=>e,vq:()=>d.vq});var d=c(44404);Object.entries(c(75681).AI_PROVIDERS).filter(([,a])=>a.passthroughModels).map(([a])=>a);let e=Object.entries(d.vq).flatMap(([a,b])=>b.map(b=>({provider:a,model:b.id,name:b.name})))},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)},96487:()=>{}};
1
+ exports.id=8306,exports.ids=[8306],exports.modules={30869:(a,b,c)=>{"use strict";c.d(b,{UY:()=>h,X3:()=>i,eh:()=>f.eh,fg:()=>e.fg,h0:()=>g});var d=c(39006),e=c(75681),f=c(81329);d.version;let g={npmPackageName:"zevairouter",installCmd:"npm i -g zevairouter",installCmdLatest:"npm i -g zevairouter@latest --prefer-online",shutdownCountdownSec:3,exitDelayMs:500,statusPort:20129,statusPollIntervalMs:1e3,statusLogTailLines:8,installRetries:3,installRetryDelayMs:5e3,lingerAfterDoneMs:3e4,waitForExitMinMs:5e3,waitForExitMaxMs:2e4,waitForExitCheckMs:500,appPort:1997},h={maxLines:200,pollIntervalMs:1e3},i={openrouter:"https://openrouter.ai/api/v1/chat/completions",glm:"https://api.z.ai/api/anthropic/v1/messages","glm-cn":"https://open.bigmodel.cn/api/coding/paas/v4/chat/completions",kimi:"https://api.kimi.com/coding/v1/messages",minimax:"https://api.minimax.io/anthropic/v1/messages","minimax-cn":"https://api.minimaxi.com/anthropic/v1/messages",alicode:"https://coding.dashscope.aliyuncs.com/v1/chat/completions","alicode-intl":"https://coding-intl.dashscope.aliyuncs.com/v1/chat/completions","volcengine-ark":"https://ark.cn-beijing.volces.com/api/coding/v3/chat/completions",byteplus:"https://ark.ap-southeast.bytepluses.com/api/coding/v3/chat/completions",openai:"https://api.openai.com/v1/chat/completions","vercel-ai-gateway":"https://ai-gateway.vercel.sh/v1/chat/completions",anthropic:"https://api.anthropic.com/v1/messages",gemini:"https://generativelanguage.googleapis.com/v1beta/models",ollama:"https://ollama.com/api/chat","ollama-local":"http://localhost:11434/api/chat"}},38238:(a,b,c)=>{"use strict";c.d(b,{P:()=>h});var d=c(89718),e=c(30869),f=c(54603);async function g(){let a=null;try{let b=await (0,d.PX)(!0);a=b.find(a=>!1!==a.isActive)?.key||null}catch{}let b={"Content-Type":"application/json"};return a&&(b.Authorization=`Bearer ${a}`),b["x-zevai-cli-token"]=await (0,f.Xj)("zevai-cli-auth"),b}async function h(a,b,c=`http://127.0.0.1:${process.env.PORT||e.h0.appPort}`){let d=await g(),f=Date.now();if("embedding"===b){let b=await fetch(`${c}/api/v1/embeddings`,{method:"POST",headers:d,body:JSON.stringify({model:a,input:"test"}),signal:AbortSignal.timeout(15e3)}),e=Date.now()-f,g=await b.text().catch(()=>""),h=null;try{h=g?JSON.parse(g):null}catch{}if(!b.ok){let a=h?.error?.message||h?.error||g;return{ok:!1,latencyMs:e,error:`HTTP ${b.status}${a?`: ${String(a).slice(0,240)}`:""}`,status:b.status}}return Array.isArray(h?.data)&&h.data.length>0&&Array.isArray(h.data[0]?.embedding)?{ok:!0,latencyMs:e,error:null,status:b.status}:{ok:!1,latencyMs:e,status:b.status,error:"Provider returned no embedding data"}}if("image"===b){let b=await fetch(`${c}/api/v1/images/generations`,{method:"POST",headers:d,body:JSON.stringify({model:a,prompt:"test"}),signal:AbortSignal.timeout(15e3)}),e=Date.now()-f,g=await b.text().catch(()=>""),h=null;try{h=g?JSON.parse(g):null}catch{}if(!b.ok){let a=h?.error?.message||h?.msg||h?.message||h?.error||g;return{ok:!1,latencyMs:e,error:`HTTP ${b.status}${a?`: ${String(a).slice(0,240)}`:""}`,status:b.status}}return Array.isArray(h?.data)&&h.data.length>0?{ok:!0,latencyMs:e,error:null,status:b.status}:{ok:!1,latencyMs:e,status:b.status,error:"Provider returned no image data for this model"}}if("stt"===b){let b,e,g,h,i=new FormData,j=(g=new DataView(e=new ArrayBuffer(44+(b=2*Math.max(1,Math.floor(4e3))))),(h=(a,b)=>{for(let c=0;c<b.length;c+=1)g.setUint8(a+c,b.charCodeAt(c))})(0,"RIFF"),g.setUint32(4,36+b,!0),h(8,"WAVE"),h(12,"fmt "),g.setUint32(16,16,!0),g.setUint16(20,1,!0),g.setUint16(22,1,!0),g.setUint32(24,16e3,!0),g.setUint32(28,32e3,!0),g.setUint16(32,2,!0),g.setUint16(34,16,!0),h(36,"data"),g.setUint32(40,b,!0),new Blob([e],{type:"audio/wav"}));i.append("file",j,"test.wav"),i.append("model",a);let k=await fetch(`${c}/api/v1/audio/transcriptions`,{method:"POST",headers:Object.fromEntries(Object.entries(d).filter(([a])=>"content-type"!==a.toLowerCase())),body:i,signal:AbortSignal.timeout(15e3)}),l=Date.now()-f,m=await k.text().catch(()=>""),n=null;try{n=m?JSON.parse(m):null}catch{}if(!k.ok){let a=n?.error?.message||n?.msg||n?.message||n?.error||m;return{ok:!1,latencyMs:l,error:`HTTP ${k.status}${a?`: ${String(a).slice(0,240)}`:""}`,status:k.status}}return("string"==typeof n?.text?n.text:"").trim()?{ok:!0,latencyMs:l,error:null,status:k.status}:{ok:!1,latencyMs:l,status:k.status,error:"Provider returned no transcription text for this model"}}let i=await fetch(`${c}/api/v1/chat/completions`,{method:"POST",headers:d,body:JSON.stringify({model:a,max_tokens:1,stream:!1,messages:[{role:"user",content:"hi"}]}),signal:AbortSignal.timeout(15e3)}),j=Date.now()-f,k=await i.text().catch(()=>""),l=null;try{l=k?JSON.parse(k):null}catch{}if(!i.ok){let a=l?.error?.message||l?.msg||l?.message||l?.error||k;return{ok:!1,latencyMs:j,error:`HTTP ${i.status}${a?`: ${String(a).slice(0,240)}`:""}`,status:i.status}}let m=l?.status,n=l?.msg||l?.message;if(null!=m&&"200"!==String(m)&&"0"!==String(m)&&n)return{ok:!1,latencyMs:j,status:i.status,error:`Provider status ${m}: ${String(n).slice(0,240)}`};if(l?.error){let a=l?.error?.message||l?.error||"Provider returned an error";return{ok:!1,latencyMs:j,status:i.status,error:String(a).slice(0,240)}}return Array.isArray(l?.choices)&&l.choices.length>0?{ok:!0,latencyMs:j,error:null,status:i.status}:{ok:!1,latencyMs:j,status:i.status,error:"Provider returned no completion choices for this model"}}},39006:a=>{"use strict";a.exports=JSON.parse('{"name":"zevairouter","version":"1.0.155","description":"Self-hosted AI router: many providers, one OpenAI-compatible /v1 endpoint and dashboard","bin":{"zevai":"./cli/cli.js"},"files":["cli/cli.js","cli/app/","cli/hooks/","cli/src/","cli/package.json","cli/README.md","cli/LICENSE","scripts/start-standalone.mjs","README.md","README.zh-CN.md","DOCKER.md","LICENSE","CHANGELOG.md"],"scripts":{"dev":"next dev --webpack --port 1997","build":"node scripts/build-app.mjs","start":"node ./scripts/start-standalone.mjs","dev:bun":"bun --bun next dev --webpack --port 1997","build:bun":"bun --bun next build --webpack","start:bun":"bun ./.next/standalone/server.js","lint":"eslint .","test":"vitest run --config tests/vitest.config.js","build:cli":"node cli/scripts/build-cli.js","audit:package":"node cli/scripts/audit-package.mjs","smoke:package":"node cli/scripts/smoke-package.mjs","release":"node cli/scripts/release.js","prepack":"npm run build:cli && npm run audit:package","postinstall":"node cli/hooks/postinstall.js"},"dependencies":{"next":"16.2.12","node-machine-id":"1.1.12","react":"19.2.4","react-dom":"19.2.4","sql.js":"1.14.1"},"comment_optional_runtime":"Optional packages are installed into ~/.zevai/runtime instead of the published tarball. Automation uses CloakBrowser with playwright-core; ZEVAI_MINIMAL_POSTINSTALL=1 skips its browser download. Other lazy runtimes are better-sqlite3, node-pty, and systray2.","overrides":{"body-parser":"^2.3.0","brace-expansion":"5.0.8","dompurify":"^3.4.12","postcss":"^8.5.10","sharp":"^0.35.0"},"comment_overrides":"Security floors for transitive dependencies. ESLint\'s legacy minimatch is a private, source-pinned 3.1.5 compatibility package backed by brace-expansion 5.0.8; modern minimatch uses 5.0.8 directly. Monaco still pins an old DOMPurify; Express and Next may resolve vulnerable body-parser/sharp releases. Recheck and remove overrides once parent packages require fixed versions.","devDependencies":{"@dnd-kit/core":"^6.3.1","@dnd-kit/modifiers":"^9.0.0","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@monaco-editor/react":"^4.7.0","@tailwindcss/postcss":"^4.1.18","@xterm/addon-fit":"^0.11.0","@xterm/addon-web-links":"^0.12.0","@xterm/xterm":"^6.0.0","@xyflow/react":"^12.10.1","bcryptjs":"^3.0.3","better-sqlite3":"^12.6.2","minimatch":"file:vendor/minimatch3-secure","confbox":"^0.2.4","esbuild":"^0.28.1","eslint":"^9","eslint-config-next":"16.2.9","express":"^5.2.1","http-proxy-middleware":"^3.0.7","jose":"^6.1.3","marked":"^18.0.1","material-symbols":"^0.45.1","monaco-editor":"^0.55.1","node-forge":"^1.3.3","open":"^11.0.0","ora":"^9.1.0","postcss":"^8.5.10","react-is":"^19.2.7","recharts":"^3.7.0","selfsigned":"^5.5.0","socks":"^2.8.9","socks-proxy-agent":"^10.1.0","tailwindcss":"^4","undici":"^8.7.0","uuid":"^14.0.1","vitest":"^4.1.10","zustand":"^5.0.10"},"engines":{"node":">=22.5.0"},"keywords":["zevairouter","zevai","ai","router","proxy","kiro","codebuddy","claude","openai","api","quota","automation"],"license":"MIT","repository":{"type":"git","url":"https://github.com/Verifiedlabs/zevairouter"},"bugs":{"url":"https://github.com/Verifiedlabs/zevairouter/issues"},"homepage":"https://github.com/Verifiedlabs/zevairouter"}')},54603:(a,b,c)=>{"use strict";c.d(b,{Xj:()=>q});var d=c(19713),e=c(73024),f=c.n(e),g=c(76760),h=c.n(g),i=c(77598),j=c.n(i),k=c(49120);let l=h().join(k.DATA_DIR,"machine-id"),m=h().join(k.DATA_DIR,"auth"),n=h().join(m,"cli-secret"),o=null,p=null;async function q(a=null){let b=a||process.env.MACHINE_ID_SALT||"endpoint-proxy-salt",c=function(){if(o)return o;try{if(o=f().readFileSync(l,"utf8").trim())return o}catch{}try{o=(0,d.machineIdSync)()}catch{o=j().randomUUID()}try{f().mkdirSync(k.DATA_DIR,{recursive:!0}),f().writeFileSync(l,o,{mode:384})}catch{}return o}(),e="zevai-cli-auth"===b?function(){if(p)return p;try{if(p=f().readFileSync(n,"utf8").trim())return p}catch{}p=j().randomBytes(32).toString("hex");try{f().mkdirSync(m,{recursive:!0}),f().writeFileSync(n,p,{mode:384})}catch{}return p}():"";return j().createHash("sha256").update(c+b+e).digest("hex").substring(0,16)}},78335:()=>{},81329:(a,b,c)=>{"use strict";c.d(b,{Xg:()=>d.Xg,eh:()=>e,vq:()=>d.vq});var d=c(44404);Object.entries(c(75681).AI_PROVIDERS).filter(([,a])=>a.passthroughModels).map(([a])=>a);let e=Object.entries(d.vq).flatMap(([a,b])=>b.map(b=>({provider:a,model:b.id,name:b.name})))},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)},96487:()=>{}};