@yina-npm/openrouterx 0.4.80 → 0.5.10

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 (1621) hide show
  1. package/LICENSE +22 -1
  2. package/README.md +72 -420
  3. package/app/.next-cli-build/BUILD_ID +1 -0
  4. package/app/.next-cli-build/app-path-routes-manifest.json +170 -0
  5. package/app/.next-cli-build/build-manifest.json +20 -0
  6. package/app/.next-cli-build/prerender-manifest.json +239 -0
  7. package/app/.next-cli-build/required-server-files.json +380 -0
  8. package/app/.next-cli-build/routes-manifest.json +1131 -0
  9. package/app/.next-cli-build/server/app/(dashboard)/dashboard/admin/keys/page.js +2 -0
  10. package/app/.next-cli-build/server/app/(dashboard)/dashboard/admin/keys/page.js.nft.json +1 -0
  11. package/app/.next-cli-build/server/app/(dashboard)/dashboard/admin/keys/page_client-reference-manifest.js +1 -0
  12. package/app/.next-cli-build/server/app/(dashboard)/dashboard/admin/users/page.js +2 -0
  13. package/app/.next-cli-build/server/app/(dashboard)/dashboard/admin/users/page.js.nft.json +1 -0
  14. package/app/.next-cli-build/server/app/(dashboard)/dashboard/admin/users/page_client-reference-manifest.js +1 -0
  15. package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page.js +2 -0
  16. package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page.js.nft.json +1 -0
  17. package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -0
  18. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js +24 -0
  19. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js.nft.json +1 -0
  20. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page_client-reference-manifest.js +1 -0
  21. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js +2 -0
  22. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -0
  23. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -0
  24. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page.js +2 -0
  25. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page.js.nft.json +1 -0
  26. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -0
  27. package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page.js +2 -0
  28. package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page.js.nft.json +1 -0
  29. package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -0
  30. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js +2 -0
  31. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -0
  32. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -0
  33. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js +60 -0
  34. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js.nft.json +1 -0
  35. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -0
  36. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js +2 -0
  37. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js.nft.json +1 -0
  38. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -0
  39. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js +5 -0
  40. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js.nft.json +1 -0
  41. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +1 -0
  42. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page.js +2 -0
  43. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page.js.nft.json +1 -0
  44. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +1 -0
  45. package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page.js +2 -0
  46. package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page.js.nft.json +1 -0
  47. package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -0
  48. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js +2 -0
  49. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js.nft.json +1 -0
  50. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -0
  51. package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page.js +2 -0
  52. package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page.js.nft.json +1 -0
  53. package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -0
  54. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js +11 -0
  55. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js.nft.json +1 -0
  56. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -0
  57. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page.js +2 -0
  58. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page.js.nft.json +1 -0
  59. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -0
  60. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page.js +2 -0
  61. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page.js.nft.json +1 -0
  62. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -0
  63. package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page.js +5 -0
  64. package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page.js.nft.json +1 -0
  65. package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -0
  66. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page.js +3 -0
  67. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page.js.nft.json +1 -0
  68. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -0
  69. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page.js +2 -0
  70. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page.js.nft.json +1 -0
  71. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page_client-reference-manifest.js +1 -0
  72. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page.js +2 -0
  73. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page.js.nft.json +1 -0
  74. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -0
  75. package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page.js +2 -0
  76. package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page.js.nft.json +1 -0
  77. package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -0
  78. package/app/.next-cli-build/server/app/(dashboard)/dashboard/user/page.js +5 -0
  79. package/app/.next-cli-build/server/app/(dashboard)/dashboard/user/page.js.nft.json +1 -0
  80. package/app/.next-cli-build/server/app/(dashboard)/dashboard/user/page_client-reference-manifest.js +1 -0
  81. package/app/.next-cli-build/server/app/_global-error/page.js +32 -0
  82. package/app/.next-cli-build/server/app/_global-error/page.js.nft.json +1 -0
  83. package/app/.next-cli-build/server/app/_global-error/page_client-reference-manifest.js +1 -0
  84. package/app/.next-cli-build/server/app/_global-error.html +1 -0
  85. package/app/.next-cli-build/server/app/_global-error.rsc +14 -0
  86. package/app/.next-cli-build/server/app/_global-error.segments/_full.segment.rsc +14 -0
  87. package/app/.next-cli-build/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +5 -0
  88. package/app/.next-cli-build/server/app/_global-error.segments/_global-error.segment.rsc +5 -0
  89. package/app/.next-cli-build/server/app/_global-error.segments/_head.segment.rsc +5 -0
  90. package/app/.next-cli-build/server/app/_global-error.segments/_index.segment.rsc +5 -0
  91. package/app/.next-cli-build/server/app/_global-error.segments/_tree.segment.rsc +1 -0
  92. package/app/.next-cli-build/server/app/_not-found/page.js +2 -0
  93. package/app/.next-cli-build/server/app/_not-found/page.js.nft.json +1 -0
  94. package/app/.next-cli-build/server/app/_not-found/page_client-reference-manifest.js +1 -0
  95. package/app/.next-cli-build/server/app/_not-found.html +1 -0
  96. package/app/.next-cli-build/server/app/_not-found.rsc +21 -0
  97. package/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +21 -0
  98. package/app/.next-cli-build/server/app/_not-found.segments/_head.segment.rsc +6 -0
  99. package/app/.next-cli-build/server/app/_not-found.segments/_index.segment.rsc +9 -0
  100. package/app/.next-cli-build/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +5 -0
  101. package/app/.next-cli-build/server/app/_not-found.segments/_not-found.segment.rsc +5 -0
  102. package/app/.next-cli-build/server/app/_not-found.segments/_tree.segment.rsc +4 -0
  103. package/app/.next-cli-build/server/app/api/auth/login/route.js +1 -0
  104. package/app/.next-cli-build/server/app/api/auth/login/route.js.nft.json +1 -0
  105. package/app/.next-cli-build/server/app/api/auth/logout/route.js +1 -0
  106. package/app/.next-cli-build/server/app/api/auth/logout/route.js.nft.json +1 -0
  107. package/app/.next-cli-build/server/app/api/auth/me/route.js +1 -0
  108. package/app/.next-cli-build/server/app/api/auth/me/route.js.nft.json +1 -0
  109. package/app/.next-cli-build/server/app/api/auth/oidc/callback/route.js +1 -0
  110. package/app/.next-cli-build/server/app/api/auth/oidc/callback/route.js.nft.json +1 -0
  111. package/app/.next-cli-build/server/app/api/auth/oidc/start/route.js +1 -0
  112. package/app/.next-cli-build/server/app/api/auth/oidc/start/route.js.nft.json +1 -0
  113. package/app/.next-cli-build/server/app/api/auth/oidc/test/route.js +1 -0
  114. package/app/.next-cli-build/server/app/api/auth/oidc/test/route.js.nft.json +1 -0
  115. package/app/.next-cli-build/server/app/api/auth/reset-password/route.js +1 -0
  116. package/app/.next-cli-build/server/app/api/auth/reset-password/route.js.nft.json +1 -0
  117. package/app/.next-cli-build/server/app/api/auth/status/route.js +1 -0
  118. package/app/.next-cli-build/server/app/api/auth/status/route.js.nft.json +1 -0
  119. package/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js +17 -0
  120. package/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js.nft.json +1 -0
  121. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js +2 -0
  122. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js.nft.json +1 -0
  123. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js +1 -0
  124. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js.nft.json +1 -0
  125. package/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route.js +2 -0
  126. package/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route.js.nft.json +1 -0
  127. package/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js +2 -0
  128. package/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js.nft.json +1 -0
  129. package/app/.next-cli-build/server/app/api/cli-tools/codex-settings/activate-account/route.js +2 -0
  130. package/app/.next-cli-build/server/app/api/cli-tools/codex-settings/activate-account/route.js.nft.json +1 -0
  131. package/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js +1 -0
  132. package/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js.nft.json +1 -0
  133. package/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js +2 -0
  134. package/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js.nft.json +1 -0
  135. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js +2 -0
  136. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js.nft.json +1 -0
  137. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js +2 -0
  138. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js.nft.json +1 -0
  139. package/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js +1 -0
  140. package/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js.nft.json +1 -0
  141. package/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js +9 -0
  142. package/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js.nft.json +1 -0
  143. package/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js +2 -0
  144. package/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js.nft.json +1 -0
  145. package/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js +10 -0
  146. package/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js.nft.json +1 -0
  147. package/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js +3 -0
  148. package/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js.nft.json +1 -0
  149. package/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js +2 -0
  150. package/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js.nft.json +1 -0
  151. package/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js +2 -0
  152. package/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js.nft.json +1 -0
  153. package/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js +2 -0
  154. package/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js.nft.json +1 -0
  155. package/app/.next-cli-build/server/app/api/combos/[id]/route.js +1 -0
  156. package/app/.next-cli-build/server/app/api/combos/[id]/route.js.nft.json +1 -0
  157. package/app/.next-cli-build/server/app/api/combos/route.js +1 -0
  158. package/app/.next-cli-build/server/app/api/combos/route.js.nft.json +1 -0
  159. package/app/.next-cli-build/server/app/api/headroom/start/route.js +1 -0
  160. package/app/.next-cli-build/server/app/api/headroom/start/route.js.nft.json +1 -0
  161. package/app/.next-cli-build/server/app/api/headroom/start/route_client-reference-manifest.js +1 -0
  162. package/app/.next-cli-build/server/app/api/headroom/status/route.js +1 -0
  163. package/app/.next-cli-build/server/app/api/headroom/status/route.js.nft.json +1 -0
  164. package/app/.next-cli-build/server/app/api/headroom/status/route_client-reference-manifest.js +1 -0
  165. package/app/.next-cli-build/server/app/api/headroom/stop/route.js +1 -0
  166. package/app/.next-cli-build/server/app/api/headroom/stop/route.js.nft.json +1 -0
  167. package/app/.next-cli-build/server/app/api/headroom/stop/route_client-reference-manifest.js +1 -0
  168. package/app/.next-cli-build/server/app/api/health/route.js +1 -0
  169. package/app/.next-cli-build/server/app/api/health/route.js.nft.json +1 -0
  170. package/app/.next-cli-build/server/app/api/init/route.js +1 -0
  171. package/app/.next-cli-build/server/app/api/init/route.js.nft.json +1 -0
  172. package/app/.next-cli-build/server/app/api/keys/[id]/route.js +1 -0
  173. package/app/.next-cli-build/server/app/api/keys/[id]/route.js.nft.json +1 -0
  174. package/app/.next-cli-build/server/app/api/keys/route.js +1 -0
  175. package/app/.next-cli-build/server/app/api/keys/route.js.nft.json +1 -0
  176. package/app/.next-cli-build/server/app/api/locale/route.js +1 -0
  177. package/app/.next-cli-build/server/app/api/locale/route.js.nft.json +1 -0
  178. package/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route.js +7 -0
  179. package/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route.js.nft.json +1 -0
  180. package/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route.js +10 -0
  181. package/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route.js.nft.json +1 -0
  182. package/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js +1 -0
  183. package/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js.nft.json +1 -0
  184. package/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js +1 -0
  185. package/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js.nft.json +1 -0
  186. package/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js +1 -0
  187. package/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js.nft.json +1 -0
  188. package/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js +1 -0
  189. package/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js.nft.json +1 -0
  190. package/app/.next-cli-build/server/app/api/media-providers/tts/voices/route.js +1 -0
  191. package/app/.next-cli-build/server/app/api/media-providers/tts/voices/route.js.nft.json +1 -0
  192. package/app/.next-cli-build/server/app/api/models/alias/route.js +1 -0
  193. package/app/.next-cli-build/server/app/api/models/alias/route.js.nft.json +1 -0
  194. package/app/.next-cli-build/server/app/api/models/availability/route.js +1 -0
  195. package/app/.next-cli-build/server/app/api/models/availability/route.js.nft.json +1 -0
  196. package/app/.next-cli-build/server/app/api/models/custom/route.js +1 -0
  197. package/app/.next-cli-build/server/app/api/models/custom/route.js.nft.json +1 -0
  198. package/app/.next-cli-build/server/app/api/models/disabled/route.js +1 -0
  199. package/app/.next-cli-build/server/app/api/models/disabled/route.js.nft.json +1 -0
  200. package/app/.next-cli-build/server/app/api/models/route.js +1 -0
  201. package/app/.next-cli-build/server/app/api/models/route.js.nft.json +1 -0
  202. package/app/.next-cli-build/server/app/api/models/test/route.js +1 -0
  203. package/app/.next-cli-build/server/app/api/models/test/route.js.nft.json +1 -0
  204. package/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js +1 -0
  205. package/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js.nft.json +1 -0
  206. package/app/.next-cli-build/server/app/api/oauth/codex/bulk-import/route.js +1 -0
  207. package/app/.next-cli-build/server/app/api/oauth/codex/bulk-import/route.js.nft.json +1 -0
  208. package/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js +1 -0
  209. package/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js.nft.json +1 -0
  210. package/app/.next-cli-build/server/app/api/oauth/cursor/auto-import/route.js +4 -0
  211. package/app/.next-cli-build/server/app/api/oauth/cursor/auto-import/route.js.nft.json +1 -0
  212. package/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js +1 -0
  213. package/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js.nft.json +1 -0
  214. package/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js +1 -0
  215. package/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js.nft.json +1 -0
  216. package/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js +1 -0
  217. package/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js.nft.json +1 -0
  218. package/app/.next-cli-build/server/app/api/oauth/kiro/api-key/route.js +1 -0
  219. package/app/.next-cli-build/server/app/api/oauth/kiro/api-key/route.js.nft.json +1 -0
  220. package/app/.next-cli-build/server/app/api/oauth/kiro/api-key/route_client-reference-manifest.js +1 -0
  221. package/app/.next-cli-build/server/app/api/oauth/kiro/auto-import/route.js +1 -0
  222. package/app/.next-cli-build/server/app/api/oauth/kiro/auto-import/route.js.nft.json +1 -0
  223. package/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js +1 -0
  224. package/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js.nft.json +1 -0
  225. package/app/.next-cli-build/server/app/api/oauth/kiro/social-authorize/route.js +1 -0
  226. package/app/.next-cli-build/server/app/api/oauth/kiro/social-authorize/route.js.nft.json +1 -0
  227. package/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js +1 -0
  228. package/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js.nft.json +1 -0
  229. package/app/.next-cli-build/server/app/api/pricing/route.js +1 -0
  230. package/app/.next-cli-build/server/app/api/pricing/route.js.nft.json +1 -0
  231. package/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js +1 -0
  232. package/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js.nft.json +1 -0
  233. package/app/.next-cli-build/server/app/api/provider-nodes/route.js +1 -0
  234. package/app/.next-cli-build/server/app/api/provider-nodes/route.js.nft.json +1 -0
  235. package/app/.next-cli-build/server/app/api/provider-nodes/validate/route.js +1 -0
  236. package/app/.next-cli-build/server/app/api/provider-nodes/validate/route.js.nft.json +1 -0
  237. package/app/.next-cli-build/server/app/api/providers/[id]/models/route.js +1 -0
  238. package/app/.next-cli-build/server/app/api/providers/[id]/models/route.js.nft.json +1 -0
  239. package/app/.next-cli-build/server/app/api/providers/[id]/route.js +1 -0
  240. package/app/.next-cli-build/server/app/api/providers/[id]/route.js.nft.json +1 -0
  241. package/app/.next-cli-build/server/app/api/providers/[id]/test/route.js +1 -0
  242. package/app/.next-cli-build/server/app/api/providers/[id]/test/route.js.nft.json +1 -0
  243. package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js +1 -0
  244. package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js.nft.json +1 -0
  245. package/app/.next-cli-build/server/app/api/providers/client/route.js +1 -0
  246. package/app/.next-cli-build/server/app/api/providers/client/route.js.nft.json +1 -0
  247. package/app/.next-cli-build/server/app/api/providers/kilo/free-models/route.js +1 -0
  248. package/app/.next-cli-build/server/app/api/providers/kilo/free-models/route.js.nft.json +1 -0
  249. package/app/.next-cli-build/server/app/api/providers/route.js +1 -0
  250. package/app/.next-cli-build/server/app/api/providers/route.js.nft.json +1 -0
  251. package/app/.next-cli-build/server/app/api/providers/suggested-models/route.js +1 -0
  252. package/app/.next-cli-build/server/app/api/providers/suggested-models/route.js.nft.json +1 -0
  253. package/app/.next-cli-build/server/app/api/providers/test-batch/route.js +1 -0
  254. package/app/.next-cli-build/server/app/api/providers/test-batch/route.js.nft.json +1 -0
  255. package/app/.next-cli-build/server/app/api/providers/validate/route.js +1 -0
  256. package/app/.next-cli-build/server/app/api/providers/validate/route.js.nft.json +1 -0
  257. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/route.js +1 -0
  258. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/route.js.nft.json +1 -0
  259. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js +1 -0
  260. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js.nft.json +1 -0
  261. package/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route.js +43 -0
  262. package/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route.js.nft.json +1 -0
  263. package/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route.js +40 -0
  264. package/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route.js.nft.json +1 -0
  265. package/app/.next-cli-build/server/app/api/proxy-pools/route.js +1 -0
  266. package/app/.next-cli-build/server/app/api/proxy-pools/route.js.nft.json +1 -0
  267. package/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js +33 -0
  268. package/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js.nft.json +1 -0
  269. package/app/.next-cli-build/server/app/api/settings/database/route.js +1 -0
  270. package/app/.next-cli-build/server/app/api/settings/database/route.js.nft.json +1 -0
  271. package/app/.next-cli-build/server/app/api/settings/proxy-test/route.js +1 -0
  272. package/app/.next-cli-build/server/app/api/settings/proxy-test/route.js.nft.json +1 -0
  273. package/app/.next-cli-build/server/app/api/settings/require-login/route.js +1 -0
  274. package/app/.next-cli-build/server/app/api/settings/require-login/route.js.nft.json +1 -0
  275. package/app/.next-cli-build/server/app/api/settings/route.js +1 -0
  276. package/app/.next-cli-build/server/app/api/settings/route.js.nft.json +1 -0
  277. package/app/.next-cli-build/server/app/api/shutdown/route.js +1 -0
  278. package/app/.next-cli-build/server/app/api/shutdown/route.js.nft.json +1 -0
  279. package/app/.next-cli-build/server/app/api/tags/route.js +1 -0
  280. package/app/.next-cli-build/server/app/api/tags/route.js.nft.json +1 -0
  281. package/app/.next-cli-build/server/app/api/translator/console-logs/route.js +1 -0
  282. package/app/.next-cli-build/server/app/api/translator/console-logs/route.js.nft.json +1 -0
  283. package/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js +7 -0
  284. package/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js.nft.json +1 -0
  285. package/app/.next-cli-build/server/app/api/translator/load/route.js +1 -0
  286. package/app/.next-cli-build/server/app/api/translator/load/route.js.nft.json +1 -0
  287. package/app/.next-cli-build/server/app/api/translator/save/route.js +1 -0
  288. package/app/.next-cli-build/server/app/api/translator/save/route.js.nft.json +1 -0
  289. package/app/.next-cli-build/server/app/api/translator/send/route.js +1 -0
  290. package/app/.next-cli-build/server/app/api/translator/send/route.js.nft.json +1 -0
  291. package/app/.next-cli-build/server/app/api/translator/translate/route.js +1 -0
  292. package/app/.next-cli-build/server/app/api/translator/translate/route.js.nft.json +1 -0
  293. package/app/.next-cli-build/server/app/api/tunnel/disable/route.js +1 -0
  294. package/app/.next-cli-build/server/app/api/tunnel/disable/route.js.nft.json +1 -0
  295. package/app/.next-cli-build/server/app/api/tunnel/enable/route.js +1 -0
  296. package/app/.next-cli-build/server/app/api/tunnel/enable/route.js.nft.json +1 -0
  297. package/app/.next-cli-build/server/app/api/tunnel/status/route.js +1 -0
  298. package/app/.next-cli-build/server/app/api/tunnel/status/route.js.nft.json +1 -0
  299. package/app/.next-cli-build/server/app/api/tunnel/tailscale-check/route.js +1 -0
  300. package/app/.next-cli-build/server/app/api/tunnel/tailscale-check/route.js.nft.json +1 -0
  301. package/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route.js +1 -0
  302. package/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route.js.nft.json +1 -0
  303. package/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route.js +1 -0
  304. package/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route.js.nft.json +1 -0
  305. package/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js +5 -0
  306. package/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js.nft.json +1 -0
  307. package/app/.next-cli-build/server/app/api/usage/[connectionId]/codex-reset-credits/route.js +1 -0
  308. package/app/.next-cli-build/server/app/api/usage/[connectionId]/codex-reset-credits/route.js.nft.json +1 -0
  309. package/app/.next-cli-build/server/app/api/usage/[connectionId]/codex-reset-credits/route_client-reference-manifest.js +1 -0
  310. package/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js +1 -0
  311. package/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js.nft.json +1 -0
  312. package/app/.next-cli-build/server/app/api/usage/api-keys/route.js +1 -0
  313. package/app/.next-cli-build/server/app/api/usage/api-keys/route.js.nft.json +1 -0
  314. package/app/.next-cli-build/server/app/api/usage/chart/route.js +1 -0
  315. package/app/.next-cli-build/server/app/api/usage/chart/route.js.nft.json +1 -0
  316. package/app/.next-cli-build/server/app/api/usage/history/route.js +1 -0
  317. package/app/.next-cli-build/server/app/api/usage/history/route.js.nft.json +1 -0
  318. package/app/.next-cli-build/server/app/api/usage/logs/route.js +1 -0
  319. package/app/.next-cli-build/server/app/api/usage/logs/route.js.nft.json +1 -0
  320. package/app/.next-cli-build/server/app/api/usage/providers/route.js +1 -0
  321. package/app/.next-cli-build/server/app/api/usage/providers/route.js.nft.json +1 -0
  322. package/app/.next-cli-build/server/app/api/usage/request-details/route.js +1 -0
  323. package/app/.next-cli-build/server/app/api/usage/request-details/route.js.nft.json +1 -0
  324. package/app/.next-cli-build/server/app/api/usage/request-logs/route.js +1 -0
  325. package/app/.next-cli-build/server/app/api/usage/request-logs/route.js.nft.json +1 -0
  326. package/app/.next-cli-build/server/app/api/usage/stats/route.js +1 -0
  327. package/app/.next-cli-build/server/app/api/usage/stats/route.js.nft.json +1 -0
  328. package/app/.next-cli-build/server/app/api/usage/stream/route.js +7 -0
  329. package/app/.next-cli-build/server/app/api/usage/stream/route.js.nft.json +1 -0
  330. package/app/.next-cli-build/server/app/api/users/[id]/route.js +1 -0
  331. package/app/.next-cli-build/server/app/api/users/[id]/route.js.nft.json +1 -0
  332. package/app/.next-cli-build/server/app/api/users/route.js +1 -0
  333. package/app/.next-cli-build/server/app/api/users/route.js.nft.json +1 -0
  334. package/app/.next-cli-build/server/app/api/v1/api/chat/route.js +1 -0
  335. package/app/.next-cli-build/server/app/api/v1/api/chat/route.js.nft.json +1 -0
  336. package/app/.next-cli-build/server/app/api/v1/audio/speech/route.js +1 -0
  337. package/app/.next-cli-build/server/app/api/v1/audio/speech/route.js.nft.json +1 -0
  338. package/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js +1 -0
  339. package/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -0
  340. package/app/.next-cli-build/server/app/api/v1/audio/voices/route.js +1 -0
  341. package/app/.next-cli-build/server/app/api/v1/audio/voices/route.js.nft.json +1 -0
  342. package/app/.next-cli-build/server/app/api/v1/chat/completions/route.js +1 -0
  343. package/app/.next-cli-build/server/app/api/v1/chat/completions/route.js.nft.json +1 -0
  344. package/app/.next-cli-build/server/app/api/v1/embeddings/route.js +1 -0
  345. package/app/.next-cli-build/server/app/api/v1/embeddings/route.js.nft.json +1 -0
  346. package/app/.next-cli-build/server/app/api/v1/images/generations/route.js +4 -0
  347. package/app/.next-cli-build/server/app/api/v1/images/generations/route.js.nft.json +1 -0
  348. package/app/.next-cli-build/server/app/api/v1/messages/count_tokens/route.js +1 -0
  349. package/app/.next-cli-build/server/app/api/v1/messages/count_tokens/route.js.nft.json +1 -0
  350. package/app/.next-cli-build/server/app/api/v1/messages/route.js +1 -0
  351. package/app/.next-cli-build/server/app/api/v1/messages/route.js.nft.json +1 -0
  352. package/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js +1 -0
  353. package/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js.nft.json +1 -0
  354. package/app/.next-cli-build/server/app/api/v1/models/info/route.js +1 -0
  355. package/app/.next-cli-build/server/app/api/v1/models/info/route.js.nft.json +1 -0
  356. package/app/.next-cli-build/server/app/api/v1/models/route.js +1 -0
  357. package/app/.next-cli-build/server/app/api/v1/models/route.js.nft.json +1 -0
  358. package/app/.next-cli-build/server/app/api/v1/responses/compact/route.js +1 -0
  359. package/app/.next-cli-build/server/app/api/v1/responses/compact/route.js.nft.json +1 -0
  360. package/app/.next-cli-build/server/app/api/v1/responses/route.js +1 -0
  361. package/app/.next-cli-build/server/app/api/v1/responses/route.js.nft.json +1 -0
  362. package/app/.next-cli-build/server/app/api/v1/route.js +1 -0
  363. package/app/.next-cli-build/server/app/api/v1/route.js.nft.json +1 -0
  364. package/app/.next-cli-build/server/app/api/v1/search/route.js +1 -0
  365. package/app/.next-cli-build/server/app/api/v1/search/route.js.nft.json +1 -0
  366. package/app/.next-cli-build/server/app/api/v1/web/fetch/route.js +1 -0
  367. package/app/.next-cli-build/server/app/api/v1/web/fetch/route.js.nft.json +1 -0
  368. package/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js +1 -0
  369. package/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -0
  370. package/app/.next-cli-build/server/app/api/v1beta/models/route.js +1 -0
  371. package/app/.next-cli-build/server/app/api/v1beta/models/route.js.nft.json +1 -0
  372. package/app/.next-cli-build/server/app/api/version/route.js +1 -0
  373. package/app/.next-cli-build/server/app/api/version/route.js.nft.json +1 -0
  374. package/app/.next-cli-build/server/app/api/version/shutdown/route.js +1 -0
  375. package/app/.next-cli-build/server/app/api/version/shutdown/route.js.nft.json +1 -0
  376. package/app/.next-cli-build/server/app/api/version/update/route.js +1 -0
  377. package/app/.next-cli-build/server/app/api/version/update/route.js.nft.json +1 -0
  378. package/app/.next-cli-build/server/app/callback/page.js +2 -0
  379. package/app/.next-cli-build/server/app/callback/page.js.nft.json +1 -0
  380. package/app/.next-cli-build/server/app/callback/page_client-reference-manifest.js +1 -0
  381. package/app/.next-cli-build/server/app/callback.html +1 -0
  382. package/app/.next-cli-build/server/app/callback.rsc +25 -0
  383. package/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +25 -0
  384. package/app/.next-cli-build/server/app/callback.segments/_head.segment.rsc +6 -0
  385. package/app/.next-cli-build/server/app/callback.segments/_index.segment.rsc +9 -0
  386. package/app/.next-cli-build/server/app/callback.segments/_tree.segment.rsc +4 -0
  387. package/app/.next-cli-build/server/app/callback.segments/callback/__PAGE__.segment.rsc +9 -0
  388. package/app/.next-cli-build/server/app/callback.segments/callback.segment.rsc +5 -0
  389. package/app/.next-cli-build/server/app/dashboard/settings/pricing/page.js +2 -0
  390. package/app/.next-cli-build/server/app/dashboard/settings/pricing/page.js.nft.json +1 -0
  391. package/app/.next-cli-build/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -0
  392. package/app/.next-cli-build/server/app/dashboard/settings/pricing.html +1 -0
  393. package/app/.next-cli-build/server/app/dashboard/settings/pricing.rsc +25 -0
  394. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +25 -0
  395. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +6 -0
  396. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +9 -0
  397. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +4 -0
  398. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +9 -0
  399. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing.segment.rsc +5 -0
  400. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings.segment.rsc +5 -0
  401. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard.segment.rsc +5 -0
  402. package/app/.next-cli-build/server/app/favicon.ico/route.js +1 -0
  403. package/app/.next-cli-build/server/app/favicon.ico/route.js.nft.json +1 -0
  404. package/app/.next-cli-build/server/app/index.html +1 -0
  405. package/app/.next-cli-build/server/app/index.rsc +20 -0
  406. package/app/.next-cli-build/server/app/index.segments/__PAGE__.segment.rsc +6 -0
  407. package/app/.next-cli-build/server/app/index.segments/_full.segment.rsc +20 -0
  408. package/app/.next-cli-build/server/app/index.segments/_head.segment.rsc +6 -0
  409. package/app/.next-cli-build/server/app/index.segments/_index.segment.rsc +9 -0
  410. package/app/.next-cli-build/server/app/index.segments/_tree.segment.rsc +4 -0
  411. package/app/.next-cli-build/server/app/landing/page.js +2 -0
  412. package/app/.next-cli-build/server/app/landing/page.js.nft.json +1 -0
  413. package/app/.next-cli-build/server/app/landing/page_client-reference-manifest.js +1 -0
  414. package/app/.next-cli-build/server/app/landing.html +1 -0
  415. package/app/.next-cli-build/server/app/landing.rsc +25 -0
  416. package/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +25 -0
  417. package/app/.next-cli-build/server/app/landing.segments/_head.segment.rsc +6 -0
  418. package/app/.next-cli-build/server/app/landing.segments/_index.segment.rsc +9 -0
  419. package/app/.next-cli-build/server/app/landing.segments/_tree.segment.rsc +4 -0
  420. package/app/.next-cli-build/server/app/landing.segments/landing/__PAGE__.segment.rsc +9 -0
  421. package/app/.next-cli-build/server/app/landing.segments/landing.segment.rsc +5 -0
  422. package/app/.next-cli-build/server/app/login/page.js +2 -0
  423. package/app/.next-cli-build/server/app/login/page.js.nft.json +1 -0
  424. package/app/.next-cli-build/server/app/login/page_client-reference-manifest.js +1 -0
  425. package/app/.next-cli-build/server/app/login.html +1 -0
  426. package/app/.next-cli-build/server/app/login.rsc +26 -0
  427. package/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +26 -0
  428. package/app/.next-cli-build/server/app/login.segments/_head.segment.rsc +6 -0
  429. package/app/.next-cli-build/server/app/login.segments/_index.segment.rsc +9 -0
  430. package/app/.next-cli-build/server/app/login.segments/_tree.segment.rsc +5 -0
  431. package/app/.next-cli-build/server/app/login.segments/login/__PAGE__.segment.rsc +10 -0
  432. package/app/.next-cli-build/server/app/login.segments/login.segment.rsc +5 -0
  433. package/app/.next-cli-build/server/app/manifest.webmanifest/route.js +16 -0
  434. package/app/.next-cli-build/server/app/manifest.webmanifest/route.js.nft.json +1 -0
  435. package/app/.next-cli-build/server/app/page.js +2 -0
  436. package/app/.next-cli-build/server/app/page.js.nft.json +1 -0
  437. package/app/.next-cli-build/server/app/page_client-reference-manifest.js +1 -0
  438. package/app/.next-cli-build/server/app-paths-manifest.json +170 -0
  439. package/app/.next-cli-build/server/chunks/1220.js +3 -0
  440. package/app/.next-cli-build/server/chunks/1241.js +1 -0
  441. package/app/.next-cli-build/server/chunks/1275.js +73 -0
  442. package/app/.next-cli-build/server/chunks/1350.js +2 -0
  443. package/app/.next-cli-build/server/chunks/1832.js +1 -0
  444. package/app/.next-cli-build/server/chunks/2059.js +1 -0
  445. package/app/.next-cli-build/server/chunks/2944.js +1 -0
  446. package/app/.next-cli-build/server/chunks/319.js +45 -0
  447. package/app/.next-cli-build/server/chunks/3412.js +1 -0
  448. package/app/.next-cli-build/server/chunks/3428.js +1 -0
  449. package/app/.next-cli-build/server/chunks/3535.js +1 -0
  450. package/app/.next-cli-build/server/chunks/3546.js +1 -0
  451. package/app/.next-cli-build/server/chunks/3913.js +64 -0
  452. package/app/.next-cli-build/server/chunks/412.js +7 -0
  453. package/app/.next-cli-build/server/chunks/4632.js +1 -0
  454. package/app/.next-cli-build/server/chunks/4922.js +9 -0
  455. package/app/.next-cli-build/server/chunks/5118.js +1 -0
  456. package/app/.next-cli-build/server/chunks/5296.js +1 -0
  457. package/app/.next-cli-build/server/chunks/5592.js +1 -0
  458. package/app/.next-cli-build/server/chunks/5615.js +43 -0
  459. package/app/.next-cli-build/server/chunks/5699.js +1 -0
  460. package/app/.next-cli-build/server/chunks/5816.js +1 -0
  461. package/app/.next-cli-build/server/chunks/5961.js +1 -0
  462. package/app/.next-cli-build/server/chunks/6001.js +1 -0
  463. package/app/.next-cli-build/server/chunks/602.js +1 -0
  464. package/app/.next-cli-build/server/chunks/6070.js +1 -0
  465. package/app/.next-cli-build/server/chunks/615.js +1 -0
  466. package/app/.next-cli-build/server/chunks/6151.js +1 -0
  467. package/app/.next-cli-build/server/chunks/6182.js +63 -0
  468. package/app/.next-cli-build/server/chunks/6306.js +1 -0
  469. package/app/.next-cli-build/server/chunks/6327.js +1 -0
  470. package/app/.next-cli-build/server/chunks/6482.js +11 -0
  471. package/app/.next-cli-build/server/chunks/6688.js +1 -0
  472. package/app/.next-cli-build/server/chunks/6763.js +1 -0
  473. package/app/.next-cli-build/server/chunks/6777.js +1 -0
  474. package/app/.next-cli-build/server/chunks/7244.js +1 -0
  475. package/app/.next-cli-build/server/chunks/7259.js +53 -0
  476. package/app/.next-cli-build/server/chunks/7774.js +120 -0
  477. package/app/.next-cli-build/server/chunks/7879.js +10 -0
  478. package/app/.next-cli-build/server/chunks/7937.js +170 -0
  479. package/app/.next-cli-build/server/chunks/801.js +3 -0
  480. package/app/.next-cli-build/server/chunks/8271.js +1 -0
  481. package/app/.next-cli-build/server/chunks/8895.js +58 -0
  482. package/app/.next-cli-build/server/chunks/8910.js +2 -0
  483. package/app/.next-cli-build/server/chunks/8920.js +1 -0
  484. package/app/.next-cli-build/server/chunks/9718.js +1 -0
  485. package/app/.next-cli-build/server/chunks/9787.js +31 -0
  486. package/app/.next-cli-build/server/chunks/9833.js +1 -0
  487. package/app/.next-cli-build/server/middleware-build-manifest.js +1 -0
  488. package/app/.next-cli-build/server/middleware.js +18 -0
  489. package/app/.next-cli-build/server/next-font-manifest.js +1 -0
  490. package/app/.next-cli-build/server/next-font-manifest.json +1 -0
  491. package/app/.next-cli-build/server/pages/404.html +1 -0
  492. package/app/.next-cli-build/server/pages/500.html +1 -0
  493. package/app/.next-cli-build/server/server-reference-manifest.js +1 -0
  494. package/app/.next-cli-build/server/server-reference-manifest.json +1 -0
  495. package/app/.next-cli-build/static/DLZR81Hq9OqOrl2Xc2iHn/_buildManifest.js +1 -0
  496. package/app/.next-cli-build/static/chunks/1321-7d926378b0f39749.js +1 -0
  497. package/app/.next-cli-build/static/chunks/4072-932473fbd266d3f5.js +3 -0
  498. package/app/.next-cli-build/static/chunks/5497-53b71597ca1b53f8.js +7 -0
  499. package/app/.next-cli-build/static/chunks/6069-b72e6803d5df6bb0.js +53 -0
  500. package/app/.next-cli-build/static/chunks/705-979ff3eb195b9023.js +1 -0
  501. package/app/.next-cli-build/static/chunks/8982-6d1803817450bcd4.js +11 -0
  502. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/admin/keys/page-770d25a6e4c1c16b.js +1 -0
  503. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/admin/users/page-c02ec2a52cb81f6c.js +1 -0
  504. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/basic-chat/page-00067a1ed47e8a1a.js +1 -0
  505. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/cli-tools/[toolId]/page-6b52a6040f91175e.js +1 -0
  506. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/cli-tools/page-7e1032515aa7b846.js +1 -0
  507. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/combos/page-b0ea71f0ee7d3f0d.js +1 -0
  508. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/console-log/page-3255488cfa30dbe8.js +1 -0
  509. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/endpoint/page-a803dd8339e39a59.js +1 -0
  510. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page-248f90bb1f8438b5.js +59 -0
  511. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/page-f2ad20d24fffaed1.js +1 -0
  512. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/media-providers/combo/[id]/page-9b1c19519a3fcdd6.js +4 -0
  513. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/media-providers/web/page-c9d255cd986ec35f.js +1 -0
  514. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/mitm/page-6783a97fcd89ff19.js +1 -0
  515. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/page-35bb7f0efeba6102.js +1 -0
  516. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/profile/page-5cfb7ca8b362af6f.js +1 -0
  517. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-1e127be17d25ddd8.js +10 -0
  518. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/new/page-7c91743514149c71.js +1 -0
  519. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/page-929ab76c6137174e.js +1 -0
  520. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/proxy-pools/page-022d3cf41ae7126d.js +4 -0
  521. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/quota/page-561f95b84b06ae49.js +2 -0
  522. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/skills/page-88a024a500d543fa.js +1 -0
  523. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/translator/page-f514bcc6e633f162.js +1 -0
  524. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/usage/page-2551a48ef918b89b.js +1 -0
  525. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/user/page-2bb3871609a94258.js +4 -0
  526. package/app/.next-cli-build/static/chunks/app/(dashboard)/layout-8151b85461a99f83.js +1 -0
  527. package/app/.next-cli-build/static/chunks/app/_global-error/page-f514bcc6e633f162.js +1 -0
  528. package/app/.next-cli-build/static/chunks/app/api/auth/login/route-f514bcc6e633f162.js +1 -0
  529. package/app/.next-cli-build/static/chunks/app/api/auth/logout/route-f514bcc6e633f162.js +1 -0
  530. package/app/.next-cli-build/static/chunks/app/api/auth/me/route-f514bcc6e633f162.js +1 -0
  531. package/app/.next-cli-build/static/chunks/app/api/auth/oidc/callback/route-f514bcc6e633f162.js +1 -0
  532. package/app/.next-cli-build/static/chunks/app/api/auth/oidc/start/route-f514bcc6e633f162.js +1 -0
  533. package/app/.next-cli-build/static/chunks/app/api/auth/oidc/test/route-f514bcc6e633f162.js +1 -0
  534. package/app/.next-cli-build/static/chunks/app/api/auth/reset-password/route-f514bcc6e633f162.js +1 -0
  535. package/app/.next-cli-build/static/chunks/app/api/auth/status/route-f514bcc6e633f162.js +1 -0
  536. package/app/.next-cli-build/static/chunks/app/api/cli-tools/all-statuses/route-f514bcc6e633f162.js +1 -0
  537. package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-f514bcc6e633f162.js +1 -0
  538. package/app/.next-cli-build/static/chunks/app/api/cli-tools/antigravity-mitm/route-f514bcc6e633f162.js +1 -0
  539. package/app/.next-cli-build/static/chunks/app/api/cli-tools/claude-settings/route-f514bcc6e633f162.js +1 -0
  540. package/app/.next-cli-build/static/chunks/app/api/cli-tools/cline-settings/route-f514bcc6e633f162.js +1 -0
  541. package/app/.next-cli-build/static/chunks/app/api/cli-tools/codex-settings/activate-account/route-f514bcc6e633f162.js +1 -0
  542. package/app/.next-cli-build/static/chunks/app/api/cli-tools/codex-settings/route-f514bcc6e633f162.js +1 -0
  543. package/app/.next-cli-build/static/chunks/app/api/cli-tools/copilot-settings/route-f514bcc6e633f162.js +1 -0
  544. package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-registry/route-f514bcc6e633f162.js +1 -0
  545. package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-mcp-tools/route-f514bcc6e633f162.js +1 -0
  546. package/app/.next-cli-build/static/chunks/app/api/cli-tools/cowork-settings/route-f514bcc6e633f162.js +1 -0
  547. package/app/.next-cli-build/static/chunks/app/api/cli-tools/deepseek-tui-settings/route-f514bcc6e633f162.js +1 -0
  548. package/app/.next-cli-build/static/chunks/app/api/cli-tools/droid-settings/route-f514bcc6e633f162.js +1 -0
  549. package/app/.next-cli-build/static/chunks/app/api/cli-tools/hermes-settings/route-f514bcc6e633f162.js +1 -0
  550. package/app/.next-cli-build/static/chunks/app/api/cli-tools/jcode-settings/route-f514bcc6e633f162.js +1 -0
  551. package/app/.next-cli-build/static/chunks/app/api/cli-tools/kilo-settings/route-f514bcc6e633f162.js +1 -0
  552. package/app/.next-cli-build/static/chunks/app/api/cli-tools/openclaw-settings/route-f514bcc6e633f162.js +1 -0
  553. package/app/.next-cli-build/static/chunks/app/api/cli-tools/opencode-settings/route-f514bcc6e633f162.js +1 -0
  554. package/app/.next-cli-build/static/chunks/app/api/combos/[id]/route-f514bcc6e633f162.js +1 -0
  555. package/app/.next-cli-build/static/chunks/app/api/combos/route-f514bcc6e633f162.js +1 -0
  556. package/app/.next-cli-build/static/chunks/app/api/headroom/start/route-f514bcc6e633f162.js +1 -0
  557. package/app/.next-cli-build/static/chunks/app/api/headroom/status/route-f514bcc6e633f162.js +1 -0
  558. package/app/.next-cli-build/static/chunks/app/api/headroom/stop/route-f514bcc6e633f162.js +1 -0
  559. package/app/.next-cli-build/static/chunks/app/api/health/route-f514bcc6e633f162.js +1 -0
  560. package/app/.next-cli-build/static/chunks/app/api/init/route-f514bcc6e633f162.js +1 -0
  561. package/app/.next-cli-build/static/chunks/app/api/keys/[id]/route-f514bcc6e633f162.js +1 -0
  562. package/app/.next-cli-build/static/chunks/app/api/keys/route-f514bcc6e633f162.js +1 -0
  563. package/app/.next-cli-build/static/chunks/app/api/locale/route-f514bcc6e633f162.js +1 -0
  564. package/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/message/route-f514bcc6e633f162.js +1 -0
  565. package/app/.next-cli-build/static/chunks/app/api/mcp/[plugin]/sse/route-f514bcc6e633f162.js +1 -0
  566. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/deepgram/voices/route-f514bcc6e633f162.js +1 -0
  567. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-f514bcc6e633f162.js +1 -0
  568. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/inworld/voices/route-f514bcc6e633f162.js +1 -0
  569. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/minimax/voices/route-f514bcc6e633f162.js +1 -0
  570. package/app/.next-cli-build/static/chunks/app/api/media-providers/tts/voices/route-f514bcc6e633f162.js +1 -0
  571. package/app/.next-cli-build/static/chunks/app/api/models/alias/route-f514bcc6e633f162.js +1 -0
  572. package/app/.next-cli-build/static/chunks/app/api/models/availability/route-f514bcc6e633f162.js +1 -0
  573. package/app/.next-cli-build/static/chunks/app/api/models/custom/route-f514bcc6e633f162.js +1 -0
  574. package/app/.next-cli-build/static/chunks/app/api/models/disabled/route-f514bcc6e633f162.js +1 -0
  575. package/app/.next-cli-build/static/chunks/app/api/models/route-f514bcc6e633f162.js +1 -0
  576. package/app/.next-cli-build/static/chunks/app/api/models/test/route-f514bcc6e633f162.js +1 -0
  577. package/app/.next-cli-build/static/chunks/app/api/oauth/[provider]/[action]/route-f514bcc6e633f162.js +1 -0
  578. package/app/.next-cli-build/static/chunks/app/api/oauth/codex/bulk-import/route-f514bcc6e633f162.js +1 -0
  579. package/app/.next-cli-build/static/chunks/app/api/oauth/codex/import-token/route-f514bcc6e633f162.js +1 -0
  580. package/app/.next-cli-build/static/chunks/app/api/oauth/cursor/auto-import/route-f514bcc6e633f162.js +1 -0
  581. package/app/.next-cli-build/static/chunks/app/api/oauth/cursor/import/route-f514bcc6e633f162.js +1 -0
  582. package/app/.next-cli-build/static/chunks/app/api/oauth/gitlab/pat/route-f514bcc6e633f162.js +1 -0
  583. package/app/.next-cli-build/static/chunks/app/api/oauth/iflow/cookie/route-f514bcc6e633f162.js +1 -0
  584. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/api-key/route-f514bcc6e633f162.js +1 -0
  585. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/auto-import/route-f514bcc6e633f162.js +1 -0
  586. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/import/route-f514bcc6e633f162.js +1 -0
  587. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-authorize/route-f514bcc6e633f162.js +1 -0
  588. package/app/.next-cli-build/static/chunks/app/api/oauth/kiro/social-exchange/route-f514bcc6e633f162.js +1 -0
  589. package/app/.next-cli-build/static/chunks/app/api/pricing/route-f514bcc6e633f162.js +1 -0
  590. package/app/.next-cli-build/static/chunks/app/api/provider-nodes/[id]/route-f514bcc6e633f162.js +1 -0
  591. package/app/.next-cli-build/static/chunks/app/api/provider-nodes/route-f514bcc6e633f162.js +1 -0
  592. package/app/.next-cli-build/static/chunks/app/api/provider-nodes/validate/route-f514bcc6e633f162.js +1 -0
  593. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/models/route-f514bcc6e633f162.js +1 -0
  594. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/route-f514bcc6e633f162.js +1 -0
  595. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/test/route-f514bcc6e633f162.js +1 -0
  596. package/app/.next-cli-build/static/chunks/app/api/providers/[id]/test-models/route-f514bcc6e633f162.js +1 -0
  597. package/app/.next-cli-build/static/chunks/app/api/providers/client/route-f514bcc6e633f162.js +1 -0
  598. package/app/.next-cli-build/static/chunks/app/api/providers/kilo/free-models/route-f514bcc6e633f162.js +1 -0
  599. package/app/.next-cli-build/static/chunks/app/api/providers/route-f514bcc6e633f162.js +1 -0
  600. package/app/.next-cli-build/static/chunks/app/api/providers/suggested-models/route-f514bcc6e633f162.js +1 -0
  601. package/app/.next-cli-build/static/chunks/app/api/providers/test-batch/route-f514bcc6e633f162.js +1 -0
  602. package/app/.next-cli-build/static/chunks/app/api/providers/validate/route-f514bcc6e633f162.js +1 -0
  603. package/app/.next-cli-build/static/chunks/app/api/proxy-pools/[id]/route-f514bcc6e633f162.js +1 -0
  604. package/app/.next-cli-build/static/chunks/app/api/proxy-pools/[id]/test/route-f514bcc6e633f162.js +1 -0
  605. package/app/.next-cli-build/static/chunks/app/api/proxy-pools/cloudflare-deploy/route-f514bcc6e633f162.js +1 -0
  606. package/app/.next-cli-build/static/chunks/app/api/proxy-pools/deno-deploy/route-f514bcc6e633f162.js +1 -0
  607. package/app/.next-cli-build/static/chunks/app/api/proxy-pools/route-f514bcc6e633f162.js +1 -0
  608. package/app/.next-cli-build/static/chunks/app/api/proxy-pools/vercel-deploy/route-f514bcc6e633f162.js +1 -0
  609. package/app/.next-cli-build/static/chunks/app/api/settings/database/route-f514bcc6e633f162.js +1 -0
  610. package/app/.next-cli-build/static/chunks/app/api/settings/proxy-test/route-f514bcc6e633f162.js +1 -0
  611. package/app/.next-cli-build/static/chunks/app/api/settings/require-login/route-f514bcc6e633f162.js +1 -0
  612. package/app/.next-cli-build/static/chunks/app/api/settings/route-f514bcc6e633f162.js +1 -0
  613. package/app/.next-cli-build/static/chunks/app/api/shutdown/route-f514bcc6e633f162.js +1 -0
  614. package/app/.next-cli-build/static/chunks/app/api/tags/route-f514bcc6e633f162.js +1 -0
  615. package/app/.next-cli-build/static/chunks/app/api/translator/console-logs/route-f514bcc6e633f162.js +1 -0
  616. package/app/.next-cli-build/static/chunks/app/api/translator/console-logs/stream/route-f514bcc6e633f162.js +1 -0
  617. package/app/.next-cli-build/static/chunks/app/api/translator/load/route-f514bcc6e633f162.js +1 -0
  618. package/app/.next-cli-build/static/chunks/app/api/translator/save/route-f514bcc6e633f162.js +1 -0
  619. package/app/.next-cli-build/static/chunks/app/api/translator/send/route-f514bcc6e633f162.js +1 -0
  620. package/app/.next-cli-build/static/chunks/app/api/translator/translate/route-f514bcc6e633f162.js +1 -0
  621. package/app/.next-cli-build/static/chunks/app/api/tunnel/disable/route-f514bcc6e633f162.js +1 -0
  622. package/app/.next-cli-build/static/chunks/app/api/tunnel/enable/route-f514bcc6e633f162.js +1 -0
  623. package/app/.next-cli-build/static/chunks/app/api/tunnel/status/route-f514bcc6e633f162.js +1 -0
  624. package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-check/route-f514bcc6e633f162.js +1 -0
  625. package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-disable/route-f514bcc6e633f162.js +1 -0
  626. package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-enable/route-f514bcc6e633f162.js +1 -0
  627. package/app/.next-cli-build/static/chunks/app/api/tunnel/tailscale-install/route-f514bcc6e633f162.js +1 -0
  628. package/app/.next-cli-build/static/chunks/app/api/usage/[connectionId]/codex-reset-credits/route-f514bcc6e633f162.js +1 -0
  629. package/app/.next-cli-build/static/chunks/app/api/usage/[connectionId]/route-f514bcc6e633f162.js +1 -0
  630. package/app/.next-cli-build/static/chunks/app/api/usage/api-keys/route-f514bcc6e633f162.js +1 -0
  631. package/app/.next-cli-build/static/chunks/app/api/usage/chart/route-f514bcc6e633f162.js +1 -0
  632. package/app/.next-cli-build/static/chunks/app/api/usage/history/route-f514bcc6e633f162.js +1 -0
  633. package/app/.next-cli-build/static/chunks/app/api/usage/logs/route-f514bcc6e633f162.js +1 -0
  634. package/app/.next-cli-build/static/chunks/app/api/usage/providers/route-f514bcc6e633f162.js +1 -0
  635. package/app/.next-cli-build/static/chunks/app/api/usage/request-details/route-f514bcc6e633f162.js +1 -0
  636. package/app/.next-cli-build/static/chunks/app/api/usage/request-logs/route-f514bcc6e633f162.js +1 -0
  637. package/app/.next-cli-build/static/chunks/app/api/usage/stats/route-f514bcc6e633f162.js +1 -0
  638. package/app/.next-cli-build/static/chunks/app/api/usage/stream/route-f514bcc6e633f162.js +1 -0
  639. package/app/.next-cli-build/static/chunks/app/api/users/[id]/route-f514bcc6e633f162.js +1 -0
  640. package/app/.next-cli-build/static/chunks/app/api/users/route-f514bcc6e633f162.js +1 -0
  641. package/app/.next-cli-build/static/chunks/app/api/v1/api/chat/route-f514bcc6e633f162.js +1 -0
  642. package/app/.next-cli-build/static/chunks/app/api/v1/audio/speech/route-f514bcc6e633f162.js +1 -0
  643. package/app/.next-cli-build/static/chunks/app/api/v1/audio/transcriptions/route-f514bcc6e633f162.js +1 -0
  644. package/app/.next-cli-build/static/chunks/app/api/v1/audio/voices/route-f514bcc6e633f162.js +1 -0
  645. package/app/.next-cli-build/static/chunks/app/api/v1/chat/completions/route-f514bcc6e633f162.js +1 -0
  646. package/app/.next-cli-build/static/chunks/app/api/v1/embeddings/route-f514bcc6e633f162.js +1 -0
  647. package/app/.next-cli-build/static/chunks/app/api/v1/images/generations/route-f514bcc6e633f162.js +1 -0
  648. package/app/.next-cli-build/static/chunks/app/api/v1/messages/count_tokens/route-f514bcc6e633f162.js +1 -0
  649. package/app/.next-cli-build/static/chunks/app/api/v1/messages/route-f514bcc6e633f162.js +1 -0
  650. package/app/.next-cli-build/static/chunks/app/api/v1/models/[kind]/route-f514bcc6e633f162.js +1 -0
  651. package/app/.next-cli-build/static/chunks/app/api/v1/models/info/route-f514bcc6e633f162.js +1 -0
  652. package/app/.next-cli-build/static/chunks/app/api/v1/models/route-f514bcc6e633f162.js +1 -0
  653. package/app/.next-cli-build/static/chunks/app/api/v1/responses/compact/route-f514bcc6e633f162.js +1 -0
  654. package/app/.next-cli-build/static/chunks/app/api/v1/responses/route-f514bcc6e633f162.js +1 -0
  655. package/app/.next-cli-build/static/chunks/app/api/v1/route-f514bcc6e633f162.js +1 -0
  656. package/app/.next-cli-build/static/chunks/app/api/v1/search/route-f514bcc6e633f162.js +1 -0
  657. package/app/.next-cli-build/static/chunks/app/api/v1/web/fetch/route-f514bcc6e633f162.js +1 -0
  658. package/app/.next-cli-build/static/chunks/app/api/v1beta/models/[...path]/route-f514bcc6e633f162.js +1 -0
  659. package/app/.next-cli-build/static/chunks/app/api/v1beta/models/route-f514bcc6e633f162.js +1 -0
  660. package/app/.next-cli-build/static/chunks/app/api/version/route-f514bcc6e633f162.js +1 -0
  661. package/app/.next-cli-build/static/chunks/app/api/version/shutdown/route-f514bcc6e633f162.js +1 -0
  662. package/app/.next-cli-build/static/chunks/app/api/version/update/route-f514bcc6e633f162.js +1 -0
  663. package/app/.next-cli-build/static/chunks/app/dashboard/settings/pricing/page-fa3a6585ef16a942.js +1 -0
  664. package/app/.next-cli-build/static/chunks/app/layout-666059e0e271094b.js +1 -0
  665. package/app/.next-cli-build/static/chunks/app/login/page-fc66d6d071e3bcf3.js +1 -0
  666. package/app/.next-cli-build/static/chunks/app/manifest.webmanifest/route-f514bcc6e633f162.js +1 -0
  667. package/app/.next-cli-build/static/chunks/app/page-f514bcc6e633f162.js +1 -0
  668. package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/app-error-f514bcc6e633f162.js +1 -0
  669. package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/forbidden-f514bcc6e633f162.js +1 -0
  670. package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/not-found-f514bcc6e633f162.js +1 -0
  671. package/app/.next-cli-build/static/chunks/next/dist/client/components/builtin/unauthorized-f514bcc6e633f162.js +1 -0
  672. package/app/.next-cli-build/static/chunks/webpack-786de0e184ffd859.js +1 -0
  673. package/app/.next-cli-build/static/css/d477f23f99f30ee7.css +1 -0
  674. package/app/.next-cli-build/static/css/e60401d99e3ceca2.css +1 -0
  675. package/app/.next-cli-build/static/media/19cfc7226ec3afaa-s.woff2 +0 -0
  676. package/app/.next-cli-build/static/media/21350d82a1f187e9-s.woff2 +0 -0
  677. package/app/.next-cli-build/static/media/8e9860b6e62d6359-s.woff2 +0 -0
  678. package/app/.next-cli-build/static/media/ba9851c3c22cd980-s.woff2 +0 -0
  679. package/app/.next-cli-build/static/media/c5fe6dc8356a8c31-s.woff2 +0 -0
  680. package/app/.next-cli-build/static/media/df0a9ae256c0569c-s.woff2 +0 -0
  681. package/app/.next-cli-build/static/media/e4af272ccee01ff0-s.p.woff2 +0 -0
  682. package/app/cli/.build-home/.openrouterx/db.json +43 -0
  683. package/app/cli/.build-home/.openrouterx/jwt-secret +1 -0
  684. package/app/cli/.build-home/.openrouterx/machine-id +1 -0
  685. package/app/cli/.build-home/Library/Preferences/nextjs-nodejs/config.json +7 -0
  686. package/app/custom-server.js +32 -0
  687. package/app/package.json +11 -8
  688. package/app/public/providers/codebuddy-cn.png +0 -0
  689. package/app/server.js +1 -1
  690. package/app/src/lib/updater/updater.js +2 -2
  691. package/app/src/mitm/server.js +60 -435
  692. package/cli.js +728 -415
  693. package/hooks/postinstall.js +15 -48
  694. package/hooks/sqliteRuntime.js +156 -0
  695. package/hooks/trayRuntime.js +107 -0
  696. package/package.json +18 -7
  697. package/src/cli/api/client.js +88 -10
  698. package/src/cli/menus/cliTools.js +164 -8
  699. package/src/cli/menus/providers.js +249 -12
  700. package/src/cli/menus/settings.js +138 -31
  701. package/src/cli/terminalUI.js +37 -25
  702. package/src/cli/tray/autostart.js +168 -184
  703. package/src/cli/tray/tray.js +226 -108
  704. package/src/cli/tray/tray.ps1 +79 -0
  705. package/src/cli/tray/trayWin.js +89 -0
  706. package/src/cli/utils/input.js +64 -137
  707. package/src/cli/utils/modelSelector.js +7 -4
  708. package/app/.next/BUILD_ID +0 -1
  709. package/app/.next/app-path-routes-manifest.json +0 -165
  710. package/app/.next/build-manifest.json +0 -20
  711. package/app/.next/prerender-manifest.json +0 -239
  712. package/app/.next/required-server-files.json +0 -376
  713. package/app/.next/routes-manifest.json +0 -1094
  714. package/app/.next/server/app/(dashboard)/dashboard/admin/keys/page.js +0 -2
  715. package/app/.next/server/app/(dashboard)/dashboard/admin/keys/page.js.nft.json +0 -1
  716. package/app/.next/server/app/(dashboard)/dashboard/admin/keys/page_client-reference-manifest.js +0 -1
  717. package/app/.next/server/app/(dashboard)/dashboard/admin/users/page.js +0 -2
  718. package/app/.next/server/app/(dashboard)/dashboard/admin/users/page.js.nft.json +0 -1
  719. package/app/.next/server/app/(dashboard)/dashboard/admin/users/page_client-reference-manifest.js +0 -1
  720. package/app/.next/server/app/(dashboard)/dashboard/basic-chat/page.js +0 -2
  721. package/app/.next/server/app/(dashboard)/dashboard/basic-chat/page.js.nft.json +0 -1
  722. package/app/.next/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +0 -1
  723. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js +0 -24
  724. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js.nft.json +0 -1
  725. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page_client-reference-manifest.js +0 -1
  726. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page.js +0 -2
  727. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +0 -1
  728. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +0 -1
  729. package/app/.next/server/app/(dashboard)/dashboard/combos/page.js +0 -2
  730. package/app/.next/server/app/(dashboard)/dashboard/combos/page.js.nft.json +0 -1
  731. package/app/.next/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +0 -1
  732. package/app/.next/server/app/(dashboard)/dashboard/console-log/page.js +0 -2
  733. package/app/.next/server/app/(dashboard)/dashboard/console-log/page.js.nft.json +0 -1
  734. package/app/.next/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +0 -1
  735. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page.js +0 -2
  736. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +0 -1
  737. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +0 -1
  738. package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js +0 -60
  739. package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js.nft.json +0 -1
  740. package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +0 -1
  741. package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js +0 -2
  742. package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js.nft.json +0 -1
  743. package/app/.next/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +0 -1
  744. package/app/.next/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js +0 -5
  745. package/app/.next/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js.nft.json +0 -1
  746. package/app/.next/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +0 -1
  747. package/app/.next/server/app/(dashboard)/dashboard/media-providers/web/page.js +0 -2
  748. package/app/.next/server/app/(dashboard)/dashboard/media-providers/web/page.js.nft.json +0 -1
  749. package/app/.next/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +0 -1
  750. package/app/.next/server/app/(dashboard)/dashboard/mitm/page.js +0 -2
  751. package/app/.next/server/app/(dashboard)/dashboard/mitm/page.js.nft.json +0 -1
  752. package/app/.next/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +0 -1
  753. package/app/.next/server/app/(dashboard)/dashboard/page.js +0 -2
  754. package/app/.next/server/app/(dashboard)/dashboard/page.js.nft.json +0 -1
  755. package/app/.next/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +0 -1
  756. package/app/.next/server/app/(dashboard)/dashboard/profile/page.js +0 -2
  757. package/app/.next/server/app/(dashboard)/dashboard/profile/page.js.nft.json +0 -1
  758. package/app/.next/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +0 -1
  759. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page.js +0 -11
  760. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page.js.nft.json +0 -1
  761. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +0 -1
  762. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page.js +0 -2
  763. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page.js.nft.json +0 -1
  764. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +0 -1
  765. package/app/.next/server/app/(dashboard)/dashboard/providers/page.js +0 -2
  766. package/app/.next/server/app/(dashboard)/dashboard/providers/page.js.nft.json +0 -1
  767. package/app/.next/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +0 -1
  768. package/app/.next/server/app/(dashboard)/dashboard/proxy-pools/page.js +0 -5
  769. package/app/.next/server/app/(dashboard)/dashboard/proxy-pools/page.js.nft.json +0 -1
  770. package/app/.next/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +0 -1
  771. package/app/.next/server/app/(dashboard)/dashboard/quota/page.js +0 -3
  772. package/app/.next/server/app/(dashboard)/dashboard/quota/page.js.nft.json +0 -1
  773. package/app/.next/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +0 -1
  774. package/app/.next/server/app/(dashboard)/dashboard/skills/page.js +0 -2
  775. package/app/.next/server/app/(dashboard)/dashboard/skills/page.js.nft.json +0 -1
  776. package/app/.next/server/app/(dashboard)/dashboard/skills/page_client-reference-manifest.js +0 -1
  777. package/app/.next/server/app/(dashboard)/dashboard/translator/page.js +0 -2
  778. package/app/.next/server/app/(dashboard)/dashboard/translator/page.js.nft.json +0 -1
  779. package/app/.next/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +0 -1
  780. package/app/.next/server/app/(dashboard)/dashboard/usage/page.js +0 -2
  781. package/app/.next/server/app/(dashboard)/dashboard/usage/page.js.nft.json +0 -1
  782. package/app/.next/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +0 -1
  783. package/app/.next/server/app/(dashboard)/dashboard/user/page.js +0 -5
  784. package/app/.next/server/app/(dashboard)/dashboard/user/page.js.nft.json +0 -1
  785. package/app/.next/server/app/(dashboard)/dashboard/user/page_client-reference-manifest.js +0 -1
  786. package/app/.next/server/app/_global-error/page.js +0 -32
  787. package/app/.next/server/app/_global-error/page.js.nft.json +0 -1
  788. package/app/.next/server/app/_global-error/page_client-reference-manifest.js +0 -1
  789. package/app/.next/server/app/_global-error.html +0 -1
  790. package/app/.next/server/app/_global-error.rsc +0 -14
  791. package/app/.next/server/app/_global-error.segments/_full.segment.rsc +0 -14
  792. package/app/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +0 -5
  793. package/app/.next/server/app/_global-error.segments/_global-error.segment.rsc +0 -5
  794. package/app/.next/server/app/_global-error.segments/_head.segment.rsc +0 -5
  795. package/app/.next/server/app/_global-error.segments/_index.segment.rsc +0 -5
  796. package/app/.next/server/app/_global-error.segments/_tree.segment.rsc +0 -1
  797. package/app/.next/server/app/_not-found/page.js +0 -2
  798. package/app/.next/server/app/_not-found/page.js.nft.json +0 -1
  799. package/app/.next/server/app/_not-found/page_client-reference-manifest.js +0 -1
  800. package/app/.next/server/app/_not-found.html +0 -1
  801. package/app/.next/server/app/_not-found.rsc +0 -19
  802. package/app/.next/server/app/_not-found.segments/_full.segment.rsc +0 -19
  803. package/app/.next/server/app/_not-found.segments/_head.segment.rsc +0 -6
  804. package/app/.next/server/app/_not-found.segments/_index.segment.rsc +0 -8
  805. package/app/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +0 -5
  806. package/app/.next/server/app/_not-found.segments/_not-found.segment.rsc +0 -5
  807. package/app/.next/server/app/_not-found.segments/_tree.segment.rsc +0 -3
  808. package/app/.next/server/app/api/auth/login/route.js +0 -1
  809. package/app/.next/server/app/api/auth/login/route.js.nft.json +0 -1
  810. package/app/.next/server/app/api/auth/logout/route.js +0 -1
  811. package/app/.next/server/app/api/auth/logout/route.js.nft.json +0 -1
  812. package/app/.next/server/app/api/auth/me/route.js +0 -1
  813. package/app/.next/server/app/api/auth/me/route.js.nft.json +0 -1
  814. package/app/.next/server/app/api/auth/oidc/callback/route.js +0 -1
  815. package/app/.next/server/app/api/auth/oidc/callback/route.js.nft.json +0 -1
  816. package/app/.next/server/app/api/auth/oidc/start/route.js +0 -1
  817. package/app/.next/server/app/api/auth/oidc/start/route.js.nft.json +0 -1
  818. package/app/.next/server/app/api/auth/oidc/test/route.js +0 -1
  819. package/app/.next/server/app/api/auth/oidc/test/route.js.nft.json +0 -1
  820. package/app/.next/server/app/api/auth/reset-password/route.js +0 -1
  821. package/app/.next/server/app/api/auth/reset-password/route.js.nft.json +0 -1
  822. package/app/.next/server/app/api/auth/status/route.js +0 -1
  823. package/app/.next/server/app/api/auth/status/route.js.nft.json +0 -1
  824. package/app/.next/server/app/api/cli-tools/all-statuses/route.js +0 -17
  825. package/app/.next/server/app/api/cli-tools/all-statuses/route.js.nft.json +0 -1
  826. package/app/.next/server/app/api/cli-tools/antigravity-mitm/alias/route.js +0 -2
  827. package/app/.next/server/app/api/cli-tools/antigravity-mitm/alias/route.js.nft.json +0 -1
  828. package/app/.next/server/app/api/cli-tools/antigravity-mitm/route.js +0 -1
  829. package/app/.next/server/app/api/cli-tools/antigravity-mitm/route.js.nft.json +0 -1
  830. package/app/.next/server/app/api/cli-tools/claude-settings/route.js +0 -2
  831. package/app/.next/server/app/api/cli-tools/claude-settings/route.js.nft.json +0 -1
  832. package/app/.next/server/app/api/cli-tools/cline-settings/route.js +0 -2
  833. package/app/.next/server/app/api/cli-tools/cline-settings/route.js.nft.json +0 -1
  834. package/app/.next/server/app/api/cli-tools/codex-settings/activate-account/route.js +0 -2
  835. package/app/.next/server/app/api/cli-tools/codex-settings/activate-account/route.js.nft.json +0 -1
  836. package/app/.next/server/app/api/cli-tools/codex-settings/route.js +0 -1
  837. package/app/.next/server/app/api/cli-tools/codex-settings/route.js.nft.json +0 -1
  838. package/app/.next/server/app/api/cli-tools/copilot-settings/route.js +0 -2
  839. package/app/.next/server/app/api/cli-tools/copilot-settings/route.js.nft.json +0 -1
  840. package/app/.next/server/app/api/cli-tools/cowork-mcp-registry/route.js +0 -2
  841. package/app/.next/server/app/api/cli-tools/cowork-mcp-registry/route.js.nft.json +0 -1
  842. package/app/.next/server/app/api/cli-tools/cowork-mcp-tools/route.js +0 -2
  843. package/app/.next/server/app/api/cli-tools/cowork-mcp-tools/route.js.nft.json +0 -1
  844. package/app/.next/server/app/api/cli-tools/cowork-settings/route.js +0 -1
  845. package/app/.next/server/app/api/cli-tools/cowork-settings/route.js.nft.json +0 -1
  846. package/app/.next/server/app/api/cli-tools/deepseek-tui-settings/route.js +0 -9
  847. package/app/.next/server/app/api/cli-tools/deepseek-tui-settings/route.js.nft.json +0 -1
  848. package/app/.next/server/app/api/cli-tools/droid-settings/route.js +0 -2
  849. package/app/.next/server/app/api/cli-tools/droid-settings/route.js.nft.json +0 -1
  850. package/app/.next/server/app/api/cli-tools/hermes-settings/route.js +0 -10
  851. package/app/.next/server/app/api/cli-tools/hermes-settings/route.js.nft.json +0 -1
  852. package/app/.next/server/app/api/cli-tools/jcode-settings/route.js +0 -3
  853. package/app/.next/server/app/api/cli-tools/jcode-settings/route.js.nft.json +0 -1
  854. package/app/.next/server/app/api/cli-tools/kilo-settings/route.js +0 -2
  855. package/app/.next/server/app/api/cli-tools/kilo-settings/route.js.nft.json +0 -1
  856. package/app/.next/server/app/api/cli-tools/openclaw-settings/route.js +0 -2
  857. package/app/.next/server/app/api/cli-tools/openclaw-settings/route.js.nft.json +0 -1
  858. package/app/.next/server/app/api/cli-tools/opencode-settings/route.js +0 -2
  859. package/app/.next/server/app/api/cli-tools/opencode-settings/route.js.nft.json +0 -1
  860. package/app/.next/server/app/api/combos/[id]/route.js +0 -1
  861. package/app/.next/server/app/api/combos/[id]/route.js.nft.json +0 -1
  862. package/app/.next/server/app/api/combos/route.js +0 -1
  863. package/app/.next/server/app/api/combos/route.js.nft.json +0 -1
  864. package/app/.next/server/app/api/health/route.js +0 -1
  865. package/app/.next/server/app/api/health/route.js.nft.json +0 -1
  866. package/app/.next/server/app/api/init/route.js +0 -1
  867. package/app/.next/server/app/api/init/route.js.nft.json +0 -1
  868. package/app/.next/server/app/api/keys/[id]/route.js +0 -1
  869. package/app/.next/server/app/api/keys/[id]/route.js.nft.json +0 -1
  870. package/app/.next/server/app/api/keys/route.js +0 -1
  871. package/app/.next/server/app/api/keys/route.js.nft.json +0 -1
  872. package/app/.next/server/app/api/locale/route.js +0 -1
  873. package/app/.next/server/app/api/locale/route.js.nft.json +0 -1
  874. package/app/.next/server/app/api/mcp/[plugin]/message/route.js +0 -7
  875. package/app/.next/server/app/api/mcp/[plugin]/message/route.js.nft.json +0 -1
  876. package/app/.next/server/app/api/mcp/[plugin]/sse/route.js +0 -10
  877. package/app/.next/server/app/api/mcp/[plugin]/sse/route.js.nft.json +0 -1
  878. package/app/.next/server/app/api/media-providers/tts/deepgram/voices/route.js +0 -1
  879. package/app/.next/server/app/api/media-providers/tts/deepgram/voices/route.js.nft.json +0 -1
  880. package/app/.next/server/app/api/media-providers/tts/elevenlabs/voices/route.js +0 -1
  881. package/app/.next/server/app/api/media-providers/tts/elevenlabs/voices/route.js.nft.json +0 -1
  882. package/app/.next/server/app/api/media-providers/tts/inworld/voices/route.js +0 -1
  883. package/app/.next/server/app/api/media-providers/tts/inworld/voices/route.js.nft.json +0 -1
  884. package/app/.next/server/app/api/media-providers/tts/minimax/voices/route.js +0 -1
  885. package/app/.next/server/app/api/media-providers/tts/minimax/voices/route.js.nft.json +0 -1
  886. package/app/.next/server/app/api/media-providers/tts/voices/route.js +0 -1
  887. package/app/.next/server/app/api/media-providers/tts/voices/route.js.nft.json +0 -1
  888. package/app/.next/server/app/api/models/alias/route.js +0 -1
  889. package/app/.next/server/app/api/models/alias/route.js.nft.json +0 -1
  890. package/app/.next/server/app/api/models/availability/route.js +0 -1
  891. package/app/.next/server/app/api/models/availability/route.js.nft.json +0 -1
  892. package/app/.next/server/app/api/models/custom/route.js +0 -1
  893. package/app/.next/server/app/api/models/custom/route.js.nft.json +0 -1
  894. package/app/.next/server/app/api/models/disabled/route.js +0 -1
  895. package/app/.next/server/app/api/models/disabled/route.js.nft.json +0 -1
  896. package/app/.next/server/app/api/models/route.js +0 -1
  897. package/app/.next/server/app/api/models/route.js.nft.json +0 -1
  898. package/app/.next/server/app/api/models/test/route.js +0 -1
  899. package/app/.next/server/app/api/models/test/route.js.nft.json +0 -1
  900. package/app/.next/server/app/api/oauth/[provider]/[action]/route.js +0 -1
  901. package/app/.next/server/app/api/oauth/[provider]/[action]/route.js.nft.json +0 -1
  902. package/app/.next/server/app/api/oauth/codex/bulk-import/route.js +0 -1
  903. package/app/.next/server/app/api/oauth/codex/bulk-import/route.js.nft.json +0 -1
  904. package/app/.next/server/app/api/oauth/codex/import-token/route.js +0 -1
  905. package/app/.next/server/app/api/oauth/codex/import-token/route.js.nft.json +0 -1
  906. package/app/.next/server/app/api/oauth/cursor/auto-import/route.js +0 -4
  907. package/app/.next/server/app/api/oauth/cursor/auto-import/route.js.nft.json +0 -1
  908. package/app/.next/server/app/api/oauth/cursor/import/route.js +0 -1
  909. package/app/.next/server/app/api/oauth/cursor/import/route.js.nft.json +0 -1
  910. package/app/.next/server/app/api/oauth/gitlab/pat/route.js +0 -1
  911. package/app/.next/server/app/api/oauth/gitlab/pat/route.js.nft.json +0 -1
  912. package/app/.next/server/app/api/oauth/iflow/cookie/route.js +0 -1
  913. package/app/.next/server/app/api/oauth/iflow/cookie/route.js.nft.json +0 -1
  914. package/app/.next/server/app/api/oauth/kiro/auto-import/route.js +0 -1
  915. package/app/.next/server/app/api/oauth/kiro/auto-import/route.js.nft.json +0 -1
  916. package/app/.next/server/app/api/oauth/kiro/import/route.js +0 -1
  917. package/app/.next/server/app/api/oauth/kiro/import/route.js.nft.json +0 -1
  918. package/app/.next/server/app/api/oauth/kiro/social-authorize/route.js +0 -1
  919. package/app/.next/server/app/api/oauth/kiro/social-authorize/route.js.nft.json +0 -1
  920. package/app/.next/server/app/api/oauth/kiro/social-exchange/route.js +0 -1
  921. package/app/.next/server/app/api/oauth/kiro/social-exchange/route.js.nft.json +0 -1
  922. package/app/.next/server/app/api/pricing/route.js +0 -1
  923. package/app/.next/server/app/api/pricing/route.js.nft.json +0 -1
  924. package/app/.next/server/app/api/provider-nodes/[id]/route.js +0 -1
  925. package/app/.next/server/app/api/provider-nodes/[id]/route.js.nft.json +0 -1
  926. package/app/.next/server/app/api/provider-nodes/route.js +0 -1
  927. package/app/.next/server/app/api/provider-nodes/route.js.nft.json +0 -1
  928. package/app/.next/server/app/api/provider-nodes/validate/route.js +0 -1
  929. package/app/.next/server/app/api/provider-nodes/validate/route.js.nft.json +0 -1
  930. package/app/.next/server/app/api/providers/[id]/models/route.js +0 -1
  931. package/app/.next/server/app/api/providers/[id]/models/route.js.nft.json +0 -1
  932. package/app/.next/server/app/api/providers/[id]/route.js +0 -1
  933. package/app/.next/server/app/api/providers/[id]/route.js.nft.json +0 -1
  934. package/app/.next/server/app/api/providers/[id]/test/route.js +0 -1
  935. package/app/.next/server/app/api/providers/[id]/test/route.js.nft.json +0 -1
  936. package/app/.next/server/app/api/providers/[id]/test-models/route.js +0 -1
  937. package/app/.next/server/app/api/providers/[id]/test-models/route.js.nft.json +0 -1
  938. package/app/.next/server/app/api/providers/client/route.js +0 -1
  939. package/app/.next/server/app/api/providers/client/route.js.nft.json +0 -1
  940. package/app/.next/server/app/api/providers/kilo/free-models/route.js +0 -1
  941. package/app/.next/server/app/api/providers/kilo/free-models/route.js.nft.json +0 -1
  942. package/app/.next/server/app/api/providers/route.js +0 -1
  943. package/app/.next/server/app/api/providers/route.js.nft.json +0 -1
  944. package/app/.next/server/app/api/providers/suggested-models/route.js +0 -1
  945. package/app/.next/server/app/api/providers/suggested-models/route.js.nft.json +0 -1
  946. package/app/.next/server/app/api/providers/test-batch/route.js +0 -1
  947. package/app/.next/server/app/api/providers/test-batch/route.js.nft.json +0 -1
  948. package/app/.next/server/app/api/providers/validate/route.js +0 -1
  949. package/app/.next/server/app/api/providers/validate/route.js.nft.json +0 -1
  950. package/app/.next/server/app/api/proxy-pools/[id]/route.js +0 -1
  951. package/app/.next/server/app/api/proxy-pools/[id]/route.js.nft.json +0 -1
  952. package/app/.next/server/app/api/proxy-pools/[id]/test/route.js +0 -1
  953. package/app/.next/server/app/api/proxy-pools/[id]/test/route.js.nft.json +0 -1
  954. package/app/.next/server/app/api/proxy-pools/cloudflare-deploy/route.js +0 -43
  955. package/app/.next/server/app/api/proxy-pools/cloudflare-deploy/route.js.nft.json +0 -1
  956. package/app/.next/server/app/api/proxy-pools/deno-deploy/route.js +0 -40
  957. package/app/.next/server/app/api/proxy-pools/deno-deploy/route.js.nft.json +0 -1
  958. package/app/.next/server/app/api/proxy-pools/route.js +0 -1
  959. package/app/.next/server/app/api/proxy-pools/route.js.nft.json +0 -1
  960. package/app/.next/server/app/api/proxy-pools/vercel-deploy/route.js +0 -33
  961. package/app/.next/server/app/api/proxy-pools/vercel-deploy/route.js.nft.json +0 -1
  962. package/app/.next/server/app/api/settings/database/route.js +0 -1
  963. package/app/.next/server/app/api/settings/database/route.js.nft.json +0 -1
  964. package/app/.next/server/app/api/settings/proxy-test/route.js +0 -1
  965. package/app/.next/server/app/api/settings/proxy-test/route.js.nft.json +0 -1
  966. package/app/.next/server/app/api/settings/require-login/route.js +0 -1
  967. package/app/.next/server/app/api/settings/require-login/route.js.nft.json +0 -1
  968. package/app/.next/server/app/api/settings/route.js +0 -1
  969. package/app/.next/server/app/api/settings/route.js.nft.json +0 -1
  970. package/app/.next/server/app/api/shutdown/route.js +0 -1
  971. package/app/.next/server/app/api/shutdown/route.js.nft.json +0 -1
  972. package/app/.next/server/app/api/tags/route.js +0 -1
  973. package/app/.next/server/app/api/tags/route.js.nft.json +0 -1
  974. package/app/.next/server/app/api/translator/console-logs/route.js +0 -1
  975. package/app/.next/server/app/api/translator/console-logs/route.js.nft.json +0 -1
  976. package/app/.next/server/app/api/translator/console-logs/stream/route.js +0 -7
  977. package/app/.next/server/app/api/translator/console-logs/stream/route.js.nft.json +0 -1
  978. package/app/.next/server/app/api/translator/load/route.js +0 -1
  979. package/app/.next/server/app/api/translator/load/route.js.nft.json +0 -1
  980. package/app/.next/server/app/api/translator/save/route.js +0 -1
  981. package/app/.next/server/app/api/translator/save/route.js.nft.json +0 -1
  982. package/app/.next/server/app/api/translator/send/route.js +0 -1
  983. package/app/.next/server/app/api/translator/send/route.js.nft.json +0 -1
  984. package/app/.next/server/app/api/translator/translate/route.js +0 -1
  985. package/app/.next/server/app/api/translator/translate/route.js.nft.json +0 -1
  986. package/app/.next/server/app/api/tunnel/disable/route.js +0 -1
  987. package/app/.next/server/app/api/tunnel/disable/route.js.nft.json +0 -1
  988. package/app/.next/server/app/api/tunnel/enable/route.js +0 -1
  989. package/app/.next/server/app/api/tunnel/enable/route.js.nft.json +0 -1
  990. package/app/.next/server/app/api/tunnel/status/route.js +0 -1
  991. package/app/.next/server/app/api/tunnel/status/route.js.nft.json +0 -1
  992. package/app/.next/server/app/api/tunnel/tailscale-check/route.js +0 -1
  993. package/app/.next/server/app/api/tunnel/tailscale-check/route.js.nft.json +0 -1
  994. package/app/.next/server/app/api/tunnel/tailscale-disable/route.js +0 -1
  995. package/app/.next/server/app/api/tunnel/tailscale-disable/route.js.nft.json +0 -1
  996. package/app/.next/server/app/api/tunnel/tailscale-enable/route.js +0 -1
  997. package/app/.next/server/app/api/tunnel/tailscale-enable/route.js.nft.json +0 -1
  998. package/app/.next/server/app/api/tunnel/tailscale-install/route.js +0 -5
  999. package/app/.next/server/app/api/tunnel/tailscale-install/route.js.nft.json +0 -1
  1000. package/app/.next/server/app/api/usage/[connectionId]/route.js +0 -1
  1001. package/app/.next/server/app/api/usage/[connectionId]/route.js.nft.json +0 -1
  1002. package/app/.next/server/app/api/usage/api-keys/route.js +0 -1
  1003. package/app/.next/server/app/api/usage/api-keys/route.js.nft.json +0 -1
  1004. package/app/.next/server/app/api/usage/chart/route.js +0 -1
  1005. package/app/.next/server/app/api/usage/chart/route.js.nft.json +0 -1
  1006. package/app/.next/server/app/api/usage/history/route.js +0 -1
  1007. package/app/.next/server/app/api/usage/history/route.js.nft.json +0 -1
  1008. package/app/.next/server/app/api/usage/logs/route.js +0 -1
  1009. package/app/.next/server/app/api/usage/logs/route.js.nft.json +0 -1
  1010. package/app/.next/server/app/api/usage/providers/route.js +0 -1
  1011. package/app/.next/server/app/api/usage/providers/route.js.nft.json +0 -1
  1012. package/app/.next/server/app/api/usage/request-details/route.js +0 -1
  1013. package/app/.next/server/app/api/usage/request-details/route.js.nft.json +0 -1
  1014. package/app/.next/server/app/api/usage/request-logs/route.js +0 -1
  1015. package/app/.next/server/app/api/usage/request-logs/route.js.nft.json +0 -1
  1016. package/app/.next/server/app/api/usage/stats/route.js +0 -1
  1017. package/app/.next/server/app/api/usage/stats/route.js.nft.json +0 -1
  1018. package/app/.next/server/app/api/usage/stream/route.js +0 -7
  1019. package/app/.next/server/app/api/usage/stream/route.js.nft.json +0 -1
  1020. package/app/.next/server/app/api/users/[id]/route.js +0 -1
  1021. package/app/.next/server/app/api/users/[id]/route.js.nft.json +0 -1
  1022. package/app/.next/server/app/api/users/route.js +0 -1
  1023. package/app/.next/server/app/api/users/route.js.nft.json +0 -1
  1024. package/app/.next/server/app/api/v1/api/chat/route.js +0 -1
  1025. package/app/.next/server/app/api/v1/api/chat/route.js.nft.json +0 -1
  1026. package/app/.next/server/app/api/v1/audio/speech/route.js +0 -1
  1027. package/app/.next/server/app/api/v1/audio/speech/route.js.nft.json +0 -1
  1028. package/app/.next/server/app/api/v1/audio/transcriptions/route.js +0 -1
  1029. package/app/.next/server/app/api/v1/audio/transcriptions/route.js.nft.json +0 -1
  1030. package/app/.next/server/app/api/v1/audio/voices/route.js +0 -1
  1031. package/app/.next/server/app/api/v1/audio/voices/route.js.nft.json +0 -1
  1032. package/app/.next/server/app/api/v1/chat/completions/route.js +0 -1
  1033. package/app/.next/server/app/api/v1/chat/completions/route.js.nft.json +0 -1
  1034. package/app/.next/server/app/api/v1/embeddings/route.js +0 -1
  1035. package/app/.next/server/app/api/v1/embeddings/route.js.nft.json +0 -1
  1036. package/app/.next/server/app/api/v1/images/generations/route.js +0 -4
  1037. package/app/.next/server/app/api/v1/images/generations/route.js.nft.json +0 -1
  1038. package/app/.next/server/app/api/v1/messages/count_tokens/route.js +0 -1
  1039. package/app/.next/server/app/api/v1/messages/count_tokens/route.js.nft.json +0 -1
  1040. package/app/.next/server/app/api/v1/messages/route.js +0 -1
  1041. package/app/.next/server/app/api/v1/messages/route.js.nft.json +0 -1
  1042. package/app/.next/server/app/api/v1/models/[kind]/route.js +0 -1
  1043. package/app/.next/server/app/api/v1/models/[kind]/route.js.nft.json +0 -1
  1044. package/app/.next/server/app/api/v1/models/info/route.js +0 -1
  1045. package/app/.next/server/app/api/v1/models/info/route.js.nft.json +0 -1
  1046. package/app/.next/server/app/api/v1/models/route.js +0 -1
  1047. package/app/.next/server/app/api/v1/models/route.js.nft.json +0 -1
  1048. package/app/.next/server/app/api/v1/responses/compact/route.js +0 -1
  1049. package/app/.next/server/app/api/v1/responses/compact/route.js.nft.json +0 -1
  1050. package/app/.next/server/app/api/v1/responses/route.js +0 -1
  1051. package/app/.next/server/app/api/v1/responses/route.js.nft.json +0 -1
  1052. package/app/.next/server/app/api/v1/route.js +0 -1
  1053. package/app/.next/server/app/api/v1/route.js.nft.json +0 -1
  1054. package/app/.next/server/app/api/v1/search/route.js +0 -1
  1055. package/app/.next/server/app/api/v1/search/route.js.nft.json +0 -1
  1056. package/app/.next/server/app/api/v1/web/fetch/route.js +0 -1
  1057. package/app/.next/server/app/api/v1/web/fetch/route.js.nft.json +0 -1
  1058. package/app/.next/server/app/api/v1beta/models/[...path]/route.js +0 -1
  1059. package/app/.next/server/app/api/v1beta/models/[...path]/route.js.nft.json +0 -1
  1060. package/app/.next/server/app/api/v1beta/models/route.js +0 -1
  1061. package/app/.next/server/app/api/v1beta/models/route.js.nft.json +0 -1
  1062. package/app/.next/server/app/api/version/route.js +0 -1
  1063. package/app/.next/server/app/api/version/route.js.nft.json +0 -1
  1064. package/app/.next/server/app/api/version/shutdown/route.js +0 -1
  1065. package/app/.next/server/app/api/version/shutdown/route.js.nft.json +0 -1
  1066. package/app/.next/server/app/api/version/update/route.js +0 -1
  1067. package/app/.next/server/app/api/version/update/route.js.nft.json +0 -1
  1068. package/app/.next/server/app/callback/page.js +0 -2
  1069. package/app/.next/server/app/callback/page.js.nft.json +0 -1
  1070. package/app/.next/server/app/callback/page_client-reference-manifest.js +0 -1
  1071. package/app/.next/server/app/callback.html +0 -1
  1072. package/app/.next/server/app/callback.rsc +0 -23
  1073. package/app/.next/server/app/callback.segments/_full.segment.rsc +0 -23
  1074. package/app/.next/server/app/callback.segments/_head.segment.rsc +0 -6
  1075. package/app/.next/server/app/callback.segments/_index.segment.rsc +0 -8
  1076. package/app/.next/server/app/callback.segments/_tree.segment.rsc +0 -3
  1077. package/app/.next/server/app/callback.segments/callback/__PAGE__.segment.rsc +0 -9
  1078. package/app/.next/server/app/callback.segments/callback.segment.rsc +0 -5
  1079. package/app/.next/server/app/dashboard/settings/pricing/page.js +0 -2
  1080. package/app/.next/server/app/dashboard/settings/pricing/page.js.nft.json +0 -1
  1081. package/app/.next/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +0 -1
  1082. package/app/.next/server/app/dashboard/settings/pricing.html +0 -1
  1083. package/app/.next/server/app/dashboard/settings/pricing.rsc +0 -23
  1084. package/app/.next/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +0 -23
  1085. package/app/.next/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +0 -6
  1086. package/app/.next/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +0 -8
  1087. package/app/.next/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +0 -3
  1088. package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +0 -9
  1089. package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing.segment.rsc +0 -5
  1090. package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings.segment.rsc +0 -5
  1091. package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard.segment.rsc +0 -5
  1092. package/app/.next/server/app/favicon.ico/route.js +0 -1
  1093. package/app/.next/server/app/favicon.ico/route.js.nft.json +0 -1
  1094. package/app/.next/server/app/index.html +0 -1
  1095. package/app/.next/server/app/index.rsc +0 -18
  1096. package/app/.next/server/app/index.segments/__PAGE__.segment.rsc +0 -6
  1097. package/app/.next/server/app/index.segments/_full.segment.rsc +0 -18
  1098. package/app/.next/server/app/index.segments/_head.segment.rsc +0 -6
  1099. package/app/.next/server/app/index.segments/_index.segment.rsc +0 -8
  1100. package/app/.next/server/app/index.segments/_tree.segment.rsc +0 -3
  1101. package/app/.next/server/app/landing/page.js +0 -2
  1102. package/app/.next/server/app/landing/page.js.nft.json +0 -1
  1103. package/app/.next/server/app/landing/page_client-reference-manifest.js +0 -1
  1104. package/app/.next/server/app/landing.html +0 -1
  1105. package/app/.next/server/app/landing.rsc +0 -23
  1106. package/app/.next/server/app/landing.segments/_full.segment.rsc +0 -23
  1107. package/app/.next/server/app/landing.segments/_head.segment.rsc +0 -6
  1108. package/app/.next/server/app/landing.segments/_index.segment.rsc +0 -8
  1109. package/app/.next/server/app/landing.segments/_tree.segment.rsc +0 -3
  1110. package/app/.next/server/app/landing.segments/landing/__PAGE__.segment.rsc +0 -9
  1111. package/app/.next/server/app/landing.segments/landing.segment.rsc +0 -5
  1112. package/app/.next/server/app/login/page.js +0 -2
  1113. package/app/.next/server/app/login/page.js.nft.json +0 -1
  1114. package/app/.next/server/app/login/page_client-reference-manifest.js +0 -1
  1115. package/app/.next/server/app/login.html +0 -1
  1116. package/app/.next/server/app/login.rsc +0 -24
  1117. package/app/.next/server/app/login.segments/_full.segment.rsc +0 -24
  1118. package/app/.next/server/app/login.segments/_head.segment.rsc +0 -6
  1119. package/app/.next/server/app/login.segments/_index.segment.rsc +0 -8
  1120. package/app/.next/server/app/login.segments/_tree.segment.rsc +0 -4
  1121. package/app/.next/server/app/login.segments/login/__PAGE__.segment.rsc +0 -10
  1122. package/app/.next/server/app/login.segments/login.segment.rsc +0 -5
  1123. package/app/.next/server/app/manifest.webmanifest/route.js +0 -16
  1124. package/app/.next/server/app/manifest.webmanifest/route.js.nft.json +0 -1
  1125. package/app/.next/server/app/page.js +0 -2
  1126. package/app/.next/server/app/page.js.nft.json +0 -1
  1127. package/app/.next/server/app/page_client-reference-manifest.js +0 -1
  1128. package/app/.next/server/app-paths-manifest.json +0 -165
  1129. package/app/.next/server/chunks/1172.js +0 -1
  1130. package/app/.next/server/chunks/1350.js +0 -2
  1131. package/app/.next/server/chunks/1476.js +0 -1
  1132. package/app/.next/server/chunks/1531.js +0 -1
  1133. package/app/.next/server/chunks/1813.js +0 -1
  1134. package/app/.next/server/chunks/2059.js +0 -1
  1135. package/app/.next/server/chunks/2409.js +0 -1
  1136. package/app/.next/server/chunks/2560.js +0 -1
  1137. package/app/.next/server/chunks/2722.js +0 -53
  1138. package/app/.next/server/chunks/2750.js +0 -31
  1139. package/app/.next/server/chunks/3104.js +0 -43
  1140. package/app/.next/server/chunks/319.js +0 -45
  1141. package/app/.next/server/chunks/3205.js +0 -1
  1142. package/app/.next/server/chunks/365.js +0 -1
  1143. package/app/.next/server/chunks/3663.js +0 -1
  1144. package/app/.next/server/chunks/3913.js +0 -64
  1145. package/app/.next/server/chunks/412.js +0 -7
  1146. package/app/.next/server/chunks/4177.js +0 -1
  1147. package/app/.next/server/chunks/4404.js +0 -1
  1148. package/app/.next/server/chunks/4565.js +0 -3
  1149. package/app/.next/server/chunks/4922.js +0 -9
  1150. package/app/.next/server/chunks/5681.js +0 -1
  1151. package/app/.next/server/chunks/6001.js +0 -1
  1152. package/app/.next/server/chunks/6108.js +0 -1
  1153. package/app/.next/server/chunks/6327.js +0 -1
  1154. package/app/.next/server/chunks/7221.js +0 -1
  1155. package/app/.next/server/chunks/7341.js +0 -1
  1156. package/app/.next/server/chunks/7540.js +0 -67
  1157. package/app/.next/server/chunks/7774.js +0 -120
  1158. package/app/.next/server/chunks/7879.js +0 -10
  1159. package/app/.next/server/chunks/7937.js +0 -186
  1160. package/app/.next/server/chunks/8220.js +0 -1
  1161. package/app/.next/server/chunks/8238.js +0 -1
  1162. package/app/.next/server/chunks/8342.js +0 -1
  1163. package/app/.next/server/chunks/8895.js +0 -55
  1164. package/app/.next/server/chunks/9203.js +0 -1
  1165. package/app/.next/server/chunks/9259.js +0 -3
  1166. package/app/.next/server/chunks/9489.js +0 -1
  1167. package/app/.next/server/chunks/9501.js +0 -63
  1168. package/app/.next/server/chunks/9660.js +0 -1
  1169. package/app/.next/server/chunks/9713.js +0 -1
  1170. package/app/.next/server/chunks/9718.js +0 -1
  1171. package/app/.next/server/chunks/9856.js +0 -1
  1172. package/app/.next/server/middleware-build-manifest.js +0 -1
  1173. package/app/.next/server/middleware.js +0 -18
  1174. package/app/.next/server/next-font-manifest.js +0 -1
  1175. package/app/.next/server/next-font-manifest.json +0 -1
  1176. package/app/.next/server/pages/404.html +0 -1
  1177. package/app/.next/server/pages/500.html +0 -1
  1178. package/app/.next/server/server-reference-manifest.js +0 -1
  1179. package/app/.next/server/server-reference-manifest.json +0 -1
  1180. package/app/.next/static/MxcY0EY8eMa4ouCwsP4Cl/_buildManifest.js +0 -1
  1181. package/app/.next/static/chunks/1321-134c6f0196307f47.js +0 -1
  1182. package/app/.next/static/chunks/4072-e3cbc885320b3535.js +0 -3
  1183. package/app/.next/static/chunks/5497-61f5cbbdfc3da704.js +0 -7
  1184. package/app/.next/static/chunks/6069-130fdae38088e4e7.js +0 -53
  1185. package/app/.next/static/chunks/app/(dashboard)/dashboard/admin/keys/page-0d5b57da4abb6962.js +0 -1
  1186. package/app/.next/static/chunks/app/(dashboard)/dashboard/admin/users/page-972703d59d2a3986.js +0 -1
  1187. package/app/.next/static/chunks/app/(dashboard)/dashboard/basic-chat/page-e1bd21507327d2bc.js +0 -1
  1188. package/app/.next/static/chunks/app/(dashboard)/dashboard/cli-tools/[toolId]/page-ba3be29df191769b.js +0 -1
  1189. package/app/.next/static/chunks/app/(dashboard)/dashboard/cli-tools/page-a0eaec978d93b101.js +0 -1
  1190. package/app/.next/static/chunks/app/(dashboard)/dashboard/combos/page-ca6a0263fcfc70df.js +0 -1
  1191. package/app/.next/static/chunks/app/(dashboard)/dashboard/console-log/page-57065ce85ec52703.js +0 -1
  1192. package/app/.next/static/chunks/app/(dashboard)/dashboard/endpoint/page-c8f75b084231c080.js +0 -1
  1193. package/app/.next/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page-e43ee64cc1f1547c.js +0 -59
  1194. package/app/.next/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/page-c64dd1d0b2bd9caf.js +0 -1
  1195. package/app/.next/static/chunks/app/(dashboard)/dashboard/media-providers/combo/[id]/page-9586c0b67f30a21b.js +0 -4
  1196. package/app/.next/static/chunks/app/(dashboard)/dashboard/media-providers/web/page-c7fbf29bdbdabee9.js +0 -1
  1197. package/app/.next/static/chunks/app/(dashboard)/dashboard/mitm/page-b52d2279e8eff62d.js +0 -1
  1198. package/app/.next/static/chunks/app/(dashboard)/dashboard/page-8fceba7ec6407143.js +0 -1
  1199. package/app/.next/static/chunks/app/(dashboard)/dashboard/profile/page-96d7ec789592a2ec.js +0 -1
  1200. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-a2ec9b595a5c5600.js +0 -10
  1201. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/new/page-0bf3048423ab0128.js +0 -1
  1202. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/page-979e3e3663264d2b.js +0 -1
  1203. package/app/.next/static/chunks/app/(dashboard)/dashboard/proxy-pools/page-77e1358581cbeecd.js +0 -4
  1204. package/app/.next/static/chunks/app/(dashboard)/dashboard/quota/page-51f915ba68f44424.js +0 -2
  1205. package/app/.next/static/chunks/app/(dashboard)/dashboard/skills/page-9202b5ce0650c3ab.js +0 -1
  1206. package/app/.next/static/chunks/app/(dashboard)/dashboard/translator/page-8d41d89fe12ae485.js +0 -1
  1207. package/app/.next/static/chunks/app/(dashboard)/dashboard/usage/page-18d6399108c458a6.js +0 -1
  1208. package/app/.next/static/chunks/app/(dashboard)/dashboard/user/page-12765c664b3c1f6d.js +0 -4
  1209. package/app/.next/static/chunks/app/(dashboard)/layout-2b26025389c75878.js +0 -1
  1210. package/app/.next/static/chunks/app/_global-error/page-8d41d89fe12ae485.js +0 -1
  1211. package/app/.next/static/chunks/app/api/auth/login/route-8d41d89fe12ae485.js +0 -1
  1212. package/app/.next/static/chunks/app/api/auth/logout/route-8d41d89fe12ae485.js +0 -1
  1213. package/app/.next/static/chunks/app/api/auth/me/route-8d41d89fe12ae485.js +0 -1
  1214. package/app/.next/static/chunks/app/api/auth/oidc/callback/route-8d41d89fe12ae485.js +0 -1
  1215. package/app/.next/static/chunks/app/api/auth/oidc/start/route-8d41d89fe12ae485.js +0 -1
  1216. package/app/.next/static/chunks/app/api/auth/oidc/test/route-8d41d89fe12ae485.js +0 -1
  1217. package/app/.next/static/chunks/app/api/auth/reset-password/route-8d41d89fe12ae485.js +0 -1
  1218. package/app/.next/static/chunks/app/api/auth/status/route-8d41d89fe12ae485.js +0 -1
  1219. package/app/.next/static/chunks/app/api/cli-tools/all-statuses/route-8d41d89fe12ae485.js +0 -1
  1220. package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-8d41d89fe12ae485.js +0 -1
  1221. package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/route-8d41d89fe12ae485.js +0 -1
  1222. package/app/.next/static/chunks/app/api/cli-tools/claude-settings/route-8d41d89fe12ae485.js +0 -1
  1223. package/app/.next/static/chunks/app/api/cli-tools/cline-settings/route-8d41d89fe12ae485.js +0 -1
  1224. package/app/.next/static/chunks/app/api/cli-tools/codex-settings/activate-account/route-8d41d89fe12ae485.js +0 -1
  1225. package/app/.next/static/chunks/app/api/cli-tools/codex-settings/route-8d41d89fe12ae485.js +0 -1
  1226. package/app/.next/static/chunks/app/api/cli-tools/copilot-settings/route-8d41d89fe12ae485.js +0 -1
  1227. package/app/.next/static/chunks/app/api/cli-tools/cowork-mcp-registry/route-8d41d89fe12ae485.js +0 -1
  1228. package/app/.next/static/chunks/app/api/cli-tools/cowork-mcp-tools/route-8d41d89fe12ae485.js +0 -1
  1229. package/app/.next/static/chunks/app/api/cli-tools/cowork-settings/route-8d41d89fe12ae485.js +0 -1
  1230. package/app/.next/static/chunks/app/api/cli-tools/deepseek-tui-settings/route-8d41d89fe12ae485.js +0 -1
  1231. package/app/.next/static/chunks/app/api/cli-tools/droid-settings/route-8d41d89fe12ae485.js +0 -1
  1232. package/app/.next/static/chunks/app/api/cli-tools/hermes-settings/route-8d41d89fe12ae485.js +0 -1
  1233. package/app/.next/static/chunks/app/api/cli-tools/jcode-settings/route-8d41d89fe12ae485.js +0 -1
  1234. package/app/.next/static/chunks/app/api/cli-tools/kilo-settings/route-8d41d89fe12ae485.js +0 -1
  1235. package/app/.next/static/chunks/app/api/cli-tools/openclaw-settings/route-8d41d89fe12ae485.js +0 -1
  1236. package/app/.next/static/chunks/app/api/cli-tools/opencode-settings/route-8d41d89fe12ae485.js +0 -1
  1237. package/app/.next/static/chunks/app/api/combos/[id]/route-8d41d89fe12ae485.js +0 -1
  1238. package/app/.next/static/chunks/app/api/combos/route-8d41d89fe12ae485.js +0 -1
  1239. package/app/.next/static/chunks/app/api/health/route-8d41d89fe12ae485.js +0 -1
  1240. package/app/.next/static/chunks/app/api/init/route-8d41d89fe12ae485.js +0 -1
  1241. package/app/.next/static/chunks/app/api/keys/[id]/route-8d41d89fe12ae485.js +0 -1
  1242. package/app/.next/static/chunks/app/api/keys/route-8d41d89fe12ae485.js +0 -1
  1243. package/app/.next/static/chunks/app/api/locale/route-8d41d89fe12ae485.js +0 -1
  1244. package/app/.next/static/chunks/app/api/mcp/[plugin]/message/route-8d41d89fe12ae485.js +0 -1
  1245. package/app/.next/static/chunks/app/api/mcp/[plugin]/sse/route-8d41d89fe12ae485.js +0 -1
  1246. package/app/.next/static/chunks/app/api/media-providers/tts/deepgram/voices/route-8d41d89fe12ae485.js +0 -1
  1247. package/app/.next/static/chunks/app/api/media-providers/tts/elevenlabs/voices/route-8d41d89fe12ae485.js +0 -1
  1248. package/app/.next/static/chunks/app/api/media-providers/tts/inworld/voices/route-8d41d89fe12ae485.js +0 -1
  1249. package/app/.next/static/chunks/app/api/media-providers/tts/minimax/voices/route-8d41d89fe12ae485.js +0 -1
  1250. package/app/.next/static/chunks/app/api/media-providers/tts/voices/route-8d41d89fe12ae485.js +0 -1
  1251. package/app/.next/static/chunks/app/api/models/alias/route-8d41d89fe12ae485.js +0 -1
  1252. package/app/.next/static/chunks/app/api/models/availability/route-8d41d89fe12ae485.js +0 -1
  1253. package/app/.next/static/chunks/app/api/models/custom/route-8d41d89fe12ae485.js +0 -1
  1254. package/app/.next/static/chunks/app/api/models/disabled/route-8d41d89fe12ae485.js +0 -1
  1255. package/app/.next/static/chunks/app/api/models/route-8d41d89fe12ae485.js +0 -1
  1256. package/app/.next/static/chunks/app/api/models/test/route-8d41d89fe12ae485.js +0 -1
  1257. package/app/.next/static/chunks/app/api/oauth/[provider]/[action]/route-8d41d89fe12ae485.js +0 -1
  1258. package/app/.next/static/chunks/app/api/oauth/codex/bulk-import/route-8d41d89fe12ae485.js +0 -1
  1259. package/app/.next/static/chunks/app/api/oauth/codex/import-token/route-8d41d89fe12ae485.js +0 -1
  1260. package/app/.next/static/chunks/app/api/oauth/cursor/auto-import/route-8d41d89fe12ae485.js +0 -1
  1261. package/app/.next/static/chunks/app/api/oauth/cursor/import/route-8d41d89fe12ae485.js +0 -1
  1262. package/app/.next/static/chunks/app/api/oauth/gitlab/pat/route-8d41d89fe12ae485.js +0 -1
  1263. package/app/.next/static/chunks/app/api/oauth/iflow/cookie/route-8d41d89fe12ae485.js +0 -1
  1264. package/app/.next/static/chunks/app/api/oauth/kiro/auto-import/route-8d41d89fe12ae485.js +0 -1
  1265. package/app/.next/static/chunks/app/api/oauth/kiro/import/route-8d41d89fe12ae485.js +0 -1
  1266. package/app/.next/static/chunks/app/api/oauth/kiro/social-authorize/route-8d41d89fe12ae485.js +0 -1
  1267. package/app/.next/static/chunks/app/api/oauth/kiro/social-exchange/route-8d41d89fe12ae485.js +0 -1
  1268. package/app/.next/static/chunks/app/api/pricing/route-8d41d89fe12ae485.js +0 -1
  1269. package/app/.next/static/chunks/app/api/provider-nodes/[id]/route-8d41d89fe12ae485.js +0 -1
  1270. package/app/.next/static/chunks/app/api/provider-nodes/route-8d41d89fe12ae485.js +0 -1
  1271. package/app/.next/static/chunks/app/api/provider-nodes/validate/route-8d41d89fe12ae485.js +0 -1
  1272. package/app/.next/static/chunks/app/api/providers/[id]/models/route-8d41d89fe12ae485.js +0 -1
  1273. package/app/.next/static/chunks/app/api/providers/[id]/route-8d41d89fe12ae485.js +0 -1
  1274. package/app/.next/static/chunks/app/api/providers/[id]/test/route-8d41d89fe12ae485.js +0 -1
  1275. package/app/.next/static/chunks/app/api/providers/[id]/test-models/route-8d41d89fe12ae485.js +0 -1
  1276. package/app/.next/static/chunks/app/api/providers/client/route-8d41d89fe12ae485.js +0 -1
  1277. package/app/.next/static/chunks/app/api/providers/kilo/free-models/route-8d41d89fe12ae485.js +0 -1
  1278. package/app/.next/static/chunks/app/api/providers/route-8d41d89fe12ae485.js +0 -1
  1279. package/app/.next/static/chunks/app/api/providers/suggested-models/route-8d41d89fe12ae485.js +0 -1
  1280. package/app/.next/static/chunks/app/api/providers/test-batch/route-8d41d89fe12ae485.js +0 -1
  1281. package/app/.next/static/chunks/app/api/providers/validate/route-8d41d89fe12ae485.js +0 -1
  1282. package/app/.next/static/chunks/app/api/proxy-pools/[id]/route-8d41d89fe12ae485.js +0 -1
  1283. package/app/.next/static/chunks/app/api/proxy-pools/[id]/test/route-8d41d89fe12ae485.js +0 -1
  1284. package/app/.next/static/chunks/app/api/proxy-pools/cloudflare-deploy/route-8d41d89fe12ae485.js +0 -1
  1285. package/app/.next/static/chunks/app/api/proxy-pools/deno-deploy/route-8d41d89fe12ae485.js +0 -1
  1286. package/app/.next/static/chunks/app/api/proxy-pools/route-8d41d89fe12ae485.js +0 -1
  1287. package/app/.next/static/chunks/app/api/proxy-pools/vercel-deploy/route-8d41d89fe12ae485.js +0 -1
  1288. package/app/.next/static/chunks/app/api/settings/database/route-8d41d89fe12ae485.js +0 -1
  1289. package/app/.next/static/chunks/app/api/settings/proxy-test/route-8d41d89fe12ae485.js +0 -1
  1290. package/app/.next/static/chunks/app/api/settings/require-login/route-8d41d89fe12ae485.js +0 -1
  1291. package/app/.next/static/chunks/app/api/settings/route-8d41d89fe12ae485.js +0 -1
  1292. package/app/.next/static/chunks/app/api/shutdown/route-8d41d89fe12ae485.js +0 -1
  1293. package/app/.next/static/chunks/app/api/tags/route-8d41d89fe12ae485.js +0 -1
  1294. package/app/.next/static/chunks/app/api/translator/console-logs/route-8d41d89fe12ae485.js +0 -1
  1295. package/app/.next/static/chunks/app/api/translator/console-logs/stream/route-8d41d89fe12ae485.js +0 -1
  1296. package/app/.next/static/chunks/app/api/translator/load/route-8d41d89fe12ae485.js +0 -1
  1297. package/app/.next/static/chunks/app/api/translator/save/route-8d41d89fe12ae485.js +0 -1
  1298. package/app/.next/static/chunks/app/api/translator/send/route-8d41d89fe12ae485.js +0 -1
  1299. package/app/.next/static/chunks/app/api/translator/translate/route-8d41d89fe12ae485.js +0 -1
  1300. package/app/.next/static/chunks/app/api/tunnel/disable/route-8d41d89fe12ae485.js +0 -1
  1301. package/app/.next/static/chunks/app/api/tunnel/enable/route-8d41d89fe12ae485.js +0 -1
  1302. package/app/.next/static/chunks/app/api/tunnel/status/route-8d41d89fe12ae485.js +0 -1
  1303. package/app/.next/static/chunks/app/api/tunnel/tailscale-check/route-8d41d89fe12ae485.js +0 -1
  1304. package/app/.next/static/chunks/app/api/tunnel/tailscale-disable/route-8d41d89fe12ae485.js +0 -1
  1305. package/app/.next/static/chunks/app/api/tunnel/tailscale-enable/route-8d41d89fe12ae485.js +0 -1
  1306. package/app/.next/static/chunks/app/api/tunnel/tailscale-install/route-8d41d89fe12ae485.js +0 -1
  1307. package/app/.next/static/chunks/app/api/usage/[connectionId]/route-8d41d89fe12ae485.js +0 -1
  1308. package/app/.next/static/chunks/app/api/usage/api-keys/route-8d41d89fe12ae485.js +0 -1
  1309. package/app/.next/static/chunks/app/api/usage/chart/route-8d41d89fe12ae485.js +0 -1
  1310. package/app/.next/static/chunks/app/api/usage/history/route-8d41d89fe12ae485.js +0 -1
  1311. package/app/.next/static/chunks/app/api/usage/logs/route-8d41d89fe12ae485.js +0 -1
  1312. package/app/.next/static/chunks/app/api/usage/providers/route-8d41d89fe12ae485.js +0 -1
  1313. package/app/.next/static/chunks/app/api/usage/request-details/route-8d41d89fe12ae485.js +0 -1
  1314. package/app/.next/static/chunks/app/api/usage/request-logs/route-8d41d89fe12ae485.js +0 -1
  1315. package/app/.next/static/chunks/app/api/usage/stats/route-8d41d89fe12ae485.js +0 -1
  1316. package/app/.next/static/chunks/app/api/usage/stream/route-8d41d89fe12ae485.js +0 -1
  1317. package/app/.next/static/chunks/app/api/users/[id]/route-8d41d89fe12ae485.js +0 -1
  1318. package/app/.next/static/chunks/app/api/users/route-8d41d89fe12ae485.js +0 -1
  1319. package/app/.next/static/chunks/app/api/v1/api/chat/route-8d41d89fe12ae485.js +0 -1
  1320. package/app/.next/static/chunks/app/api/v1/audio/speech/route-8d41d89fe12ae485.js +0 -1
  1321. package/app/.next/static/chunks/app/api/v1/audio/transcriptions/route-8d41d89fe12ae485.js +0 -1
  1322. package/app/.next/static/chunks/app/api/v1/audio/voices/route-8d41d89fe12ae485.js +0 -1
  1323. package/app/.next/static/chunks/app/api/v1/chat/completions/route-8d41d89fe12ae485.js +0 -1
  1324. package/app/.next/static/chunks/app/api/v1/embeddings/route-8d41d89fe12ae485.js +0 -1
  1325. package/app/.next/static/chunks/app/api/v1/images/generations/route-8d41d89fe12ae485.js +0 -1
  1326. package/app/.next/static/chunks/app/api/v1/messages/count_tokens/route-8d41d89fe12ae485.js +0 -1
  1327. package/app/.next/static/chunks/app/api/v1/messages/route-8d41d89fe12ae485.js +0 -1
  1328. package/app/.next/static/chunks/app/api/v1/models/[kind]/route-8d41d89fe12ae485.js +0 -1
  1329. package/app/.next/static/chunks/app/api/v1/models/info/route-8d41d89fe12ae485.js +0 -1
  1330. package/app/.next/static/chunks/app/api/v1/models/route-8d41d89fe12ae485.js +0 -1
  1331. package/app/.next/static/chunks/app/api/v1/responses/compact/route-8d41d89fe12ae485.js +0 -1
  1332. package/app/.next/static/chunks/app/api/v1/responses/route-8d41d89fe12ae485.js +0 -1
  1333. package/app/.next/static/chunks/app/api/v1/route-8d41d89fe12ae485.js +0 -1
  1334. package/app/.next/static/chunks/app/api/v1/search/route-8d41d89fe12ae485.js +0 -1
  1335. package/app/.next/static/chunks/app/api/v1/web/fetch/route-8d41d89fe12ae485.js +0 -1
  1336. package/app/.next/static/chunks/app/api/v1beta/models/[...path]/route-8d41d89fe12ae485.js +0 -1
  1337. package/app/.next/static/chunks/app/api/v1beta/models/route-8d41d89fe12ae485.js +0 -1
  1338. package/app/.next/static/chunks/app/api/version/route-8d41d89fe12ae485.js +0 -1
  1339. package/app/.next/static/chunks/app/api/version/shutdown/route-8d41d89fe12ae485.js +0 -1
  1340. package/app/.next/static/chunks/app/api/version/update/route-8d41d89fe12ae485.js +0 -1
  1341. package/app/.next/static/chunks/app/dashboard/settings/pricing/page-9d24273d41fadd28.js +0 -1
  1342. package/app/.next/static/chunks/app/layout-2f20e93bb64f203d.js +0 -1
  1343. package/app/.next/static/chunks/app/login/page-3192fc777d7b8d4d.js +0 -1
  1344. package/app/.next/static/chunks/app/manifest.webmanifest/route-8d41d89fe12ae485.js +0 -1
  1345. package/app/.next/static/chunks/app/page-8d41d89fe12ae485.js +0 -1
  1346. package/app/.next/static/chunks/next/dist/client/components/builtin/app-error-8d41d89fe12ae485.js +0 -1
  1347. package/app/.next/static/chunks/next/dist/client/components/builtin/forbidden-8d41d89fe12ae485.js +0 -1
  1348. package/app/.next/static/chunks/next/dist/client/components/builtin/not-found-8d41d89fe12ae485.js +0 -1
  1349. package/app/.next/static/chunks/next/dist/client/components/builtin/unauthorized-8d41d89fe12ae485.js +0 -1
  1350. package/app/.next/static/chunks/webpack-b9b0d264958323b9.js +0 -1
  1351. package/app/.next/static/css/f240ded5456043a2.css +0 -1
  1352. package/app/.next/static/css/fe3b2b4e527f4e99.css +0 -1
  1353. package/app/node_modules/@img/colour/color.cjs +0 -1596
  1354. package/app/node_modules/@img/colour/index.cjs +0 -1
  1355. package/app/node_modules/@img/colour/package.json +0 -58
  1356. package/app/node_modules/@img/sharp-darwin-arm64/LICENSE +0 -191
  1357. package/app/node_modules/@img/sharp-darwin-arm64/lib/sharp-darwin-arm64.node +0 -0
  1358. package/app/node_modules/@img/sharp-darwin-arm64/package.json +0 -40
  1359. package/app/node_modules/@img/sharp-libvips-darwin-arm64/lib/index.js +0 -1
  1360. package/app/node_modules/@img/sharp-libvips-darwin-arm64/lib/libvips-cpp.8.17.3.dylib +0 -0
  1361. package/app/node_modules/@img/sharp-libvips-darwin-arm64/package.json +0 -36
  1362. package/app/node_modules/@img/sharp-libvips-darwin-arm64/versions.json +0 -30
  1363. package/app/node_modules/better-sqlite3/build/Release/better_sqlite3.node +0 -0
  1364. package/app/node_modules/better-sqlite3/lib/database.js +0 -90
  1365. package/app/node_modules/better-sqlite3/lib/index.js +0 -3
  1366. package/app/node_modules/better-sqlite3/lib/methods/aggregate.js +0 -43
  1367. package/app/node_modules/better-sqlite3/lib/methods/backup.js +0 -67
  1368. package/app/node_modules/better-sqlite3/lib/methods/function.js +0 -31
  1369. package/app/node_modules/better-sqlite3/lib/methods/inspect.js +0 -7
  1370. package/app/node_modules/better-sqlite3/lib/methods/pragma.js +0 -12
  1371. package/app/node_modules/better-sqlite3/lib/methods/serialize.js +0 -16
  1372. package/app/node_modules/better-sqlite3/lib/methods/table.js +0 -189
  1373. package/app/node_modules/better-sqlite3/lib/methods/transaction.js +0 -78
  1374. package/app/node_modules/better-sqlite3/lib/methods/wrappers.js +0 -54
  1375. package/app/node_modules/better-sqlite3/lib/sqlite-error.js +0 -20
  1376. package/app/node_modules/better-sqlite3/lib/util.js +0 -12
  1377. package/app/node_modules/better-sqlite3/package.json +0 -59
  1378. package/app/node_modules/detect-libc/lib/detect-libc.js +0 -313
  1379. package/app/node_modules/detect-libc/lib/elf.js +0 -39
  1380. package/app/node_modules/detect-libc/lib/filesystem.js +0 -51
  1381. package/app/node_modules/detect-libc/lib/process.js +0 -24
  1382. package/app/node_modules/detect-libc/package.json +0 -44
  1383. package/app/node_modules/sharp/lib/channel.js +0 -177
  1384. package/app/node_modules/sharp/lib/colour.js +0 -195
  1385. package/app/node_modules/sharp/lib/composite.js +0 -212
  1386. package/app/node_modules/sharp/lib/constructor.js +0 -499
  1387. package/app/node_modules/sharp/lib/index.js +0 -16
  1388. package/app/node_modules/sharp/lib/input.js +0 -809
  1389. package/app/node_modules/sharp/lib/is.js +0 -143
  1390. package/app/node_modules/sharp/lib/libvips.js +0 -207
  1391. package/app/node_modules/sharp/lib/operation.js +0 -1016
  1392. package/app/node_modules/sharp/lib/output.js +0 -1666
  1393. package/app/node_modules/sharp/lib/resize.js +0 -595
  1394. package/app/node_modules/sharp/lib/sharp.js +0 -121
  1395. package/app/node_modules/sharp/lib/utility.js +0 -291
  1396. package/app/node_modules/sharp/node_modules/semver/classes/comparator.js +0 -143
  1397. package/app/node_modules/sharp/node_modules/semver/classes/range.js +0 -557
  1398. package/app/node_modules/sharp/node_modules/semver/classes/semver.js +0 -333
  1399. package/app/node_modules/sharp/node_modules/semver/functions/cmp.js +0 -54
  1400. package/app/node_modules/sharp/node_modules/semver/functions/coerce.js +0 -62
  1401. package/app/node_modules/sharp/node_modules/semver/functions/compare.js +0 -7
  1402. package/app/node_modules/sharp/node_modules/semver/functions/eq.js +0 -5
  1403. package/app/node_modules/sharp/node_modules/semver/functions/gt.js +0 -5
  1404. package/app/node_modules/sharp/node_modules/semver/functions/gte.js +0 -5
  1405. package/app/node_modules/sharp/node_modules/semver/functions/lt.js +0 -5
  1406. package/app/node_modules/sharp/node_modules/semver/functions/lte.js +0 -5
  1407. package/app/node_modules/sharp/node_modules/semver/functions/neq.js +0 -5
  1408. package/app/node_modules/sharp/node_modules/semver/functions/parse.js +0 -18
  1409. package/app/node_modules/sharp/node_modules/semver/functions/satisfies.js +0 -12
  1410. package/app/node_modules/sharp/node_modules/semver/internal/constants.js +0 -37
  1411. package/app/node_modules/sharp/node_modules/semver/internal/debug.js +0 -11
  1412. package/app/node_modules/sharp/node_modules/semver/internal/identifiers.js +0 -29
  1413. package/app/node_modules/sharp/node_modules/semver/internal/lrucache.js +0 -42
  1414. package/app/node_modules/sharp/node_modules/semver/internal/parse-options.js +0 -17
  1415. package/app/node_modules/sharp/node_modules/semver/internal/re.js +0 -223
  1416. package/app/node_modules/sharp/node_modules/semver/package.json +0 -78
  1417. package/app/node_modules/sharp/package.json +0 -202
  1418. package/app/src/mitm/antigravityIdeVersion.js +0 -50
  1419. package/app/src/mitm/cert/generate.js +0 -32
  1420. package/app/src/mitm/cert/install.js +0 -269
  1421. package/app/src/mitm/cert/rootCA.js +0 -173
  1422. package/app/src/mitm/config.js +0 -89
  1423. package/app/src/mitm/dbReader.js +0 -22
  1424. package/app/src/mitm/dns/dnsConfig.js +0 -266
  1425. package/app/src/mitm/handlers/antigravity.js +0 -33
  1426. package/app/src/mitm/handlers/base.js +0 -226
  1427. package/app/src/mitm/handlers/copilot.js +0 -35
  1428. package/app/src/mitm/handlers/cursor.js +0 -15
  1429. package/app/src/mitm/handlers/kiro.js +0 -526
  1430. package/app/src/mitm/logger.js +0 -106
  1431. package/app/src/mitm/manager.js +0 -851
  1432. package/app/src/mitm/paths.js +0 -32
  1433. package/app/src/mitm/winElevated.js +0 -81
  1434. package/app/src/shared/constants/mitmToolHosts.js +0 -12
  1435. /package/app/{.next → .next-cli-build}/package.json +0 -0
  1436. /package/app/{.next → .next-cli-build}/react-loadable-manifest.json +0 -0
  1437. /package/app/{.next → .next-cli-build}/server/app/_global-error.meta +0 -0
  1438. /package/app/{.next → .next-cli-build}/server/app/_not-found.meta +0 -0
  1439. /package/app/{.next → .next-cli-build}/server/app/api/auth/login/route_client-reference-manifest.js +0 -0
  1440. /package/app/{.next → .next-cli-build}/server/app/api/auth/logout/route_client-reference-manifest.js +0 -0
  1441. /package/app/{.next → .next-cli-build}/server/app/api/auth/me/route_client-reference-manifest.js +0 -0
  1442. /package/app/{.next → .next-cli-build}/server/app/api/auth/oidc/callback/route_client-reference-manifest.js +0 -0
  1443. /package/app/{.next → .next-cli-build}/server/app/api/auth/oidc/start/route_client-reference-manifest.js +0 -0
  1444. /package/app/{.next → .next-cli-build}/server/app/api/auth/oidc/test/route_client-reference-manifest.js +0 -0
  1445. /package/app/{.next → .next-cli-build}/server/app/api/auth/reset-password/route_client-reference-manifest.js +0 -0
  1446. /package/app/{.next → .next-cli-build}/server/app/api/auth/status/route_client-reference-manifest.js +0 -0
  1447. /package/app/{.next → .next-cli-build}/server/app/api/cli-tools/all-statuses/route_client-reference-manifest.js +0 -0
  1448. /package/app/{.next → .next-cli-build}/server/app/api/cli-tools/antigravity-mitm/alias/route_client-reference-manifest.js +0 -0
  1449. /package/app/{.next → .next-cli-build}/server/app/api/cli-tools/antigravity-mitm/route_client-reference-manifest.js +0 -0
  1450. /package/app/{.next → .next-cli-build}/server/app/api/cli-tools/claude-settings/route_client-reference-manifest.js +0 -0
  1451. /package/app/{.next → .next-cli-build}/server/app/api/cli-tools/cline-settings/route_client-reference-manifest.js +0 -0
  1452. /package/app/{.next → .next-cli-build}/server/app/api/cli-tools/codex-settings/activate-account/route_client-reference-manifest.js +0 -0
  1453. /package/app/{.next → .next-cli-build}/server/app/api/cli-tools/codex-settings/route_client-reference-manifest.js +0 -0
  1454. /package/app/{.next → .next-cli-build}/server/app/api/cli-tools/copilot-settings/route_client-reference-manifest.js +0 -0
  1455. /package/app/{.next → .next-cli-build}/server/app/api/cli-tools/cowork-mcp-registry/route_client-reference-manifest.js +0 -0
  1456. /package/app/{.next → .next-cli-build}/server/app/api/cli-tools/cowork-mcp-tools/route_client-reference-manifest.js +0 -0
  1457. /package/app/{.next → .next-cli-build}/server/app/api/cli-tools/cowork-settings/route_client-reference-manifest.js +0 -0
  1458. /package/app/{.next → .next-cli-build}/server/app/api/cli-tools/deepseek-tui-settings/route_client-reference-manifest.js +0 -0
  1459. /package/app/{.next → .next-cli-build}/server/app/api/cli-tools/droid-settings/route_client-reference-manifest.js +0 -0
  1460. /package/app/{.next → .next-cli-build}/server/app/api/cli-tools/hermes-settings/route_client-reference-manifest.js +0 -0
  1461. /package/app/{.next → .next-cli-build}/server/app/api/cli-tools/jcode-settings/route_client-reference-manifest.js +0 -0
  1462. /package/app/{.next → .next-cli-build}/server/app/api/cli-tools/kilo-settings/route_client-reference-manifest.js +0 -0
  1463. /package/app/{.next → .next-cli-build}/server/app/api/cli-tools/openclaw-settings/route_client-reference-manifest.js +0 -0
  1464. /package/app/{.next → .next-cli-build}/server/app/api/cli-tools/opencode-settings/route_client-reference-manifest.js +0 -0
  1465. /package/app/{.next → .next-cli-build}/server/app/api/combos/[id]/route_client-reference-manifest.js +0 -0
  1466. /package/app/{.next → .next-cli-build}/server/app/api/combos/route_client-reference-manifest.js +0 -0
  1467. /package/app/{.next → .next-cli-build}/server/app/api/health/route_client-reference-manifest.js +0 -0
  1468. /package/app/{.next → .next-cli-build}/server/app/api/init/route_client-reference-manifest.js +0 -0
  1469. /package/app/{.next → .next-cli-build}/server/app/api/keys/[id]/route_client-reference-manifest.js +0 -0
  1470. /package/app/{.next → .next-cli-build}/server/app/api/keys/route_client-reference-manifest.js +0 -0
  1471. /package/app/{.next → .next-cli-build}/server/app/api/locale/route_client-reference-manifest.js +0 -0
  1472. /package/app/{.next → .next-cli-build}/server/app/api/mcp/[plugin]/message/route_client-reference-manifest.js +0 -0
  1473. /package/app/{.next → .next-cli-build}/server/app/api/mcp/[plugin]/sse/route_client-reference-manifest.js +0 -0
  1474. /package/app/{.next → .next-cli-build}/server/app/api/media-providers/tts/deepgram/voices/route_client-reference-manifest.js +0 -0
  1475. /package/app/{.next → .next-cli-build}/server/app/api/media-providers/tts/elevenlabs/voices/route_client-reference-manifest.js +0 -0
  1476. /package/app/{.next → .next-cli-build}/server/app/api/media-providers/tts/inworld/voices/route_client-reference-manifest.js +0 -0
  1477. /package/app/{.next → .next-cli-build}/server/app/api/media-providers/tts/minimax/voices/route_client-reference-manifest.js +0 -0
  1478. /package/app/{.next → .next-cli-build}/server/app/api/media-providers/tts/voices/route_client-reference-manifest.js +0 -0
  1479. /package/app/{.next → .next-cli-build}/server/app/api/models/alias/route_client-reference-manifest.js +0 -0
  1480. /package/app/{.next → .next-cli-build}/server/app/api/models/availability/route_client-reference-manifest.js +0 -0
  1481. /package/app/{.next → .next-cli-build}/server/app/api/models/custom/route_client-reference-manifest.js +0 -0
  1482. /package/app/{.next → .next-cli-build}/server/app/api/models/disabled/route_client-reference-manifest.js +0 -0
  1483. /package/app/{.next → .next-cli-build}/server/app/api/models/route_client-reference-manifest.js +0 -0
  1484. /package/app/{.next → .next-cli-build}/server/app/api/models/test/route_client-reference-manifest.js +0 -0
  1485. /package/app/{.next → .next-cli-build}/server/app/api/oauth/[provider]/[action]/route_client-reference-manifest.js +0 -0
  1486. /package/app/{.next → .next-cli-build}/server/app/api/oauth/codex/bulk-import/route_client-reference-manifest.js +0 -0
  1487. /package/app/{.next → .next-cli-build}/server/app/api/oauth/codex/import-token/route_client-reference-manifest.js +0 -0
  1488. /package/app/{.next → .next-cli-build}/server/app/api/oauth/cursor/auto-import/route_client-reference-manifest.js +0 -0
  1489. /package/app/{.next → .next-cli-build}/server/app/api/oauth/cursor/import/route_client-reference-manifest.js +0 -0
  1490. /package/app/{.next → .next-cli-build}/server/app/api/oauth/gitlab/pat/route_client-reference-manifest.js +0 -0
  1491. /package/app/{.next → .next-cli-build}/server/app/api/oauth/iflow/cookie/route_client-reference-manifest.js +0 -0
  1492. /package/app/{.next → .next-cli-build}/server/app/api/oauth/kiro/auto-import/route_client-reference-manifest.js +0 -0
  1493. /package/app/{.next → .next-cli-build}/server/app/api/oauth/kiro/import/route_client-reference-manifest.js +0 -0
  1494. /package/app/{.next → .next-cli-build}/server/app/api/oauth/kiro/social-authorize/route_client-reference-manifest.js +0 -0
  1495. /package/app/{.next → .next-cli-build}/server/app/api/oauth/kiro/social-exchange/route_client-reference-manifest.js +0 -0
  1496. /package/app/{.next → .next-cli-build}/server/app/api/pricing/route_client-reference-manifest.js +0 -0
  1497. /package/app/{.next → .next-cli-build}/server/app/api/provider-nodes/[id]/route_client-reference-manifest.js +0 -0
  1498. /package/app/{.next → .next-cli-build}/server/app/api/provider-nodes/route_client-reference-manifest.js +0 -0
  1499. /package/app/{.next → .next-cli-build}/server/app/api/provider-nodes/validate/route_client-reference-manifest.js +0 -0
  1500. /package/app/{.next → .next-cli-build}/server/app/api/providers/[id]/models/route_client-reference-manifest.js +0 -0
  1501. /package/app/{.next → .next-cli-build}/server/app/api/providers/[id]/route_client-reference-manifest.js +0 -0
  1502. /package/app/{.next → .next-cli-build}/server/app/api/providers/[id]/test/route_client-reference-manifest.js +0 -0
  1503. /package/app/{.next → .next-cli-build}/server/app/api/providers/[id]/test-models/route_client-reference-manifest.js +0 -0
  1504. /package/app/{.next → .next-cli-build}/server/app/api/providers/client/route_client-reference-manifest.js +0 -0
  1505. /package/app/{.next → .next-cli-build}/server/app/api/providers/kilo/free-models/route_client-reference-manifest.js +0 -0
  1506. /package/app/{.next → .next-cli-build}/server/app/api/providers/route_client-reference-manifest.js +0 -0
  1507. /package/app/{.next → .next-cli-build}/server/app/api/providers/suggested-models/route_client-reference-manifest.js +0 -0
  1508. /package/app/{.next → .next-cli-build}/server/app/api/providers/test-batch/route_client-reference-manifest.js +0 -0
  1509. /package/app/{.next → .next-cli-build}/server/app/api/providers/validate/route_client-reference-manifest.js +0 -0
  1510. /package/app/{.next → .next-cli-build}/server/app/api/proxy-pools/[id]/route_client-reference-manifest.js +0 -0
  1511. /package/app/{.next → .next-cli-build}/server/app/api/proxy-pools/[id]/test/route_client-reference-manifest.js +0 -0
  1512. /package/app/{.next → .next-cli-build}/server/app/api/proxy-pools/cloudflare-deploy/route_client-reference-manifest.js +0 -0
  1513. /package/app/{.next → .next-cli-build}/server/app/api/proxy-pools/deno-deploy/route_client-reference-manifest.js +0 -0
  1514. /package/app/{.next → .next-cli-build}/server/app/api/proxy-pools/route_client-reference-manifest.js +0 -0
  1515. /package/app/{.next → .next-cli-build}/server/app/api/proxy-pools/vercel-deploy/route_client-reference-manifest.js +0 -0
  1516. /package/app/{.next → .next-cli-build}/server/app/api/settings/database/route_client-reference-manifest.js +0 -0
  1517. /package/app/{.next → .next-cli-build}/server/app/api/settings/proxy-test/route_client-reference-manifest.js +0 -0
  1518. /package/app/{.next → .next-cli-build}/server/app/api/settings/require-login/route_client-reference-manifest.js +0 -0
  1519. /package/app/{.next → .next-cli-build}/server/app/api/settings/route_client-reference-manifest.js +0 -0
  1520. /package/app/{.next → .next-cli-build}/server/app/api/shutdown/route_client-reference-manifest.js +0 -0
  1521. /package/app/{.next → .next-cli-build}/server/app/api/tags/route_client-reference-manifest.js +0 -0
  1522. /package/app/{.next → .next-cli-build}/server/app/api/translator/console-logs/route_client-reference-manifest.js +0 -0
  1523. /package/app/{.next → .next-cli-build}/server/app/api/translator/console-logs/stream/route_client-reference-manifest.js +0 -0
  1524. /package/app/{.next → .next-cli-build}/server/app/api/translator/load/route_client-reference-manifest.js +0 -0
  1525. /package/app/{.next → .next-cli-build}/server/app/api/translator/save/route_client-reference-manifest.js +0 -0
  1526. /package/app/{.next → .next-cli-build}/server/app/api/translator/send/route_client-reference-manifest.js +0 -0
  1527. /package/app/{.next → .next-cli-build}/server/app/api/translator/translate/route_client-reference-manifest.js +0 -0
  1528. /package/app/{.next → .next-cli-build}/server/app/api/tunnel/disable/route_client-reference-manifest.js +0 -0
  1529. /package/app/{.next → .next-cli-build}/server/app/api/tunnel/enable/route_client-reference-manifest.js +0 -0
  1530. /package/app/{.next → .next-cli-build}/server/app/api/tunnel/status/route_client-reference-manifest.js +0 -0
  1531. /package/app/{.next → .next-cli-build}/server/app/api/tunnel/tailscale-check/route_client-reference-manifest.js +0 -0
  1532. /package/app/{.next → .next-cli-build}/server/app/api/tunnel/tailscale-disable/route_client-reference-manifest.js +0 -0
  1533. /package/app/{.next → .next-cli-build}/server/app/api/tunnel/tailscale-enable/route_client-reference-manifest.js +0 -0
  1534. /package/app/{.next → .next-cli-build}/server/app/api/tunnel/tailscale-install/route_client-reference-manifest.js +0 -0
  1535. /package/app/{.next → .next-cli-build}/server/app/api/usage/[connectionId]/route_client-reference-manifest.js +0 -0
  1536. /package/app/{.next → .next-cli-build}/server/app/api/usage/api-keys/route_client-reference-manifest.js +0 -0
  1537. /package/app/{.next → .next-cli-build}/server/app/api/usage/chart/route_client-reference-manifest.js +0 -0
  1538. /package/app/{.next → .next-cli-build}/server/app/api/usage/history/route_client-reference-manifest.js +0 -0
  1539. /package/app/{.next → .next-cli-build}/server/app/api/usage/logs/route_client-reference-manifest.js +0 -0
  1540. /package/app/{.next → .next-cli-build}/server/app/api/usage/providers/route_client-reference-manifest.js +0 -0
  1541. /package/app/{.next → .next-cli-build}/server/app/api/usage/request-details/route_client-reference-manifest.js +0 -0
  1542. /package/app/{.next → .next-cli-build}/server/app/api/usage/request-logs/route_client-reference-manifest.js +0 -0
  1543. /package/app/{.next → .next-cli-build}/server/app/api/usage/stats/route_client-reference-manifest.js +0 -0
  1544. /package/app/{.next → .next-cli-build}/server/app/api/usage/stream/route_client-reference-manifest.js +0 -0
  1545. /package/app/{.next → .next-cli-build}/server/app/api/users/[id]/route_client-reference-manifest.js +0 -0
  1546. /package/app/{.next → .next-cli-build}/server/app/api/users/route_client-reference-manifest.js +0 -0
  1547. /package/app/{.next → .next-cli-build}/server/app/api/v1/api/chat/route_client-reference-manifest.js +0 -0
  1548. /package/app/{.next → .next-cli-build}/server/app/api/v1/audio/speech/route_client-reference-manifest.js +0 -0
  1549. /package/app/{.next → .next-cli-build}/server/app/api/v1/audio/transcriptions/route_client-reference-manifest.js +0 -0
  1550. /package/app/{.next → .next-cli-build}/server/app/api/v1/audio/voices/route_client-reference-manifest.js +0 -0
  1551. /package/app/{.next → .next-cli-build}/server/app/api/v1/chat/completions/route_client-reference-manifest.js +0 -0
  1552. /package/app/{.next → .next-cli-build}/server/app/api/v1/embeddings/route_client-reference-manifest.js +0 -0
  1553. /package/app/{.next → .next-cli-build}/server/app/api/v1/images/generations/route_client-reference-manifest.js +0 -0
  1554. /package/app/{.next → .next-cli-build}/server/app/api/v1/messages/count_tokens/route_client-reference-manifest.js +0 -0
  1555. /package/app/{.next → .next-cli-build}/server/app/api/v1/messages/route_client-reference-manifest.js +0 -0
  1556. /package/app/{.next → .next-cli-build}/server/app/api/v1/models/[kind]/route_client-reference-manifest.js +0 -0
  1557. /package/app/{.next → .next-cli-build}/server/app/api/v1/models/info/route_client-reference-manifest.js +0 -0
  1558. /package/app/{.next → .next-cli-build}/server/app/api/v1/models/route_client-reference-manifest.js +0 -0
  1559. /package/app/{.next → .next-cli-build}/server/app/api/v1/responses/compact/route_client-reference-manifest.js +0 -0
  1560. /package/app/{.next → .next-cli-build}/server/app/api/v1/responses/route_client-reference-manifest.js +0 -0
  1561. /package/app/{.next → .next-cli-build}/server/app/api/v1/route_client-reference-manifest.js +0 -0
  1562. /package/app/{.next → .next-cli-build}/server/app/api/v1/search/route_client-reference-manifest.js +0 -0
  1563. /package/app/{.next → .next-cli-build}/server/app/api/v1/web/fetch/route_client-reference-manifest.js +0 -0
  1564. /package/app/{.next → .next-cli-build}/server/app/api/v1beta/models/[...path]/route_client-reference-manifest.js +0 -0
  1565. /package/app/{.next → .next-cli-build}/server/app/api/v1beta/models/route_client-reference-manifest.js +0 -0
  1566. /package/app/{.next → .next-cli-build}/server/app/api/version/route_client-reference-manifest.js +0 -0
  1567. /package/app/{.next → .next-cli-build}/server/app/api/version/shutdown/route_client-reference-manifest.js +0 -0
  1568. /package/app/{.next → .next-cli-build}/server/app/api/version/update/route_client-reference-manifest.js +0 -0
  1569. /package/app/{.next → .next-cli-build}/server/app/callback.meta +0 -0
  1570. /package/app/{.next → .next-cli-build}/server/app/dashboard/settings/pricing.meta +0 -0
  1571. /package/app/{.next → .next-cli-build}/server/app/favicon.ico.body +0 -0
  1572. /package/app/{.next → .next-cli-build}/server/app/favicon.ico.meta +0 -0
  1573. /package/app/{.next → .next-cli-build}/server/app/index.meta +0 -0
  1574. /package/app/{.next → .next-cli-build}/server/app/landing.meta +0 -0
  1575. /package/app/{.next → .next-cli-build}/server/app/login.meta +0 -0
  1576. /package/app/{.next → .next-cli-build}/server/app/manifest.webmanifest/route_client-reference-manifest.js +0 -0
  1577. /package/app/{.next → .next-cli-build}/server/app/manifest.webmanifest.body +0 -0
  1578. /package/app/{.next → .next-cli-build}/server/app/manifest.webmanifest.meta +0 -0
  1579. /package/app/{.next → .next-cli-build}/server/chunks/1679.js +0 -0
  1580. /package/app/{.next → .next-cli-build}/server/chunks/1998.js +0 -0
  1581. /package/app/{.next → .next-cli-build}/server/chunks/241.js +0 -0
  1582. /package/app/{.next → .next-cli-build}/server/chunks/3593.js +0 -0
  1583. /package/app/{.next → .next-cli-build}/server/chunks/4013.js +0 -0
  1584. /package/app/{.next → .next-cli-build}/server/chunks/4739.js +0 -0
  1585. /package/app/{.next → .next-cli-build}/server/chunks/4741.js +0 -0
  1586. /package/app/{.next → .next-cli-build}/server/chunks/4989.js +0 -0
  1587. /package/app/{.next → .next-cli-build}/server/chunks/5217.js +0 -0
  1588. /package/app/{.next → .next-cli-build}/server/chunks/5258.js +0 -0
  1589. /package/app/{.next → .next-cli-build}/server/chunks/5573.js +0 -0
  1590. /package/app/{.next → .next-cli-build}/server/chunks/6457.js +0 -0
  1591. /package/app/{.next → .next-cli-build}/server/chunks/6844.js +0 -0
  1592. /package/app/{.next → .next-cli-build}/server/chunks/6936.js +0 -0
  1593. /package/app/{.next → .next-cli-build}/server/chunks/7502.js +0 -0
  1594. /package/app/{.next → .next-cli-build}/server/chunks/8473.js +0 -0
  1595. /package/app/{.next → .next-cli-build}/server/chunks/8520.js +0 -0
  1596. /package/app/{.next → .next-cli-build}/server/chunks/8971.js +0 -0
  1597. /package/app/{.next → .next-cli-build}/server/chunks/9460.js +0 -0
  1598. /package/app/{.next → .next-cli-build}/server/functions-config-manifest.json +0 -0
  1599. /package/app/{.next → .next-cli-build}/server/middleware-manifest.json +0 -0
  1600. /package/app/{.next → .next-cli-build}/server/middleware-react-loadable-manifest.js +0 -0
  1601. /package/app/{.next → .next-cli-build}/server/pages-manifest.json +0 -0
  1602. /package/app/{.next → .next-cli-build}/server/prefetch-hints.json +0 -0
  1603. /package/app/{.next → .next-cli-build}/server/webpack-runtime.js +0 -0
  1604. /package/app/{.next/static/MxcY0EY8eMa4ouCwsP4Cl → .next-cli-build/static/DLZR81Hq9OqOrl2Xc2iHn}/_ssgManifest.js +0 -0
  1605. /package/app/{.next → .next-cli-build}/static/chunks/1051-a02f07646d97d6ca.js +0 -0
  1606. /package/app/{.next → .next-cli-build}/static/chunks/1a258343-5938f676ed376386.js +0 -0
  1607. /package/app/{.next → .next-cli-build}/static/chunks/3794-ba2500baa4c52d55.js +0 -0
  1608. /package/app/{.next → .next-cli-build}/static/chunks/4bd1b696-e356ca5ba0218e27.js +0 -0
  1609. /package/app/{.next → .next-cli-build}/static/chunks/5242-bb1a1a7ec3bfb62f.js +0 -0
  1610. /package/app/{.next → .next-cli-build}/static/chunks/5772-901f1092d831ec37.js +0 -0
  1611. /package/app/{.next → .next-cli-build}/static/chunks/7055-e60e20f43bfbe5f8.js +0 -0
  1612. /package/app/{.next → .next-cli-build}/static/chunks/app/_not-found/page-7927650ca4037264.js +0 -0
  1613. /package/app/{.next → .next-cli-build}/static/chunks/app/callback/page-97a750f0d51c3dbe.js +0 -0
  1614. /package/app/{.next → .next-cli-build}/static/chunks/app/landing/page-bf42a9c80c1e6776.js +0 -0
  1615. /package/app/{.next → .next-cli-build}/static/chunks/framework-711ef29bc66f648c.js +0 -0
  1616. /package/app/{.next → .next-cli-build}/static/chunks/main-app-d5f2701c08554961.js +0 -0
  1617. /package/app/{.next → .next-cli-build}/static/chunks/main-b8d198db3858ff3e.js +0 -0
  1618. /package/app/{.next → .next-cli-build}/static/chunks/next/dist/client/components/builtin/global-error-8d51a00b6c966622.js +0 -0
  1619. /package/app/{.next → .next-cli-build}/static/chunks/polyfills-42372ed130431b0a.js +0 -0
  1620. /package/app/{.next → .next-cli-build}/static/css/599369d853c61df7.css +0 -0
  1621. /package/app/{.next → .next-cli-build}/static/media/material-symbols-outlined.1060ac06.woff2 +0 -0
