9remote 3.0.43 → 3.0.47

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 (280) hide show
  1. package/dist/cli.cjs +3 -3
  2. package/dist/server.cjs +254 -255
  3. package/dist/ui/assets/index-BNIwtLEB.js +8 -0
  4. package/dist/ui/assets/index-DvsANh5-.css +1 -0
  5. package/dist/ui/index.html +2 -2
  6. package/dist/web/404.html +1 -1
  7. package/dist/web/__next.__PAGE__.txt +2 -2
  8. package/dist/web/__next._full.txt +9 -9
  9. package/dist/web/__next._head.txt +1 -1
  10. package/dist/web/__next._index.txt +12 -10
  11. package/dist/web/__next._tree.txt +2 -2
  12. package/dist/web/_next/static/JqEpEzbDmfkGn0nekxxy5/_buildManifest.js +1 -0
  13. package/dist/web/_next/static/chunks/1772-46c2fa68cf486d14.js +1 -0
  14. package/dist/web/_next/static/chunks/1920-64e4610715fd991d.js +1 -0
  15. package/dist/web/_next/static/chunks/1968-90d80a8543ed4f21.js +32 -0
  16. package/dist/web/_next/static/chunks/556-1dec70a3f28ddbe8.js +1 -0
  17. package/dist/web/_next/static/chunks/5587-b8f18d331fdde617.js +1 -0
  18. package/dist/web/_next/static/chunks/6153.189180c190f90b2f.js +1 -0
  19. package/dist/web/_next/static/chunks/6221-2be9b41ee97fc1e6.js +11 -0
  20. package/dist/web/_next/static/chunks/7489.c1e8656da3738df7.js +1 -0
  21. package/dist/web/_next/static/chunks/8126-5be4c3eccbdb4c66.js +1 -0
  22. package/dist/web/_next/static/chunks/820-c1bd7547f2433453.js +1 -0
  23. package/dist/web/_next/static/chunks/8534.189180c190f90b2f.js +1 -0
  24. package/dist/web/_next/static/chunks/9121-cf1e65bb26b0908b.js +1 -0
  25. package/dist/web/_next/static/chunks/{9491-6dc334192080d071.js → 9491-970597f510e71615.js} +1 -1
  26. package/dist/web/_next/static/chunks/app/_global-error/page-e60883b219ccba1a.js +1 -0
  27. package/dist/web/_next/static/chunks/app/_not-found/page-bfa58c699e86fa7c.js +1 -0
  28. package/dist/web/_next/static/chunks/app/admin/access/page-79e70c584b6e2150.js +5 -0
  29. package/dist/web/_next/static/chunks/app/admin/login/page-4a768b6df8ed5259.js +1 -0
  30. package/dist/web/_next/static/chunks/app/admin/ota/page-e4d26a8db9968a98.js +5 -0
  31. package/dist/web/_next/static/chunks/app/admin/page-1c13a4c1567ed18e.js +5 -0
  32. package/dist/web/_next/static/chunks/app/admin/turn/page-dbd8be78d0941005.js +5 -0
  33. package/dist/web/_next/static/chunks/app/download/page-e27de0a4170f4b73.js +1 -0
  34. package/dist/web/_next/static/chunks/app/layout-a65a70a4500177c7.js +1 -0
  35. package/dist/web/_next/static/chunks/app/login/page-8216ac4904ee3551.js +1 -0
  36. package/dist/web/_next/static/chunks/app/{page-1e67d8a5f3775276.js → page-fde2c88f21078fca.js} +2 -2
  37. package/dist/web/_next/static/chunks/app/workspace/browse/page-e60883b219ccba1a.js +1 -0
  38. package/dist/web/_next/static/chunks/app/workspace/editor/page-e60883b219ccba1a.js +1 -0
  39. package/dist/web/_next/static/chunks/app/workspace/files/page-e60883b219ccba1a.js +1 -0
  40. package/dist/web/_next/static/chunks/app/workspace/git/page-e60883b219ccba1a.js +1 -0
  41. package/dist/web/_next/static/chunks/app/workspace/layout-75bbd11623918276.js +23 -0
  42. package/dist/web/_next/static/chunks/app/workspace/mobile/page-e60883b219ccba1a.js +1 -0
  43. package/dist/web/_next/static/chunks/app/workspace/page-e60883b219ccba1a.js +1 -0
  44. package/dist/web/_next/static/chunks/app/workspace/pair/page-e60883b219ccba1a.js +1 -0
  45. package/dist/web/_next/static/chunks/app/workspace/remote/page-e60883b219ccba1a.js +1 -0
  46. package/dist/web/_next/static/chunks/app/workspace/settings/page-e60883b219ccba1a.js +1 -0
  47. package/dist/web/_next/static/chunks/app/workspace/terminal/[sessionId]/page-e60883b219ccba1a.js +1 -0
  48. package/dist/web/_next/static/chunks/app/workspace/welcome/page-e60883b219ccba1a.js +1 -0
  49. package/dist/web/_next/static/chunks/app/workspace/workspaces/page-e60883b219ccba1a.js +1 -0
  50. package/dist/web/_next/static/chunks/main-72206f0a3cb91ecb.js +5 -0
  51. package/dist/web/_next/static/chunks/next/dist/client/components/builtin/app-error-e60883b219ccba1a.js +1 -0
  52. package/dist/web/_next/static/chunks/next/dist/client/components/builtin/forbidden-e60883b219ccba1a.js +1 -0
  53. package/dist/web/_next/static/chunks/next/dist/client/components/builtin/not-found-e60883b219ccba1a.js +1 -0
  54. package/dist/web/_next/static/chunks/next/dist/client/components/builtin/unauthorized-e60883b219ccba1a.js +1 -0
  55. package/dist/web/_next/static/chunks/{webpack-dd1f7a5ae02e5d84.js → webpack-31691f9bc04b8076.js} +1 -1
  56. package/dist/web/_next/static/css/10234b0587e8a07a.css +1 -0
  57. package/dist/web/_next/static/css/{adc0ee53b89bee3c.css → 2072cba9849e7093.css} +1 -1
  58. package/dist/web/_not-found/__next._full.txt +20 -22
  59. package/dist/web/_not-found/__next._head.txt +1 -1
  60. package/dist/web/_not-found/__next._index.txt +7 -7
  61. package/dist/web/_not-found/__next._not-found.__PAGE__.txt +1 -1
  62. package/dist/web/_not-found/__next._not-found.txt +1 -1
  63. package/dist/web/_not-found/__next._tree.txt +2 -2
  64. package/dist/web/_not-found.html +1 -1
  65. package/dist/web/_not-found.txt +20 -22
  66. package/dist/web/admin/__next._full.txt +9 -9
  67. package/dist/web/admin/__next._head.txt +1 -1
  68. package/dist/web/admin/__next._index.txt +12 -10
  69. package/dist/web/admin/__next._tree.txt +2 -2
  70. package/dist/web/admin/__next.admin.__PAGE__.txt +2 -2
  71. package/dist/web/admin/__next.admin.txt +1 -1
  72. package/dist/web/admin/access/__next._full.txt +9 -9
  73. package/dist/web/admin/access/__next._head.txt +1 -1
  74. package/dist/web/admin/access/__next._index.txt +12 -10
  75. package/dist/web/admin/access/__next._tree.txt +2 -2
  76. package/dist/web/admin/access/__next.admin.access.__PAGE__.txt +2 -2
  77. package/dist/web/admin/access/__next.admin.access.txt +1 -1
  78. package/dist/web/admin/access/__next.admin.txt +1 -1
  79. package/dist/web/admin/access.html +1 -1
  80. package/dist/web/admin/access.txt +9 -9
  81. package/dist/web/admin/login/__next._full.txt +9 -9
  82. package/dist/web/admin/login/__next._head.txt +1 -1
  83. package/dist/web/admin/login/__next._index.txt +12 -10
  84. package/dist/web/admin/login/__next._tree.txt +2 -2
  85. package/dist/web/admin/login/__next.admin.login.__PAGE__.txt +2 -2
  86. package/dist/web/admin/login/__next.admin.login.txt +1 -1
  87. package/dist/web/admin/login/__next.admin.txt +1 -1
  88. package/dist/web/admin/login.html +1 -1
  89. package/dist/web/admin/login.txt +9 -9
  90. package/dist/web/admin/ota/__next._full.txt +9 -9
  91. package/dist/web/admin/ota/__next._head.txt +1 -1
  92. package/dist/web/admin/ota/__next._index.txt +12 -10
  93. package/dist/web/admin/ota/__next._tree.txt +2 -2
  94. package/dist/web/admin/ota/__next.admin.ota.__PAGE__.txt +2 -2
  95. package/dist/web/admin/ota/__next.admin.ota.txt +1 -1
  96. package/dist/web/admin/ota/__next.admin.txt +1 -1
  97. package/dist/web/admin/ota.html +1 -1
  98. package/dist/web/admin/ota.txt +9 -9
  99. package/dist/web/admin/turn/__next._full.txt +9 -9
  100. package/dist/web/admin/turn/__next._head.txt +1 -1
  101. package/dist/web/admin/turn/__next._index.txt +12 -10
  102. package/dist/web/admin/turn/__next._tree.txt +2 -2
  103. package/dist/web/admin/turn/__next.admin.turn.__PAGE__.txt +2 -2
  104. package/dist/web/admin/turn/__next.admin.turn.txt +1 -1
  105. package/dist/web/admin/turn/__next.admin.txt +1 -1
  106. package/dist/web/admin/turn.html +1 -1
  107. package/dist/web/admin/turn.txt +9 -9
  108. package/dist/web/admin.html +1 -1
  109. package/dist/web/admin.txt +9 -9
  110. package/dist/web/download/__next._full.txt +9 -9
  111. package/dist/web/download/__next._head.txt +1 -1
  112. package/dist/web/download/__next._index.txt +12 -10
  113. package/dist/web/download/__next._tree.txt +2 -2
  114. package/dist/web/download/__next.download.__PAGE__.txt +2 -2
  115. package/dist/web/download/__next.download.txt +1 -1
  116. package/dist/web/download.html +1 -1
  117. package/dist/web/download.txt +9 -9
  118. package/dist/web/index.html +1 -1
  119. package/dist/web/index.txt +9 -9
  120. package/dist/web/login/__next._full.txt +9 -9
  121. package/dist/web/login/__next._head.txt +1 -1
  122. package/dist/web/login/__next._index.txt +12 -10
  123. package/dist/web/login/__next._tree.txt +2 -2
  124. package/dist/web/login/__next.login.__PAGE__.txt +2 -2
  125. package/dist/web/login/__next.login.txt +1 -1
  126. package/dist/web/login.html +1 -1
  127. package/dist/web/login.txt +9 -9
  128. package/dist/web/workspace/__next._full.txt +11 -11
  129. package/dist/web/workspace/__next._head.txt +1 -1
  130. package/dist/web/workspace/__next._index.txt +12 -10
  131. package/dist/web/workspace/__next._tree.txt +3 -3
  132. package/dist/web/workspace/__next.workspace.__PAGE__.txt +1 -1
  133. package/dist/web/workspace/__next.workspace.txt +3 -3
  134. package/dist/web/workspace/browse/__next._full.txt +11 -11
  135. package/dist/web/workspace/browse/__next._head.txt +1 -1
  136. package/dist/web/workspace/browse/__next._index.txt +12 -10
  137. package/dist/web/workspace/browse/__next._tree.txt +3 -3
  138. package/dist/web/workspace/browse/__next.workspace.browse.__PAGE__.txt +1 -1
  139. package/dist/web/workspace/browse/__next.workspace.browse.txt +1 -1
  140. package/dist/web/workspace/browse/__next.workspace.txt +3 -3
  141. package/dist/web/workspace/browse.html +1 -1
  142. package/dist/web/workspace/browse.txt +11 -11
  143. package/dist/web/workspace/editor/__next._full.txt +11 -11
  144. package/dist/web/workspace/editor/__next._head.txt +1 -1
  145. package/dist/web/workspace/editor/__next._index.txt +12 -10
  146. package/dist/web/workspace/editor/__next._tree.txt +3 -3
  147. package/dist/web/workspace/editor/__next.workspace.editor.__PAGE__.txt +1 -1
  148. package/dist/web/workspace/editor/__next.workspace.editor.txt +1 -1
  149. package/dist/web/workspace/editor/__next.workspace.txt +3 -3
  150. package/dist/web/workspace/editor.html +1 -1
  151. package/dist/web/workspace/editor.txt +11 -11
  152. package/dist/web/workspace/files/__next._full.txt +11 -11
  153. package/dist/web/workspace/files/__next._head.txt +1 -1
  154. package/dist/web/workspace/files/__next._index.txt +12 -10
  155. package/dist/web/workspace/files/__next._tree.txt +3 -3
  156. package/dist/web/workspace/files/__next.workspace.files.__PAGE__.txt +1 -1
  157. package/dist/web/workspace/files/__next.workspace.files.txt +1 -1
  158. package/dist/web/workspace/files/__next.workspace.txt +3 -3
  159. package/dist/web/workspace/files.html +1 -1
  160. package/dist/web/workspace/files.txt +11 -11
  161. package/dist/web/workspace/git/__next._full.txt +11 -11
  162. package/dist/web/workspace/git/__next._head.txt +1 -1
  163. package/dist/web/workspace/git/__next._index.txt +12 -10
  164. package/dist/web/workspace/git/__next._tree.txt +3 -3
  165. package/dist/web/workspace/git/__next.workspace.git.__PAGE__.txt +1 -1
  166. package/dist/web/workspace/git/__next.workspace.git.txt +1 -1
  167. package/dist/web/workspace/git/__next.workspace.txt +3 -3
  168. package/dist/web/workspace/git.html +1 -1
  169. package/dist/web/workspace/git.txt +11 -11
  170. package/dist/web/workspace/mobile/__next._full.txt +11 -11
  171. package/dist/web/workspace/mobile/__next._head.txt +1 -1
  172. package/dist/web/workspace/mobile/__next._index.txt +12 -10
  173. package/dist/web/workspace/mobile/__next._tree.txt +3 -3
  174. package/dist/web/workspace/mobile/__next.workspace.mobile.__PAGE__.txt +1 -1
  175. package/dist/web/workspace/mobile/__next.workspace.mobile.txt +1 -1
  176. package/dist/web/workspace/mobile/__next.workspace.txt +3 -3
  177. package/dist/web/workspace/mobile.html +1 -1
  178. package/dist/web/workspace/mobile.txt +11 -11
  179. package/dist/web/workspace/pair/__next._full.txt +11 -11
  180. package/dist/web/workspace/pair/__next._head.txt +1 -1
  181. package/dist/web/workspace/pair/__next._index.txt +12 -10
  182. package/dist/web/workspace/pair/__next._tree.txt +3 -3
  183. package/dist/web/workspace/pair/__next.workspace.pair.__PAGE__.txt +1 -1
  184. package/dist/web/workspace/pair/__next.workspace.pair.txt +1 -1
  185. package/dist/web/workspace/pair/__next.workspace.txt +3 -3
  186. package/dist/web/workspace/pair.html +1 -1
  187. package/dist/web/workspace/pair.txt +11 -11
  188. package/dist/web/workspace/remote/__next._full.txt +11 -11
  189. package/dist/web/workspace/remote/__next._head.txt +1 -1
  190. package/dist/web/workspace/remote/__next._index.txt +12 -10
  191. package/dist/web/workspace/remote/__next._tree.txt +3 -3
  192. package/dist/web/workspace/remote/__next.workspace.remote.__PAGE__.txt +1 -1
  193. package/dist/web/workspace/remote/__next.workspace.remote.txt +1 -1
  194. package/dist/web/workspace/remote/__next.workspace.txt +3 -3
  195. package/dist/web/workspace/remote.html +1 -1
  196. package/dist/web/workspace/remote.txt +11 -11
  197. package/dist/web/workspace/settings/__next._full.txt +37 -0
  198. package/dist/web/workspace/settings/__next._head.txt +6 -0
  199. package/dist/web/workspace/settings/__next._index.txt +17 -0
  200. package/dist/web/workspace/settings/__next._tree.txt +7 -0
  201. package/dist/web/workspace/settings/__next.workspace.settings.__PAGE__.txt +5 -0
  202. package/dist/web/workspace/settings/__next.workspace.settings.txt +5 -0
  203. package/dist/web/workspace/settings/__next.workspace.txt +8 -0
  204. package/dist/web/workspace/settings.html +1 -0
  205. package/dist/web/workspace/settings.txt +37 -0
  206. package/dist/web/workspace/terminal/default/__next._full.txt +11 -11
  207. package/dist/web/workspace/terminal/default/__next._head.txt +1 -1
  208. package/dist/web/workspace/terminal/default/__next._index.txt +12 -10
  209. package/dist/web/workspace/terminal/default/__next._tree.txt +3 -3
  210. package/dist/web/workspace/terminal/default/__next.workspace.terminal.$d$sessionId.__PAGE__.txt +1 -1
  211. package/dist/web/workspace/terminal/default/__next.workspace.terminal.$d$sessionId.txt +1 -1
  212. package/dist/web/workspace/terminal/default/__next.workspace.terminal.txt +1 -1
  213. package/dist/web/workspace/terminal/default/__next.workspace.txt +3 -3
  214. package/dist/web/workspace/terminal/default.html +1 -1
  215. package/dist/web/workspace/terminal/default.txt +11 -11
  216. package/dist/web/workspace/welcome/__next._full.txt +11 -11
  217. package/dist/web/workspace/welcome/__next._head.txt +1 -1
  218. package/dist/web/workspace/welcome/__next._index.txt +12 -10
  219. package/dist/web/workspace/welcome/__next._tree.txt +3 -3
  220. package/dist/web/workspace/welcome/__next.workspace.txt +3 -3
  221. package/dist/web/workspace/welcome/__next.workspace.welcome.__PAGE__.txt +1 -1
  222. package/dist/web/workspace/welcome/__next.workspace.welcome.txt +1 -1
  223. package/dist/web/workspace/welcome.html +1 -1
  224. package/dist/web/workspace/welcome.txt +11 -11
  225. package/dist/web/workspace/workspaces/__next._full.txt +11 -11
  226. package/dist/web/workspace/workspaces/__next._head.txt +1 -1
  227. package/dist/web/workspace/workspaces/__next._index.txt +12 -10
  228. package/dist/web/workspace/workspaces/__next._tree.txt +3 -3
  229. package/dist/web/workspace/workspaces/__next.workspace.txt +3 -3
  230. package/dist/web/workspace/workspaces/__next.workspace.workspaces.__PAGE__.txt +1 -1
  231. package/dist/web/workspace/workspaces/__next.workspace.workspaces.txt +1 -1
  232. package/dist/web/workspace/workspaces.html +1 -1
  233. package/dist/web/workspace/workspaces.txt +11 -11
  234. package/dist/web/workspace.html +1 -1
  235. package/dist/web/workspace.txt +11 -11
  236. package/package.json +1 -1
  237. package/dist/ui/assets/index-DQvkcQ8W.js +0 -8
  238. package/dist/ui/assets/index-SHlsPzjb.css +0 -1
  239. package/dist/web/_next/static/AhLhl9t958vI0woNHnp3P/_buildManifest.js +0 -1
  240. package/dist/web/_next/static/chunks/1772-ef73c166e83f5eff.js +0 -1
  241. package/dist/web/_next/static/chunks/1920-5ead25286846df83.js +0 -1
  242. package/dist/web/_next/static/chunks/1968-4d2969f0b7112e0b.js +0 -32
  243. package/dist/web/_next/static/chunks/556-a8f04c41c5663ee8.js +0 -1
  244. package/dist/web/_next/static/chunks/5587-fc5af8c76df14222.js +0 -1
  245. package/dist/web/_next/static/chunks/6153.8c6b8930e22ceea0.js +0 -1
  246. package/dist/web/_next/static/chunks/6221-cf883148bf8a4c1e.js +0 -11
  247. package/dist/web/_next/static/chunks/7489.24938d89538cd03e.js +0 -1
  248. package/dist/web/_next/static/chunks/8126-8e53bfff5a06af4e.js +0 -1
  249. package/dist/web/_next/static/chunks/820-99036fb63c5462c8.js +0 -1
  250. package/dist/web/_next/static/chunks/8534.8c6b8930e22ceea0.js +0 -1
  251. package/dist/web/_next/static/chunks/9121-897f98b646fc2ac0.js +0 -1
  252. package/dist/web/_next/static/chunks/app/_global-error/page-2ece09c883187d82.js +0 -1
  253. package/dist/web/_next/static/chunks/app/_not-found/page-9f829d2c4beb1840.js +0 -1
  254. package/dist/web/_next/static/chunks/app/admin/access/page-45f45ad529e5b691.js +0 -5
  255. package/dist/web/_next/static/chunks/app/admin/login/page-382072b5b43d3c29.js +0 -1
  256. package/dist/web/_next/static/chunks/app/admin/ota/page-293c0743bd60f454.js +0 -5
  257. package/dist/web/_next/static/chunks/app/admin/page-fc676dae451dd646.js +0 -5
  258. package/dist/web/_next/static/chunks/app/admin/turn/page-2ab33033fc7f0919.js +0 -5
  259. package/dist/web/_next/static/chunks/app/download/page-a65d1c7fcf6397af.js +0 -1
  260. package/dist/web/_next/static/chunks/app/layout-f1429d22e935695f.js +0 -1
  261. package/dist/web/_next/static/chunks/app/login/page-a5dd37d1cbbb394e.js +0 -1
  262. package/dist/web/_next/static/chunks/app/workspace/browse/page-2ece09c883187d82.js +0 -1
  263. package/dist/web/_next/static/chunks/app/workspace/editor/page-2ece09c883187d82.js +0 -1
  264. package/dist/web/_next/static/chunks/app/workspace/files/page-2ece09c883187d82.js +0 -1
  265. package/dist/web/_next/static/chunks/app/workspace/git/page-2ece09c883187d82.js +0 -1
  266. package/dist/web/_next/static/chunks/app/workspace/layout-336820247249f65c.js +0 -20
  267. package/dist/web/_next/static/chunks/app/workspace/mobile/page-2ece09c883187d82.js +0 -1
  268. package/dist/web/_next/static/chunks/app/workspace/page-2ece09c883187d82.js +0 -1
  269. package/dist/web/_next/static/chunks/app/workspace/pair/page-2ece09c883187d82.js +0 -1
  270. package/dist/web/_next/static/chunks/app/workspace/remote/page-2ece09c883187d82.js +0 -1
  271. package/dist/web/_next/static/chunks/app/workspace/terminal/[sessionId]/page-2ece09c883187d82.js +0 -1
  272. package/dist/web/_next/static/chunks/app/workspace/welcome/page-2ece09c883187d82.js +0 -1
  273. package/dist/web/_next/static/chunks/app/workspace/workspaces/page-2ece09c883187d82.js +0 -1
  274. package/dist/web/_next/static/chunks/main-e10b0dbebb4de0a8.js +0 -5
  275. package/dist/web/_next/static/chunks/next/dist/client/components/builtin/app-error-2ece09c883187d82.js +0 -1
  276. package/dist/web/_next/static/chunks/next/dist/client/components/builtin/forbidden-2ece09c883187d82.js +0 -1
  277. package/dist/web/_next/static/chunks/next/dist/client/components/builtin/not-found-2ece09c883187d82.js +0 -1
  278. package/dist/web/_next/static/chunks/next/dist/client/components/builtin/unauthorized-2ece09c883187d82.js +0 -1
  279. package/dist/web/_next/static/css/7b03063e80720027.css +0 -1
  280. /package/dist/web/_next/static/{AhLhl9t958vI0woNHnp3P → JqEpEzbDmfkGn0nekxxy5}/_ssgManifest.js +0 -0
