9router 0.3.6 → 0.3.8

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 (252) hide show
  1. package/app/.next/BUILD_ID +1 -1
  2. package/app/.next/app-path-routes-manifest.json +34 -34
  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 +34 -34
  237. package/app/.next/server/chunks/6186.js +9 -17
  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-341f5eb6223fedbb.js → 8729-106326b7d8698301.js} +1 -1
  244. package/app/package.json +1 -1
  245. package/app/src/mitm/manager.js +48 -61
  246. package/app/src/mitm/server.js +1 -1
  247. package/cli.js +4 -3
  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/app/.next/static/{0Lp-BbOX46czOm0uiIhuq → wIoZyweDWinxA_7Ga0XlS}/_buildManifest.js +0 -0
  252. /package/app/.next/static/{0Lp-BbOX46czOm0uiIhuq → wIoZyweDWinxA_7Ga0XlS}/_ssgManifest.js +0 -0
@@ -12,8 +12,6 @@ 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;
17
15
  const PID_FILE = path.join(os.homedir(), ".9router", "mitm", ".mitm.pid");
18
16
 
19
17
  // Resolve server.js path robustly:
@@ -278,12 +276,11 @@ async function killLeftoverMitm(sudoPassword) {
278
276
  * Returns { ok, pid } on success, null on timeout.
279
277
  */
280
278
  function pollMitmHealth(timeoutMs) {
281
- const healthPort = IS_WIN ? WIN_NODE_PORT : MITM_PORT;
282
279
  return new Promise((resolve) => {
283
280
  const deadline = Date.now() + timeoutMs;
284
281
  const check = () => {
285
282
  const req = https.request(
286
- { hostname: "127.0.0.1", port: healthPort, path: "/_mitm_health", method: "GET", rejectUnauthorized: false },
283
+ { hostname: "127.0.0.1", port: 443, path: "/_mitm_health", method: "GET", rejectUnauthorized: false },
287
284
  (res) => {
288
285
  let body = "";
289
286
  res.on("data", (d) => { body += d; });
@@ -416,52 +413,56 @@ async function startMitm(apiKey, sudoPassword) {
416
413
  const certPsPath = esc(certPath);
417
414
  const hostsPsPath = esc(hostsFile);
418
415
 
419
- const dnsAddLines = TARGET_HOSTS_WIN.map(h =>
420
- `if (-not (Select-String -Path '${hostsPsPath}' -Pattern '${h}' -Quiet)) { Add-Content -Path '${hostsPsPath}' -Value "127.0.0.1 ${h}" }`
421
- ).join("\n");
416
+ // Check if one-time setup is already done (urlacl granted + cert installed + DNS added)
417
+ const settings = _getSettings ? await _getSettings().catch(() => ({})) : {};
418
+ const setupDone = settings.mitmWinSetupDone && fs.existsSync(certPath) && checkDNSEntry();
419
+
420
+ if (!setupDone) {
421
+ // Phase 1: single UAC prompt — cert + DNS + netsh urlacl (one-time setup)
422
+ const dnsAddLines = TARGET_HOSTS_WIN.map(h =>
423
+ `if (-not (Select-String -Path '${hostsPsPath}' -Pattern '${h}' -Quiet)) { Add-Content -Path '${hostsPsPath}' -Value "127.0.0.1 ${h}" }`
424
+ ).join("\n");
422
425
 
423
- // Phase 1: single UAC — cert + DNS + netsh urlacl + netsh portproxy
424
- const setupScript = `
425
- # 1. Install cert if not already in Root store
426
+ const setupScript = `
427
+ # 1. Install cert to Root store
426
428
  $certCheck = & certutil -store Root 'daily-cloudcode-pa.googleapis.com' 2>&1
427
- if ($LASTEXITCODE -ne 0) {
428
- & certutil -addstore Root '${certPsPath}' | Out-Null
429
- }
429
+ if ($LASTEXITCODE -ne 0) { & certutil -addstore Root '${certPsPath}' | Out-Null }
430
430
 
431
431
  # 2. Add DNS entries
432
432
  ${dnsAddLines}
433
433
  & ipconfig /flushdns | Out-Null
434
434
 
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
435
+ # 3. Grant current user permission to bind port 443 (no more UAC needed after this)
436
+ $sid = [System.Security.Principal.WindowsIdentity]::GetCurrent().User.Value
437
+ & netsh http add urlacl url=https://+:443/ sddl="D:(A;;GX;;;$sid)" | Out-Null
441
438
  `.trim();
442
439
 
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
- });
440
+ const tmpSetup = path.join(os.tmpdir(), `mitm_setup_${Date.now()}.ps1`);
441
+ fs.writeFileSync(tmpSetup, setupScript, "utf8");
442
+
443
+ // Run elevated — this is the ONLY UAC prompt
444
+ await new Promise((resolve, reject) => {
445
+ const launcher = spawn("powershell", [
446
+ "-NoProfile", "-NonInteractive", "-WindowStyle", "Hidden",
447
+ "-Command",
448
+ `Start-Process powershell -ArgumentList '-NoProfile -NonInteractive -WindowStyle Hidden -ExecutionPolicy Bypass -File \\"${esc(tmpSetup)}\\"' -Verb RunAs -Wait; Remove-Item '${esc(tmpSetup)}' -ErrorAction SilentlyContinue`
449
+ ], { stdio: "ignore", windowsHide: true });
450
+ launcher.on("close", (code) => {
451
+ if (code === 0) resolve();
452
+ else reject(new Error(`Setup script failed with code ${code}`));
453
+ });
454
+ launcher.on("error", reject);
455
+ });
456
456
 
457
- if (_updateSettings) await _updateSettings({ mitmCertInstalled: true }).catch(() => { });
457
+ if (_updateSettings) await _updateSettings({ mitmWinSetupDone: true, mitmCertInstalled: true }).catch(() => { });
458
+ }
458
459
 
459
- // Phase 2: start node server on WIN_NODE_PORT — no admin needed
460
+ // Phase 2: spawn node directly — no UAC needed (urlacl already granted)
460
461
  serverProcess = spawn(process.execPath, [SERVER_PATH], {
461
- env: { ...process.env, ROUTER_API_KEY: apiKey, NODE_ENV: "production", MITM_PORT: String(WIN_NODE_PORT) },
462
+ detached: true,
462
463
  stdio: "ignore",
463
464
  windowsHide: true,
464
- detached: true,
465
+ env: { ...process.env, ROUTER_API_KEY: apiKey, NODE_ENV: "production" },
465
466
  });
466
467
  serverProcess.unref();
467
468
  } else {
@@ -511,7 +512,8 @@ ${dnsAddLines}
511
512
  }
512
513
 
513
514
  // Wait for server to be ready by polling health endpoint
514
- const health = await pollMitmHealth(IS_WIN ? 12000 : 8000);
515
+ // Windows: allow extra time for urlacl setup + node startup on first run
516
+ const health = await pollMitmHealth(IS_WIN ? 20000 : 8000);
515
517
 
516
518
  if (!health) {
517
519
  if (IS_WIN) serverProcess = null;
@@ -522,7 +524,10 @@ ${dnsAddLines}
522
524
  throw new Error(`MITM server failed to start. ${reason}`);
523
525
  }
524
526
 
525
- // On Windows, use real PID from health check (node detached, serverProcess.pid may differ)
527
+ // On Windows, mark cert as installed after successful start
528
+ if (IS_WIN && _updateSettings) await _updateSettings({ mitmCertInstalled: true }).catch(() => { });
529
+
530
+ // On Windows, use real PID from health check (launcher exits immediately after UAC)
526
531
  if (IS_WIN && health.pid) {
527
532
  serverPid = health.pid;
528
533
  fs.writeFileSync(PID_FILE, String(serverPid));
@@ -563,32 +568,14 @@ async function stopMitm(sudoPassword) {
563
568
  serverPid = null;
564
569
  }
565
570
 
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
- }
571
+ console.log("Removing DNS entry...");
572
+ await removeDNSEntry(sudoPassword);
589
573
 
590
574
  try { fs.unlinkSync(PID_FILE); } catch { /* ignore */ }
591
575
 
576
+ // Reset win setup flag so DNS gets re-added on next start
577
+ if (IS_WIN && _updateSettings) await _updateSettings({ mitmWinSetupDone: false }).catch(() => { });
578
+
592
579
  await saveMitmSettings(false, null);
593
580
 
594
581
  return { running: false, pid: null };
@@ -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 = parseInt(process.env.MITM_PORT || "443", 10);
14
+ const LOCAL_PORT = 443;
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,10 +360,11 @@ fi
360
360
  }
361
361
 
362
362
  const spawnOpts = platform === "win32"
363
- ? { stdio: "ignore", shell: true } // cmd /c start opens new window
364
- : { stdio: "inherit" }; // show progress in current terminal
363
+ ? { stdio: "ignore", windowsHide: true }
364
+ : { detached: true, stdio: "ignore" };
365
365
  const child = spawn(shellCmd[0], shellCmd[1], spawnOpts);
366
- child.on("close", () => process.exit(0));
366
+ child.unref();
367
+ process.exit(0);
367
368
  } catch (err) {
368
369
  console.error(`⚠️ Update failed: ${err.message}`);
369
370
  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.6",
3
+ "version": "0.3.8",
4
4
  "description": "9Router CLI - Start and manage 9Router server",
5
5
  "bin": {
6
6
  "9router": "./cli.js"
Binary file
Binary file