9router 0.3.53 → 0.3.54

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 (314) hide show
  1. package/app/.next/BUILD_ID +1 -1
  2. package/app/.next/app-path-routes-manifest.json +46 -46
  3. package/app/.next/build-manifest.json +2 -2
  4. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  5. package/app/.next/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  6. package/app/.next/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
  7. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  8. package/app/.next/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
  9. package/app/.next/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  10. package/app/.next/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  11. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  12. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  13. package/app/.next/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  14. package/app/.next/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
  15. package/app/.next/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
  16. package/app/.next/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  17. package/app/.next/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  18. package/app/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  19. package/app/.next/server/app/_global-error.html +2 -2
  20. package/app/.next/server/app/_global-error.rsc +1 -1
  21. package/app/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  22. package/app/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  23. package/app/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  24. package/app/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  25. package/app/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  26. package/app/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  27. package/app/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  28. package/app/.next/server/app/_not-found.html +1 -1
  29. package/app/.next/server/app/_not-found.rsc +4 -4
  30. package/app/.next/server/app/_not-found.segments/_full.segment.rsc +4 -4
  31. package/app/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  32. package/app/.next/server/app/_not-found.segments/_index.segment.rsc +4 -4
  33. package/app/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  34. package/app/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  35. package/app/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  36. package/app/.next/server/app/api/auth/login/route_client-reference-manifest.js +1 -1
  37. package/app/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
  38. package/app/.next/server/app/api/cli-tools/antigravity-mitm/alias/route_client-reference-manifest.js +1 -1
  39. package/app/.next/server/app/api/cli-tools/antigravity-mitm/route.js +1 -1
  40. package/app/.next/server/app/api/cli-tools/antigravity-mitm/route_client-reference-manifest.js +1 -1
  41. package/app/.next/server/app/api/cli-tools/claude-settings/route_client-reference-manifest.js +1 -1
  42. package/app/.next/server/app/api/cli-tools/codex-settings/route_client-reference-manifest.js +1 -1
  43. package/app/.next/server/app/api/cli-tools/copilot-settings/route_client-reference-manifest.js +1 -1
  44. package/app/.next/server/app/api/cli-tools/droid-settings/route_client-reference-manifest.js +1 -1
  45. package/app/.next/server/app/api/cli-tools/openclaw-settings/route_client-reference-manifest.js +1 -1
  46. package/app/.next/server/app/api/cli-tools/opencode-settings/route_client-reference-manifest.js +1 -1
  47. package/app/.next/server/app/api/cloud/auth/route_client-reference-manifest.js +1 -1
  48. package/app/.next/server/app/api/cloud/credentials/update/route_client-reference-manifest.js +1 -1
  49. package/app/.next/server/app/api/cloud/model/resolve/route_client-reference-manifest.js +1 -1
  50. package/app/.next/server/app/api/cloud/models/alias/route_client-reference-manifest.js +1 -1
  51. package/app/.next/server/app/api/combos/[id]/route_client-reference-manifest.js +1 -1
  52. package/app/.next/server/app/api/combos/route_client-reference-manifest.js +1 -1
  53. package/app/.next/server/app/api/init/route_client-reference-manifest.js +1 -1
  54. package/app/.next/server/app/api/keys/[id]/route_client-reference-manifest.js +1 -1
  55. package/app/.next/server/app/api/keys/route_client-reference-manifest.js +1 -1
  56. package/app/.next/server/app/api/locale/route_client-reference-manifest.js +1 -1
  57. package/app/.next/server/app/api/models/alias/route_client-reference-manifest.js +1 -1
  58. package/app/.next/server/app/api/models/route.js +1 -1
  59. package/app/.next/server/app/api/models/route_client-reference-manifest.js +1 -1
  60. package/app/.next/server/app/api/models/test/route_client-reference-manifest.js +1 -1
  61. package/app/.next/server/app/api/oauth/[provider]/[action]/route_client-reference-manifest.js +1 -1
  62. package/app/.next/server/app/api/oauth/cursor/auto-import/route_client-reference-manifest.js +1 -1
  63. package/app/.next/server/app/api/oauth/cursor/import/route_client-reference-manifest.js +1 -1
  64. package/app/.next/server/app/api/oauth/iflow/cookie/route_client-reference-manifest.js +1 -1
  65. package/app/.next/server/app/api/oauth/kiro/auto-import/route_client-reference-manifest.js +1 -1
  66. package/app/.next/server/app/api/oauth/kiro/import/route_client-reference-manifest.js +1 -1
  67. package/app/.next/server/app/api/oauth/kiro/social-authorize/route_client-reference-manifest.js +1 -1
  68. package/app/.next/server/app/api/oauth/kiro/social-exchange/route_client-reference-manifest.js +1 -1
  69. package/app/.next/server/app/api/pricing/route_client-reference-manifest.js +1 -1
  70. package/app/.next/server/app/api/provider-nodes/[id]/route_client-reference-manifest.js +1 -1
  71. package/app/.next/server/app/api/provider-nodes/route_client-reference-manifest.js +1 -1
  72. package/app/.next/server/app/api/provider-nodes/validate/route_client-reference-manifest.js +1 -1
  73. package/app/.next/server/app/api/providers/[id]/models/route_client-reference-manifest.js +1 -1
  74. package/app/.next/server/app/api/providers/[id]/route_client-reference-manifest.js +1 -1
  75. package/app/.next/server/app/api/providers/[id]/test/route_client-reference-manifest.js +1 -1
  76. package/app/.next/server/app/api/providers/[id]/test-models/route_client-reference-manifest.js +1 -1
  77. package/app/.next/server/app/api/providers/client/route_client-reference-manifest.js +1 -1
  78. package/app/.next/server/app/api/providers/route.js +1 -1
  79. package/app/.next/server/app/api/providers/route_client-reference-manifest.js +1 -1
  80. package/app/.next/server/app/api/providers/test-batch/route_client-reference-manifest.js +1 -1
  81. package/app/.next/server/app/api/providers/validate/route_client-reference-manifest.js +1 -1
  82. package/app/.next/server/app/api/proxy-pools/[id]/route_client-reference-manifest.js +1 -1
  83. package/app/.next/server/app/api/proxy-pools/[id]/test/route_client-reference-manifest.js +1 -1
  84. package/app/.next/server/app/api/proxy-pools/route_client-reference-manifest.js +1 -1
  85. package/app/.next/server/app/api/settings/database/route_client-reference-manifest.js +1 -1
  86. package/app/.next/server/app/api/settings/proxy-test/route_client-reference-manifest.js +1 -1
  87. package/app/.next/server/app/api/settings/require-login/route_client-reference-manifest.js +1 -1
  88. package/app/.next/server/app/api/settings/route_client-reference-manifest.js +1 -1
  89. package/app/.next/server/app/api/shutdown/route_client-reference-manifest.js +1 -1
  90. package/app/.next/server/app/api/tags/route_client-reference-manifest.js +1 -1
  91. package/app/.next/server/app/api/translator/console-logs/route.js +1 -1
  92. package/app/.next/server/app/api/translator/console-logs/route_client-reference-manifest.js +1 -1
  93. package/app/.next/server/app/api/translator/console-logs/stream/route.js +1 -1
  94. package/app/.next/server/app/api/translator/console-logs/stream/route_client-reference-manifest.js +1 -1
  95. package/app/.next/server/app/api/translator/load/route.js.nft.json +1 -1
  96. package/app/.next/server/app/api/translator/load/route_client-reference-manifest.js +1 -1
  97. package/app/.next/server/app/api/translator/save/route.js.nft.json +1 -1
  98. package/app/.next/server/app/api/translator/save/route_client-reference-manifest.js +1 -1
  99. package/app/.next/server/app/api/translator/send/route_client-reference-manifest.js +1 -1
  100. package/app/.next/server/app/api/translator/translate/route_client-reference-manifest.js +1 -1
  101. package/app/.next/server/app/api/tunnel/disable/route_client-reference-manifest.js +1 -1
  102. package/app/.next/server/app/api/tunnel/enable/route_client-reference-manifest.js +1 -1
  103. package/app/.next/server/app/api/tunnel/status/route_client-reference-manifest.js +1 -1
  104. package/app/.next/server/app/api/usage/[connectionId]/route_client-reference-manifest.js +1 -1
  105. package/app/.next/server/app/api/usage/chart/route_client-reference-manifest.js +1 -1
  106. package/app/.next/server/app/api/usage/history/route_client-reference-manifest.js +1 -1
  107. package/app/.next/server/app/api/usage/providers/route_client-reference-manifest.js +1 -1
  108. package/app/.next/server/app/api/usage/request-details/route_client-reference-manifest.js +1 -1
  109. package/app/.next/server/app/api/usage/request-logs/route_client-reference-manifest.js +1 -1
  110. package/app/.next/server/app/api/usage/stats/route_client-reference-manifest.js +1 -1
  111. package/app/.next/server/app/api/usage/stream/route_client-reference-manifest.js +1 -1
  112. package/app/.next/server/app/api/v1/api/chat/route_client-reference-manifest.js +1 -1
  113. package/app/.next/server/app/api/v1/chat/completions/route_client-reference-manifest.js +1 -1
  114. package/app/.next/server/app/api/v1/embeddings/route_client-reference-manifest.js +1 -1
  115. package/app/.next/server/app/api/v1/messages/count_tokens/route_client-reference-manifest.js +1 -1
  116. package/app/.next/server/app/api/v1/messages/route_client-reference-manifest.js +1 -1
  117. package/app/.next/server/app/api/v1/models/route_client-reference-manifest.js +1 -1
  118. package/app/.next/server/app/api/v1/responses/route_client-reference-manifest.js +1 -1
  119. package/app/.next/server/app/api/v1/route_client-reference-manifest.js +1 -1
  120. package/app/.next/server/app/api/v1beta/models/[...path]/route_client-reference-manifest.js +1 -1
  121. package/app/.next/server/app/api/v1beta/models/route_client-reference-manifest.js +1 -1
  122. package/app/.next/server/app/api/version/route.js +1 -1
  123. package/app/.next/server/app/api/version/route_client-reference-manifest.js +1 -1
  124. package/app/.next/server/app/callback/page_client-reference-manifest.js +1 -1
  125. package/app/.next/server/app/callback.html +1 -1
  126. package/app/.next/server/app/callback.rsc +4 -4
  127. package/app/.next/server/app/callback.segments/_full.segment.rsc +4 -4
  128. package/app/.next/server/app/callback.segments/_head.segment.rsc +1 -1
  129. package/app/.next/server/app/callback.segments/_index.segment.rsc +4 -4
  130. package/app/.next/server/app/callback.segments/_tree.segment.rsc +2 -2
  131. package/app/.next/server/app/callback.segments/callback/__PAGE__.segment.rsc +1 -1
  132. package/app/.next/server/app/callback.segments/callback.segment.rsc +1 -1
  133. package/app/.next/server/app/dashboard/cli-tools.html +1 -1
  134. package/app/.next/server/app/dashboard/cli-tools.rsc +6 -6
  135. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +2 -2
  136. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools.segment.rsc +1 -1
  137. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  138. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  139. package/app/.next/server/app/dashboard/cli-tools.segments/_full.segment.rsc +6 -6
  140. package/app/.next/server/app/dashboard/cli-tools.segments/_head.segment.rsc +1 -1
  141. package/app/.next/server/app/dashboard/cli-tools.segments/_index.segment.rsc +4 -4
  142. package/app/.next/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +2 -2
  143. package/app/.next/server/app/dashboard/combos.html +1 -1
  144. package/app/.next/server/app/dashboard/combos.rsc +6 -6
  145. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +2 -2
  146. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos.segment.rsc +1 -1
  147. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  148. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  149. package/app/.next/server/app/dashboard/combos.segments/_full.segment.rsc +6 -6
  150. package/app/.next/server/app/dashboard/combos.segments/_head.segment.rsc +1 -1
  151. package/app/.next/server/app/dashboard/combos.segments/_index.segment.rsc +4 -4
  152. package/app/.next/server/app/dashboard/combos.segments/_tree.segment.rsc +2 -2
  153. package/app/.next/server/app/dashboard/endpoint.html +1 -1
  154. package/app/.next/server/app/dashboard/endpoint.rsc +6 -6
  155. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +2 -2
  156. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint.segment.rsc +1 -1
  157. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  158. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  159. package/app/.next/server/app/dashboard/endpoint.segments/_full.segment.rsc +6 -6
  160. package/app/.next/server/app/dashboard/endpoint.segments/_head.segment.rsc +1 -1
  161. package/app/.next/server/app/dashboard/endpoint.segments/_index.segment.rsc +4 -4
  162. package/app/.next/server/app/dashboard/endpoint.segments/_tree.segment.rsc +2 -2
  163. package/app/.next/server/app/dashboard/mitm.html +1 -1
  164. package/app/.next/server/app/dashboard/mitm.rsc +6 -6
  165. package/app/.next/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +2 -2
  166. package/app/.next/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm.segment.rsc +1 -1
  167. package/app/.next/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  168. package/app/.next/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  169. package/app/.next/server/app/dashboard/mitm.segments/_full.segment.rsc +6 -6
  170. package/app/.next/server/app/dashboard/mitm.segments/_head.segment.rsc +1 -1
  171. package/app/.next/server/app/dashboard/mitm.segments/_index.segment.rsc +4 -4
  172. package/app/.next/server/app/dashboard/mitm.segments/_tree.segment.rsc +2 -2
  173. package/app/.next/server/app/dashboard/profile.html +1 -1
  174. package/app/.next/server/app/dashboard/profile.rsc +6 -6
  175. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +2 -2
  176. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile.segment.rsc +1 -1
  177. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  178. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  179. package/app/.next/server/app/dashboard/profile.segments/_full.segment.rsc +6 -6
  180. package/app/.next/server/app/dashboard/profile.segments/_head.segment.rsc +1 -1
  181. package/app/.next/server/app/dashboard/profile.segments/_index.segment.rsc +4 -4
  182. package/app/.next/server/app/dashboard/profile.segments/_tree.segment.rsc +2 -2
  183. package/app/.next/server/app/dashboard/providers/new.html +1 -1
  184. package/app/.next/server/app/dashboard/providers/new.rsc +6 -6
  185. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +2 -2
  186. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new.segment.rsc +1 -1
  187. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  188. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  189. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  190. package/app/.next/server/app/dashboard/providers/new.segments/_full.segment.rsc +6 -6
  191. package/app/.next/server/app/dashboard/providers/new.segments/_head.segment.rsc +1 -1
  192. package/app/.next/server/app/dashboard/providers/new.segments/_index.segment.rsc +4 -4
  193. package/app/.next/server/app/dashboard/providers/new.segments/_tree.segment.rsc +2 -2
  194. package/app/.next/server/app/dashboard/providers.html +1 -1
  195. package/app/.next/server/app/dashboard/providers.rsc +6 -6
  196. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +2 -2
  197. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  198. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  199. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  200. package/app/.next/server/app/dashboard/providers.segments/_full.segment.rsc +6 -6
  201. package/app/.next/server/app/dashboard/providers.segments/_head.segment.rsc +1 -1
  202. package/app/.next/server/app/dashboard/providers.segments/_index.segment.rsc +4 -4
  203. package/app/.next/server/app/dashboard/providers.segments/_tree.segment.rsc +2 -2
  204. package/app/.next/server/app/dashboard/proxy-pools.html +1 -1
  205. package/app/.next/server/app/dashboard/proxy-pools.rsc +6 -6
  206. package/app/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +2 -2
  207. package/app/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools.segment.rsc +1 -1
  208. package/app/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  209. package/app/.next/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  210. package/app/.next/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +6 -6
  211. package/app/.next/server/app/dashboard/proxy-pools.segments/_head.segment.rsc +1 -1
  212. package/app/.next/server/app/dashboard/proxy-pools.segments/_index.segment.rsc +4 -4
  213. package/app/.next/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +2 -2
  214. package/app/.next/server/app/dashboard/quota.html +2 -2
  215. package/app/.next/server/app/dashboard/quota.rsc +5 -5
  216. package/app/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +1 -1
  217. package/app/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota.segment.rsc +1 -1
  218. package/app/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  219. package/app/.next/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  220. package/app/.next/server/app/dashboard/quota.segments/_full.segment.rsc +5 -5
  221. package/app/.next/server/app/dashboard/quota.segments/_head.segment.rsc +1 -1
  222. package/app/.next/server/app/dashboard/quota.segments/_index.segment.rsc +4 -4
  223. package/app/.next/server/app/dashboard/quota.segments/_tree.segment.rsc +2 -2
  224. package/app/.next/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  225. package/app/.next/server/app/dashboard/settings/pricing.html +1 -1
  226. package/app/.next/server/app/dashboard/settings/pricing.rsc +4 -4
  227. package/app/.next/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +4 -4
  228. package/app/.next/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +1 -1
  229. package/app/.next/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +4 -4
  230. package/app/.next/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +2 -2
  231. package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +1 -1
  232. package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing.segment.rsc +1 -1
  233. package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings.segment.rsc +1 -1
  234. package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard.segment.rsc +1 -1
  235. package/app/.next/server/app/dashboard/translator.html +1 -1
  236. package/app/.next/server/app/dashboard/translator.rsc +6 -6
  237. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +2 -2
  238. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator.segment.rsc +1 -1
  239. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  240. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  241. package/app/.next/server/app/dashboard/translator.segments/_full.segment.rsc +6 -6
  242. package/app/.next/server/app/dashboard/translator.segments/_head.segment.rsc +1 -1
  243. package/app/.next/server/app/dashboard/translator.segments/_index.segment.rsc +4 -4
  244. package/app/.next/server/app/dashboard/translator.segments/_tree.segment.rsc +2 -2
  245. package/app/.next/server/app/dashboard/usage.html +1 -1
  246. package/app/.next/server/app/dashboard/usage.rsc +6 -6
  247. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +2 -2
  248. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage.segment.rsc +1 -1
  249. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  250. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  251. package/app/.next/server/app/dashboard/usage.segments/_full.segment.rsc +6 -6
  252. package/app/.next/server/app/dashboard/usage.segments/_head.segment.rsc +1 -1
  253. package/app/.next/server/app/dashboard/usage.segments/_index.segment.rsc +4 -4
  254. package/app/.next/server/app/dashboard/usage.segments/_tree.segment.rsc +2 -2
  255. package/app/.next/server/app/dashboard.html +1 -1
  256. package/app/.next/server/app/dashboard.rsc +6 -6
  257. package/app/.next/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +2 -2
  258. package/app/.next/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  259. package/app/.next/server/app/dashboard.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  260. package/app/.next/server/app/dashboard.segments/_full.segment.rsc +6 -6
  261. package/app/.next/server/app/dashboard.segments/_head.segment.rsc +1 -1
  262. package/app/.next/server/app/dashboard.segments/_index.segment.rsc +4 -4
  263. package/app/.next/server/app/dashboard.segments/_tree.segment.rsc +2 -2
  264. package/app/.next/server/app/index.html +1 -1
  265. package/app/.next/server/app/index.rsc +4 -4
  266. package/app/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  267. package/app/.next/server/app/index.segments/_full.segment.rsc +4 -4
  268. package/app/.next/server/app/index.segments/_head.segment.rsc +1 -1
  269. package/app/.next/server/app/index.segments/_index.segment.rsc +4 -4
  270. package/app/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  271. package/app/.next/server/app/landing/page_client-reference-manifest.js +1 -1
  272. package/app/.next/server/app/landing.html +1 -1
  273. package/app/.next/server/app/landing.rsc +4 -4
  274. package/app/.next/server/app/landing.segments/_full.segment.rsc +4 -4
  275. package/app/.next/server/app/landing.segments/_head.segment.rsc +1 -1
  276. package/app/.next/server/app/landing.segments/_index.segment.rsc +4 -4
  277. package/app/.next/server/app/landing.segments/_tree.segment.rsc +2 -2
  278. package/app/.next/server/app/landing.segments/landing/__PAGE__.segment.rsc +1 -1
  279. package/app/.next/server/app/landing.segments/landing.segment.rsc +1 -1
  280. package/app/.next/server/app/login/page_client-reference-manifest.js +1 -1
  281. package/app/.next/server/app/login.html +1 -1
  282. package/app/.next/server/app/login.rsc +5 -5
  283. package/app/.next/server/app/login.segments/_full.segment.rsc +5 -5
  284. package/app/.next/server/app/login.segments/_head.segment.rsc +1 -1
  285. package/app/.next/server/app/login.segments/_index.segment.rsc +4 -4
  286. package/app/.next/server/app/login.segments/_tree.segment.rsc +2 -2
  287. package/app/.next/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
  288. package/app/.next/server/app/login.segments/login.segment.rsc +1 -1
  289. package/app/.next/server/app/manifest.webmanifest/route.js.nft.json +1 -1
  290. package/app/.next/server/app/manifest.webmanifest/route_client-reference-manifest.js +1 -1
  291. package/app/.next/server/app/page_client-reference-manifest.js +1 -1
  292. package/app/.next/server/app-paths-manifest.json +46 -46
  293. package/app/.next/server/chunks/1114.js +1 -1
  294. package/app/.next/server/chunks/1424.js +1 -1
  295. package/app/.next/server/chunks/318.js +1 -1
  296. package/app/.next/server/chunks/6182.js +6 -6
  297. package/app/.next/server/chunks/649.js +1 -1
  298. package/app/.next/server/pages/404.html +1 -1
  299. package/app/.next/server/pages/500.html +2 -2
  300. package/app/.next/server/server-reference-manifest.js +1 -1
  301. package/app/.next/server/server-reference-manifest.json +1 -1
  302. package/app/.next/static/chunks/{5497-2f4b5d7837ad4dc8.js → 5497-4115bafa029568f2.js} +1 -1
  303. package/app/.next/static/chunks/{9242-3fb6423adcc6e277.js → 9242-c9d752975b449b44.js} +2 -2
  304. package/app/.next/static/chunks/app/{layout-d66315546ced1415.js → layout-2cf69a29bcc7722e.js} +1 -1
  305. package/app/.next/static/css/{0c4f3a92a0a64981.css → 4016074f63f34af9.css} +1 -1
  306. package/app/package.json +1 -1
  307. package/app/src/mitm/cert/install.js +9 -8
  308. package/app/src/mitm/dns/dnsConfig.js +6 -5
  309. package/app/src/mitm/logger.js +8 -0
  310. package/app/src/mitm/manager.js +48 -19
  311. package/app/src/mitm/server.js +28 -17
  312. package/package.json +1 -1
  313. /package/app/.next/static/{2ABcpZEvM8MzFMmHIRKq0 → lQALtClEnCtM3rGs1b9Jb}/_buildManifest.js +0 -0
  314. /package/app/.next/static/{2ABcpZEvM8MzFMmHIRKq0 → lQALtClEnCtM3rGs1b9Jb}/_ssgManifest.js +0 -0