package/dist/cli.cjs CHANGED
@@ -41,7 +41,7 @@ ${s}
41
41
  `:`
42
42
  `)+r,t=o+1,o=e.indexOf(`
43
43
  `,t)}while(o!==-1);return i+=e.slice(t),i}var{stdout:ms,stderr:hs}=fs,vo=Symbol("GENERATOR"),an=Symbol("STYLER"),qn=Symbol("IS_EMPTY"),gs=["ansi","ansi","ansi256","ansi16m"],cn=Object.create(null),sl=(e,n={})=>{if(n.level&&!(Number.isInteger(n.level)&&n.level>=0&&n.level<=3))throw new Error("The `level` option should be an integer from 0 to 3");let r=ms?ms.level:0;e.level=n.level===void 0?r:n.level};var al=e=>{let n=(...r)=>r.join(" ");return sl(n,e),Object.setPrototypeOf(n,Xn.prototype),n};function Xn(e){return al(e)}Object.setPrototypeOf(Xn.prototype,Function.prototype);for(let[e,n]of Object.entries(Pe))cn[e]={get(){let r=Ir(this,Eo(n.open,n.close,this[an]),this[qn]);return Object.defineProperty(this,e,{value:r}),r}};cn.visible={get(){let e=Ir(this,this[an],!0);return Object.defineProperty(this,"visible",{value:e}),e}};var bo=(e,n,r,...o)=>e==="rgb"?n==="ansi16m"?Pe[r].ansi16m(...o):n==="ansi256"?Pe[r].ansi256(Pe.rgbToAnsi256(...o)):Pe[r].ansi(Pe.rgbToAnsi(...o)):e==="hex"?bo("rgb",n,r,...Pe.hexToRgb(...o)):Pe[r][e](...o),cl=["rgb","hex","ansi256"];for(let e of cl){cn[e]={get(){let{level:r}=this;return function(...o){let t=Eo(bo(e,gs[r],"color",...o),Pe.color.close,this[an]);return Ir(this,t,this[qn])}}};let n="bg"+e[0].toUpperCase()+e.slice(1);cn[n]={get(){let{level:r}=this;return function(...o){let t=Eo(bo(e,gs[r],"bgColor",...o),Pe.bgColor.close,this[an]);return Ir(this,t,this[qn])}}}}var ll=Object.defineProperties(()=>{},{...cn,level:{enumerable:!0,get(){return this[vo].level},set(e){this[vo].level=e}}}),Eo=(e,n,r)=>{let o,t;return r===void 0?(o=e,t=n):(o=r.openAll+e,t=n+r.closeAll),{open:e,close:n,openAll:o,closeAll:t,parent:r}},Ir=(e,n,r)=>{let o=(...t)=>ul(o,t.length===1?""+t[0]:t.join(" "));return Object.setPrototypeOf(o,ll),o[vo]=e,o[an]=n,o[qn]=r,o},ul=(e,n)=>{if(e.level<=0||!n)return e[qn]?"":n;let r=e[an];if(r===void 0)return n;let{openAll:o,closeAll:t}=r;if(n.includes("\x1B"))for(;r!==void 0;)n=ps(n,r.close,r.open),r=r.parent;let i=n.indexOf(`