package/cli.js CHANGED
@@ -1,519 +1,832 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- const { spawn } = require("node:child_process");
4
- const fs = require("node:fs");
5
- const os = require("node:os");
6
- const path = require("node:path");
7
- const net = require("node:net");
3
+ const { spawn, exec, execSync } = require("child_process");
4
+ const path = require("path");
5
+ const fs = require("fs");
6
+ const https = require("https");
7
+ const os = require("os");
8
+
9
+ // Native spinner - no external dependency
10
+ function createSpinner(text) {
11
+ const frames = ["ā ‹", "ā ™", "ā ¹", "ā ø", "ā ¼", "ā “", "ā ¦", "ā §", "ā ‡", "ā "];
12
+ let i = 0;
13
+ let interval = null;
14
+ let currentText = text;
15
+ return {
16
+ start() {
17
+ if (process.stdout.isTTY) {
18
+ process.stdout.write(`\r${frames[0]} ${currentText}`);
19
+ interval = setInterval(() => {
20
+ process.stdout.write(`\r${frames[i++ % frames.length]} ${currentText}`);
21
+ }, 80);
22
+ }
23
+ return this;
24
+ },
25
+ stop() {
26
+ if (interval) {
27
+ clearInterval(interval);
28
+ interval = null;
29
+ }
30
+ if (process.stdout.isTTY) {
31
+ process.stdout.write("\r\x1b[K");
32
+ }
33
+ },
34
+ succeed(msg) {
35
+ this.stop();
36
+ console.log(`āœ… ${msg}`);
37
+ },
38
+ fail(msg) {
39
+ this.stop();
40
+ console.log(`āŒ ${msg}`);
41
+ }
42
+ };
43
+ }
8
44
 
