9router 0.3.5 → 0.3.6

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 (253) hide show
  1. package/app/.next/BUILD_ID +1 -1
  2. package/app/.next/app-path-routes-manifest.json +27 -27
  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/endpoint/page_client-reference-manifest.js +1 -1
  7. package/app/.next/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  8. package/app/.next/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  9. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  10. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  11. package/app/.next/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  12. package/app/.next/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  13. package/app/.next/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  14. package/app/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  15. package/app/.next/server/app/_global-error.html +2 -2
  16. package/app/.next/server/app/_global-error.rsc +1 -1
  17. package/app/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  18. package/app/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  19. package/app/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  20. package/app/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  21. package/app/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  22. package/app/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  23. package/app/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  24. package/app/.next/server/app/_not-found.html +1 -1
  25. package/app/.next/server/app/_not-found.rsc +2 -2
  26. package/app/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
  27. package/app/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  28. package/app/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
  29. package/app/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  30. package/app/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  31. package/app/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  32. package/app/.next/server/app/api/auth/login/route_client-reference-manifest.js +1 -1
  33. package/app/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
  34. package/app/.next/server/app/api/cli-tools/antigravity-mitm/alias/route_client-reference-manifest.js +1 -1
  35. package/app/.next/server/app/api/cli-tools/antigravity-mitm/route_client-reference-manifest.js +1 -1
  36. package/app/.next/server/app/api/cli-tools/claude-settings/route_client-reference-manifest.js +1 -1
  37. package/app/.next/server/app/api/cli-tools/codex-settings/route_client-reference-manifest.js +1 -1
  38. package/app/.next/server/app/api/cli-tools/droid-settings/route_client-reference-manifest.js +1 -1
  39. package/app/.next/server/app/api/cli-tools/openclaw-settings/route_client-reference-manifest.js +1 -1
  40. package/app/.next/server/app/api/cloud/auth/route_client-reference-manifest.js +1 -1
  41. package/app/.next/server/app/api/cloud/credentials/update/route_client-reference-manifest.js +1 -1
  42. package/app/.next/server/app/api/cloud/model/resolve/route_client-reference-manifest.js +1 -1
  43. package/app/.next/server/app/api/cloud/models/alias/route_client-reference-manifest.js +1 -1
  44. package/app/.next/server/app/api/combos/[id]/route_client-reference-manifest.js +1 -1
  45. package/app/.next/server/app/api/combos/route_client-reference-manifest.js +1 -1
  46. package/app/.next/server/app/api/init/route_client-reference-manifest.js +1 -1
  47. package/app/.next/server/app/api/keys/[id]/route_client-reference-manifest.js +1 -1
  48. package/app/.next/server/app/api/keys/route_client-reference-manifest.js +1 -1
  49. package/app/.next/server/app/api/models/alias/route_client-reference-manifest.js +1 -1
  50. package/app/.next/server/app/api/models/route_client-reference-manifest.js +1 -1
  51. package/app/.next/server/app/api/oauth/[provider]/[action]/route_client-reference-manifest.js +1 -1
  52. package/app/.next/server/app/api/oauth/cursor/auto-import/route_client-reference-manifest.js +1 -1
  53. package/app/.next/server/app/api/oauth/cursor/import/route_client-reference-manifest.js +1 -1
  54. package/app/.next/server/app/api/oauth/kiro/auto-import/route_client-reference-manifest.js +1 -1
  55. package/app/.next/server/app/api/oauth/kiro/import/route_client-reference-manifest.js +1 -1
  56. package/app/.next/server/app/api/oauth/kiro/social-authorize/route_client-reference-manifest.js +1 -1
  57. package/app/.next/server/app/api/oauth/kiro/social-exchange/route_client-reference-manifest.js +1 -1
  58. package/app/.next/server/app/api/pricing/route_client-reference-manifest.js +1 -1
  59. package/app/.next/server/app/api/provider-nodes/[id]/route_client-reference-manifest.js +1 -1
  60. package/app/.next/server/app/api/provider-nodes/route_client-reference-manifest.js +1 -1
  61. package/app/.next/server/app/api/provider-nodes/validate/route_client-reference-manifest.js +1 -1
  62. package/app/.next/server/app/api/providers/[id]/models/route_client-reference-manifest.js +1 -1
  63. package/app/.next/server/app/api/providers/[id]/route_client-reference-manifest.js +1 -1
  64. package/app/.next/server/app/api/providers/[id]/test/route_client-reference-manifest.js +1 -1
  65. package/app/.next/server/app/api/providers/[id]/test-models/route_client-reference-manifest.js +1 -1
  66. package/app/.next/server/app/api/providers/client/route_client-reference-manifest.js +1 -1
  67. package/app/.next/server/app/api/providers/route_client-reference-manifest.js +1 -1
  68. package/app/.next/server/app/api/providers/test-batch/route_client-reference-manifest.js +1 -1
  69. package/app/.next/server/app/api/providers/validate/route_client-reference-manifest.js +1 -1
  70. package/app/.next/server/app/api/settings/database/route_client-reference-manifest.js +1 -1
  71. package/app/.next/server/app/api/settings/require-login/route_client-reference-manifest.js +1 -1
  72. package/app/.next/server/app/api/settings/route_client-reference-manifest.js +1 -1
  73. package/app/.next/server/app/api/shutdown/route_client-reference-manifest.js +1 -1
  74. package/app/.next/server/app/api/tags/route_client-reference-manifest.js +1 -1
  75. package/app/.next/server/app/api/translator/load/route_client-reference-manifest.js +1 -1
  76. package/app/.next/server/app/api/translator/save/route_client-reference-manifest.js +1 -1
  77. package/app/.next/server/app/api/translator/send/route_client-reference-manifest.js +1 -1
  78. package/app/.next/server/app/api/translator/translate/route_client-reference-manifest.js +1 -1
  79. package/app/.next/server/app/api/tunnel/disable/route_client-reference-manifest.js +1 -1
  80. package/app/.next/server/app/api/tunnel/enable/route_client-reference-manifest.js +1 -1
  81. package/app/.next/server/app/api/tunnel/status/route_client-reference-manifest.js +1 -1
  82. package/app/.next/server/app/api/usage/[connectionId]/route_client-reference-manifest.js +1 -1
  83. package/app/.next/server/app/api/usage/chart/route_client-reference-manifest.js +1 -1
  84. package/app/.next/server/app/api/usage/history/route_client-reference-manifest.js +1 -1
  85. package/app/.next/server/app/api/usage/providers/route_client-reference-manifest.js +1 -1
  86. package/app/.next/server/app/api/usage/request-details/route_client-reference-manifest.js +1 -1
  87. package/app/.next/server/app/api/usage/request-logs/route_client-reference-manifest.js +1 -1
  88. package/app/.next/server/app/api/usage/stream/route_client-reference-manifest.js +1 -1
  89. package/app/.next/server/app/api/v1/api/chat/route_client-reference-manifest.js +1 -1
  90. package/app/.next/server/app/api/v1/chat/completions/route_client-reference-manifest.js +1 -1
  91. package/app/.next/server/app/api/v1/embeddings/route_client-reference-manifest.js +1 -1
  92. package/app/.next/server/app/api/v1/messages/count_tokens/route_client-reference-manifest.js +1 -1
  93. package/app/.next/server/app/api/v1/messages/route_client-reference-manifest.js +1 -1
  94. package/app/.next/server/app/api/v1/models/route_client-reference-manifest.js +1 -1
  95. package/app/.next/server/app/api/v1/responses/route_client-reference-manifest.js +1 -1
  96. package/app/.next/server/app/api/v1/route_client-reference-manifest.js +1 -1
  97. package/app/.next/server/app/api/v1beta/models/[...path]/route_client-reference-manifest.js +1 -1
  98. package/app/.next/server/app/api/v1beta/models/route_client-reference-manifest.js +1 -1
  99. package/app/.next/server/app/callback/page_client-reference-manifest.js +1 -1
  100. package/app/.next/server/app/callback.html +1 -1
  101. package/app/.next/server/app/callback.rsc +2 -2
  102. package/app/.next/server/app/callback.segments/_full.segment.rsc +2 -2
  103. package/app/.next/server/app/callback.segments/_head.segment.rsc +1 -1
  104. package/app/.next/server/app/callback.segments/_index.segment.rsc +2 -2
  105. package/app/.next/server/app/callback.segments/_tree.segment.rsc +1 -1
  106. package/app/.next/server/app/callback.segments/callback/__PAGE__.segment.rsc +1 -1
  107. package/app/.next/server/app/callback.segments/callback.segment.rsc +1 -1
  108. package/app/.next/server/app/dashboard/cli-tools.html +1 -1
  109. package/app/.next/server/app/dashboard/cli-tools.rsc +4 -4
  110. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +2 -2
  111. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools.segment.rsc +1 -1
  112. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  113. package/app/.next/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  114. package/app/.next/server/app/dashboard/cli-tools.segments/_full.segment.rsc +4 -4
  115. package/app/.next/server/app/dashboard/cli-tools.segments/_head.segment.rsc +1 -1
  116. package/app/.next/server/app/dashboard/cli-tools.segments/_index.segment.rsc +2 -2
  117. package/app/.next/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +1 -1
  118. package/app/.next/server/app/dashboard/combos.html +1 -1
  119. package/app/.next/server/app/dashboard/combos.rsc +4 -4
  120. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +2 -2
  121. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos.segment.rsc +1 -1
  122. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  123. package/app/.next/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  124. package/app/.next/server/app/dashboard/combos.segments/_full.segment.rsc +4 -4
  125. package/app/.next/server/app/dashboard/combos.segments/_head.segment.rsc +1 -1
  126. package/app/.next/server/app/dashboard/combos.segments/_index.segment.rsc +2 -2
  127. package/app/.next/server/app/dashboard/combos.segments/_tree.segment.rsc +1 -1
  128. package/app/.next/server/app/dashboard/endpoint.html +1 -1
  129. package/app/.next/server/app/dashboard/endpoint.rsc +4 -4
  130. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +2 -2
  131. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint.segment.rsc +1 -1
  132. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  133. package/app/.next/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  134. package/app/.next/server/app/dashboard/endpoint.segments/_full.segment.rsc +4 -4
  135. package/app/.next/server/app/dashboard/endpoint.segments/_head.segment.rsc +1 -1
  136. package/app/.next/server/app/dashboard/endpoint.segments/_index.segment.rsc +2 -2
  137. package/app/.next/server/app/dashboard/endpoint.segments/_tree.segment.rsc +1 -1
  138. package/app/.next/server/app/dashboard/profile.html +1 -1
  139. package/app/.next/server/app/dashboard/profile.rsc +4 -4
  140. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +2 -2
  141. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile.segment.rsc +1 -1
  142. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  143. package/app/.next/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  144. package/app/.next/server/app/dashboard/profile.segments/_full.segment.rsc +4 -4
  145. package/app/.next/server/app/dashboard/profile.segments/_head.segment.rsc +1 -1
  146. package/app/.next/server/app/dashboard/profile.segments/_index.segment.rsc +2 -2
  147. package/app/.next/server/app/dashboard/profile.segments/_tree.segment.rsc +1 -1
  148. package/app/.next/server/app/dashboard/providers/new.html +1 -1
  149. package/app/.next/server/app/dashboard/providers/new.rsc +4 -4
  150. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +2 -2
  151. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new.segment.rsc +1 -1
  152. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  153. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  154. package/app/.next/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  155. package/app/.next/server/app/dashboard/providers/new.segments/_full.segment.rsc +4 -4
  156. package/app/.next/server/app/dashboard/providers/new.segments/_head.segment.rsc +1 -1
  157. package/app/.next/server/app/dashboard/providers/new.segments/_index.segment.rsc +2 -2
  158. package/app/.next/server/app/dashboard/providers/new.segments/_tree.segment.rsc +1 -1
  159. package/app/.next/server/app/dashboard/providers.html +1 -1
  160. package/app/.next/server/app/dashboard/providers.rsc +4 -4
  161. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +2 -2
  162. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  163. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  164. package/app/.next/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  165. package/app/.next/server/app/dashboard/providers.segments/_full.segment.rsc +4 -4
  166. package/app/.next/server/app/dashboard/providers.segments/_head.segment.rsc +1 -1
  167. package/app/.next/server/app/dashboard/providers.segments/_index.segment.rsc +2 -2
  168. package/app/.next/server/app/dashboard/providers.segments/_tree.segment.rsc +1 -1
  169. package/app/.next/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  170. package/app/.next/server/app/dashboard/settings/pricing.html +1 -1
  171. package/app/.next/server/app/dashboard/settings/pricing.rsc +2 -2
  172. package/app/.next/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +2 -2
  173. package/app/.next/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +1 -1
  174. package/app/.next/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +2 -2
  175. package/app/.next/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +1 -1
  176. package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +1 -1
  177. package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing.segment.rsc +1 -1
  178. package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard/settings.segment.rsc +1 -1
  179. package/app/.next/server/app/dashboard/settings/pricing.segments/dashboard.segment.rsc +1 -1
  180. package/app/.next/server/app/dashboard/translator.html +1 -1
  181. package/app/.next/server/app/dashboard/translator.rsc +4 -4
  182. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +2 -2
  183. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator.segment.rsc +1 -1
  184. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  185. package/app/.next/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  186. package/app/.next/server/app/dashboard/translator.segments/_full.segment.rsc +4 -4
  187. package/app/.next/server/app/dashboard/translator.segments/_head.segment.rsc +1 -1
  188. package/app/.next/server/app/dashboard/translator.segments/_index.segment.rsc +2 -2
  189. package/app/.next/server/app/dashboard/translator.segments/_tree.segment.rsc +1 -1
  190. package/app/.next/server/app/dashboard/usage.html +1 -1
  191. package/app/.next/server/app/dashboard/usage.rsc +4 -4
  192. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +2 -2
  193. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage.segment.rsc +1 -1
  194. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  195. package/app/.next/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  196. package/app/.next/server/app/dashboard/usage.segments/_full.segment.rsc +4 -4
  197. package/app/.next/server/app/dashboard/usage.segments/_head.segment.rsc +1 -1
  198. package/app/.next/server/app/dashboard/usage.segments/_index.segment.rsc +2 -2
  199. package/app/.next/server/app/dashboard/usage.segments/_tree.segment.rsc +1 -1
  200. package/app/.next/server/app/dashboard.html +1 -1
  201. package/app/.next/server/app/dashboard.rsc +4 -4
  202. package/app/.next/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +2 -2
  203. package/app/.next/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  204. package/app/.next/server/app/dashboard.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  205. package/app/.next/server/app/dashboard.segments/_full.segment.rsc +4 -4
  206. package/app/.next/server/app/dashboard.segments/_head.segment.rsc +1 -1
  207. package/app/.next/server/app/dashboard.segments/_index.segment.rsc +2 -2
  208. package/app/.next/server/app/dashboard.segments/_tree.segment.rsc +1 -1
  209. package/app/.next/server/app/index.html +1 -1
  210. package/app/.next/server/app/index.rsc +2 -2
  211. package/app/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  212. package/app/.next/server/app/index.segments/_full.segment.rsc +2 -2
  213. package/app/.next/server/app/index.segments/_head.segment.rsc +1 -1
  214. package/app/.next/server/app/index.segments/_index.segment.rsc +2 -2
  215. package/app/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  216. package/app/.next/server/app/landing/page_client-reference-manifest.js +1 -1
  217. package/app/.next/server/app/landing.html +1 -1
  218. package/app/.next/server/app/landing.rsc +2 -2
  219. package/app/.next/server/app/landing.segments/_full.segment.rsc +2 -2
  220. package/app/.next/server/app/landing.segments/_head.segment.rsc +1 -1
  221. package/app/.next/server/app/landing.segments/_index.segment.rsc +2 -2
  222. package/app/.next/server/app/landing.segments/_tree.segment.rsc +1 -1
  223. package/app/.next/server/app/landing.segments/landing/__PAGE__.segment.rsc +1 -1
  224. package/app/.next/server/app/landing.segments/landing.segment.rsc +1 -1
  225. package/app/.next/server/app/login/page_client-reference-manifest.js +1 -1
  226. package/app/.next/server/app/login.html +1 -1
  227. package/app/.next/server/app/login.rsc +3 -3
  228. package/app/.next/server/app/login.segments/_full.segment.rsc +3 -3
  229. package/app/.next/server/app/login.segments/_head.segment.rsc +1 -1
  230. package/app/.next/server/app/login.segments/_index.segment.rsc +2 -2
  231. package/app/.next/server/app/login.segments/_tree.segment.rsc +1 -1
  232. package/app/.next/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
  233. package/app/.next/server/app/login.segments/login.segment.rsc +1 -1
  234. package/app/.next/server/app/manifest.webmanifest/route_client-reference-manifest.js +1 -1
  235. package/app/.next/server/app/page_client-reference-manifest.js +1 -1
  236. package/app/.next/server/app-paths-manifest.json +27 -27
  237. package/app/.next/server/chunks/6186.js +15 -10
  238. package/app/.next/server/chunks/8694.js +1 -1
  239. package/app/.next/server/pages/404.html +1 -1
  240. package/app/.next/server/pages/500.html +2 -2
  241. package/app/.next/server/server-reference-manifest.js +1 -1
  242. package/app/.next/server/server-reference-manifest.json +1 -1
  243. package/app/.next/static/chunks/{8729-951e89428876ccdd.js → 8729-341f5eb6223fedbb.js} +1 -1
  244. package/app/package.json +1 -1
  245. package/app/src/mitm/manager.js +60 -28
  246. package/app/src/mitm/server.js +1 -1
  247. package/cli.js +3 -4
  248. package/package.json +1 -1
  249. package/src/cli/tray/icon.ico +0 -0
  250. package/src/cli/tray/icon.png +0 -0
  251. package/src/cli/tray/tray.js +5 -3
  252. /package/app/.next/static/{hy44YEjBRcDsk_ehZG7mz → 0Lp-BbOX46czOm0uiIhuq}/_buildManifest.js +0 -0
  253. /package/app/.next/static/{hy44YEjBRcDsk_ehZG7mz → 0Lp-BbOX46czOm0uiIhuq}/_ssgManifest.js +0 -0