44
- `);return i!==-1&&(n=ds(n,t,o,i)),o+n+t};Object.defineProperties(Xn.prototype,cn);var fl=Xn(),Qf=Xn({level:hs?hs.level:0});var h=fl;var ep=process.env.NREMOTE_ENV==="development";var I=process.env.NREMOTE_WORKER_URL||"https://9remote.cc",ys=3e4,ws=500,So=300,$e={cmdMs:1e3,pendingApprovalMs:3e3,statsMs:5e3,serverReadyIntervalMs:200,serverReadyTimeoutMs:5e3,bgServerReadyTimeoutMs:15e3,bgServerReadyIntervalMs:300},ft={intervalMs:2e3,timeoutMs:12e4,fetchTimeoutMs:5e3,dnsTimeoutMs:2e3,maxLogEntries:80,postReadyHoldMs:2e3},ie={killCloudflaredMs:500,killCloudflaredTuiMs:300,serverBootMs:2e3,guestRecheckMs:3e3,trayReadyMs:1e3,postReadyHoldMs:2e3,bgSpawnFlushMs:400};var Ve={maxLogLines:200,headerWidth:44},Ye={checkIntervalMs:36e5,connectCheckDebounceMs:9e5,maxRetry:3,retryDelayMs:3e3,verifyTimeoutMs:15e3,lockTtlMs:3e5,lockFile:"update.lock",gateTimeoutMs:6e4},vs=5e3,To=12e4;var _r=1500,bs=2,Es=3e4,me={orange:h.rgb(230,138,110),orangeDim:h.rgb(200,120,95)};function Ss(){return process.env.CODESPACES==="true"}var pl=xo.default.dirname((0,xs.fileURLToPath)(__importMetaUrl));async function pt(){let e=await Xt();if(Ss()&&process.env.NREMOTE_API_KEY)return We(e,process.env.NREMOTE_API_KEY,"Codespace");let n=Kn();if(n.key)Ai(n.key)&&(n=await dl(e,n));else{let r=kt(e);n=We(e,r,"Default")}return n}async function dl(e,n){if(await X())return n;let r=kt(e);if(Y().remoteEnabled===!1)return We(e,r,n.name||"Default");await Pt(r,I,null,n.key);let o=Kn();return oo(o.key)?o:We(e,r,n.name||"Default")}function De(){return"3.0.43"}var z=require("fs"),Cs=require("url"),un=require("child_process"),Ee=A(require("path"),1),dt=A(require("os"),1);var ln=A(require("fs"),1),Ao=A(require("path"),1),As=A(require("os"),1),ks=require("child_process"),Lr=Ao.default.join(As.default.homedir(),".9remote","pids");function ml(){try{ln.default.existsSync(Lr)||ln.default.mkdirSync(Lr,{recursive:!0})}catch{}}function ko(e){return Ao.default.join(Lr,`${e}.pid`)}function Be(e,n){if(n)try{ml(),ln.default.writeFileSync(ko(e),String(n))}catch{}}function Jn(e){try{let n=ln.default.readFileSync(ko(e),"utf8").trim(),r=parseInt(n,10);return Number.isFinite(r)&&r>0?r:null}catch{return null}}function qe(e){try{ln.default.unlinkSync(ko(e))}catch{}}function Ro(e){if(!e)return!1;try{return process.kill(e,0),!0}catch{return!1}}function hl(e){let n=Jn(e);if(qe(e),!n)return!1;try{process.platform==="win32"?(0,ks.execSync)(`taskkill /F /T /PID ${n}`,{stdio:"ignore",windowsHide:!0}):process.kill(n,"SIGKILL")}catch{}return!0}var gl=["cloudflared","agent"];function Rs(){for(let e of gl)hl(e)}function Ps(){return Lr}var _t=require("child_process"),B=require("fs"),Ot=require("path"),$o=A(require("os"),1),It=A(require("path"),1),Os=require("url");var Cr=(0,Ot.join)(V.LOGS,"autostart.log"),Mr="cc.9remote.agent",Nr="9Remote",Dr=["--tray","--skip-update","--start"],Qn=$o.default.homedir(),$s=It.default.dirname((0,Os.fileURLToPath)(__importMetaUrl)),se={darwin:(0,Ot.join)(Qn,"Library","LaunchAgents",`${Mr}.plist`),linux:(0,Ot.join)(Qn,".config","autostart",`${Mr}.desktop`),linuxSystemd:(0,Ot.join)(Qn,".config","systemd","user",`${Mr}.service`),win:(0,Ot.join)(process.env.APPDATA||"","Microsoft","Windows","Start Menu","Programs","Startup",`${Nr}.vbs`)};function Xe(){for(let e=$s,n=null;e!==n;n=e,e=It.default.dirname(e)){let r=It.default.join(e,"package.json");if((0,B.existsSync)(r)){try{let o=JSON.parse((0,B.readFileSync)(r,"utf8"));if(o.name!==ee)continue;let t=typeof o.bin=="string"?o.bin:o.bin?.[ee];if(t){let i=It.default.resolve(e,t);if((0,B.existsSync)(i))return i}}catch{}break}}return process.argv[1]||It.default.resolve($s,"..","index.js")}function Oe(){return process.execPath}function Oo(){return process.versions.electron?"env ELECTRON_RUN_AS_NODE=1 ":""}function Is(e){let n=Oe(),r=Xe();if(process.platform==="win32"){let t=e.join(" "),i=(0,Ot.join)($o.default.tmpdir(),`${ee}-launch.vbs`);return(0,B.writeFileSync)(i,`CreateObject("WScript.Shell").Run """${n}"" ""${r}"" ${t}", 0, False
44
+ `);return i!==-1&&(n=ds(n,t,o,i)),o+n+t};Object.defineProperties(Xn.prototype,cn);var fl=Xn(),Qf=Xn({level:hs?hs.level:0});var h=fl;var ep=process.env.NREMOTE_ENV==="development";var I=process.env.NREMOTE_WORKER_URL||"https://9remote.cc",ys=3e4,ws=500,So=300,$e={cmdMs:1e3,pendingApprovalMs:3e3,statsMs:5e3,serverReadyIntervalMs:200,serverReadyTimeoutMs:5e3,bgServerReadyTimeoutMs:15e3,bgServerReadyIntervalMs:300},ft={intervalMs:2e3,timeoutMs:12e4,fetchTimeoutMs:5e3,dnsTimeoutMs:2e3,maxLogEntries:80,postReadyHoldMs:2e3},ie={killCloudflaredMs:500,killCloudflaredTuiMs:300,serverBootMs:2e3,guestRecheckMs:3e3,trayReadyMs:1e3,postReadyHoldMs:2e3,bgSpawnFlushMs:400};var Ve={maxLogLines:200,headerWidth:44},Ye={checkIntervalMs:36e5,connectCheckDebounceMs:9e5,maxRetry:3,retryDelayMs:3e3,verifyTimeoutMs:15e3,lockTtlMs:3e5,lockFile:"update.lock",gateTimeoutMs:6e4},vs=5e3,To=12e4,_r=1500,bs=2,Es=3e4,me={orange:h.rgb(230,138,110),orangeDim:h.rgb(200,120,95)};function Ss(){return process.env.CODESPACES==="true"}var pl=xo.default.dirname((0,xs.fileURLToPath)(__importMetaUrl));async function pt(){let e=await Xt();if(Ss()&&process.env.NREMOTE_API_KEY)return We(e,process.env.NREMOTE_API_KEY,"Codespace");let n=Kn();if(n.key)Ai(n.key)&&(n=await dl(e,n));else{let r=kt(e);n=We(e,r,"Default")}return n}async function dl(e,n){if(await X())return n;let r=kt(e);if(Y().remoteEnabled===!1)return We(e,r,n.name||"Default");await Pt(r,I,null,n.key);let o=Kn();return oo(o.key)?o:We(e,r,n.name||"Default")}function De(){return"3.0.47"}var z=require("fs"),Cs=require("url"),un=require("child_process"),Ee=A(require("path"),1),dt=A(require("os"),1);var ln=A(require("fs"),1),Ao=A(require("path"),1),As=A(require("os"),1),ks=require("child_process"),Lr=Ao.default.join(As.default.homedir(),".9remote","pids");function ml(){try{ln.default.existsSync(Lr)||ln.default.mkdirSync(Lr,{recursive:!0})}catch{}}function ko(e){return Ao.default.join(Lr,`${e}.pid`)}function Be(e,n){if(n)try{ml(),ln.default.writeFileSync(ko(e),String(n))}catch{}}function Jn(e){try{let n=ln.default.readFileSync(ko(e),"utf8").trim(),r=parseInt(n,10);return Number.isFinite(r)&&r>0?r:null}catch{return null}}function qe(e){try{ln.default.unlinkSync(ko(e))}catch{}}function Ro(e){if(!e)return!1;try{return process.kill(e,0),!0}catch{return!1}}function hl(e){let n=Jn(e);if(qe(e),!n)return!1;try{process.platform==="win32"?(0,ks.execSync)(`taskkill /F /T /PID ${n}`,{stdio:"ignore",windowsHide:!0}):process.kill(n,"SIGKILL")}catch{}return!0}var gl=["cloudflared","agent"];function Rs(){for(let e of gl)hl(e)}function Ps(){return Lr}var _t=require("child_process"),B=require("fs"),Ot=require("path"),$o=A(require("os"),1),It=A(require("path"),1),Os=require("url");var Cr=(0,Ot.join)(V.LOGS,"autostart.log"),Mr="cc.9remote.agent",Nr="9Remote",Dr=["--tray","--skip-update","--start"],Qn=$o.default.homedir(),$s=It.default.dirname((0,Os.fileURLToPath)(__importMetaUrl)),se={darwin:(0,Ot.join)(Qn,"Library","LaunchAgents",`${Mr}.plist`),linux:(0,Ot.join)(Qn,".config","autostart",`${Mr}.desktop`),linuxSystemd:(0,Ot.join)(Qn,".config","systemd","user",`${Mr}.service`),win:(0,Ot.join)(process.env.APPDATA||"","Microsoft","Windows","Start Menu","Programs","Startup",`${Nr}.vbs`)};function Xe(){for(let e=$s,n=null;e!==n;n=e,e=It.default.dirname(e)){let r=It.default.join(e,"package.json");if((0,B.existsSync)(r)){try{let o=JSON.parse((0,B.readFileSync)(r,"utf8"));if(o.name!==ee)continue;let t=typeof o.bin=="string"?o.bin:o.bin?.[ee];if(t){let i=It.default.resolve(e,t);if((0,B.existsSync)(i))return i}}catch{}break}}return process.argv[1]||It.default.resolve($s,"..","index.js")}function Oe(){return process.execPath}function Oo(){return process.versions.electron?"env ELECTRON_RUN_AS_NODE=1 ":""}function Is(e){let n=Oe(),r=Xe();if(process.platform==="win32"){let t=e.join(" "),i=(0,Ot.join)($o.default.tmpdir(),`${ee}-launch.vbs`);return(0,B.writeFileSync)(i,`CreateObject("WScript.Shell").Run """${n}"" ""${r}"" ${t}", 0, False
45
45
  `),(0,_t.execFile)("wscript.exe",[i],{windowsHide:!0}).unref?.(),null}let o=(0,_t.spawn)(n,[r,...e],{detached:!0,stdio:"ignore"});return o.unref(),o.pid||null}function _s(){let e=It.default.dirname(Oe()),n=["/usr/local/bin","/usr/bin","/bin","/usr/sbin","/sbin","/opt/homebrew/bin"];return n.includes(e)||n.unshift(e),n.join(":")}function Po(e){return String(e).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")}function yl(e,n){let r=[e,n,...Dr].map(o=>` <string>${Po(o)}</string>`).join(`