9
45
  const pkg = require("./package.json");
46
+ const { ensureSqliteRuntime, buildEnvWithRuntime } = require("./hooks/sqliteRuntime");
47
+ const { ensureTrayRuntime } = require("./hooks/trayRuntime");
48
+ const args = process.argv.slice(2);
10
49
 
11
- const APP_NAME = "openrouterX";
12
- const APP_DATA_DIR_NAME = "openrouterx";
13
- const DATA_DIR = process.platform === "win32"
14
- ? path.join(process.env.APPDATA || os.homedir(), APP_DATA_DIR_NAME)
15
- : path.join(os.homedir(), `.${APP_DATA_DIR_NAME}`);
16
- const PID_FILE = path.join(DATA_DIR, "server.pid");
17
- const META_FILE = path.join(DATA_DIR, "server.json");
18
- const LOG_FILE = path.join(DATA_DIR, "server.log");
19
- const MITM_PID_FILE = path.join(DATA_DIR, "mitm", ".mitm.pid");
20
- const DEFAULT_PORT = "20502";
21
- const DEFAULT_HOST = "0.0.0.0";
50
+ // Self-heal SQLite runtime deps (sql.js + better-sqlite3) into ~/.9router/runtime
51
+ // so the server can resolve them via NODE_PATH. Best-effort — sql.js is required,
52
+ // better-sqlite3 is optional. Logs to stderr only on failure.
53
+ try { ensureSqliteRuntime({ silent: true }); } catch {}
22
54
 