@@ -11,6 +11,7 @@ const IS_WIN = process.platform === "win32";
11
11
  const { generateCert } = require("./cert/generate");
12
12
  const { installCert } = require("./cert/install");
13
13
  const { MITM_DIR } = require("./paths");
14
+ const { log, err } = require("./logger");
14
15
 
15
16
  const MITM_PORT = 443;
16
17
  const MITM_WIN_NODE_PORT = 8443;
@@ -140,7 +141,7 @@ async function saveMitmSettings(enabled, password) {
140
141
  if (password) updates.mitmSudoEncrypted = encryptPassword(password);
141
142
  await _updateSettings(updates);
142
143
  } catch (e) {
143
- console.log("[MITM] Failed to save settings:", e.message);
144
+ err(`Failed to save settings: ${e.message}`);
144
145
  }
145
146
  }
146
147
 
@@ -277,8 +278,10 @@ async function getMitmStatus() {
277
278
  const dnsStatus = checkAllDNSStatus();
278
279
  const rootCACertPath = path.join(MITM_DIR, "rootCA.crt");
279
280
  const certExists = fs.existsSync(rootCACertPath);
281
+ const { checkCertInstalled } = require("./cert/install");
282
+ const certTrusted = certExists ? await checkCertInstalled(rootCACertPath) : false;
280
283
 
281
- return { running, pid, certExists, dnsStatus };
284
+ return { running, pid, certExists, certTrusted, dnsStatus };
282
285
  }