46
46
  `);return`<?xml version="1.0" encoding="UTF-8"?>
47
47
  <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
@@ -96,7 +96,7 @@ StandardError=append:${Cr}
96
96
 
97
97
  [Install]
98
98
  WantedBy=default.target
99
- `}function xl(e){try{return(0,_t.execFileSync)("systemctl",["--user",...e],{stdio:"ignore"}),!0}catch{return!1}}function Al(){return(0,B.existsSync)(se.linux)||(0,B.existsSync)(se.linuxSystemd)}async function kl(){try{if(process.platform==="darwin")return wl();if(process.platform==="win32")return await El();if(process.platform==="linux")return Al()}catch{}return!1}async function Ls(){try{if(process.platform==="win32"&&bl(),!await kl())return!1;if(process.platform==="darwin"){let e=yl(Oe(),Xe());return((0,B.existsSync)(se.darwin)?(0,B.readFileSync)(se.darwin,"utf8"):"")===e?!1:((0,B.writeFileSync)(se.darwin,e),!0)}if(process.platform==="win32"){let e=vl();return((0,B.existsSync)(se.win)?(0,B.readFileSync)(se.win,"utf8"):"")===e?!1:((0,B.writeFileSync)(se.win,e),!0)}if(process.platform==="linux"){if((0,B.existsSync)(se.linuxSystemd)){let e=Tl();return(0,B.readFileSync)(se.linuxSystemd,"utf8")===e?!1:((0,B.writeFileSync)(se.linuxSystemd,e),xl(["daemon-reload"]),!0)}if((0,B.existsSync)(se.linux)){let e=Sl();return(0,B.readFileSync)(se.linux,"utf8")===e?!1:((0,B.writeFileSync)(se.linux,e),!0)}}}catch{}return!1}var Mt=F("update"),Rl=Ee.default.dirname((0,Cs.fileURLToPath)(__importMetaUrl)),Ns=(0,z.existsSync)("/.dockerenv"),Ds=8e3;var Lt=2208,Io=Ee.default.join(dt.default.homedir(),".9remote","cloudflared.pid");function Pl(){try{Rs()}catch{}try{if((0,z.existsSync)(Io)){let e=parseInt((0,z.readFileSync)(Io,"utf8"));if(Number.isFinite(e))try{process.kill(e)}catch{}try{(0,z.unlinkSync)(Io)}catch{}}}catch{}try{process.platform==="win32"?(0,un.execSync)(`for /f "tokens=5" %a in ('netstat -aon ^| findstr :${Lt}') do taskkill /F /PID %a`,{stdio:"ignore",windowsHide:!0}):(0,un.execSync)(`lsof -ti:${Lt} | xargs kill -9 2>/dev/null || true`,{stdio:"ignore"})}catch{}if(process.platform==="win32"){let e=Date.now()+1500;for(;Date.now()<e;);}}function Bs(){return"3.0.43"}function Us(e,n){let r=e.split(".").map(Number),o=n.split(".").map(Number);for(let t=0;t<3;t++){if(o[t]>r[t])return!0;if(o[t]<r[t])return!1}return!1}function $l(){return process.env.CODESPACES==="true"||process.env.GITHUB_CODESPACES_PORT_FORWARDING_DOMAIN?"GitHub Codespaces":Ns?"Docker":null}function Br(){Pl()}async function Fs(){try{let e=Bs();if(!e)return null;let n=await W(to,{signal:AbortSignal.timeout(Ds)});if(!n.ok)return null;let{version:r}=await n.json();return r&&Us(e,r)?{current:e,latest:r}:null}catch{return null}}var Ct=Ee.default.join(V.STATE,Ye.lockFile);function Ol(){try{if((0,z.existsSync)(Ct)){let{pid:e,ts:n}=JSON.parse((0,z.readFileSync)(Ct,"utf8")),r=Date.now()-n<Ye.lockTtlMs,o=!1;try{process.kill(e,0),o=!0}catch{}if(r&&o)return!1}}catch{}try{(0,z.writeFileSync)(Ct,JSON.stringify({pid:process.pid,ts:Date.now()}))}catch{}return!0}async function Il(){try{let e=await W(to,{signal:AbortSignal.timeout(Ds)});if(!e.ok)return null;let{version:n}=await e.json();return n||null}catch{return null}}function Ks(){try{if(process.env.NREMOTE_REGISTRY)return`--registry ${new URL(process.env.NREMOTE_REGISTRY).origin}`}catch{}return""}function Hs(){let e=Xe(),n=Ee.default.sep,r=`${n}lib${n}node_modules${n}`,o=e.indexOf(r);return o>0?{global:"-g",prefix:`--prefix "${e.slice(0,o)}"`}:(o=e.indexOf(`${n}node_modules${n}`),o>0?{global:"",prefix:`--prefix "${e.slice(0,o)}"`}:{global:"-g",prefix:""})}function Ms(){let e=process.argv.slice(2).filter(t=>t!=="--skip-update"),r=e.includes("ui")||e.includes("start")||e.some(t=>["--tray","--auto","--start"].includes(t))?e.join(" "):"--tray";return`${r.includes("--start")||r.includes("start")?r:`${r} --start`} --skip-update`}function js(){let e=process.env.NREMOTE_NPM_CLI;return e&&(0,z.existsSync)(e)?process.platform==="win32"?`"${Oe()}" "${e}"`:`env ELECTRON_RUN_AS_NODE=1 "${Oe()}" "${e}"`:"npm"}function _l(e,n){let r=Ee.default.join(dt.default.tmpdir(),`${ee}-gate.cjs`),o=`const http = require("http");
99
+ `}function xl(e){try{return(0,_t.execFileSync)("systemctl",["--user",...e],{stdio:"ignore"}),!0}catch{return!1}}function Al(){return(0,B.existsSync)(se.linux)||(0,B.existsSync)(se.linuxSystemd)}async function kl(){try{if(process.platform==="darwin")return wl();if(process.platform==="win32")return await El();if(process.platform==="linux")return Al()}catch{}return!1}async function Ls(){try{if(process.platform==="win32"&&bl(),!await kl())return!1;if(process.platform==="darwin"){let e=yl(Oe(),Xe());return((0,B.existsSync)(se.darwin)?(0,B.readFileSync)(se.darwin,"utf8"):"")===e?!1:((0,B.writeFileSync)(se.darwin,e),!0)}if(process.platform==="win32"){let e=vl();return((0,B.existsSync)(se.win)?(0,B.readFileSync)(se.win,"utf8"):"")===e?!1:((0,B.writeFileSync)(se.win,e),!0)}if(process.platform==="linux"){if((0,B.existsSync)(se.linuxSystemd)){let e=Tl();return(0,B.readFileSync)(se.linuxSystemd,"utf8")===e?!1:((0,B.writeFileSync)(se.linuxSystemd,e),xl(["daemon-reload"]),!0)}if((0,B.existsSync)(se.linux)){let e=Sl();return(0,B.readFileSync)(se.linux,"utf8")===e?!1:((0,B.writeFileSync)(se.linux,e),!0)}}}catch{}return!1}var Mt=F("update"),Rl=Ee.default.dirname((0,Cs.fileURLToPath)(__importMetaUrl)),Ns=(0,z.existsSync)("/.dockerenv"),Ds=8e3;var Lt=2208,Io=Ee.default.join(dt.default.homedir(),".9remote","cloudflared.pid");function Pl(){try{Rs()}catch{}try{if((0,z.existsSync)(Io)){let e=parseInt((0,z.readFileSync)(Io,"utf8"));if(Number.isFinite(e))try{process.kill(e)}catch{}try{(0,z.unlinkSync)(Io)}catch{}}}catch{}try{process.platform==="win32"?(0,un.execSync)(`for /f "tokens=5" %a in ('netstat -aon ^| findstr :${Lt}') do taskkill /F /PID %a`,{stdio:"ignore",windowsHide:!0}):(0,un.execSync)(`lsof -ti:${Lt} | xargs kill -9 2>/dev/null || true`,{stdio:"ignore"})}catch{}if(process.platform==="win32"){let e=Date.now()+1500;for(;Date.now()<e;);}}function Bs(){return"3.0.47"}function Us(e,n){let r=e.split(".").map(Number),o=n.split(".").map(Number);for(let t=0;t<3;t++){if(o[t]>r[t])return!0;if(o[t]<r[t])return!1}return!1}function $l(){return process.env.CODESPACES==="true"||process.env.GITHUB_CODESPACES_PORT_FORWARDING_DOMAIN?"GitHub Codespaces":Ns?"Docker":null}function Br(){Pl()}async function Fs(){try{let e=Bs();if(!e)return null;let n=await W(to,{signal:AbortSignal.timeout(Ds)});if(!n.ok)return null;let{version:r}=await n.json();return r&&Us(e,r)?{current:e,latest:r}:null}catch{return null}}var Ct=Ee.default.join(V.STATE,Ye.lockFile);function Ol(){try{if((0,z.existsSync)(Ct)){let{pid:e,ts:n}=JSON.parse((0,z.readFileSync)(Ct,"utf8")),r=Date.now()-n<Ye.lockTtlMs,o=!1;try{process.kill(e,0),o=!0}catch{}if(r&&o)return!1}}catch{}try{(0,z.writeFileSync)(Ct,JSON.stringify({pid:process.pid,ts:Date.now()}))}catch{}return!0}async function Il(){try{let e=await W(to,{signal:AbortSignal.timeout(Ds)});if(!e.ok)return null;let{version:n}=await e.json();return n||null}catch{return null}}function Ks(){try{if(process.env.NREMOTE_REGISTRY)return`--registry ${new URL(process.env.NREMOTE_REGISTRY).origin}`}catch{}return""}function Hs(){let e=Xe(),n=Ee.default.sep,r=`${n}lib${n}node_modules${n}`,o=e.indexOf(r);return o>0?{global:"-g",prefix:`--prefix "${e.slice(0,o)}"`}:(o=e.indexOf(`${n}node_modules${n}`),o>0?{global:"",prefix:`--prefix "${e.slice(0,o)}"`}:{global:"-g",prefix:""})}function Ms(){let e=process.argv.slice(2).filter(t=>t!=="--skip-update"),r=e.includes("ui")||e.includes("start")||e.some(t=>["--tray","--auto","--start"].includes(t))?e.join(" "):"--tray";return`${r.includes("--start")||r.includes("start")?r:`${r} --start`} --skip-update`}function js(){let e=process.env.NREMOTE_NPM_CLI;return e&&(0,z.existsSync)(e)?process.platform==="win32"?`"${Oe()}" "${e}"`:`env ELECTRON_RUN_AS_NODE=1 "${Oe()}" "${e}"`:"npm"}function _l(e,n){let r=Ee.default.join(dt.default.tmpdir(),`${ee}-gate.cjs`),o=`const http = require("http");
100
100
  const PORT = ${e};
