9remote 3.0.25 → 3.0.27
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 +146 -113
- package/dist/server.cjs +206 -203
- package/dist/ui/assets/index-I2Ik1Uxe.js +8 -0
- package/dist/ui/index.html +1 -1
- package/dist/web/404.html +1 -1
- package/dist/web/__next.__PAGE__.txt +2 -2
- package/dist/web/__next._full.txt +3 -3
- package/dist/web/__next._head.txt +1 -1
- package/dist/web/__next._index.txt +2 -2
- package/dist/web/__next._tree.txt +2 -2
- package/dist/web/_next/static/chunks/0fb7b532.2e7a08a3edb2d789.js +14 -0
- package/dist/web/_next/static/chunks/1750.2278b084cb33e817.js +1 -0
- package/dist/web/_next/static/chunks/5788-f631bcbc039b4da2.js +1 -0
- package/dist/web/_next/static/chunks/6552-1ddf0600fddfd553.js +1 -0
- package/dist/web/_next/static/chunks/app/_global-error/page-1105b0cfd58cfb3c.js +1 -0
- package/dist/web/_next/static/chunks/app/login/{page-5a8b059b59f831f9.js → page-55e34ebc40a79798.js} +1 -1
- package/dist/web/_next/static/chunks/app/{page-bd6ebc0a436fea70.js → page-f0bf05d73d9e99d4.js} +2 -2
- package/dist/web/_next/static/chunks/app/workspace/browse/page-1105b0cfd58cfb3c.js +1 -0
- package/dist/web/_next/static/chunks/app/workspace/editor/page-1105b0cfd58cfb3c.js +1 -0
- package/dist/web/_next/static/chunks/app/workspace/files/page-1105b0cfd58cfb3c.js +1 -0
- package/dist/web/_next/static/chunks/app/workspace/git/page-1105b0cfd58cfb3c.js +1 -0
- package/dist/web/_next/static/chunks/app/workspace/layout-03eff77b255b25d6.js +15 -0
- package/dist/web/_next/static/chunks/app/workspace/mobile/page-1105b0cfd58cfb3c.js +1 -0
- package/dist/web/_next/static/chunks/app/workspace/page-1105b0cfd58cfb3c.js +1 -0
- package/dist/web/_next/static/chunks/app/workspace/remote/page-1105b0cfd58cfb3c.js +1 -0
- package/dist/web/_next/static/chunks/app/workspace/terminal/[sessionId]/page-1105b0cfd58cfb3c.js +1 -0
- package/dist/web/_next/static/chunks/app/workspace/workspaces/page-1105b0cfd58cfb3c.js +1 -0
- package/dist/web/_next/static/chunks/next/dist/client/components/builtin/app-error-1105b0cfd58cfb3c.js +1 -0
- package/dist/web/_next/static/chunks/next/dist/client/components/builtin/forbidden-1105b0cfd58cfb3c.js +1 -0
- package/dist/web/_next/static/chunks/next/dist/client/components/builtin/not-found-1105b0cfd58cfb3c.js +1 -0
- package/dist/web/_next/static/chunks/next/dist/client/components/builtin/unauthorized-1105b0cfd58cfb3c.js +1 -0
- package/dist/web/_next/static/chunks/webpack-6c9c0816af64073a.js +1 -0
- package/dist/web/_next/static/css/be666ba38225da3a.css +1 -0
- package/dist/web/_not-found/__next._full.txt +2 -2
- package/dist/web/_not-found/__next._head.txt +1 -1
- package/dist/web/_not-found/__next._index.txt +2 -2
- 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 +2 -2
- package/dist/web/admin/__next._full.txt +2 -2
- package/dist/web/admin/__next._head.txt +1 -1
- package/dist/web/admin/__next._index.txt +2 -2
- package/dist/web/admin/__next._tree.txt +2 -2
- package/dist/web/admin/__next.admin.__PAGE__.txt +1 -1
- package/dist/web/admin/__next.admin.txt +1 -1
- package/dist/web/admin/admins/__next._full.txt +2 -2
- package/dist/web/admin/admins/__next._head.txt +1 -1
- package/dist/web/admin/admins/__next._index.txt +2 -2
- package/dist/web/admin/admins/__next._tree.txt +2 -2
- package/dist/web/admin/admins/__next.admin.admins.__PAGE__.txt +1 -1
- package/dist/web/admin/admins/__next.admin.admins.txt +1 -1
- package/dist/web/admin/admins/__next.admin.txt +1 -1
- package/dist/web/admin/admins.html +1 -1
- package/dist/web/admin/admins.txt +2 -2
- package/dist/web/admin/login/__next._full.txt +2 -2
- package/dist/web/admin/login/__next._head.txt +1 -1
- package/dist/web/admin/login/__next._index.txt +2 -2
- package/dist/web/admin/login/__next._tree.txt +2 -2
- package/dist/web/admin/login/__next.admin.login.__PAGE__.txt +1 -1
- 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 +2 -2
- package/dist/web/admin/modes/__next._full.txt +2 -2
- package/dist/web/admin/modes/__next._head.txt +1 -1
- package/dist/web/admin/modes/__next._index.txt +2 -2
- package/dist/web/admin/modes/__next._tree.txt +2 -2
- package/dist/web/admin/modes/__next.admin.modes.__PAGE__.txt +1 -1
- package/dist/web/admin/modes/__next.admin.modes.txt +1 -1
- package/dist/web/admin/modes/__next.admin.txt +1 -1
- package/dist/web/admin/modes.html +1 -1
- package/dist/web/admin/modes.txt +2 -2
- package/dist/web/admin/ota/__next._full.txt +2 -2
- package/dist/web/admin/ota/__next._head.txt +1 -1
- package/dist/web/admin/ota/__next._index.txt +2 -2
- package/dist/web/admin/ota/__next._tree.txt +2 -2
- package/dist/web/admin/ota/__next.admin.ota.__PAGE__.txt +1 -1
- 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 +2 -2
- package/dist/web/admin/turn/__next._full.txt +2 -2
- package/dist/web/admin/turn/__next._head.txt +1 -1
- package/dist/web/admin/turn/__next._index.txt +2 -2
- package/dist/web/admin/turn/__next._tree.txt +2 -2
- package/dist/web/admin/turn/__next.admin.turn.__PAGE__.txt +1 -1
- 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 +2 -2
- package/dist/web/admin.html +1 -1
- package/dist/web/admin.txt +2 -2
- package/dist/web/dev/question/__next._full.txt +3 -3
- package/dist/web/dev/question/__next._head.txt +1 -1
- package/dist/web/dev/question/__next._index.txt +2 -2
- package/dist/web/dev/question/__next._tree.txt +2 -2
- package/dist/web/dev/question/__next.dev.question.__PAGE__.txt +2 -2
- package/dist/web/dev/question/__next.dev.question.txt +1 -1
- package/dist/web/dev/question/__next.dev.txt +1 -1
- package/dist/web/dev/question.html +1 -1
- package/dist/web/dev/question.txt +3 -3
- package/dist/web/index.html +1 -1
- package/dist/web/index.txt +3 -3
- package/dist/web/login/__next._full.txt +3 -3
- package/dist/web/login/__next._head.txt +1 -1
- package/dist/web/login/__next._index.txt +2 -2
- 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 +3 -3
- package/dist/web/workspace/__next._full.txt +3 -3
- package/dist/web/workspace/__next._head.txt +1 -1
- package/dist/web/workspace/__next._index.txt +2 -2
- package/dist/web/workspace/__next._tree.txt +2 -2
- package/dist/web/workspace/__next.workspace.__PAGE__.txt +1 -1
- package/dist/web/workspace/__next.workspace.txt +2 -2
- package/dist/web/workspace/browse/__next._full.txt +3 -3
- package/dist/web/workspace/browse/__next._head.txt +1 -1
- package/dist/web/workspace/browse/__next._index.txt +2 -2
- package/dist/web/workspace/browse/__next._tree.txt +2 -2
- 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 +2 -2
- package/dist/web/workspace/browse.html +1 -1
- package/dist/web/workspace/browse.txt +3 -3
- package/dist/web/workspace/editor/__next._full.txt +3 -3
- package/dist/web/workspace/editor/__next._head.txt +1 -1
- package/dist/web/workspace/editor/__next._index.txt +2 -2
- package/dist/web/workspace/editor/__next._tree.txt +2 -2
- 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 +2 -2
- package/dist/web/workspace/editor.html +1 -1
- package/dist/web/workspace/editor.txt +3 -3
- package/dist/web/workspace/files/__next._full.txt +3 -3
- package/dist/web/workspace/files/__next._head.txt +1 -1
- package/dist/web/workspace/files/__next._index.txt +2 -2
- package/dist/web/workspace/files/__next._tree.txt +2 -2
- 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 +2 -2
- package/dist/web/workspace/files.html +1 -1
- package/dist/web/workspace/files.txt +3 -3
- package/dist/web/workspace/git/__next._full.txt +3 -3
- package/dist/web/workspace/git/__next._head.txt +1 -1
- package/dist/web/workspace/git/__next._index.txt +2 -2
- package/dist/web/workspace/git/__next._tree.txt +2 -2
- 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 +2 -2
- package/dist/web/workspace/git.html +1 -1
- package/dist/web/workspace/git.txt +3 -3
- package/dist/web/workspace/mobile/__next._full.txt +3 -3
- package/dist/web/workspace/mobile/__next._head.txt +1 -1
- package/dist/web/workspace/mobile/__next._index.txt +2 -2
- package/dist/web/workspace/mobile/__next._tree.txt +2 -2
- 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 +2 -2
- package/dist/web/workspace/mobile.html +1 -1
- package/dist/web/workspace/mobile.txt +3 -3
- package/dist/web/workspace/remote/__next._full.txt +3 -3
- package/dist/web/workspace/remote/__next._head.txt +1 -1
- package/dist/web/workspace/remote/__next._index.txt +2 -2
- package/dist/web/workspace/remote/__next._tree.txt +2 -2
- 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 +2 -2
- package/dist/web/workspace/remote.html +1 -1
- package/dist/web/workspace/remote.txt +3 -3
- package/dist/web/workspace/terminal/default/__next._full.txt +3 -3
- package/dist/web/workspace/terminal/default/__next._head.txt +1 -1
- package/dist/web/workspace/terminal/default/__next._index.txt +2 -2
- package/dist/web/workspace/terminal/default/__next._tree.txt +2 -2
- 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 +2 -2
- package/dist/web/workspace/terminal/default.html +1 -1
- package/dist/web/workspace/terminal/default.txt +3 -3
- package/dist/web/workspace/workspaces/__next._full.txt +3 -3
- package/dist/web/workspace/workspaces/__next._head.txt +1 -1
- package/dist/web/workspace/workspaces/__next._index.txt +2 -2
- package/dist/web/workspace/workspaces/__next._tree.txt +2 -2
- package/dist/web/workspace/workspaces/__next.workspace.txt +2 -2
- 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 +3 -3
- package/dist/web/workspace.html +1 -1
- package/dist/web/workspace.txt +3 -3
- package/package.json +1 -1
- package/dist/ui/assets/index-BOOiLX1B.js +0 -8
- package/dist/web/_next/static/chunks/1750.0aa6aeecbaace8cb.js +0 -1
- package/dist/web/_next/static/chunks/5788-2151395b4db264e7.js +0 -1
- package/dist/web/_next/static/chunks/6552-26435ba7e21d8241.js +0 -1
- package/dist/web/_next/static/chunks/app/_global-error/page-5bd6526483106080.js +0 -1
- package/dist/web/_next/static/chunks/app/workspace/browse/page-5bd6526483106080.js +0 -1
- package/dist/web/_next/static/chunks/app/workspace/editor/page-5bd6526483106080.js +0 -1
- package/dist/web/_next/static/chunks/app/workspace/files/page-5bd6526483106080.js +0 -1
- package/dist/web/_next/static/chunks/app/workspace/git/page-5bd6526483106080.js +0 -1
- package/dist/web/_next/static/chunks/app/workspace/layout-4b7802a47d5a41d9.js +0 -14
- package/dist/web/_next/static/chunks/app/workspace/mobile/page-5bd6526483106080.js +0 -1
- package/dist/web/_next/static/chunks/app/workspace/page-5bd6526483106080.js +0 -1
- package/dist/web/_next/static/chunks/app/workspace/remote/page-5bd6526483106080.js +0 -1
- package/dist/web/_next/static/chunks/app/workspace/terminal/[sessionId]/page-5bd6526483106080.js +0 -1
- package/dist/web/_next/static/chunks/app/workspace/workspaces/page-5bd6526483106080.js +0 -1
- package/dist/web/_next/static/chunks/next/dist/client/components/builtin/app-error-5bd6526483106080.js +0 -1
- package/dist/web/_next/static/chunks/next/dist/client/components/builtin/forbidden-5bd6526483106080.js +0 -1
- package/dist/web/_next/static/chunks/next/dist/client/components/builtin/not-found-5bd6526483106080.js +0 -1
- package/dist/web/_next/static/chunks/next/dist/client/components/builtin/unauthorized-5bd6526483106080.js +0 -1
- package/dist/web/_next/static/chunks/webpack-34aa84f85d3087cb.js +0 -1
- package/dist/web/_next/static/css/99ebcb780b6d29f4.css +0 -1
- /package/dist/web/_next/static/{doBLJdxjaGN7ToTue-RM0 → ojB5LsquXLz4Tz9PU1iGl}/_buildManifest.js +0 -0
- /package/dist/web/_next/static/{doBLJdxjaGN7ToTue-RM0 → ojB5LsquXLz4Tz9PU1iGl}/_ssgManifest.js +0 -0
package/dist/cli.cjs
CHANGED
|
@@ -1,29 +1,54 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
const __importMetaUrl = require('url').pathToFileURL(__filename).href;
|
|
3
|
-
var
|
|
4
|
-
`)[0].replace(/\=|\s+|\"/gi,"").toLowerCase();case"win32":return A.toString().split("REG_SZ")[1].replace(/\r+|\n+|\s+/gi,"").toLowerCase();case"linux":return A.toString().replace(/\r+|\n+|\s+/gi,"").toLowerCase();case"freebsd":return A.toString().replace(/\r+|\n+|\s+/gi,"").toLowerCase();default:throw new Error("Unsupported platform: "+process.platform)}}function l(A){var k=c((0,d.execSync)(T[E]).toString());return A?k:a(k)}function u(A){return new p.default(function(k,C){return(0,d.exec)(T[E],{},function(g,b,L){if(g)return C(new Error("Error while obtaining machine id: "+g.stack));var $=c(b.toString());return k(A?$:a($))})})}Object.defineProperty(o,"__esModule",{value:!0});var f=n(35),p=i(f);o.machineIdSync=l,o.machineId=u;var d=n(70),h=n(71),w=process,E=w.platform,O={native:"%windir%\\System32",mixed:"%windir%\\sysnative\\cmd.exe /c %windir%\\System32"},T={darwin:"ioreg -rd1 -c IOPlatformExpertDevice",win32:O[s()]+"\\REG.exe QUERY HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Cryptography /v MachineGuid",linux:"( cat /var/lib/dbus/machine-id /etc/machine-id 2> /dev/null || hostname ) | head -n 1 || :",freebsd:"kenv -q smbios.system.uuid || sysctl -n kern.hostuuid"}},function(r,o,n){r.exports={default:n(36),__esModule:!0}},function(r,o,n){n(66),n(68),n(69),n(67),r.exports=n(6).Promise},function(r,o){r.exports=function(){}},function(r,o){r.exports=function(n,i,s,a){if(!(n instanceof i)||a!==void 0&&a in n)throw TypeError(s+": incorrect invocation!");return n}},function(r,o,n){var i=n(13),s=n(31),a=n(62);r.exports=function(c){return function(l,u,f){var p,d=i(l),h=s(d.length),w=a(f,h);if(c&&u!=u){for(;h>w;)if(p=d[w++],p!=p)return!0}else for(;h>w;w++)if((c||w in d)&&d[w]===u)return c||w||0;return!c&&-1}}},function(r,d,n){var i=n(7),s=n(44),a=n(43),c=n(3),l=n(31),u=n(64),f={},p={},d=r.exports=function(h,w,E,O,T){var A,k,C,g,b=T?function(){return h}:u(h),L=i(E,O,w?2:1),$=0;if(typeof b!="function")throw TypeError(h+" is not iterable!");if(a(b)){for(A=l(h.length);A>$;$++)if(g=w?L(c(k=h[$])[0],k[1]):L(h[$]),g===f||g===p)return g}else for(C=b.call(h);!(k=C.next()).done;)if(g=s(C,L,k.value,w),g===f||g===p)return g};d.BREAK=f,d.RETURN=p},function(r,o){r.exports=function(n,i,s){var a=s===void 0;switch(i.length){case 0:return a?n():n.call(s);case 1:return a?n(i[0]):n.call(s,i[0]);case 2:return a?n(i[0],i[1]):n.call(s,i[0],i[1]);case 3:return a?n(i[0],i[1],i[2]):n.call(s,i[0],i[1],i[2]);case 4:return a?n(i[0],i[1],i[2],i[3]):n.call(s,i[0],i[1],i[2],i[3])}return n.apply(s,i)}},function(r,o,n){var i=n(11);r.exports=Object("z").propertyIsEnumerable(0)?Object:function(s){return i(s)=="String"?s.split(""):Object(s)}},function(r,o,n){var i=n(10),s=n(1)("iterator"),a=Array.prototype;r.exports=function(c){return c!==void 0&&(i.Array===c||a[s]===c)}},function(r,o,n){var i=n(3);r.exports=function(s,a,c,l){try{return l?a(i(c)[0],c[1]):a(c)}catch(f){var u=s.return;throw u!==void 0&&i(u.call(s)),f}}},function(r,o,n){"use strict";var i=n(49),s=n(17),a=n(18),c={};n(5)(c,n(1)("iterator"),function(){return this}),r.exports=function(l,u,f){l.prototype=i(c,{next:s(1,f)}),a(l,u+" Iterator")}},function(r,o,n){var i=n(1)("iterator"),s=!1;try{var a=[7][i]();a.return=function(){s=!0},Array.from(a,function(){throw 2})}catch{}r.exports=function(c,l){if(!l&&!s)return!1;var u=!1;try{var f=[7],p=f[i]();p.next=function(){return{done:u=!0}},f[i]=function(){return p},c(f)}catch{}return u}},function(r,o){r.exports=function(n,i){return{value:i,done:!!n}}},function(r,o,n){var i=n(2),s=n(30).set,a=i.MutationObserver||i.WebKitMutationObserver,c=i.process,l=i.Promise,u=n(11)(c)=="process";r.exports=function(){var f,p,d,h=function(){var T,A;for(u&&(T=c.domain)&&T.exit();f;){A=f.fn,f=f.next;try{A()}catch(k){throw f?d():p=void 0,k}}p=void 0,T&&T.enter()};if(u)d=function(){c.nextTick(h)};else if(a){var w=!0,E=document.createTextNode("");new a(h).observe(E,{characterData:!0}),d=function(){E.data=w=!w}}else if(l&&l.resolve){var O=l.resolve();d=function(){O.then(h)}}else d=function(){s.call(i,h)};return function(T){var A={fn:T,next:void 0};p&&(p.next=A),f||(f=A,d()),p=A}}},function(r,o,n){var i=n(3),s=n(50),a=n(22),c=n(19)("IE_PROTO"),l=function(){},u="prototype",f=function(){var p,d=n(16)("iframe"),h=a.length,w=">";for(d.style.display="none",n(25).appendChild(d),d.src="javascript:",p=d.contentWindow.document,p.open(),p.write("<script>document.F=Object</script"+w),p.close(),f=p.F;h--;)delete f[u][a[h]];return f()};r.exports=Object.create||function(p,d){var h;return p!==null?(l[u]=i(p),h=new l,l[u]=null,h[c]=p):h=f(),d===void 0?h:s(h,d)}},function(r,o,n){var i=n(12),s=n(3),a=n(54);r.exports=n(4)?Object.defineProperties:function(c,l){s(c);for(var u,f=a(l),p=f.length,d=0;p>d;)i.f(c,u=f[d++],l[u]);return c}},function(r,o,n){var i=n(55),s=n(17),a=n(13),c=n(32),l=n(8),u=n(26),f=Object.getOwnPropertyDescriptor;o.f=n(4)?f:function(p,d){if(p=a(p),d=c(d,!0),u)try{return f(p,d)}catch{}if(l(p,d))return s(!i.f.call(p,d),p[d])}},function(r,o,n){var i=n(8),s=n(63),a=n(19)("IE_PROTO"),c=Object.prototype;r.exports=Object.getPrototypeOf||function(l){return l=s(l),i(l,a)?l[a]:typeof l.constructor=="function"&&l instanceof l.constructor?l.constructor.prototype:l instanceof Object?c:null}},function(r,o,n){var i=n(8),s=n(13),a=n(39)(!1),c=n(19)("IE_PROTO");r.exports=function(l,u){var f,p=s(l),d=0,h=[];for(f in p)f!=c&&i(p,f)&&h.push(f);for(;u.length>d;)i(p,f=u[d++])&&(~a(h,f)||h.push(f));return h}},function(r,o,n){var i=n(53),s=n(22);r.exports=Object.keys||function(a){return i(a,s)}},function(r,o){o.f={}.propertyIsEnumerable},function(r,o,n){var i=n(5);r.exports=function(s,a,c){for(var l in a)c&&s[l]?s[l]=a[l]:i(s,l,a[l]);return s}},function(r,o,n){r.exports=n(5)},function(r,o,n){var i=n(9),s=n(3),a=function(c,l){if(s(c),!i(l)&&l!==null)throw TypeError(l+": can't set as prototype!")};r.exports={set:Object.setPrototypeOf||("__proto__"in{}?(function(c,l,u){try{u=n(7)(Function.call,n(51).f(Object.prototype,"__proto__").set,2),u(c,[]),l=!(c instanceof Array)}catch{l=!0}return function(f,p){return a(f,p),l?f.__proto__=p:u(f,p),f}})({},!1):void 0),check:a}},function(r,o,n){"use strict";var i=n(2),s=n(6),a=n(12),c=n(4),l=n(1)("species");r.exports=function(u){var f=typeof s[u]=="function"?s[u]:i[u];c&&f&&!f[l]&&a.f(f,l,{configurable:!0,get:function(){return this}})}},function(r,o,n){var i=n(3),s=n(14),a=n(1)("species");r.exports=function(c,l){var u,f=i(c).constructor;return f===void 0||(u=i(f)[a])==null?l:s(u)}},function(r,o,n){var i=n(20),s=n(15);r.exports=function(a){return function(c,l){var u,f,p=String(s(c)),d=i(l),h=p.length;return d<0||d>=h?a?"":void 0:(u=p.charCodeAt(d),u<55296||u>56319||d+1===h||(f=p.charCodeAt(d+1))<56320||f>57343?a?p.charAt(d):u:a?p.slice(d,d+2):(u-55296<<10)+(f-56320)+65536)}}},function(r,o,n){var i=n(20),s=Math.max,a=Math.min;r.exports=function(c,l){return c=i(c),c<0?s(c+l,0):a(c,l)}},function(r,o,n){var i=n(15);r.exports=function(s){return Object(i(s))}},function(r,o,n){var i=n(21),s=n(1)("iterator"),a=n(10);r.exports=n(6).getIteratorMethod=function(c){if(c!=null)return c[s]||c["@@iterator"]||a[i(c)]}},function(r,o,n){"use strict";var i=n(37),s=n(47),a=n(10),c=n(13);r.exports=n(27)(Array,"Array",function(l,u){this._t=c(l),this._i=0,this._k=u},function(){var l=this._t,u=this._k,f=this._i++;return!l||f>=l.length?(this._t=void 0,s(1)):u=="keys"?s(0,f):u=="values"?s(0,l[f]):s(0,[f,l[f]])},"values"),a.Arguments=a.Array,i("keys"),i("values"),i("entries")},function(r,o){},function(r,o,n){"use strict";var i,s,a,c=n(28),l=n(2),u=n(7),f=n(21),p=n(23),d=n(9),h=(n(3),n(14)),w=n(38),E=n(40),O=(n(58).set,n(60)),T=n(30).set,A=n(48)(),k="Promise",C=l.TypeError,b=l.process,g=l[k],b=l.process,L=f(b)=="process",$=function(){},Y=!!(function(){try{var y=g.resolve(1),v=(y.constructor={})[n(1)("species")]=function(x){x($,$)};return(L||typeof PromiseRejectionEvent=="function")&&y.then($)instanceof v}catch{}})(),se=function(y,v){return y===v||y===g&&v===a},Ee=function(y){var v;return!(!d(y)||typeof(v=y.then)!="function")&&v},ae=function(y){return se(g,y)?new Be(y):new s(y)},Be=s=function(y){var v,x;this.promise=new y(function(D,ee){if(v!==void 0||x!==void 0)throw C("Bad Promise constructor");v=D,x=ee}),this.resolve=h(v),this.reject=h(x)},Nt=function(y){try{y()}catch(v){return{error:v}}},wt=function(y,v){if(!y._n){y._n=!0;var x=y._c;A(function(){for(var D=y._v,ee=y._s==1,vt=0,Dt=function(tt){var Re,ar,An=ee?tt.ok:tt.fail,xn=tt.resolve,Bt=tt.reject,cr=tt.domain;try{An?(ee||(y._h==2&&et(y),y._h=1),An===!0?Re=D:(cr&&cr.enter(),Re=An(D),cr&&cr.exit()),Re===tt.promise?Bt(C("Promise-chain cycle")):(ar=Ee(Re))?ar.call(Re,xn,Bt):xn(Re)):Bt(D)}catch(Ya){Bt(Ya)}};x.length>vt;)Dt(x[vt++]);y._c=[],y._n=!1,v&&!y._h&&Tn(y)})}},Tn=function(y){T.call(l,function(){var v,x,D,ee=y._v;if(ce(y)&&(v=Nt(function(){L?b.emit("unhandledRejection",ee,y):(x=l.onunhandledrejection)?x({promise:y,reason:ee}):(D=l.console)&&D.error&&D.error("Unhandled promise rejection",ee)}),y._h=L||ce(y)?2:1),y._a=void 0,v)throw v.error})},ce=function(y){if(y._h==1)return!1;for(var v,x=y._a||y._c,D=0;x.length>D;)if(v=x[D++],v.fail||!ce(v.promise))return!1;return!0},et=function(y){T.call(l,function(){var v;L?b.emit("rejectionHandled",y):(v=l.onrejectionhandled)&&v({promise:y,reason:y._v})})},pe=function(y){var v=this;v._d||(v._d=!0,v=v._w||v,v._v=y,v._s=2,v._a||(v._a=v._c.slice()),wt(v,!0))},bn=function(y){var v,x=this;if(!x._d){x._d=!0,x=x._w||x;try{if(x===y)throw C("Promise can't be resolved itself");(v=Ee(y))?A(function(){var D={_w:x,_d:!1};try{v.call(y,u(bn,D,1),u(pe,D,1))}catch(ee){pe.call(D,ee)}}):(x._v=y,x._s=1,wt(x,!1))}catch(D){pe.call({_w:x,_d:!1},D)}}};Y||(g=function(y){w(this,g,k,"_h"),h(y),i.call(this);try{y(u(bn,this,1),u(pe,this,1))}catch(v){pe.call(this,v)}},i=function(y){this._c=[],this._a=void 0,this._s=0,this._d=!1,this._v=void 0,this._h=0,this._n=!1},i.prototype=n(56)(g.prototype,{then:function(y,v){var x=ae(O(this,g));return x.ok=typeof y!="function"||y,x.fail=typeof v=="function"&&v,x.domain=L?b.domain:void 0,this._c.push(x),this._a&&this._a.push(x),this._s&&wt(this,!1),x.promise},catch:function(y){return this.then(void 0,y)}}),Be=function(){var y=new i;this.promise=y,this.resolve=u(bn,y,1),this.reject=u(pe,y,1)}),p(p.G+p.W+p.F*!Y,{Promise:g}),n(18)(g,k),n(59)(k),a=n(6)[k],p(p.S+p.F*!Y,k,{reject:function(y){var v=ae(this),x=v.reject;return x(y),v.promise}}),p(p.S+p.F*(c||!Y),k,{resolve:function(y){if(y instanceof g&&se(y.constructor,this))return y;var v=ae(this),x=v.resolve;return x(y),v.promise}}),p(p.S+p.F*!(Y&&n(46)(function(y){g.all(y).catch($)})),k,{all:function(y){var v=this,x=ae(v),D=x.resolve,ee=x.reject,vt=Nt(function(){var Dt=[],tt=0,Re=1;E(y,!1,function(ar){var An=tt++,xn=!1;Dt.push(void 0),Re++,v.resolve(ar).then(function(Bt){xn||(xn=!0,Dt[An]=Bt,--Re||D(Dt))},ee)}),--Re||D(Dt)});return vt&&ee(vt.error),x.promise},race:function(y){var v=this,x=ae(v),D=x.reject,ee=Nt(function(){E(y,!1,function(vt){v.resolve(vt).then(x.resolve,D)})});return ee&&D(ee.error),x.promise}})},function(r,o,n){"use strict";var i=n(61)(!0);n(27)(String,"String",function(s){this._t=String(s),this._i=0},function(){var s,a=this._t,c=this._i;return c>=a.length?{value:void 0,done:!0}:(s=i(a,c),this._i+=s.length,{value:s,done:!1})})},function(r,o,n){n(65);for(var i=n(2),s=n(5),a=n(10),c=n(1)("toStringTag"),l=["NodeList","DOMTokenList","MediaList","StyleSheetList","CSSRuleList"],u=0;u<5;u++){var f=l[u],p=i[f],d=p&&p.prototype;d&&!d[c]&&s(d,c,f),a[f]=a.Array}},function(r,o){r.exports=require("child_process")},function(r,o){r.exports=require("crypto")}])})});var Xs={};ec(Xs,{initTray:()=>zn,killTray:()=>kt,openBrowser:()=>Pt,showTrayNotification:()=>_o,updateTrayTooltip:()=>mn});function Fs(e){for(let t of e)try{if(pn.default.existsSync(t))return t}catch{}return null}function Ml(){if(process.platform==="win32"){for(let e of Gs)try{if(pn.default.existsSync(e))return pn.default.readFileSync(e).toString("base64")}catch{}return Us}return Us}function Cl(){if(process.env.NREMOTE_DESKTOP)return!1;let e=process.platform;return!(!["darwin","win32","linux"].includes(e)||e==="linux"&&!process.env.DISPLAY)}function Vs(){let{port:e,tunnelUrl:t,running:r}=dn,o=r?t?"Tunnel ON":"Local only":"Idle",n=`http://localhost:${e}`;return`9Remote \u2022 ${o}
|
|
3
|
+
var Qa=Object.create;var Yr=Object.defineProperty;var Ja=Object.getOwnPropertyDescriptor;var Za=Object.getOwnPropertyNames;var za=Object.getPrototypeOf,ec=Object.prototype.hasOwnProperty;var tc=(e,t)=>()=>(e&&(t=e(e=0)),t);var ge=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),nc=(e,t)=>{for(var r in t)Yr(e,r,{get:t[r],enumerable:!0})},rc=(e,t,r,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of Za(t))!ec.call(e,n)&&n!==r&&Yr(e,n,{get:()=>t[n],enumerable:!(o=Ja(t,n))||o.enumerable});return e};var R=(e,t,r)=>(r=e!=null?Qa(za(e)):{},rc(t||!e||!e.__esModule?Yr(r,"default",{value:e,enumerable:!0}):r,e));var ci=ge((Ln,Qr)=>{(function(e,t){typeof Ln=="object"&&typeof Qr=="object"?Qr.exports=t(require("child_process"),require("crypto")):typeof define=="function"&&define.amd?define(["child_process","crypto"],t):typeof Ln=="object"?Ln["electron-machine-id"]=t(require("child_process"),require("crypto")):e["electron-machine-id"]=t(e.child_process,e.crypto)})(Ln,function(e,t){return(function(r){function o(i){if(n[i])return n[i].exports;var s=n[i]={exports:{},id:i,loaded:!1};return r[i].call(s.exports,s,s.exports,o),s.loaded=!0,s.exports}var n={};return o.m=r,o.c=n,o.p="",o(0)})([function(r,o,n){r.exports=n(34)},function(r,o,n){var i=n(29)("wks"),s=n(33),a=n(2).Symbol,c=typeof a=="function",l=r.exports=function(u){return i[u]||(i[u]=c&&a[u]||(c?a:s)("Symbol."+u))};l.store=i},function(r,o){var n=r.exports=typeof window<"u"&&window.Math==Math?window:typeof self<"u"&&self.Math==Math?self:Function("return this")();typeof __g=="number"&&(__g=n)},function(r,o,n){var i=n(9);r.exports=function(s){if(!i(s))throw TypeError(s+" is not an object!");return s}},function(r,o,n){r.exports=!n(24)(function(){return Object.defineProperty({},"a",{get:function(){return 7}}).a!=7})},function(r,o,n){var i=n(12),s=n(17);r.exports=n(4)?function(a,c,l){return i.f(a,c,s(1,l))}:function(a,c,l){return a[c]=l,a}},function(r,o){var n=r.exports={version:"2.4.0"};typeof __e=="number"&&(__e=n)},function(r,o,n){var i=n(14);r.exports=function(s,a,c){if(i(s),a===void 0)return s;switch(c){case 1:return function(l){return s.call(a,l)};case 2:return function(l,u){return s.call(a,l,u)};case 3:return function(l,u,f){return s.call(a,l,u,f)}}return function(){return s.apply(a,arguments)}}},function(r,o){var n={}.hasOwnProperty;r.exports=function(i,s){return n.call(i,s)}},function(r,o){r.exports=function(n){return typeof n=="object"?n!==null:typeof n=="function"}},function(r,o){r.exports={}},function(r,o){var n={}.toString;r.exports=function(i){return n.call(i).slice(8,-1)}},function(r,o,n){var i=n(3),s=n(26),a=n(32),c=Object.defineProperty;o.f=n(4)?Object.defineProperty:function(l,u,f){if(i(l),u=a(u,!0),i(f),s)try{return c(l,u,f)}catch{}if("get"in f||"set"in f)throw TypeError("Accessors not supported!");return"value"in f&&(l[u]=f.value),l}},function(r,o,n){var i=n(42),s=n(15);r.exports=function(a){return i(s(a))}},function(r,o){r.exports=function(n){if(typeof n!="function")throw TypeError(n+" is not a function!");return n}},function(r,o){r.exports=function(n){if(n==null)throw TypeError("Can't call method on "+n);return n}},function(r,o,n){var i=n(9),s=n(2).document,a=i(s)&&i(s.createElement);r.exports=function(c){return a?s.createElement(c):{}}},function(r,o){r.exports=function(n,i){return{enumerable:!(1&n),configurable:!(2&n),writable:!(4&n),value:i}}},function(r,o,n){var i=n(12).f,s=n(8),a=n(1)("toStringTag");r.exports=function(c,l,u){c&&!s(c=u?c:c.prototype,a)&&i(c,a,{configurable:!0,value:l})}},function(r,o,n){var i=n(29)("keys"),s=n(33);r.exports=function(a){return i[a]||(i[a]=s(a))}},function(r,o){var n=Math.ceil,i=Math.floor;r.exports=function(s){return isNaN(s=+s)?0:(s>0?i:n)(s)}},function(r,o,n){var i=n(11),s=n(1)("toStringTag"),a=i((function(){return arguments})())=="Arguments",c=function(l,u){try{return l[u]}catch{}};r.exports=function(l){var u,f,p;return l===void 0?"Undefined":l===null?"Null":typeof(f=c(u=Object(l),s))=="string"?f:a?i(u):(p=i(u))=="Object"&&typeof u.callee=="function"?"Arguments":p}},function(r,o){r.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(r,o,n){var i=n(2),s=n(6),a=n(7),c=n(5),l="prototype",u=function(f,p,d){var h,w,E,O=f&u.F,T=f&u.G,A=f&u.S,k=f&u.P,C=f&u.B,g=f&u.W,b=T?s:s[p]||(s[p]={}),_=b[l],$=T?i:A?i[p]:(i[p]||{})[l];T&&(d=p);for(h in d)w=!O&&$&&$[h]!==void 0,w&&h in b||(E=w?$[h]:d[h],b[h]=T&&typeof $[h]!="function"?d[h]:C&&w?a(E,i):g&&$[h]==E?(function(X){var ae=function(Ee,ce,Be){if(this instanceof X){switch(arguments.length){case 0:return new X;case 1:return new X(Ee);case 2:return new X(Ee,ce)}return new X(Ee,ce,Be)}return X.apply(this,arguments)};return ae[l]=X[l],ae})(E):k&&typeof E=="function"?a(Function.call,E):E,k&&((b.virtual||(b.virtual={}))[h]=E,f&u.R&&_&&!_[h]&&c(_,h,E)))};u.F=1,u.G=2,u.S=4,u.P=8,u.B=16,u.W=32,u.U=64,u.R=128,r.exports=u},function(r,o){r.exports=function(n){try{return!!n()}catch{return!0}}},function(r,o,n){r.exports=n(2).document&&document.documentElement},function(r,o,n){r.exports=!n(4)&&!n(24)(function(){return Object.defineProperty(n(16)("div"),"a",{get:function(){return 7}}).a!=7})},function(r,o,n){"use strict";var i=n(28),s=n(23),a=n(57),c=n(5),l=n(8),u=n(10),f=n(45),p=n(18),d=n(52),h=n(1)("iterator"),w=!([].keys&&"next"in[].keys()),E="@@iterator",O="keys",T="values",A=function(){return this};r.exports=function(k,C,g,b,_,$,X){f(g,C,b);var ae,Ee,ce,Be=function(v){if(!w&&v in le)return le[v];switch(v){case O:return function(){return new g(this,v)};case T:return function(){return new g(this,v)}}return function(){return new g(this,v)}},Kt=C+" Iterator",vt=_==T,An=!1,le=k.prototype,tt=le[h]||le[E]||_&&le[_],pe=tt||Be(_),xn=_?vt?Be("entries"):pe:void 0,y=C=="Array"&&le.entries||tt;if(y&&(ce=d(y.call(new k)),ce!==Object.prototype&&(p(ce,Kt,!0),i||l(ce,h)||c(ce,h,A))),vt&&tt&&tt.name!==T&&(An=!0,pe=function(){return tt.call(this)}),i&&!X||!w&&!An&&le[h]||c(le,h,pe),u[C]=pe,u[Kt]=A,_)if(ae={values:vt?pe:Be(T),keys:$?pe:Be(O),entries:xn},X)for(Ee in ae)Ee in le||a(le,Ee,ae[Ee]);else s(s.P+s.F*(w||An),C,ae);return ae}},function(r,o){r.exports=!0},function(r,o,n){var i=n(2),s="__core-js_shared__",a=i[s]||(i[s]={});r.exports=function(c){return a[c]||(a[c]={})}},function(r,o,n){var i,s,a,c=n(7),l=n(41),u=n(25),f=n(16),p=n(2),d=p.process,h=p.setImmediate,w=p.clearImmediate,E=p.MessageChannel,O=0,T={},A="onreadystatechange",k=function(){var g=+this;if(T.hasOwnProperty(g)){var b=T[g];delete T[g],b()}},C=function(g){k.call(g.data)};h&&w||(h=function(g){for(var b=[],_=1;arguments.length>_;)b.push(arguments[_++]);return T[++O]=function(){l(typeof g=="function"?g:Function(g),b)},i(O),O},w=function(g){delete T[g]},n(11)(d)=="process"?i=function(g){d.nextTick(c(k,g,1))}:E?(s=new E,a=s.port2,s.port1.onmessage=C,i=c(a.postMessage,a,1)):p.addEventListener&&typeof postMessage=="function"&&!p.importScripts?(i=function(g){p.postMessage(g+"","*")},p.addEventListener("message",C,!1)):i=A in f("script")?function(g){u.appendChild(f("script"))[A]=function(){u.removeChild(this),k.call(g)}}:function(g){setTimeout(c(k,g,1),0)}),r.exports={set:h,clear:w}},function(r,o,n){var i=n(20),s=Math.min;r.exports=function(a){return a>0?s(i(a),9007199254740991):0}},function(r,o,n){var i=n(9);r.exports=function(s,a){if(!i(s))return s;var c,l;if(a&&typeof(c=s.toString)=="function"&&!i(l=c.call(s))||typeof(c=s.valueOf)=="function"&&!i(l=c.call(s))||!a&&typeof(c=s.toString)=="function"&&!i(l=c.call(s)))return l;throw TypeError("Can't convert object to primitive value")}},function(r,o){var n=0,i=Math.random();r.exports=function(s){return"Symbol(".concat(s===void 0?"":s,")_",(++n+i).toString(36))}},function(r,o,n){"use strict";function i(A){return A&&A.__esModule?A:{default:A}}function s(){return process.platform!=="win32"?"":process.arch==="ia32"&&process.env.hasOwnProperty("PROCESSOR_ARCHITEW6432")?"mixed":"native"}function a(A){return(0,h.createHash)("sha256").update(A).digest("hex")}function c(A){switch(E){case"darwin":return A.split("IOPlatformUUID")[1].split(`
|
|
4
|
+
`)[0].replace(/\=|\s+|\"/gi,"").toLowerCase();case"win32":return A.toString().split("REG_SZ")[1].replace(/\r+|\n+|\s+/gi,"").toLowerCase();case"linux":return A.toString().replace(/\r+|\n+|\s+/gi,"").toLowerCase();case"freebsd":return A.toString().replace(/\r+|\n+|\s+/gi,"").toLowerCase();default:throw new Error("Unsupported platform: "+process.platform)}}function l(A){var k=c((0,d.execSync)(T[E]).toString());return A?k:a(k)}function u(A){return new p.default(function(k,C){return(0,d.exec)(T[E],{},function(g,b,_){if(g)return C(new Error("Error while obtaining machine id: "+g.stack));var $=c(b.toString());return k(A?$:a($))})})}Object.defineProperty(o,"__esModule",{value:!0});var f=n(35),p=i(f);o.machineIdSync=l,o.machineId=u;var d=n(70),h=n(71),w=process,E=w.platform,O={native:"%windir%\\System32",mixed:"%windir%\\sysnative\\cmd.exe /c %windir%\\System32"},T={darwin:"ioreg -rd1 -c IOPlatformExpertDevice",win32:O[s()]+"\\REG.exe QUERY HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Cryptography /v MachineGuid",linux:"( cat /var/lib/dbus/machine-id /etc/machine-id 2> /dev/null || hostname ) | head -n 1 || :",freebsd:"kenv -q smbios.system.uuid || sysctl -n kern.hostuuid"}},function(r,o,n){r.exports={default:n(36),__esModule:!0}},function(r,o,n){n(66),n(68),n(69),n(67),r.exports=n(6).Promise},function(r,o){r.exports=function(){}},function(r,o){r.exports=function(n,i,s,a){if(!(n instanceof i)||a!==void 0&&a in n)throw TypeError(s+": incorrect invocation!");return n}},function(r,o,n){var i=n(13),s=n(31),a=n(62);r.exports=function(c){return function(l,u,f){var p,d=i(l),h=s(d.length),w=a(f,h);if(c&&u!=u){for(;h>w;)if(p=d[w++],p!=p)return!0}else for(;h>w;w++)if((c||w in d)&&d[w]===u)return c||w||0;return!c&&-1}}},function(r,d,n){var i=n(7),s=n(44),a=n(43),c=n(3),l=n(31),u=n(64),f={},p={},d=r.exports=function(h,w,E,O,T){var A,k,C,g,b=T?function(){return h}:u(h),_=i(E,O,w?2:1),$=0;if(typeof b!="function")throw TypeError(h+" is not iterable!");if(a(b)){for(A=l(h.length);A>$;$++)if(g=w?_(c(k=h[$])[0],k[1]):_(h[$]),g===f||g===p)return g}else for(C=b.call(h);!(k=C.next()).done;)if(g=s(C,_,k.value,w),g===f||g===p)return g};d.BREAK=f,d.RETURN=p},function(r,o){r.exports=function(n,i,s){var a=s===void 0;switch(i.length){case 0:return a?n():n.call(s);case 1:return a?n(i[0]):n.call(s,i[0]);case 2:return a?n(i[0],i[1]):n.call(s,i[0],i[1]);case 3:return a?n(i[0],i[1],i[2]):n.call(s,i[0],i[1],i[2]);case 4:return a?n(i[0],i[1],i[2],i[3]):n.call(s,i[0],i[1],i[2],i[3])}return n.apply(s,i)}},function(r,o,n){var i=n(11);r.exports=Object("z").propertyIsEnumerable(0)?Object:function(s){return i(s)=="String"?s.split(""):Object(s)}},function(r,o,n){var i=n(10),s=n(1)("iterator"),a=Array.prototype;r.exports=function(c){return c!==void 0&&(i.Array===c||a[s]===c)}},function(r,o,n){var i=n(3);r.exports=function(s,a,c,l){try{return l?a(i(c)[0],c[1]):a(c)}catch(f){var u=s.return;throw u!==void 0&&i(u.call(s)),f}}},function(r,o,n){"use strict";var i=n(49),s=n(17),a=n(18),c={};n(5)(c,n(1)("iterator"),function(){return this}),r.exports=function(l,u,f){l.prototype=i(c,{next:s(1,f)}),a(l,u+" Iterator")}},function(r,o,n){var i=n(1)("iterator"),s=!1;try{var a=[7][i]();a.return=function(){s=!0},Array.from(a,function(){throw 2})}catch{}r.exports=function(c,l){if(!l&&!s)return!1;var u=!1;try{var f=[7],p=f[i]();p.next=function(){return{done:u=!0}},f[i]=function(){return p},c(f)}catch{}return u}},function(r,o){r.exports=function(n,i){return{value:i,done:!!n}}},function(r,o,n){var i=n(2),s=n(30).set,a=i.MutationObserver||i.WebKitMutationObserver,c=i.process,l=i.Promise,u=n(11)(c)=="process";r.exports=function(){var f,p,d,h=function(){var T,A;for(u&&(T=c.domain)&&T.exit();f;){A=f.fn,f=f.next;try{A()}catch(k){throw f?d():p=void 0,k}}p=void 0,T&&T.enter()};if(u)d=function(){c.nextTick(h)};else if(a){var w=!0,E=document.createTextNode("");new a(h).observe(E,{characterData:!0}),d=function(){E.data=w=!w}}else if(l&&l.resolve){var O=l.resolve();d=function(){O.then(h)}}else d=function(){s.call(i,h)};return function(T){var A={fn:T,next:void 0};p&&(p.next=A),f||(f=A,d()),p=A}}},function(r,o,n){var i=n(3),s=n(50),a=n(22),c=n(19)("IE_PROTO"),l=function(){},u="prototype",f=function(){var p,d=n(16)("iframe"),h=a.length,w=">";for(d.style.display="none",n(25).appendChild(d),d.src="javascript:",p=d.contentWindow.document,p.open(),p.write("<script>document.F=Object</script"+w),p.close(),f=p.F;h--;)delete f[u][a[h]];return f()};r.exports=Object.create||function(p,d){var h;return p!==null?(l[u]=i(p),h=new l,l[u]=null,h[c]=p):h=f(),d===void 0?h:s(h,d)}},function(r,o,n){var i=n(12),s=n(3),a=n(54);r.exports=n(4)?Object.defineProperties:function(c,l){s(c);for(var u,f=a(l),p=f.length,d=0;p>d;)i.f(c,u=f[d++],l[u]);return c}},function(r,o,n){var i=n(55),s=n(17),a=n(13),c=n(32),l=n(8),u=n(26),f=Object.getOwnPropertyDescriptor;o.f=n(4)?f:function(p,d){if(p=a(p),d=c(d,!0),u)try{return f(p,d)}catch{}if(l(p,d))return s(!i.f.call(p,d),p[d])}},function(r,o,n){var i=n(8),s=n(63),a=n(19)("IE_PROTO"),c=Object.prototype;r.exports=Object.getPrototypeOf||function(l){return l=s(l),i(l,a)?l[a]:typeof l.constructor=="function"&&l instanceof l.constructor?l.constructor.prototype:l instanceof Object?c:null}},function(r,o,n){var i=n(8),s=n(13),a=n(39)(!1),c=n(19)("IE_PROTO");r.exports=function(l,u){var f,p=s(l),d=0,h=[];for(f in p)f!=c&&i(p,f)&&h.push(f);for(;u.length>d;)i(p,f=u[d++])&&(~a(h,f)||h.push(f));return h}},function(r,o,n){var i=n(53),s=n(22);r.exports=Object.keys||function(a){return i(a,s)}},function(r,o){o.f={}.propertyIsEnumerable},function(r,o,n){var i=n(5);r.exports=function(s,a,c){for(var l in a)c&&s[l]?s[l]=a[l]:i(s,l,a[l]);return s}},function(r,o,n){r.exports=n(5)},function(r,o,n){var i=n(9),s=n(3),a=function(c,l){if(s(c),!i(l)&&l!==null)throw TypeError(l+": can't set as prototype!")};r.exports={set:Object.setPrototypeOf||("__proto__"in{}?(function(c,l,u){try{u=n(7)(Function.call,n(51).f(Object.prototype,"__proto__").set,2),u(c,[]),l=!(c instanceof Array)}catch{l=!0}return function(f,p){return a(f,p),l?f.__proto__=p:u(f,p),f}})({},!1):void 0),check:a}},function(r,o,n){"use strict";var i=n(2),s=n(6),a=n(12),c=n(4),l=n(1)("species");r.exports=function(u){var f=typeof s[u]=="function"?s[u]:i[u];c&&f&&!f[l]&&a.f(f,l,{configurable:!0,get:function(){return this}})}},function(r,o,n){var i=n(3),s=n(14),a=n(1)("species");r.exports=function(c,l){var u,f=i(c).constructor;return f===void 0||(u=i(f)[a])==null?l:s(u)}},function(r,o,n){var i=n(20),s=n(15);r.exports=function(a){return function(c,l){var u,f,p=String(s(c)),d=i(l),h=p.length;return d<0||d>=h?a?"":void 0:(u=p.charCodeAt(d),u<55296||u>56319||d+1===h||(f=p.charCodeAt(d+1))<56320||f>57343?a?p.charAt(d):u:a?p.slice(d,d+2):(u-55296<<10)+(f-56320)+65536)}}},function(r,o,n){var i=n(20),s=Math.max,a=Math.min;r.exports=function(c,l){return c=i(c),c<0?s(c+l,0):a(c,l)}},function(r,o,n){var i=n(15);r.exports=function(s){return Object(i(s))}},function(r,o,n){var i=n(21),s=n(1)("iterator"),a=n(10);r.exports=n(6).getIteratorMethod=function(c){if(c!=null)return c[s]||c["@@iterator"]||a[i(c)]}},function(r,o,n){"use strict";var i=n(37),s=n(47),a=n(10),c=n(13);r.exports=n(27)(Array,"Array",function(l,u){this._t=c(l),this._i=0,this._k=u},function(){var l=this._t,u=this._k,f=this._i++;return!l||f>=l.length?(this._t=void 0,s(1)):u=="keys"?s(0,f):u=="values"?s(0,l[f]):s(0,[f,l[f]])},"values"),a.Arguments=a.Array,i("keys"),i("values"),i("entries")},function(r,o){},function(r,o,n){"use strict";var i,s,a,c=n(28),l=n(2),u=n(7),f=n(21),p=n(23),d=n(9),h=(n(3),n(14)),w=n(38),E=n(40),O=(n(58).set,n(60)),T=n(30).set,A=n(48)(),k="Promise",C=l.TypeError,b=l.process,g=l[k],b=l.process,_=f(b)=="process",$=function(){},X=!!(function(){try{var y=g.resolve(1),v=(y.constructor={})[n(1)("species")]=function(x){x($,$)};return(_||typeof PromiseRejectionEvent=="function")&&y.then($)instanceof v}catch{}})(),ae=function(y,v){return y===v||y===g&&v===a},Ee=function(y){var v;return!(!d(y)||typeof(v=y.then)!="function")&&v},ce=function(y){return ae(g,y)?new Be(y):new s(y)},Be=s=function(y){var v,x;this.promise=new y(function(D,te){if(v!==void 0||x!==void 0)throw C("Bad Promise constructor");v=D,x=te}),this.resolve=h(v),this.reject=h(x)},Kt=function(y){try{y()}catch(v){return{error:v}}},vt=function(y,v){if(!y._n){y._n=!0;var x=y._c;A(function(){for(var D=y._v,te=y._s==1,Et=0,Ht=function(nt){var ke,lr,Rn=te?nt.ok:nt.fail,kn=nt.resolve,Wt=nt.reject,ur=nt.domain;try{Rn?(te||(y._h==2&&tt(y),y._h=1),Rn===!0?ke=D:(ur&&ur.enter(),ke=Rn(D),ur&&ur.exit()),ke===nt.promise?Wt(C("Promise-chain cycle")):(lr=Ee(ke))?lr.call(ke,kn,Wt):kn(ke)):Wt(D)}catch(qa){Wt(qa)}};x.length>Et;)Ht(x[Et++]);y._c=[],y._n=!1,v&&!y._h&&An(y)})}},An=function(y){T.call(l,function(){var v,x,D,te=y._v;if(le(y)&&(v=Kt(function(){_?b.emit("unhandledRejection",te,y):(x=l.onunhandledrejection)?x({promise:y,reason:te}):(D=l.console)&&D.error&&D.error("Unhandled promise rejection",te)}),y._h=_||le(y)?2:1),y._a=void 0,v)throw v.error})},le=function(y){if(y._h==1)return!1;for(var v,x=y._a||y._c,D=0;x.length>D;)if(v=x[D++],v.fail||!le(v.promise))return!1;return!0},tt=function(y){T.call(l,function(){var v;_?b.emit("rejectionHandled",y):(v=l.onrejectionhandled)&&v({promise:y,reason:y._v})})},pe=function(y){var v=this;v._d||(v._d=!0,v=v._w||v,v._v=y,v._s=2,v._a||(v._a=v._c.slice()),vt(v,!0))},xn=function(y){var v,x=this;if(!x._d){x._d=!0,x=x._w||x;try{if(x===y)throw C("Promise can't be resolved itself");(v=Ee(y))?A(function(){var D={_w:x,_d:!1};try{v.call(y,u(xn,D,1),u(pe,D,1))}catch(te){pe.call(D,te)}}):(x._v=y,x._s=1,vt(x,!1))}catch(D){pe.call({_w:x,_d:!1},D)}}};X||(g=function(y){w(this,g,k,"_h"),h(y),i.call(this);try{y(u(xn,this,1),u(pe,this,1))}catch(v){pe.call(this,v)}},i=function(y){this._c=[],this._a=void 0,this._s=0,this._d=!1,this._v=void 0,this._h=0,this._n=!1},i.prototype=n(56)(g.prototype,{then:function(y,v){var x=ce(O(this,g));return x.ok=typeof y!="function"||y,x.fail=typeof v=="function"&&v,x.domain=_?b.domain:void 0,this._c.push(x),this._a&&this._a.push(x),this._s&&vt(this,!1),x.promise},catch:function(y){return this.then(void 0,y)}}),Be=function(){var y=new i;this.promise=y,this.resolve=u(xn,y,1),this.reject=u(pe,y,1)}),p(p.G+p.W+p.F*!X,{Promise:g}),n(18)(g,k),n(59)(k),a=n(6)[k],p(p.S+p.F*!X,k,{reject:function(y){var v=ce(this),x=v.reject;return x(y),v.promise}}),p(p.S+p.F*(c||!X),k,{resolve:function(y){if(y instanceof g&&ae(y.constructor,this))return y;var v=ce(this),x=v.resolve;return x(y),v.promise}}),p(p.S+p.F*!(X&&n(46)(function(y){g.all(y).catch($)})),k,{all:function(y){var v=this,x=ce(v),D=x.resolve,te=x.reject,Et=Kt(function(){var Ht=[],nt=0,ke=1;E(y,!1,function(lr){var Rn=nt++,kn=!1;Ht.push(void 0),ke++,v.resolve(lr).then(function(Wt){kn||(kn=!0,Ht[Rn]=Wt,--ke||D(Ht))},te)}),--ke||D(Ht)});return Et&&te(Et.error),x.promise},race:function(y){var v=this,x=ce(v),D=x.reject,te=Kt(function(){E(y,!1,function(Et){v.resolve(Et).then(x.resolve,D)})});return te&&D(te.error),x.promise}})},function(r,o,n){"use strict";var i=n(61)(!0);n(27)(String,"String",function(s){this._t=String(s),this._i=0},function(){var s,a=this._t,c=this._i;return c>=a.length?{value:void 0,done:!0}:(s=i(a,c),this._i+=s.length,{value:s,done:!1})})},function(r,o,n){n(65);for(var i=n(2),s=n(5),a=n(10),c=n(1)("toStringTag"),l=["NodeList","DOMTokenList","MediaList","StyleSheetList","CSSRuleList"],u=0;u<5;u++){var f=l[u],p=i[f],d=p&&p.prototype;d&&!d[c]&&s(d,c,f),a[f]=a.Array}},function(r,o){r.exports=require("child_process")},function(r,o){r.exports=require("crypto")}])})});var oa={};nc(oa,{initTray:()=>or,killTray:()=>Mt,openBrowser:()=>Ct,showTrayNotification:()=>$o,updateTrayTooltip:()=>wn});function Qs(e){for(let t of e)try{if(gn.default.existsSync(t))return t}catch{}return null}function Wl(){if(process.platform==="win32"){for(let e of ta)try{if(gn.default.existsSync(e))return gn.default.readFileSync(e).toString("base64")}catch{}return qs}return qs}function jl(){if(process.env.NREMOTE_DESKTOP)return!1;let e=process.platform;return!(!["darwin","win32","linux"].includes(e)||e==="linux"&&!process.env.DISPLAY)}function na(){let{port:e,tunnelUrl:t,running:r}=yn,o=r?t?"Tunnel ON":"Local only":"Idle",n=`http://localhost:${e}`;return`9Remote \u2022 ${o}
|
|
5
5
|
Local: ${n}
|
|
6
|
-
Right-click to open / quit`}function
|
|
7
|
-
`,"utf8")}catch{}};return Ks.default.createInterface({input:i.stdout}).on("line",c=>{try{let l=JSON.parse(c);if(l.type!=="click")return;l.index===0?r?.():l.index===1&&(t?.(),kt(),setTimeout(()=>process.exit(0),500))}catch{}}),i.on("error",()=>{}),i.stderr.on("data",()=>{}),["Open Web UI","Shutdown"].forEach((c,l)=>s({action:"add-item",index:l,title:c,enabled:!0})),{_isWin:!0,_setTooltip(c){s({action:"set-tooltip",text:c})},sendAction(){},kill(){try{s({action:"kill"})}catch{}setTimeout(()=>{try{i&&!i.killed&&i.kill()}catch{}},300)}}}async function zn({port:e,onQuit:t,onOpenUI:r}){if(!Cl())return null;if(process.platform==="win32")return dn={port:e,tunnelUrl:"",running:!0},oe=Nl({port:e,onQuit:t,onOpenUI:r}),oe;try{let o=$l();if(!o)return null;let i={darwin:"tray_darwin_release",win32:"tray_windows_release.exe",linux:"tray_linux_release"}[process.platform];if(!i)return null;let s=$e.default.join(js,"systray2","traybin",i);if(!pn.default.existsSync(s))return null;if(process.platform!=="win32")try{pn.default.chmodSync(s,493)}catch{}if(dn={port:e,tunnelUrl:"",running:!0},oe=new o({menu:Ys(),debug:!1,copyDir:!0}),oe.onClick(a=>{let c=a.item?.title||a.item;c==="Open Web UI"?r?.():c==="Shutdown"&&(t?.(),kt(),setTimeout(()=>process.exit(0),500))}),typeof oe.ready=="function")try{await oe.ready()}catch{return oe=null,null}else oe.onReady(()=>{}),oe.onError(()=>{});return oe}catch{return null}}function mn({tunnelUrl:e,running:t}={}){if(e!==void 0&&(dn.tunnelUrl=e),t!==void 0&&(dn.running=t),!!oe){if(oe._isWin){oe._setTooltip?.(Vs());return}try{oe.sendAction({type:"update-menu",menu:Ys(),seq_id:-1})?.catch?.(()=>{})}catch{}}}function kt(){let e=oe;if(oe=null,e)try{e.kill(!0)}catch{}}function _o({title:e="9Remote",message:t}){let r=process.platform;if(t){if(r==="win32"){let o=c=>String(c).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/'/g,"'").replace(/"/g,"""),n=c=>String(c).replace(/'/g,"''"),i="9Remote",s=`<toast><visual><binding template="ToastText02"><text id="1">${o(e)}</text><text id="2">${o(t)}</text></binding></visual></toast>`,a=["try {","[Windows.UI.Notifications.ToastNotificationManager, Windows.UI.Notifications, ContentType=WindowsRuntime] > $null;","[Windows.Data.Xml.Dom.XmlDocument, Windows.Data.Xml.Dom.XmlDocument, ContentType=WindowsRuntime] > $null;","$xml = New-Object Windows.Data.Xml.Dom.XmlDocument;",`$xml.LoadXml('${n(s)}');`,"$toast = [Windows.UI.Notifications.ToastNotification]::new($xml);",`[Windows.UI.Notifications.ToastNotificationManager]::CreateToastNotifier('${n(i)}').Show($toast);`,"} catch {","Add-Type -AssemblyName System.Windows.Forms;","$n = New-Object System.Windows.Forms.NotifyIcon;","$n.Icon = [System.Drawing.SystemIcons]::Information;",`$n.BalloonTipTitle = '${n(e)}';`,`$n.BalloonTipText = '${n(t)}';`,"$n.Visible = $true;","$n.ShowBalloonTip(5000);","Start-Sleep -Seconds 6;","$n.Dispose();","}"].join(" ");try{(0,Xe.spawn)("powershell.exe",["-NoProfile","-WindowStyle","Hidden","-Command",a],{detached:!0,stdio:"ignore",windowsHide:!0}).unref()}catch{}return}if(r==="darwin"){try{let o=s=>String(s).replace(/"/g,'\\"'),n=`display notification "${o(t)}" with title "${o(e)}"`;(0,Xe.spawn)("osascript",["-e",n],{detached:!0,stdio:"ignore"}).unref()}catch{}return}try{(0,Xe.spawn)("notify-send",[e,t],{detached:!0,stdio:"ignore"}).unref()}catch{}}}function Pt(e){let t=process.platform;if(t==="win32"){try{(0,Xe.spawn)("rundll32.exe",["url.dll,FileProtocolHandler",e],{detached:!0,stdio:"ignore",windowsHide:!0}).unref();return}catch{}try{(0,Xe.spawn)("cmd.exe",["/d","/s","/c","start","",e],{detached:!0,stdio:"ignore",windowsHide:!0}).unref()}catch{}return}if(t==="darwin"){try{(0,Xe.spawn)("open",[e],{detached:!0,stdio:"ignore"}).unref()}catch{}return}let r=[["setsid",["--fork","xdg-open",e]],["setsid",["xdg-open",e]],["xdg-open",[e]],["gio",["open",e]],["sensible-browser",[e]],["x-www-browser",[e]]];for(let[o,n]of r)try{(0,Xe.spawn)(o,n,{detached:!0,stdio:"ignore",env:{...process.env}}).unref();return}catch{}}var Xe,Ks,pn,$e,Hs,Ws,js,oe,dn,Dr,Us,Gs,_l,Ot=za(()=>{Xe=require("child_process"),Ks=R(require("readline"),1),pn=R(require("fs"),1),$e=R(require("path"),1),Hs=R(require("os"),1),Ws=require("url"),js=(0,$e.join)(Hs.default.homedir(),".9remote","runtime","node_modules"),oe=null,dn={port:0,tunnelUrl:"",running:!1},Dr=$e.default.dirname((0,Ws.fileURLToPath)(__importMetaUrl)),Us="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",Gs=[$e.default.join(Dr,"assets","trayIcon.ico"),$e.default.join(Dr,"..","assets","trayIcon.ico")],_l=[$e.default.join(Dr,"assets","tray.ps1"),$e.default.join(Dr,"..","assets","tray.ps1")]});var Ko=ge((Lp,ua)=>{ua.exports={MODE_NUMBER:1,MODE_ALPHA_NUM:2,MODE_8BIT_BYTE:4,MODE_KANJI:8}});var da=ge((_p,pa)=>{var Yl=Ko();function fa(e){this.mode=Yl.MODE_8BIT_BYTE,this.data=e}fa.prototype={getLength:function(){return this.data.length},write:function(e){for(var t=0;t<this.data.length;t++)e.put(this.data.charCodeAt(t),8)}};pa.exports=fa});var Ho=ge((Mp,ma)=>{var xe={glog:function(e){if(e<1)throw new Error("glog("+e+")");return xe.LOG_TABLE[e]},gexp:function(e){for(;e<0;)e+=255;for(;e>=256;)e-=255;return xe.EXP_TABLE[e]},EXP_TABLE:new Array(256),LOG_TABLE:new Array(256)};for(j=0;j<8;j++)xe.EXP_TABLE[j]=1<<j;var j;for(j=8;j<256;j++)xe.EXP_TABLE[j]=xe.EXP_TABLE[j-4]^xe.EXP_TABLE[j-5]^xe.EXP_TABLE[j-6]^xe.EXP_TABLE[j-8];var j;for(j=0;j<255;j++)xe.LOG_TABLE[xe.EXP_TABLE[j]]=j;var j;ma.exports=xe});var Wo=ge((Cp,ha)=>{var Ct=Ho();function Hr(e,t){if(e.length===void 0)throw new Error(e.length+"/"+t);for(var r=0;r<e.length&&e[r]===0;)r++;this.num=new Array(e.length-r+t);for(var o=0;o<e.length-r;o++)this.num[o]=e[o+r]}Hr.prototype={get:function(e){return this.num[e]},getLength:function(){return this.num.length},multiply:function(e){for(var t=new Array(this.getLength()+e.getLength()-1),r=0;r<this.getLength();r++)for(var o=0;o<e.getLength();o++)t[r+o]^=Ct.gexp(Ct.glog(this.get(r))+Ct.glog(e.get(o)));return new Hr(t,0)},mod:function(e){if(this.getLength()-e.getLength()<0)return this;for(var t=Ct.glog(this.get(0))-Ct.glog(e.get(0)),r=new Array(this.getLength()),o=0;o<this.getLength();o++)r[o]=this.get(o);for(var n=0;n<e.getLength();n++)r[n]^=Ct.gexp(Ct.glog(e.get(n))+t);return new Hr(r,0).mod(e)}};ha.exports=Hr});var ya=ge(($p,ga)=>{ga.exports={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7}});var Ea=ge((Np,va)=>{var ve=Ko(),wa=Wo(),Xl=Ho(),ht=ya(),z={PATTERN_POSITION_TABLE:[[],[6,18],[6,22],[6,26],[6,30],[6,34],[6,22,38],[6,24,42],[6,26,46],[6,28,50],[6,30,54],[6,32,58],[6,34,62],[6,26,46,66],[6,26,48,70],[6,26,50,74],[6,30,54,78],[6,30,56,82],[6,30,58,86],[6,34,62,90],[6,28,50,72,94],[6,26,50,74,98],[6,30,54,78,102],[6,28,54,80,106],[6,32,58,84,110],[6,30,58,86,114],[6,34,62,90,118],[6,26,50,74,98,122],[6,30,54,78,102,126],[6,26,52,78,104,130],[6,30,56,82,108,134],[6,34,60,86,112,138],[6,30,58,86,114,142],[6,34,62,90,118,146],[6,30,54,78,102,126,150],[6,24,50,76,102,128,154],[6,28,54,80,106,132,158],[6,32,58,84,110,136,162],[6,26,54,82,110,138,166],[6,30,58,86,114,142,170]],G15:1335,G18:7973,G15_MASK:21522,getBCHTypeInfo:function(e){for(var t=e<<10;z.getBCHDigit(t)-z.getBCHDigit(z.G15)>=0;)t^=z.G15<<z.getBCHDigit(t)-z.getBCHDigit(z.G15);return(e<<10|t)^z.G15_MASK},getBCHTypeNumber:function(e){for(var t=e<<12;z.getBCHDigit(t)-z.getBCHDigit(z.G18)>=0;)t^=z.G18<<z.getBCHDigit(t)-z.getBCHDigit(z.G18);return e<<12|t},getBCHDigit:function(e){for(var t=0;e!==0;)t++,e>>>=1;return t},getPatternPosition:function(e){return z.PATTERN_POSITION_TABLE[e-1]},getMask:function(e,t,r){switch(e){case ht.PATTERN000:return(t+r)%2===0;case ht.PATTERN001:return t%2===0;case ht.PATTERN010:return r%3===0;case ht.PATTERN011:return(t+r)%3===0;case ht.PATTERN100:return(Math.floor(t/2)+Math.floor(r/3))%2===0;case ht.PATTERN101:return t*r%2+t*r%3===0;case ht.PATTERN110:return(t*r%2+t*r%3)%2===0;case ht.PATTERN111:return(t*r%3+(t+r)%2)%2===0;default:throw new Error("bad maskPattern:"+e)}},getErrorCorrectPolynomial:function(e){for(var t=new wa([1],0),r=0;r<e;r++)t=t.multiply(new wa([1,Xl.gexp(r)],0));return t},getLengthInBits:function(e,t){if(1<=t&&t<10)switch(e){case ve.MODE_NUMBER:return 10;case ve.MODE_ALPHA_NUM:return 9;case ve.MODE_8BIT_BYTE:return 8;case ve.MODE_KANJI:return 8;default:throw new Error("mode:"+e)}else if(t<27)switch(e){case ve.MODE_NUMBER:return 12;case ve.MODE_ALPHA_NUM:return 11;case ve.MODE_8BIT_BYTE:return 16;case ve.MODE_KANJI:return 10;default:throw new Error("mode:"+e)}else if(t<41)switch(e){case ve.MODE_NUMBER:return 14;case ve.MODE_ALPHA_NUM:return 13;case ve.MODE_8BIT_BYTE:return 16;case ve.MODE_KANJI:return 12;default:throw new Error("mode:"+e)}else throw new Error("type:"+t)},getLostPoint:function(e){var t=e.getModuleCount(),r=0,o=0,n=0;for(o=0;o<t;o++)for(n=0;n<t;n++){for(var i=0,s=e.isDark(o,n),a=-1;a<=1;a++)if(!(o+a<0||t<=o+a))for(var c=-1;c<=1;c++)n+c<0||t<=n+c||a===0&&c===0||s===e.isDark(o+a,n+c)&&i++;i>5&&(r+=3+i-5)}for(o=0;o<t-1;o++)for(n=0;n<t-1;n++){var l=0;e.isDark(o,n)&&l++,e.isDark(o+1,n)&&l++,e.isDark(o,n+1)&&l++,e.isDark(o+1,n+1)&&l++,(l===0||l===4)&&(r+=3)}for(o=0;o<t;o++)for(n=0;n<t-6;n++)e.isDark(o,n)&&!e.isDark(o,n+1)&&e.isDark(o,n+2)&&e.isDark(o,n+3)&&e.isDark(o,n+4)&&!e.isDark(o,n+5)&&e.isDark(o,n+6)&&(r+=40);for(n=0;n<t;n++)for(o=0;o<t-6;o++)e.isDark(o,n)&&!e.isDark(o+1,n)&&e.isDark(o+2,n)&&e.isDark(o+3,n)&&e.isDark(o+4,n)&&!e.isDark(o+5,n)&&e.isDark(o+6,n)&&(r+=40);var u=0;for(n=0;n<t;n++)for(o=0;o<t;o++)e.isDark(o,n)&&u++;var f=Math.abs(100*u/t/t-50)/5;return r+=f*10,r}};va.exports=z});var jo=ge((Dp,Sa)=>{Sa.exports={L:1,M:0,Q:3,H:2}});var ba=ge((Bp,Ta)=>{var Wr=jo();function Ne(e,t){this.totalCount=e,this.dataCount=t}Ne.RS_BLOCK_TABLE=[[1,26,19],[1,26,16],[1,26,13],[1,26,9],[1,44,34],[1,44,28],[1,44,22],[1,44,16],[1,70,55],[1,70,44],[2,35,17],[2,35,13],[1,100,80],[2,50,32],[2,50,24],[4,25,9],[1,134,108],[2,67,43],[2,33,15,2,34,16],[2,33,11,2,34,12],[2,86,68],[4,43,27],[4,43,19],[4,43,15],[2,98,78],[4,49,31],[2,32,14,4,33,15],[4,39,13,1,40,14],[2,121,97],[2,60,38,2,61,39],[4,40,18,2,41,19],[4,40,14,2,41,15],[2,146,116],[3,58,36,2,59,37],[4,36,16,4,37,17],[4,36,12,4,37,13],[2,86,68,2,87,69],[4,69,43,1,70,44],[6,43,19,2,44,20],[6,43,15,2,44,16],[4,101,81],[1,80,50,4,81,51],[4,50,22,4,51,23],[3,36,12,8,37,13],[2,116,92,2,117,93],[6,58,36,2,59,37],[4,46,20,6,47,21],[7,42,14,4,43,15],[4,133,107],[8,59,37,1,60,38],[8,44,20,4,45,21],[12,33,11,4,34,12],[3,145,115,1,146,116],[4,64,40,5,65,41],[11,36,16,5,37,17],[11,36,12,5,37,13],[5,109,87,1,110,88],[5,65,41,5,66,42],[5,54,24,7,55,25],[11,36,12],[5,122,98,1,123,99],[7,73,45,3,74,46],[15,43,19,2,44,20],[3,45,15,13,46,16],[1,135,107,5,136,108],[10,74,46,1,75,47],[1,50,22,15,51,23],[2,42,14,17,43,15],[5,150,120,1,151,121],[9,69,43,4,70,44],[17,50,22,1,51,23],[2,42,14,19,43,15],[3,141,113,4,142,114],[3,70,44,11,71,45],[17,47,21,4,48,22],[9,39,13,16,40,14],[3,135,107,5,136,108],[3,67,41,13,68,42],[15,54,24,5,55,25],[15,43,15,10,44,16],[4,144,116,4,145,117],[17,68,42],[17,50,22,6,51,23],[19,46,16,6,47,17],[2,139,111,7,140,112],[17,74,46],[7,54,24,16,55,25],[34,37,13],[4,151,121,5,152,122],[4,75,47,14,76,48],[11,54,24,14,55,25],[16,45,15,14,46,16],[6,147,117,4,148,118],[6,73,45,14,74,46],[11,54,24,16,55,25],[30,46,16,2,47,17],[8,132,106,4,133,107],[8,75,47,13,76,48],[7,54,24,22,55,25],[22,45,15,13,46,16],[10,142,114,2,143,115],[19,74,46,4,75,47],[28,50,22,6,51,23],[33,46,16,4,47,17],[8,152,122,4,153,123],[22,73,45,3,74,46],[8,53,23,26,54,24],[12,45,15,28,46,16],[3,147,117,10,148,118],[3,73,45,23,74,46],[4,54,24,31,55,25],[11,45,15,31,46,16],[7,146,116,7,147,117],[21,73,45,7,74,46],[1,53,23,37,54,24],[19,45,15,26,46,16],[5,145,115,10,146,116],[19,75,47,10,76,48],[15,54,24,25,55,25],[23,45,15,25,46,16],[13,145,115,3,146,116],[2,74,46,29,75,47],[42,54,24,1,55,25],[23,45,15,28,46,16],[17,145,115],[10,74,46,23,75,47],[10,54,24,35,55,25],[19,45,15,35,46,16],[17,145,115,1,146,116],[14,74,46,21,75,47],[29,54,24,19,55,25],[11,45,15,46,46,16],[13,145,115,6,146,116],[14,74,46,23,75,47],[44,54,24,7,55,25],[59,46,16,1,47,17],[12,151,121,7,152,122],[12,75,47,26,76,48],[39,54,24,14,55,25],[22,45,15,41,46,16],[6,151,121,14,152,122],[6,75,47,34,76,48],[46,54,24,10,55,25],[2,45,15,64,46,16],[17,152,122,4,153,123],[29,74,46,14,75,47],[49,54,24,10,55,25],[24,45,15,46,46,16],[4,152,122,18,153,123],[13,74,46,32,75,47],[48,54,24,14,55,25],[42,45,15,32,46,16],[20,147,117,4,148,118],[40,75,47,7,76,48],[43,54,24,22,55,25],[10,45,15,67,46,16],[19,148,118,6,149,119],[18,75,47,31,76,48],[34,54,24,34,55,25],[20,45,15,61,46,16]];Ne.getRSBlocks=function(e,t){var r=Ne.getRsBlockTable(e,t);if(r===void 0)throw new Error("bad rs block @ typeNumber:"+e+"/errorCorrectLevel:"+t);for(var o=r.length/3,n=[],i=0;i<o;i++)for(var s=r[i*3+0],a=r[i*3+1],c=r[i*3+2],l=0;l<s;l++)n.push(new Ne(a,c));return n};Ne.getRsBlockTable=function(e,t){switch(t){case Wr.L:return Ne.RS_BLOCK_TABLE[(e-1)*4+0];case Wr.M:return Ne.RS_BLOCK_TABLE[(e-1)*4+1];case Wr.Q:return Ne.RS_BLOCK_TABLE[(e-1)*4+2];case Wr.H:return Ne.RS_BLOCK_TABLE[(e-1)*4+3];default:return}};Ta.exports=Ne});var Ra=ge((Up,xa)=>{function Aa(){this.buffer=[],this.length=0}Aa.prototype={get:function(e){var t=Math.floor(e/8);return(this.buffer[t]>>>7-e%8&1)==1},put:function(e,t){for(var r=0;r<t;r++)this.putBit((e>>>t-r-1&1)==1)},getLengthInBits:function(){return this.length},putBit:function(e){var t=Math.floor(this.length/8);this.buffer.length<=t&&this.buffer.push(0),e&&(this.buffer[t]|=128>>>this.length%8),this.length++}};xa.exports=Aa});var Ia=ge((Fp,Oa)=>{var Ql=da(),gt=Ea(),ql=Wo(),ka=ba(),Pa=Ra();function De(e,t){this.typeNumber=e,this.errorCorrectLevel=t,this.modules=null,this.moduleCount=0,this.dataCache=null,this.dataList=[]}De.prototype={addData:function(e){var t=new Ql(e);this.dataList.push(t),this.dataCache=null},isDark:function(e,t){if(e<0||this.moduleCount<=e||t<0||this.moduleCount<=t)throw new Error(e+","+t);return this.modules[e][t]},getModuleCount:function(){return this.moduleCount},make:function(){if(this.typeNumber<1){var e=1;for(e=1;e<40;e++){for(var t=ka.getRSBlocks(e,this.errorCorrectLevel),r=new Pa,o=0,n=0;n<t.length;n++)o+=t[n].dataCount;for(var i=0;i<this.dataList.length;i++){var s=this.dataList[i];r.put(s.mode,4),r.put(s.getLength(),gt.getLengthInBits(s.mode,e)),s.write(r)}if(r.getLengthInBits()<=o*8)break}this.typeNumber=e}this.makeImpl(!1,this.getBestMaskPattern())},makeImpl:function(e,t){this.moduleCount=this.typeNumber*4+17,this.modules=new Array(this.moduleCount);for(var r=0;r<this.moduleCount;r++){this.modules[r]=new Array(this.moduleCount);for(var o=0;o<this.moduleCount;o++)this.modules[r][o]=null}this.setupPositionProbePattern(0,0),this.setupPositionProbePattern(this.moduleCount-7,0),this.setupPositionProbePattern(0,this.moduleCount-7),this.setupPositionAdjustPattern(),this.setupTimingPattern(),this.setupTypeInfo(e,t),this.typeNumber>=7&&this.setupTypeNumber(e),this.dataCache===null&&(this.dataCache=De.createData(this.typeNumber,this.errorCorrectLevel,this.dataList)),this.mapData(this.dataCache,t)},setupPositionProbePattern:function(e,t){for(var r=-1;r<=7;r++)if(!(e+r<=-1||this.moduleCount<=e+r))for(var o=-1;o<=7;o++)t+o<=-1||this.moduleCount<=t+o||(0<=r&&r<=6&&(o===0||o===6)||0<=o&&o<=6&&(r===0||r===6)||2<=r&&r<=4&&2<=o&&o<=4?this.modules[e+r][t+o]=!0:this.modules[e+r][t+o]=!1)},getBestMaskPattern:function(){for(var e=0,t=0,r=0;r<8;r++){this.makeImpl(!0,r);var o=gt.getLostPoint(this);(r===0||e>o)&&(e=o,t=r)}return t},createMovieClip:function(e,t,r){var o=e.createEmptyMovieClip(t,r),n=1;this.make();for(var i=0;i<this.modules.length;i++)for(var s=i*n,a=0;a<this.modules[i].length;a++){var c=a*n,l=this.modules[i][a];l&&(o.beginFill(0,100),o.moveTo(c,s),o.lineTo(c+n,s),o.lineTo(c+n,s+n),o.lineTo(c,s+n),o.endFill())}return o},setupTimingPattern:function(){for(var e=8;e<this.moduleCount-8;e++)this.modules[e][6]===null&&(this.modules[e][6]=e%2===0);for(var t=8;t<this.moduleCount-8;t++)this.modules[6][t]===null&&(this.modules[6][t]=t%2===0)},setupPositionAdjustPattern:function(){for(var e=gt.getPatternPosition(this.typeNumber),t=0;t<e.length;t++)for(var r=0;r<e.length;r++){var o=e[t],n=e[r];if(this.modules[o][n]===null)for(var i=-2;i<=2;i++)for(var s=-2;s<=2;s++)Math.abs(i)===2||Math.abs(s)===2||i===0&&s===0?this.modules[o+i][n+s]=!0:this.modules[o+i][n+s]=!1}},setupTypeNumber:function(e){for(var t=gt.getBCHTypeNumber(this.typeNumber),r,o=0;o<18;o++)r=!e&&(t>>o&1)===1,this.modules[Math.floor(o/3)][o%3+this.moduleCount-8-3]=r;for(var n=0;n<18;n++)r=!e&&(t>>n&1)===1,this.modules[n%3+this.moduleCount-8-3][Math.floor(n/3)]=r},setupTypeInfo:function(e,t){for(var r=this.errorCorrectLevel<<3|t,o=gt.getBCHTypeInfo(r),n,i=0;i<15;i++)n=!e&&(o>>i&1)===1,i<6?this.modules[i][8]=n:i<8?this.modules[i+1][8]=n:this.modules[this.moduleCount-15+i][8]=n;for(var s=0;s<15;s++)n=!e&&(o>>s&1)===1,s<8?this.modules[8][this.moduleCount-s-1]=n:s<9?this.modules[8][15-s-1+1]=n:this.modules[8][15-s-1]=n;this.modules[this.moduleCount-8][8]=!e},mapData:function(e,t){for(var r=-1,o=this.moduleCount-1,n=7,i=0,s=this.moduleCount-1;s>0;s-=2)for(s===6&&s--;;){for(var a=0;a<2;a++)if(this.modules[o][s-a]===null){var c=!1;i<e.length&&(c=(e[i]>>>n&1)===1);var l=gt.getMask(t,o,s-a);l&&(c=!c),this.modules[o][s-a]=c,n--,n===-1&&(i++,n=7)}if(o+=r,o<0||this.moduleCount<=o){o-=r,r=-r;break}}}};De.PAD0=236;De.PAD1=17;De.createData=function(e,t,r){for(var o=ka.getRSBlocks(e,t),n=new Pa,i=0;i<r.length;i++){var s=r[i];n.put(s.mode,4),n.put(s.getLength(),gt.getLengthInBits(s.mode,e)),s.write(n)}for(var a=0,c=0;c<o.length;c++)a+=o[c].dataCount;if(n.getLengthInBits()>a*8)throw new Error("code length overflow. ("+n.getLengthInBits()+">"+a*8+")");for(n.getLengthInBits()+4<=a*8&&n.put(0,4);n.getLengthInBits()%8!==0;)n.putBit(!1);for(;!(n.getLengthInBits()>=a*8||(n.put(De.PAD0,8),n.getLengthInBits()>=a*8));)n.put(De.PAD1,8);return De.createBytes(n,o)};De.createBytes=function(e,t){for(var r=0,o=0,n=0,i=new Array(t.length),s=new Array(t.length),a=0;a<t.length;a++){var c=t[a].dataCount,l=t[a].totalCount-c;o=Math.max(o,c),n=Math.max(n,l),i[a]=new Array(c);for(var u=0;u<i[a].length;u++)i[a][u]=255&e.buffer[u+r];r+=c;var f=gt.getErrorCorrectPolynomial(l),p=new ql(i[a],f.getLength()-1),d=p.mod(f);s[a]=new Array(f.getLength()-1);for(var h=0;h<s[a].length;h++){var w=h+d.getLength()-s[a].length;s[a][h]=w>=0?d.get(w):0}}for(var E=0,O=0;O<t.length;O++)E+=t[O].totalCount;for(var T=new Array(E),A=0,k=0;k<o;k++)for(var C=0;C<t.length;C++)k<i[C].length&&(T[A++]=i[C][k]);for(var g=0;g<n;g++)for(var b=0;b<t.length;b++)g<s[b].length&&(T[A++]=s[b][g]);return T};Oa.exports=De});var Ma=ge((Kp,_a)=>{var Jl=Ia(),La=jo(),Zl="\x1B[40m \x1B[0m",jr="\x1B[47m \x1B[0m",zl=function(e){return e?Zl:jr},Go=function(e){return{times:function(t){return new Array(t).join(e)}}},eu=function(e,t){for(var r=new Array(e),o=0;o<e;o++)r[o]=t;return r};_a.exports={error:La.L,generate:function(e,t,r){typeof t=="function"&&(r=t,t={});var o=new Jl(-1,this.error);o.addData(e),o.make();var n="";if(t&&t.small){var i=!0,s=!1,a=o.getModuleCount(),c=o.modules.slice(),l=a%2===1;l&&c.push(eu(a,s));var u={WHITE_ALL:"\u2588",WHITE_BLACK:"\u2580",BLACK_WHITE:"\u2584",BLACK_ALL:" "},f=Go(u.BLACK_WHITE).times(a+3),p=Go(u.WHITE_BLACK).times(a+3);n+=f+`
|
|
6
|
+
Right-click to open / quit`}function ra(){let{port:e,tunnelUrl:t}=yn,r=process.platform==="win32",o=t?`9Remote (Port ${e}) \u2022 Tunnel ON`:`9Remote (Port ${e}) \u2022 Local only`;return{icon:Wl(),title:r?`9Remote - Port ${e}`:"",tooltip:na(),items:[{title:o,tooltip:t||`http://localhost:${e}`,checked:!1,enabled:!1},{title:"Open Web UI",tooltip:`Open http://localhost:${e} in your browser`,checked:!1,enabled:!0},{title:"Shutdown",tooltip:"Stop 9Remote server, tunnel and quit",checked:!1,enabled:!0}]}}function Gl(){try{let e=require($e.default.join(ea,"systray2"));return e.default?.default||e.default||e}catch{return null}}function Vl({port:e,onQuit:t,onOpenUI:r}){let o=Qs(ta),n=Qs(Hl);if(!o||!n)return null;let i;try{i=(0,qe.spawn)("powershell.exe",["-NoProfile","-ExecutionPolicy","Bypass","-WindowStyle","Hidden","-InputFormat","Text","-OutputFormat","Text","-File",n,"-IconPath",o,"-Tooltip",`9Remote - Port ${e}`],{windowsHide:!0,stdio:["pipe","pipe","pipe"]})}catch{return null}let s=c=>{try{i.stdin.writable&&i.stdin.write(`${JSON.stringify(c)}
|
|
7
|
+
`,"utf8")}catch{}};return Js.default.createInterface({input:i.stdout}).on("line",c=>{try{let l=JSON.parse(c);if(l.type!=="click")return;l.index===0?r?.():l.index===1&&(t?.(),Mt(),setTimeout(()=>process.exit(0),500))}catch{}}),i.on("error",()=>{}),i.stderr.on("data",()=>{}),["Open Web UI","Shutdown"].forEach((c,l)=>s({action:"add-item",index:l,title:c,enabled:!0})),{_isWin:!0,_setTooltip(c){s({action:"set-tooltip",text:c})},sendAction(){},kill(){try{s({action:"kill"})}catch{}setTimeout(()=>{try{i&&!i.killed&&i.kill()}catch{}},300)}}}async function or({port:e,onQuit:t,onOpenUI:r}){if(!jl())return null;if(process.platform==="win32")return yn={port:e,tunnelUrl:"",running:!0},oe=Vl({port:e,onQuit:t,onOpenUI:r}),oe;try{let o=Gl();if(!o)return null;let i={darwin:"tray_darwin_release",win32:"tray_windows_release.exe",linux:"tray_linux_release"}[process.platform];if(!i)return null;let s=$e.default.join(ea,"systray2","traybin",i);if(!gn.default.existsSync(s))return null;if(process.platform!=="win32")try{gn.default.chmodSync(s,493)}catch{}if(yn={port:e,tunnelUrl:"",running:!0},oe=new o({menu:ra(),debug:!1,copyDir:!0}),oe.onClick(a=>{let c=a.item?.title||a.item;c==="Open Web UI"?r?.():c==="Shutdown"&&(t?.(),Mt(),setTimeout(()=>process.exit(0),500))}),typeof oe.ready=="function")try{await oe.ready()}catch{return oe=null,null}else oe.onReady(()=>{}),oe.onError(()=>{});return oe}catch{return null}}function wn({tunnelUrl:e,running:t}={}){if(e!==void 0&&(yn.tunnelUrl=e),t!==void 0&&(yn.running=t),!!oe){if(oe._isWin){oe._setTooltip?.(na());return}try{oe.sendAction({type:"update-menu",menu:ra(),seq_id:-1})?.catch?.(()=>{})}catch{}}}function Mt(){let e=oe;if(oe=null,e)try{e.kill(!0)}catch{}}function $o({title:e="9Remote",message:t}){let r=process.platform;if(t){if(r==="win32"){let o=c=>String(c).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/'/g,"'").replace(/"/g,"""),n=c=>String(c).replace(/'/g,"''"),i="9Remote",s=`<toast><visual><binding template="ToastText02"><text id="1">${o(e)}</text><text id="2">${o(t)}</text></binding></visual></toast>`,a=["try {","[Windows.UI.Notifications.ToastNotificationManager, Windows.UI.Notifications, ContentType=WindowsRuntime] > $null;","[Windows.Data.Xml.Dom.XmlDocument, Windows.Data.Xml.Dom.XmlDocument, ContentType=WindowsRuntime] > $null;","$xml = New-Object Windows.Data.Xml.Dom.XmlDocument;",`$xml.LoadXml('${n(s)}');`,"$toast = [Windows.UI.Notifications.ToastNotification]::new($xml);",`[Windows.UI.Notifications.ToastNotificationManager]::CreateToastNotifier('${n(i)}').Show($toast);`,"} catch {","Add-Type -AssemblyName System.Windows.Forms;","$n = New-Object System.Windows.Forms.NotifyIcon;","$n.Icon = [System.Drawing.SystemIcons]::Information;",`$n.BalloonTipTitle = '${n(e)}';`,`$n.BalloonTipText = '${n(t)}';`,"$n.Visible = $true;","$n.ShowBalloonTip(5000);","Start-Sleep -Seconds 6;","$n.Dispose();","}"].join(" ");try{(0,qe.spawn)("powershell.exe",["-NoProfile","-WindowStyle","Hidden","-Command",a],{detached:!0,stdio:"ignore",windowsHide:!0}).unref()}catch{}return}if(r==="darwin"){try{let o=s=>String(s).replace(/"/g,'\\"'),n=`display notification "${o(t)}" with title "${o(e)}"`;(0,qe.spawn)("osascript",["-e",n],{detached:!0,stdio:"ignore"}).unref()}catch{}return}try{(0,qe.spawn)("notify-send",[e,t],{detached:!0,stdio:"ignore"}).unref()}catch{}}}function Ct(e){let t=process.platform;if(t==="win32"){try{(0,qe.spawn)("rundll32.exe",["url.dll,FileProtocolHandler",e],{detached:!0,stdio:"ignore",windowsHide:!0}).unref();return}catch{}try{(0,qe.spawn)("cmd.exe",["/d","/s","/c","start","",e],{detached:!0,stdio:"ignore",windowsHide:!0}).unref()}catch{}return}if(t==="darwin"){try{(0,qe.spawn)("open",[e],{detached:!0,stdio:"ignore"}).unref()}catch{}return}let r=[["setsid",["--fork","xdg-open",e]],["setsid",["xdg-open",e]],["xdg-open",[e]],["gio",["open",e]],["sensible-browser",[e]],["x-www-browser",[e]]];for(let[o,n]of r)try{(0,qe.spawn)(o,n,{detached:!0,stdio:"ignore",env:{...process.env}}).unref();return}catch{}}var qe,Js,gn,$e,Zs,zs,ea,oe,yn,Br,qs,ta,Hl,$t=tc(()=>{qe=require("child_process"),Js=R(require("readline"),1),gn=R(require("fs"),1),$e=R(require("path"),1),Zs=R(require("os"),1),zs=require("url"),ea=(0,$e.join)(Zs.default.homedir(),".9remote","runtime","node_modules"),oe=null,yn={port:0,tunnelUrl:"",running:!1},Br=$e.default.dirname((0,zs.fileURLToPath)(__importMetaUrl)),qs="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",ta=[$e.default.join(Br,"assets","trayIcon.ico"),$e.default.join(Br,"..","assets","trayIcon.ico")],Hl=[$e.default.join(Br,"assets","tray.ps1"),$e.default.join(Br,"..","assets","tray.ps1")]});var Ho=ge((Dp,pa)=>{pa.exports={MODE_NUMBER:1,MODE_ALPHA_NUM:2,MODE_8BIT_BYTE:4,MODE_KANJI:8}});var ha=ge((Bp,ma)=>{var Ql=Ho();function da(e){this.mode=Ql.MODE_8BIT_BYTE,this.data=e}da.prototype={getLength:function(){return this.data.length},write:function(e){for(var t=0;t<this.data.length;t++)e.put(this.data.charCodeAt(t),8)}};ma.exports=da});var Wo=ge((Up,ga)=>{var Re={glog:function(e){if(e<1)throw new Error("glog("+e+")");return Re.LOG_TABLE[e]},gexp:function(e){for(;e<0;)e+=255;for(;e>=256;)e-=255;return Re.EXP_TABLE[e]},EXP_TABLE:new Array(256),LOG_TABLE:new Array(256)};for(G=0;G<8;G++)Re.EXP_TABLE[G]=1<<G;var G;for(G=8;G<256;G++)Re.EXP_TABLE[G]=Re.EXP_TABLE[G-4]^Re.EXP_TABLE[G-5]^Re.EXP_TABLE[G-6]^Re.EXP_TABLE[G-8];var G;for(G=0;G<255;G++)Re.LOG_TABLE[Re.EXP_TABLE[G]]=G;var G;ga.exports=Re});var jo=ge((Fp,ya)=>{var Ut=Wo();function Hr(e,t){if(e.length===void 0)throw new Error(e.length+"/"+t);for(var r=0;r<e.length&&e[r]===0;)r++;this.num=new Array(e.length-r+t);for(var o=0;o<e.length-r;o++)this.num[o]=e[o+r]}Hr.prototype={get:function(e){return this.num[e]},getLength:function(){return this.num.length},multiply:function(e){for(var t=new Array(this.getLength()+e.getLength()-1),r=0;r<this.getLength();r++)for(var o=0;o<e.getLength();o++)t[r+o]^=Ut.gexp(Ut.glog(this.get(r))+Ut.glog(e.get(o)));return new Hr(t,0)},mod:function(e){if(this.getLength()-e.getLength()<0)return this;for(var t=Ut.glog(this.get(0))-Ut.glog(e.get(0)),r=new Array(this.getLength()),o=0;o<this.getLength();o++)r[o]=this.get(o);for(var n=0;n<e.getLength();n++)r[n]^=Ut.gexp(Ut.glog(e.get(n))+t);return new Hr(r,0).mod(e)}};ya.exports=Hr});var va=ge((Kp,wa)=>{wa.exports={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7}});var Ta=ge((Hp,Sa)=>{var ve=Ho(),Ea=jo(),Jl=Wo(),gt=va(),ee={PATTERN_POSITION_TABLE:[[],[6,18],[6,22],[6,26],[6,30],[6,34],[6,22,38],[6,24,42],[6,26,46],[6,28,50],[6,30,54],[6,32,58],[6,34,62],[6,26,46,66],[6,26,48,70],[6,26,50,74],[6,30,54,78],[6,30,56,82],[6,30,58,86],[6,34,62,90],[6,28,50,72,94],[6,26,50,74,98],[6,30,54,78,102],[6,28,54,80,106],[6,32,58,84,110],[6,30,58,86,114],[6,34,62,90,118],[6,26,50,74,98,122],[6,30,54,78,102,126],[6,26,52,78,104,130],[6,30,56,82,108,134],[6,34,60,86,112,138],[6,30,58,86,114,142],[6,34,62,90,118,146],[6,30,54,78,102,126,150],[6,24,50,76,102,128,154],[6,28,54,80,106,132,158],[6,32,58,84,110,136,162],[6,26,54,82,110,138,166],[6,30,58,86,114,142,170]],G15:1335,G18:7973,G15_MASK:21522,getBCHTypeInfo:function(e){for(var t=e<<10;ee.getBCHDigit(t)-ee.getBCHDigit(ee.G15)>=0;)t^=ee.G15<<ee.getBCHDigit(t)-ee.getBCHDigit(ee.G15);return(e<<10|t)^ee.G15_MASK},getBCHTypeNumber:function(e){for(var t=e<<12;ee.getBCHDigit(t)-ee.getBCHDigit(ee.G18)>=0;)t^=ee.G18<<ee.getBCHDigit(t)-ee.getBCHDigit(ee.G18);return e<<12|t},getBCHDigit:function(e){for(var t=0;e!==0;)t++,e>>>=1;return t},getPatternPosition:function(e){return ee.PATTERN_POSITION_TABLE[e-1]},getMask:function(e,t,r){switch(e){case gt.PATTERN000:return(t+r)%2===0;case gt.PATTERN001:return t%2===0;case gt.PATTERN010:return r%3===0;case gt.PATTERN011:return(t+r)%3===0;case gt.PATTERN100:return(Math.floor(t/2)+Math.floor(r/3))%2===0;case gt.PATTERN101:return t*r%2+t*r%3===0;case gt.PATTERN110:return(t*r%2+t*r%3)%2===0;case gt.PATTERN111:return(t*r%3+(t+r)%2)%2===0;default:throw new Error("bad maskPattern:"+e)}},getErrorCorrectPolynomial:function(e){for(var t=new Ea([1],0),r=0;r<e;r++)t=t.multiply(new Ea([1,Jl.gexp(r)],0));return t},getLengthInBits:function(e,t){if(1<=t&&t<10)switch(e){case ve.MODE_NUMBER:return 10;case ve.MODE_ALPHA_NUM:return 9;case ve.MODE_8BIT_BYTE:return 8;case ve.MODE_KANJI:return 8;default:throw new Error("mode:"+e)}else if(t<27)switch(e){case ve.MODE_NUMBER:return 12;case ve.MODE_ALPHA_NUM:return 11;case ve.MODE_8BIT_BYTE:return 16;case ve.MODE_KANJI:return 10;default:throw new Error("mode:"+e)}else if(t<41)switch(e){case ve.MODE_NUMBER:return 14;case ve.MODE_ALPHA_NUM:return 13;case ve.MODE_8BIT_BYTE:return 16;case ve.MODE_KANJI:return 12;default:throw new Error("mode:"+e)}else throw new Error("type:"+t)},getLostPoint:function(e){var t=e.getModuleCount(),r=0,o=0,n=0;for(o=0;o<t;o++)for(n=0;n<t;n++){for(var i=0,s=e.isDark(o,n),a=-1;a<=1;a++)if(!(o+a<0||t<=o+a))for(var c=-1;c<=1;c++)n+c<0||t<=n+c||a===0&&c===0||s===e.isDark(o+a,n+c)&&i++;i>5&&(r+=3+i-5)}for(o=0;o<t-1;o++)for(n=0;n<t-1;n++){var l=0;e.isDark(o,n)&&l++,e.isDark(o+1,n)&&l++,e.isDark(o,n+1)&&l++,e.isDark(o+1,n+1)&&l++,(l===0||l===4)&&(r+=3)}for(o=0;o<t;o++)for(n=0;n<t-6;n++)e.isDark(o,n)&&!e.isDark(o,n+1)&&e.isDark(o,n+2)&&e.isDark(o,n+3)&&e.isDark(o,n+4)&&!e.isDark(o,n+5)&&e.isDark(o,n+6)&&(r+=40);for(n=0;n<t;n++)for(o=0;o<t-6;o++)e.isDark(o,n)&&!e.isDark(o+1,n)&&e.isDark(o+2,n)&&e.isDark(o+3,n)&&e.isDark(o+4,n)&&!e.isDark(o+5,n)&&e.isDark(o+6,n)&&(r+=40);var u=0;for(n=0;n<t;n++)for(o=0;o<t;o++)e.isDark(o,n)&&u++;var f=Math.abs(100*u/t/t-50)/5;return r+=f*10,r}};Sa.exports=ee});var Go=ge((Wp,ba)=>{ba.exports={L:1,M:0,Q:3,H:2}});var xa=ge((jp,Aa)=>{var Wr=Go();function Ne(e,t){this.totalCount=e,this.dataCount=t}Ne.RS_BLOCK_TABLE=[[1,26,19],[1,26,16],[1,26,13],[1,26,9],[1,44,34],[1,44,28],[1,44,22],[1,44,16],[1,70,55],[1,70,44],[2,35,17],[2,35,13],[1,100,80],[2,50,32],[2,50,24],[4,25,9],[1,134,108],[2,67,43],[2,33,15,2,34,16],[2,33,11,2,34,12],[2,86,68],[4,43,27],[4,43,19],[4,43,15],[2,98,78],[4,49,31],[2,32,14,4,33,15],[4,39,13,1,40,14],[2,121,97],[2,60,38,2,61,39],[4,40,18,2,41,19],[4,40,14,2,41,15],[2,146,116],[3,58,36,2,59,37],[4,36,16,4,37,17],[4,36,12,4,37,13],[2,86,68,2,87,69],[4,69,43,1,70,44],[6,43,19,2,44,20],[6,43,15,2,44,16],[4,101,81],[1,80,50,4,81,51],[4,50,22,4,51,23],[3,36,12,8,37,13],[2,116,92,2,117,93],[6,58,36,2,59,37],[4,46,20,6,47,21],[7,42,14,4,43,15],[4,133,107],[8,59,37,1,60,38],[8,44,20,4,45,21],[12,33,11,4,34,12],[3,145,115,1,146,116],[4,64,40,5,65,41],[11,36,16,5,37,17],[11,36,12,5,37,13],[5,109,87,1,110,88],[5,65,41,5,66,42],[5,54,24,7,55,25],[11,36,12],[5,122,98,1,123,99],[7,73,45,3,74,46],[15,43,19,2,44,20],[3,45,15,13,46,16],[1,135,107,5,136,108],[10,74,46,1,75,47],[1,50,22,15,51,23],[2,42,14,17,43,15],[5,150,120,1,151,121],[9,69,43,4,70,44],[17,50,22,1,51,23],[2,42,14,19,43,15],[3,141,113,4,142,114],[3,70,44,11,71,45],[17,47,21,4,48,22],[9,39,13,16,40,14],[3,135,107,5,136,108],[3,67,41,13,68,42],[15,54,24,5,55,25],[15,43,15,10,44,16],[4,144,116,4,145,117],[17,68,42],[17,50,22,6,51,23],[19,46,16,6,47,17],[2,139,111,7,140,112],[17,74,46],[7,54,24,16,55,25],[34,37,13],[4,151,121,5,152,122],[4,75,47,14,76,48],[11,54,24,14,55,25],[16,45,15,14,46,16],[6,147,117,4,148,118],[6,73,45,14,74,46],[11,54,24,16,55,25],[30,46,16,2,47,17],[8,132,106,4,133,107],[8,75,47,13,76,48],[7,54,24,22,55,25],[22,45,15,13,46,16],[10,142,114,2,143,115],[19,74,46,4,75,47],[28,50,22,6,51,23],[33,46,16,4,47,17],[8,152,122,4,153,123],[22,73,45,3,74,46],[8,53,23,26,54,24],[12,45,15,28,46,16],[3,147,117,10,148,118],[3,73,45,23,74,46],[4,54,24,31,55,25],[11,45,15,31,46,16],[7,146,116,7,147,117],[21,73,45,7,74,46],[1,53,23,37,54,24],[19,45,15,26,46,16],[5,145,115,10,146,116],[19,75,47,10,76,48],[15,54,24,25,55,25],[23,45,15,25,46,16],[13,145,115,3,146,116],[2,74,46,29,75,47],[42,54,24,1,55,25],[23,45,15,28,46,16],[17,145,115],[10,74,46,23,75,47],[10,54,24,35,55,25],[19,45,15,35,46,16],[17,145,115,1,146,116],[14,74,46,21,75,47],[29,54,24,19,55,25],[11,45,15,46,46,16],[13,145,115,6,146,116],[14,74,46,23,75,47],[44,54,24,7,55,25],[59,46,16,1,47,17],[12,151,121,7,152,122],[12,75,47,26,76,48],[39,54,24,14,55,25],[22,45,15,41,46,16],[6,151,121,14,152,122],[6,75,47,34,76,48],[46,54,24,10,55,25],[2,45,15,64,46,16],[17,152,122,4,153,123],[29,74,46,14,75,47],[49,54,24,10,55,25],[24,45,15,46,46,16],[4,152,122,18,153,123],[13,74,46,32,75,47],[48,54,24,14,55,25],[42,45,15,32,46,16],[20,147,117,4,148,118],[40,75,47,7,76,48],[43,54,24,22,55,25],[10,45,15,67,46,16],[19,148,118,6,149,119],[18,75,47,31,76,48],[34,54,24,34,55,25],[20,45,15,61,46,16]];Ne.getRSBlocks=function(e,t){var r=Ne.getRsBlockTable(e,t);if(r===void 0)throw new Error("bad rs block @ typeNumber:"+e+"/errorCorrectLevel:"+t);for(var o=r.length/3,n=[],i=0;i<o;i++)for(var s=r[i*3+0],a=r[i*3+1],c=r[i*3+2],l=0;l<s;l++)n.push(new Ne(a,c));return n};Ne.getRsBlockTable=function(e,t){switch(t){case Wr.L:return Ne.RS_BLOCK_TABLE[(e-1)*4+0];case Wr.M:return Ne.RS_BLOCK_TABLE[(e-1)*4+1];case Wr.Q:return Ne.RS_BLOCK_TABLE[(e-1)*4+2];case Wr.H:return Ne.RS_BLOCK_TABLE[(e-1)*4+3];default:return}};Aa.exports=Ne});var Pa=ge((Gp,ka)=>{function Ra(){this.buffer=[],this.length=0}Ra.prototype={get:function(e){var t=Math.floor(e/8);return(this.buffer[t]>>>7-e%8&1)==1},put:function(e,t){for(var r=0;r<t;r++)this.putBit((e>>>t-r-1&1)==1)},getLengthInBits:function(){return this.length},putBit:function(e){var t=Math.floor(this.length/8);this.buffer.length<=t&&this.buffer.push(0),e&&(this.buffer[t]|=128>>>this.length%8),this.length++}};ka.exports=Ra});var _a=ge((Vp,La)=>{var Zl=ha(),yt=Ta(),zl=jo(),Oa=xa(),Ia=Pa();function De(e,t){this.typeNumber=e,this.errorCorrectLevel=t,this.modules=null,this.moduleCount=0,this.dataCache=null,this.dataList=[]}De.prototype={addData:function(e){var t=new Zl(e);this.dataList.push(t),this.dataCache=null},isDark:function(e,t){if(e<0||this.moduleCount<=e||t<0||this.moduleCount<=t)throw new Error(e+","+t);return this.modules[e][t]},getModuleCount:function(){return this.moduleCount},make:function(){if(this.typeNumber<1){var e=1;for(e=1;e<40;e++){for(var t=Oa.getRSBlocks(e,this.errorCorrectLevel),r=new Ia,o=0,n=0;n<t.length;n++)o+=t[n].dataCount;for(var i=0;i<this.dataList.length;i++){var s=this.dataList[i];r.put(s.mode,4),r.put(s.getLength(),yt.getLengthInBits(s.mode,e)),s.write(r)}if(r.getLengthInBits()<=o*8)break}this.typeNumber=e}this.makeImpl(!1,this.getBestMaskPattern())},makeImpl:function(e,t){this.moduleCount=this.typeNumber*4+17,this.modules=new Array(this.moduleCount);for(var r=0;r<this.moduleCount;r++){this.modules[r]=new Array(this.moduleCount);for(var o=0;o<this.moduleCount;o++)this.modules[r][o]=null}this.setupPositionProbePattern(0,0),this.setupPositionProbePattern(this.moduleCount-7,0),this.setupPositionProbePattern(0,this.moduleCount-7),this.setupPositionAdjustPattern(),this.setupTimingPattern(),this.setupTypeInfo(e,t),this.typeNumber>=7&&this.setupTypeNumber(e),this.dataCache===null&&(this.dataCache=De.createData(this.typeNumber,this.errorCorrectLevel,this.dataList)),this.mapData(this.dataCache,t)},setupPositionProbePattern:function(e,t){for(var r=-1;r<=7;r++)if(!(e+r<=-1||this.moduleCount<=e+r))for(var o=-1;o<=7;o++)t+o<=-1||this.moduleCount<=t+o||(0<=r&&r<=6&&(o===0||o===6)||0<=o&&o<=6&&(r===0||r===6)||2<=r&&r<=4&&2<=o&&o<=4?this.modules[e+r][t+o]=!0:this.modules[e+r][t+o]=!1)},getBestMaskPattern:function(){for(var e=0,t=0,r=0;r<8;r++){this.makeImpl(!0,r);var o=yt.getLostPoint(this);(r===0||e>o)&&(e=o,t=r)}return t},createMovieClip:function(e,t,r){var o=e.createEmptyMovieClip(t,r),n=1;this.make();for(var i=0;i<this.modules.length;i++)for(var s=i*n,a=0;a<this.modules[i].length;a++){var c=a*n,l=this.modules[i][a];l&&(o.beginFill(0,100),o.moveTo(c,s),o.lineTo(c+n,s),o.lineTo(c+n,s+n),o.lineTo(c,s+n),o.endFill())}return o},setupTimingPattern:function(){for(var e=8;e<this.moduleCount-8;e++)this.modules[e][6]===null&&(this.modules[e][6]=e%2===0);for(var t=8;t<this.moduleCount-8;t++)this.modules[6][t]===null&&(this.modules[6][t]=t%2===0)},setupPositionAdjustPattern:function(){for(var e=yt.getPatternPosition(this.typeNumber),t=0;t<e.length;t++)for(var r=0;r<e.length;r++){var o=e[t],n=e[r];if(this.modules[o][n]===null)for(var i=-2;i<=2;i++)for(var s=-2;s<=2;s++)Math.abs(i)===2||Math.abs(s)===2||i===0&&s===0?this.modules[o+i][n+s]=!0:this.modules[o+i][n+s]=!1}},setupTypeNumber:function(e){for(var t=yt.getBCHTypeNumber(this.typeNumber),r,o=0;o<18;o++)r=!e&&(t>>o&1)===1,this.modules[Math.floor(o/3)][o%3+this.moduleCount-8-3]=r;for(var n=0;n<18;n++)r=!e&&(t>>n&1)===1,this.modules[n%3+this.moduleCount-8-3][Math.floor(n/3)]=r},setupTypeInfo:function(e,t){for(var r=this.errorCorrectLevel<<3|t,o=yt.getBCHTypeInfo(r),n,i=0;i<15;i++)n=!e&&(o>>i&1)===1,i<6?this.modules[i][8]=n:i<8?this.modules[i+1][8]=n:this.modules[this.moduleCount-15+i][8]=n;for(var s=0;s<15;s++)n=!e&&(o>>s&1)===1,s<8?this.modules[8][this.moduleCount-s-1]=n:s<9?this.modules[8][15-s-1+1]=n:this.modules[8][15-s-1]=n;this.modules[this.moduleCount-8][8]=!e},mapData:function(e,t){for(var r=-1,o=this.moduleCount-1,n=7,i=0,s=this.moduleCount-1;s>0;s-=2)for(s===6&&s--;;){for(var a=0;a<2;a++)if(this.modules[o][s-a]===null){var c=!1;i<e.length&&(c=(e[i]>>>n&1)===1);var l=yt.getMask(t,o,s-a);l&&(c=!c),this.modules[o][s-a]=c,n--,n===-1&&(i++,n=7)}if(o+=r,o<0||this.moduleCount<=o){o-=r,r=-r;break}}}};De.PAD0=236;De.PAD1=17;De.createData=function(e,t,r){for(var o=Oa.getRSBlocks(e,t),n=new Ia,i=0;i<r.length;i++){var s=r[i];n.put(s.mode,4),n.put(s.getLength(),yt.getLengthInBits(s.mode,e)),s.write(n)}for(var a=0,c=0;c<o.length;c++)a+=o[c].dataCount;if(n.getLengthInBits()>a*8)throw new Error("code length overflow. ("+n.getLengthInBits()+">"+a*8+")");for(n.getLengthInBits()+4<=a*8&&n.put(0,4);n.getLengthInBits()%8!==0;)n.putBit(!1);for(;!(n.getLengthInBits()>=a*8||(n.put(De.PAD0,8),n.getLengthInBits()>=a*8));)n.put(De.PAD1,8);return De.createBytes(n,o)};De.createBytes=function(e,t){for(var r=0,o=0,n=0,i=new Array(t.length),s=new Array(t.length),a=0;a<t.length;a++){var c=t[a].dataCount,l=t[a].totalCount-c;o=Math.max(o,c),n=Math.max(n,l),i[a]=new Array(c);for(var u=0;u<i[a].length;u++)i[a][u]=255&e.buffer[u+r];r+=c;var f=yt.getErrorCorrectPolynomial(l),p=new zl(i[a],f.getLength()-1),d=p.mod(f);s[a]=new Array(f.getLength()-1);for(var h=0;h<s[a].length;h++){var w=h+d.getLength()-s[a].length;s[a][h]=w>=0?d.get(w):0}}for(var E=0,O=0;O<t.length;O++)E+=t[O].totalCount;for(var T=new Array(E),A=0,k=0;k<o;k++)for(var C=0;C<t.length;C++)k<i[C].length&&(T[A++]=i[C][k]);for(var g=0;g<n;g++)for(var b=0;b<t.length;b++)g<s[b].length&&(T[A++]=s[b][g]);return T};La.exports=De});var $a=ge((Yp,Ca)=>{var eu=_a(),Ma=Go(),tu="\x1B[40m \x1B[0m",jr="\x1B[47m \x1B[0m",nu=function(e){return e?tu:jr},Vo=function(e){return{times:function(t){return new Array(t).join(e)}}},ru=function(e,t){for(var r=new Array(e),o=0;o<e;o++)r[o]=t;return r};Ca.exports={error:Ma.L,generate:function(e,t,r){typeof t=="function"&&(r=t,t={});var o=new eu(-1,this.error);o.addData(e),o.make();var n="";if(t&&t.small){var i=!0,s=!1,a=o.getModuleCount(),c=o.modules.slice(),l=a%2===1;l&&c.push(ru(a,s));var u={WHITE_ALL:"\u2588",WHITE_BLACK:"\u2580",BLACK_WHITE:"\u2584",BLACK_ALL:" "},f=Vo(u.BLACK_WHITE).times(a+3),p=Vo(u.WHITE_BLACK).times(a+3);n+=f+`
|
|
8
8
|
`;for(var d=0;d<a;d+=2){n+=u.WHITE_ALL;for(var h=0;h<a;h++)c[d][h]===s&&c[d+1][h]===s?n+=u.WHITE_ALL:c[d][h]===s&&c[d+1][h]===i?n+=u.WHITE_BLACK:c[d][h]===i&&c[d+1][h]===s?n+=u.BLACK_WHITE:n+=u.BLACK_ALL;n+=u.WHITE_ALL+`
|
|
9
|
-
`}l||(n+=p)}else{var w=
|
|
10
|
-
`,o.modules.forEach(function(E){n+=jr,n+=E.map(
|
|
11
|
-
`}),n+=w}r?r(n):console.log(n)},setErrorLevel:function(e){this.error=
|
|
12
|
-
`)){let r=t.trim();if(!r||r.startsWith("#"))continue;let o=r.match(/^([A-Z_][A-Z0-9_]*)\s*=\s*"?(.*?)"?$/);o&&!process.env[o[1]]&&(process.env[o[1]]=o[2])}}for(let e of
|
|
13
|
-
`)}catch{}}function
|
|
14
|
-
=== SESSION ${new Date().toISOString()} pid=${process.pid} argv=${process.argv.slice(2).join(" ")} ===`),wc())}function
|
|
15
|
-
`).filter(Boolean).slice(-e)}catch{return[]}}var vc=process.env.NODE_ENV==="development"||process.env.AGENT_DEBUG==="1";function B(e){return{debug:(...t)=>{vc&&
|
|
9
|
+
`}l||(n+=p)}else{var w=Vo(jr).times(o.getModuleCount()+3);n+=w+`
|
|
10
|
+
`,o.modules.forEach(function(E){n+=jr,n+=E.map(nu).join(""),n+=jr+`
|
|
11
|
+
`}),n+=w}r?r(n):console.log(n)},setErrorLevel:function(e){this.error=Ma[e]||this.error}}});var pr=require("fs"),In=require("path"),si=require("url"),ai=R(require("os"),1);var fr=R(require("dns"),1),Se=R(require("path"),1),zo=R(require("os"),1),ie="9remote",qr=process.env.NREMOTE_REGISTRY||`https://registry.npmjs.org/${ie}/latest`,Ue=`${ie}@latest`,Pe=process.env.NREMOTE_HOME||Se.default.join(zo.default.homedir(),".9remote"),V={ROOT:Pe,LOGS:Se.default.join(Pe,"logs"),STATE:Se.default.join(Pe,"state"),CONFIG:Se.default.join(Pe,"config"),BIN:Se.default.join(Pe,"bin"),PIDS:Se.default.join(Pe,"pids"),BUFFERS:Se.default.join(Pe,"buffers"),DAEMON:Se.default.join(Pe,"daemon"),AI_SESSIONS:Se.default.join(Pe,"ai-sessions"),BACKGROUNDS:Se.default.join(Pe,"backgrounds")},Pn=new fr.default.promises.Resolver;Pn.setServers(["1.1.1.1","1.0.0.1","8.8.8.8"]);var Xr=fr.default.lookup,oc=/^(\d{1,3}\.){3}\d{1,3}$|^::1$|^[0-9a-f:]+$/i;fr.default.lookup=(e,t,r)=>{if(typeof t=="function"&&(r=t,t={}),e==="localhost"||oc.test(e))return Xr(e,t,r);(async()=>{if(t.family===6)return{addrs:await Pn.resolve6(e),family:6};if(t.family===4)return{addrs:await Pn.resolve4(e),family:4};let[n,i]=await Promise.allSettled([Pn.resolve4(e),Pn.resolve6(e)]);return n.status==="fulfilled"&&n.value?.length?{addrs:n.value,family:4}:i.status==="fulfilled"&&i.value?.length?{addrs:i.value,family:6}:null})().then(n=>{if(!n?.addrs?.length)return Xr(e,t,r);t.all?r(null,n.addrs.map(i=>({address:i,family:n.family}))):r(null,n.addrs[0],n.family)}).catch(()=>Xr(e,t,r))};var P=2208,ei=process.execPath,ti=(e=process.env)=>process.versions.electron?{...e,ELECTRON_RUN_AS_NODE:"1"}:{...e};var Jo=5173,Zo=3e3;var Au=[`http://localhost:${P}`,`http://127.0.0.1:${P}`,`http://localhost:${Jo}`,`http://127.0.0.1:${Jo}`,`http://localhost:${Zo}`,`http://127.0.0.1:${Zo}`],On={fileName:"agent.log",rotatedName:"agent.log.1",maxBytes:2*1024*1024,cleanupAfterDays:7},ni=60,I={STOPPED:0,PREPARING:1,CONNECTING:2,TUNNELING:3,VERIFYING:4,READY:5},ri={showTunnelUrlInMenu:!1};var oi={CLAUDE_CODE_DISABLE_ALTERNATE_SCREEN:"1"};var ii={checkIntervalMs:3e4,requestTimeoutMs:5e3},de={server:{strategy:"exp",baseMs:1e3,maxMs:6e4},tunnelRestart:{strategy:"exp",baseMs:2e3,maxMs:3e5},tunnelSpawn:{strategy:"linear",baseMs:5e3,maxMs:6e4},tunnelRateLimit:{strategy:"exp",baseMs:6e4,maxMs:9e5},internet:{strategy:"linear",baseMs:3e3,maxMs:6e4},sse:{strategy:"linear",baseMs:2e3,maxMs:2e3},urlSync:{strategy:"linear",baseMs:5e3,maxMs:6e4}},ic={Accept:"application/json, text/plain, */*","Accept-Language":"en-US,en;q=0.9","Cache-Control":"no-cache",Pragma:"no-cache","User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36"};function H(e,t={}){return fetch(e,{...t,headers:{...ic,...t.headers}})}var sc=(0,In.dirname)((0,si.fileURLToPath)(__importMetaUrl)),ac=[(0,In.join)(ai.default.homedir(),".9remote",".env"),(0,In.join)(sc,"..",".env")];function cc(e){for(let t of e.split(`
|
|
12
|
+
`)){let r=t.trim();if(!r||r.startsWith("#"))continue;let o=r.match(/^([A-Z_][A-Z0-9_]*)\s*=\s*"?(.*?)"?$/);o&&!process.env[o[1]]&&(process.env[o[1]]=o[2])}}for(let e of ac)if((0,pr.existsSync)(e))try{cc((0,pr.readFileSync)(e,"utf8"))}catch{}for(let[e,t]of Object.entries(oi))process.env[e]||(process.env[e]=t);var yo=R(require("path"),1),ps=R(require("fs"),1),ds=require("url");var li=R(ci(),1),Jr=R(require("crypto"),1),{machineIdSync:lc}=li.default;async function jt(e=null){let t=e||process.env.MACHINE_ID_SALT||"9remote-salt";try{let r=lc();return Jr.default.createHash("sha256").update(r+t).digest("hex").substring(0,16)}catch(r){return console.error("Error getting machine ID:",r),Jr.default.randomUUID().replace(/-/g,"").substring(0,16)}}var pi=R(require("crypto"),1),ui="abcdefghijklmnpqrstuvwxyz123456789",uc=8;function fi(){let e="";for(let t=0;t<uc;t++)e+=ui[pi.default.randomInt(ui.length)];return e}function St(e){return`sk-${(e||"").slice(0,8).toLowerCase()}-${fi()}-${fi()}`}function Zr(e){return/^sk-[a-z0-9]{8}-[a-np-z1-9]{8}-[a-np-z1-9]{8}$/.test(e||"")}function Y(e){if(!Zr(e))return e||null;let t=e.split("-");return`${t[0]}-${t[1]}-${t[2]}`}function di(e){return typeof e!="string"||!e?!1:/^sk-[a-z0-9]{8}-[a-z0-9]{4}-[0-9a-f]{6}$/.test(e.trim().toLowerCase())}function dr(e){return!e||e.length<8?"sk-***":`${e.slice(0,3)}***${e.slice(-4)}`}var ue=R(require("fs"),1),Mn=R(require("path"),1);var me=require("fs"),mi=require("path"),fc=0;function Fe(e,t,r={}){let{mode:o=384,spaces:n=2}=r;(0,me.mkdirSync)((0,mi.dirname)(e),{recursive:!0});let i=`${e}.${process.pid}.${++fc}.tmp`;try{(0,me.writeFileSync)(i,JSON.stringify(t,null,n),{mode:o}),(0,me.renameSync)(i,e)}catch(s){try{(0,me.existsSync)(i)&&(0,me.unlinkSync)(i)}catch{}throw s}}function hi(e,t=null){try{return(0,me.existsSync)(e)?JSON.parse((0,me.readFileSync)(e,"utf8")):t}catch{return t}}var _u=V.STATE,_n=Mn.default.join(V.STATE,"state.json"),zr=Mn.default.join(V.ROOT,"keys.json"),mr=Mn.default.join(V.STATE,"cmd.json"),gi=Mn.default.join(V.STATE,"settings.json");function Gt(){for(let e of[V.ROOT,V.STATE])ue.default.existsSync(e)||ue.default.mkdirSync(e,{recursive:!0})}function yi(){try{return Gt(),ue.default.existsSync(_n)?JSON.parse(ue.default.readFileSync(_n,"utf8")):null}catch{return null}}function Cn(e){try{Gt(),Fe(_n,e)}catch(t){console.error("Error saving state:",t)}}function wi(){try{ue.default.existsSync(_n)&&ue.default.unlinkSync(_n)}catch{}}function j(){try{return Gt(),ue.default.existsSync(gi)?JSON.parse(ue.default.readFileSync(gi,"utf8"))||{}:{}}catch{return{}}}function $n(){try{return Gt(),ue.default.existsSync(zr)?JSON.parse(ue.default.readFileSync(zr,"utf8")):{machineId:null,key:null,name:"Default",createdAt:null}}catch{return{machineId:null,key:null,name:"Default",createdAt:null}}}function Vt(e){try{Gt(),Fe(mr,{cmd:e,ts:Date.now()},{spaces:0})}catch{}}function vi(){try{if(!ue.default.existsSync(mr))return null;let e=JSON.parse(ue.default.readFileSync(mr,"utf8"));return ue.default.unlinkSync(mr),e.cmd}catch{return null}}function Ke(e,t,r="Default"){try{Gt();let o={machineId:e,key:t,name:r,createdAt:new Date().toISOString()};return Fe(zr,o),o}catch(o){return console.error("Error saving key:",o),null}}var Oe=R(require("fs"),1),eo=R(require("path"),1);var gr=V.LOGS,Nn=eo.default.join(gr,On.fileName),yr=eo.default.join(gr,On.rotatedName),Ei=!1,Si=null;function pc(){Oe.default.existsSync(gr)||Oe.default.mkdirSync(gr,{recursive:!0})}function dc(){try{if(Oe.default.statSync(Nn).size<On.maxBytes)return;try{Oe.default.rmSync(yr,{force:!0})}catch{}Oe.default.renameSync(Nn,yr)}catch{}}function mc(){try{let e=Oe.default.statSync(yr);Date.now()-e.mtimeMs>On.cleanupAfterDays*864e5&&Oe.default.rmSync(yr,{force:!0})}catch{}}function to(e){try{dc(),Oe.default.appendFileSync(Nn,e+`
|
|
13
|
+
`)}catch{}}function hr(e){return e.map(t=>{if(t instanceof Error)return t.stack||t.message;if(typeof t=="object")try{return JSON.stringify(t)}catch{return String(t)}return String(t)}).join(" ")}function Ti(){let e=new Date,t=(r,o=2)=>String(r).padStart(o,"0");return`${t(e.getHours())}:${t(e.getMinutes())}:${t(e.getSeconds())}.${t(e.getMilliseconds(),3)}`}var hc=/\x1b\[[0-9;]*m/g,gc=/https?:\/\/[^\s]+/g;function yc(e){return String(e).replace(hc,"").replace(gc,"").replace(/\s+$/g,"")}function Yt(e,t,r){let o=yc(r);if(!o)return;let n=t==="info"?e:`${e}:${t}`,i=`${Ti()} [${n}] ${o}`;if(to(i),Si)try{Si(i)}catch{}}function wc(){process.on("uncaughtException",e=>Yt("crash","error",`uncaughtException: ${e?.stack||e?.message||e}`)),process.on("unhandledRejection",e=>{let t=e instanceof Error?e.stack||e.message:String(e);Yt("crash","error",`unhandledRejection: ${t}`)}),process.on("exit",e=>to(`${Ti()} [exit] code=${e} pid=${process.pid}`))}function bi(){Ei||(Ei=!0,pc(),mc(),to(`
|
|
14
|
+
=== SESSION ${new Date().toISOString()} pid=${process.pid} argv=${process.argv.slice(2).join(" ")} ===`),wc())}function Ai(e=60){try{return Oe.default.readFileSync(Nn,"utf8").split(`
|
|
15
|
+
`).filter(Boolean).slice(-e)}catch{return[]}}var vc=process.env.NODE_ENV==="development"||process.env.AGENT_DEBUG==="1";function B(e){return{debug:(...t)=>{vc&&Yt(e,"debug",hr(t))},info:(...t)=>Yt(e,"info",hr(t)),warn:(...t)=>Yt(e,"warn",hr(t)),error:(...t)=>Yt(e,"error",hr(t))}}var Dn=Nn;var rt=R(require("crypto"),1),qt=require("fs");var xi=require("path");var Nu=Buffer.from("302a300506032b656e","hex");var wr=(0,xi.join)(V.CONFIG,"hostKey.json"),Hu=Buffer.from("302a300506032b6570032100","hex"),Xt=null;function no(){if(Xt)return Xt;try{if((0,qt.existsSync)(wr)){let s=JSON.parse((0,qt.readFileSync)(wr,"utf8")),a=Buffer.from(s.publicKey,"base64");if(!s.x25519PrivateKey){let l=rt.default.generateKeyPairSync("x25519");s.x25519PrivateKey=l.privateKey.export({type:"pkcs8",format:"der"}).toString("base64"),s.x25519PublicKey=l.publicKey.export({type:"spki",format:"der"}).toString("base64"),Fe(wr,s)}let c=Buffer.from(s.x25519PublicKey,"base64");return Xt={privateKey:rt.default.createPrivateKey({key:Buffer.from(s.privateKey,"base64"),format:"der",type:"pkcs8"}),publicKey:rt.default.createPublicKey({key:a,format:"der",type:"spki"}),publicKeyB64:a.subarray(-32).toString("base64"),x25519PrivateKey:rt.default.createPrivateKey({key:Buffer.from(s.x25519PrivateKey,"base64"),format:"der",type:"pkcs8"}),x25519PublicKeyB64:c.subarray(-32).toString("base64")},Xt}}catch{}(0,qt.mkdirSync)(V.CONFIG,{recursive:!0});let{privateKey:e,publicKey:t}=rt.default.generateKeyPairSync("ed25519"),r=t.export({type:"spki",format:"der"}).toString("base64"),o=e.export({type:"pkcs8",format:"der"}).toString("base64"),n=rt.default.generateKeyPairSync("x25519"),i=n.publicKey.export({type:"spki",format:"der"}).toString("base64");return Fe(wr,{privateKey:o,publicKey:r,x25519PrivateKey:n.privateKey.export({type:"pkcs8",format:"der"}).toString("base64"),x25519PublicKey:i}),Xt={privateKey:e,publicKey:t,publicKeyB64:Buffer.from(r,"base64").subarray(-32).toString("base64"),x25519PrivateKey:n.privateKey,x25519PublicKeyB64:Buffer.from(i,"base64").subarray(-32).toString("base64")},Xt}function ot(){return no().publicKeyB64}function it(){return no().x25519PublicKeyB64}var Ec="9remote-session-v1";function Sc({apiKey:e,tunnelUrl:t,localIp:r,expiryMinutes:o,ts:n}){let i=a=>{let c=a==null?"":String(a);return`${c.length}:${c}`},s=`${Ec}|${i(e)}${i(t)}${i(r)}${i(o)}${i(n)}`;return rt.default.sign(null,Buffer.from(s,"utf8"),no().privateKey).toString("base64")}function Tt(e){let t=Date.now();return{ts:t,sig:Sc({...e,ts:t})}}var ki=R(require("crypto"),1),Pi=require("path");var Tc=B("pairing"),Oi=(0,Pi.join)(V.STATE,"pairing.json"),Ri="ABCDEFGHIJKLMNPQRSTUVWXYZ123456789",bc=2;function Ii(){let e="";for(let t=0;t<bc;t++)e+=Ri[ki.default.randomInt(Ri.length)];return e}function Ac(){let e=hi(Oi,null);return!e||Date.now()>e.expiresAt?null:e}function xc(e){try{Fe(Oi,e)}catch(t){Tc.error(`persist pairing state: ${t.message}`)}}function Li(e,t,r,o=null){xc({tempKey:e,tail:t,expiresAt:r,workerUrl:o})}function _i(){let e=Ac();return e?{tempKey:e.tempKey,tail:e.tail,expiresAt:e.expiresAt}:null}var ro=B("session"),Rc=10;async function Bn(e,t){let r=async()=>{let o=await H(`${t}/api/temp-key/create`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify((()=>{let n={apiKey:Y(e),expiryMinutes:Rc};return{...n,...Tt(n)}})())});if(!o.ok){let n=await o.json().catch(()=>null);throw new Error(n?.error||`HTTP ${o.status}`)}return o.json()};try{let o;try{o=await r()}catch(i){if(ro.warn(`Temp key creation failed (${i.message}) \u2014 re-registering session`),!await bt(e,t))throw i;o=await r()}let n=Ii();return Li(o.tempKey,n,o.expiresAt,t),{...o,oneTimeKey:`${o.tempKey}${n}`}}catch(o){return ro.error(`Temp key creation failed: ${o?.message||o}`),null}}function Un(e,t){return t?.tempKey?`${e}/login?k=${t.tempKey}#${t.oneTimeKey}`:`${e}/login`}async function bt(e,t,r,o){try{let n=await H(`${t}/api/session/create`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:Y(e),hostPublicKey:ot(),hostX25519Key:it(),tempKey:_i()?.tempKey||void 0})});if(!n.ok)throw new Error(`HTTP ${n.status}`);return r&&await H(`${t}/api/session/update`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:Y(e),tunnelUrl:r,...Tt({apiKey:Y(e),tunnelUrl:r})})}).catch(()=>{}),o&&Y(o)!==Y(e)&&await H(`${t}/api/session/delete`,{method:"DELETE",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:Y(o),...Tt({apiKey:Y(o)})})}).catch(()=>{}),!0}catch(n){return ro.error(`Session registration failed: ${n?.message||n}`),!1}}var Gi=R(require("os"),1);var br=R(require("readline"),1),Ci=R(require("http"),1);var oo=require("child_process"),kc={screenRecording:"x-apple.systempreferences:com.apple.preference.security?Privacy_ScreenCapture",accessibility:"x-apple.systempreferences:com.apple.preference.security?Privacy_Accessibility"};function vr(e){let t=kc[e];t&&process.platform==="darwin"&&(0,oo.exec)(`open "${t}"`,()=>{})}function Te({strategy:e,baseMs:t,maxMs:r},o){let n=Math.max(1,o),i=e==="exp"?t*Math.pow(2,n-1):t*n;return Math.min(i,r)}async function Er({config:e,task:t,label:r="task",log:o=()=>{},ctx:n={}}){let i=0;for(;!n.cancelled;){i++;try{if(await t(i))return!0}catch(a){o(`\u274C ${r} attempt ${i} error: ${a?.message||a}`)}if(n.cancelled)return!1;let s=Te(e,i);o(`\u{1F504} ${r} retry in ${s}ms (attempt ${i})`),await new Promise(a=>setTimeout(a,s))}return!1}var S={reset:"\x1B[0m",bold:"\x1B[1m",dim:"\x1B[2m",orange:"\x1B[38;2;230;138;110m",green:"\x1B[32m",red:"\x1B[31m",yellow:"\x1B[33m",cyan:"\x1B[36m",white:"\x1B[37m"},$i=()=>Math.min(44,process.stdout.columns||44);function so(e,t=null){let o=$i()-2,n=(a="")=>{let c=a.replace(/\x1b\[[0-9;]*m/g,""),l=Math.max(0,o-c.length);return S.orange+"\u2551"+S.reset+a+" ".repeat(l)+S.orange+"\u2551"+S.reset},i=(a,c=l=>l)=>{let l=a.replace(/\x1b\[[0-9;]*m/g,""),u=Math.floor((o-l.length)/2),f=o-l.length-u;return S.orange+"\u2551"+S.reset+" ".repeat(u)+c(a)+" ".repeat(f)+S.orange+"\u2551"+S.reset},s=["",S.orange+"\u2554"+"\u2550".repeat(o)+"\u2557"+S.reset,n(),i(`\u{1F680} 9Remote v${e}`,a=>S.bold+S.orange+a+S.reset),i("Remote terminal access from anywhere",a=>S.dim+a+S.reset),n()];return t&&(s.push(i(`\u2B06 New version v${t} available!`,a=>S.yellow+S.bold+a+S.reset)),s.push(i(`Run: npm i -g ${Ue}`,a=>S.dim+a+S.reset)),s.push(n())),s.push(S.orange+"\u255A"+"\u2550".repeat(o)+"\u255D"+S.reset),s.push(""),s.join(`
|
|
16
|
+
`)}function Jt(e,t=null){console.log(so(e,t))}var Mi=["\u28FE","\u28FD","\u28FB","\u28BF","\u287F","\u28DF","\u28EF","\u28F7"],io=[{label:"Preparing",desc:"Checking dependencies"},{label:"Connecting",desc:"Creating session"},{label:"Starting tunnel",desc:"Spawning tunnel"},{label:"Verifying tunnel",desc:"Health check"},{label:"Ready",desc:"Tunnel is live"}],Pc=process.platform==="win32",Oc=Pc?120:80;process.on("exit",()=>process.stdout.write("\x1B[?25h"));var Ni=(e,t)=>{process.stdout.write("\x1B[?25h"),process.listenerCount(e)<=1&&process.exit(t)};process.on("SIGINT",()=>Ni("SIGINT",130));process.on("SIGTERM",()=>Ni("SIGTERM",143));var He=0,At=null,Sr=0,Ie=-1,Fn=null,Qt=null,Tr=!1;function Di(){let e=[],t=Ie===io.length-1;return io.forEach((r,o)=>{let n=o===Ie&&Fn?Fn:r.desc;if(o<Ie||t&&o===Ie)e.push(` ${S.green}\u2713${S.reset} ${S.dim}${r.label}${S.reset}`),Qt&&o===Qt.afterIdx&&e.push(` ${S.green}\u2713${S.reset} ${S.cyan}${Qt.text}${S.reset}`);else if(o===Ie){let i=Mi[Sr%Mi.length];e.push(` ${S.orange}${i}${S.reset} ${S.bold}${r.label}${S.reset} ${S.dim}${n}${S.reset}`)}else e.push(` ${S.dim}\u25CB ${r.label}${S.reset}`)}),e}function Bi(){let e=Di();He>0&&process.stdout.write(`\x1B[${He}A\x1B[0J`),process.stdout.write(e.join(`
|
|
17
|
+
`)+`
|
|
18
|
+
`),He=e.length}function Ui(){if(He===0||Ie<0)return;let e=Di();if(e.length!==He){Bi();return}let t=Ie+(Qt&&Qt.afterIdx<Ie?1:0),r=He-t;process.stdout.write(`\x1B[${r}A\r\x1B[2K${e[t]}\x1B[${r}B\r`)}function Ic(){Tr||(process.stdout.write("\x1B[?25l"),Tr=!0)}function Fi(){Tr&&(process.stdout.write("\x1B[?25h"),Tr=!1)}function Ki(e,t=!1,r=null){At&&(clearInterval(At),At=null),Ie=e,Fn=r,Sr=0,t||(He=0),Bi(),e>=0&&e<io.length-1?(Ic(),At=setInterval(()=>{Sr++,Ui()},Oc)):Fi()}function Zt(e){Fn=e,He>0&&Ui()}function Hi(){At&&(clearInterval(At),At=null),Fi(),He=0,Ie=-1,Fn=null,Qt=null,Sr=0}function Le(e,t,r=0,o="",n=null,i=null){return new Promise(s=>{let a=r,c=!0,l=!0,u=process.platform==="win32",f=()=>{if(!c)return;process.stdout.write(l?"\x1B[2J\x1B[H":"\x1B[H"),l=!1;let w=typeof o=="function"?o():o;if(w)for(let E of w.split(`
|
|
19
|
+
`))process.stdout.write(E+`\x1B[K
|
|
20
|
+
`);e&&process.stdout.write(`${S.dim}${e}${S.reset}\x1B[K
|
|
21
|
+
\x1B[K
|
|
22
|
+
`),t.forEach((E,O)=>{let T=O===a?u?">":"\u2605":u?" ":"\u2606",A=O===a?` \x1B[7m${S.bold}${T} ${E.label}${S.reset}`:` ${T} ${E.label}`;process.stdout.write(A+`\x1B[K
|
|
23
|
+
`)}),process.stdout.write("\x1B[J")},p=()=>{if(c){if(c=!1,process.stdin.isTTY)try{process.stdin.setRawMode(!1)}catch{}process.stdin.removeListener("keypress",d),process.stdin.pause()}},d=(w,E)=>{!c||!E||(E.name==="up"?(a=(a-1+t.length)%t.length,f()):E.name==="down"?(a=(a+1)%t.length,f()):E.name==="return"?(p(),s(a)):E.name==="escape"?(p(),s(-1)):E.ctrl&&E.name==="c"&&(p(),i&&i(),process.exit(0)))};if(process.stdin.removeAllListeners("keypress"),br.default.emitKeypressEvents(process.stdin),process.stdin.isTTY)try{process.stdin.setRawMode(!0)}catch{s(-1);return}process.stdin.on("keypress",d),process.stdin.resume(),f(),n&&n(f,()=>{c&&(p(),s(-2))})})}function ao(e){return new Promise(t=>{if(process.stdin.removeAllListeners("keypress"),process.stdin.isTTY)try{process.stdin.setRawMode(!1)}catch{}if(process.stdin.pause(),process.stdout.write(`${e} (y/N): `),br.default.emitKeypressEvents(process.stdin),process.stdin.isTTY)try{process.stdin.setRawMode(!0)}catch{}process.stdin.resume();let r=(o,n)=>{if(!n)return;if(process.stdin.removeListener("keypress",r),process.stdin.isTTY)try{process.stdin.setRawMode(!1)}catch{}process.stdin.pause(),n.ctrl&&n.name==="c"&&(process.stdout.write(`
|
|
24
|
+
`),process.exit(0));let i=(n.name||"").toLowerCase()==="y";process.stdout.write((i?"y":"n")+`
|
|
25
|
+
`),t(i)};process.stdin.on("keypress",r)})}function Wi(e,t){return new Promise(r=>{let o=e?e.slice(0,8):"unknown",n=$i(),i=process.stdin.listeners("keypress").slice();if(process.stdin.removeAllListeners("keypress"),process.stdin.isTTY)try{process.stdin.setRawMode(!1)}catch{}process.stdin.pause();let s=`${S.orange}${"\u2550".repeat(n)}${S.reset}`;if(process.stdout.write(`\x1B[2J\x1B[H
|
|
26
|
+
${s}
|
|
27
|
+
${S.orange}${S.bold} \u{1F514} New Device Connection${S.reset}
|
|
28
|
+
${s}
|
|
29
|
+
Device: ${S.cyan}${o}...${S.reset}
|
|
30
|
+
IP: ${S.cyan}${t}${S.reset}
|
|
31
|
+
${s}
|
|
32
|
+
|
|
33
|
+
Allow this device? ${S.dim}(y/n)${S.reset} `),br.default.emitKeypressEvents(process.stdin),process.stdin.isTTY)try{process.stdin.setRawMode(!0)}catch{}process.stdin.resume();let a=()=>{for(let l of i)process.stdin.on("keypress",l);if(i.length>0){if(process.stdin.isTTY)try{process.stdin.setRawMode(!0)}catch{}process.stdin.resume()}},c=(l,u)=>{if(!u)return;let f=(u.name||"").toLowerCase(),p=f==="y"||u.name==="return",d=f==="n"||u.name==="escape",h=u.ctrl&&u.name==="c";if(!p&&!d&&!h)return;try{if(process.stdin.removeListener("keypress",c),process.stdin.isTTY)try{process.stdin.setRawMode(!1)}catch{}process.stdin.pause()}catch{}h&&process.exit(0);let w=p,E=w?`${S.green}y${S.reset}
|
|
34
|
+
|
|
35
|
+
${S.green}\u2713 Device approved${S.reset}
|
|
36
|
+
`:`${S.red}n${S.reset}
|
|
37
|
+
|
|
38
|
+
${S.red}\u2717 Device rejected${S.reset}
|
|
39
|
+
`;process.stdout.write(E),setTimeout(()=>{try{a()}catch{}r(w)},500)};process.stdin.on("keypress",c)})}function ji(e,t){let r=null,o=!1,n=null,i=45e3,s=()=>{n&&clearTimeout(n),n=setTimeout(()=>{try{r?.destroy()}catch{}},i)},a=async()=>{if(o)return;let c=await zt();r=Ci.default.get(`http://${c}:${e}/api/ui/events`,l=>{let u="";s(),l.on("data",f=>{s(),u+=f.toString();let p=u.split(`
|
|
40
|
+
`);u=p.pop();let d="";for(let h of p)if(h.startsWith("data: "))d=h.slice(6);else if(h===""&&d){try{let w=JSON.parse(d);Promise.resolve(t(w.type,w)).catch(()=>{})}catch{}d=""}}),l.on("end",()=>{n&&clearTimeout(n),o||setTimeout(a,Te(de.sse,1))})}),r.on("error",()=>{n&&clearTimeout(n),o||setTimeout(a,Te(de.sse,1))})};return a(),()=>{o=!0,n&&clearTimeout(n),r?.destroy()}}var co=!1;function Vi(e){co=e}var Kn=null;async function zt(){if(Kn)return Kn;let e=o=>fetch(`http://${o}:${P}/api/health`,{signal:AbortSignal.timeout(2e3)}).then(n=>n.ok?o:Promise.reject()),r=(await Promise.allSettled(["localhost","127.0.0.1"].map(e))).map((o,n)=>o.status==="fulfilled"?["localhost","127.0.0.1"][n]:null);return Kn=r.find(o=>o==="localhost")||r.find(Boolean)||null,Kn||"127.0.0.1"}function Yi(){Kn=null}async function q(e,t){let r=await zt();try{return await fetch(`http://${r}:${P}${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)})}catch{return Yi(),null}}async function Z(e){let t=await zt();try{let r=await fetch(`http://${t}:${P}${e}`);return r.ok?await r.json():null}catch{return Yi(),null}}async function K(e){await q("/api/ui/state",e)}async function M(e,t={}){co&&Ki(e-1,e>I.PREPARING),await K({step:e,stepDesc:"",...t})}function Ar({phase:e,percent:t}){let r=e==="download"?`Downloading tunnel binary ${t??0}%`:"Extracting tunnel binary";co&&Zt(r),K({stepDesc:r})}async function Q(){return!!await Z("/api/health")}async function lo(){let[e,t,r,o]=await Promise.all([Z("/api/ui/state"),Z("/api/device/auto-approve"),Z("/api/autostart"),Z("/api/sleep-inhibit")]);return{desktopEnabled:!!e?.desktopEnabled,remoteAvailable:!!e?.remoteAvailable,autoApprove:!!t?.enabled,autoStart:!!r?.enabled,sleepInhibitMode:o?.mode||"never",sleepInhibitActive:!!o?.active,sleepInhibitPresets:Array.isArray(o?.presets)?o.presets:[]}}function Xi(){let e=Gi.default.networkInterfaces();for(let t of Object.values(e))for(let r of t)if(r.family==="IPv4"&&!r.internal)return r.address;return null}var qi=(e=0)=>t=>`\x1B[${t+e}m`,Qi=(e=0)=>t=>`\x1B[${38+e};5;${t}m`,Ji=(e=0)=>(t,r,o)=>`\x1B[${38+e};2;${t};${r};${o}m`,U={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],gray:[90,39],grey:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgGray:[100,49],bgGrey:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}},pf=Object.keys(U.modifier),Lc=Object.keys(U.color),_c=Object.keys(U.bgColor),df=[...Lc,..._c];function Mc(){let e=new Map;for(let[t,r]of Object.entries(U)){for(let[o,n]of Object.entries(r))U[o]={open:`\x1B[${n[0]}m`,close:`\x1B[${n[1]}m`},r[o]=U[o],e.set(n[0],n[1]);Object.defineProperty(U,t,{value:r,enumerable:!1})}return Object.defineProperty(U,"codes",{value:e,enumerable:!1}),U.color.close="\x1B[39m",U.bgColor.close="\x1B[49m",U.color.ansi=qi(),U.color.ansi256=Qi(),U.color.ansi16m=Ji(),U.bgColor.ansi=qi(10),U.bgColor.ansi256=Qi(10),U.bgColor.ansi16m=Ji(10),Object.defineProperties(U,{rgbToAnsi256:{value(t,r,o){return t===r&&r===o?t<8?16:t>248?231:Math.round((t-8)/247*24)+232:16+36*Math.round(t/255*5)+6*Math.round(r/255*5)+Math.round(o/255*5)},enumerable:!1},hexToRgb:{value(t){let r=/[a-f\d]{6}|[a-f\d]{3}/i.exec(t.toString(16));if(!r)return[0,0,0];let[o]=r;o.length===3&&(o=[...o].map(i=>i+i).join(""));let n=Number.parseInt(o,16);return[n>>16&255,n>>8&255,n&255]},enumerable:!1},hexToAnsi256:{value:t=>U.rgbToAnsi256(...U.hexToRgb(t)),enumerable:!1},ansi256ToAnsi:{value(t){if(t<8)return 30+t;if(t<16)return 90+(t-8);let r,o,n;if(t>=232)r=((t-232)*10+8)/255,o=r,n=r;else{t-=16;let a=t%36;r=Math.floor(t/36)/5,o=Math.floor(a/6)/5,n=a%6/5}let i=Math.max(r,o,n)*2;if(i===0)return 30;let s=30+(Math.round(n)<<2|Math.round(o)<<1|Math.round(r));return i===2&&(s+=60),s},enumerable:!1},rgbToAnsi:{value:(t,r,o)=>U.ansi256ToAnsi(U.rgbToAnsi256(t,r,o)),enumerable:!1},hexToAnsi:{value:t=>U.ansi256ToAnsi(U.hexToAnsi256(t)),enumerable:!1}}),U}var Cc=Mc(),be=Cc;var Rr=R(require("node:process"),1),zi=R(require("node:os"),1),uo=R(require("node:tty"),1);function ye(e,t=globalThis.Deno?globalThis.Deno.args:Rr.default.argv){let r=e.startsWith("-")?"":e.length===1?"-":"--",o=t.indexOf(r+e),n=t.indexOf("--");return o!==-1&&(n===-1||o<n)}var{env:F}=Rr.default,xr;ye("no-color")||ye("no-colors")||ye("color=false")||ye("color=never")?xr=0:(ye("color")||ye("colors")||ye("color=true")||ye("color=always"))&&(xr=1);function $c(){if("FORCE_COLOR"in F)return F.FORCE_COLOR==="true"?1:F.FORCE_COLOR==="false"?0:F.FORCE_COLOR.length===0?1:Math.min(Number.parseInt(F.FORCE_COLOR,10),3)}function Nc(e){return e===0?!1:{level:e,hasBasic:!0,has256:e>=2,has16m:e>=3}}function Dc(e,{streamIsTTY:t,sniffFlags:r=!0}={}){let o=$c();o!==void 0&&(xr=o);let n=r?xr:o;if(n===0)return 0;if(r){if(ye("color=16m")||ye("color=full")||ye("color=truecolor"))return 3;if(ye("color=256"))return 2}if("TF_BUILD"in F&&"AGENT_NAME"in F)return 1;if(e&&!t&&n===void 0)return 0;let i=n||0;if(F.TERM==="dumb")return i;if(Rr.default.platform==="win32"){let s=zi.default.release().split(".");return Number(s[0])>=10&&Number(s[2])>=10586?Number(s[2])>=14931?3:2:1}if("CI"in F)return["GITHUB_ACTIONS","GITEA_ACTIONS","CIRCLECI"].some(s=>s in F)?3:["TRAVIS","APPVEYOR","GITLAB_CI","BUILDKITE","DRONE"].some(s=>s in F)||F.CI_NAME==="codeship"?1:i;if("TEAMCITY_VERSION"in F)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(F.TEAMCITY_VERSION)?1:0;if(F.COLORTERM==="truecolor"||F.TERM==="xterm-kitty"||F.TERM==="xterm-ghostty"||F.TERM==="wezterm")return 3;if("TERM_PROGRAM"in F){let s=Number.parseInt((F.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(F.TERM_PROGRAM){case"iTerm.app":return s>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(F.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(F.TERM)||"COLORTERM"in F?1:i}function Zi(e,t={}){let r=Dc(e,{streamIsTTY:e&&e.isTTY,...t});return Nc(r)}var Bc={stdout:Zi({isTTY:uo.default.isatty(1)}),stderr:Zi({isTTY:uo.default.isatty(2)})},es=Bc;function ts(e,t,r){let o=e.indexOf(t);if(o===-1)return e;let n=t.length,i=0,s="";do s+=e.slice(i,o)+t+r,i=o+n,o=e.indexOf(t,i);while(o!==-1);return s+=e.slice(i),s}function ns(e,t,r,o){let n=0,i="";do{let s=e[o-1]==="\r";i+=e.slice(n,s?o-1:o)+t+(s?`\r
|
|
16
41
|
`:`
|
|
17
42
|
`)+r,n=o+1,o=e.indexOf(`
|
|
18
|
-
`,n)}while(o!==-1);return i+=e.slice(n),i}var{stdout:
|
|
19
|
-
`);return i!==-1&&(t=
|
|
20
|
-
`),(0,
|
|
43
|
+
`,n)}while(o!==-1);return i+=e.slice(n),i}var{stdout:rs,stderr:os}=es,fo=Symbol("GENERATOR"),en=Symbol("STYLER"),Hn=Symbol("IS_EMPTY"),is=["ansi","ansi","ansi256","ansi16m"],tn=Object.create(null),Uc=(e,t={})=>{if(t.level&&!(Number.isInteger(t.level)&&t.level>=0&&t.level<=3))throw new Error("The `level` option should be an integer from 0 to 3");let r=rs?rs.level:0;e.level=t.level===void 0?r:t.level};var Fc=e=>{let t=(...r)=>r.join(" ");return Uc(t,e),Object.setPrototypeOf(t,Wn.prototype),t};function Wn(e){return Fc(e)}Object.setPrototypeOf(Wn.prototype,Function.prototype);for(let[e,t]of Object.entries(be))tn[e]={get(){let r=kr(this,mo(t.open,t.close,this[en]),this[Hn]);return Object.defineProperty(this,e,{value:r}),r}};tn.visible={get(){let e=kr(this,this[en],!0);return Object.defineProperty(this,"visible",{value:e}),e}};var po=(e,t,r,...o)=>e==="rgb"?t==="ansi16m"?be[r].ansi16m(...o):t==="ansi256"?be[r].ansi256(be.rgbToAnsi256(...o)):be[r].ansi(be.rgbToAnsi(...o)):e==="hex"?po("rgb",t,r,...be.hexToRgb(...o)):be[r][e](...o),Kc=["rgb","hex","ansi256"];for(let e of Kc){tn[e]={get(){let{level:r}=this;return function(...o){let n=mo(po(e,is[r],"color",...o),be.color.close,this[en]);return kr(this,n,this[Hn])}}};let t="bg"+e[0].toUpperCase()+e.slice(1);tn[t]={get(){let{level:r}=this;return function(...o){let n=mo(po(e,is[r],"bgColor",...o),be.bgColor.close,this[en]);return kr(this,n,this[Hn])}}}}var Hc=Object.defineProperties(()=>{},{...tn,level:{enumerable:!0,get(){return this[fo].level},set(e){this[fo].level=e}}}),mo=(e,t,r)=>{let o,n;return r===void 0?(o=e,n=t):(o=r.openAll+e,n=t+r.closeAll),{open:e,close:t,openAll:o,closeAll:n,parent:r}},kr=(e,t,r)=>{let o=(...n)=>Wc(o,n.length===1?""+n[0]:n.join(" "));return Object.setPrototypeOf(o,Hc),o[fo]=e,o[en]=t,o[Hn]=r,o},Wc=(e,t)=>{if(e.level<=0||!t)return e[Hn]?"":t;let r=e[en];if(r===void 0)return t;let{openAll:o,closeAll:n}=r;if(t.includes("\x1B"))for(;r!==void 0;)t=ts(t,r.close,r.open),r=r.parent;let i=t.indexOf(`
|
|
44
|
+
`);return i!==-1&&(t=ns(t,n,o,i)),o+t+n};Object.defineProperties(Wn.prototype,tn);var jc=Wn(),Ef=Wn({level:os?os.level:0});var m=jc;var bf=process.env.NODE_ENV==="development";var L=process.env.NREMOTE_WORKER_URL||"https://9remote.cc",ss=3e4,as=500,ho=300,Ae={cmdMs:1e3,pendingApprovalMs:3e3,statsMs:5e3,serverReadyIntervalMs:200,serverReadyTimeoutMs:5e3,bgServerReadyTimeoutMs:15e3,bgServerReadyIntervalMs:300},st={intervalMs:2e3,timeoutMs:12e4,fetchTimeoutMs:5e3,dnsTimeoutMs:2e3,maxLogEntries:80,postReadyHoldMs:2e3},ne={killCloudflaredMs:500,killCloudflaredTuiMs:300,serverBootMs:2e3,guestRecheckMs:3e3,trayReadyMs:1e3,postReadyHoldMs:2e3,bgSpawnFlushMs:400};var We={maxLogLines:200,headerWidth:44},xt={checkIntervalMs:36e5,connectCheckDebounceMs:9e5,maxRetry:3,retryDelayMs:3e3,verifyTimeoutMs:15e3,lockTtlMs:3e5,lockFile:"update.lock",gateTimeoutMs:6e4},cs=5e3,go=12e4,Pr=1500,ls=2,us=3e4,fe={orange:m.rgb(230,138,110),orangeDim:m.rgb(200,120,95)};function fs(){return process.env.CODESPACES==="true"}var Gc=yo.default.dirname((0,ds.fileURLToPath)(__importMetaUrl));async function at(){let e=await jt();if(fs()&&process.env.NREMOTE_API_KEY)return Ke(e,process.env.NREMOTE_API_KEY,"Codespace");let t=$n();if(t.key)di(t.key)&&(t=await Vc(e,t));else{let r=St(e);t=Ke(e,r,"Default")}return t}async function Vc(e,t){if(await Q())return t;let r=St(e);if(j().remoteEnabled===!1)return Ke(e,r,t.name||"Default");await bt(r,L,null,t.key);let o=$n();return Zr(o.key)?o:Ke(e,r,t.name||"Default")}function _e(){return"3.0.27"}var J=require("fs"),xs=require("url"),Vn=require("child_process"),xe=R(require("path"),1),It=R(require("os"),1);var nn=R(require("fs"),1),wo=R(require("path"),1),ms=R(require("os"),1),hs=require("child_process"),Or=wo.default.join(ms.default.homedir(),".9remote","pids");function Yc(){try{nn.default.existsSync(Or)||nn.default.mkdirSync(Or,{recursive:!0})}catch{}}function vo(e){return wo.default.join(Or,`${e}.pid`)}function Me(e,t){if(t)try{Yc(),nn.default.writeFileSync(vo(e),String(t))}catch{}}function jn(e){try{let t=nn.default.readFileSync(vo(e),"utf8").trim(),r=parseInt(t,10);return Number.isFinite(r)&&r>0?r:null}catch{return null}}function je(e){try{nn.default.unlinkSync(vo(e))}catch{}}function Eo(e){if(!e)return!1;try{return process.kill(e,0),!0}catch{return!1}}function Xc(e){let t=jn(e);if(je(e),!t)return!1;try{process.platform==="win32"?(0,hs.execSync)(`taskkill /F /T /PID ${t}`,{stdio:"ignore",windowsHide:!0}):process.kill(t,"SIGKILL")}catch{}return!0}var qc=["cloudflared","agent"];function gs(){for(let e of qc)Xc(e)}function ys(){return Or}var Pt=require("child_process"),N=require("fs"),Rt=require("path"),To=R(require("os"),1),kt=R(require("path"),1),vs=require("url");var Lr=(0,Rt.join)(V.LOGS,"autostart.log"),Ir="cc.9remote.agent",_r="9Remote",Mr=["--tray","--skip-update","--start"],Gn=To.default.homedir(),ws=kt.default.dirname((0,vs.fileURLToPath)(__importMetaUrl)),re={darwin:(0,Rt.join)(Gn,"Library","LaunchAgents",`${Ir}.plist`),linux:(0,Rt.join)(Gn,".config","autostart",`${Ir}.desktop`),linuxSystemd:(0,Rt.join)(Gn,".config","systemd","user",`${Ir}.service`),win:(0,Rt.join)(process.env.APPDATA||"","Microsoft","Windows","Start Menu","Programs","Startup",`${_r}.vbs`)};function ct(){for(let e=ws,t=null;e!==t;t=e,e=kt.default.dirname(e)){let r=kt.default.join(e,"package.json");if((0,N.existsSync)(r)){try{let o=JSON.parse((0,N.readFileSync)(r,"utf8"));if(o.name!==ie)continue;let n=typeof o.bin=="string"?o.bin:o.bin?.[ie];if(n){let i=kt.default.resolve(e,n);if((0,N.existsSync)(i))return i}}catch{}break}}return process.argv[1]||kt.default.resolve(ws,"..","index.js")}function Ce(){return process.execPath}function Es(){return process.versions.electron?"env ELECTRON_RUN_AS_NODE=1 ":""}function Ss(e){let t=Ce(),r=ct();if(process.platform==="win32"){let n=e.join(" "),i=(0,Rt.join)(To.default.tmpdir(),`${ie}-launch.vbs`);return(0,N.writeFileSync)(i,`CreateObject("WScript.Shell").Run """${t}"" ""${r}"" ${n}", 0, False
|
|
45
|
+
`),(0,Pt.execFile)("wscript.exe",[i],{windowsHide:!0}).unref?.(),null}let o=(0,Pt.spawn)(t,[r,...e],{detached:!0,stdio:"ignore"});return o.unref(),o.pid||null}function Ts(){let e=kt.default.dirname(Ce()),t=["/usr/local/bin","/usr/bin","/bin","/usr/sbin","/sbin","/opt/homebrew/bin"];return t.includes(e)||t.unshift(e),t.join(":")}function So(e){return String(e).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")}function Qc(e,t){let r=[e,t,...Mr].map(o=>` <string>${So(o)}</string>`).join(`
|
|
21
46
|
`);return`<?xml version="1.0" encoding="UTF-8"?>
|
|
22
47
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
23
48
|
<plist version="1.0">
|
|
24
49
|
<dict>
|
|
25
50
|
<key>Label</key>
|
|
26
|
-
<string>${
|
|
51
|
+
<string>${Ir}</string>
|
|
27
52
|
<key>ProgramArguments</key>
|
|
28
53
|
<array>
|
|
29
54
|
${r}
|
|
@@ -35,46 +60,65 @@ ${r}
|
|
|
35
60
|
<key>EnvironmentVariables</key>
|
|
36
61
|
<dict>
|
|
37
62
|
<key>PATH</key>
|
|
38
|
-
<string>${
|
|
63
|
+
<string>${So(Ts())}</string>
|
|
39
64
|
<key>HOME</key>
|
|
40
|
-
<string>${
|
|
65
|
+
<string>${So(Gn)}</string>
|
|
41
66
|
</dict>
|
|
42
67
|
<key>StandardOutPath</key>
|
|
43
|
-
<string>${
|
|
68
|
+
<string>${Lr}</string>
|
|
44
69
|
<key>StandardErrorPath</key>
|
|
45
|
-
<string>${
|
|
70
|
+
<string>${Lr}</string>
|
|
46
71
|
</dict>
|
|
47
72
|
</plist>
|
|
48
|
-
`}function
|
|
49
|
-
WshShell.Run """${
|
|
50
|
-
`}function
|
|
73
|
+
`}function Jc(){return(0,N.existsSync)(re.darwin)}function Zc(){let e=Mr.join(" ");return`Set WshShell = CreateObject("WScript.Shell")
|
|
74
|
+
WshShell.Run """${Ce()}"" ""${ct()}"" ${e}", 0, False
|
|
75
|
+
`}function zc(){try{(0,Pt.execFileSync)("reg",["DELETE","HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Run","/V",_r,"/F"],{windowsHide:!0,stdio:"ignore"})}catch{}}function el(){return(0,N.existsSync)(re.win)}function tl(){let e=`${Ce()} ${ct()} ${Mr.join(" ")}`;return`[Desktop Entry]
|
|
51
76
|
Type=Application
|
|
52
|
-
Name=${
|
|
77
|
+
Name=${_r}
|
|
53
78
|
Exec=${e}
|
|
54
79
|
X-GNOME-Autostart-enabled=true
|
|
55
80
|
NoDisplay=false
|
|
56
81
|
Terminal=false
|
|
57
|
-
`}function
|
|
58
|
-
Description=${
|
|
82
|
+
`}function nl(){let e=Mr.map(t=>`'${t}'`).join(" ");return`[Unit]
|
|
83
|
+
Description=${_r} Agent
|
|
59
84
|
After=network-online.target
|
|
60
85
|
Wants=network-online.target
|
|
61
86
|
|
|
62
87
|
[Service]
|
|
63
88
|
Type=simple
|
|
64
|
-
ExecStart=${
|
|
89
|
+
ExecStart=${Ce()} ${ct()} ${e}
|
|
65
90
|
Restart=always
|
|
66
91
|
RestartSec=10
|
|
67
|
-
Environment=PATH=${
|
|
68
|
-
Environment=HOME=${
|
|
69
|
-
StandardOutput=append:${
|
|
70
|
-
StandardError=append:${
|
|
92
|
+
Environment=PATH=${Ts()}
|
|
93
|
+
Environment=HOME=${Gn}
|
|
94
|
+
StandardOutput=append:${Lr}
|
|
95
|
+
StandardError=append:${Lr}
|
|
71
96
|
|
|
72
97
|
[Install]
|
|
73
98
|
WantedBy=default.target
|
|
74
|
-
`}function
|
|
99
|
+
`}function rl(e){try{return(0,Pt.execFileSync)("systemctl",["--user",...e],{stdio:"ignore"}),!0}catch{return!1}}function ol(){return(0,N.existsSync)(re.linux)||(0,N.existsSync)(re.linuxSystemd)}async function il(){try{if(process.platform==="darwin")return Jc();if(process.platform==="win32")return await el();if(process.platform==="linux")return ol()}catch{}return!1}async function bs(){try{if(process.platform==="win32"&&zc(),!await il())return!1;if(process.platform==="darwin"){let e=Qc(Ce(),ct());return((0,N.existsSync)(re.darwin)?(0,N.readFileSync)(re.darwin,"utf8"):"")===e?!1:((0,N.writeFileSync)(re.darwin,e),!0)}if(process.platform==="win32"){let e=Zc();return((0,N.existsSync)(re.win)?(0,N.readFileSync)(re.win,"utf8"):"")===e?!1:((0,N.writeFileSync)(re.win,e),!0)}if(process.platform==="linux"){if((0,N.existsSync)(re.linuxSystemd)){let e=nl();return(0,N.readFileSync)(re.linuxSystemd,"utf8")===e?!1:((0,N.writeFileSync)(re.linuxSystemd,e),rl(["daemon-reload"]),!0)}if((0,N.existsSync)(re.linux)){let e=tl();return(0,N.readFileSync)(re.linux,"utf8")===e?!1:((0,N.writeFileSync)(re.linux,e),!0)}}}catch{}return!1}var rn=B("update"),sl=xe.default.dirname((0,xs.fileURLToPath)(__importMetaUrl)),Rs=8e3;var Ot=2208,bo=xe.default.join(It.default.homedir(),".9remote","cloudflared.pid");function al(){try{gs()}catch{}try{if((0,J.existsSync)(bo)){let e=parseInt((0,J.readFileSync)(bo,"utf8"));if(Number.isFinite(e))try{process.kill(e)}catch{}try{(0,J.unlinkSync)(bo)}catch{}}}catch{}try{process.platform==="win32"?(0,Vn.execSync)(`for /f "tokens=5" %a in ('netstat -aon ^| findstr :${Ot}') do taskkill /F /PID %a`,{stdio:"ignore",windowsHide:!0}):(0,Vn.execSync)(`lsof -ti:${Ot} | xargs kill -9 2>/dev/null || true`,{stdio:"ignore"})}catch{}if(process.platform==="win32"){let e=Date.now()+1500;for(;Date.now()<e;);}}function ks(){return"3.0.27"}function Ps(e,t){let r=e.split(".").map(Number),o=t.split(".").map(Number);for(let n=0;n<3;n++){if(o[n]>r[n])return!0;if(o[n]<r[n])return!1}return!1}function cl(){return process.env.CODESPACES==="true"||process.env.GITHUB_CODESPACES_PORT_FORWARDING_DOMAIN?"GitHub Codespaces":(0,J.existsSync)("/.dockerenv")?"Docker":null}function $r(){al()}async function Os(){try{let e=ks();if(!e)return null;let t=await H(qr,{signal:AbortSignal.timeout(Rs)});if(!t.ok)return null;let{version:r}=await t.json();return r&&Ps(e,r)?{current:e,latest:r}:null}catch{return null}}var Cr=xe.default.join(V.STATE,xt.lockFile);function ll(){try{if((0,J.existsSync)(Cr)){let{pid:e,ts:t}=JSON.parse((0,J.readFileSync)(Cr,"utf8")),r=Date.now()-t<xt.lockTtlMs,o=!1;try{process.kill(e,0),o=!0}catch{}if(r&&o)return!1}}catch{}try{(0,J.writeFileSync)(Cr,JSON.stringify({pid:process.pid,ts:Date.now()}))}catch{}return!0}async function ul(){try{let e=await H(qr,{signal:AbortSignal.timeout(Rs)});if(!e.ok)return null;let{version:t}=await e.json();return t||null}catch{return null}}function fl(){try{if(process.env.NREMOTE_REGISTRY)return`--registry ${new URL(process.env.NREMOTE_REGISTRY).origin}`}catch{}return""}function pl(){let e=ct(),t=xe.default.sep,r=`${t}lib${t}node_modules${t}`,o=e.indexOf(r);return o>0?{global:"-g",prefix:`--prefix "${e.slice(0,o)}"`}:(o=e.indexOf(`${t}node_modules${t}`),o>0?{global:"",prefix:`--prefix "${e.slice(0,o)}"`}:{global:"-g",prefix:""})}function As(){let e=process.argv.slice(2).filter(n=>n!=="--skip-update"),r=e.includes("ui")||e.includes("start")||e.some(n=>["--tray","--auto","--start"].includes(n))?e.join(" "):"--tray";return`${r.includes("--start")||r.includes("start")?r:`${r} --start`} --skip-update`}function dl(){let e=process.env.NREMOTE_NPM_CLI;return e&&(0,J.existsSync)(e)?process.platform==="win32"?`"${Ce()}" "${e}"`:`env ELECTRON_RUN_AS_NODE=1 "${Ce()}" "${e}"`:"npm"}function ml(e,t){let r=xe.default.join(It.default.tmpdir(),`${ie}-gate.cjs`),o=`const http = require("http");
|
|
100
|
+
const PORT = ${e};
|
|
101
|
+
const EXIT_MS = ${t};
|
|
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>';
|
|
103
|
+
function handler(req, res) {
|
|
104
|
+
if (req.url.startsWith("/api/health")) { res.writeHead(503, { "Content-Type": "text/plain" }); return res.end("updating"); }
|
|
105
|
+
res.writeHead(200, { "Content-Type": "text/html; charset=utf-8", "Cache-Control": "no-store" });
|
|
106
|
+
res.end(HTML);
|
|
107
|
+
}
|
|
108
|
+
// The real agent binds dual-stack; localhost may resolve to ::1 first, so the
|
|
109
|
+
// gate must answer on both loopback families or the webview still goes black.
|
|
110
|
+
function bind(host, attempt) {
|
|
111
|
+
const s = http.createServer(handler);
|
|
112
|
+
s.on("error", (e) => { if (e.code === "EADDRINUSE" && attempt < 150) setTimeout(() => bind(host, attempt + 1), 200); });
|
|
113
|
+
s.listen(PORT, host);
|
|
114
|
+
}
|
|
115
|
+
bind("127.0.0.1", 0);
|
|
116
|
+
bind("::1", 0);
|
|
117
|
+
setTimeout(() => process.exit(0), EXIT_MS);
|
|
118
|
+
`;return(0,J.writeFileSync)(r,o),r}function hl({currentVersion:e,latest:t,agentPid:r}){let o=ys(),n=fl(),i=Ce(),s=ml(Ot,xt.gateTimeoutMs),a=Es(),c=ct(),l=Cr,{global:u,prefix:f}=pl(),p=`${u} --prefer-online --no-audit --no-fund ${n} ${f}`.trim(),d=dl();if(process.platform==="win32"){let E=xe.default.join(It.default.tmpdir(),`${ie}-restart.vbs`),O=`@echo off
|
|
75
119
|
setlocal EnableDelayedExpansion
|
|
76
120
|
set "NODE=${i}"
|
|
77
|
-
set "CLI=${
|
|
121
|
+
set "CLI=${c}"
|
|
78
122
|
${process.env.NREMOTE_NPM_CLI?'set "ELECTRON_RUN_AS_NODE=1"':""}
|
|
79
123
|
|
|
80
124
|
:waitloop
|
|
@@ -90,16 +134,19 @@ for %%N in (cloudflared agent) do (
|
|
|
90
134
|
del /f /q "${o}\\%%N.pid" >nul 2>&1
|
|
91
135
|
)
|
|
92
136
|
)
|
|
93
|
-
for /f "tokens=5" %%a in ('netstat -aon ^| findstr :${
|
|
137
|
+
for /f "tokens=5" %%a in ('netstat -aon ^| findstr :${Ot}') do taskkill /F /PID %%a >nul 2>&1
|
|
94
138
|
timeout /t 3 /nobreak >nul
|
|
95
139
|
|
|
140
|
+
REM Loading gate: hold the port with an updating page during reinstall
|
|
141
|
+
start "" /b "%NODE%" "${s}"
|
|
142
|
+
|
|
96
143
|
set ATTEMPT=0
|
|
97
144
|
:installloop
|
|
98
145
|
set /a ATTEMPT+=1
|
|
99
|
-
call ${
|
|
146
|
+
call ${d} install ${Ue} ${p} >nul 2>&1
|
|
100
147
|
if !ERRORLEVEL! EQU 0 goto verify
|
|
101
|
-
if !ATTEMPT! GEQ ${
|
|
102
|
-
call ${
|
|
148
|
+
if !ATTEMPT! GEQ ${xt.maxRetry} (
|
|
149
|
+
call ${d} install ${Ue} ${p} --omit=optional >nul 2>&1
|
|
103
150
|
goto verify
|
|
104
151
|
)
|
|
105
152
|
timeout /t 3 /nobreak >nul
|
|
@@ -107,7 +154,7 @@ goto installloop
|
|
|
107
154
|
|
|
108
155
|
:verify
|
|
109
156
|
set "NEWVER="
|
|
110
|
-
set "VERFILE=%TEMP%\\${
|
|
157
|
+
set "VERFILE=%TEMP%\\${ie}-ver.txt"
|
|
111
158
|
"%NODE%" "%CLI%" --version > "%VERFILE%" 2>nul
|
|
112
159
|
REM Read first line + strip surrounding whitespace/CR via for/f tokens
|
|
113
160
|
for /f "usebackq tokens=* delims= " %%V in ("%VERFILE%") do (
|
|
@@ -118,15 +165,19 @@ for /f "usebackq tokens=* delims= " %%V in ("%VERFILE%") do (
|
|
|
118
165
|
del /f /q "%VERFILE%" >nul 2>&1
|
|
119
166
|
if defined NEWVER set "NEWVER=!NEWVER: =!"
|
|
120
167
|
if not "!NEWVER!"=="${t}" (
|
|
121
|
-
call ${
|
|
168
|
+
call ${d} install ${ie}@${e} ${p} >nul 2>&1
|
|
122
169
|
)
|
|
123
|
-
del /f /q "${
|
|
170
|
+
del /f /q "${l}" >nul 2>&1
|
|
171
|
+
|
|
172
|
+
REM Free the port for the new agent (kills the loading gate)
|
|
173
|
+
for /f "tokens=5" %%a in ('netstat -aon ^| findstr :${Ot}') do taskkill /F /PID %%a >nul 2>&1
|
|
174
|
+
timeout /t 1 /nobreak >nul
|
|
124
175
|
|
|
125
|
-
wscript "${
|
|
176
|
+
wscript "${E}"
|
|
126
177
|
exit /b 0
|
|
127
|
-
`,
|
|
128
|
-
`);let
|
|
129
|
-
`),{shellCmd:["wscript.exe",[
|
|
178
|
+
`,T=xe.default.join(It.default.tmpdir(),`${ie}-update.bat`);(0,J.writeFileSync)(T,O),(0,J.writeFileSync)(E,`CreateObject("WScript.Shell").Run """%NODE%"" ""%CLI%"" ${As()}", 0, False`.replace("%NODE%",i).replace("%CLI%",c)+`
|
|
179
|
+
`);let A=xe.default.join(It.default.tmpdir(),`${ie}-update.vbs`);return(0,J.writeFileSync)(A,`CreateObject("WScript.Shell").Run "cmd /c ""${T}""", 0, False
|
|
180
|
+
`),{shellCmd:["wscript.exe",[A]],windowsVerbatim:!1}}let h=`#!/bin/bash
|
|
130
181
|
# Wait for agent to exit so it releases the cli.cjs file lock
|
|
131
182
|
while kill -0 ${r} 2>/dev/null; do sleep 1; done
|
|
132
183
|
|
|
@@ -139,123 +190,105 @@ for name in cloudflared agent; do
|
|
|
139
190
|
rm -f "$f"
|
|
140
191
|
fi
|
|
141
192
|
done
|
|
142
|
-
lsof -ti:${
|
|
193
|
+
lsof -ti:${Ot} | xargs kill -9 2>/dev/null || true
|
|
143
194
|
sleep 2
|
|
144
195
|
|
|
196
|
+
# Loading gate holds the port so webview reloads show "updating", not black
|
|
197
|
+
(${a}"${i}" "${s}" >/dev/null 2>&1 &)
|
|
198
|
+
|
|
145
199
|
attempt=0
|
|
146
|
-
while [ $attempt -lt ${
|
|
200
|
+
while [ $attempt -lt ${xt.maxRetry} ]; do
|
|
147
201
|
attempt=$((attempt+1))
|
|
148
202
|
echo "Installing (attempt $attempt)..."
|
|
149
|
-
if ${
|
|
150
|
-
if [ $attempt -eq ${
|
|
151
|
-
${
|
|
203
|
+
if ${d} install ${Ue} ${p}; then break; fi
|
|
204
|
+
if [ $attempt -eq ${xt.maxRetry} ]; then
|
|
205
|
+
${d} install ${Ue} ${p} --omit=optional || true
|
|
152
206
|
fi
|
|
153
207
|
sleep 3
|
|
154
208
|
done
|
|
155
209
|
|
|
156
210
|
# Verify version == latest; roll back if the new binary is broken/wrong (R2)
|
|
157
211
|
# Take first line + strip ANSI escapes so trailing cursor codes don't corrupt compare
|
|
158
|
-
NEWVER=$(${
|
|
212
|
+
NEWVER=$(${a}"${i}" "${c}" --version 2>/dev/null | head -1 | sed 's/\x1B[[0-9;?]*[a-zA-Z]//g' | tr -d '[:space:]')
|
|
159
213
|
if [ "$NEWVER" != "${t}" ]; then
|
|
160
214
|
echo "Verify failed (got $NEWVER, want ${t}), rolling back to ${e}..."
|
|
161
|
-
${
|
|
215
|
+
${d} install ${ie}@${e} ${p} || true
|
|
162
216
|
fi
|
|
163
217
|
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
`,h=_e.default.join(Qt.default.tmpdir(),`${le}-update.sh`);return(0,q.writeFileSync)(h,d,{mode:493}),{shellCmd:["sh",[h]],windowsVerbatim:!1}}async function os(){let e=ts();if(!e)return Xt.warn("update skipped: no version (source run?)"),!1;let t=Qc();if(t)return Xt.warn(`update skipped: restricted env (${t})`),!1;let r=await Jc();if(!r)return Xt.warn("update skipped: registry unreachable"),!1;if(!ns(e,r))return Xt.info(`update skipped: ${e} >= registry ${r}`),!1;if(!qc())return Xt.warn("update skipped: lock held by another run"),!1;Xt.info(`update go: ${e} -> ${r}`);let{shellCmd:o,windowsVerbatim:n}=tl({currentVersion:e,latest:r,agentPid:process.pid});return(0,Un.spawn)(o[0],o[1],{detached:!0,stdio:"ignore",windowsHide:!0,windowsVerbatimArguments:n}).unref(),setTimeout(()=>process.exit(0),500),!0}var ys=R(require("os"),1);var Mr=R(require("readline"),1),ss=R(require("http"),1);var ho=require("child_process"),nl={screenRecording:"x-apple.systempreferences:com.apple.preference.security?Privacy_ScreenCapture",accessibility:"x-apple.systempreferences:com.apple.preference.security?Privacy_Accessibility"};function Or(e){let t=nl[e];t&&process.platform==="darwin"&&(0,ho.exec)(`open "${t}"`,()=>{})}function Ae({strategy:e,baseMs:t,maxMs:r},o){let n=Math.max(1,o),i=e==="exp"?t*Math.pow(2,n-1):t*n;return Math.min(i,r)}async function Ir({config:e,task:t,label:r="task",log:o=()=>{},ctx:n={}}){let i=0;for(;!n.cancelled;){i++;try{if(await t(i))return!0}catch(a){o(`\u274C ${r} attempt ${i} error: ${a?.message||a}`)}if(n.cancelled)return!1;let s=Ae(e,i);o(`\u{1F504} ${r} retry in ${s}ms (attempt ${i})`),await new Promise(a=>setTimeout(a,s))}return!1}var S={reset:"\x1B[0m",bold:"\x1B[1m",dim:"\x1B[2m",orange:"\x1B[38;2;230;138;110m",green:"\x1B[32m",red:"\x1B[31m",yellow:"\x1B[33m",cyan:"\x1B[36m",white:"\x1B[37m"},as=()=>Math.min(44,process.stdout.columns||44);function yo(e,t=null){let o=as()-2,n=(a="")=>{let c=a.replace(/\x1b\[[0-9;]*m/g,""),l=Math.max(0,o-c.length);return S.orange+"\u2551"+S.reset+a+" ".repeat(l)+S.orange+"\u2551"+S.reset},i=(a,c=l=>l)=>{let l=a.replace(/\x1b\[[0-9;]*m/g,""),u=Math.floor((o-l.length)/2),f=o-l.length-u;return S.orange+"\u2551"+S.reset+" ".repeat(u)+c(a)+" ".repeat(f)+S.orange+"\u2551"+S.reset},s=["",S.orange+"\u2554"+"\u2550".repeat(o)+"\u2557"+S.reset,n(),i(`\u{1F680} 9Remote v${e}`,a=>S.bold+S.orange+a+S.reset),i("Remote terminal access from anywhere",a=>S.dim+a+S.reset),n()];return t&&(s.push(i(`\u2B06 New version v${t} available!`,a=>S.yellow+S.bold+a+S.reset)),s.push(i(`Run: npm i -g ${Ue}`,a=>S.dim+a+S.reset)),s.push(n())),s.push(S.orange+"\u255A"+"\u2550".repeat(o)+"\u255D"+S.reset),s.push(""),s.join(`
|
|
168
|
-
`)}function Jt(e,t=null){console.log(yo(e,t))}var is=["\u28FE","\u28FD","\u28FB","\u28BF","\u287F","\u28DF","\u28EF","\u28F7"],go=[{label:"Preparing",desc:"Checking dependencies"},{label:"Connecting",desc:"Creating session"},{label:"Starting tunnel",desc:"Spawning tunnel"},{label:"Verifying tunnel",desc:"Health check"},{label:"Ready",desc:"Tunnel is live"}],rl=process.platform==="win32",ol=rl?120:80;process.on("exit",()=>process.stdout.write("\x1B[?25h"));var cs=(e,t)=>{process.stdout.write("\x1B[?25h"),process.listenerCount(e)<=1&&process.exit(t)};process.on("SIGINT",()=>cs("SIGINT",130));process.on("SIGTERM",()=>cs("SIGTERM",143));var We=0,At=null,Lr=0,Me=-1,Fn=null,qt=null,_r=!1;function ls(){let e=[],t=Me===go.length-1;return go.forEach((r,o)=>{let n=o===Me&&Fn?Fn:r.desc;if(o<Me||t&&o===Me)e.push(` ${S.green}\u2713${S.reset} ${S.dim}${r.label}${S.reset}`),qt&&o===qt.afterIdx&&e.push(` ${S.green}\u2713${S.reset} ${S.cyan}${qt.text}${S.reset}`);else if(o===Me){let i=is[Lr%is.length];e.push(` ${S.orange}${i}${S.reset} ${S.bold}${r.label}${S.reset} ${S.dim}${n}${S.reset}`)}else e.push(` ${S.dim}\u25CB ${r.label}${S.reset}`)}),e}function us(){let e=ls();We>0&&process.stdout.write(`\x1B[${We}A\x1B[0J`),process.stdout.write(e.join(`
|
|
169
|
-
`)+`
|
|
170
|
-
`),We=e.length}function fs(){if(We===0||Me<0)return;let e=ls();if(e.length!==We){us();return}let t=Me+(qt&&qt.afterIdx<Me?1:0),r=We-t;process.stdout.write(`\x1B[${r}A\r\x1B[2K${e[t]}\x1B[${r}B\r`)}function il(){_r||(process.stdout.write("\x1B[?25l"),_r=!0)}function ps(){_r&&(process.stdout.write("\x1B[?25h"),_r=!1)}function ds(e,t=!1,r=null){At&&(clearInterval(At),At=null),Me=e,Fn=r,Lr=0,t||(We=0),us(),e>=0&&e<go.length-1?(il(),At=setInterval(()=>{Lr++,fs()},ol)):ps()}function Zt(e){Fn=e,We>0&&fs()}function ms(){At&&(clearInterval(At),At=null),ps(),We=0,Me=-1,Fn=null,qt=null,Lr=0}function Ce(e,t,r=0,o="",n=null,i=null){return new Promise(s=>{let a=r,c=!0,l=!0,u=process.platform==="win32",f=()=>{if(!c)return;process.stdout.write(l?"\x1B[2J\x1B[H":"\x1B[H"),l=!1;let w=typeof o=="function"?o():o;if(w)for(let E of w.split(`
|
|
171
|
-
`))process.stdout.write(E+`\x1B[K
|
|
172
|
-
`);e&&process.stdout.write(`${S.dim}${e}${S.reset}\x1B[K
|
|
173
|
-
\x1B[K
|
|
174
|
-
`),t.forEach((E,O)=>{let T=O===a?u?">":"\u2605":u?" ":"\u2606",A=O===a?` \x1B[7m${S.bold}${T} ${E.label}${S.reset}`:` ${T} ${E.label}`;process.stdout.write(A+`\x1B[K
|
|
175
|
-
`)}),process.stdout.write("\x1B[J")},p=()=>{if(c){if(c=!1,process.stdin.isTTY)try{process.stdin.setRawMode(!1)}catch{}process.stdin.removeListener("keypress",d),process.stdin.pause()}},d=(w,E)=>{!c||!E||(E.name==="up"?(a=(a-1+t.length)%t.length,f()):E.name==="down"?(a=(a+1)%t.length,f()):E.name==="return"?(p(),s(a)):E.name==="escape"?(p(),s(-1)):E.ctrl&&E.name==="c"&&(p(),i&&i(),process.exit(0)))};if(process.stdin.removeAllListeners("keypress"),Mr.default.emitKeypressEvents(process.stdin),process.stdin.isTTY)try{process.stdin.setRawMode(!0)}catch{s(-1);return}process.stdin.on("keypress",d),process.stdin.resume(),f(),n&&n(f,()=>{c&&(p(),s(-2))})})}function wo(e){return new Promise(t=>{if(process.stdin.removeAllListeners("keypress"),process.stdin.isTTY)try{process.stdin.setRawMode(!1)}catch{}if(process.stdin.pause(),process.stdout.write(`${e} (y/N): `),Mr.default.emitKeypressEvents(process.stdin),process.stdin.isTTY)try{process.stdin.setRawMode(!0)}catch{}process.stdin.resume();let r=(o,n)=>{if(!n)return;if(process.stdin.removeListener("keypress",r),process.stdin.isTTY)try{process.stdin.setRawMode(!1)}catch{}process.stdin.pause(),n.ctrl&&n.name==="c"&&(process.stdout.write(`
|
|
176
|
-
`),process.exit(0));let i=(n.name||"").toLowerCase()==="y";process.stdout.write((i?"y":"n")+`
|
|
177
|
-
`),t(i)};process.stdin.on("keypress",r)})}function hs(e,t){return new Promise(r=>{let o=e?e.slice(0,8):"unknown",n=as(),i=process.stdin.listeners("keypress").slice();if(process.stdin.removeAllListeners("keypress"),process.stdin.isTTY)try{process.stdin.setRawMode(!1)}catch{}process.stdin.pause();let s=`${S.orange}${"\u2550".repeat(n)}${S.reset}`;if(process.stdout.write(`\x1B[2J\x1B[H
|
|
178
|
-
${s}
|
|
179
|
-
${S.orange}${S.bold} \u{1F514} New Device Connection${S.reset}
|
|
180
|
-
${s}
|
|
181
|
-
Device: ${S.cyan}${o}...${S.reset}
|
|
182
|
-
IP: ${S.cyan}${t}${S.reset}
|
|
183
|
-
${s}
|
|
184
|
-
|
|
185
|
-
Allow this device? ${S.dim}(y/n)${S.reset} `),Mr.default.emitKeypressEvents(process.stdin),process.stdin.isTTY)try{process.stdin.setRawMode(!0)}catch{}process.stdin.resume();let a=()=>{for(let l of i)process.stdin.on("keypress",l);if(i.length>0){if(process.stdin.isTTY)try{process.stdin.setRawMode(!0)}catch{}process.stdin.resume()}},c=(l,u)=>{if(!u)return;let f=(u.name||"").toLowerCase(),p=f==="y"||u.name==="return",d=f==="n"||u.name==="escape",h=u.ctrl&&u.name==="c";if(!p&&!d&&!h)return;try{if(process.stdin.removeListener("keypress",c),process.stdin.isTTY)try{process.stdin.setRawMode(!1)}catch{}process.stdin.pause()}catch{}h&&process.exit(0);let w=p,E=w?`${S.green}y${S.reset}
|
|
218
|
+
# Free the port for the new agent (kills the loading gate)
|
|
219
|
+
lsof -ti:${Ot} | xargs kill -9 2>/dev/null || true
|
|
220
|
+
sleep 1
|
|
186
221
|
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
`).
|
|
194
|
-
|
|
195
|
-
`).slice(-5).join(" | ");sn=null,u(new Error(`cloudflared exited (code=${E}, signal=${O}) output: ${k||"(empty)"}`));return}A||Qn(e,`quick tunnel exit code ${E}`)})})}function Nr(e){if(fn)try{(0,Ve.execSync)(`taskkill /PID ${e} /T /F`,{windowsHide:!0,stdio:"ignore"})}catch{}else try{process.kill(e,"SIGKILL")}catch{}}function Al(e){return e?e.split(`
|
|
196
|
-
|
|
197
|
-
`).map(o=>+o.trim()).filter(Boolean);for(let r of new Set(t))Nr(r)}catch{}}function ie(){if(!Po){Po=!0;try{try{if(W.default.existsSync(Oo)){let t=parseInt(W.default.readFileSync(Oo,"utf8"));Number.isFinite(t)&&(Xn=!0,Nr(t)),W.default.unlinkSync(Oo)}}catch{}let e=Dn("cloudflared");Xn=!0,sn=null,e&&(Nr(e),Ke("cloudflared")),Pl(P)}finally{setTimeout(()=>{Po=!1},2e3)}}}function Ds(){if(!we)return!1;let e=Dn("cloudflared");return!!e&&co(e)}function Bs(){Gn=0,ln=!1,qn=null,cn=null,we=null,Ge=0,Jn=0,an=null,Ll()}var Ol=/^(utun|awdl|llw|anpi|bridge|gif|stf|ipsec|ap|tun|tap|vmnet|veth|docker)/i;function Ls(){let e=at.default.networkInterfaces(),t=[];for(let[r,o]of Object.entries(e))if(o&&!Ol.test(r))for(let n of o)!n.internal&&n.family==="IPv4"&&t.push(`${r}:${n.address}`);return t.sort().join("|")}function Il(){Yn||($r=Ls(),Ro=Date.now(),Yn=setInterval(async()=>{try{let e=Date.now(),t=e-Ro;if(Ro=e,Io||ln||!qn||cn==null)return;if(t>ml){if(Z.info(`Sleep/wake detected (gap=${t}ms)`),we){let s=!1;for(let a=0;a<3;a++){if((await tn(we)).ok){s=!0;break}a<2&&await new Promise(l=>setTimeout(l,3e3))}if(s)return;Z.info("tunnel unresponsive after sleep \u2192 restarting")}Rt("unreachable"),ie(),Qn(cn,"woke from sleep");return}let r=Ls(),o=r!==$r;$r=r;let n=Dn("cloudflared"),i=!n||!co(n);if(!o&&!i){if(we&&un&&Date.now()-un>Os&&e-Jn>=je.edgeProbeIntervalMs){Jn=e;let s=await tn(we);if(s.ok)Ge=0;else if(++Ge>=je.edgeProbeFailureThreshold){let a=await pl(je.readyTimeoutMs);if(a>0){Z.info(`edge probe failing but cloudflared holds ${a} connection(s) \u2014 not restarting`),Ge=0;return}Z.warn(`tunnel unreachable but cloudflared alive \u2014 edge lost after ${Ge} probes (ready=${a??"unknown"}), restarting`),Ge=0,Rt("unreachable"),ie(),Qn(cn,"tunnel unreachable (edge lost)")}else Z.debug(`edge probe failed (${Ge}/${je.edgeProbeFailureThreshold}) \u2014 ${s.dnsCode??s.httpStatus??"no response"}`)}return}if(o&&!i&&un&&Date.now()-un<Os||(o&&Z.info("Network change detected"),i&&Z.warn("cloudflared not alive \u2014 watchdog"),Rt("unreachable"),await new Promise(s=>setTimeout(s,je.networkRestoreDelayMs)),!await Cs()))return;if(o&&!i&&we){let s=!1;for(let a=0;a<2;a++){if((await tn(we)).ok){s=!0;break}a===0&&await new Promise(l=>setTimeout(l,2e3))}if(s){Z.info("Tunnel survived network change, skip restart");return}}o&&!i&&ie(),Qn(cn,o?"network change":"liveness watchdog")}catch(e){Z.error(`network monitor tick failed: ${e?.message||e}`)}},je.networkCheckIntervalMs))}function Ll(){Yn&&(clearInterval(Yn),Yn=null),$r=null}Ot();var ct=R(require("crypto"),1),gn=require("fs");var Qs=require("path");var Mf=Buffer.from("302a300506032b656e","hex");var Br=(0,Qs.join)(G.CONFIG,"hostKey.json"),Uf=Buffer.from("302a300506032b6570032100","hex"),hn=null;function Mo(){if(hn)return hn;try{if((0,gn.existsSync)(Br)){let s=JSON.parse((0,gn.readFileSync)(Br,"utf8")),a=Buffer.from(s.publicKey,"base64");if(!s.x25519PrivateKey){let l=ct.default.generateKeyPairSync("x25519");s.x25519PrivateKey=l.privateKey.export({type:"pkcs8",format:"der"}).toString("base64"),s.x25519PublicKey=l.publicKey.export({type:"spki",format:"der"}).toString("base64"),Fe(Br,s)}let c=Buffer.from(s.x25519PublicKey,"base64");return hn={privateKey:ct.default.createPrivateKey({key:Buffer.from(s.privateKey,"base64"),format:"der",type:"pkcs8"}),publicKey:ct.default.createPublicKey({key:a,format:"der",type:"spki"}),publicKeyB64:a.subarray(-32).toString("base64"),x25519PrivateKey:ct.default.createPrivateKey({key:Buffer.from(s.x25519PrivateKey,"base64"),format:"der",type:"pkcs8"}),x25519PublicKeyB64:c.subarray(-32).toString("base64")},hn}}catch{}(0,gn.mkdirSync)(G.CONFIG,{recursive:!0});let{privateKey:e,publicKey:t}=ct.default.generateKeyPairSync("ed25519"),r=t.export({type:"spki",format:"der"}).toString("base64"),o=e.export({type:"pkcs8",format:"der"}).toString("base64"),n=ct.default.generateKeyPairSync("x25519"),i=n.publicKey.export({type:"spki",format:"der"}).toString("base64");return Fe(Br,{privateKey:o,publicKey:r,x25519PrivateKey:n.privateKey.export({type:"pkcs8",format:"der"}).toString("base64"),x25519PublicKey:i}),hn={privateKey:e,publicKey:t,publicKeyB64:Buffer.from(r,"base64").subarray(-32).toString("base64"),x25519PrivateKey:n.privateKey,x25519PublicKeyB64:Buffer.from(i,"base64").subarray(-32).toString("base64")},hn}function lt(){return Mo().publicKeyB64}function ut(){return Mo().x25519PublicKeyB64}var Dl="9remote-session-v1";function Bl({apiKey:e,tunnelUrl:t,localIp:r,expiryMinutes:o,ts:n}){let i=a=>{let c=a==null?"":String(a);return`${c.length}:${c}`},s=`${Dl}|${i(e)}${i(t)}${i(r)}${i(o)}${i(n)}`;return ct.default.sign(null,Buffer.from(s,"utf8"),Mo().privateKey).toString("base64")}function It(e){let t=Date.now();return{ts:t,sig:Bl({...e,ts:t})}}async function ft(e,t={}){let r=t.intervalMs??ot.intervalMs,o=t.timeoutMs??ot.timeoutMs,n=`${e}/api/health`,i=(()=>{try{return new URL(e).hostname}catch{return null}})(),s=Date.now(),a=0,c=[];await K({healthCheck:{running:!0,timeoutMs:o,startedAt:s,logs:[]}});let l=u=>{c.push(u);let f=c.length>ot.maxLogEntries?c.slice(-ot.maxLogEntries):c;K({healthCheck:{running:!0,timeoutMs:o,startedAt:s,logs:f}})};for(;Date.now()-s<o;){if(a++,en(),i){let f=await To(i,ot.dnsTimeoutMs);if(!f.ok){let p=f.code==="ENOTFOUND"||f.code==="ETIMEOUT"||f.code==="ESERVFAIL",d=p?"connecting...":f.code;Zt(`#${a} \u2192 ${d}`),l({attempt:a,status:d,elapsedMs:f.elapsedMs,ok:!1,waiting:p,time:Date.now()}),await new Promise(h=>setTimeout(h,r));continue}}let u=Date.now();try{let f=await H(n,{signal:AbortSignal.timeout(ot.fetchTimeoutMs)}),p=Date.now()-u;if(Zt(`#${a} \u2192 ${f.status}`),l({attempt:a,status:String(f.status),elapsedMs:p,ok:f.ok,time:Date.now()}),f.ok)return await K({healthCheck:{running:!1,timeoutMs:0,startedAt:null,logs:[]}}),await new Promise(d=>setTimeout(d,ot.postReadyHoldMs)),!0}catch(f){let p=Date.now()-u,d=f.cause?.code||f.code||f.message,h=d==="ENOTFOUND",w=h?"connecting...":d;Zt(`#${a} \u2192 ${w}`),l({attempt:a,status:w,elapsedMs:p,ok:!1,waiting:h,time:Date.now()})}await new Promise(f=>setTimeout(f,r))}return await K({healthCheck:{running:!1,timeoutMs:o,startedAt:s,logs:c}}),!1}var Qe=B("tunnel"),Co=null,qs=null,Js=0;async function Lt(e,t){if(Qe.debug(`updateTunnelUrl: key=${e?.slice(0,8)} url=${t}`),X().remoteEnabled===!1)return;if(_t(e),t&&t===qs&&Date.now()-Js<Qi){Qe.debug("updateTunnelUrl: skipped (debounce, same URL)");return}Co&&(Co.cancelled=!0);let r={cancelled:!1};Co=r;let o=Es();Ir({config:de.urlSync,label:`urlSync ${t}`,log:n=>Qe.warn(n),ctx:r,task:async()=>{let n=await H(`${_}/api/session/update`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify((()=>{let s={apiKey:V(e),tunnelUrl:t,localIp:o?`${o}:${P}`:null};return{...s,...It(s)}})())});if(r.cancelled)return!0;if(n.ok)return qs=t,Js=Date.now(),Qe.debug(`urlSync OK: pushed ${t} to server`),Ul(t),!0;let i=await n.text().catch(()=>"");return Qe.warn(`urlSync HTTP ${n.status}: ${i.slice(0,200)}`),!1}}),t&&xs(t)}var yn=null,wn=null,$o=!1,Do=0;async function Bo(e,t){let r={apiKey:e,online:t},o=await H(`${_}/api/session/heartbeat`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({...r,...It(r)})});return o.ok||Qe.warn(`heartbeat online=${t} HTTP ${o.status}`),o.ok}async function No(){if(!($o||!wn)){$o=!0;try{await Bo(wn,!0),Do=Date.now()}catch(e){Qe.debug(`heartbeat failed: ${e?.message||e}`)}finally{$o=!1}}}function _t(e){let t=V(e);if(t&&X().remoteEnabled!==!1){if(yn&&wn===t){Date.now()-Do>=po&&No();return}Ur(),wn=t,No(),yn=setInterval(No,po),yn.unref?.()}}function Ur({offline:e=!1}={}){yn&&(clearInterval(yn),yn=null);let t=wn;return wn=null,Do=0,!e||!t?null:Bo(t,!1).catch(r=>Qe.debug(`goodbye failed: ${r?.message||r}`))}function pt(e){let t=V(e);if(!t)return Promise.resolve(!1);Ur();let r=Bo(t,!1).catch(o=>(Qe.debug(`offline mark failed: ${o?.message||o}`),!1));return Promise.race([r,new Promise(o=>setTimeout(()=>o(!1),xr))])}var er=null;async function Ul(e){if(er?.url===e)return;let t={url:e};er=t,Rs();try{let r=await ft(e,{timeoutMs:Ji});if(er!==t)return;r&&Rt("healthy")}catch{}finally{er===t&&(er=null),ks()}}var qe=B("server"),ta=nr.default.dirname((0,ea.fileURLToPath)(__importMetaUrl)),Fl=nr.default.resolve(ta,"./server.cjs"),Zs=nr.default.resolve(ta,"../../index.js");function Fr(e){try{process.platform==="win32"?(0,tr.execSync)(`for /f "tokens=5" %a in ('netstat -aon ^| findstr :${e}') do taskkill /F /PID %a`,{stdio:"ignore",windowsHide:!0}):(0,tr.execSync)(`lsof -ti:${e} | xargs kill -9 2>/dev/null || true`,{stdio:"ignore"})}catch{}}function dt(e,t,r){let o=null,n=!1,i=!1,s=!0,a=0,c=null,l=()=>{s&&(Fr(P),s=!1);let u=process.env.NODE_ENV==="development"&&Uo.default.existsSync(Zs),f=u?Zs:Fl;Uo.default.existsSync(f)||(qe.error(`Server not found: ${f}`),process.exit(1));let p={...process.env,PORT:String(P)};u||delete p.NODE_ENV,o=(0,tr.spawn)(zo,[f],{cwd:nr.default.dirname(f),stdio:["ignore","inherit","inherit"],detached:!1,windowsHide:!0,env:ei(p)}),c&&clearTimeout(c),c=setTimeout(()=>{a=0},Yi),o.on("exit",(d,h)=>{if(c&&(clearTimeout(c),c=null),n)return;if(i){i=!1,qe.info("Restarting server (requested)..."),setTimeout(()=>{l(),r?.()},500);return}qe.error(`Server exited unexpectedly (code: ${d}, signal: ${h})`),a++;let w=Ae(de.server,a);qe.warn(`Restarting server in ${w}ms (fail#${a})`),t&&t(),setTimeout(()=>{l(),r?.()},w)}),o.on("error",d=>{qe.error(`Server error: ${d.message}`)}),e?.(o)};return l(),{getProcess:()=>o,shutdown:()=>{if(n=!0,!!o){try{o.kill("SIGTERM")}catch{}setTimeout(()=>{try{o&&o.kill("SIGKILL")}catch{}},2e3)}},restart:()=>{if(!o)return!1;i=!0;try{o.kill("SIGTERM")}catch{}return setTimeout(()=>{try{o&&i&&o.kill("SIGKILL")}catch{}},2e3),!0}}}function na(e){return e?.restart?e.restart():!1}function Je({serverManager:e,tunnelProcess:t,exit:r=!0,code:o=0}={}){try{jn()}catch{}try{e?.shutdown?.()}catch{}try{t?.kill?.()}catch{}try{ie()}catch{}try{kt()}catch{}try{Fr(P)}catch{}try{Bs()}catch{}try{gi()}catch{}try{Ke("agent")}catch{}try{Ke("cloudflared")}catch{}let n=Ur({offline:!0});if(r){let i=new Promise(a=>setTimeout(a,Xi)),s=n?Promise.race([n,new Promise(a=>setTimeout(a,xr))]):null;Promise.all([i,s]).finally(()=>process.exit(o))}}var zs=!1;function mt(e,t){if(zs)return;zs=!0;let r=!1,o=n=>{r||(r=!0,qe.info(`Stopping 9Remote (${n})...`),Je({serverManager:e,tunnelProcess:t}),qe.info("Server stopped"))};if(process.on("SIGINT",()=>o("SIGINT")),process.on("SIGTERM",()=>o("SIGTERM")),process.on("SIGHUP",()=>o("SIGHUP")),process.platform==="win32"){process.on("SIGBREAK",()=>o("SIGBREAK"));try{import("readline").then(({createInterface:n})=>{n({input:process.stdin,output:process.stdout}).on("SIGINT",()=>o("SIGINT")),process.stdin.isTTY&&process.stdin.unref?.()}).catch(()=>{})}catch{}}process.on("uncaughtException",n=>{qe.error(`Uncaught exception: ${n?.stack||n?.message||n}`),o("uncaughtException"),setTimeout(()=>process.exit(1),fo)}),process.on("unhandledRejection",n=>{qe.error(`Unhandled rejection: ${n?.stack||n?.message||n}`),o("unhandledRejection"),setTimeout(()=>process.exit(1),fo)})}Ot();var oa=R(require("crypto"),1),ia=require("path");var Kl=B("pairing"),sa=(0,ia.join)(G.STATE,"pairing.json"),ra="ABCDEFGHIJKLMNPQRSTUVWXYZ123456789",Hl=2;function aa(){let e="";for(let t=0;t<Hl;t++)e+=ra[oa.default.randomInt(ra.length)];return e}function Wl(){let e=di(sa,null);return!e||Date.now()>e.expiresAt?null:e}function jl(e){try{Fe(sa,e)}catch(t){Kl.error(`persist pairing state: ${t.message}`)}}function ca(e,t,r,o=null){jl({tempKey:e,tail:t,expiresAt:r,workerUrl:o})}function la(){let e=Wl();return e?{tempKey:e.tempKey,tail:e.tail,expiresAt:e.expiresAt}:null}var Fo=B("session"),Gl=10;async function rr(e,t){let r=async()=>{let o=await H(`${t}/api/temp-key/create`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify((()=>{let n={apiKey:V(e),expiryMinutes:Gl};return{...n,...It(n)}})())});if(!o.ok){let n=await o.json().catch(()=>null);throw new Error(n?.error||`HTTP ${o.status}`)}return o.json()};try{let o;try{o=await r()}catch(i){if(Fo.warn(`Temp key creation failed (${i.message}) \u2014 re-registering session`),!await ir(e,t))throw i;o=await r()}let n=aa();return ca(o.tempKey,n,o.expiresAt,t),{...o,oneTimeKey:`${o.tempKey}${n}`}}catch(o){return Fo.error(`Temp key creation failed: ${o?.message||o}`),null}}function or(e,t){return t?.tempKey?`${e}/login?k=${t.tempKey}#${t.oneTimeKey}`:`${e}/login`}async function ir(e,t,r,o){try{let n=await H(`${t}/api/session/create`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:V(e),hostPublicKey:lt(),hostX25519Key:ut(),tempKey:la()?.tempKey||void 0})});if(!n.ok)throw new Error(`HTTP ${n.status}`);return r&&await H(`${t}/api/session/update`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:V(e),tunnelUrl:r,...It({apiKey:V(e),tunnelUrl:r})})}).catch(()=>{}),o&&V(o)!==V(e)&&await H(`${t}/api/session/delete`,{method:"DELETE",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:V(o),...It({apiKey:V(o)})})}).catch(()=>{}),!0}catch(n){return Fo.error(`Session registration failed: ${n?.message||n}`),!1}}var Mt=B("tunnel");async function Vl(e,t,r,o){let n=0;for(;;){n++;try{return await Ye(e,t,r)}catch(i){let s=Ae(de.tunnelSpawn,n);Mt.warn(`spawn attempt ${n} failed: ${i?.message||i} \u2014 retry in ${s}ms`),o?.({attempt:n,delay:s}),await new Promise(a=>setTimeout(a,s))}}}function Ze({onUrlUpdate:e,setTunnel:t,onRetry:r}){return async o=>{try{let n=await Vl(o,e,null,r);ze(),t(n.child),await e(n.tunnelUrl),Mt.info(`Tunnel restarted: ${n.tunnelUrl}`)}catch(n){Mt.error(`Tunnel restart failed: ${n?.message||n}`)}}}var Kr=null;function ze(){Kr&&(Kr.cancelled=!0,Kr=null)}function vn(e,{onUrlUpdate:t,onRestart:r,setActiveTunnel:o,onReady:n}){ze();let i={cancelled:!1};return Kr=i,Ir({config:de.tunnelRateLimit,task:async()=>{if(i.cancelled)return!0;if(Ds())return Mt.info("bg-tunnel: a tunnel is already live \u2014 standing down"),!0;let s=await Ye(e,t,r);if(i.cancelled){try{ie()}catch{}return!0}try{o?.(s.child),await t?.(s.tunnelUrl),await n?.(s),Mt.info(`bg tunnel up: ${s.tunnelUrl}`)}catch(a){Mt.error(`bg tunnel post-spawn failed: ${a?.message||a}`)}return!0},label:"bg-tunnel",log:s=>Mt.info(s),ctx:i}),i}var Vo=R(Ma(),1);var tu=B("session");function nu(e,t="\u{1F4F1} Scan QR to connect:"){console.log(fe.orange(`
|
|
198
|
-
|
|
199
|
-
`+r.trim())})})}async function Gr(e,t){let r=await rr(e,_),o=Math.min(He.headerWidth,process.stdout.columns||55);if(!r){tu.warn("Temp key creation failed \u2014 showing UI without a QR"),await M(I.READY,{tunnelUrl:t,permanentKey:e,workerUrl:_}),console.log(m.red(`
|
|
200
|
-
\u274C Failed to create one-time key \u2014 generate a new one from the menu`)),console.log(fe.orange("\u2550".repeat(o))),console.log(m.white("App URL".padEnd(14))+m.gray(`${_}/login`)),console.log(m.white("Key".padEnd(14))+m.gray(e)),console.log(fe.orange("\u2550".repeat(o)));return}let n=or(_,r);await M(I.READY,{tunnelUrl:t,oneTimeKey:r.oneTimeKey,oneTimeKeyExpiresAt:r.expiresAt,permanentKey:e,qrUrl:n,workerUrl:_}),nu(n),console.log(m.gray(`
|
|
222
|
+
rm -f "${l}"
|
|
223
|
+
${process.env.NREMOTE_REGISTRY?`export NREMOTE_REGISTRY="${process.env.NREMOTE_REGISTRY}"
|
|
224
|
+
`:""}${a}"${i}" "${c}" ${As()}
|
|
225
|
+
`,w=xe.default.join(It.default.tmpdir(),`${ie}-update.sh`);return(0,J.writeFileSync)(w,h,{mode:493}),{shellCmd:["sh",[w]],windowsVerbatim:!1}}async function Is(){let e=ks();if(!e)return rn.warn("update skipped: no version (source run?)"),!1;let t=cl();if(t)return rn.warn(`update skipped: restricted env (${t})`),!1;let r=await ul();if(!r)return rn.warn("update skipped: registry unreachable"),!1;if(!Ps(e,r))return rn.info(`update skipped: ${e} >= registry ${r}`),!1;if(!ll())return rn.warn("update skipped: lock held by another run"),!1;rn.info(`update go: ${e} -> ${r}`);let{shellCmd:o,windowsVerbatim:n}=hl({currentVersion:e,latest:r,agentPid:process.pid});return(0,Vn.spawn)(o[0],o[1],{detached:!0,stdio:"ignore",windowsHide:!0,windowsVerbatimArguments:n}).unref(),setTimeout(()=>process.exit(0),500),!0}var sr=require("child_process"),ar=R(require("path"),1),Ko=R(require("fs"),1),la=require("url");var W=R(require("fs"),1),ut=R(require("path"),1),Co=R(require("https"),1),ft=R(require("os"),1),Hs=R(require("net"),1),Ye=require("child_process");var Ls=R(require("dns"),1),_s=require("child_process");var gl=2e3,yl=5e3,Ao=new Ls.default.promises.Resolver;Ao.setServers(["1.1.1.1","1.0.0.1","8.8.8.8"]);function on(){process.platform==="win32"&&(0,_s.execFile)("ipconfig",["/flushdns"],{windowsHide:!0},()=>{})}async function xo(e,t=gl){let r=Date.now();try{let o=async()=>{let[i,s]=await Promise.allSettled([Ao.resolve4(e),Ao.resolve6(e)]);if(i.status==="fulfilled"&&i.value?.length)return i.value;if(s.status==="fulfilled"&&s.value?.length)return s.value;throw i.reason||s.reason||Object.assign(new Error("DNS query failed"),{code:"ENOTFOUND"})};return{ok:!0,addrs:await Promise.race([o(),new Promise((i,s)=>setTimeout(()=>s(Object.assign(new Error("DNS timeout"),{code:"ETIMEOUT"})),t))]),elapsedMs:Date.now()-r}}catch(o){return{ok:!1,code:o.code||o.message,elapsedMs:Date.now()-r}}}async function sn(e,{flushDns:t=!1}={}){let r=Date.now(),o=null;try{o=new URL(e).hostname}catch{}if(t&&on(),o){let n=await xo(o);if(!n.ok)return on(),{ok:!1,dnsCode:n.code,elapsedMs:Date.now()-r}}try{let n=await H(`${e}/api/health`,{signal:AbortSignal.timeout(yl)});return{ok:n.ok,httpStatus:n.status,elapsedMs:Date.now()-r}}catch(n){return{ok:!1,dnsCode:n.cause?.code||n.code||n.message,elapsedMs:Date.now()-r}}}var wl=B("tunnel"),Yn=null,Xn=null,an=null,Lt=null,lt=0,ko=!1;async function Po(e){try{let t=await zt();await fetch(`http://${t}:${P}/api/ui/state`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)})}catch{}}var Ro=!1;async function Ms(){if(!(!Xn||ko||Ro)){Ro=!0;try{await vl()}finally{Ro=!1}}}async function vl(){let e=await sn(Xn),t=e.ok?"healthy":"unreachable";if(t===an){Lt=null,lt=0;return}if(t!==Lt){Lt=t,lt=1;return}lt++,!(lt<ls)&&(wl.info(`${an??"init"} \u2192 ${t}${e.ok?"":` (http=${e.httpStatus??"-"} dns=${e.dnsCode??"-"})`}`),an=t,Lt=null,lt=0,await Po({tunnelHealth:{status:t,checkedAt:Date.now()}}))}function Cs(e){if(!e)return qn();e!==Xn&&(Xn=e,an=null,Lt=null,lt=0,on(),Yn||(Yn=setInterval(Ms,ii.checkIntervalMs)),Ms())}var $s=Cs,cn=Cs;function Ns(){ko=!0}function Ds(){ko=!1}function _t(e){an=e,Lt=null,lt=0,Po({tunnelHealth:{status:e,checkedAt:Date.now()}})}function qn(){Yn&&(clearInterval(Yn),Yn=null),Xn=null,an=null,Lt=null,lt=0,Po({tunnelHealth:{status:"unknown",checkedAt:null}})}var z=B("tunnel"),Ge={networkCheckIntervalMs:5e3,networkRestoreDelayMs:2500,internetCheckTimeoutMs:3e3,internetCheckHost:"1.1.1.1",internetCheckPort:443,edgeProbeIntervalMs:15e3,edgeProbeFailureThreshold:3,readyTimeoutMs:1500},El=[20241,20242,20243,20244,20245],fn=null;async function Sl(e,t){try{let o=await(await fetch(`http://localhost:${e}/ready`,{signal:AbortSignal.timeout(t)})).json();return typeof o?.readyConnections=="number"?o:null}catch{return null}}async function Bs(e,t){let r=await Sl(e,t);if(!r)return null;let o=await bl(e,t);return o&&we&&!we.includes(o)?null:r.readyConnections}async function Tl(e){if(fn!==null){let o=await Bs(fn,e);if(o!==null)return o;fn=null}let r=(await Promise.all(El.map(async o=>({port:o,conns:await Bs(o,e)})))).find(o=>o.conns!==null);return r?(fn=r.port,r.conns):null}async function bl(e,t){try{return(await(await fetch(`http://localhost:${e}/quicktunnel`,{signal:AbortSignal.timeout(t)})).json())?.hostname||null}catch{return null}}var Al=3e4,Oo=0,Zn=null,Nr=null,pn=null,tr=null,dn=!1,Qn=0,Mo=!1,we=null,mn=0,Io=0,Lo=!1,nr=0,Ve=0,Us=3e4,xl=5e3,Jn=ut.default.join(ft.default.homedir(),".9remote","bin"),Fs="cloudflared",hn=ft.default.platform()==="win32",Rl=hn?`${Fs}.exe`:Fs,ln=ut.default.join(Jn,Rl),_o=ut.default.join(ft.default.homedir(),".9remote","cloudflared.pid"),zn=!1,un=null,kl="2026.6.1",Ws=`https://github.com/cloudflare/cloudflared/releases/download/${kl}`;function js(){return new Promise(e=>{let t=new Hs.default.Socket,r=!1,o=n=>{if(!r){r=!0;try{t.destroy()}catch{}e(n)}};t.setTimeout(Ge.internetCheckTimeoutMs),t.once("connect",()=>o(!0)),t.once("timeout",()=>o(!1)),t.once("error",()=>o(!1));try{t.connect(Ge.internetCheckPort,Ge.internetCheckHost)}catch{o(!1)}})}async function Pl(){Mo=!0;try{let e=0;for(;;){if(e++,await js())return;await new Promise(t=>setTimeout(t,Te(de.internet,e)))}}finally{Mo=!1}}async function er(e,t){if(!tr){z.warn("No restartCallback registered \u2014 skip");return}if(!dn&&!(Date.now()-Io<xl)){Io=Date.now(),dn=!0;try{await Pl();let r=Te(de.tunnelRestart,Qn+1);await new Promise(o=>setTimeout(o,r)),await tr(e),Qn=0,Io=0}catch(r){Qn++,z.error(`restart failed (#${Qn}): ${r?.message||r}`),setImmediate(()=>{dn=!1,er(e,"retry after fail")});return}finally{dn=!1}}}var Ol={darwin:{x64:"cloudflared-darwin-amd64.tgz",arm64:"cloudflared-darwin-arm64.tgz"},win32:{x64:"cloudflared-windows-amd64.exe"},linux:{x64:"cloudflared-linux-amd64",arm64:"cloudflared-linux-arm64"}};function Il(){let e=ft.default.platform(),t=ft.default.arch(),r=Ol[e];if(!r)throw new Error(`Unsupported platform: ${e}`);let o=r[t];if(!o)throw new Error(`Unsupported architecture: ${t} for platform ${e}`);return`${Ws}/${o}`}var Ll=150;async function Gs(e,t,r){return new Promise((o,n)=>{let i=W.default.createWriteStream(t);Co.default.get(e,s=>{if([301,302].includes(s.statusCode)){i.close(),W.default.unlinkSync(t),Gs(s.headers.location,t,r).then(o).catch(n);return}if(s.statusCode!==200){i.close(),W.default.unlinkSync(t),n(new Error(`Download failed with status ${s.statusCode}`));return}let a=parseInt(s.headers["content-length"]||"0",10),c=0,l=0,u=-1;s.on("data",f=>{if(c+=f.length,!r||!a)return;let p=Date.now(),d=Math.min(100,Math.floor(c/a*100));d!==u&&p-l>=Ll&&(l=p,u=d,r(d))}),s.pipe(i),i.on("finish",()=>{r&&a&&r(100),i.close(()=>o(t))}),i.on("error",f=>{i.close(),W.default.unlinkSync(t),n(f)})}).on("error",s=>{i.close(),W.default.existsSync(t)&&W.default.unlinkSync(t),n(s)})})}async function rr(e){if(W.default.existsSync(Jn)||W.default.mkdirSync(Jn,{recursive:!0}),W.default.existsSync(ln))return hn||W.default.chmodSync(ln,"755"),ln;let t=Il(),r=t.endsWith(".tgz"),o=r?ut.default.join(Jn,"cloudflared.tgz"):ln;try{return e?.({phase:"download",percent:0}),await Gs(t,o,n=>{e?.({phase:"download",percent:n})}),await _l(t,o),r&&(e?.({phase:"extract"}),(0,Ye.execSync)(`tar -xzf "${o}" -C "${Jn}"`,{stdio:"pipe",windowsHide:!0}),W.default.unlinkSync(o)),hn||W.default.chmodSync(ln,"755"),ln}catch(n){try{W.default.existsSync(o)&&W.default.unlinkSync(o)}catch{}throw console.error("Failed to download cloudflared:",n.message),n}}function Vs(e){return new Promise((t,r)=>{Co.default.get(e,o=>{if([301,302].includes(o.statusCode))return Vs(o.headers.location).then(t).catch(r);if(o.statusCode!==200)return r(new Error(`HTTP ${o.statusCode}`));let n="";o.on("data",i=>n+=i),o.on("end",()=>t(n))}).on("error",r)})}async function _l(e,t){let r=ut.default.basename(e),o;try{o=await Vs(`${Ws}/sha256sum.txt`)}catch(c){z.warn(`sha256 manifest unavailable (${c.message}), skipping verify`);return}let n=o.split(`
|
|
226
|
+
`).find(c=>c.includes(r));if(!n){z.warn(`No sha256 entry for ${r}, skipping verify`);return}let i=n.trim().split(/\s+/)[0],{createHash:s}=await import("crypto"),a=s("sha256").update(W.default.readFileSync(t)).digest("hex");if(a!==i)throw new Error(`Integrity check failed: SHA256 mismatch (expected ${i}, got ${a})`)}function Ml(e){let t=/https:\/\/([a-z0-9-]+)\.trycloudflare\.com/gi,r=[];for(let o of e.matchAll(t))o[1]!=="api"&&r.push(`https://${o[1]}.trycloudflare.com`);return r.length?r[r.length-1]:null}async function Xe(e,t=null,r=null){let o=await rr();Dl(o),r&&(tr=r),pn=e;let n=W.default.mkdtempSync(ut.default.join(ft.default.tmpdir(),"9remote-quick-")),i=ut.default.join(n,"config.yml");W.default.writeFileSync(i,`# quick-tunnel
|
|
227
|
+
`,"utf8");let s=!1,a=()=>{if(!s){s=!0;try{W.default.rmSync(n,{recursive:!0,force:!0})}catch{}}},c=(0,Ye.spawn)(o,["tunnel","--url",`http://localhost:${e}`,"--config",i,"--no-autoupdate","--protocol","http2"],{detached:!1,windowsHide:!0,stdio:["ignore","pipe","pipe"]});return Me("cloudflared",c.pid),un=c.pid,zn=!1,new Promise((l,u)=>{let f=!1,p=null,d="",h=setTimeout(()=>{if(!f){f=!0,a(),un===c.pid&&(un=null);try{c.kill("SIGKILL")}catch{}je("cloudflared"),u(new Error("Quick tunnel timed out after 90s"))}},9e4),w=E=>{let O=E.toString();d+=O,d.length>4096&&(d=d.slice(-4096));let T=Ml(O);if(T){if(!f){f=!0,p=T,we=T,mn=Date.now(),Ve=0,nr=0,fn=null,clearTimeout(h),a(),Fl(),z.info(`tunnel ready: ${T}`),l({child:c,tunnelUrl:T});return}T!==p&&(z.info(`URL rotated: ${T}`),p=T,we=T,mn=Date.now(),Ve=0,nr=0,t?.(T))}};c.stdout.on("data",w),c.stderr.on("data",w),c.on("error",E=>{f||(f=!0,clearTimeout(h),a(),u(E))}),c.on("exit",(E,O)=>{a();let T=un!==c.pid,A=zn||T;if(z.info(`cloudflared exited (intentional=${zn} superseded=${T})`),A||_t("unreachable"),!f){f=!0,clearTimeout(h);let k=d.trim().split(`
|
|
228
|
+
`).slice(-5).join(" | ");un=null,u(new Error(`cloudflared exited (code=${E}, signal=${O}) output: ${k||"(empty)"}`));return}A||er(e,`quick tunnel exit code ${E}`)})})}function Dr(e){if(hn)try{(0,Ye.execSync)(`taskkill /PID ${e} /T /F`,{windowsHide:!0,stdio:"ignore"})}catch{}else try{process.kill(e,"SIGKILL")}catch{}}function Cl(e){return e?e.split(`
|
|
229
|
+
`).flatMap(t=>{let r=t.match(/^\s*(\d+)\s+(.+)$/);return r?[{pid:Number(r[1]),args:r[2].trim()}]:[]}):[]}function $l(e,t){return Array.isArray(e)?e.filter(r=>{if(!r?.args||typeof r.pid!="number")return!1;let o=r.args.split(/\s+/);return o.includes(t)&&o.includes("tunnel")}).map(r=>r.pid):[]}function Nl(e){try{let t=hn?(0,Ye.execSync)(`powershell -NoProfile -Command "Get-CimInstance Win32_Process -Filter 'Name=\\'cloudflared.exe\\'' | ForEach-Object { \\"$($_.ProcessId) $($_.CommandLine)\\"" }"`,{encoding:"utf8",windowsHide:!0,stdio:["ignore","pipe","ignore"]}):(0,Ye.execSync)("ps -eo pid=,args=",{encoding:"utf8",stdio:["ignore","pipe","ignore"]});return $l(Cl(t),e)}catch{return[]}}function Dl(e){let t=Nl(e);for(let r of t)r!==process.pid&&(z.info(`killing leftover cloudflared pid=${r}`),Dr(r));return t}function Bl(e){try{let t=[];if(hn){let r=`Get-NetTCPConnection -LocalPort ${e} -State Established -ErrorAction SilentlyContinue | Where-Object { (Get-Process -Id $_.OwningProcess -ErrorAction SilentlyContinue).Name -eq 'cloudflared' } | Select-Object -ExpandProperty OwningProcess -Unique`;t=(0,Ye.execSync)(`powershell -NoProfile -Command "${r}"`,{encoding:"utf8",windowsHide:!0,stdio:["ignore","pipe","ignore"]}).split(/\r?\n/).map(n=>+n.trim()).filter(Boolean)}else t=(0,Ye.execSync)(`lsof -nP -iTCP:${e} -sTCP:ESTABLISHED 2>/dev/null | awk '/cloudflar/ {print $2}' | sort -u`,{encoding:"utf8",stdio:["ignore","pipe","ignore"]}).split(`
|
|
230
|
+
`).map(o=>+o.trim()).filter(Boolean);for(let r of new Set(t))Dr(r)}catch{}}function se(){if(!Lo){Lo=!0;try{try{if(W.default.existsSync(_o)){let t=parseInt(W.default.readFileSync(_o,"utf8"));Number.isFinite(t)&&(zn=!0,Dr(t)),W.default.unlinkSync(_o)}}catch{}let e=jn("cloudflared");zn=!0,un=null,e&&(Dr(e),je("cloudflared")),Bl(P)}finally{setTimeout(()=>{Lo=!1},2e3)}}}function Ys(){if(!we)return!1;let e=jn("cloudflared");return!!e&&Eo(e)}function Xs(){Qn=0,dn=!1,tr=null,pn=null,we=null,Ve=0,nr=0,fn=null,Kl()}var Ul=/^(utun|awdl|llw|anpi|bridge|gif|stf|ipsec|ap|tun|tap|vmnet|veth|docker)/i;function Ks(){let e=ft.default.networkInterfaces(),t=[];for(let[r,o]of Object.entries(e))if(o&&!Ul.test(r))for(let n of o)!n.internal&&n.family==="IPv4"&&t.push(`${r}:${n.address}`);return t.sort().join("|")}function Fl(){Zn||(Nr=Ks(),Oo=Date.now(),Zn=setInterval(async()=>{try{let e=Date.now(),t=e-Oo;if(Oo=e,Mo||dn||!tr||pn==null)return;if(t>Al){if(z.info(`Sleep/wake detected (gap=${t}ms)`),we){let s=!1;for(let a=0;a<3;a++){if((await sn(we)).ok){s=!0;break}a<2&&await new Promise(l=>setTimeout(l,3e3))}if(s)return;z.info("tunnel unresponsive after sleep \u2192 restarting")}_t("unreachable"),se(),er(pn,"woke from sleep");return}let r=Ks(),o=r!==Nr;Nr=r;let n=jn("cloudflared"),i=!n||!Eo(n);if(!o&&!i){if(we&&mn&&Date.now()-mn>Us&&e-nr>=Ge.edgeProbeIntervalMs){nr=e;let s=await sn(we);if(s.ok)Ve=0;else if(++Ve>=Ge.edgeProbeFailureThreshold){let a=await Tl(Ge.readyTimeoutMs);if(a>0){z.info(`edge probe failing but cloudflared holds ${a} connection(s) \u2014 not restarting`),Ve=0;return}z.warn(`tunnel unreachable but cloudflared alive \u2014 edge lost after ${Ve} probes (ready=${a??"unknown"}), restarting`),Ve=0,_t("unreachable"),se(),er(pn,"tunnel unreachable (edge lost)")}else z.debug(`edge probe failed (${Ve}/${Ge.edgeProbeFailureThreshold}) \u2014 ${s.dnsCode??s.httpStatus??"no response"}`)}return}if(o&&!i&&mn&&Date.now()-mn<Us||(o&&z.info("Network change detected"),i&&z.warn("cloudflared not alive \u2014 watchdog"),_t("unreachable"),await new Promise(s=>setTimeout(s,Ge.networkRestoreDelayMs)),!await js()))return;if(o&&!i&&we){let s=!1;for(let a=0;a<2;a++){if((await sn(we)).ok){s=!0;break}a===0&&await new Promise(l=>setTimeout(l,2e3))}if(s){z.info("Tunnel survived network change, skip restart");return}}o&&!i&&se(),er(pn,o?"network change":"liveness watchdog")}catch(e){z.error(`network monitor tick failed: ${e?.message||e}`)}},Ge.networkCheckIntervalMs))}function Kl(){Zn&&(clearInterval(Zn),Zn=null),Nr=null}$t();async function pt(e,t={}){let r=t.intervalMs??st.intervalMs,o=t.timeoutMs??st.timeoutMs,n=`${e}/api/health`,i=(()=>{try{return new URL(e).hostname}catch{return null}})(),s=Date.now(),a=0,c=[];await K({healthCheck:{running:!0,timeoutMs:o,startedAt:s,logs:[]}});let l=u=>{c.push(u);let f=c.length>st.maxLogEntries?c.slice(-st.maxLogEntries):c;K({healthCheck:{running:!0,timeoutMs:o,startedAt:s,logs:f}})};for(;Date.now()-s<o;){if(a++,on(),i){let f=await xo(i,st.dnsTimeoutMs);if(!f.ok){let p=f.code==="ENOTFOUND"||f.code==="ETIMEOUT"||f.code==="ESERVFAIL",d=p?"connecting...":f.code;Zt(`#${a} \u2192 ${d}`),l({attempt:a,status:d,elapsedMs:f.elapsedMs,ok:!1,waiting:p,time:Date.now()}),await new Promise(h=>setTimeout(h,r));continue}}let u=Date.now();try{let f=await H(n,{signal:AbortSignal.timeout(st.fetchTimeoutMs)}),p=Date.now()-u;if(Zt(`#${a} \u2192 ${f.status}`),l({attempt:a,status:String(f.status),elapsedMs:p,ok:f.ok,time:Date.now()}),f.ok)return await K({healthCheck:{running:!1,timeoutMs:0,startedAt:null,logs:[]}}),await new Promise(d=>setTimeout(d,st.postReadyHoldMs)),!0}catch(f){let p=Date.now()-u,d=f.cause?.code||f.code||f.message,h=d==="ENOTFOUND",w=h?"connecting...":d;Zt(`#${a} \u2192 ${w}`),l({attempt:a,status:w,elapsedMs:p,ok:!1,waiting:h,time:Date.now()})}await new Promise(f=>setTimeout(f,r))}return await K({healthCheck:{running:!1,timeoutMs:o,startedAt:s,logs:c}}),!1}var Qe=B("tunnel"),No=null,ia=null,sa=0;async function Nt(e,t){if(Qe.debug(`updateTunnelUrl: key=${e?.slice(0,8)} url=${t}`),j().remoteEnabled===!1)return;if(Dt(e),t&&t===ia&&Date.now()-sa<cs){Qe.debug("updateTunnelUrl: skipped (debounce, same URL)");return}No&&(No.cancelled=!0);let r={cancelled:!1};No=r;let o=Xi();Er({config:de.urlSync,label:`urlSync ${t}`,log:n=>Qe.warn(n),ctx:r,task:async()=>{let n=await H(`${L}/api/session/update`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify((()=>{let s={apiKey:Y(e),tunnelUrl:t,localIp:o?`${o}:${P}`:null};return{...s,...Tt(s)}})())});if(r.cancelled)return!0;if(n.ok)return ia=t,sa=Date.now(),Qe.debug(`urlSync OK: pushed ${t} to server`),Yl(t),!0;let i=await n.text().catch(()=>"");return Qe.warn(`urlSync HTTP ${n.status}: ${i.slice(0,200)}`),!1}}),t&&$s(t)}var vn=null,En=null,Do=!1,Uo=0;async function Fo(e,t){let r={apiKey:e,online:t},o=await H(`${L}/api/session/heartbeat`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({...r,...Tt(r)})});return o.ok||Qe.warn(`heartbeat online=${t} HTTP ${o.status}`),o.ok}async function Bo(){if(!(Do||!En)){Do=!0;try{await Fo(En,!0),Uo=Date.now()}catch(e){Qe.debug(`heartbeat failed: ${e?.message||e}`)}finally{Do=!1}}}function Dt(e){let t=Y(e);if(t&&j().remoteEnabled!==!1){if(vn&&En===t){Date.now()-Uo>=go&&Bo();return}Ur(),En=t,Bo(),vn=setInterval(Bo,go),vn.unref?.()}}function Ur({offline:e=!1}={}){vn&&(clearInterval(vn),vn=null);let t=En;return En=null,Uo=0,!e||!t?null:Fo(t,!1).catch(r=>Qe.debug(`goodbye failed: ${r?.message||r}`))}function dt(e){let t=Y(e);if(!t)return Promise.resolve(!1);Ur();let r=Fo(t,!1).catch(o=>(Qe.debug(`offline mark failed: ${o?.message||o}`),!1));return Promise.race([r,new Promise(o=>setTimeout(()=>o(!1),Pr))])}var ir=null;async function Yl(e){if(ir?.url===e)return;let t={url:e};ir=t,Ns();try{let r=await pt(e,{timeoutMs:us});if(ir!==t)return;r&&_t("healthy")}catch{}finally{ir===t&&(ir=null),Ds()}}var Je=B("server"),ua=ar.default.dirname((0,la.fileURLToPath)(__importMetaUrl)),Xl=ar.default.resolve(ua,"./server.cjs"),aa=ar.default.resolve(ua,"../../index.js");function Fr(e){try{process.platform==="win32"?(0,sr.execSync)(`for /f "tokens=5" %a in ('netstat -aon ^| findstr :${e}') do taskkill /F /PID %a`,{stdio:"ignore",windowsHide:!0}):(0,sr.execSync)(`lsof -ti:${e} | xargs kill -9 2>/dev/null || true`,{stdio:"ignore"})}catch{}}function mt(e,t,r){let o=null,n=!1,i=!1,s=!0,a=0,c=null,l=()=>{s&&(Fr(P),s=!1);let u=process.env.NODE_ENV==="development"&&Ko.default.existsSync(aa),f=u?aa:Xl;Ko.default.existsSync(f)||(Je.error(`Server not found: ${f}`),process.exit(1));let p={...process.env,PORT:String(P)};u||delete p.NODE_ENV,o=(0,sr.spawn)(ei,[f],{cwd:ar.default.dirname(f),stdio:["ignore","inherit","inherit"],detached:!1,windowsHide:!0,env:ti(p)}),c&&clearTimeout(c),c=setTimeout(()=>{a=0},ss),o.on("exit",(d,h)=>{if(c&&(clearTimeout(c),c=null),n)return;if(i){i=!1,Je.info("Restarting server (requested)..."),setTimeout(()=>{l(),r?.()},500);return}Je.error(`Server exited unexpectedly (code: ${d}, signal: ${h})`),a++;let w=Te(de.server,a);Je.warn(`Restarting server in ${w}ms (fail#${a})`),t&&t(),setTimeout(()=>{l(),r?.()},w)}),o.on("error",d=>{Je.error(`Server error: ${d.message}`)}),e?.(o)};return l(),{getProcess:()=>o,shutdown:()=>{if(n=!0,!!o){try{o.kill("SIGTERM")}catch{}setTimeout(()=>{try{o&&o.kill("SIGKILL")}catch{}},2e3)}},restart:()=>{if(!o)return!1;i=!0;try{o.kill("SIGTERM")}catch{}return setTimeout(()=>{try{o&&i&&o.kill("SIGKILL")}catch{}},2e3),!0}}}function fa(e){return e?.restart?e.restart():!1}function Ze({serverManager:e,tunnelProcess:t,exit:r=!0,code:o=0}={}){try{qn()}catch{}try{e?.shutdown?.()}catch{}try{t?.kill?.()}catch{}try{se()}catch{}try{Mt()}catch{}try{Fr(P)}catch{}try{Xs()}catch{}try{wi()}catch{}try{je("agent")}catch{}try{je("cloudflared")}catch{}let n=Ur({offline:!0});if(r){let i=new Promise(a=>setTimeout(a,as)),s=n?Promise.race([n,new Promise(a=>setTimeout(a,Pr))]):null;Promise.all([i,s]).finally(()=>process.exit(o))}}var ca=!1;function ht(e,t){if(ca)return;ca=!0;let r=!1,o=n=>{r||(r=!0,Je.info(`Stopping 9Remote (${n})...`),Ze({serverManager:e,tunnelProcess:t}),Je.info("Server stopped"))};if(process.on("SIGINT",()=>o("SIGINT")),process.on("SIGTERM",()=>o("SIGTERM")),process.on("SIGHUP",()=>o("SIGHUP")),process.platform==="win32"){process.on("SIGBREAK",()=>o("SIGBREAK"));try{import("readline").then(({createInterface:n})=>{n({input:process.stdin,output:process.stdout}).on("SIGINT",()=>o("SIGINT")),process.stdin.isTTY&&process.stdin.unref?.()}).catch(()=>{})}catch{}}process.on("uncaughtException",n=>{Je.error(`Uncaught exception: ${n?.stack||n?.message||n}`),o("uncaughtException"),setTimeout(()=>process.exit(1),ho)}),process.on("unhandledRejection",n=>{Je.error(`Unhandled rejection: ${n?.stack||n?.message||n}`),o("unhandledRejection"),setTimeout(()=>process.exit(1),ho)})}$t();var Bt=B("tunnel");async function ql(e,t,r,o){let n=0;for(;;){n++;try{return await Xe(e,t,r)}catch(i){let s=Te(de.tunnelSpawn,n);Bt.warn(`spawn attempt ${n} failed: ${i?.message||i} \u2014 retry in ${s}ms`),o?.({attempt:n,delay:s}),await new Promise(a=>setTimeout(a,s))}}}function ze({onUrlUpdate:e,setTunnel:t,onRetry:r}){return async o=>{try{let n=await ql(o,e,null,r);et(),t(n.child),await e(n.tunnelUrl),Bt.info(`Tunnel restarted: ${n.tunnelUrl}`)}catch(n){Bt.error(`Tunnel restart failed: ${n?.message||n}`)}}}var Kr=null;function et(){Kr&&(Kr.cancelled=!0,Kr=null)}function Sn(e,{onUrlUpdate:t,onRestart:r,setActiveTunnel:o,onReady:n}){et();let i={cancelled:!1};return Kr=i,Er({config:de.tunnelRateLimit,task:async()=>{if(i.cancelled)return!0;if(Ys())return Bt.info("bg-tunnel: a tunnel is already live \u2014 standing down"),!0;let s=await Xe(e,t,r);if(i.cancelled){try{se()}catch{}return!0}try{o?.(s.child),await t?.(s.tunnelUrl),await n?.(s),Bt.info(`bg tunnel up: ${s.tunnelUrl}`)}catch(a){Bt.error(`bg tunnel post-spawn failed: ${a?.message||a}`)}return!0},label:"bg-tunnel",log:s=>Bt.info(s),ctx:i}),i}var Yo=R($a(),1);var ou=B("session");function iu(e,t="\u{1F4F1} Scan QR to connect:"){console.log(fe.orange(`
|
|
231
|
+
${t}`)),Yo.default.generate(e,{small:!0,type:"terminal",margin:0},r=>{console.log(r.trim())})}function su(e){return new Promise(t=>{Yo.default.generate(e,{small:!0,type:"terminal",margin:0},r=>{t(fe.orangeDim("\u{1F4F1} Scan QR to connect:")+`
|
|
232
|
+
`+r.trim())})})}async function Gr(e,t){let r=await Bn(e,L),o=Math.min(We.headerWidth,process.stdout.columns||55);if(!r){ou.warn("Temp key creation failed \u2014 showing UI without a QR"),await M(I.READY,{tunnelUrl:t,permanentKey:e,workerUrl:L}),console.log(m.red(`
|
|
233
|
+
\u274C Failed to create one-time key \u2014 generate a new one from the menu`)),console.log(fe.orange("\u2550".repeat(o))),console.log(m.white("App URL".padEnd(14))+m.gray(`${L}/login`)),console.log(m.white("Key".padEnd(14))+m.gray(e)),console.log(fe.orange("\u2550".repeat(o)));return}let n=Un(L,r);await M(I.READY,{tunnelUrl:t,oneTimeKey:r.oneTimeKey,oneTimeKeyExpiresAt:r.expiresAt,permanentKey:e,qrUrl:n,workerUrl:L}),iu(n),console.log(m.gray(`
|
|
201
234
|
QR will expire in 10 minutes (one-time use)
|
|
202
|
-
`)),console.log(fe.orange("\u2550".repeat(o))),console.log(m.white("App URL".padEnd(14))+m.gray(`${
|
|
235
|
+
`)),console.log(fe.orange("\u2550".repeat(o))),console.log(m.white("App URL".padEnd(14))+m.gray(`${L}/login`)),console.log(m.white("One-Time Key".padEnd(14))+fe.orange.bold(r.oneTimeKey)),console.log(m.white("Key".padEnd(14))+m.gray(e)),console.log(fe.orange("\u2550".repeat(o)))}async function Tn(e,t,r,o=""){let n=Math.min(We.headerWidth,process.stdout.columns||We.headerWidth),i=[];return e&&r?(i.push(await su(r)),i.push(m.gray(`
|
|
203
236
|
QR expires in 30 minutes (one-time use)
|
|
204
237
|
`))):i.push(m.gray(`
|
|
205
238
|
(One-time key used \u2014 generate a new one from menu)
|
|
206
|
-
`)),i.push(fe.orange("\u2550".repeat(n)),m.white("App URL".padEnd(14))+m.gray(`${
|
|
207
|
-
`)}var he=B("cmd");function
|
|
208
|
-
\u{1F310} UI already served at http://localhost:${P}`));return}
|
|
209
|
-
\u{1F310} UI ready at ${n}`));let i=null;
|
|
210
|
-
\u{1F310} 9Remote already running at http://localhost:${P}`);return}
|
|
211
|
-
\u274C Failed to launch background: ${c.message}`)),process.exit(1)}let i=Date.now()+
|
|
239
|
+
`)),i.push(fe.orange("\u2550".repeat(n)),m.white("App URL".padEnd(14))+m.gray(`${L}/login`)),ri.showTunnelUrlInMenu&&i.push(m.white("Tunnel".padEnd(14))+(o?m.cyan(o):m.gray("\u2014"))),i.push(m.white("One-Time Key".padEnd(14))+(e?fe.orange.bold(e)+m.dim(" (expires in 30m)"):m.gray("\u2014")),m.white("Key".padEnd(14))+m.dim(t),fe.orange("\u2550".repeat(n))),i.join(`
|
|
240
|
+
`)}var he=B("cmd");function wt(e,t,r,o){let n=!1;setInterval(async()=>{if(n)return;let i=vi();if(i){n=!0;try{if(i==="stop-tunnel")await Na(e,t,r);else if(i==="restart-tunnel")await Na(e,t,r),await Da(e,t,r);else if(i==="start-tunnel"){if(await Da(e,t,r)==="alreadyRunning"){n=!1;return}}else if(i==="regenerate-key")await au();else if(i==="shutdown")cu(e,t);else if(i==="update"){let s=await Is();he.info(`cmd update -> ${s?"started":"SKIPPED (see reasons above)"}`)}else i==="restart"&&fa(o?.())}catch(s){he.error(`cmd "${i}" failed: ${s?.message||s}`)}finally{n=!1}}},Ae.cmdMs)}async function Na(e,t,r){et(),qn();let o=e();o&&(o.kill(),t(null),he.info("Tunnel stopped")),r&&await dt(r),await M(I.STOPPED,{tunnelUrl:"",oneTimeKey:"",oneTimeKeyExpiresAt:null,qrUrl:""}),wn({tunnelUrl:"",running:!0})}async function Da(e,t,r){if(j().remoteEnabled===!1){he.info("Start skipped \u2014 remote is disabled");return}let o=e();if(o)if(o.killed||o.exitCode!=null)t(null);else{let n=await Z("/api/ui/state");return await M(I.READY,{tunnelUrl:n?.tunnelUrl||""}),"alreadyRunning"}et(),he.info("Starting...");try{await M(I.PREPARING),await rr(Ar),await M(I.CONNECTING);let n=await H(`${L}/api/session/create`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:Y(r),hostPublicKey:ot(),hostX25519Key:it()})});if(!n.ok)throw new Error(`Session create failed: ${n.status}`);await q("/api/signaling/retry",{}),Dt(r),await M(I.TUNNELING);let i=async l=>{await Nt(r,l),await K({tunnelUrl:l}),cn(l),wn({tunnelUrl:l,running:!0})},s=({attempt:l,delay:u})=>{K({tunnelRetry:{attempt:l,delay:u,at:Date.now()}})},a=null;try{a=await Xe(P,i,ze({onUrlUpdate:i,setTunnel:l=>t(l),onRetry:s}))}catch(l){he.error(`Tunnel spawn failed: ${l?.message||l} \u2014 QR RTC-only, bg retry`)}K({tunnelRetry:null});let c="";a&&(t(a.child),c=a.tunnelUrl,await M(I.VERIFYING),await pt(c)||(he.warn("Tunnel health check timed out \u2014 bg reconnect"),c="",t(null),a=null)),await Gr(r,c),await M(I.READY,{tunnelUrl:c}),a||Sn(P,{onUrlUpdate:i,onRestart:ze({onUrlUpdate:i,setTunnel:l=>t(l),onRetry:s}),setActiveTunnel:t,onReady:async l=>{await M(I.READY,{tunnelUrl:l.tunnelUrl})}})}catch(n){he.error(`Failed to start: ${n.message}`),await M(I.STOPPED)}}async function au(){if(j().remoteEnabled===!1){he.info("Key regeneration skipped \u2014 remote is disabled");return}let e=await jt(),t=St(e),r=$n();if(!await bt(t,L,yi()?.tunnelUrl,r?.key)){he.error("Key regeneration aborted \u2014 could not register the new key");return}Ke(e,t,r?.name||"Default"),await K({permanentKey:t,oneTimeKey:"",oneTimeKeyExpiresAt:null,qrUrl:"",pairingUsed:!0}),he.info(`Key regenerated: ${dr(t)}`)}function cu(e,t){et(),he.info("Shutting down 9Remote completely...");let r=e();t(null),Ze({tunnelProcess:r}),he.info("9Remote stopped")}$t();async function Ba(){if(await Q()&&(await new Promise(a=>setTimeout(a,ne.guestRecheckMs)),await Q())){console.log(m.green(`
|
|
241
|
+
\u{1F310} UI already served at http://localhost:${P}`));return}Me("agent",process.pid),Jt(_e());let e=await at(),t=process.argv.find(a=>a.startsWith("--theme=")),r=t?t.split("=")[1]:null;try{se(),await new Promise(a=>setTimeout(a,ne.killCloudflaredMs))}catch{}let o=mt(null,null);await new Promise(a=>setTimeout(a,ne.serverBootMs));let n=`http://localhost:${P}`;console.log(m.green(`
|
|
242
|
+
\u{1F310} UI ready at ${n}`));let i=null;j().remoteEnabled===!1&&await dt(e.key),await K({permanentKey:e.key,step:I.STOPPED,theme:r}),ht(o,null),wt(()=>i,a=>{i=a},e.key,()=>o),await or({port:P,onQuit:()=>{let a=i;i=null,Ze({serverManager:o,tunnelProcess:a,exit:!1}),Mt(),setTimeout(()=>process.exit(0),500)},onOpenUI:()=>Ct(n)}),wn({tunnelUrl:"",running:!0}),(process.argv.includes("--start")||process.argv.includes("--skip-update"))&&j().remoteEnabled!==!1&&Vt("start-tunnel"),await new Promise(()=>{})}$t();async function Ua(){if(await Q()&&(await new Promise(l=>setTimeout(l,ne.guestRecheckMs)),await Q())){console.log(`
|
|
243
|
+
\u{1F310} 9Remote already running at http://localhost:${P}`);return}Me("agent",process.pid),bs().catch(()=>{});let e=await at(),t=process.argv.find(l=>l.startsWith("--theme=")),r=t?t.split("=")[1]:null;try{se(),await new Promise(l=>setTimeout(l,ne.killCloudflaredMs))}catch{}let o=mt(null,null);await new Promise(l=>setTimeout(l,ne.serverBootMs));let n=`http://localhost:${P}`,i=null;await K({permanentKey:e.key,step:I.STOPPED,theme:r});let s=()=>{let l=i;i=null,Ze({serverManager:o,tunnelProcess:l,exit:!1})};ht(o,null),wt(()=>i,l=>{i=l},e.key,()=>o);try{je("cloudflared")}catch{}(process.argv.includes("--start")||process.argv.includes("--skip-update"))&&j().remoteEnabled!==!1&&Vt("start-tunnel"),await or({port:P,onQuit:s,onOpenUI:()=>Ct(n)})&&$o({title:"9Remote is running",message:`Open ${n} or use the tray icon to manage.`}),await new Promise(()=>{})}var Ft=B("mode");async function lu(e){Ft.info("Starting server..."),await M(I.PREPARING);try{se(),await new Promise(l=>setTimeout(l,ne.killCloudflaredMs))}catch{}let t=j().remoteEnabled===!1,r=!t;if(t&&await dt(e),r)try{let l=await H(`${L}/api/session/create`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:Y(e),hostPublicKey:ot(),hostX25519Key:it()})});if(!l.ok)throw new Error(`Session create failed: ${l.status}`);Dt(e)}catch(l){Ft.error(`Session create failed: ${l.message} \u2014 local-only, retry from Web UI`),r=!1}let o=await Q(),n=o?{getProcess:()=>null,shutdown:()=>{}}:mt(null,null);o||await new Promise(l=>setTimeout(l,ne.serverBootMs)),Ft.info("Starting tunnel..."),await M(I.CONNECTING);let i={current:null},s="",a=async l=>{Ft.info(`Tunnel URL rotated: ${l}`),await Nt(e,l),K({tunnelUrl:l}),cn(l)},c=null;if(r)try{c=await Xe(P,a,ze({onUrlUpdate:a,setTunnel:l=>{i.current=l}}))}catch(l){Ft.error(`Tunnel spawn failed: ${l.message} \u2014 RTC-only, bg retry`)}return c&&(i.current=c.child,s=c.tunnelUrl,await pt(s)||(Ft.warn("Tunnel health check timed out \u2014 bg reconnect"),i.current=null,s="",c=null)),!c&&r&&Sn(P,{onUrlUpdate:a,onRestart:ze({onUrlUpdate:a,setTunnel:l=>{i.current=l}}),setActiveTunnel:l=>{i.current=l},onReady:async l=>{await M(I.READY,{tunnelUrl:l.tunnelUrl})}}),s&&await Nt(e,s),r?await M(I.READY,{tunnelUrl:s}):await M(I.STOPPED,{tunnelUrl:""}),Cn({apiKey:e,tunnelUrl:s,serverPid:n.getProcess()?.pid,tunnelPid:i.current?.pid}),{serverManager:n,tunnelRef:i,tunnelUrl:s,remoteOnline:r}}async function Fa(){Jt(_e());let e=await at();Ft.info(`Using key: ${dr(e.key)} (${e.name})`);let{serverManager:t,tunnelRef:r,tunnelUrl:o,remoteOnline:n}=await lu(e.key);n?await Gr(e.key,o):console.log(`\u26A0 ${j().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.`),ht(t,r.current),wt(()=>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;K({uptime:`${a}:${String(c).padStart(2,"0")}:${String(l).padStart(2,"0")}`})},Ae.statsMs),await new Promise(()=>{})}var Ka=R(require("path"),1),Ha=R(require("fs"),1);$t();async function Wa(){let e=`http://localhost:${P}`;await Q()&&(Fr(P),await new Promise(c=>setTimeout(c,500)));let t=["--tray"],r=process.argv.find(c=>c.startsWith("--theme="));r&&t.push(r);let o=Dn;try{Ha.default.mkdirSync(Ka.default.dirname(o),{recursive:!0})}catch{}let n=null;try{n=Ss(t),n&&Me("agent",n)}catch(c){console.log(m.red(`
|
|
244
|
+
\u274C Failed to launch background: ${c.message}`)),process.exit(1)}let i=Date.now()+Ae.bgServerReadyTimeoutMs,s=!1;for(;Date.now()<i;){if(await Q()){s=!0;break}await new Promise(c=>setTimeout(c,Ae.bgServerReadyIntervalMs))}s||(console.log(m.red(`
|
|
212
245
|
\u274C Background server failed to start.`)),console.log(m.gray(` Check log: ${o}
|
|
213
|
-
`)),process.exit(1)),
|
|
246
|
+
`)),process.exit(1)),Vt("start-tunnel"),Ct(e);let a=n?` (PID: ${n})`:"";console.log(m.green(`
|
|
214
247
|
\u{1F310} 9Remote running at ${e}${a}`)),console.log(m.gray(`\u{1F4A1} Log: ${o}
|
|
215
|
-
`)),await new Promise(c=>setTimeout(c,ne.bgSpawnFlushMs)),process.exit(0)}var
|
|
248
|
+
`)),await new Promise(c=>setTimeout(c,ne.bgSpawnFlushMs)),process.exit(0)}var ja=R(require("readline"),1);var Vr=B("mode"),bn=null;async function Ga(){Me("agent",process.pid),console.clear(),Hi(),Vi(!0),await M(I.PREPARING);let e=await at(),t=null,r={getProcess:()=>null,shutdown:()=>{}};if(!await Q()){r=mt(null,null,()=>{if(process.stdin.isTTY){try{process.stdin.setRawMode(!1)}catch{}try{process.stdin.setRawMode(!0),process.stdin.resume()}catch{}}try{ja.default.emitKeypressEvents(process.stdin)}catch{}t?.()});let g=Date.now()+Ae.serverReadyTimeoutMs;for(;Date.now()<g&&!await Q();)await new Promise(b=>setTimeout(b,Ae.serverReadyIntervalMs))}try{se(),await new Promise(g=>setTimeout(g,ne.killCloudflaredTuiMs))}catch{}try{await rr(Ar)}catch(g){Vr.error(`cloudflared setup failed: ${g?.message||g} \u2014 retry from Web UI`)}await M(I.CONNECTING);let n=j().remoteEnabled===!1,i=!n;if(n&&await dt(e.key),i)try{let g=await H(`${L}/api/session/create`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:Y(e.key),hostPublicKey:ot(),hostX25519Key:it()})});if(!g.ok)throw new Error(`Session create failed: ${g.status}`);await q("/api/signaling/retry",{}),Dt(e.key)}catch(g){Vr.error(`Failed to connect: ${g.message}`),i=!1}await M(I.TUNNELING);let s=i?await Bn(e.key,L):null,a=Un(L,s),c=s?.oneTimeKey||"",l=a,u="",f=null,p={current:null},d=async g=>{u=g,await Nt(e.key,g),await K({tunnelUrl:g}),cn(g),f!==null&&(f=await Tn(c,e.key,l,u),t?.())},h=null;if(i)try{h=await Xe(P,d,ze({onUrlUpdate:d,setTunnel:g=>{p.current=g}}))}catch(g){Vr.error(`Tunnel spawn failed: ${g?.message||g} \u2014 QR RTC-only, bg retry`)}h&&(p.current=h.child,u=h.tunnelUrl,Cn({apiKey:e.key,tunnelUrl:h.tunnelUrl,tunnelPid:h.child?.pid}),await M(I.VERIFYING),await pt(h.tunnelUrl)?await d(h.tunnelUrl):(Vr.warn("Tunnel health check timed out \u2014 bg reconnect"),p.current=null,u="",h=null)),!h&&i&&Sn(P,{onUrlUpdate:d,onRestart:ze({onUrlUpdate:d,setTunnel:g=>{p.current=g}}),setActiveTunnel:g=>{p.current=g},onReady:async g=>{Cn({apiKey:e.key,tunnelUrl:g.tunnelUrl,tunnelPid:g.child?.pid}),await M(I.READY,{tunnelUrl:g.tunnelUrl})}}),i?await M(I.READY,{tunnelUrl:u,oneTimeKey:s?.oneTimeKey||"",oneTimeKeyExpiresAt:s?.expiresAt||null,permanentKey:e.key,qrUrl:a,workerUrl:L}):(await M(I.STOPPED,{tunnelUrl:"",oneTimeKey:"",oneTimeKeyExpiresAt:null,permanentKey:e.key,qrUrl:"",workerUrl:L}),console.log(m.red(`
|
|
216
249
|
\u26A0 ${n?"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.
|
|
217
|
-
`))),await new Promise(g=>setTimeout(g,ne.trayReadyMs)),f=await
|
|
250
|
+
`))),await new Promise(g=>setTimeout(g,ne.trayReadyMs)),f=await Tn(c,e.key,l,u);let w=[],E=!1,O=()=>{E||t?.()},T=async(g,b,_)=>{if(!E){E=!0;try{let $=await Wi(b,_);await q(`/api/device/${$?"approve":"reject"}`,{socketId:g})}catch{}finally{E=!1,t?.()}}},A=ji(P,async(g,b)=>{if(g==="log"&&b.message)w.push(b.message),w.length>We.maxLogLines&&w.shift();else if(g==="state"){let _=b.permanentKey||e.key,$=b.oneTimeKey!==void 0?b.oneTimeKey:c,X=b.qrUrl!==void 0?b.qrUrl:l,ae=b.tunnelUrl!==void 0?b.tunnelUrl:u;($!==c||_!==e.key||ae!==u)&&(c=$,l=X,u=ae,b.permanentKey&&(e={...e,key:b.permanentKey}),f=await Tn(c,e.key,l,u),O())}else g==="permissions"?(E||Promise.resolve(bn?.()).catch(()=>{}),O()):g==="autostart"||g==="sleepInhibit"?(E||Promise.resolve(bn?.()).catch(()=>{}),O()):g==="deviceApproval"&&b.action==="pending"&&await T(b.socketId,b.deviceId,b.ip)}),k=setInterval(async()=>{if(!E)try{let b=(await Z("/api/device/pending"))?.pending?.[0];b&&await T(b.socketId,b.deviceId,b.ip)}catch{}},Ae.pendingApprovalMs);ht({getProcess:r.getProcess,shutdown:()=>{et(),r.shutdown();try{p.current?.kill()}catch{}A(),clearInterval(k)}}),wt(()=>p.current,g=>{p.current=g},e.key,()=>r),await uu(e,u,()=>f,g=>{f=g},g=>{t=g},()=>{et();try{A()}catch{}try{clearInterval(k)}catch{}Ze({serverManager:r,tunnelProcess:p.current,exit:!1})},w)}async function uu(e,t,r,o,n,i,s){for(;;){let{desktopEnabled:a,remoteAvailable:c,autoApprove:l}=await lo(),u=[{label:"Open Web UI",action:"webui"}];j().remoteEnabled!==!1&&u.push({label:"Keys \u25B6",action:"keys"}),c&&u.push({label:`Remote Desktop: ${a?m.green("ON"):m.gray("OFF")} \u25B6`,action:"desktop"}),u.push({label:`Manage Devices \u25B6 ${m.dim("(Auto-approve:")} ${l?m.green("ON"):m.gray("OFF")}${m.dim(")")}`,action:"devices"},{label:"Settings \u25B6",action:"settings"},{label:"View Logs",action:"logs"},{label:m.gray("Exit"),action:"exit"});let f=null;n(()=>f?.());let p=await Le("",u,0,r,h=>{f=h},i),d=p>=0?u[p].action:"exit";if(d==="webui"){let h=`http://localhost:${P}`,{openBrowser:w}=await Promise.resolve().then(()=>($t(),oa));w(h),console.log(m.green(`
|
|
218
251
|
\u{1F310} Opening ${h}
|
|
219
|
-
`))}else if(d==="keys")await
|
|
252
|
+
`))}else if(d==="keys")await fu(e,t,o,r);else if(d==="desktop")await mu();else if(d==="devices")await hu();else if(d==="settings")await du();else if(d==="logs")await gu();else{try{i?.()}catch{}console.log(m.gray(`
|
|
220
253
|
Goodbye!
|
|
221
|
-
`)),process.exit(0)}}}async function
|
|
254
|
+
`)),process.exit(0)}}}async function fu(e,t,r,o){let n=j().remoteEnabled===!1?[{label:m.gray("Remote access is off \u2014 enable it in the Web UI"),action:"back"}]:[{label:"New One-Time Key",action:"otk"},{label:"Regenerate Permanent Key",action:"regen"},{label:m.gray("\u2190 Back"),action:"back"}],i=await Le("Keys",n,0,o),s=i>=0?n[i].action:"back";if(s==="otk"){let a=await Bn(e.key,L);if(a){let c=Un(L,a);r(await Tn(a.oneTimeKey,e.key,c,t)),await K({oneTimeKey:a.oneTimeKey,oneTimeKeyExpiresAt:a.expiresAt,qrUrl:c})}}else if(s==="regen"&&await ao(m.yellow("Replace current key and disconnect all sessions? Continue?"))){let c=await jt(),l=St(c);if(!await bt(l,L,t,e.key)){r(m.red("Key regeneration failed \u2014 could not reach the server"));return}let u=Ke(c,l,e.name||"Default");Object.assign(e,u),r(await Tn("",e.key,"",t)),await K({permanentKey:e.key,oneTimeKey:"",oneTimeKeyExpiresAt:null,qrUrl:"",pairingUsed:!0})}}var Xo={none:"Off","30m":"Off after 30 min idle","1h":"Off after 1 hour idle","2h":"Off after 2 hours idle","4h":"Off after 4 hours idle","24h":"Off after 24 hours idle",never:"Never off"};async function pu(e,t){let r=t.map(s=>({label:Xo[s]||s,action:s}));r.push({label:m.gray("\u2190 Back"),action:"back"});let o=Math.max(0,t.indexOf(e)),n=await Le("Prevent sleep",r,o),i=n>=0?r[n].action:"back";i!=="back"&&await q("/api/sleep-inhibit",{mode:i})}async function du(){for(;;){let e=!1,t="never",r=[],o=()=>[{label:`Launch on system startup: ${e?m.green("ON"):m.gray("OFF")}`,action:"autostart"},{label:`Prevent sleep: ${t==="none"?m.gray(Xo.none):m.green(Xo[t]||t)} \u25B6`,action:"sleep"},{label:m.gray("\u2190 Back"),action:"back"}],n=o(),i=null,s=async()=>{let l=await lo();e=!!l.autoStart,t=l.sleepInhibitMode||"never",r=l.sleepInhibitPresets||[],n=o(),i?.()};await s(),bn=s;let a=await Le("Settings",n,0,"",l=>{i=l});bn=null;let c=a>=0?n[a].action:"back";if(c==="autostart")await q("/api/autostart",{enabled:!e});else if(c==="sleep")await pu(t,r);else return}}async function mu(){for(;;){let e=!1,t={screenRecording:!1,accessibility:!1},r=()=>({toggle:`Toggle: ${e?m.green("ON \u2192 turn OFF"):m.gray("OFF \u2192 turn ON")}`,sr:`Screen Recording ${t.screenRecording?m.green("\u2713"):m.red("\u2717 (click to grant)")}`,ax:`Mouse & Keyboard control ${t.accessibility?m.green("\u2713"):m.red("\u2717 (click to grant)")}`}),o=[{label:""},{label:""},{label:""},{label:m.gray("\u2190 Back")}],n=null,i=async()=>{let a=await Z("/api/ui/state")||{};e=!!a.desktopEnabled,t={screenRecording:!!a.screenRecording,accessibility:!!a.accessibility};let c=r();o[0].label=c.toggle,o[1].label=c.sr,o[2].label=c.ax,n?.()};await i(),bn=i;let s=await Le("Remote Desktop",o,0,"",a=>{n=a});if(bn=null,s===0)await q("/api/desktop/toggle",{enabled:!e});else if(s===1&&!t.screenRecording)await q("/api/permissions/request",{type:"screenRecording"})||vr("screenRecording");else if(s===2&&!t.accessibility)await q("/api/permissions/request",{type:"accessibility"})||vr("accessibility");else if(s===3||s===-1)return}}async function hu(){for(;;){let[e,t]=await Promise.all([Z("/api/device/approved"),Z("/api/device/auto-approve")]),r=e?.devices||[],o=!!t?.enabled,n=[{label:`Auto-approve new devices: ${o?m.green("ON"):m.gray("OFF")}`,action:"toggle"},...r.map(a=>{let c=a.deviceId.slice(0,8),l=a.approvedAt?new Date(a.approvedAt).toLocaleString():"unknown";return{label:`${c}... ${m.dim(l)}`,action:"remove",deviceId:a.deviceId}}),{label:m.gray("\u2190 Back"),action:"back"}],i=await Le(`Approved Devices (${r.length})`,n,0);if(i===-1)return;let s=n[i];if(s.action==="back")return;if(s.action==="toggle"){await q("/api/device/auto-approve",{enabled:!o});continue}s.action==="remove"&&await ao(m.yellow(`Remove device ${s.deviceId.slice(0,8)}...?`))&&await q("/api/device/remove",{deviceId:s.deviceId})}}async function gu(){let e=Ai(ni),t=e.length?e.join(`
|
|
222
255
|
`):m.gray(" No logs yet"),r=`
|
|
223
|
-
${m.dim("Log file:")} ${m.cyan(
|
|
224
|
-
${m.dim(`Tail: tail -f ${
|
|
256
|
+
${m.dim("Log file:")} ${m.cyan(Dn)}
|
|
257
|
+
${m.dim(`Tail: tail -f ${Dn}`)}`;await Le("Logs",[{label:m.gray("\u2190 Back")}],0,t+r)}async function Va(){let e=_e(),t=await Os(),r=so(e,t?.latest??null),o=[];t?.latest&&o.push({label:m.yellow(`Update to v${t.latest}`),action:"update"}),o.push({label:"Open Web UI (background)",action:"ui"},{label:"Terminal UI",action:"tui"},{label:m.gray("Exit"),action:"exit"});let n=await Le("",o,0,r),i=n>=0?o[n].action:"exit";if(i==="update"){let s=Math.min(We.headerWidth,process.stdout.columns||We.headerWidth);$r(),console.log(fe.orange(`
|
|
225
258
|
`+"\u2550".repeat(s))),console.log(m.gray(` \u2713 Stopped running instances
|
|
226
259
|
`)),console.log(m.yellow(` \u2B06 Run this command to update:
|
|
227
260
|
`)),console.log(m.white.bold(` npm i -g ${Ue}
|
|
228
261
|
`)),console.log(fe.orange("\u2550".repeat(s))+`
|
|
229
|
-
`),process.exit(0)}else i==="ui"?await
|
|
262
|
+
`),process.exit(0)}else i==="ui"?await Wa():i==="tui"?await Ga():process.exit(0)}var Ya=[["9remote","Interactive menu (TUI). Falls back to help with no TTY."],["9remote start","Run server + tunnel in foreground (headless)."],["9remote key","Show permanent key + connect URL."],["9remote key --new","Regenerate the permanent key."],["9remote otk","Create a fresh one-time connect key + URL."],["9remote devices","List approved devices."],["9remote auto-approve <on|off>","Toggle device auto-approve."],["9remote approve <socketId>","Approve a pending device."],["9remote help","Show this help."]];function qo(){Jt(_e()),console.log(m.white.bold(`
|
|
230
263
|
Usage:
|
|
231
|
-
`));let e=Math.max(...
|
|
264
|
+
`));let e=Math.max(...Ya.map(([t])=>t.length))+2;for(let[t,r]of Ya)console.log(" "+m.cyan(t.padEnd(e))+m.gray(r));console.log()}async function cr(){return await Q()?!0:(console.log(m.red(`
|
|
232
265
|
\u2717 Server not running. Start it first: `)+m.cyan("9remote start")+`
|
|
233
|
-
`),!1)}async function
|
|
266
|
+
`),!1)}async function yu(e){if(!await cr())return;if(e){let r=await q("/api/key/regenerate"),o=r&&r.ok?await r.json():null;if(!o?.permanentKey){console.log(m.red(`
|
|
234
267
|
\u2717 Regenerate failed
|
|
235
268
|
`));return}console.log(m.green(`
|
|
236
269
|
\u2713 New key: `)+m.white.bold(o.permanentKey)+`
|
|
237
|
-
`);return}let t=await
|
|
270
|
+
`);return}let t=await Z("/api/ui/state")||{};if(!t.permanentKey){console.log(m.red(`
|
|
238
271
|
\u2717 No key yet. Run: `)+m.cyan("9remote start")+`
|
|
239
272
|
`);return}console.log(m.white(`
|
|
240
|
-
Key`.padEnd(14))+m.white.bold(t.permanentKey)),t.qrUrl&&console.log(m.white("Connect URL".padEnd(14))+m.cyan(t.qrUrl)),console.log(m.white("App URL".padEnd(14))+m.gray(`${
|
|
241
|
-
`)}async function
|
|
273
|
+
Key`.padEnd(14))+m.white.bold(t.permanentKey)),t.qrUrl&&console.log(m.white("Connect URL".padEnd(14))+m.cyan(t.qrUrl)),console.log(m.white("App URL".padEnd(14))+m.gray(`${L}/login`)+`
|
|
274
|
+
`)}async function wu(){if(!await cr())return;let e=await q("/api/key/one-time"),t=e&&e.ok?await e.json():null;if(!t?.qrUrl){console.log(m.red(`
|
|
242
275
|
\u2717 Failed to create one-time key
|
|
243
276
|
`));return}console.log(m.green(`
|
|
244
277
|
\u2713 One-time key (30 min): `)+m.white.bold(t.oneTimeKey)),console.log(m.white("Connect URL ")+m.cyan(t.qrUrl)+`
|
|
245
|
-
`)}async function
|
|
278
|
+
`)}async function vu(){if(!await cr())return;let t=(await Z("/api/device/approved")||{}).devices||[],r=await Z("/api/device/auto-approve")||{};if(console.log(m.white(`
|
|
246
279
|
Auto-approve: `)+(r.enabled?m.green("ON"):m.gray("OFF"))),!t.length){console.log(m.gray(`No approved devices
|
|
247
|
-
`));return}console.log(m.white(`Approved devices (${t.length}):`));for(let o of t)console.log(" "+m.cyan(o.deviceId));console.log()}async function
|
|
280
|
+
`));return}console.log(m.white(`Approved devices (${t.length}):`));for(let o of t)console.log(" "+m.cyan(o.deviceId));console.log()}async function Eu(e){if(!await cr())return;let t=e==="on";if(e!=="on"&&e!=="off"){console.log(m.red(`
|
|
248
281
|
\u2717 Usage: 9remote auto-approve <on|off>
|
|
249
|
-
`));return}let r=await
|
|
282
|
+
`));return}let r=await q("/api/device/auto-approve",{enabled:t}),o=r&&r.ok?await r.json():null;console.log(m.green(`
|
|
250
283
|
\u2713 Auto-approve: `)+(o?.enabled?m.green("ON"):m.gray("OFF"))+`
|
|
251
|
-
`)}async function
|
|
284
|
+
`)}async function Su(e){if(!await cr())return;if(!e){let n=(await Z("/api/device/pending")||{}).pending||[];if(!n.length){console.log(m.gray(`
|
|
252
285
|
No pending devices
|
|
253
286
|
`));return}console.log(m.white(`
|
|
254
287
|
Pending devices (${n.length}):`));for(let i of n)console.log(" "+m.cyan(i.socketId)+m.gray(` ${i.deviceId?.slice(0,8)||""} ${i.ip||""}`));console.log(m.gray(`
|
|
255
288
|
Approve with: `)+m.cyan("9remote approve <socketId>")+`
|
|
256
|
-
`);return}let t=await
|
|
289
|
+
`);return}let t=await q("/api/device/approve",{socketId:e}),r=t&&t.ok?await t.json():null;console.log(r?.ok?m.green(`
|
|
257
290
|
\u2713 Approved
|
|
258
291
|
`):m.red(`
|
|
259
292
|
\u2717 Approve failed (invalid socketId?)
|
|
260
|
-
`))}async function
|
|
261
|
-
`),process.exit(0));
|
|
293
|
+
`))}async function Xa(e){let t=e[2],r=e.slice(3);switch(t){case"help":case"-h":case"--help":return qo(),!0;case"key":return await yu(r.includes("--new")),!0;case"otk":return await wu(),!0;case"devices":return await vu(),!0;case"auto-approve":return await Eu(r[0]),!0;case"approve":return await Su(r[0]),!0;default:return!1}}var Qo=process.argv[2];(Qo==="version"||Qo==="--version"||Qo==="-v")&&(process.stdout.write(_e()+`
|
|
294
|
+
`),process.exit(0));bi();async function Tu(){let e=process.argv[2];if(await Xa(process.argv))return;process.argv.includes("--tray")||process.argv.includes("--auto")||process.argv.includes("--start")||$r(),e==="ui"?await Ba():e==="start"||process.argv.includes("--auto")?await Fa():process.argv.includes("--tray")||process.argv.includes("--start")?await Ua():process.stdin.isTTY?await Va():qo()}Tu().catch(console.error);
|