23
- function parseArgs(argv = process.argv.slice(2)) {
24
- const options = {
25
- command: "start",
26
- port: undefined,
27
- host: undefined,
28
- foreground: false,
29
- noBrowser: false,
30
- skipUpdate: false,
31
- help: false,
32
- version: false,
33
- };
55
+ // Self-heal tray runtime (systray for macOS/Linux only). Windows skipped.
56
+ try { ensureTrayRuntime({ silent: true }); } catch {}
34
57
 
35
- for (let index = 0; index < argv.length; index += 1) {
36
- const arg = argv[index];
37
-
38
- if (["start", "status", "stop", "restart", "open", "logs"].includes(arg)) {
39
- options.command = arg;
40
- } else if (arg === "--port" || arg === "-p") {
41
- options.port = argv[index + 1];
42
- index += 1;
43
- } else if (arg.startsWith("--port=")) {
44
- options.port = arg.slice("--port=".length);
45
- } else if (arg === "--host" || arg === "-H") {
46
- options.host = argv[index + 1];
47
- index += 1;
48
- } else if (arg.startsWith("--host=")) {
49
- options.host = arg.slice("--host=".length);
50
- } else if (arg === "--foreground" || arg === "--log" || arg === "-l") {
51
- options.foreground = true;
52
- } else if (arg === "--no-browser" || arg === "-n") {
53
- options.noBrowser = true;
54
- } else if (arg === "--skip-update") {
55
- options.skipUpdate = true;
56
- } else if (arg === "--help" || arg === "-h") {
57
- options.help = true;
58
- } else if (arg === "--version" || arg === "-v") {
59
- options.version = true;
60
- }
61
- }
58
+ // Configuration constants
59
+ const APP_NAME = pkg.name; // Use from package.json
60
+ const INSTALL_CMD_LATEST = `npm i -g ${APP_NAME}@latest --prefer-online`;
62
61
 
63
- return options;
64
- }
62
+ const DEFAULT_PORT = 20502;
63
+ const DEFAULT_HOST = "0.0.0.0";
65
64
 