101
101
  const EXIT_MS = ${n};
102
102
  const HTML = '<!doctype html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>9Remote</title><style>body{margin:0;height:100vh;display:flex;align-items:center;justify-content:center;background:#101218;color:#c9ced6;font-family:system-ui,-apple-system,sans-serif}.spin{width:26px;height:26px;border:3px solid #2a2f3a;border-top-color:#e68a6e;border-radius:50%;animation:r 1s linear infinite;margin:0 auto 14px}@keyframes r{to{transform:rotate(360deg)}}</style></head><body><div><div class="spin"></div><div>9Remote is updating\u2026</div></div><script>setInterval(function(){fetch("/api/health",{cache:"no-store"}).then(function(r){if(r.ok)location.reload()}).catch(function(){})},1500)</script></body></html>';
@@ -262,7 +262,7 @@ QR expires in 30 minutes (one-time use)
262
262
  `))):i.push(h.gray(`
263
263
  (One-time key used \u2014 generate a new one from menu)
264
264
  `)),i.push(me.orange("\u2550".repeat(t)),h.white("App URL".padEnd(14))+h.gray(`${I}/login`)),hi.showTunnelUrlInMenu&&i.push(h.white("Tunnel".padEnd(14))+(o?h.cyan(o):h.gray("\u2014"))),i.push(h.white("One-Time Key".padEnd(14))+(e?me.orange.bold(e)+h.dim(" (expires in 30m)"):h.gray("\u2014")),h.white("Key".padEnd(14))+h.dim(n),me.orange("\u2550".repeat(t))),i.join(`