@@ -12,6 +12,8 @@ const { generateCert } = require("./cert/generate");
12
12
  const { installCert } = require("./cert/install");
13
13
 
14
14
  const MITM_PORT = 443;
15
+ // On Windows, node listens on HIGH_PORT and netsh portproxy forwards 443 → HIGH_PORT
16
+ const WIN_NODE_PORT = 8443;
15
17
  const PID_FILE = path.join(os.homedir(), ".9router", "mitm", ".mitm.pid");
16
18
 
17
19
  // Resolve server.js path robustly:
@@ -276,11 +278,12 @@ async function killLeftoverMitm(sudoPassword) {
276
278
  * Returns { ok, pid } on success, null on timeout.
277
279
  */
278
280
  function pollMitmHealth(timeoutMs) {
281
+ const healthPort = IS_WIN ? WIN_NODE_PORT : MITM_PORT;
279
282
  return new Promise((resolve) => {
280
283
  const deadline = Date.now() + timeoutMs;
281
284
  const check = () => {
282
285
  const req = https.request(
283
- { hostname: "127.0.0.1", port: 443, path: "/_mitm_health", method: "GET", rejectUnauthorized: false },
286
+ { hostname: "127.0.0.1", port: healthPort, path: "/_mitm_health", method: "GET", rejectUnauthorized: false },
284
287
  (res) => {
285
288
  let body = "";
286
289
  res.on("data", (d) => { body += d; });
@@ -407,49 +410,60 @@ async function startMitm(apiKey, sudoPassword) {
407
410
  console.log("Starting MITM server...");
408
411
 
409
412
  if (IS_WIN) {
410
- // Windows: single UAC prompt does cert install + DNS + server start all at once
411
413
  const hostsFile = path.join(process.env.SystemRoot || "C:\\Windows", "System32", "drivers", "etc", "hosts");
412
414
  const TARGET_HOSTS_WIN = ["daily-cloudcode-pa.googleapis.com", "cloudcode-pa.googleapis.com"];
413
-
414
- // Escape paths for PowerShell single-quoted strings
415
415
  const esc = (s) => s.replace(/'/g, "''");
416
- const nodePsPath = esc(process.execPath);
417
- const serverPsPath = esc(SERVER_PATH);
418
416
  const certPsPath = esc(certPath);
419
417
  const hostsPsPath = esc(hostsFile);
420
418
 
421
- // Build DNS add lines for each host
422
419
  const dnsAddLines = TARGET_HOSTS_WIN.map(h =>
423
420
  `if (-not (Select-String -Path '${hostsPsPath}' -Pattern '${h}' -Quiet)) { Add-Content -Path '${hostsPsPath}' -Value "127.0.0.1 ${h}" }`
424
421
  ).join("\n");
425
422
 
426
- const psScript = `
423
+ // Phase 1: single UAC — cert + DNS + netsh urlacl + netsh portproxy
424
+ const setupScript = `
427
425
  # 1. Install cert if not already in Root store
428
426
  $certCheck = & certutil -store Root 'daily-cloudcode-pa.googleapis.com' 2>&1
429
427
  if ($LASTEXITCODE -ne 0) {
430
428
  & certutil -addstore Root '${certPsPath}' | Out-Null
431
429
  }
432
430
 
433
- # 2. Add DNS entries to hosts file
431
+ # 2. Add DNS entries
434
432
  ${dnsAddLines}
435
433
  & ipconfig /flushdns | Out-Null
436
434
 
437
- # 3. Start node server hidden with env vars
438
- $env:ROUTER_API_KEY = '${esc(apiKey)}'
439
- $env:NODE_ENV = 'production'
440
- Start-Process -FilePath '${nodePsPath}' -ArgumentList '"${serverPsPath}"' -WindowStyle Hidden
435
+ # 3. Allow node to bind port ${WIN_NODE_PORT} without admin
436
+ & netsh http add urlacl url=https://+:${WIN_NODE_PORT}/ user=Everyone | Out-Null
437
+
438
+ # 4. Forward :443 → :${WIN_NODE_PORT} (portproxy)
439
+ & netsh interface portproxy delete v4tov4 listenport=${MITM_PORT} listenaddress=0.0.0.0 2>&1 | Out-Null
440
+ & netsh interface portproxy add v4tov4 listenport=${MITM_PORT} listenaddress=0.0.0.0 connectport=${WIN_NODE_PORT} connectaddress=127.0.0.1 | Out-Null
441
441
  `.trim();
442
442
 
443
- // Write script to temp file to avoid command-line quoting issues
444
- const tmpScript = path.join(os.tmpdir(), `mitm_start_${Date.now()}.ps1`);
445
- fs.writeFileSync(tmpScript, psScript, "utf8");
443
+ const tmpSetup = path.join(os.tmpdir(), `mitm_setup_${Date.now()}.ps1`);
444
+ fs.writeFileSync(tmpSetup, setupScript, "utf8");
445
+
446
+ // Run elevated setup — single UAC prompt, wait for completion
447
+ await new Promise((resolve, reject) => {
448
+ const setupProc = spawn("powershell", [
449
+ "-NoProfile", "-NonInteractive", "-WindowStyle", "Hidden",
450
+ "-Command",
451
+ `Start-Process powershell -ArgumentList '-NoProfile -NonInteractive -WindowStyle Hidden -ExecutionPolicy Bypass -File \\"${esc(tmpSetup)}\\"' -Verb RunAs -Wait; Remove-Item '${esc(tmpSetup)}' -ErrorAction SilentlyContinue`
452
+ ], { stdio: "ignore", windowsHide: true });
453
+ setupProc.on("close", () => resolve());
454
+ setupProc.on("error", reject);
455
+ });
456
+
457
+ if (_updateSettings) await _updateSettings({ mitmCertInstalled: true }).catch(() => { });
446
458
 
447
- // Single UAC promptruns entire setup elevated
448
- serverProcess = spawn("powershell", [
449
- "-NoProfile", "-NonInteractive", "-WindowStyle", "Hidden",
450
- "-Command",
451
- `Start-Process powershell -ArgumentList '-NoProfile -NonInteractive -WindowStyle Hidden -ExecutionPolicy Bypass -File \\"${tmpScript}\\"' -Verb RunAs -Wait; Remove-Item '${esc(tmpScript)}' -ErrorAction SilentlyContinue`
452
- ], { stdio: "ignore", windowsHide: true });
459
+ // Phase 2: start node server on WIN_NODE_PORT no admin needed
460
+ serverProcess = spawn(process.execPath, [SERVER_PATH], {
461
+ env: { ...process.env, ROUTER_API_KEY: apiKey, NODE_ENV: "production", MITM_PORT: String(WIN_NODE_PORT) },
462
+ stdio: "ignore",
463
+ windowsHide: true,
464
+ detached: true,
465
+ });
466
+ serverProcess.unref();
453
467
  } else {
454
468
  // macOS/Linux: install cert + add DNS (requires sudo), then spawn server
455
469
  const settings = _getSettings ? await _getSettings().catch(() => ({})) : {};
@@ -508,10 +522,7 @@ Start-Process -FilePath '${nodePsPath}' -ArgumentList '"${serverPsPath}"' -Windo
508
522
  throw new Error(`MITM server failed to start. ${reason}`);
509
523
  }
510
524
 
511
- // On Windows, mark cert as installed after successful start
512
- if (IS_WIN && _updateSettings) await _updateSettings({ mitmCertInstalled: true }).catch(() => { });
513
-
514
- // On Windows, use real PID from health check (launcher exits immediately after UAC)
525
+ // On Windows, use real PID from health check (node detached, serverProcess.pid may differ)
515
526
  if (IS_WIN && health.pid) {
516
527
  serverPid = health.pid;
517
528
  fs.writeFileSync(PID_FILE, String(serverPid));
@@ -552,8 +563,29 @@ async function stopMitm(sudoPassword) {
552
563
  serverPid = null;
553
564
  }
554
565
 
555
- console.log("Removing DNS entry...");
556
- await removeDNSEntry(sudoPassword);
566
+ if (IS_WIN) {
567
+ // Cleanup netsh portproxy + urlacl — single UAC prompt
568
+ const cleanupScript = `
569
+ & netsh interface portproxy delete v4tov4 listenport=${MITM_PORT} listenaddress=0.0.0.0 2>&1 | Out-Null
570
+ & netsh http delete urlacl url=https://+:${WIN_NODE_PORT}/ 2>&1 | Out-Null
571
+ `.trim();
572
+ const tmpCleanup = path.join(os.tmpdir(), `mitm_cleanup_${Date.now()}.ps1`);
573
+ fs.writeFileSync(tmpCleanup, cleanupScript, "utf8");
574
+ const esc = (s) => s.replace(/'/g, "''");
575
+ await new Promise((resolve) => {
576
+ const p = spawn("powershell", [
577
+ "-NoProfile", "-NonInteractive", "-WindowStyle", "Hidden",
578
+ "-Command",
579
+ `Start-Process powershell -ArgumentList '-NoProfile -NonInteractive -WindowStyle Hidden -ExecutionPolicy Bypass -File \\"${esc(tmpCleanup)}\\"' -Verb RunAs -Wait; Remove-Item '${esc(tmpCleanup)}' -ErrorAction SilentlyContinue`
580
+ ], { stdio: "ignore", windowsHide: true });
581
+ p.on("close", resolve);
582
+ p.on("error", resolve);
583
+ });
584
+ await removeDNSEntry(sudoPassword);
585
+ } else {
586
+ console.log("Removing DNS entry...");
587
+ await removeDNSEntry(sudoPassword);
588
+ }
557
589
 
558
590
  try { fs.unlinkSync(PID_FILE); } catch { /* ignore */ }
559
591
 
@@ -11,7 +11,7 @@ const TARGET_HOSTS = [
11
11
  "daily-cloudcode-pa.googleapis.com",
12
12
  "cloudcode-pa.googleapis.com"
13
13
  ];
14
- const LOCAL_PORT = 443;
14
+ const LOCAL_PORT = parseInt(process.env.MITM_PORT || "443", 10);
15
15
  const ROUTER_URL = "http://localhost:20128/v1/chat/completions";
16
16
  const API_KEY = process.env.ROUTER_API_KEY;
17
17
  const DB_FILE = path.join(os.homedir(), ".9router", "db.json");
package/cli.js CHANGED
@@ -360,11 +360,10 @@ fi
360
360
  }
361
361
 
362
362
  const spawnOpts = platform === "win32"
363
- ? { stdio: "ignore", windowsHide: true }
364
- : { detached: true, stdio: "ignore" };
363
+ ? { stdio: "ignore", shell: true } // cmd /c start opens new window
364
+ : { stdio: "inherit" }; // show progress in current terminal
365
365
  const child = spawn(shellCmd[0], shellCmd[1], spawnOpts);
366
- child.unref();
367
- process.exit(0);
366
+ child.on("close", () => process.exit(0));
368
367
  } catch (err) {
369
368
  console.error(`⚠️ Update failed: ${err.message}`);
370
369
  console.log(` Run manually: npm install -g ${pkg.name}@latest\n`);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "9router",
3
- "version": "0.3.5",
3
+ "version": "0.3.6",
4
4
  "description": "9Router CLI - Start and manage 9Router server",
5
5
  "bin": {
6
6
  "9router": "./cli.js"
Binary file
Binary file
@@ -5,16 +5,18 @@ const path = require("path");
5
5
  let trayInstance = null;
6
6
 
7
7
  /**
8
- * Get icon base64 from file or use embedded fallback
8
+ * Get icon base64 from file use .ico on Windows, .png on macOS/Linux
9
9
  */
10
10
  function getIconBase64() {
11
+ const isWin = process.platform === "win32";
12
+ const iconFile = isWin ? "icon.ico" : "icon.png";
11
13
  try {
12
- const iconPath = path.join(__dirname, "icon.png");
14
+ const iconPath = path.join(__dirname, iconFile);
13
15
  if (fs.existsSync(iconPath)) {
14
16
  return fs.readFileSync(iconPath).toString("base64");
15
17
  }
16
18
  } catch (e) {}
17
- // Fallback: minimal green dot icon
19
+ // Fallback: minimal green dot icon (PNG)
18
20
  return "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAALEwAACxMBAJqcGAAAAHpJREFUOE9jYBgFgwEwMjIy/Gdg+P8fyP4PxP8ZGBgEcBnGyMjIsICBgSEAhyH/gfgBUNN8XJoZsdkCVL8Ah+b/QPwbqvkBMvk/AwMDAzYX/GdgYAhAN+A/SICRWAMYGfFEJSMjzriEiwDR/xmIa2RkZCSqnZERb3QCAAo3KxzxbKe1AAAAAElFTkSuQmCC";
19
21
  }
20
22