9remote 3.0.43 → 3.0.46
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.
- package/dist/cli.cjs +3 -3
- package/dist/server.cjs +247 -248
- package/dist/ui/assets/index-BefL072o.js +8 -0
- package/dist/ui/assets/index-DvsANh5-.css +1 -0
- package/dist/ui/index.html +2 -2
- package/dist/web/404.html +1 -1
- package/dist/web/__next.__PAGE__.txt +2 -2
- package/dist/web/__next._full.txt +9 -9
- package/dist/web/__next._head.txt +1 -1
- package/dist/web/__next._index.txt +12 -10
- package/dist/web/__next._tree.txt +2 -2
- package/dist/web/_next/static/chunks/1772-2df6c72aa1bdf99d.js +1 -0
- package/dist/web/_next/static/chunks/1920-64e4610715fd991d.js +1 -0
- package/dist/web/_next/static/chunks/1968-90d80a8543ed4f21.js +32 -0
- package/dist/web/_next/static/chunks/556-1dec70a3f28ddbe8.js +1 -0
- package/dist/web/_next/static/chunks/5587-b8f18d331fdde617.js +1 -0
- package/dist/web/_next/static/chunks/6153.189180c190f90b2f.js +1 -0
- package/dist/web/_next/static/chunks/6221-2be9b41ee97fc1e6.js +11 -0
- package/dist/web/_next/static/chunks/7489.c1e8656da3738df7.js +1 -0
- package/dist/web/_next/static/chunks/8126-c11d39a1ae6ac126.js +1 -0
- package/dist/web/_next/static/chunks/820-c1bd7547f2433453.js +1 -0
- package/dist/web/_next/static/chunks/8534.189180c190f90b2f.js +1 -0
- package/dist/web/_next/static/chunks/9121-cf1e65bb26b0908b.js +1 -0
- package/dist/web/_next/static/chunks/{9491-6dc334192080d071.js → 9491-970597f510e71615.js} +1 -1
- package/dist/web/_next/static/chunks/app/_global-error/page-e60883b219ccba1a.js +1 -0
- package/dist/web/_next/static/chunks/app/_not-found/page-bfa58c699e86fa7c.js +1 -0
- package/dist/web/_next/static/chunks/app/admin/access/page-79e70c584b6e2150.js +5 -0
- package/dist/web/_next/static/chunks/app/admin/login/page-4a768b6df8ed5259.js +1 -0
- package/dist/web/_next/static/chunks/app/admin/ota/page-e4d26a8db9968a98.js +5 -0
- package/dist/web/_next/static/chunks/app/admin/page-1c13a4c1567ed18e.js +5 -0
- package/dist/web/_next/static/chunks/app/admin/turn/page-dbd8be78d0941005.js +5 -0
- package/dist/web/_next/static/chunks/app/download/page-e27de0a4170f4b73.js +1 -0
- package/dist/web/_next/static/chunks/app/layout-fc9671123388edff.js +1 -0
- package/dist/web/_next/static/chunks/app/login/page-8216ac4904ee3551.js +1 -0
- package/dist/web/_next/static/chunks/app/{page-1e67d8a5f3775276.js → page-fde2c88f21078fca.js} +2 -2
- package/dist/web/_next/static/chunks/app/workspace/browse/page-e60883b219ccba1a.js +1 -0
- package/dist/web/_next/static/chunks/app/workspace/editor/page-e60883b219ccba1a.js +1 -0
- package/dist/web/_next/static/chunks/app/workspace/files/page-e60883b219ccba1a.js +1 -0
- package/dist/web/_next/static/chunks/app/workspace/git/page-e60883b219ccba1a.js +1 -0
- package/dist/web/_next/static/chunks/app/workspace/layout-0d349197dc482ccd.js +23 -0
- package/dist/web/_next/static/chunks/app/workspace/mobile/page-e60883b219ccba1a.js +1 -0
- package/dist/web/_next/static/chunks/app/workspace/page-e60883b219ccba1a.js +1 -0
- package/dist/web/_next/static/chunks/app/workspace/pair/page-e60883b219ccba1a.js +1 -0
- package/dist/web/_next/static/chunks/app/workspace/remote/page-e60883b219ccba1a.js +1 -0
- package/dist/web/_next/static/chunks/app/workspace/settings/page-e60883b219ccba1a.js +1 -0
- package/dist/web/_next/static/chunks/app/workspace/terminal/[sessionId]/page-e60883b219ccba1a.js +1 -0
- package/dist/web/_next/static/chunks/app/workspace/welcome/page-e60883b219ccba1a.js +1 -0
- package/dist/web/_next/static/chunks/app/workspace/workspaces/page-e60883b219ccba1a.js +1 -0
- package/dist/web/_next/static/chunks/main-72206f0a3cb91ecb.js +5 -0
- package/dist/web/_next/static/chunks/next/dist/client/components/builtin/app-error-e60883b219ccba1a.js +1 -0
- package/dist/web/_next/static/chunks/next/dist/client/components/builtin/forbidden-e60883b219ccba1a.js +1 -0
- package/dist/web/_next/static/chunks/next/dist/client/components/builtin/not-found-e60883b219ccba1a.js +1 -0
- package/dist/web/_next/static/chunks/next/dist/client/components/builtin/unauthorized-e60883b219ccba1a.js +1 -0
- package/dist/web/_next/static/chunks/{webpack-dd1f7a5ae02e5d84.js → webpack-31691f9bc04b8076.js} +1 -1
- package/dist/web/_next/static/css/{adc0ee53b89bee3c.css → 4da4daf9f2bf1755.css} +1 -1
- package/dist/web/_next/static/css/577dbf61f141a630.css +1 -0
- package/dist/web/_next/static/u29HK3zWfDC3mM40skU_h/_buildManifest.js +1 -0
- package/dist/web/_not-found/__next._full.txt +20 -22
- package/dist/web/_not-found/__next._head.txt +1 -1
- package/dist/web/_not-found/__next._index.txt +7 -7
- package/dist/web/_not-found/__next._not-found.__PAGE__.txt +1 -1
- package/dist/web/_not-found/__next._not-found.txt +1 -1
- package/dist/web/_not-found/__next._tree.txt +2 -2
- package/dist/web/_not-found.html +1 -1
- package/dist/web/_not-found.txt +20 -22
- package/dist/web/admin/__next._full.txt +9 -9
- package/dist/web/admin/__next._head.txt +1 -1
- package/dist/web/admin/__next._index.txt +12 -10
- package/dist/web/admin/__next._tree.txt +2 -2
- package/dist/web/admin/__next.admin.__PAGE__.txt +2 -2
- package/dist/web/admin/__next.admin.txt +1 -1
- package/dist/web/admin/access/__next._full.txt +9 -9
- package/dist/web/admin/access/__next._head.txt +1 -1
- package/dist/web/admin/access/__next._index.txt +12 -10
- package/dist/web/admin/access/__next._tree.txt +2 -2
- package/dist/web/admin/access/__next.admin.access.__PAGE__.txt +2 -2
- package/dist/web/admin/access/__next.admin.access.txt +1 -1
- package/dist/web/admin/access/__next.admin.txt +1 -1
- package/dist/web/admin/access.html +1 -1
- package/dist/web/admin/access.txt +9 -9
- package/dist/web/admin/login/__next._full.txt +9 -9
- package/dist/web/admin/login/__next._head.txt +1 -1
- package/dist/web/admin/login/__next._index.txt +12 -10
- package/dist/web/admin/login/__next._tree.txt +2 -2
- package/dist/web/admin/login/__next.admin.login.__PAGE__.txt +2 -2
- package/dist/web/admin/login/__next.admin.login.txt +1 -1
- package/dist/web/admin/login/__next.admin.txt +1 -1
- package/dist/web/admin/login.html +1 -1
- package/dist/web/admin/login.txt +9 -9
- package/dist/web/admin/ota/__next._full.txt +9 -9
- package/dist/web/admin/ota/__next._head.txt +1 -1
- package/dist/web/admin/ota/__next._index.txt +12 -10
- package/dist/web/admin/ota/__next._tree.txt +2 -2
- package/dist/web/admin/ota/__next.admin.ota.__PAGE__.txt +2 -2
- package/dist/web/admin/ota/__next.admin.ota.txt +1 -1
- package/dist/web/admin/ota/__next.admin.txt +1 -1
- package/dist/web/admin/ota.html +1 -1
- package/dist/web/admin/ota.txt +9 -9
- package/dist/web/admin/turn/__next._full.txt +9 -9
- package/dist/web/admin/turn/__next._head.txt +1 -1
- package/dist/web/admin/turn/__next._index.txt +12 -10
- package/dist/web/admin/turn/__next._tree.txt +2 -2
- package/dist/web/admin/turn/__next.admin.turn.__PAGE__.txt +2 -2
- package/dist/web/admin/turn/__next.admin.turn.txt +1 -1
- package/dist/web/admin/turn/__next.admin.txt +1 -1
- package/dist/web/admin/turn.html +1 -1
- package/dist/web/admin/turn.txt +9 -9
- package/dist/web/admin.html +1 -1
- package/dist/web/admin.txt +9 -9
- package/dist/web/download/__next._full.txt +9 -9
- package/dist/web/download/__next._head.txt +1 -1
- package/dist/web/download/__next._index.txt +12 -10
- package/dist/web/download/__next._tree.txt +2 -2
- package/dist/web/download/__next.download.__PAGE__.txt +2 -2
- package/dist/web/download/__next.download.txt +1 -1
- package/dist/web/download.html +1 -1
- package/dist/web/download.txt +9 -9
- package/dist/web/index.html +1 -1
- package/dist/web/index.txt +9 -9
- package/dist/web/login/__next._full.txt +9 -9
- package/dist/web/login/__next._head.txt +1 -1
- package/dist/web/login/__next._index.txt +12 -10
- package/dist/web/login/__next._tree.txt +2 -2
- package/dist/web/login/__next.login.__PAGE__.txt +2 -2
- package/dist/web/login/__next.login.txt +1 -1
- package/dist/web/login.html +1 -1
- package/dist/web/login.txt +9 -9
- package/dist/web/workspace/__next._full.txt +11 -11
- package/dist/web/workspace/__next._head.txt +1 -1
- package/dist/web/workspace/__next._index.txt +12 -10
- package/dist/web/workspace/__next._tree.txt +3 -3
- package/dist/web/workspace/__next.workspace.__PAGE__.txt +1 -1
- package/dist/web/workspace/__next.workspace.txt +3 -3
- package/dist/web/workspace/browse/__next._full.txt +11 -11
- package/dist/web/workspace/browse/__next._head.txt +1 -1
- package/dist/web/workspace/browse/__next._index.txt +12 -10
- package/dist/web/workspace/browse/__next._tree.txt +3 -3
- package/dist/web/workspace/browse/__next.workspace.browse.__PAGE__.txt +1 -1
- package/dist/web/workspace/browse/__next.workspace.browse.txt +1 -1
- package/dist/web/workspace/browse/__next.workspace.txt +3 -3
- package/dist/web/workspace/browse.html +1 -1
- package/dist/web/workspace/browse.txt +11 -11
- package/dist/web/workspace/editor/__next._full.txt +11 -11
- package/dist/web/workspace/editor/__next._head.txt +1 -1
- package/dist/web/workspace/editor/__next._index.txt +12 -10
- package/dist/web/workspace/editor/__next._tree.txt +3 -3
- package/dist/web/workspace/editor/__next.workspace.editor.__PAGE__.txt +1 -1
- package/dist/web/workspace/editor/__next.workspace.editor.txt +1 -1
- package/dist/web/workspace/editor/__next.workspace.txt +3 -3
- package/dist/web/workspace/editor.html +1 -1
- package/dist/web/workspace/editor.txt +11 -11
- package/dist/web/workspace/files/__next._full.txt +11 -11
- package/dist/web/workspace/files/__next._head.txt +1 -1
- package/dist/web/workspace/files/__next._index.txt +12 -10
- package/dist/web/workspace/files/__next._tree.txt +3 -3
- package/dist/web/workspace/files/__next.workspace.files.__PAGE__.txt +1 -1
- package/dist/web/workspace/files/__next.workspace.files.txt +1 -1
- package/dist/web/workspace/files/__next.workspace.txt +3 -3
- package/dist/web/workspace/files.html +1 -1
- package/dist/web/workspace/files.txt +11 -11
- package/dist/web/workspace/git/__next._full.txt +11 -11
- package/dist/web/workspace/git/__next._head.txt +1 -1
- package/dist/web/workspace/git/__next._index.txt +12 -10
- package/dist/web/workspace/git/__next._tree.txt +3 -3
- package/dist/web/workspace/git/__next.workspace.git.__PAGE__.txt +1 -1
- package/dist/web/workspace/git/__next.workspace.git.txt +1 -1
- package/dist/web/workspace/git/__next.workspace.txt +3 -3
- package/dist/web/workspace/git.html +1 -1
- package/dist/web/workspace/git.txt +11 -11
- package/dist/web/workspace/mobile/__next._full.txt +11 -11
- package/dist/web/workspace/mobile/__next._head.txt +1 -1
- package/dist/web/workspace/mobile/__next._index.txt +12 -10
- package/dist/web/workspace/mobile/__next._tree.txt +3 -3
- package/dist/web/workspace/mobile/__next.workspace.mobile.__PAGE__.txt +1 -1
- package/dist/web/workspace/mobile/__next.workspace.mobile.txt +1 -1
- package/dist/web/workspace/mobile/__next.workspace.txt +3 -3
- package/dist/web/workspace/mobile.html +1 -1
- package/dist/web/workspace/mobile.txt +11 -11
- package/dist/web/workspace/pair/__next._full.txt +11 -11
- package/dist/web/workspace/pair/__next._head.txt +1 -1
- package/dist/web/workspace/pair/__next._index.txt +12 -10
- package/dist/web/workspace/pair/__next._tree.txt +3 -3
- package/dist/web/workspace/pair/__next.workspace.pair.__PAGE__.txt +1 -1
- package/dist/web/workspace/pair/__next.workspace.pair.txt +1 -1
- package/dist/web/workspace/pair/__next.workspace.txt +3 -3
- package/dist/web/workspace/pair.html +1 -1
- package/dist/web/workspace/pair.txt +11 -11
- package/dist/web/workspace/remote/__next._full.txt +11 -11
- package/dist/web/workspace/remote/__next._head.txt +1 -1
- package/dist/web/workspace/remote/__next._index.txt +12 -10
- package/dist/web/workspace/remote/__next._tree.txt +3 -3
- package/dist/web/workspace/remote/__next.workspace.remote.__PAGE__.txt +1 -1
- package/dist/web/workspace/remote/__next.workspace.remote.txt +1 -1
- package/dist/web/workspace/remote/__next.workspace.txt +3 -3
- package/dist/web/workspace/remote.html +1 -1
- package/dist/web/workspace/remote.txt +11 -11
- package/dist/web/workspace/settings/__next._full.txt +37 -0
- package/dist/web/workspace/settings/__next._head.txt +6 -0
- package/dist/web/workspace/settings/__next._index.txt +17 -0
- package/dist/web/workspace/settings/__next._tree.txt +7 -0
- package/dist/web/workspace/settings/__next.workspace.settings.__PAGE__.txt +5 -0
- package/dist/web/workspace/settings/__next.workspace.settings.txt +5 -0
- package/dist/web/workspace/settings/__next.workspace.txt +8 -0
- package/dist/web/workspace/settings.html +1 -0
- package/dist/web/workspace/settings.txt +37 -0
- package/dist/web/workspace/terminal/default/__next._full.txt +11 -11
- package/dist/web/workspace/terminal/default/__next._head.txt +1 -1
- package/dist/web/workspace/terminal/default/__next._index.txt +12 -10
- package/dist/web/workspace/terminal/default/__next._tree.txt +3 -3
- package/dist/web/workspace/terminal/default/__next.workspace.terminal.$d$sessionId.__PAGE__.txt +1 -1
- package/dist/web/workspace/terminal/default/__next.workspace.terminal.$d$sessionId.txt +1 -1
- package/dist/web/workspace/terminal/default/__next.workspace.terminal.txt +1 -1
- package/dist/web/workspace/terminal/default/__next.workspace.txt +3 -3
- package/dist/web/workspace/terminal/default.html +1 -1
- package/dist/web/workspace/terminal/default.txt +11 -11
- package/dist/web/workspace/welcome/__next._full.txt +11 -11
- package/dist/web/workspace/welcome/__next._head.txt +1 -1
- package/dist/web/workspace/welcome/__next._index.txt +12 -10
- package/dist/web/workspace/welcome/__next._tree.txt +3 -3
- package/dist/web/workspace/welcome/__next.workspace.txt +3 -3
- package/dist/web/workspace/welcome/__next.workspace.welcome.__PAGE__.txt +1 -1
- package/dist/web/workspace/welcome/__next.workspace.welcome.txt +1 -1
- package/dist/web/workspace/welcome.html +1 -1
- package/dist/web/workspace/welcome.txt +11 -11
- package/dist/web/workspace/workspaces/__next._full.txt +11 -11
- package/dist/web/workspace/workspaces/__next._head.txt +1 -1
- package/dist/web/workspace/workspaces/__next._index.txt +12 -10
- package/dist/web/workspace/workspaces/__next._tree.txt +3 -3
- package/dist/web/workspace/workspaces/__next.workspace.txt +3 -3
- package/dist/web/workspace/workspaces/__next.workspace.workspaces.__PAGE__.txt +1 -1
- package/dist/web/workspace/workspaces/__next.workspace.workspaces.txt +1 -1
- package/dist/web/workspace/workspaces.html +1 -1
- package/dist/web/workspace/workspaces.txt +11 -11
- package/dist/web/workspace.html +1 -1
- package/dist/web/workspace.txt +11 -11
- package/package.json +1 -1
- package/dist/ui/assets/index-DQvkcQ8W.js +0 -8
- package/dist/ui/assets/index-SHlsPzjb.css +0 -1
- package/dist/web/_next/static/AhLhl9t958vI0woNHnp3P/_buildManifest.js +0 -1
- package/dist/web/_next/static/chunks/1772-ef73c166e83f5eff.js +0 -1
- package/dist/web/_next/static/chunks/1920-5ead25286846df83.js +0 -1
- package/dist/web/_next/static/chunks/1968-4d2969f0b7112e0b.js +0 -32
- package/dist/web/_next/static/chunks/556-a8f04c41c5663ee8.js +0 -1
- package/dist/web/_next/static/chunks/5587-fc5af8c76df14222.js +0 -1
- package/dist/web/_next/static/chunks/6153.8c6b8930e22ceea0.js +0 -1
- package/dist/web/_next/static/chunks/6221-cf883148bf8a4c1e.js +0 -11
- package/dist/web/_next/static/chunks/7489.24938d89538cd03e.js +0 -1
- package/dist/web/_next/static/chunks/8126-8e53bfff5a06af4e.js +0 -1
- package/dist/web/_next/static/chunks/820-99036fb63c5462c8.js +0 -1
- package/dist/web/_next/static/chunks/8534.8c6b8930e22ceea0.js +0 -1
- package/dist/web/_next/static/chunks/9121-897f98b646fc2ac0.js +0 -1
- package/dist/web/_next/static/chunks/app/_global-error/page-2ece09c883187d82.js +0 -1
- package/dist/web/_next/static/chunks/app/_not-found/page-9f829d2c4beb1840.js +0 -1
- package/dist/web/_next/static/chunks/app/admin/access/page-45f45ad529e5b691.js +0 -5
- package/dist/web/_next/static/chunks/app/admin/login/page-382072b5b43d3c29.js +0 -1
- package/dist/web/_next/static/chunks/app/admin/ota/page-293c0743bd60f454.js +0 -5
- package/dist/web/_next/static/chunks/app/admin/page-fc676dae451dd646.js +0 -5
- package/dist/web/_next/static/chunks/app/admin/turn/page-2ab33033fc7f0919.js +0 -5
- package/dist/web/_next/static/chunks/app/download/page-a65d1c7fcf6397af.js +0 -1
- package/dist/web/_next/static/chunks/app/layout-f1429d22e935695f.js +0 -1
- package/dist/web/_next/static/chunks/app/login/page-a5dd37d1cbbb394e.js +0 -1
- package/dist/web/_next/static/chunks/app/workspace/browse/page-2ece09c883187d82.js +0 -1
- package/dist/web/_next/static/chunks/app/workspace/editor/page-2ece09c883187d82.js +0 -1
- package/dist/web/_next/static/chunks/app/workspace/files/page-2ece09c883187d82.js +0 -1
- package/dist/web/_next/static/chunks/app/workspace/git/page-2ece09c883187d82.js +0 -1
- package/dist/web/_next/static/chunks/app/workspace/layout-336820247249f65c.js +0 -20
- package/dist/web/_next/static/chunks/app/workspace/mobile/page-2ece09c883187d82.js +0 -1
- package/dist/web/_next/static/chunks/app/workspace/page-2ece09c883187d82.js +0 -1
- package/dist/web/_next/static/chunks/app/workspace/pair/page-2ece09c883187d82.js +0 -1
- package/dist/web/_next/static/chunks/app/workspace/remote/page-2ece09c883187d82.js +0 -1
- package/dist/web/_next/static/chunks/app/workspace/terminal/[sessionId]/page-2ece09c883187d82.js +0 -1
- package/dist/web/_next/static/chunks/app/workspace/welcome/page-2ece09c883187d82.js +0 -1
- package/dist/web/_next/static/chunks/app/workspace/workspaces/page-2ece09c883187d82.js +0 -1
- package/dist/web/_next/static/chunks/main-e10b0dbebb4de0a8.js +0 -5
- package/dist/web/_next/static/chunks/next/dist/client/components/builtin/app-error-2ece09c883187d82.js +0 -1
- package/dist/web/_next/static/chunks/next/dist/client/components/builtin/forbidden-2ece09c883187d82.js +0 -1
- package/dist/web/_next/static/chunks/next/dist/client/components/builtin/not-found-2ece09c883187d82.js +0 -1
- package/dist/web/_next/static/chunks/next/dist/client/components/builtin/unauthorized-2ece09c883187d82.js +0 -1
- package/dist/web/_next/static/css/7b03063e80720027.css +0 -1
- /package/dist/web/_next/static/{AhLhl9t958vI0woNHnp3P → u29HK3zWfDC3mM40skU_h}/_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
|
|
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.46"}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,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")}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.
|
|
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.46"}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(
|
|
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(`
|