283
286
 
284
287
  async function scheduleMitmRestart(apiKey) {
@@ -288,7 +291,7 @@ async function scheduleMitmRestart(apiKey) {
288
291
  if (aliveMs >= MITM_RESTART_RESET_MS) mitmRestartCount = 0;
289
292
 
290
293
  if (mitmRestartCount >= MITM_MAX_RESTARTS) {
291
- console.error("[MITM] Max restart attempts reached. Giving up.");
294
+ err("Max restart attempts reached. Giving up.");
292
295
  return;
293
296
  }
294
297
 
@@ -297,28 +300,28 @@ async function scheduleMitmRestart(apiKey) {
297
300
  mitmRestartCount++;
298
301
  mitmIsRestarting = true;
299
302
 
300
- console.log(`[MITM] Restarting in ${delay / 1000}s... (${mitmRestartCount}/${MITM_MAX_RESTARTS})`);
303
+ log(`Restarting in ${delay / 1000}s... (${mitmRestartCount}/${MITM_MAX_RESTARTS})`);
301
304
  await new Promise((r) => setTimeout(r, delay));
302
305
 
303
306
  try {
304
307
  const settings = _getSettings ? await _getSettings() : null;
305
308
  if (settings && !settings.mitmEnabled) {
306
- console.log("[MITM] MITM disabled, skipping restart");
309
+ log("MITM disabled, skipping restart");
307
310
  mitmIsRestarting = false;
308
311
  return;
309
312
  }
310
313
  const password = getCachedPassword() || await loadEncryptedPassword();
311
314
  if (!password && !IS_WIN) {
312
- console.error("[MITM] No cached password, cannot auto-restart");
315
+ err("No cached password, cannot auto-restart");
313
316
  mitmIsRestarting = false;
314
317
  return;
315
318
  }
316
319
  await startServer(apiKey, password);
317
- console.log("[MITM] Restarted successfully");
320
+ log("🔄 Restarted successfully");
318
321
  mitmRestartCount = 0;
319
322
  mitmIsRestarting = false;
320
- } catch (err) {
321
- console.error(`[MITM] Restart attempt ${mitmRestartCount}/${MITM_MAX_RESTARTS} failed:`, err.message);
323
+ } catch (e) {
324
+ err(`Restart attempt ${mitmRestartCount}/${MITM_MAX_RESTARTS} failed: ${e.message}`);
322
325
  mitmIsRestarting = false;
323
326
  // Schedule next retry
324
327
  scheduleMitmRestart(apiKey);
@@ -335,7 +338,7 @@ async function startServer(apiKey, sudoPassword) {
335
338
  const savedPid = parseInt(fs.readFileSync(PID_FILE, "utf-8").trim(), 10);
336
339
  if (savedPid && isProcessAlive(savedPid)) {
337
340
  serverPid = savedPid;
338
- console.log(`[MITM] Reusing existing process PID ${savedPid}`);
341
+ log(`♻️ Reusing existing process (PID: ${savedPid})`);
339
342
  await saveMitmSettings(true, sudoPassword);
340
343
  if (sudoPassword) setCachedPassword(sudoPassword);
341
344
  return { running: true, pid: savedPid };
@@ -357,7 +360,7 @@ async function startServer(apiKey, sudoPassword) {
357
360
  if (portStatus === "in-use" || portStatus === "no-permission") {
358
361
  const owner = await getPort443Owner(sudoPassword);
359
362
  if (owner && owner.name === "node") {
360
- console.log(`[MITM] Killing orphan node process on port 443 (PID ${owner.pid})...`);
363
+ log(`Killing orphan node process on port 443 (PID ${owner.pid})...`);
361
364
  try {
362
365
  const { execWithPassword } = require("./dns/dnsConfig");
363
366
  await execWithPassword(`kill -9 ${owner.pid}`, sudoPassword);
@@ -377,7 +380,7 @@ async function startServer(apiKey, sudoPassword) {
377
380
  const rootCAKeyPath = path.join(MITM_DIR, "rootCA.key");
378
381
 
379
382
  if (!fs.existsSync(rootCACertPath) || !fs.existsSync(rootCAKeyPath)) {
380
- console.log("[MITM] Generating Root CA certificate (first time or migration)...");
383
+ log("🔐 Generating Root CA (first time)...");
381
384
  await generateCert();
382
385
  }
383
386
 
@@ -385,17 +388,20 @@ async function startServer(apiKey, sudoPassword) {
385
388
  const { checkCertInstalled } = require("./cert/install");
386
389
  const rootCATrusted = await checkCertInstalled(rootCACertPath);
387
390
  if (!rootCATrusted) {
388
- console.log("[MITM] Installing Root CA to system trust store...");
391
+ log("🔐 Cert: not trusted installing...");
389
392
  // Use provided password or cached/stored password
390
393
  const password = sudoPassword || getCachedPassword() || await loadEncryptedPassword();
391
394
  if (!password && !IS_WIN) {
392
395
  throw new Error("Sudo password required to install Root CA certificate");
393
396
  }
394
397
  await installCert(password, rootCACertPath);
395
- console.log(" Root CA installed successfully");
398
+ log("🔐 Cert: trusted");
399
+ } else {
400
+ log("🔐 Cert: already trusted ✅");
396
401
  }
397
402
 
398
403
  // Step 2: Spawn server (Root CA already installed in Step 1.5)
404
+ log("🚀 Starting server...");
399
405
  if (IS_WIN) {
400
406
  const psSQ = (s) => s.replace(/'/g, "''");
401
407
  const nodePs = psSQ(process.execPath);
@@ -436,17 +442,18 @@ async function startServer(apiKey, sudoPassword) {
436
442
  let startError = null;
437
443
  if (!IS_WIN) {
438
444
  serverProcess.stdout.on("data", (data) => {
439
- console.log(`[MITM Server] ${data.toString().trim()}`);
445
+ // server.js already formats its own logs — print as-is
446
+ process.stdout.write(data);
440
447
  });
441
448
  serverProcess.stderr.on("data", (data) => {
442
449
  const msg = data.toString().trim();
443
450
  if (msg && !msg.includes("Password:") && !msg.includes("password for")) {
444
- console.error(`[MITM Server Error] ${msg}`);
451
+ err(msg);
445
452
  startError = msg;
446
453
  }
447
454
  });
448
455
  serverProcess.on("exit", (code) => {
449
- console.log(`MITM server exited with code ${code}`);
456
+ log(`Server exited (code: ${code})`);
450
457
  serverProcess = null;
451
458
  serverPid = null;
452
459
  try { fs.unlinkSync(PID_FILE); } catch { /* ignore */ }
@@ -470,6 +477,14 @@ async function startServer(apiKey, sudoPassword) {
470
477
  fs.writeFileSync(PID_FILE, String(serverPid));
471
478
  }
472
479
 
480
+ log(`✅ Server healthy (PID: ${serverPid || health.pid})`);
481
+
482
+ // Log DNS status per tool
483
+ const dnsStatus = checkAllDNSStatus();
484
+ for (const [tool, active] of Object.entries(dnsStatus)) {
485
+ log(`🌐 DNS ${tool}: ${active ? "✅ active" : "❌ inactive"}`);
486
+ }
487
+
473
488
  await saveMitmSettings(true, sudoPassword);
474
489
  if (sudoPassword) setCachedPassword(sudoPassword);
475
490
 
@@ -483,7 +498,7 @@ async function stopServer(sudoPassword) {
483
498
  // Prevent auto-restart from triggering on intentional stop
484
499
  mitmIsRestarting = true;
485
500
  mitmRestartCount = 0;
486
- console.log("[MITM] Stopping server...");
501
+ log(" Stopping server...");
487
502
 
488
503
  // Kill server process
489
504
  const proc = serverProcess;
@@ -492,7 +507,7 @@ async function stopServer(sudoPassword) {
492
507
  : (() => { try { return parseInt(fs.readFileSync(PID_FILE, "utf-8").trim(), 10); } catch { return null; } })();
493
508
 
494
509
  if (pidToKill && isProcessAlive(pidToKill)) {
495
- console.log(`Killing MITM server (PID: ${pidToKill})...`);
510
+ log(`Killing server (PID: ${pidToKill})...`);
496
511
  killProcess(pidToKill, false, sudoPassword);
497
512
  await new Promise(r => setTimeout(r, 1000));
498
513
  if (isProcessAlive(pidToKill)) killProcess(pidToKill, true, sudoPassword);
@@ -562,6 +577,19 @@ async function disableToolDNS(tool, sudoPassword) {
562
577
  return { success: true };
563
578
  }
564
579
 
580
+ /**
581
+ * Install Root CA to system trust store (standalone, no server start)
582
+ */
583
+ async function trustCert(sudoPassword) {
584
+ const rootCACertPath = path.join(MITM_DIR, "rootCA.crt");
585
+ if (!fs.existsSync(rootCACertPath)) throw new Error("Root CA not found. Start server first to generate it.");
586
+ const { installCert } = require("./cert/install");
587
+ const password = sudoPassword || getCachedPassword() || await loadEncryptedPassword();
588
+ if (!password && !IS_WIN) throw new Error("Sudo password required to trust certificate");
589
+ await installCert(password, rootCACertPath);
590
+ if (password) setCachedPassword(password);
591
+ }
592
+
565
593
  // Legacy aliases for backward compatibility
566
594
  const startMitm = startServer;
567
595
  const stopMitm = stopServer;
@@ -572,6 +600,7 @@ module.exports = {
572
600
  stopServer,
573
601
  enableToolDNS,
574
602
  disableToolDNS,
603
+ trustCert,
575
604
  // Legacy
576
605
  startMitm,
577
606
  stopMitm,
@@ -3,6 +3,7 @@ const fs = require("fs");
3
3
  const path = require("path");
4
4
  const dns = require("dns");
5
5
  const { promisify } = require("util");
6
+ const { log, err } = require("./logger");
6
7
 
7
8
  // Allow self-signed certs from MITM root CA when fetching external hosts
8
9
 
@@ -25,7 +26,7 @@ const DB_FILE = path.join(DATA_DIR, "db.json");
25
26
  const ENABLE_FILE_LOG = false;
26
27
 
27
28
  if (!API_KEY) {
28
- console.error("ROUTER_API_KEY required");
29
+ err("ROUTER_API_KEY required");
29
30
  process.exit(1);
30
31
  }
31
32
 
@@ -57,11 +58,11 @@ function sniCallback(servername, cb) {
57
58
 
58
59
  // Cache it
59
60
  certCache.set(servername, ctx);
60
- console.log(`✅ Generated cert for: ${servername}`);
61
+ log(`🔐 Cert generated: ${servername}`);
61
62
 
62
63
  cb(null, ctx);
63
64
  } catch (error) {
64
- console.error(`❌ SNI error for ${servername}:`, error.message);
65
+ err(`SNI error for ${servername}: ${error.message}`);
65
66
  cb(error);
66
67
  }
67
68
  }
@@ -79,7 +80,7 @@ try {
79
80
  SNICallback: sniCallback
80
81
  };
81
82
  } catch (e) {
82
- console.error(`❌ Root CA not found in ${certDir}: ${e.message}`);
83
+ err(`Root CA not found in ${certDir}: ${e.message}`);
83
84
  process.exit(1);
84
85
  }
85
86
 
@@ -134,7 +135,13 @@ function getMappedModel(tool, model) {
134
135
  try {
135
136
  if (!fs.existsSync(DB_FILE)) return null;
136
137
  const db = JSON.parse(fs.readFileSync(DB_FILE, "utf-8"));
137
- return db.mitmAlias?.[tool]?.[model] || null;
138
+ const aliases = db.mitmAlias?.[tool];
139
+ if (!aliases) return null;
140
+ // Exact match first
141
+ if (aliases[model]) return aliases[model];
142
+ // Prefix match fallback: find alias key that starts with model or model starts with key
143
+ const prefixKey = Object.keys(aliases).find(k => k && aliases[k] && (model.startsWith(k) || k.startsWith(model)));
144
+ return prefixKey ? aliases[prefixKey] : null;
138
145
  } catch {
139
146
  return null;
140
147
  }
@@ -167,8 +174,8 @@ async function passthrough(req, res, bodyBuffer) {
167
174
  forwardRes.pipe(res);
168
175
  });
169
176
 
170
- forwardReq.on("error", (err) => {
171
- console.error(`❌ Passthrough error: ${err.message}`);
177
+ forwardReq.on("error", (e) => {
178
+ err(`Passthrough error: ${e.message}`);
172
179
  if (!res.headersSent) res.writeHead(502);
173
180
  res.end("Bad Gateway");
174
181
  });
@@ -216,7 +223,7 @@ async function intercept(req, res, bodyBuffer, mappedModel) {
216
223
  res.write(decoder.decode(value, { stream: true }));
217
224
  }
218
225
  } catch (error) {
219
- console.error(`❌ ${error.message}`);
226
+ err(`Intercept error: ${error.message}`);
220
227
  if (!res.headersSent) res.writeHead(500, { "Content-Type": "application/json" });
221
228
  res.end(JSON.stringify({ error: { message: error.message, type: "mitm_error" } }));
222
229
  }
@@ -250,30 +257,34 @@ const server = https.createServer(sslOptions, async (req, res) => {
250
257
  if (!isChat) return passthrough(req, res, bodyBuffer);
251
258
 
252
259
  const model = extractModel(req.url, bodyBuffer);
253
- console.log("Extracted model:", model);
260
+ log(`🔍 model="${model}" url=${req.url}`);
254
261
  const mappedModel = getMappedModel(tool, model);
255
262
 
256
- if (!mappedModel) return passthrough(req, res, bodyBuffer);
263
+ if (!mappedModel) {
264
+ log(`⏩ passthrough | no mapping | ${tool} | ${model || "unknown"}`);
265
+ return passthrough(req, res, bodyBuffer);
266
+ }
257
267
 
268
+ log(`⚡ intercept | ${tool} | ${model} → ${mappedModel}`);
258
269
  return intercept(req, res, bodyBuffer, mappedModel);
259
- } catch (err) {
260
- console.error(`❌ Unhandled request error: ${err.message}`);
270
+ } catch (e) {
271
+ err(`Unhandled request error: ${e.message}`);
261
272
  if (!res.headersSent) res.writeHead(500, { "Content-Type": "application/json" });
262
- res.end(JSON.stringify({ error: { message: err.message, type: "mitm_error" } }));
273
+ res.end(JSON.stringify({ error: { message: e.message, type: "mitm_error" } }));
263
274
  }
264
275
  });
265
276
 
266
277
  server.listen(LOCAL_PORT, () => {
267
- console.log(`🚀 MITM ready on :${LOCAL_PORT}`);
278
+ log(`🚀 Server ready on :${LOCAL_PORT}`);
268
279
  });
269
280
 
270
281
  server.on("error", (error) => {
271
282
  if (error.code === "EADDRINUSE") {
272
- console.error(`❌ Port ${LOCAL_PORT} already in use`);
283
+ err(`Port ${LOCAL_PORT} already in use`);
273
284
  } else if (error.code === "EACCES") {
274
- console.error(`❌ Permission denied for port ${LOCAL_PORT}`);
285
+ err(`Permission denied for port ${LOCAL_PORT}`);
275
286
  } else {
276
- console.error(`❌ ${error.message}`);
287
+ err(error.message);
277
288
  }
278
289
  process.exit(1);
279
290
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "9router",
3
- "version": "0.3.53",
3
+ "version": "0.3.54",
4
4
  "description": "9Router CLI - Start and manage 9Router server",
5
5
  "bin": {
6
6
  "9router": "./cli.js"