265
- `)}var we=F("cmd");function Tt(e,n,r,o){let t=!1;setInterval(async()=>{if(t)return;let i=Ii();if(i){t=!0;try{if(i==="stop-tunnel")await Qa(e,n,r);else if(i==="restart-tunnel")await Qa(e,n,r),await za(e,n,r);else if(i==="start-tunnel"){if(await za(e,n,r)==="alreadyRunning"){t=!1;return}}else if(i==="regenerate-key")await Ru();else if(i==="shutdown")Pu(e,n);else if(i==="update"){let s=await Gs();we.info(`cmd update -> ${s?"started":"SKIPPED (see reasons above)"}`)}else i==="restart"&&ka(o?.())}catch(s){we.error(`cmd "${i}" failed: ${s?.message||s}`)}finally{t=!1}}},$e.cmdMs)}async function Qa(e,n,r){it(),er();let o=e();o&&(o.kill(),n(null),we.info("Tunnel stopped")),r&&await wt(r),await L(O.STOPPED,{tunnelUrl:"",oneTimeKey:"",oneTimeKeyExpiresAt:null,qrUrl:""}),xn({tunnelUrl:"",running:!0})}async function za(e,n,r){if(Y().remoteEnabled===!1){we.info("Start skipped \u2014 remote is disabled");return}let o=e();if(o)if(o.killed||o.exitCode!=null)n(null);else{let t=await te("/api/ui/state");return await L(O.READY,{tunnelUrl:t?.tunnelUrl||""}),"alreadyRunning"}it(),we.info("Starting...");try{await L(O.PREPARING),await cr(Pr),await L(O.CONNECTING);let t=await W(`${I}/api/session/create`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:Q(r),hostPublicKey:lt(),hostX25519Key:ut()})});if(!t.ok)throw new Error(`Session create failed: ${t.status}`);await q("/api/signaling/retry",{}),Ht(r),await L(O.TUNNELING);let i=async l=>{await Kt(r,l),await j({tunnelUrl:l}),mn(l),xn({tunnelUrl:l,running:!0})},s=({attempt:l,delay:f})=>{j({tunnelRetry:{attempt:l,delay:f,at:Date.now()}})},a=null;try{a=await Ze($,i,ot({onUrlUpdate:i,setTunnel:l=>n(l),onRetry:s}))}catch(l){we.error(`Tunnel spawn failed: ${l?.message||l} \u2014 QR RTC-only, bg retry`)}j({tunnelRetry:null});let c="";a&&(n(a.child),c=a.tunnelUrl,await L(O.VERIFYING),await yt(c)||(we.warn("Tunnel health check timed out \u2014 bg reconnect"),c="",n(null),a=null)),await Xr(r,c),await L(O.READY,{tunnelUrl:c}),a||Rn($,{onUrlUpdate:i,onRestart:ot({onUrlUpdate:i,setTunnel:l=>n(l),onRetry:s}),setActiveTunnel:n,onReady:async l=>{await L(O.READY,{tunnelUrl:l.tunnelUrl})}})}catch(t){we.error(`Failed to start: ${t.message}`),await L(O.STOPPED)}}async function Ru(){if(Y().remoteEnabled===!1){we.info("Key regeneration skipped \u2014 remote is disabled");return}let e=await Xt(),n=kt(e),r=Kn();if(!await Pt(n,I,$i()?.tunnelUrl,r?.key)){we.error("Key regeneration aborted \u2014 could not register the new key");return}We(e,n,r?.name||"Default"),await j({permanentKey:n,oneTimeKey:"",oneTimeKeyExpiresAt:null,qrUrl:"",pairingUsed:!0}),we.info(`Key regenerated: ${wr(n)}`)}function Pu(e,n){it(),we.info("Shutting down 9Remote completely...");let r=e();n(null),rt({tunnelProcess:r}),we.info("9Remote stopped")}Ft();async function Za(){if(await X()&&(await new Promise(a=>setTimeout(a,ie.guestRecheckMs)),await X())){console.log(h.green(`
265
+ `)}var we=F("cmd");function Tt(e,n,r,o){let t=!1;setInterval(async()=>{if(t)return;let i=Ii();if(i){t=!0;try{if(i==="stop-tunnel")await Qa(e,n,r);else if(i==="restart-tunnel")await Qa(e,n,r),await za(e,n,r);else if(i==="start-tunnel"){if(await za(e,n,r)==="alreadyRunning"){t=!1;return}}else if(i==="regenerate-key")await Ru();else if(i==="shutdown")Pu(e,n);else if(i==="update"){let s=await Gs();we.info(`cmd update -> ${s?"started":"SKIPPED (see reasons above)"}`)}else i==="restart"&&ka(o?.())}catch(s){we.error(`cmd "${i}" failed: ${s?.message||s}`)}finally{t=!1}}},$e.cmdMs)}async function Qa(e,n,r){it(),er();let o=e();o&&(o.kill(),n(null),we.info("Tunnel stopped")),r&&await wt(r),await L(O.STOPPED,{tunnelUrl:"",oneTimeKey:"",oneTimeKeyExpiresAt:null,qrUrl:""}),xn({tunnelUrl:"",running:!0})}async function za(e,n,r){if(Y().remoteEnabled===!1){we.info("Start skipped \u2014 remote is disabled");return}let o=async i=>{await Kt(r,i),await j({tunnelUrl:i}),mn(i),xn({tunnelUrl:i,running:!0})},t=e();if(t)if(t.killed||t.exitCode!=null)n(null);else{let i=await te("/api/ui/state");return await L(O.READY,{tunnelUrl:i?.tunnelUrl||""}),i?.tunnelUrl&&await o(i.tunnelUrl),"alreadyRunning"}it(),we.info("Starting...");try{await L(O.PREPARING),await cr(Pr),await L(O.CONNECTING);let i=await W(`${I}/api/session/create`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:Q(r),hostPublicKey:lt(),hostX25519Key:ut()})});if(!i.ok)throw new Error(`Session create failed: ${i.status}`);await q("/api/signaling/retry",{}),Ht(r),await L(O.TUNNELING);let s=({attempt:l,delay:f})=>{j({tunnelRetry:{attempt:l,delay:f,at:Date.now()}})},a=null;try{a=await Ze($,o,ot({onUrlUpdate:o,setTunnel:l=>n(l),onRetry:s}))}catch(l){we.error(`Tunnel spawn failed: ${l?.message||l} \u2014 QR RTC-only, bg retry`)}j({tunnelRetry:null});let c="";a&&(n(a.child),c=a.tunnelUrl,await L(O.VERIFYING),await yt(c)?await o(c):(we.warn("Tunnel health check timed out \u2014 bg reconnect"),c="",n(null),a=null)),await Xr(r,c),await L(O.READY,{tunnelUrl:c}),a||Rn($,{onUrlUpdate:o,onRestart:ot({onUrlUpdate:o,setTunnel:l=>n(l),onRetry:s}),setActiveTunnel:n,onReady:async l=>{await L(O.READY,{tunnelUrl:l.tunnelUrl})}})}catch(i){we.error(`Failed to start: ${i.message}`),await L(O.STOPPED)}}async function Ru(){if(Y().remoteEnabled===!1){we.info("Key regeneration skipped \u2014 remote is disabled");return}let e=await Xt(),n=kt(e),r=Kn();if(!await Pt(n,I,$i()?.tunnelUrl,r?.key)){we.error("Key regeneration aborted \u2014 could not register the new key");return}We(e,n,r?.name||"Default"),await j({permanentKey:n,oneTimeKey:"",oneTimeKeyExpiresAt:null,qrUrl:"",pairingUsed:!0}),we.info(`Key regenerated: ${wr(n)}`)}function Pu(e,n){it(),we.info("Shutting down 9Remote completely...");let r=e();n(null),rt({tunnelProcess:r}),we.info("9Remote stopped")}Ft();async function Za(){if(await X()&&(await new Promise(a=>setTimeout(a,ie.guestRecheckMs)),await X())){console.log(h.green(`
266
266
  \u{1F310} UI already served at http://localhost:${$}`));return}Be("agent",process.pid),rn(De());let e=await pt(),n=process.argv.find(a=>a.startsWith("--theme=")),r=n?n.split("=")[1]:null;try{ce(),await new Promise(a=>setTimeout(a,ie.killCloudflaredMs))}catch{}let o=vt(null,null);await new Promise(a=>setTimeout(a,ie.serverBootMs));let t=`http://localhost:${$}`;console.log(h.green(`