66
- function getPreferredPort(env = process.env, options = {}) {
67
- const raw = options.port || env?.PORT;
68
- if (raw === undefined || raw === null || String(raw).trim() === "") {
69
- return DEFAULT_PORT;
65
+ // First non-internal IPv4 — the address remote peers actually reach when bound to 0.0.0.0.
66
+ function getLanIp() {
67
+ for (const ifaces of Object.values(os.networkInterfaces())) {
68
+ for (const i of ifaces || []) {
69
+ if (i.family === "IPv4" && !i.internal) return i.address;
70
+ }
70
71
  }
71
- return String(raw);
72
+ return null;
72
73
  }
73
74
 
74
- function getPortConflictMessage(port) {
75
- return [
76
- `Port ${port} is already in use by an existing ${APP_NAME} instance.`,
77
- `Use PORT=<new-port> ${APP_NAME} to run on a different port.`,
78
- ].join("\n");
75
+ // Local URL stays "localhost"; warn separately when bound to all interfaces (network-exposed).
76
+ function getDisplayHost() {
77
+ return host === DEFAULT_HOST ? "localhost" : host;
79
78
  }
80
-
81
- function formatHelp() {
82
- return `
83
- Usage: ${APP_NAME} [command] [options]
84
-
85
- Commands:
86
- start Start server in background (default)
87
- status Show background server status
88
- stop Stop background server
89
- restart Restart background server
90
- open Open dashboard in browser
91
- logs Print log file path
79
+ const MAX_PORT_ATTEMPTS = 10;
80
+ // Identifiers for killAllAppProcesses - keep the openrouterX publish command scoped.
81
+ const PROCESS_IDENTIFIERS = [
82
+ "openrouterX",
83
+ "@yina-npm/openrouterx",
84
+ "9router",
85
+ ];
86
+
87
+ // Parse arguments
88
+ let port = DEFAULT_PORT;
89
+ let host = DEFAULT_HOST;
90
+ let noBrowser = false;
91
+ let skipUpdate = false;
92
+ let showLog = false;
93
+ let trayMode = false;
94
+
95
+ for (let i = 0; i < args.length; i++) {
96
+ if (args[i] === "--port" || args[i] === "-p") {
97
+ port = parseInt(args[i + 1], 10) || DEFAULT_PORT;
98
+ i++;
99
+ } else if (args[i] === "--host" || args[i] === "-H") {
100
+ host = args[i + 1] || DEFAULT_HOST;
101
+ i++;
102
+ } else if (args[i] === "--no-browser" || args[i] === "-n") {
103
+ noBrowser = true;
104
+ } else if (args[i] === "--log" || args[i] === "-l") {
105
+ showLog = true;
106
+ } else if (args[i] === "--skip-update") {
107
+ skipUpdate = true;
108
+ } else if (args[i] === "--tray" || args[i] === "-t") {
109
+ trayMode = true;
110
+ process.env.TRAY_MODE = "1";
111
+ } else if (args[i] === "--help" || args[i] === "-h") {
112
+ console.log(`
113
+ Usage: ${APP_NAME} [options]
92
114
 
93
115
  Options:
94
116
  -p, --port <port> Port to run the server (default: ${DEFAULT_PORT})
95
117
  -H, --host <host> Host to bind (default: ${DEFAULT_HOST})
96
- -n, --no-browser Do not open browser automatically
97
- -l, --log Show server logs in foreground
98
- --foreground Run in foreground
118
+ -n, --no-browser Don't open browser automatically
119
+ -l, --log Show server logs (default: hidden)
120
+ -t, --tray Run in system tray mode (background)
99
121
  --skip-update Skip auto-update check
100
122
  -h, --help Show this help message
101
123
  -v, --version Show version
102
- `;
103
- }
104
-
105
- function formatChooserBanner(serverUrl) {
106
- return [
107
- "========================================",
108
- ` ${APP_NAME}`,
109
- ` Server: ${serverUrl}`,
110
- "========================================",
111
- ].join("\n");
124
+ `);
125
+ process.exit(0);
126
+ } else if (args[i] === "--version" || args[i] === "-v") {
127
+ console.log(pkg.version);
128
+ process.exit(0);
129
+ }
112
130
  }
113
131
 
114
- function getChooserOptions() {
115
- return ["Web UI", "Terminal UI", "Hide to Tray", "Exit"];
132
+ // Auto-relaunch after update: detached process has no TTY → fallback to tray
133
+ if (skipUpdate && !trayMode && !process.stdin.isTTY) {
134
+ trayMode = true;
135
+ process.env.TRAY_MODE = "1";
116
136
  }
117
137
 
118
- function ensureDataDir() {
119
- fs.mkdirSync(DATA_DIR, { recursive: true });
120
- }
138
+ // Always use Node.js runtime with absolute path
139
+ const RUNTIME = process.execPath;
121
140
 
122
- function readMeta() {
123
- try {
124
- return JSON.parse(fs.readFileSync(META_FILE, "utf8"));
125
- } catch {
126
- return null;
141
+ // Compare semver versions: returns 1 if a > b, -1 if a < b, 0 if equal
142
+ function compareVersions(a, b) {
143
+ const partsA = a.split(".").map(Number);
144
+ const partsB = b.split(".").map(Number);
145
+ for (let i = 0; i < 3; i++) {
146
+ if (partsA[i] > partsB[i]) return 1;
147
+ if (partsA[i] < partsB[i]) return -1;
127
148
  }
149
+ return 0;
128
150
  }
129
151
 
130
- function writeMeta(meta) {
131
- ensureDataDir();
132
- fs.writeFileSync(META_FILE, `${JSON.stringify(meta, null, 2)}\n`);
152
+ // Get app data dir (matches app/src/lib/dataDir.js convention)
153
+ function getAppDataDir() {
154
+ return process.platform === "win32"
155
+ ? path.join(process.env.APPDATA || "", "9router")
156
+ : path.join(os.homedir(), ".9router");
133
157
  }
134
158
 
135
- function writePid(pid) {
136
- ensureDataDir();
137
- fs.writeFileSync(PID_FILE, `${pid}\n`);
159
+ // Kill PID from file (best-effort, removes file after)
160
+ function killByPidFile(pidFile) {
161
+ try {
162
+ if (!fs.existsSync(pidFile)) return;
163
+ const pid = parseInt(fs.readFileSync(pidFile, "utf8").trim(), 10);
164
+ if (!pid) return;
165
+ try {
166
+ if (process.platform === "win32") {
167
+ execSync(`taskkill /F /T /PID ${pid}`, { stdio: "ignore", windowsHide: true, timeout: 3000 });
168
+ } else {
169
+ process.kill(pid, "SIGKILL");
170
+ }
171
+ } catch { }
172
+ try { fs.unlinkSync(pidFile); } catch { }
173
+ } catch { }
138
174
  }
139
175
 
140
- function readPid() {
141
- try {
142
- const pid = Number(fs.readFileSync(PID_FILE, "utf8").trim());
143
- return Number.isFinite(pid) && pid > 0 ? pid : null;
144
- } catch {
145
- return null;
146
- }
176
+ // Kill tunnel processes (cloudflared/tailscale) by their PID files
177
+ function killTunnelByPidFile() {
178
+ const tunnelDir = path.join(getAppDataDir(), "tunnel");
179
+ killByPidFile(path.join(tunnelDir, "cloudflared.pid"));
180
+ killByPidFile(path.join(tunnelDir, "tailscale.pid"));
147
181
  }
148
182
 
149
- function readPidFile(filePath) {
183
+ // Kill cloudflared whose --url targets this app's port (covers stale PID file case)
184
+ function killCloudflaredByAppPort(appPort) {
185
+ if (!appPort) return [];
186
+ const portMatchers = [`localhost:${appPort}`, `127.0.0.1:${appPort}`];
187
+ const pids = [];
150
188
  try {
151
- const pid = Number(fs.readFileSync(filePath, "utf8").trim());
152
- return Number.isFinite(pid) && pid > 0 ? pid : null;
153
- } catch {
154
- return null;
155
- }
189
+ if (process.platform === "win32") {
190
+ const psCmd = `powershell -NonInteractive -WindowStyle Hidden -Command "Get-WmiObject Win32_Process -Filter 'Name=\\"cloudflared.exe\\"' | Select-Object ProcessId,CommandLine | ConvertTo-Csv -NoTypeInformation"`;
191
+ const output = execSync(psCmd, { encoding: "utf8", windowsHide: true, timeout: 5000 });
192
+ const lines = output.split("\n").slice(1).filter(l => l.trim());
193
+ lines.forEach(line => {
194
+ if (portMatchers.some(m => line.includes(m))) {
195
+ const match = line.match(/^"(\d+)"/);
196
+ if (match && match[1]) pids.push(match[1]);
197
+ }
198
+ });
199
+ } else {
200
+ const output = execSync("ps -eo pid,command 2>/dev/null", { encoding: "utf8", timeout: 5000 });
201
+ output.split("\n").forEach(line => {
202
+ if (line.includes("cloudflared") && portMatchers.some(m => line.includes(m))) {
203
+ const parts = line.trim().split(/\s+/);
204
+ const pid = parts[0];
205
+ if (pid && !isNaN(pid)) pids.push(pid);
206
+ }
207
+ });
208
+ }
209
+ } catch { }
210
+ return pids;
156
211
  }
157
212
 
158
- function removeRuntimeFiles() {
159
- fs.rmSync(PID_FILE, { force: true });
160
- fs.rmSync(META_FILE, { force: true });
161
- fs.rmSync(MITM_PID_FILE, { force: true });
213
+ // Kill all 9router processes
214
+ function killAllAppProcesses(appPort) {
215
+ return new Promise((resolve) => {
216
+ try {
217
+ // Kill MIT first (privileged process, needs special handling)
218
+ killProxyByPidFile();
219
+ // Kill cloudflared/tailscale by PID file (precise, only this app's tunnel)
220
+ killTunnelByPidFile();
221
+
222
+ const platform = process.platform;
223
+ let pids = [];
224
+
225
+ // Catch stale PID files: kill cloudflared bound to this app's port
226
+ pids.push(...killCloudflaredByAppPort(appPort));
227
+
228
+ if (platform === "win32") {
229
+ // Windows: use WMI to get full CommandLine (tasklist /V doesn't include it)
230
+ try {
231
+ const psCmd = `powershell -NonInteractive -WindowStyle Hidden -Command "Get-WmiObject Win32_Process -Filter 'Name=\\"node.exe\\"' | Select-Object ProcessId,CommandLine | ConvertTo-Csv -NoTypeInformation"`;
232
+ const output = execSync(psCmd, {
233
+ encoding: "utf8",
234
+ windowsHide: true,
235
+ timeout: 5000
236
+ });
237
+ const lines = output.split("\n").slice(1).filter(l => l.trim());
238
+ lines.forEach(line => {
239
+ // Whitelist: real node process running 9router/cli.js, or next-server.
240
+ // Avoids killing editors/grep/strace/cursor that just have "9router" in cmdline.
241
+ const cmd = line.toLowerCase();
242
+ const isAppProcess =
243
+ (cmd.includes("node") && cmd.includes("9router") && (cmd.includes("cli.js") || cmd.includes("\\9router") || cmd.includes("/9router")))
244
+ || cmd.includes("next-server");
245
+ if (isAppProcess) {
246
+ const match = line.match(/^"(\d+)"/);
247
+ if (match && match[1] && match[1] !== process.pid.toString()) {
248
+ pids.push(match[1]);
249
+ }
250
+ }
251
+ });
252
+ } catch (e) {
253
+ // No processes found or error - continue
254
+ }
255
+ } else {
256
+ // macOS/Linux: use ps to find all matching processes
257
+ try {
258
+ const output = execSync('ps aux 2>/dev/null', {
259
+ encoding: 'utf8',
260
+ timeout: 5000
261
+ });
262
+ const lines = output.split('\n');
263
+
264
+ lines.forEach(line => {
265
+ // Whitelist: real node process running 9router/cli.js, or next-server.
266
+ // Avoids killing grep/strace/editors/cursor that incidentally match "9router".
267
+ const cmd = line.toLowerCase();
268
+ const isAppProcess =
269
+ (cmd.includes("node") && cmd.includes("9router") && (cmd.includes("cli.js") || cmd.includes("/9router")))
270
+ || cmd.includes("next-server");
271
+ if (isAppProcess) {
272
+ const parts = line.trim().split(/\s+/);
273
+ const pid = parts[1];
274
+ if (pid && !isNaN(pid) && pid !== process.pid.toString()) {
275
+ pids.push(pid);
276
+ }
277
+ }
278
+ });
279
+ } catch (e) {
280
+ // No processes found or error - continue
281
+ }
282
+ }
283
+
284
+ // Kill all found processes
285
+ if (pids.length > 0) {
286
+ pids.forEach(pid => {
287
+ try {
288
+ if (platform === "win32") {
289
+ execSync(`taskkill /F /PID ${pid} 2>nul`, { stdio: 'ignore', shell: true, windowsHide: true, timeout: 3000 });
290
+ } else {
291
+ execSync(`kill -9 ${pid} 2>/dev/null`, { stdio: 'ignore', timeout: 3000 });
292
+ }
293
+ } catch (err) {
294
+ // Process already dead or can't kill - continue
295
+ }
296
+ });
297
+
298
+ // Wait for processes to fully terminate
299
+ setTimeout(() => resolve(), 1000);
300
+ } else {
301
+ resolve();
302
+ }
303
+ } catch (err) {
304
+ // Silent fail - continue anyway
305
+ resolve();
306
+ }
307
+ });
162
308
  }
163
309
 
164
- function isProcessRunning(pid) {
165
- if (!pid) {
166
- return false;
167
- }
310
+ // Sleep helper using SharedArrayBuffer wait (sync, no busy-loop)
311
+ function sleepSync(ms) {
312
+ try { Atomics.wait(new Int32Array(new SharedArrayBuffer(4)), 0, 0, ms); } catch { /* ignore */ }
313
+ }
168
314
 
169
- try {
170
- process.kill(pid, 0);
171
- return true;
172
- } catch {
173
- return false;
315
+ // Wait until process dies or timeout reached
316
+ function waitForExit(pid, timeoutMs) {
317
+ const deadline = Date.now() + timeoutMs;
318
+ while (Date.now() < deadline) {
319
+ try { process.kill(pid, 0); } catch { return true; }
320
+ sleepSync(100);
174
321
  }
322
+ return false;
175
323
  }
176
324
 
177
- function getUnixProcessTable() {
178
- if (process.platform === "win32") return [];
325
+ // Kill MIT server by PID file (runs privileged, needs special handling)
326
+ // Sends SIGTERM first so MIT can clean up host entries before dying.
327
+ function killProxyByPidFile() {
179
328
  try {
180
- const output = require("node:child_process").execFileSync(
181
- "ps",
182
- ["-axo", "pid=,ppid=,command="],
183
- { encoding: "utf8", stdio: ["ignore", "pipe", "ignore"] }
184
- );
185
- return output.split("\n").map((line) => {
186
- const match = line.trim().match(/^(\d+)\s+(\d+)\s+(.*)$/);
187
- if (!match) return null;
188
- return { pid: Number(match[1]), ppid: Number(match[2]), command: match[3] || "" };
189
- }).filter(Boolean);
190
- } catch {
191
- return [];
192
- }
329
+ const pidFile = path.join(getAppDataDir(), "mitm", ".mitm.pid");
330
+ if (!fs.existsSync(pidFile)) return;
331
+ const pid = parseInt(fs.readFileSync(pidFile, "utf8").trim(), 10);
332
+ if (!pid) return;
333
+
334
+ if (process.platform === "win32") {
335
+ // Graceful first (lets server cleanup hosts), then force
336
+ try { execSync(`taskkill /T /PID ${pid}`, { stdio: "ignore", windowsHide: true, timeout: 2000 }); } catch { }
337
+ if (!waitForExit(pid, 1500)) {
338
+ try { execSync(`taskkill /F /T /PID ${pid}`, { stdio: "ignore", windowsHide: true, timeout: 3000 }); } catch { }
339
+ }
340
+ // Last-resort: PowerShell Stop-Process (sometimes succeeds where taskkill fails on admin processes)
341
+ if (!waitForExit(pid, 500)) {
342
+ try { execSync(`powershell -NonInteractive -WindowStyle Hidden -Command "Stop-Process -Id ${pid} -Force"`, { stdio: "ignore", windowsHide: true, timeout: 3000 }); } catch { }
343
+ }
344
+ } else {
345
+ // SIGTERM via cached sudo token first
346
+ try { execSync(`sudo -n kill -TERM ${pid} 2>/dev/null`, { stdio: "ignore", timeout: 2000 }); }
347
+ catch { try { process.kill(pid, "SIGTERM"); } catch { } }
348
+ if (!waitForExit(pid, 1500)) {
349
+ try { execSync(`sudo -n kill -9 ${pid} 2>/dev/null`, { stdio: "ignore", timeout: 2000 }); }
350
+ catch { try { process.kill(pid, "SIGKILL"); } catch { } }
351
+ }
352
+ }
353
+ try { fs.unlinkSync(pidFile); } catch { }
354
+ } catch { }
193
355
  }
194
356
 
195
- function getDescendantPids(rootPid, table = getUnixProcessTable()) {
196
- const root = Number(rootPid);
197
- if (!Number.isFinite(root) || root <= 0) return [];
198
- const childrenByParent = new Map();
199
- for (const proc of table) {
200
- const list = childrenByParent.get(proc.ppid) || [];
201
- list.push(proc.pid);
202
- childrenByParent.set(proc.ppid, list);
203
- }
357
+ // Kill any process on specific port
358
+ function killProcessOnPort(port) {
359
+ return new Promise((resolve) => {
360
+ try {
361
+ const platform = process.platform;
362
+ let pid;
363
+
364
+ if (platform === "win32") {
365
+ try {
366
+ const output = execSync(`netstat -ano | findstr :${port}`, {
367
+ encoding: 'utf8',
368
+ shell: true,
369
+ windowsHide: true,
370
+ timeout: 5000
371
+ }).trim();
372
+ const lines = output.split('\n').filter(l => l.includes('LISTENING'));
373
+ if (lines.length > 0) {
374
+ pid = lines[0].trim().split(/\s+/).pop();
375
+ execSync(`taskkill /F /PID ${pid} 2>nul`, { stdio: 'ignore', shell: true, windowsHide: true, timeout: 3000 });
376
+ }
377
+ } catch (e) {
378
+ // Port is free or error
379
+ }
380
+ } else {
381
+ // macOS/Linux
382
+ try {
383
+ const pidOutput = execSync(`lsof -ti:${port}`, {
384
+ encoding: 'utf8',
385
+ stdio: ['pipe', 'pipe', 'ignore']
386
+ }).trim();
387
+ if (pidOutput) {
388
+ pid = pidOutput.split('\n')[0];
389
+ execSync(`kill -9 ${pid} 2>/dev/null`, { stdio: 'ignore', timeout: 3000 });
390
+ }
391
+ } catch (e) {
392
+ // Port is free or error
393
+ }
394
+ }
204
395
 
205
- const descendants = [];
206
- const stack = [...(childrenByParent.get(root) || [])];
207
- while (stack.length > 0) {
208
- const pid = stack.pop();
209
- descendants.push(pid);
210
- stack.push(...(childrenByParent.get(pid) || []));
211
- }
212
- return descendants;
396
+ // Wait for port to be released
397
+ setTimeout(() => resolve(), 500);
398
+ } catch (err) {
399
+ // Silent fail - continue anyway
400
+ resolve();
401
+ }
402
+ });
213
403
  }
214
404
 
215
- function killPid(pid, signal = "SIGTERM") {
216
- const target = Number(pid);
217
- if (!Number.isFinite(target) || target <= 0 || target === process.pid) return false;
218
405
 
219
- if (process.platform === "win32") {
220
- try {
221
- require("node:child_process").execFileSync("taskkill", ["/F", "/T", "/PID", String(target)], {
222
- stdio: "ignore",
223
- windowsHide: true,
224
- });
225
- return true;
226
- } catch {
227
- return false;
228
- }
406
+ // Detect if running in restricted environment (Codespaces, Docker)
407
+ function isRestrictedEnvironment() {
408
+ // Check for Codespaces
409
+ if (process.env.CODESPACES === "true" || process.env.GITHUB_CODESPACES_PORT_FORWARDING_DOMAIN) {
410
+ return "GitHub Codespaces";
229
411
  }
230
412
 
231
- try {
232
- process.kill(target, signal);
233
- return true;
234
- } catch (error) {
235
- if (error?.code !== "EPERM") return false;
236
- try {
237
- require("node:child_process").execFileSync("sudo", ["-n", "kill", signal === "SIGKILL" ? "-9" : "-TERM", String(target)], {
238
- stdio: "ignore",
239
- });
240
- return true;
241
- } catch {
242
- return false;
243
- }
413
+ // Check for Docker
414
+ if (fs.existsSync("/.dockerenv") || (fs.existsSync("/proc/1/cgroup") && fs.readFileSync("/proc/1/cgroup", "utf8").includes("docker"))) {
415
+ return "Docker";
244
416
  }
417
+
418
+ return null;
245
419
  }
246
420
 
247
- function killProcessTree(pid) {
248
- const root = Number(pid);
249
- if (!Number.isFinite(root) || root <= 0 || root === process.pid) return false;
421
+ // Check if new version available, return latest version or null
422
+ function checkForUpdate() {
423
+ return new Promise((resolve) => {
424
+ if (skipUpdate) {
425
+ resolve(null);
426
+ return;
427
+ }
250
428
 
251
- if (process.platform === "win32") {
252
- return killPid(root);
253
- }
429
+ const spinner = createSpinner("Checking for updates...").start();
430
+ let resolved = false;
254
431
 
255
- const table = getUnixProcessTable();
256
- const targets = [...getDescendantPids(root, table).reverse(), root];
257
- let killedAny = false;
258
- for (const target of targets) {
259
- killedAny = killPid(target, "SIGTERM") || killedAny;
260
- }
432
+ const safetyTimeout = setTimeout(() => {
433
+ if (!resolved) {
434
+ resolved = true;
435
+ spinner.stop();
436
+ resolve(null);
437
+ }
438
+ }, 8000);
439
+
440
+ const done = (version) => {
441
+ if (resolved) return;
442
+ resolved = true;
443
+ clearTimeout(safetyTimeout);
444
+ spinner.stop();
445
+ resolve(version);
446
+ };
447
+
448
+ const req = https.get(`https://registry.npmjs.org/${pkg.name}/latest`, { timeout: 3000 }, (res) => {
449
+ let data = "";
450
+ res.on("data", chunk => data += chunk);
451
+ res.on("end", () => {
452
+ try {
453
+ const latest = JSON.parse(data);
454
+ if (latest.version && compareVersions(latest.version, pkg.version) > 0) {
455
+ done(latest.version);
456
+ } else {
457
+ done(null);
458
+ }
459
+ } catch (e) {
460
+ done(null);
461
+ }
462
+ });
463
+ });
464
+
465
+ req.on("error", () => done(null));
466
+ req.on("timeout", () => { req.destroy(); done(null); });
467
+ });
468
+ }
261
469
 
262
- const deadline = Date.now() + 1500;
263
- while (Date.now() < deadline && targets.some((target) => isProcessRunning(target))) {
264
- Atomics.wait(new Int32Array(new SharedArrayBuffer(4)), 0, 0, 100);
470
+ // Open browser
471
+ function openBrowser(url) {
472
+ const platform = process.platform;
473
+ let cmd;
474
+
475
+ if (platform === "darwin") {
476
+ cmd = `open "${url}"`;
477
+ } else if (platform === "win32") {
478
+ cmd = `start "" "${url}"`;
479
+ } else {
480
+ cmd = `xdg-open "${url}"`;
265
481
  }
266
482
 
267
- for (const target of targets) {
268
- if (isProcessRunning(target)) {
269
- killedAny = killPid(target, "SIGKILL") || killedAny;
483
+ exec(cmd, { windowsHide: true }, (err) => {
484
+ if (err) {
485
+ console.log(`Open browser manually: ${url}`);
270
486
  }
271
- }
272
- return killedAny;
487
+ });
273
488
  }
274
489
 
275
- function collectOpenrouterXPids() {
276
- if (process.platform === "win32") return [];
277
- return getUnixProcessTable()
278
- .filter((proc) => proc.pid !== process.pid)
279
- .filter((proc) => {
280
- const command = proc.command.toLowerCase();
281
- const isRuntimeProcess = command.includes("node")
282
- || command.includes("sudo");
283
- const isOpenrouterXPackage = command.includes("openrouterx")
284
- || command.includes("@yina-npm/openrouterx");
285
- const isMitmServer = command.includes("mitm/server.js");
286
- return isRuntimeProcess && (isOpenrouterXPackage || isMitmServer);
287
- })
288
- .map((proc) => proc.pid);
490
+ // Find standalone server (bundled in bin/app for published package).
491
+ // Prefer custom-server.js (injects real socket IP) when present.
492
+ const standaloneDir = path.join(__dirname, "app");
493
+ const customServerPath = path.join(standaloneDir, "custom-server.js");
494
+ const serverPath = fs.existsSync(customServerPath)
495
+ ? customServerPath
496
+ : path.join(standaloneDir, "server.js");
497
+
498
+ if (!fs.existsSync(serverPath)) {
499
+ console.error("Error: Standalone build not found.");
500
+ console.error("Please run 'npm run build:cli' first.");
501
+ process.exit(1);
289
502
  }
290
503
 
291
- function stopRelatedProcesses() {
292
- let stoppedAny = false;
293
- const mitmPid = readPidFile(MITM_PID_FILE);
294
- if (mitmPid && isProcessRunning(mitmPid)) {
295
- stoppedAny = killProcessTree(mitmPid) || stoppedAny;
296
- }
504
+ // Check for updates FIRST, then start server
505
+ checkForUpdate().then((latestVersion) => {
506
+ killAllAppProcesses(port).then(() => {
507
+ return killProcessOnPort(port);
508
+ }).then(() => {
509
+ startServer(latestVersion);
510
+ });
511
+ });
297
512
 
298
- const serverPid = readPid();
299
- if (serverPid && isProcessRunning(serverPid)) {
300
- stoppedAny = killProcessTree(serverPid) || stoppedAny;
301
- }
513
+ // Show interface selection menu
514
+ async function showInterfaceMenu(latestVersion) {
515
+ const { selectMenu } = require("./src/cli/utils/input");
516
+ const { clearScreen } = require("./src/cli/utils/display");
517
+ const { getEndpoint } = require("./src/cli/utils/endpoint");
302
518
 
303
- for (const pid of collectOpenrouterXPids()) {
304
- if (pid !== process.pid && isProcessRunning(pid)) {
305
- stoppedAny = killProcessTree(pid) || stoppedAny;
306
- }
519
+ clearScreen();
520
+
521
+ const displayHost = getDisplayHost();
522
+
523
+ // Detect tunnel/local mode for server URL display
524
+ let serverUrl;
525
+ try {
526
+ const { endpoint, tunnelEnabled } = await getEndpoint(port);
527
+ serverUrl = tunnelEnabled ? endpoint.replace(/\/v1$/, "") : `http://${displayHost}:${port}`;
528
+ } catch (e) {
529
+ serverUrl = `http://${displayHost}:${port}`;
307
530
  }
308
- return stoppedAny;
309
- }
310
531
 
311
- function openBrowser(url) {
312
- const command = process.platform === "darwin"
313
- ? "open"
314
- : process.platform === "win32"
315
- ? "cmd"
316
- : "xdg-open";
317
- const args = process.platform === "win32" ? ["/c", "start", "", url] : [url];
318
- spawn(command, args, { detached: true, stdio: "ignore" }).unref();
319
- }
532
+ const subtitle = `šŸš€ Server: \x1b[32m${serverUrl}\x1b[0m`;
320
533
 
321
- function printStatus() {
322
- const pid = readPid();
323
- const meta = readMeta();
534
+ const menuItems = [];
324
535
 
325
- if (isProcessRunning(pid)) {
326
- console.log(`${APP_NAME} is running`);
327
- console.log(`PID: ${pid}`);
328
- console.log(`URL: ${meta?.baseUrl || `http://localhost:${DEFAULT_PORT}`}`);
329
- console.log(`Log: ${LOG_FILE}`);
330
- return true;
536
+ if (latestVersion) {
537
+ menuItems.push({ label: `Update to v${latestVersion} (current: v${pkg.version})`, icon: "⬆" });
331
538
  }
332
539
 
333
- removeRuntimeFiles();
334
- console.log(`${APP_NAME} is not running`);
335
- return false;
336
- }
540
+ menuItems.push(
541
+ { label: "Web UI (Open in Browser)", icon: "🌐" },
542
+ { label: "Terminal UI (Interactive CLI)", icon: "šŸ’»" },
543
+ { label: "Hide to Tray (Background)", icon: "šŸ””" },
544
+ { label: "Exit", icon: "🚪" }
545
+ );
337
546
 
338
- function stopServer() {
339
- const stoppedAny = stopRelatedProcesses();
340
- removeRuntimeFiles();
341
- console.log(stoppedAny ? `${APP_NAME} stopped` : `${APP_NAME} is not running`);
342
- return stoppedAny;
343
- }
547
+ const selected = await selectMenu(`Choose Interface (v${pkg.version})`, menuItems, 0, subtitle);
344
548
 
345
- function createLogFileDescriptors() {
346
- ensureDataDir();
347
- fs.appendFileSync(LOG_FILE, `\n[${new Date().toISOString()}] Starting ${APP_NAME}\n`);
348
- const out = fs.openSync(LOG_FILE, "a");
349
- const err = fs.openSync(LOG_FILE, "a");
350
- return ["ignore", out, err];
351
- }
549
+ const offset = latestVersion ? 1 : 0;
352
550
 
353
- function closeLogFileDescriptors(stdio) {
354
- for (const fd of stdio.slice(1)) {
355
- try {
356
- fs.closeSync(fd);
357
- } catch {}
358
- }
551
+ if (latestVersion && selected === 0) return "update";
552
+ if (selected === offset) return "web";
553
+ if (selected === offset + 1) return "terminal";
554
+ if (selected === offset + 2) return "hide";
555
+ return "exit";
359
556
  }
360
557
 
361
- function checkPortAvailable(port, host) {
362
- return new Promise((resolve) => {
363
- const server = net.createServer();
558
+ const MAX_RESTARTS = 2;
559
+ const RESTART_RESET_MS = 30000; // Reset counter if alive > 30s
364
560
 
365
- server.once("error", (err) => {
366
- if (err && err.code === "EADDRINUSE") {
367
- resolve(false);
368
- return;
561
+ function startServer(latestVersion) {
562
+ const displayHost = getDisplayHost();
563
+ const url = `http://${displayHost}:${port}/dashboard`;
564
+ // Surface real network exposure when bound to all interfaces (default 0.0.0.0).
565
+ if (host === DEFAULT_HOST) {
566
+ const lanIp = getLanIp();
567
+ if (lanIp) console.log(`\x1b[33m⚠ Network-exposed: reachable at http://${lanIp}:${port} (bound 0.0.0.0). Use --host 127.0.0.1 for local-only.\x1b[0m`);
568
+ }
569
+
570
+ let restartCount = 0;
571
+ let serverStartTime = Date.now();
572
+
573
+ const CRASH_LOG_LINES = 50;
574
+ let crashLog = [];
575
+
576
+ function spawnServer() {
577
+ serverStartTime = Date.now();
578
+ crashLog = [];
579
+ const child = spawn(RUNTIME, ["--max-old-space-size=6144", serverPath], {
580
+ cwd: standaloneDir,
581
+ stdio: showLog ? "inherit" : ["ignore", "ignore", "pipe"],
582
+ detached: true,
583
+ windowsHide: true,
584
+ env: {
585
+ ...buildEnvWithRuntime(process.env),
586
+ PORT: port.toString(),
587
+ HOSTNAME: host
369
588
  }
370
- resolve(true);
371
589
  });
590
+ if (!showLog && child.stderr) {
591
+ child.stderr.on("data", (data) => {
592
+ const lines = data.toString().split("\n").filter(Boolean);
593
+ crashLog.push(...lines);
594
+ if (crashLog.length > CRASH_LOG_LINES) crashLog = crashLog.slice(-CRASH_LOG_LINES);
595
+ });
596
+ }
597
+ return child;
598
+ }
372
599
 
373
- server.once("listening", () => {
374
- server.close(() => resolve(true));
375
- });
600
+ let server = spawnServer();
376
601
 
377
- server.listen(Number(port), host);
378
- });
379
- }
602
+ // Cleanup function - force kill server process
603
+ let isCleaningUp = false;
604
+ function cleanup() {
605
+ if (isCleaningUp) return;
606
+ isCleaningUp = true;
607
+ try {
608
+ // Kill tray if running
609
+ try {
610
+ const { killTray } = require("./src/cli/tray/tray");
611
+ killTray();
612
+ } catch (e) { }
613
+ // Kill MIT server (privileged process) via PID file
614
+ killProxyByPidFile();
615
+ // Kill cloudflared/tailscale via PID file (only this app's tunnel)
616
+ killTunnelByPidFile();
617
+ // Kill server process directly
618
+ if (server.pid) {
619
+ process.kill(server.pid, "SIGKILL");
620
+ }
621
+ // Also try to kill process group
622
+ process.kill(-server.pid, "SIGKILL");
623
+ } catch (e) { }
624
+ }
380
625
 
381
- function printChooser(serverUrl) {
382
- console.log(formatChooserBanner(serverUrl));
383
- getChooserOptions().forEach((option, index) => {
384
- const marker = index === 0 ? "ā˜…" : "ā˜†";
385
- console.log(` ${marker} ${option}`);
626
+ // Suppress all errors during shutdown (systray lib throws JSON parse errors)
627
+ let isShuttingDown = false;
628
+ process.on("uncaughtException", (err) => {
629
+ if (isShuttingDown) return;
630
+ console.error("Error:", err.message);
386
631
  });
387
- }
388
632
 
389
- async function runCli() {
390
- const options = parseArgs();
391
-
392
- if (options.help) {
393
- console.log(formatHelp());
394
- process.exit(0);
395
- return;
396
- }
633
+ // Handle all exit scenarios
634
+ process.on("SIGINT", () => {
635
+ if (isShuttingDown) return;
636
+ isShuttingDown = true;
637
+ console.log("\nExiting...");
638
+ cleanup();
639
+ setTimeout(() => process.exit(0), 100);
640
+ });
641
+ process.on("SIGTERM", () => {
642
+ if (isShuttingDown) return;
643
+ isShuttingDown = true;
644
+ cleanup();
645
+ setTimeout(() => process.exit(0), 100);
646
+ });
647
+ process.on("SIGHUP", () => {
648
+ if (isShuttingDown) return;
649
+ isShuttingDown = true;
650
+ cleanup();
651
+ setTimeout(() => process.exit(0), 100);
652
+ });
397
653
 
398
- if (options.version) {
399
- console.log(pkg.version);
400
- process.exit(0);
401
- return;
402
- }
654
+ // Initialize tray icon (runs alongside TUI)
655
+ const initTrayIcon = () => {
656
+ try {
657
+ const { initTray } = require("./src/cli/tray/tray");
658
+ initTray({
659
+ port,
660
+ onQuit: () => {
661
+ isShuttingDown = true;
662
+ console.log("\nšŸ‘‹ Shutting down from tray...");
663
+ cleanup();
664
+ setTimeout(() => process.exit(0), 100);
665
+ },
666
+ onOpenDashboard: () => openBrowser(url)
667
+ });
668
+ } catch (err) {
669
+ // Tray not available - continue without it
670
+ }
671
+ };
403
672
 
404
- if (options.command === "status") {
405
- process.exit(printStatus() ? 0 : 1);
406
- return;
407
- }
673
+ // Tray-only mode: no TUI, just tray icon
674
+ if (trayMode) {
675
+ // Ignore SIGHUP so macOS terminal close doesn't kill the background tray process
676
+ process.removeAllListeners("SIGHUP");
677
+ process.on("SIGHUP", () => {});
408
678
 
409
- if (options.command === "stop") {
410
- stopServer();
411
- process.exit(0);
412
- return;
413
- }
679
+ console.log(`\nšŸš€ ${pkg.name} v${pkg.version}`);
680
+ console.log(`Server: http://${displayHost}:${port}`);
414
681
 
415
- if (options.command === "logs") {
416
- console.log(LOG_FILE);
417
- process.exit(0);
418
- return;
419
- }
682
+ setTimeout(() => {
683
+ initTrayIcon();
684
+ console.log("\nšŸ’” Router is now running in system tray. Close this terminal if you want.");
685
+ console.log(" Right-click tray icon to open dashboard or quit.\n");
686
+ }, 2000);
420
687
 
421
- const meta = readMeta();
422
- if (options.command === "open") {
423
- const url = meta?.baseUrl || `http://localhost:${DEFAULT_PORT}`;
424
- openBrowser(`${url}/dashboard`);
425
- console.log(`Opened ${url}/dashboard`);
426
- process.exit(0);
427
688
  return;
428
689
  }
429
690
 
430
- if (options.command === "restart") {
431
- stopServer();
432
- }
433
-
434
- const projectRoot = __dirname;
435
- const appRoot = path.join(projectRoot, "app");
436
- const serverEntry = path.join(appRoot, "server.js");
437
- const port = getPreferredPort(process.env, options);
438
- const host = options.host || process.env.HOSTNAME || DEFAULT_HOST;
439
- const baseUrl = process.env.NEXT_PUBLIC_BASE_URL || `http://localhost:${port}`;
440
- const foreground = options.foreground || (process.env.ORX_CHOOSER_ACTION !== undefined && process.env.ORX_CHOOSER_ACTION !== "hide");
441
- const runningPid = readPid();
442
-
443
- if (isProcessRunning(runningPid) && options.command !== "restart") {
444
- const runningMeta = readMeta();
445
- console.log(`${APP_NAME} is already running on ${runningMeta?.baseUrl || baseUrl}`);
446
- console.log(`PID: ${runningPid}`);
447
- process.exit(0);
448
- return;
449
- }
691
+ // Wait for server to be ready, then show interface menu loop + tray
692
+ setTimeout(async () => {
693
+ // Start tray icon alongside TUI
694
+ initTrayIcon();
450
695
 
451
- const available = await checkPortAvailable(port, host);
452
- if (!available) {
453
- console.error(getPortConflictMessage(port));
454
- process.exit(1);
455
- return;
456
- }
696
+ try {
697
+ while (true) {
698
+ const choice = await showInterfaceMenu(latestVersion);
699
+
700
+ if (choice === "update") {
701
+ isShuttingDown = true;
702
+ const { clearScreen } = require("./src/cli/utils/display");
703
+ clearScreen();
704
+ console.log(`\n⬆ Update v${pkg.version} → v${latestVersion}\n`);
705
+ console.log(`Run this after exit:\n`);
706
+ console.log(` \x1b[33m${INSTALL_CMD_LATEST}\x1b[0m\n`);
707
+ cleanup();
708
+ await killAllAppProcesses(port);
709
+ await killProcessOnPort(port);
710
+ setTimeout(() => process.exit(0), 200);
711
+ return;
712
+ } else if (choice === "web") {
713
+ openBrowser(url);
714
+ // Wait for user to come back
715
+ const { pause } = require("./src/cli/utils/input");
716
+ await pause("\nPress Enter to go back to menu...");
717
+ } else if (choice === "terminal") {
718
+ // Start Terminal UI - it will return when user selects Back
719
+ const { startTerminalUI } = require("./src/cli/terminalUI");
720
+ await startTerminalUI(port);
721
+ // Loop continues, show menu again
722
+ } else if (choice === "hide") {
723
+ const { clearScreen } = require("./src/cli/utils/display");
724
+ clearScreen();
725
+
726
+ // Enable auto startup on OS boot
727
+ try {
728
+ const { enableAutoStart } = require("./src/cli/tray/autostart");
729
+ enableAutoStart(__filename);
730
+ } catch (e) { }
731
+
732
+ if (process.platform === "darwin") {
733
+ // macOS: keep current process alive — spawning a detached child puts
734
+ // it outside the login session so NSStatusItem silently fails.
735
+ process.removeAllListeners("SIGHUP");
736
+ process.on("SIGHUP", () => {});
737
+
738
+ console.log(`\nā³ Switching to tray mode... (icon already visible in menu bar)`);
739
+ console.log(`šŸ”” 9Router is running in tray (PID: ${process.pid})`);
740
+ console.log(` Server: http://${displayHost}:${port}`);
741
+ console.log(`\nšŸ’” You can close this terminal. Right-click tray icon to quit.\n`);
742
+
743
+ // Tray already init'd at startup — just keep event loop alive.
744
+ return;
745
+ }
746
+
747
+ // Windows/Linux: spawn detached bgProcess (systray works fine in child)
748
+ console.log(`\nā³ Starting background process... (tray icon will appear in ~3s)`);
749
+
750
+ const bgProcess = spawn(process.execPath, [__filename, "--tray", "--skip-update", "-p", port.toString()], {
751
+ detached: true,
752
+ stdio: "ignore",
753
+ windowsHide: true,
754
+ env: { ...process.env }
755
+ });
756
+ bgProcess.unref();
757
+
758
+ console.log(`šŸ”” 9Router is now running in background (PID: ${bgProcess.pid})`);
759
+ console.log(` Server: http://${displayHost}:${port}`);
760
+ console.log(`\nšŸ’” You can close this terminal. Right-click tray icon to quit.\n`);
761
+
762
+ // cleanup() kills server so bgProcess can claim the port fresh
763
+ cleanup();
764
+ process.exit(0);
765
+ } else if (choice === "exit") {
766
+ isShuttingDown = true;
767
+ console.log("\nExiting...");
768
+ cleanup();
769
+ setTimeout(() => process.exit(0), 100);
770
+ }
771
+ }
772
+ } catch (err) {
773
+ console.error("Error:", err.message);
774
+ cleanup();
775
+ process.exit(1);
776
+ }
777
+ }, 3000);
457
778
 
458
- printChooser(baseUrl);
459
-
460
- const stdio = foreground ? "inherit" : createLogFileDescriptors();
461
- const child = spawn(process.execPath, [serverEntry], {
462
- cwd: appRoot,
463
- stdio,
464
- detached: !foreground,
465
- env: {
466
- ...process.env,
467
- PORT: port,
468
- HOSTNAME: host,
469
- NEXT_PUBLIC_BASE_URL: baseUrl,
470
- },
471
- });
779
+ function attachServerEvents() {
780
+ server.on("error", (err) => {
781
+ console.error("Failed to start server:", err.message);
782
+ if (!isShuttingDown) tryRestart();
783
+ else { cleanup(); process.exit(1); }
784
+ });
472
785
 
473
- if (!foreground) {
474
- writePid(child.pid);
475
- writeMeta({
476
- pid: child.pid,
477
- port,
478
- host,
479
- baseUrl,
480
- dashboardUrl: `${baseUrl}/dashboard`,
481
- logFile: LOG_FILE,
482
- startedAt: new Date().toISOString(),
786
+ server.on("close", (code) => {
787
+ if (isShuttingDown || code === 0) {
788
+ process.exit(code || 0);
789
+ return;
790
+ }
791
+ tryRestart(code);
483
792
  });
484
- child.unref();
485
- closeLogFileDescriptors(stdio);
486
- if (!options.noBrowser) {
487
- openBrowser(`${baseUrl}/dashboard`);
488
- }
489
- console.log(`${APP_NAME} is running in background on ${baseUrl}`);
490
- console.log(`Dashboard: ${baseUrl}/dashboard`);
491
- console.log(`Log: ${LOG_FILE}`);
492
- process.exit(0);
493
- return;
494
793
  }
495
794
 
496
- child.on("exit", (code, signal) => {
497
- if (signal) {
498
- process.kill(process.pid, signal);
795
+ function tryRestart(code) {
796
+ const aliveMs = Date.now() - serverStartTime;
797
+ // Reset counter if last run was stable
798
+ if (aliveMs >= RESTART_RESET_MS) restartCount = 0;
799
+
800
+ if (restartCount >= MAX_RESTARTS) {
801
+ console.error(`\nāš ļø Server crashed ${MAX_RESTARTS} times. Disabling MIT and restarting...`);
802
+ try {
803
+ const dbPath = path.join(os.homedir(), process.platform === "win32" ? path.join("AppData", "Roaming", "9router", "db.json") : path.join(".9router", "db.json"));
804
+ if (fs.existsSync(dbPath)) {
805
+ const db = JSON.parse(fs.readFileSync(dbPath, "utf-8"));
806
+ if (db.settings) db.settings.mitmEnabled = false;
807
+ fs.writeFileSync(dbPath, JSON.stringify(db, null, 2));
808
+ }
809
+ } catch { /* best effort */ }
810
+ restartCount = 0;
811
+ server = spawnServer();
812
+ attachServerEvents();
499
813
  return;
500
814
  }
501
- process.exit(code ?? 0);
502
- });
503
- }
504
815
 
505
- if (require.main === module) {
506
- runCli();
507
- }
816
+ restartCount++;
817
+ const delay = Math.min(1000 * restartCount, 10000);
818
+ console.error(`\nāš ļø Server exited (code=${code ?? "unknown"}). Restarting in ${delay / 1000}s... (${restartCount}/${MAX_RESTARTS})`);
819
+ if (crashLog.length) {
820
+ console.error("\n--- Server crash log ---");
821
+ crashLog.forEach(l => console.error(l));
822
+ console.error("--- End crash log ---\n");
823
+ }
824
+
825
+ setTimeout(() => {
826
+ server = spawnServer();
827
+ attachServerEvents();
828
+ }, delay);
829
+ }
508
830
 
509
- module.exports = {
510
- parseArgs,
511
- getPreferredPort,
512
- getPortConflictMessage,
513
- formatHelp,
514
- formatChooserBanner,
515
- getChooserOptions,
516
- isProcessRunning,
517
- printStatus,
518
- stopServer,
519
- };
831
+ attachServerEvents();
832
+ }