9remote 2.1.7 → 2.1.9

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 CHANGED
@@ -9,7 +9,7 @@ Right-click to open / quit`}function Zi(){let{port:e,tunnelUrl:n}=Ft,r=process.p
9
9
  `}l||(t+=p)}else{var w=oo(ur).times(o.getModuleCount()+3);t+=w+`
10
10
  `,o.modules.forEach(function(T){t+=ur,t+=T.map(Ic).join(""),t+=ur+`
11
11
  `}),t+=w}r?r(t):console.log(t)},setErrorLevel:function(e){this.error=ks[e]||this.error}}});var In=require("fs"),qt=require("path"),yo=require("url"),wo=A(require("os"),1);var On=A(require("dns"),1),_e=A(require("path"),1),uo=A(require("os"),1),ne="9remote",mr=process.env.NREMOTE_REGISTRY||`https://registry.npmjs.org/${ne}/latest`,Pe=`${ne}@latest`,Fe=_e.default.join(uo.default.homedir(),".9remote"),re={ROOT:Fe,LOGS:_e.default.join(Fe,"logs"),STATE:_e.default.join(Fe,"state"),CONFIG:_e.default.join(Fe,"config"),BIN:_e.default.join(Fe,"bin"),PIDS:_e.default.join(Fe,"pids"),BUFFERS:_e.default.join(Fe,"buffers"),DAEMON:_e.default.join(Fe,"daemon")},fo=new On.default.promises.Resolver;fo.setServers(["1.1.1.1","1.0.0.1","8.8.8.8"]);var dr=On.default.lookup,zs=/^(\d{1,3}\.){3}\d{1,3}$|^::1$|^[0-9a-f:]+$/i;On.default.lookup=(e,n,r)=>{if(typeof n=="function"&&(r=n,n={}),e==="localhost"||zs.test(e))return dr(e,n,r);fo.resolve4(e).then(o=>{if(!o?.length)return dr(e,n,r);n.all?r(null,o.map(t=>({address:t,family:4}))):r(null,o[0],4)}).catch(()=>dr(e,n,r))};var O=2208,lo=5173;var zc=[`http://localhost:${O}`,`http://127.0.0.1:${O}`,`http://localhost:${lo}`,`http://127.0.0.1:${lo}`],Yt={fileName:"agent.log",rotatedName:"agent.log.1",maxBytes:2*1024*1024,cleanupAfterDays:7},po=60,$={STOPPED:0,PREPARING:1,CONNECTING:2,TUNNELING:3,VERIFYING:4,READY:5},mo={showTunnelUrlInMenu:!1};var ho={CLAUDE_CODE_DISABLE_ALTERNATE_SCREEN:"1"};var go={checkIntervalMs:3e4,requestTimeoutMs:5e3},le={server:{strategy:"exp",baseMs:1e3,maxMs:6e4},tunnelRestart:{strategy:"exp",baseMs:2e3,maxMs:3e5},tunnelSpawn:{strategy:"linear",baseMs:5e3,maxMs:6e4},internet:{strategy:"linear",baseMs:3e3,maxMs:6e4},sse:{strategy:"linear",baseMs:2e3,maxMs:2e3},urlSync:{strategy:"linear",baseMs:5e3,maxMs:6e4}},ea={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 G(e,n={}){return fetch(e,{...n,headers:{...ea,...n.headers}})}var ta=(0,qt.dirname)((0,yo.fileURLToPath)(__importMetaUrl)),na=[(0,qt.join)(wo.default.homedir(),".9remote",".env"),(0,qt.join)(ta,"..",".env")];function ra(e){for(let n of e.split(`
12
- `)){let r=n.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 na)if((0,In.existsSync)(e))try{ra((0,In.readFileSync)(e,"utf8"))}catch{}for(let[e,n]of Object.entries(ho))process.env[e]||(process.env[e]=n);var vr=A(require("path"),1),bo=A(require("fs"),1),Ao=require("url");var So=A(vo(),1),gr=A(require("crypto"),1),{machineIdSync:oa}=So.default;async function vt(e=null){let n=e||process.env.MACHINE_ID_SALT||"9remote-salt";try{let r=oa();return gr.default.createHash("sha256").update(r+n).digest("hex").substring(0,16)}catch(r){return console.error("Error getting machine ID:",r),gr.default.randomUUID().replace(/-/g,"").substring(0,16)}}var Eo=A(require("crypto"),1),ia=process.env.API_KEY_SECRET||"9remote-api-key-secret";function sa(){let e="abcdefghijklmnopqrstuvwxyz0123456789",n="";for(let r=0;r<4;r++)n+=e.charAt(Math.floor(Math.random()*e.length));return n}function aa(e,n){return Eo.default.createHmac("sha256",ia).update(e+n).digest("hex").slice(0,6)}function St(e){let n=e.slice(0,8),r=sa(),o=aa(n,r);return{key:`sk-${n}-${r}-${o}`,keyId:r}}function $n(e){return!e||e.length<8?"sk-***":`${e.slice(0,3)}***${e.slice(-4)}`}var ae=A(require("fs"),1),Qt=A(require("path"),1);var il=re.STATE,yr=Qt.default.join(re.STATE,"state.json"),wr=Qt.default.join(re.ROOT,"keys.json"),Cn=Qt.default.join(re.STATE,"cmd.json"),sl=Qt.default.join(re.STATE,"settings.json");function Ln(){for(let e of[re.ROOT,re.STATE])ae.default.existsSync(e)||ae.default.mkdirSync(e,{recursive:!0})}function Mn(e){try{Ln(),ae.default.writeFileSync(yr,JSON.stringify(e,null,2),{mode:384})}catch(n){console.error("Error saving state:",n)}}function To(){try{ae.default.existsSync(yr)&&ae.default.unlinkSync(yr)}catch{}}function Nn(){try{return Ln(),ae.default.existsSync(wr)?JSON.parse(ae.default.readFileSync(wr,"utf8")):{machineId:null,key:null,name:"Default",createdAt:null}}catch{return{machineId:null,key:null,name:"Default",createdAt:null}}}function Et(e){try{Ln(),ae.default.writeFileSync(Cn,JSON.stringify({cmd:e,ts:Date.now()}))}catch{}}function xo(){try{if(!ae.default.existsSync(Cn))return null;let e=JSON.parse(ae.default.readFileSync(Cn,"utf8"));return ae.default.unlinkSync(Cn),e.cmd}catch{return null}}function rt(e,n,r="Default"){try{Ln();let o={machineId:e,key:n,name:r,createdAt:new Date().toISOString()};return ae.default.writeFileSync(wr,JSON.stringify(o,null,2),{mode:384}),o}catch(o){return console.error("Error saving key:",o),null}}function Ro(){return process.env.CODESPACES==="true"}var ca=vr.default.dirname((0,Ao.fileURLToPath)(__importMetaUrl));async function Ue(){let e=await vt();if(Ro()&&process.env.NREMOTE_API_KEY)return rt(e,process.env.NREMOTE_API_KEY,"Codespace");let n=Nn();if(!n.key){let{key:r}=St(e);n=rt(e,r,"Default")}return n}function Se(){return"2.1.7"}var Ee=A(require("fs"),1),Er=A(require("path"),1);var Dn=re.LOGS,Zt=Er.default.join(Dn,Yt.fileName),Fn=Er.default.join(Dn,Yt.rotatedName),ko=!1,_o=null;function la(){Ee.default.existsSync(Dn)||Ee.default.mkdirSync(Dn,{recursive:!0})}function ua(){try{if(Ee.default.statSync(Zt).size<Yt.maxBytes)return;try{Ee.default.rmSync(Fn,{force:!0})}catch{}Ee.default.renameSync(Zt,Fn)}catch{}}function fa(){try{let e=Ee.default.statSync(Fn);Date.now()-e.mtimeMs>Yt.cleanupAfterDays*864e5&&Ee.default.rmSync(Fn,{force:!0})}catch{}}function Tr(e){try{ua(),Ee.default.appendFileSync(Zt,e+`
12
+ `)){let r=n.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 na)if((0,In.existsSync)(e))try{ra((0,In.readFileSync)(e,"utf8"))}catch{}for(let[e,n]of Object.entries(ho))process.env[e]||(process.env[e]=n);var vr=A(require("path"),1),bo=A(require("fs"),1),Ao=require("url");var So=A(vo(),1),gr=A(require("crypto"),1),{machineIdSync:oa}=So.default;async function vt(e=null){let n=e||process.env.MACHINE_ID_SALT||"9remote-salt";try{let r=oa();return gr.default.createHash("sha256").update(r+n).digest("hex").substring(0,16)}catch(r){return console.error("Error getting machine ID:",r),gr.default.randomUUID().replace(/-/g,"").substring(0,16)}}var Eo=A(require("crypto"),1),ia=process.env.API_KEY_SECRET||"9remote-api-key-secret";function sa(){let e="abcdefghijklmnopqrstuvwxyz0123456789",n="";for(let r=0;r<4;r++)n+=e.charAt(Math.floor(Math.random()*e.length));return n}function aa(e,n){return Eo.default.createHmac("sha256",ia).update(e+n).digest("hex").slice(0,6)}function St(e){let n=e.slice(0,8),r=sa(),o=aa(n,r);return{key:`sk-${n}-${r}-${o}`,keyId:r}}function $n(e){return!e||e.length<8?"sk-***":`${e.slice(0,3)}***${e.slice(-4)}`}var ae=A(require("fs"),1),Qt=A(require("path"),1);var il=re.STATE,yr=Qt.default.join(re.STATE,"state.json"),wr=Qt.default.join(re.ROOT,"keys.json"),Cn=Qt.default.join(re.STATE,"cmd.json"),sl=Qt.default.join(re.STATE,"settings.json");function Ln(){for(let e of[re.ROOT,re.STATE])ae.default.existsSync(e)||ae.default.mkdirSync(e,{recursive:!0})}function Mn(e){try{Ln(),ae.default.writeFileSync(yr,JSON.stringify(e,null,2),{mode:384})}catch(n){console.error("Error saving state:",n)}}function To(){try{ae.default.existsSync(yr)&&ae.default.unlinkSync(yr)}catch{}}function Nn(){try{return Ln(),ae.default.existsSync(wr)?JSON.parse(ae.default.readFileSync(wr,"utf8")):{machineId:null,key:null,name:"Default",createdAt:null}}catch{return{machineId:null,key:null,name:"Default",createdAt:null}}}function Et(e){try{Ln(),ae.default.writeFileSync(Cn,JSON.stringify({cmd:e,ts:Date.now()}))}catch{}}function xo(){try{if(!ae.default.existsSync(Cn))return null;let e=JSON.parse(ae.default.readFileSync(Cn,"utf8"));return ae.default.unlinkSync(Cn),e.cmd}catch{return null}}function rt(e,n,r="Default"){try{Ln();let o={machineId:e,key:n,name:r,createdAt:new Date().toISOString()};return ae.default.writeFileSync(wr,JSON.stringify(o,null,2),{mode:384}),o}catch(o){return console.error("Error saving key:",o),null}}function Ro(){return process.env.CODESPACES==="true"}var ca=vr.default.dirname((0,Ao.fileURLToPath)(__importMetaUrl));async function Ue(){let e=await vt();if(Ro()&&process.env.NREMOTE_API_KEY)return rt(e,process.env.NREMOTE_API_KEY,"Codespace");let n=Nn();if(!n.key){let{key:r}=St(e);n=rt(e,r,"Default")}return n}function Se(){return"2.1.9"}var Ee=A(require("fs"),1),Er=A(require("path"),1);var Dn=re.LOGS,Zt=Er.default.join(Dn,Yt.fileName),Fn=Er.default.join(Dn,Yt.rotatedName),ko=!1,_o=null;function la(){Ee.default.existsSync(Dn)||Ee.default.mkdirSync(Dn,{recursive:!0})}function ua(){try{if(Ee.default.statSync(Zt).size<Yt.maxBytes)return;try{Ee.default.rmSync(Fn,{force:!0})}catch{}Ee.default.renameSync(Zt,Fn)}catch{}}function fa(){try{let e=Ee.default.statSync(Fn);Date.now()-e.mtimeMs>Yt.cleanupAfterDays*864e5&&Ee.default.rmSync(Fn,{force:!0})}catch{}}function Tr(e){try{ua(),Ee.default.appendFileSync(Zt,e+`
13
13
  `)}catch{}}function Sr(e){return e.map(n=>{if(n instanceof Error)return n.stack||n.message;if(typeof n=="object")try{return JSON.stringify(n)}catch{return String(n)}return String(n)}).join(" ")}function Po(){let e=new Date,n=(r,o=2)=>String(r).padStart(o,"0");return`${n(e.getHours())}:${n(e.getMinutes())}:${n(e.getSeconds())}.${n(e.getMilliseconds(),3)}`}var pa=/\x1b\[[0-9;]*m/g,da=/https?:\/\/[^\s]+/g;function ma(e){return String(e).replace(pa,"").replace(da,"").replace(/\s+$/g,"")}function Xt(e,n,r){let o=ma(r);if(!o)return;let t=n==="info"?e:`${e}:${n}`,i=`${Po()} [${t}] ${o}`;if(Tr(i),_o)try{_o(i)}catch{}}function ha(){process.on("uncaughtException",e=>Xt("crash","error",`uncaughtException: ${e?.stack||e?.message||e}`)),process.on("unhandledRejection",e=>{let n=e instanceof Error?e.stack||e.message:String(e);Xt("crash","error",`unhandledRejection: ${n}`)}),process.on("exit",e=>Tr(`${Po()} [exit] code=${e} pid=${process.pid}`))}function Oo(){ko||(ko=!0,la(),fa(),Tr(`
14
14
  === SESSION ${new Date().toISOString()} pid=${process.pid} argv=${process.argv.slice(2).join(" ")} ===`),ha())}function Io(e=60){try{return Ee.default.readFileSync(Zt,"utf8").split(`
15
15
  `).filter(Boolean).slice(-e)}catch{return[]}}function J(e){return{info:(...n)=>Xt(e,"info",Sr(n)),warn:(...n)=>Xt(e,"warn",Sr(n)),error:(...n)=>Xt(e,"error",Sr(n))}}var zt=Zt;var $o=(e=0)=>n=>`\x1B[${n+e}m`,Co=(e=0)=>n=>`\x1B[${38+e};5;${n}m`,Lo=(e=0)=>(n,r,o)=>`\x1B[${38+e};2;${n};${r};${o}m`,M={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]}},gl=Object.keys(M.modifier),ga=Object.keys(M.color),ya=Object.keys(M.bgColor),yl=[...ga,...ya];function wa(){let e=new Map;for(let[n,r]of Object.entries(M)){for(let[o,t]of Object.entries(r))M[o]={open:`\x1B[${t[0]}m`,close:`\x1B[${t[1]}m`},r[o]=M[o],e.set(t[0],t[1]);Object.defineProperty(M,n,{value:r,enumerable:!1})}return Object.defineProperty(M,"codes",{value:e,enumerable:!1}),M.color.close="\x1B[39m",M.bgColor.close="\x1B[49m",M.color.ansi=$o(),M.color.ansi256=Co(),M.color.ansi16m=Lo(),M.bgColor.ansi=$o(10),M.bgColor.ansi256=Co(10),M.bgColor.ansi16m=Lo(10),Object.defineProperties(M,{rgbToAnsi256:{value(n,r,o){return n===r&&r===o?n<8?16:n>248?231:Math.round((n-8)/247*24)+232:16+36*Math.round(n/255*5)+6*Math.round(r/255*5)+Math.round(o/255*5)},enumerable:!1},hexToRgb:{value(n){let r=/[a-f\d]{6}|[a-f\d]{3}/i.exec(n.toString(16));if(!r)return[0,0,0];let[o]=r;o.length===3&&(o=[...o].map(i=>i+i).join(""));let t=Number.parseInt(o,16);return[t>>16&255,t>>8&255,t&255]},enumerable:!1},hexToAnsi256:{value:n=>M.rgbToAnsi256(...M.hexToRgb(n)),enumerable:!1},ansi256ToAnsi:{value(n){if(n<8)return 30+n;if(n<16)return 90+(n-8);let r,o,t;if(n>=232)r=((n-232)*10+8)/255,o=r,t=r;else{n-=16;let a=n%36;r=Math.floor(n/36)/5,o=Math.floor(a/6)/5,t=a%6/5}let i=Math.max(r,o,t)*2;if(i===0)return 30;let s=30+(Math.round(t)<<2|Math.round(o)<<1|Math.round(r));return i===2&&(s+=60),s},enumerable:!1},rgbToAnsi:{value:(n,r,o)=>M.ansi256ToAnsi(M.rgbToAnsi256(n,r,o)),enumerable:!1},hexToAnsi:{value:n=>M.ansi256ToAnsi(M.hexToAnsi256(n)),enumerable:!1}}),M}var va=wa(),he=va;var Bn=A(require("node:process"),1),No=A(require("node:os"),1),xr=A(require("node:tty"),1);function ue(e,n=globalThis.Deno?globalThis.Deno.args:Bn.default.argv){let r=e.startsWith("-")?"":e.length===1?"-":"--",o=n.indexOf(r+e),t=n.indexOf("--");return o!==-1&&(t===-1||o<t)}var{env:N}=Bn.default,Un;ue("no-color")||ue("no-colors")||ue("color=false")||ue("color=never")?Un=0:(ue("color")||ue("colors")||ue("color=true")||ue("color=always"))&&(Un=1);function Sa(){if("FORCE_COLOR"in N)return N.FORCE_COLOR==="true"?1:N.FORCE_COLOR==="false"?0:N.FORCE_COLOR.length===0?1:Math.min(Number.parseInt(N.FORCE_COLOR,10),3)}function Ea(e){return e===0?!1:{level:e,hasBasic:!0,has256:e>=2,has16m:e>=3}}function Ta(e,{streamIsTTY:n,sniffFlags:r=!0}={}){let o=Sa();o!==void 0&&(Un=o);let t=r?Un:o;if(t===0)return 0;if(r){if(ue("color=16m")||ue("color=full")||ue("color=truecolor"))return 3;if(ue("color=256"))return 2}if("TF_BUILD"in N&&"AGENT_NAME"in N)return 1;if(e&&!n&&t===void 0)return 0;let i=t||0;if(N.TERM==="dumb")return i;if(Bn.default.platform==="win32"){let s=No.default.release().split(".");return Number(s[0])>=10&&Number(s[2])>=10586?Number(s[2])>=14931?3:2:1}if("CI"in N)return["GITHUB_ACTIONS","GITEA_ACTIONS","CIRCLECI"].some(s=>s in N)?3:["TRAVIS","APPVEYOR","GITLAB_CI","BUILDKITE","DRONE"].some(s=>s in N)||N.CI_NAME==="codeship"?1:i;if("TEAMCITY_VERSION"in N)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(N.TEAMCITY_VERSION)?1:0;if(N.COLORTERM==="truecolor"||N.TERM==="xterm-kitty"||N.TERM==="xterm-ghostty"||N.TERM==="wezterm")return 3;if("TERM_PROGRAM"in N){let s=Number.parseInt((N.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(N.TERM_PROGRAM){case"iTerm.app":return s>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(N.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(N.TERM)||"COLORTERM"in N?1:i}function Mo(e,n={}){let r=Ta(e,{streamIsTTY:e&&e.isTTY,...n});return Ea(r)}var xa={stdout:Mo({isTTY:xr.default.isatty(1)}),stderr:Mo({isTTY:xr.default.isatty(2)})},Do=xa;function Fo(e,n,r){let o=e.indexOf(n);if(o===-1)return e;let t=n.length,i=0,s="";do s+=e.slice(i,o)+n+r,i=o+t,o=e.indexOf(n,i);while(o!==-1);return s+=e.slice(i),s}function Uo(e,n,r,o){let t=0,i="";do{let s=e[o-1]==="\r";i+=e.slice(t,s?o-1:o)+n+(s?`\r
@@ -71,7 +71,7 @@ StandardError=append:${Wn}
71
71
 
72
72
  [Install]
73
73
  WantedBy=default.target
74
- `}function Ba(e){try{return(0,st.execFileSync)("systemctl",["--user",...e],{stdio:"ignore"}),!0}catch{return!1}}function Ha(){return(0,C.existsSync)(Q.linux)||(0,C.existsSync)(Q.linuxSystemd)}async function ja(){try{if(process.platform==="darwin")return La();if(process.platform==="win32")return await Da();if(process.platform==="linux")return Ha()}catch{}return!1}async function Zo(){try{if(process.platform==="win32"&&Na(),!await ja())return!1;if(process.platform==="darwin"){let e=Ca(je(),at());return((0,C.existsSync)(Q.darwin)?(0,C.readFileSync)(Q.darwin,"utf8"):"")===e?!1:((0,C.writeFileSync)(Q.darwin,e),!0)}if(process.platform==="win32"){let e=Ma();return((0,C.existsSync)(Q.win)?(0,C.readFileSync)(Q.win,"utf8"):"")===e?!1:((0,C.writeFileSync)(Q.win,e),!0)}if(process.platform==="linux"){if((0,C.existsSync)(Q.linuxSystemd)){let e=Ua();return(0,C.readFileSync)(Q.linuxSystemd,"utf8")===e?!1:((0,C.writeFileSync)(Q.linuxSystemd,e),Ba(["daemon-reload"]),!0)}if((0,C.existsSync)(Q.linux)){let e=Fa();return(0,C.readFileSync)(Q.linux,"utf8")===e?!1:((0,C.writeFileSync)(Q.linux,e),!0)}}}catch{}return!1}var D="https://9remote.cc",zo=3e4,ei=500,Ir=300,ge={cmdMs:1e3,pendingApprovalMs:3e3,statsMs:5e3,serverReadyIntervalMs:200,serverReadyTimeoutMs:5e3,bgServerReadyTimeoutMs:15e3,bgServerReadyIntervalMs:300},Ke={intervalMs:2e3,timeoutMs:18e4,fetchTimeoutMs:5e3,dnsTimeoutMs:2e3,maxLogEntries:80,postReadyHoldMs:2e3},oe={killCloudflaredMs:500,killCloudflaredTuiMs:300,serverBootMs:2e3,trayReadyMs:1e3,postReadyHoldMs:2e3,bgSpawnFlushMs:400},Oe={maxLogLines:200,headerWidth:44},bt={checkIntervalMs:36e5,connectCheckDebounceMs:9e5,maxRetry:3,retryDelayMs:3e3,verifyTimeoutMs:15e3,lockTtlMs:3e5,lockFile:"update.lock"},ti=5e3,ni=2,ri=3e4,fe={orange:m.rgb(230,138,110),orangeDim:m.rgb(200,120,95)};var Ka=Ie.default.dirname((0,oi.fileURLToPath)(__importMetaUrl)),ii=3e3;var Jn=2208,$r=Ie.default.join(At.default.homedir(),".9remote","cloudflared.pid");function Ga(){try{Vo()}catch{}try{if((0,X.existsSync)($r)){let e=parseInt((0,X.readFileSync)($r,"utf8"));if(Number.isFinite(e))try{process.kill(e)}catch{}try{(0,X.unlinkSync)($r)}catch{}}}catch{}try{process.platform==="win32"?(0,rn.execSync)(`for /f "tokens=5" %a in ('netstat -aon ^| findstr :${Jn}') do taskkill /F /PID %a`,{stdio:"ignore",windowsHide:!0}):(0,rn.execSync)(`lsof -ti:${Jn} | xargs kill -9 2>/dev/null || true`,{stdio:"ignore"})}catch{}if(process.platform==="win32"){let e=Date.now()+1500;for(;Date.now()<e;);}}function si(){return"2.1.7"}function ai(e,n){let r=e.split(".").map(Number),o=n.split(".").map(Number);for(let t=0;t<3;t++){if(o[t]>r[t])return!0;if(o[t]<r[t])return!1}return!1}function Wa(){return process.env.CODESPACES==="true"||process.env.GITHUB_CODESPACES_PORT_FORWARDING_DOMAIN?"GitHub Codespaces":(0,X.existsSync)("/.dockerenv")?"Docker":null}function Qn(){Ga()}async function ci(){try{let e=si();if(!e)return null;let n=await G(mr,{signal:AbortSignal.timeout(ii)});if(!n.ok)return null;let{version:r}=await n.json();return r&&ai(e,r)?{current:e,latest:r}:null}catch{return null}}var qn=Ie.default.join(re.STATE,bt.lockFile);function Va(){try{if((0,X.existsSync)(qn)){let{pid:e,ts:n}=JSON.parse((0,X.readFileSync)(qn,"utf8")),r=Date.now()-n<bt.lockTtlMs,o=!1;try{process.kill(e,0),o=!0}catch{}if(r&&o)return!1}}catch{}try{(0,X.writeFileSync)(qn,JSON.stringify({pid:process.pid,ts:Date.now()}))}catch{}return!0}async function Ya(){try{let e=await G(mr,{signal:AbortSignal.timeout(ii)});if(!e.ok)return null;let{version:n}=await e.json();return n||null}catch{return null}}function qa(){try{if(process.env.NREMOTE_REGISTRY)return`--registry ${new URL(process.env.NREMOTE_REGISTRY).origin}`}catch{}return""}function Ja({currentVersion:e,latest:n,agentPid:r}){let o=Yo(),t=qa(),i=je(),s=at(),a=qn,c=`--prefer-online --no-audit --no-fund ${t}`.trim();if(process.platform==="win32"){let f=Ie.default.join(At.default.tmpdir(),`${ne}-restart.vbs`),p=`@echo off
74
+ `}function Ba(e){try{return(0,st.execFileSync)("systemctl",["--user",...e],{stdio:"ignore"}),!0}catch{return!1}}function Ha(){return(0,C.existsSync)(Q.linux)||(0,C.existsSync)(Q.linuxSystemd)}async function ja(){try{if(process.platform==="darwin")return La();if(process.platform==="win32")return await Da();if(process.platform==="linux")return Ha()}catch{}return!1}async function Zo(){try{if(process.platform==="win32"&&Na(),!await ja())return!1;if(process.platform==="darwin"){let e=Ca(je(),at());return((0,C.existsSync)(Q.darwin)?(0,C.readFileSync)(Q.darwin,"utf8"):"")===e?!1:((0,C.writeFileSync)(Q.darwin,e),!0)}if(process.platform==="win32"){let e=Ma();return((0,C.existsSync)(Q.win)?(0,C.readFileSync)(Q.win,"utf8"):"")===e?!1:((0,C.writeFileSync)(Q.win,e),!0)}if(process.platform==="linux"){if((0,C.existsSync)(Q.linuxSystemd)){let e=Ua();return(0,C.readFileSync)(Q.linuxSystemd,"utf8")===e?!1:((0,C.writeFileSync)(Q.linuxSystemd,e),Ba(["daemon-reload"]),!0)}if((0,C.existsSync)(Q.linux)){let e=Fa();return(0,C.readFileSync)(Q.linux,"utf8")===e?!1:((0,C.writeFileSync)(Q.linux,e),!0)}}}catch{}return!1}var D="https://9remote.cc",zo=3e4,ei=500,Ir=300,ge={cmdMs:1e3,pendingApprovalMs:3e3,statsMs:5e3,serverReadyIntervalMs:200,serverReadyTimeoutMs:5e3,bgServerReadyTimeoutMs:15e3,bgServerReadyIntervalMs:300},Ke={intervalMs:2e3,timeoutMs:18e4,fetchTimeoutMs:5e3,dnsTimeoutMs:2e3,maxLogEntries:80,postReadyHoldMs:2e3},oe={killCloudflaredMs:500,killCloudflaredTuiMs:300,serverBootMs:2e3,trayReadyMs:1e3,postReadyHoldMs:2e3,bgSpawnFlushMs:400},Oe={maxLogLines:200,headerWidth:44},bt={checkIntervalMs:36e5,connectCheckDebounceMs:9e5,maxRetry:3,retryDelayMs:3e3,verifyTimeoutMs:15e3,lockTtlMs:3e5,lockFile:"update.lock"},ti=5e3,ni=2,ri=3e4,fe={orange:m.rgb(230,138,110),orangeDim:m.rgb(200,120,95)};var Ka=Ie.default.dirname((0,oi.fileURLToPath)(__importMetaUrl)),ii=3e3;var Jn=2208,$r=Ie.default.join(At.default.homedir(),".9remote","cloudflared.pid");function Ga(){try{Vo()}catch{}try{if((0,X.existsSync)($r)){let e=parseInt((0,X.readFileSync)($r,"utf8"));if(Number.isFinite(e))try{process.kill(e)}catch{}try{(0,X.unlinkSync)($r)}catch{}}}catch{}try{process.platform==="win32"?(0,rn.execSync)(`for /f "tokens=5" %a in ('netstat -aon ^| findstr :${Jn}') do taskkill /F /PID %a`,{stdio:"ignore",windowsHide:!0}):(0,rn.execSync)(`lsof -ti:${Jn} | xargs kill -9 2>/dev/null || true`,{stdio:"ignore"})}catch{}if(process.platform==="win32"){let e=Date.now()+1500;for(;Date.now()<e;);}}function si(){return"2.1.9"}function ai(e,n){let r=e.split(".").map(Number),o=n.split(".").map(Number);for(let t=0;t<3;t++){if(o[t]>r[t])return!0;if(o[t]<r[t])return!1}return!1}function Wa(){return process.env.CODESPACES==="true"||process.env.GITHUB_CODESPACES_PORT_FORWARDING_DOMAIN?"GitHub Codespaces":(0,X.existsSync)("/.dockerenv")?"Docker":null}function Qn(){Ga()}async function ci(){try{let e=si();if(!e)return null;let n=await G(mr,{signal:AbortSignal.timeout(ii)});if(!n.ok)return null;let{version:r}=await n.json();return r&&ai(e,r)?{current:e,latest:r}:null}catch{return null}}var qn=Ie.default.join(re.STATE,bt.lockFile);function Va(){try{if((0,X.existsSync)(qn)){let{pid:e,ts:n}=JSON.parse((0,X.readFileSync)(qn,"utf8")),r=Date.now()-n<bt.lockTtlMs,o=!1;try{process.kill(e,0),o=!0}catch{}if(r&&o)return!1}}catch{}try{(0,X.writeFileSync)(qn,JSON.stringify({pid:process.pid,ts:Date.now()}))}catch{}return!0}async function Ya(){try{let e=await G(mr,{signal:AbortSignal.timeout(ii)});if(!e.ok)return null;let{version:n}=await e.json();return n||null}catch{return null}}function qa(){try{if(process.env.NREMOTE_REGISTRY)return`--registry ${new URL(process.env.NREMOTE_REGISTRY).origin}`}catch{}return""}function Ja({currentVersion:e,latest:n,agentPid:r}){let o=Yo(),t=qa(),i=je(),s=at(),a=qn,c=`--prefer-online --no-audit --no-fund ${t}`.trim();if(process.platform==="win32"){let f=Ie.default.join(At.default.tmpdir(),`${ne}-restart.vbs`),p=`@echo off
75
75
  setlocal EnableDelayedExpansion
76
76
  set "NODE=${i}"
77
77
  set "CLI=${s}"
@@ -1,12 +1,12 @@
1
1
  #!/usr/bin/env node
2
2
  const __importMetaUrl = require('url').pathToFileURL(__filename).href;
3
- var U=Object.create;var A=Object.defineProperty;var Z=Object.getOwnPropertyDescriptor;var W=Object.getOwnPropertyNames;var J=Object.getPrototypeOf,V=Object.prototype.hasOwnProperty;var K=(e,s,t,n)=>{if(s&&typeof s=="object"||typeof s=="function")for(let r of W(s))!V.call(e,r)&&r!==t&&A(e,r,{get:()=>s[r],enumerable:!(n=Z(s,r))||n.enumerable});return e};var O=(e,s,t)=>(t=e!=null?U(J(e)):{},K(s||!e||!e.__esModule?A(t,"default",{value:e,enumerable:!0}):t,e));var j=O(require("net"),1),a=O(require("fs"),1),g=O(require("path"),1),v=O(require("os"),1),H=O(require("node-pty"),1);var L="38",k={win32:[{id:"cmd",label:"Command Prompt",path:"cmd.exe",args:[]},{id:"powershell",label:"PowerShell",path:"powershell.exe",args:["-NoLogo"]},{id:"pwsh",label:"PowerShell Core",path:"pwsh.exe",args:["-NoLogo"]}],unix:[{id:"bash",label:"Bash",path:"/bin/bash",args:["-l"]},{id:"zsh",label:"Zsh",path:"/bin/zsh",args:["-l"]},{id:"sh",label:"Sh",path:"/bin/sh",args:["-l"]}]};function B(e){if(process.platform==="win32"){let n=e?k.win32.find(o=>o.id===e):null;if(n)return n;let r=process.env.COMSPEC;return r?{id:"cmd",label:"Command Prompt",path:r,args:[]}:k.win32[0]}let s=process.env.SHELL||"/bin/bash",t=s.split("/").pop();return{id:t,label:t,path:s,args:["-l"]}}var D=g.default.join(v.default.homedir(),".9remote"),x=process.platform==="win32"?"\\\\.\\pipe\\9remote-pty":g.default.join(D,"pty-daemon.sock"),_=g.default.join(D,"pids","ptyDaemon.pid"),h=new Map,M=new Set,F=2*1024*1024,X=128*1024,Y=128*1024,Q=5*1024*1024;function G(e,s){if(!e?.length||s<=0)return Buffer.alloc(0);let t=s,n=[];for(let r=e.length-1;r>=0&&t>0;r--){let o=e[r];o.length<=t?(n.push(o),t-=o.length):(n.push(o.subarray(o.length-t)),t=0)}return n.reverse(),Buffer.concat(n)}function P(e){return e?.length?e.reduce((s,t)=>s+t.length,0):0}function ee(e,s,t){if(!e?.length||t<=0)return{prefix:Buffer.alloc(0),trimmed:0};let n=P(e),r=n-Math.max(0,Math.min(s,n)),o=r-t;if(o<0&&(t+=o,o=0),t<=0)return{prefix:Buffer.alloc(0),trimmed:0};let i=0,c=[];for(let b=0;b<e.length&&t>0;b++){let f=e[b],m=i+f.length;if(m<=o){i=m;continue}if(i>=r)break;let E=Math.max(0,o-i),u=Math.min(t,f.length-E);c.push(f.subarray(E,E+u)),t-=u,i=m}let S=Buffer.concat(c),p=0,l=S.indexOf(10);return l>0&&l<S.length-1&&(p=l+1,S=S.subarray(p)),{prefix:S,trimmed:p}}var te=["1049","1047","1000","1002","1003","1006","1015","1005"],se=/\x1b\[\?([0-9;]+)([hl])/g;function re(e,s){typeof s!="string"&&(s=String(s));for(let t of s.matchAll(se)){let n=t[2]==="h";for(let r of t[1].split(";"))e[n?"add":"delete"](`?${r}`)}}function ne(e){let s=te.filter(t=>e.has(`?${t}`));return s.length?`\x1B[?${s.join(";")}h`:""}var C=g.default.join(D,"logs"),R=g.default.join(C,"daemon.log");try{a.default.existsSync(C)||a.default.mkdirSync(C,{recursive:!0})}catch{}function oe(){try{if(a.default.existsSync(R)&&a.default.statSync(R).size>Q){let t=a.default.readFileSync(R,"utf8").slice(-1024*1024);a.default.writeFileSync(R,t)}}catch{}}function w(e,s=null){oe();let n=`[${new Date().toISOString()}] ERROR: ${e}`;s&&(n+=` - ${s.message||s}`),n+=`
4
- `;try{a.default.appendFileSync(R,n)}catch{}console.error(n.trim())}function ie(){return process.env.CODESPACES==="true"?process.env.CODESPACE_VSCODE_FOLDER||"/workspaces":process.env.HOME||process.env.USERPROFILE||v.default.homedir()}function ce(e){let s={...process.env,TERM:"xterm-256color",COLORTERM:"truecolor",LANG:process.env.LANG||"en_US.UTF-8"};delete s.PORT;let t=e.includes("zsh"),n=e.includes("bash"),r=null;if(t){r=a.default.mkdtempSync(g.default.join(v.default.tmpdir(),"9remote-zsh-"));let o=g.default.join(r,".zshrc"),i=s.HOME||v.default.homedir(),c="";c+=`[ -f "${i}/.zprofile" ] && source "${i}/.zprofile"
5
- `,c+=`[ -f "${i}/.zshrc" ] && source "${i}/.zshrc"
6
- `,c+=`[ -f "${i}/.zlogin" ] && source "${i}/.zlogin"
3
+ var U=Object.create;var L=Object.defineProperty;var Z=Object.getOwnPropertyDescriptor;var W=Object.getOwnPropertyNames;var J=Object.getPrototypeOf,V=Object.prototype.hasOwnProperty;var K=(e,r,t,n)=>{if(r&&typeof r=="object"||typeof r=="function")for(let s of W(r))!V.call(e,s)&&s!==t&&L(e,s,{get:()=>r[s],enumerable:!(n=Z(r,s))||n.enumerable});return e};var I=(e,r,t)=>(t=e!=null?U(J(e)):{},K(r||!e||!e.__esModule?L(t,"default",{value:e,enumerable:!0}):t,e));var H=I(require("net"),1),a=I(require("fs"),1),g=I(require("path"),1),v=I(require("os"),1),G=I(require("node-pty"),1);var A="44",k={win32:[{id:"cmd",label:"Command Prompt",path:"cmd.exe",args:[]},{id:"powershell",label:"PowerShell",path:"powershell.exe",args:["-NoLogo"]},{id:"pwsh",label:"PowerShell Core",path:"pwsh.exe",args:["-NoLogo"]}],unix:[{id:"bash",label:"Bash",path:"/bin/bash",args:["-l"]},{id:"zsh",label:"Zsh",path:"/bin/zsh",args:["-l"]},{id:"sh",label:"Sh",path:"/bin/sh",args:["-l"]}]};function B(e){if(process.platform==="win32"){let n=e?k.win32.find(i=>i.id===e):null;if(n)return n;let s=process.env.COMSPEC;return s?{id:"cmd",label:"Command Prompt",path:s,args:[]}:k.win32[0]}let r=process.env.SHELL||"/bin/bash",t=r.split("/").pop();return{id:t,label:t,path:r,args:["-l"]}}function R(e){return e?.length?e.reduce((r,t)=>r+t.length,0):0}function _(e,r){if(!e?.length||r<=0)return Buffer.alloc(0);let t=r,n=[];for(let i=e.length-1;i>=0&&t>0;i--){let o=e[i];o.length<=t?(n.push(o),t-=o.length):(n.push(o.subarray(o.length-t)),t=0)}n.reverse();let s=Buffer.concat(n);if(s.length>1&&s[0]!==27){let i=Math.min(s.length,512);for(let o=1;o<i;o++)if(s[o]===27)return s.subarray(o)}return s}function X(e,r,t=512){if(r<=0||!e?.length)return r;let n=0;for(let o of e)n+=o.length;let s=n,i=t;for(let o=e.length-1;o>=0&&i>0;o--){let c=e[o];if(c.length===0){s-=0;continue}let p=s-c.length;if(p>=r){s=p;continue}let f=Math.min(c.length,r-p);for(let l=f-1;l>=0&&i>0;l--){if(c[l]===27)return p+l;i--}s=p}return r}function F(e,r,t){if(!e?.length||t<=0)return{prefix:Buffer.alloc(0),trimmed:0,extra:0};let n=R(e),s=n-Math.max(0,Math.min(r,n)),i=s-t;if(i<0&&(t+=i,i=0),t<=0)return{prefix:Buffer.alloc(0),trimmed:0,extra:0};let o=0;if(i>0){let f=X(e,i);f<i&&(o=i-f,i=f,t+=o)}let c=0,p=[];for(let f=0;f<e.length&&t>0;f++){let l=e[f],b=c+l.length;if(b<=i){c=b;continue}if(c>=s)break;let u=Math.max(0,i-c),S=Math.min(t,l.length-u);p.push(l.subarray(u,u+S)),t-=S,c=b}return{prefix:Buffer.concat(p),trimmed:0,extra:o}}var D=g.default.join(v.default.homedir(),".9remote"),E=process.platform==="win32"?"\\\\.\\pipe\\9remote-pty":g.default.join(D,"pty-daemon.sock"),C=g.default.join(D,"pids","ptyDaemon.pid"),m=new Map,M=new Set,j=2*1024*1024,Y=128*1024,Q=128*1024,ee=5*1024*1024,te=["1049","1047","1000","1002","1003","1006","1015","1005"],se=/\x1b\[\?([0-9;]+)([hl])/g;function re(e,r){typeof r!="string"&&(r=String(r));for(let t of r.matchAll(se)){let n=t[2]==="h";for(let s of t[1].split(";"))e[n?"add":"delete"](`?${s}`)}}function ne(e){let r=te.filter(t=>e.has(`?${t}`));return r.length?`\x1B[?${r.join(";")}h`:""}var N=g.default.join(D,"logs"),O=g.default.join(N,"daemon.log");try{a.default.existsSync(N)||a.default.mkdirSync(N,{recursive:!0})}catch{}function oe(){try{if(a.default.existsSync(O)&&a.default.statSync(O).size>ee){let t=a.default.readFileSync(O,"utf8").slice(-1024*1024);a.default.writeFileSync(O,t)}}catch{}}function x(e,r=null){oe();let n=`[${new Date().toISOString()}] ERROR: ${e}`;r&&(n+=` - ${r.message||r}`),n+=`
4
+ `;try{a.default.appendFileSync(O,n)}catch{}console.error(n.trim())}function ie(){return process.env.CODESPACES==="true"?process.env.CODESPACE_VSCODE_FOLDER||"/workspaces":process.env.HOME||process.env.USERPROFILE||v.default.homedir()}function ce(e){let r={...process.env,TERM:"xterm-256color",COLORTERM:"truecolor",LANG:process.env.LANG||"en_US.UTF-8"};delete r.PORT;let t=e.includes("zsh"),n=e.includes("bash"),s=null;if(t){s=a.default.mkdtempSync(g.default.join(v.default.tmpdir(),"9remote-zsh-"));let i=g.default.join(s,".zshrc"),o=r.HOME||v.default.homedir(),c="";c+=`[ -f "${o}/.zprofile" ] && source "${o}/.zprofile"
5
+ `,c+=`[ -f "${o}/.zshrc" ] && source "${o}/.zshrc"
6
+ `,c+=`[ -f "${o}/.zlogin" ] && source "${o}/.zlogin"
7
7
  `,c+='NineRemoteOsc7() { print -Pn "\\e]7;file://%m${PWD}\\e\\\\" }\n',c+=`precmd_functions+=( NineRemoteOsc7 )
8
- `,a.default.writeFileSync(o,c),s.ZDOTDIR=r}else if(n){let o=s.PROMPT_COMMAND||"";s.PROMPT_COMMAND=`printf "\\e]7;file://%s\\a" "\${HOSTNAME}\${PWD}"${o?`; ${o}`:""}`}return{env:s,zdotDir:r}}function $(e){let s=JSON.stringify(e)+`
9
- `;for(let t of M)try{t.write(s)}catch{}}function d(e,s){try{e.write(JSON.stringify(s)+`
10
- `)}catch{}}function le(e,s,t=80,n=24,r=null,o=null){if(h.has(e))return{success:!1,error:"Session already exists"};let i=B(r);(!o||!a.default.existsSync(o))&&(o=ie());try{let{env:c,zdotDir:S}=ce(i.path);c.NINE_REMOTE_SESSION_ID=e;let p=H.default.spawn(i.path,i.args,{name:"xterm-256color",cols:t,rows:n,cwd:o,env:c,useConpty:process.platform==="win32"});if(i.id==="powershell"||i.id==="pwsh"){let f=`function prompt { $p = $PWD.Path -replace '\\\\','/'; "$([char]27)]7;file://$([System.Net.Dns]::GetHostName())$p$([char]27)\\PS $($PWD.Path)> " }\r
11
- `;setTimeout(()=>{try{p.write(f)}catch{}},500)}let l={pty:p,buffer:[],modes:new Set,name:s,createdAt:Date.now(),cwd:o,shellId:i.id,shellLabel:i.label,zdotDir:S,pending:null,flushScheduled:!1},b=()=>{l.flushScheduled=!1;let f=l.pending;f&&(l.pending=null,$({type:"output",sessionId:e,enc:"b64",data:Buffer.from(f).toString("base64")}))};return p.onData(f=>{l.buffer.push(Buffer.from(f,"utf-8")),re(l.modes,f);let m=f.match(/\x1b\]7;file:\/\/[^/]*([^\x07\x1b]*)/);if(m){let u;try{u=decodeURIComponent(m[1])}catch{u=m[1]}u&&u!==l.cwd&&(l.cwd=u,$({type:"cwdChange",sessionId:e,cwd:u}))}P(l.buffer)>F&&(l.buffer=[G(l.buffer,F)]),l.pending=l.pending===null?f:l.pending+f,l.flushScheduled||(l.flushScheduled=!0,setImmediate(b))}),p.onExit(()=>{h.delete(e),l.zdotDir&&a.default.rm(l.zdotDir,{recursive:!0,force:!0},()=>{}),$({type:"sessionClosed",sessionId:e})}),h.set(e,l),{success:!0,sessionId:e,cwd:o,shellId:i.id,shellLabel:i.label}}catch(c){return w("Failed to create session",c),{success:!1,error:c.message}}}function ae(e,s){let{type:t,sessionId:n,...r}=s;switch(t){case"ping":d(e,{type:"pong",version:L,requestId:r.requestId});break;case"listSessions":let o=Array.from(h.entries()).map(([u,y])=>({id:u,name:y.name,createdAt:y.createdAt,shellId:y.shellId,shellLabel:y.shellLabel,cwd:y.cwd}));d(e,{type:"sessionList",sessions:o,requestId:r.requestId});break;case"createSession":let i=le(n||`session-${Date.now()}`,r.name,r.cols,r.rows,r.shellId,r.cwd);d(e,{type:"createResult",...i,requestId:r.requestId});break;case"joinSession":let c=h.get(n);if(!c){d(e,{type:"joinResult",success:!1,error:"Session not found",requestId:r.requestId});return}let S=ne(c.modes);S&&d(e,{type:"output",sessionId:n,enc:"b64",data:Buffer.from(S).toString("base64")});let p=G(c.buffer,X);p&&p.length&&d(e,{type:"output",sessionId:n,enc:"b64",data:p.toString("base64")});let l=P(c.buffer);d(e,{type:"joinResult",success:!0,name:c.name,cwd:c.cwd,shellId:c.shellId,shellLabel:c.shellLabel,total:l,replaySize:p?p.length:0,requestId:r.requestId});break;case"requestHistory":{let u=h.get(n);if(!u){d(e,{type:"historyResult",success:!1,error:"Session not found",requestId:r.requestId});return}let y=P(u.buffer),N=Math.max(0,Math.min(r.have||0,y)),z=y-N,T=Math.min(Y,z),{prefix:I,trimmed:q}=T>0?ee(u.buffer,N,T):{prefix:Buffer.alloc(0),trimmed:0};d(e,{type:"historyResult",success:!0,sessionId:n,enc:"b64",prefix:I&&I.length?I.toString("base64"):"",prefixLen:I?I.length:0,total:y,remaining:Math.max(0,z-I.length-q)+q,requestId:r.requestId});break}case"input":let b=h.get(n);b?.pty&&b.pty.write(r.data);break;case"resize":let f=h.get(n);if(f?.pty)try{f.pty.resize(r.cols,r.rows)}catch{}break;case"deleteSession":let m=h.get(n);m?(m.pty&&m.pty.kill(),h.delete(n),$({type:"sessionClosed",sessionId:n}),d(e,{type:"deleteResult",success:!0,requestId:r.requestId})):d(e,{type:"deleteResult",success:!1,error:"Session not found",requestId:r.requestId});break;case"getCwd":let E=h.get(n);d(e,{type:"cwdResult",cwd:E?.cwd||null,requestId:r.requestId});break;default:w(`Unknown message type: ${t}`)}}function fe(){if(!a.default.existsSync(D))try{a.default.mkdirSync(D,{recursive:!0})}catch(t){w("Failed to create socket directory",t),process.exit(1)}if(process.platform!=="win32"&&a.default.existsSync(x))try{a.default.unlinkSync(x)}catch(t){w("Failed to remove stale socket",t),process.exit(1)}let e=j.default.createServer(t=>{M.add(t);let n="";t.on("data",r=>{n+=r.toString();let o=n.split(`
12
- `);n=o.pop()||"";for(let i of o)if(i.trim())try{let c=JSON.parse(i);ae(t,c)}catch{w("Invalid message",i)}}),t.on("close",()=>{M.delete(t)}),t.on("error",r=>{w("Client error",r),M.delete(t)})});e.on("error",t=>{w("Server error",t),t.code==="EADDRINUSE"&&w("Socket already in use, exiting"),process.exit(1)}),e.listen(x,()=>{if(process.platform!=="win32")try{a.default.chmodSync(x,384)}catch{}});try{a.default.mkdirSync(g.default.dirname(_),{recursive:!0}),a.default.writeFileSync(_,String(process.pid),{mode:384})}catch{}let s=()=>{for(let[,t]of h)if(t.pty)try{t.pty.kill()}catch{}try{e.close()}catch{}if(process.platform!=="win32"&&a.default.existsSync(x))try{a.default.unlinkSync(x)}catch{}try{a.default.unlinkSync(_)}catch{}process.exit(0)};process.on("SIGTERM",s),process.on("SIGINT",s)}fe();
8
+ `,a.default.writeFileSync(i,c),r.ZDOTDIR=s}else if(n){let i=r.PROMPT_COMMAND||"";r.PROMPT_COMMAND=`printf "\\e]7;file://%s\\a" "\${HOSTNAME}\${PWD}"${i?`; ${i}`:""}`}return{env:r,zdotDir:s}}function $(e){let r=JSON.stringify(e)+`
9
+ `;for(let t of M)try{t.write(r)}catch{}}function h(e,r){try{e.write(JSON.stringify(r)+`
10
+ `)}catch{}}function le(e,r,t=80,n=24,s=null,i=null){if(m.has(e))return{success:!1,error:"Session already exists"};let o=B(s);(!i||!a.default.existsSync(i))&&(i=ie());try{let{env:c,zdotDir:p}=ce(o.path);c.NINE_REMOTE_SESSION_ID=e;let f=G.default.spawn(o.path,o.args,{name:"xterm-256color",cols:t,rows:n,cwd:i,env:c,useConpty:process.platform==="win32"});if(o.id==="powershell"||o.id==="pwsh"){let u=`function prompt { $p = $PWD.Path -replace '\\\\','/'; "$([char]27)]7;file://$([System.Net.Dns]::GetHostName())$p$([char]27)\\PS $($PWD.Path)> " }\r
11
+ `;setTimeout(()=>{try{f.write(u)}catch{}},500)}let l={pty:f,buffer:[],modes:new Set,name:r,createdAt:Date.now(),cwd:i,shellId:o.id,shellLabel:o.label,zdotDir:p,pending:null,flushScheduled:!1},b=()=>{l.flushScheduled=!1;let u=l.pending;u&&(l.pending=null,$({type:"output",sessionId:e,enc:"b64",data:Buffer.from(u).toString("base64")}))};return f.onData(u=>{l.buffer.push(Buffer.from(u,"utf-8")),re(l.modes,u);let S=u.match(/\x1b\]7;file:\/\/[^/]*([^\x07\x1b]*)/);if(S){let d;try{d=decodeURIComponent(S[1])}catch{d=S[1]}d&&d!==l.cwd&&(l.cwd=d,$({type:"cwdChange",sessionId:e,cwd:d}))}R(l.buffer)>j&&(l.buffer=[_(l.buffer,j)]),l.pending=l.pending===null?u:l.pending+u,l.flushScheduled||(l.flushScheduled=!0,setImmediate(b))}),f.onExit(()=>{m.delete(e),l.zdotDir&&a.default.rm(l.zdotDir,{recursive:!0,force:!0},()=>{}),$({type:"sessionClosed",sessionId:e})}),m.set(e,l),{success:!0,sessionId:e,cwd:i,shellId:o.id,shellLabel:o.label}}catch(c){return x("Failed to create session",c),{success:!1,error:c.message}}}function ae(e,r){let{type:t,sessionId:n,...s}=r;switch(t){case"ping":h(e,{type:"pong",version:A,requestId:s.requestId});break;case"listSessions":let i=Array.from(m.entries()).map(([d,y])=>({id:d,name:y.name,createdAt:y.createdAt,shellId:y.shellId,shellLabel:y.shellLabel,cwd:y.cwd}));h(e,{type:"sessionList",sessions:i,requestId:s.requestId});break;case"createSession":let o=le(n||`session-${Date.now()}`,s.name,s.cols,s.rows,s.shellId,s.cwd);h(e,{type:"createResult",...o,requestId:s.requestId});break;case"joinSession":let c=m.get(n);if(!c){h(e,{type:"joinResult",success:!1,error:"Session not found",requestId:s.requestId});return}let p=ne(c.modes);p&&h(e,{type:"output",sessionId:n,enc:"b64",replay:!0,data:Buffer.from(p).toString("base64")});let f=_(c.buffer,Y);f&&f.length&&h(e,{type:"output",sessionId:n,enc:"b64",replay:!0,data:f.toString("base64")});let l=R(c.buffer);h(e,{type:"joinResult",success:!0,name:c.name,cwd:c.cwd,shellId:c.shellId,shellLabel:c.shellLabel,total:l,replaySize:f?f.length:0,requestId:s.requestId});break;case"requestHistory":{let d=m.get(n);if(!d){h(e,{type:"historyResult",success:!1,error:"Session not found",requestId:s.requestId});return}let y=R(d.buffer),z=Math.max(0,Math.min(s.have||0,y)),q=y-z,P=Math.min(Q,q),{prefix:w,extra:ue=0}=P>0?F(d.buffer,z,P):{prefix:Buffer.alloc(0),extra:0};h(e,{type:"historyResult",success:!0,sessionId:n,enc:"b64",prefix:w&&w.length?w.toString("base64"):"",prefixLen:w?w.length:0,total:y,remaining:Math.max(0,q-P),requestId:s.requestId});break}case"input":let b=m.get(n);b?.pty&&b.pty.write(s.data);break;case"resize":let u=m.get(n);if(u?.pty)try{u.pty.resize(s.cols,s.rows)}catch{}break;case"deleteSession":let S=m.get(n);S?(S.pty&&S.pty.kill(),m.delete(n),$({type:"sessionClosed",sessionId:n}),h(e,{type:"deleteResult",success:!0,requestId:s.requestId})):h(e,{type:"deleteResult",success:!1,error:"Session not found",requestId:s.requestId});break;case"getCwd":let T=m.get(n);h(e,{type:"cwdResult",cwd:T?.cwd||null,requestId:s.requestId});break;default:x(`Unknown message type: ${t}`)}}function fe(){if(!a.default.existsSync(D))try{a.default.mkdirSync(D,{recursive:!0})}catch(t){x("Failed to create socket directory",t),process.exit(1)}if(process.platform!=="win32"&&a.default.existsSync(E))try{a.default.unlinkSync(E)}catch(t){x("Failed to remove stale socket",t),process.exit(1)}let e=H.default.createServer(t=>{M.add(t);let n="";t.on("data",s=>{n+=s.toString();let i=n.split(`
12
+ `);n=i.pop()||"";for(let o of i)if(o.trim())try{let c=JSON.parse(o);ae(t,c)}catch{x("Invalid message",o)}}),t.on("close",()=>{M.delete(t)}),t.on("error",s=>{x("Client error",s),M.delete(t)})});e.on("error",t=>{x("Server error",t),t.code==="EADDRINUSE"&&x("Socket already in use, exiting"),process.exit(1)}),e.listen(E,()=>{if(process.platform!=="win32")try{a.default.chmodSync(E,384)}catch{}});try{a.default.mkdirSync(g.default.dirname(C),{recursive:!0}),a.default.writeFileSync(C,String(process.pid),{mode:384})}catch{}let r=()=>{for(let[,t]of m)if(t.pty)try{t.pty.kill()}catch{}try{e.close()}catch{}if(process.platform!=="win32"&&a.default.existsSync(E))try{a.default.unlinkSync(E)}catch{}try{a.default.unlinkSync(C)}catch{}process.exit(0)};process.on("SIGTERM",r),process.on("SIGINT",r)}fe();