267
267
  \u{1F310} UI ready at ${t}`));let i=null;Y().remoteEnabled===!1&&await wt(e.key),await j({permanentKey:e.key,step:O.STOPPED,theme:r}),bt(o,null),Tt(()=>i,a=>{i=a},e.key,()=>o),await lr({port:$,onQuit:()=>{let a=i;i=null,rt({serverManager:o,tunnelProcess:a,exit:!1}),Bt(),setTimeout(()=>process.exit(0),500)},onOpenUI:()=>Ut(t)}),xn({tunnelUrl:"",running:!0}),(process.argv.includes("--start")||process.argv.includes("--skip-update"))&&Y().remoteEnabled!==!1&&Qt("start-tunnel"),await new Promise(()=>{})}Ft();async function ec(){if(await X()&&(await new Promise(l=>setTimeout(l,ie.guestRecheckMs)),await X())){console.log(`
268
268
  \u{1F310} 9Remote already running at http://localhost:${$}`);return}Be("agent",process.pid),Ls().catch(()=>{});let e=await pt(),n=process.argv.find(l=>l.startsWith("--theme=")),r=n?n.split("=")[1]:null;try{ce(),await new Promise(l=>setTimeout(l,ie.killCloudflaredMs))}catch{}let o=vt(null,null);await new Promise(l=>setTimeout(l,ie.serverBootMs));let t=`http://localhost:${$}`,i=null;await j({permanentKey:e.key,step:O.STOPPED,theme:r});let s=()=>{let l=i;i=null,rt({serverManager:o,tunnelProcess:l,exit:!1})};bt(o,null),Tt(()=>i,l=>{i=l},e.key,()=>o);try{qe("cloudflared")}catch{}(process.argv.includes("--start")||process.argv.includes("--skip-update"))&&Y().remoteEnabled!==!1&&Qt("start-tunnel"),await lr({port:$,onQuit:s,onOpenUI:()=>Ut(t)})&&jo({title:"9Remote is running",message:`Open ${t} or use the tray icon to manage.`}),await new Promise(()=>{})}var Gt=F("mode");async function $u(e){Gt.info("Starting server..."),await L(O.PREPARING);try{ce(),await new Promise(l=>setTimeout(l,ie.killCloudflaredMs))}catch{}let n=Y().remoteEnabled===!1,r=!n;if(n&&await wt(e),r)try{let l=await W(`${I}/api/session/create`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:Q(e),hostPublicKey:lt(),hostX25519Key:ut()})});if(!l.ok)throw new Error(`Session create failed: ${l.status}`);Ht(e)}catch(l){Gt.error(`Session create failed: ${l.message} \u2014 local-only, retry from Web UI`),r=!1}let o=await X(),t=o?{getProcess:()=>null,shutdown:()=>{}}:vt(null,null);o||await new Promise(l=>setTimeout(l,ie.serverBootMs)),Gt.info("Starting tunnel..."),await L(O.CONNECTING);let i={current:null},s="",a=async l=>{Gt.info(`Tunnel URL rotated: ${l}`),await Kt(e,l),j({tunnelUrl:l}),mn(l)},c=null;if(r)try{c=await Ze($,a,ot({onUrlUpdate:a,setTunnel:l=>{i.current=l}}))}catch(l){Gt.error(`Tunnel spawn failed: ${l.message} \u2014 RTC-only, bg retry`)}return c&&(i.current=c.child,s=c.tunnelUrl,await yt(s)||(Gt.warn("Tunnel health check timed out \u2014 bg reconnect"),i.current=null,s="",c=null)),!c&&r&&Rn($,{onUrlUpdate:a,onRestart:ot({onUrlUpdate:a,setTunnel:l=>{i.current=l}}),setActiveTunnel:l=>{i.current=l},onReady:async l=>{await L(O.READY,{tunnelUrl:l.tunnelUrl})}}),s&&await Kt(e,s),r?await L(O.READY,{tunnelUrl:s}):await L(O.STOPPED,{tunnelUrl:""}),Fn({apiKey:e,tunnelUrl:s,serverPid:t.getProcess()?.pid,tunnelPid:i.current?.pid}),{serverManager:t,tunnelRef:i,tunnelUrl:s,remoteOnline:r}}async function tc(){rn(De());let e=await pt();Gt.info(`Using key: ${wr(e.key)} (${e.name})`);let{serverManager:n,tunnelRef:r,tunnelUrl:o,remoteOnline:t}=await $u(e.key);t?await Xr(e.key,o):console.log(`\u26A0 ${Y().remoteEnabled===!1?"Remote is disabled \u2014 enable it in Web UI settings":'Remote not connected \u2014 tap "remote \xB7 offline" in the Web UI to retry'}. Local mode.`),bt(n,r.current),Tt(()=>r.current,s=>{r.current=s},e.key);let i=Date.now();setInterval(()=>{let s=Math.floor((Date.now()-i)/1e3),a=Math.floor(s/3600),c=Math.floor(s%3600/60),l=s%60;j({uptime:`${a}:${String(c).padStart(2,"0")}:${String(l).padStart(2,"0")}`})},$e.statsMs),await new Promise(()=>{})}var nc=A(require("path"),1),rc=A(require("fs"),1);Ft();async function oc(){let e=`http://localhost:${$}`;await X()&&(Wr($),await new Promise(c=>setTimeout(c,500)));let n=["--tray"],r=process.argv.find(c=>c.startsWith("--theme="));r&&n.push(r);let o=jn;try{rc.default.mkdirSync(nc.default.dirname(o),{recursive:!0})}catch{}let t=null;try{t=Is(n),t&&Be("agent",t)}catch(c){console.log(h.red(`