bridge-agent 0.13.7 → 0.13.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +4 -4
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -20,7 +20,7 @@ Expecting one of '${r.join("', '")}'`);return this._lifeCycleHooks[e]?this._life
|
|
|
20
20
|
`),this.outputHelp({error:!0}));let r=n||{},o=r.exitCode||1,s=r.code||"commander.error";this._exit(o,s,e)}_parseOptionsEnv(){this.options.forEach(e=>{if(e.envVar&&e.envVar in F.env){let n=e.attributeName();(this.getOptionValue(n)===void 0||["default","config","env"].includes(this.getOptionValueSource(n)))&&(e.required||e.optional?this.emit(`optionEnv:${e.name()}`,F.env[e.envVar]):this.emit(`optionEnv:${e.name()}`))}})}_parseOptionsImplied(){let e=new Ic(this.options),n=r=>this.getOptionValue(r)!==void 0&&!["default","implied"].includes(this.getOptionValueSource(r));this.options.filter(r=>r.implied!==void 0&&n(r.attributeName())&&e.valueFromOption(this.getOptionValue(r.attributeName()),r)).forEach(r=>{Object.keys(r.implied).filter(o=>!n(o)).forEach(o=>{this.setOptionValueWithSource(o,r.implied[o],"implied")})})}missingArgument(e){let n=`error: missing required argument '${e}'`;this.error(n,{code:"commander.missingArgument"})}optionMissingArgument(e){let n=`error: option '${e.flags}' argument missing`;this.error(n,{code:"commander.optionMissingArgument"})}missingMandatoryOptionValue(e){let n=`error: required option '${e.flags}' not specified`;this.error(n,{code:"commander.missingMandatoryOptionValue"})}_conflictingOption(e,n){let r=i=>{let a=i.attributeName(),c=this.getOptionValue(a),l=this.options.find(u=>u.negate&&a===u.attributeName()),d=this.options.find(u=>!u.negate&&a===u.attributeName());return l&&(l.presetArg===void 0&&c===!1||l.presetArg!==void 0&&c===l.presetArg)?l:d||i},o=i=>{let a=r(i),c=a.attributeName();return this.getOptionValueSource(c)==="env"?`environment variable '${a.envVar}'`:`option '${a.flags}'`},s=`error: ${o(e)} cannot be used with ${o(n)}`;this.error(s,{code:"commander.conflictingOption"})}unknownOption(e){if(this._allowUnknownOption)return;let n="";if(e.startsWith("--")&&this._showSuggestionAfterError){let o=[],s=this;do{let i=s.createHelp().visibleOptions(s).filter(a=>a.long).map(a=>a.long);o=o.concat(i),s=s.parent}while(s&&!s._enablePositionalOptions);n=Mo(e,o)}let r=`error: unknown option '${e}'${n}`;this.error(r,{code:"commander.unknownOption"})}_excessArguments(e){if(this._allowExcessArguments)return;let n=this.registeredArguments.length,r=n===1?"":"s",s=`error: too many arguments${this.parent?` for '${this.name()}'`:""}. Expected ${n} argument${r} but got ${e.length}.`;this.error(s,{code:"commander.excessArguments"})}unknownCommand(){let e=this.args[0],n="";if(this._showSuggestionAfterError){let o=[];this.createHelp().visibleCommands(this).forEach(s=>{o.push(s.name()),s.alias()&&o.push(s.alias())}),n=Mo(e,o)}let r=`error: unknown command '${e}'${n}`;this.error(r,{code:"commander.unknownCommand"})}version(e,n,r){if(e===void 0)return this._version;this._version=e,n=n||"-V, --version",r=r||"output the version number";let o=this.createOption(n,r);return this._versionOptionName=o.attributeName(),this._registerOption(o),this.on("option:"+o.name(),()=>{this._outputConfiguration.writeOut(`${e}
|
|
21
21
|
`),this._exit(0,"commander.version",e)}),this}description(e,n){return e===void 0&&n===void 0?this._description:(this._description=e,n&&(this._argsDescription=n),this)}summary(e){return e===void 0?this._summary:(this._summary=e,this)}alias(e){if(e===void 0)return this._aliases[0];let n=this;if(this.commands.length!==0&&this.commands[this.commands.length-1]._executableHandler&&(n=this.commands[this.commands.length-1]),e===n._name)throw new Error("Command alias can't be the same as its name");let r=this.parent?._findCommand(e);if(r){let o=[r.name()].concat(r.aliases()).join("|");throw new Error(`cannot add alias '${e}' to command '${this.name()}' as already have command '${o}'`)}return n._aliases.push(e),this}aliases(e){return e===void 0?this._aliases:(e.forEach(n=>this.alias(n)),this)}usage(e){if(e===void 0){if(this._usage)return this._usage;let n=this.registeredArguments.map(r=>vc(r));return[].concat(this.options.length||this._helpOption!==null?"[options]":[],this.commands.length?"[command]":[],this.registeredArguments.length?n:[]).join(" ")}return this._usage=e,this}name(e){return e===void 0?this._name:(this._name=e,this)}nameFromFilename(e){return this._name=Ie.basename(e,Ie.extname(e)),this}executableDir(e){return e===void 0?this._executableDir:(this._executableDir=e,this)}helpInformation(e){let n=this.createHelp();return n.helpWidth===void 0&&(n.helpWidth=e&&e.error?this._outputConfiguration.getErrHelpWidth():this._outputConfiguration.getOutHelpWidth()),n.formatHelp(this,n)}_getHelpContext(e){e=e||{};let n={error:!!e.error},r;return n.error?r=o=>this._outputConfiguration.writeErr(o):r=o=>this._outputConfiguration.writeOut(o),n.write=e.write||r,n.command=this,n}outputHelp(e){let n;typeof e=="function"&&(n=e,e=void 0);let r=this._getHelpContext(e);this._getCommandAndAncestors().reverse().forEach(s=>s.emit("beforeAllHelp",r)),this.emit("beforeHelp",r);let o=this.helpInformation(r);if(n&&(o=n(o),typeof o!="string"&&!Buffer.isBuffer(o)))throw new Error("outputHelp callback must return a string or a Buffer");r.write(o),this._getHelpOption()?.long&&this.emit(this._getHelpOption().long),this.emit("afterHelp",r),this._getCommandAndAncestors().forEach(s=>s.emit("afterAllHelp",r))}helpOption(e,n){return typeof e=="boolean"?(e?this._helpOption=this._helpOption??void 0:this._helpOption=null,this):(e=e??"-h, --help",n=n??"display help for command",this._helpOption=this.createOption(e,n),this)}_getHelpOption(){return this._helpOption===void 0&&this.helpOption(void 0,void 0),this._helpOption}addHelpOption(e){return this._helpOption=e,this}help(e){this.outputHelp(e);let n=F.exitCode||0;n===0&&e&&typeof e!="function"&&e.error&&(n=1),this._exit(n,"commander.help","(outputHelp)")}addHelpText(e,n){let r=["beforeAll","before","after","afterAll"];if(!r.includes(e))throw new Error(`Unexpected value for position to addHelpText.
|
|
22
22
|
Expecting one of '${r.join("', '")}'`);let o=`${e}Help`;return this.on(o,s=>{let i;typeof n=="function"?i=n({error:s.error,command:s.command}):i=n,i&&s.write(`${i}
|
|
23
|
-
`)}),this}_outputHelpIfRequested(e){let n=this._getHelpOption();n&&e.find(o=>n.is(o))&&(this.outputHelp(),this._exit(0,"commander.helpDisplayed","(outputHelp)"))}};function $o(t){return t.map(e=>{if(!e.startsWith("--inspect"))return e;let n,r="127.0.0.1",o="9229",s;return(s=e.match(/^(--inspect(-brk)?)$/))!==null?n=s[1]:(s=e.match(/^(--inspect(-brk|-port)?)=([^:]+)$/))!==null?(n=s[1],/^\d+$/.test(s[3])?o=s[3]:r=s[3]):(s=e.match(/^(--inspect(-brk|-port)?)=([^:]+):(\d+)$/))!==null&&(n=s[1],r=s[3],o=s[4]),n&&o!=="0"?`${n}=${r}:${parseInt(o)+1}`:e})}Bo.Command=sr});var Ho=U(ce=>{var{Argument:Fo}=Zt(),{Command:ir}=Uo(),{CommanderError:xc,InvalidArgumentError:Wo}=vt(),{Help:Oc}=Xn(),{Option:Go}=tr();ce.program=new ir;ce.createCommand=t=>new ir(t);ce.createOption=(t,e)=>new Go(t,e);ce.createArgument=(t,e)=>new Fo(t,e);ce.Command=ir;ce.Option=Go;ce.Argument=Fo;ce.Help=Oc;ce.CommanderError=xc;ce.InvalidArgumentError=Wo;ce.InvalidOptionArgumentError=Wo});var Qo=U(q=>{"use strict";var ar=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),Tc=ar(t=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.sync=t.isexe=void 0;var e=require("node:fs"),n=require("node:fs/promises"),r=async(a,c={})=>{let{ignoreErrors:l=!1}=c;try{return s(await(0,n.stat)(a),c)}catch(d){let u=d;if(l||u.code==="EACCES")return!1;throw u}};t.isexe=r;var o=(a,c={})=>{let{ignoreErrors:l=!1}=c;try{return s((0,e.statSync)(a),c)}catch(d){let u=d;if(l||u.code==="EACCES")return!1;throw u}};t.sync=o;var s=(a,c)=>a.isFile()&&i(a,c),i=(a,c)=>{let l=c.uid??process.getuid?.(),d=c.groups??process.getgroups?.()??[],u=c.gid??process.getgid?.()??d[0];if(l===void 0||u===void 0)throw new Error("cannot get uid or gid");let p=new Set([u,...d]),f=a.mode,h=a.uid,g=a.gid,w=parseInt("100",8),E=parseInt("010",8),O=parseInt("001",8),T=w|E;return!!(f&O||f&E&&p.has(g)||f&w&&h===l||f&T&&l===0)}}),Pc=ar(t=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.sync=t.isexe=void 0;var e=require("node:fs"),n=require("node:fs/promises"),r=require("node:path"),o=async(c,l={})=>{let{ignoreErrors:d=!1}=l;try{return a(await(0,n.stat)(c),c,l)}catch(u){let p=u;if(d||p.code==="EACCES")return!1;throw p}};t.isexe=o;var s=(c,l={})=>{let{ignoreErrors:d=!1}=l;try{return a((0,e.statSync)(c),c,l)}catch(u){let p=u;if(d||p.code==="EACCES")return!1;throw p}};t.sync=s;var i=(c,l)=>{let{pathExt:d=process.env.PATHEXT||""}=l,u=d.split(r.delimiter);if(u.indexOf("")!==-1)return!0;for(let p of u){let f=p.toLowerCase(),h=c.substring(c.length-f.length).toLowerCase();if(f&&h===f)return!0}return!1},a=(c,l,d)=>c.isFile()&&i(l,d)}),Cc=ar(t=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})}),Ko=q&&q.__createBinding||(Object.create?(function(t,e,n,r){r===void 0&&(r=n);var o=Object.getOwnPropertyDescriptor(e,n);(!o||("get"in o?!e.__esModule:o.writable||o.configurable))&&(o={enumerable:!0,get:function(){return e[n]}}),Object.defineProperty(t,r,o)}):(function(t,e,n,r){r===void 0&&(r=n),t[r]=e[n]})),Ac=q&&q.__setModuleDefault||(Object.create?(function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}):function(t,e){t.default=e}),Jo=q&&q.__importStar||(function(){var t=function(e){return t=Object.getOwnPropertyNames||function(n){var r=[];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(r[r.length]=o);return r},t(e)};return function(e){if(e&&e.__esModule)return e;var n={};if(e!=null)for(var r=t(e),o=0;o<r.length;o++)r[o]!=="default"&&Ko(n,e,r[o]);return Ac(n,e),n}})(),Rc=q&&q.__exportStar||function(t,e){for(var n in t)n!=="default"&&!Object.prototype.hasOwnProperty.call(e,n)&&Ko(e,t,n)};Object.defineProperty(q,"__esModule",{value:!0});q.sync=q.isexe=q.posix=q.win32=void 0;var Yo=Jo(Tc());q.posix=Yo;var zo=Jo(Pc());q.win32=zo;Rc(Cc(),q);var Nc=process.env._ISEXE_TEST_PLATFORM_||process.platform,Xo=Nc==="win32"?zo:Yo;q.isexe=Xo.isexe;q.sync=Xo.sync});var cs=U((gp,as)=>{var{isexe:Dc,sync:jc}=Qo(),{join:Lc,delimiter:Mc,sep:Zo,posix:es}=require("path"),ts=process.platform==="win32",ns=new RegExp(`[${es.sep}${Zo===es.sep?"":Zo}]`.replace(/(\\)/g,"\\$1")),$c=new RegExp(`^\\.${ns.source}`),rs=t=>Object.assign(new Error(`not found: ${t}`),{code:"ENOENT"}),os=(t,{path:e=process.env.PATH,pathExt:n=process.env.PATHEXT,delimiter:r=Mc})=>{let o=t.match(ns)?[""]:[...ts?[process.cwd()]:[],...(e||"").split(r)];if(ts){let s=n||[".EXE",".CMD",".BAT",".COM"].join(r),i=s.split(r).flatMap(a=>[a,a.toLowerCase()]);return t.includes(".")&&i[0]!==""&&i.unshift(""),{pathEnv:o,pathExt:i,pathExtExe:s}}return{pathEnv:o,pathExt:[""]}},ss=(t,e)=>{let n=/^".*"$/.test(t)?t.slice(1,-1):t;return(!n&&$c.test(e)?e.slice(0,2):"")+Lc(n,e)},is=async(t,e={})=>{let{pathEnv:n,pathExt:r,pathExtExe:o}=os(t,e),s=[];for(let i of n){let a=ss(i,t);for(let c of r){let l=a+c;if(await Dc(l,{pathExt:o,ignoreErrors:!0})){if(!e.all)return l;s.push(l)}}}if(e.all&&s.length)return s;if(e.nothrow)return null;throw rs(t)},Bc=(t,e={})=>{let{pathEnv:n,pathExt:r,pathExtExe:o}=os(t,e),s=[];for(let i of n){let a=ss(i,t);for(let c of r){let l=a+c;if(jc(l,{pathExt:o,ignoreErrors:!0})){if(!e.all)return l;s.push(l)}}}if(e.all&&s.length)return s;if(e.nothrow)return null;throw rs(t)};as.exports=is;is.sync=Bc});function ye(){let t=process.env.BRIDGE_PROFILE||void 0;return t!==void 0&&!hs.test(t)&&(console.error(`[bridge] profile.invalid \u2014 BRIDGE_PROFILE "${t}" contains unsafe characters (allowed: a-z A-Z 0-9 -)`),process.exit(1)),t}function Q(){let t=ye();return t?ne.default.join(pr,"profiles",t,"settings.json"):ne.default.join(pr,"settings.json")}function Re(){let t=ye(),e=t?`${t}.daemon.lock`:"daemon.lock";return ne.default.join((0,ue.homedir)(),".bridge",e)}function pe(){let t=ye();return t?`com.jerico.bridge-agent.${t}.plist`:"com.jerico.bridge-agent.plist"}function Ae(){let t=ye(),e=t?`-${t}`:"";return{out:ne.default.join((0,ue.homedir)(),`bridge-daemon${e}.log`),err:ne.default.join((0,ue.homedir)(),`bridge-daemon${e}.err.log`),lifecycle:ne.default.join((0,ue.homedir)(),`bridge-daemon${e}.lifecycle.log`)}}function xt(){let t=ye(),e=t?`spawn-manifest-${t}.json`:"spawn-manifest.json";return ne.default.join((0,ue.homedir)(),".bridge",e)}function be(){let t=process.env.HEALTH_PORT;if(t){let e=parseInt(t,10);if(Number.isFinite(e))return e}return ye()?3102:3101}function fr(){let t=ye();return ne.default.join((0,ue.homedir)(),".bridge",t?`bridge-agent-wrapper-${t}.sh`:"bridge-agent-wrapper.sh")}function nn(){return ye()??"default"}function gs(){let t=ne.default.join(pr,"profiles");if(!(0,tn.existsSync)(t))return[];try{return(0,tn.readdirSync)(t,{withFileTypes:!0}).filter(e=>e.isDirectory()&&hs.test(e.name)).map(e=>e.name)}catch{return[]}}function ms(){let t=ye();return t?`:profile:${t}`:""}function _s(){let t=ye(),e=t?`com.jerico.bridge-agent.${t}.plist`:"com.jerico.bridge-agent.plist",n=ne.default.join((0,ue.homedir)(),".bridge","update.lock"),r=ne.default.join((0,ue.homedir)(),".bridge","update-state.json");return{plist:ne.default.join((0,ue.homedir)(),"Library","LaunchAgents",e),wrapper:fr(),lock:Re(),logOut:Ae().out,logErr:Ae().err,config:Q(),updateLock:t?null:n,updateState:t?null:r}}var ue,tn,ne,pr,hs,Z=tt(()=>{"use strict";ue=require("node:os"),tn=require("node:fs"),ne=S(require("path")),pr=ne.default.join((0,ue.homedir)(),".jerico"),hs=/^[a-zA-Z0-9-]+$/});function hr(){try{let t=require.resolve("node-pty"),e=an.default.resolve(an.default.dirname(t),"..");return an.default.join(e,"prebuilds",`${process.platform}-${process.arch}`,"spawn-helper")}catch{return}}function vs(){let t=hr();if(!t||!Ss.default.existsSync(t))return!0;try{return ks.spawn("/bin/sh",[],{name:"xterm-256color",cols:80,rows:24}).kill(),!0}catch{return!1}}var Ss,an,ks,gr=tt(()=>{"use strict";Ss=S(require("fs")),an=S(require("path")),ks=S(require("node-pty"))});function qc(){try{let t=Ot.default.join(Ot.default.dirname(process.execPath),"spawn-helper");if(rt.default.existsSync(t))return t;if(process.pkg!==void 0){let e=hr();if(e){let n=Ot.default.join(Es.default.homedir(),".bridge","bin"),r=Ot.default.join(n,"spawn-helper");try{rt.default.mkdirSync(n,{recursive:!0});let o=rt.default.readFileSync(e);return rt.default.writeFileSync(r,o),rt.default.chmodSync(r,493),r}catch(o){console.warn("[bridge] spawn-helper.extract.failed",{error:String(o)})}}}return null}catch{return null}}function Vc(t){if(process.platform==="win32")return;let e;try{e=require("node-pty").native}catch{return}if(!e||typeof e.fork!="function"||e.__helperPatched)return;let n=e.fork.bind(e);e.fork=function(...r){return r.length>9&&(r[9]=t),n(...r)},e.__helperPatched=!0,console.log("[bridge] spawn-helper.fork-patched",{path:t})}function cn(){let t=qc();t&&Vc(t)}var rt,Ot,Es,mr=tt(()=>{"use strict";rt=S(require("fs")),Ot=S(require("path")),Es=S(require("os"));gr()});var xe=U((Pp,Os)=>{"use strict";var Is=["nodebuffer","arraybuffer","fragments"],xs=typeof Blob<"u";xs&&Is.push("blob");Os.exports={BINARY_TYPES:Is,CLOSE_TIMEOUT:3e4,EMPTY_BUFFER:Buffer.alloc(0),GUID:"258EAFA5-E914-47DA-95CA-C5AB0DC85B11",hasBlob:xs,kForOnEventAttribute:Symbol("kIsForOnEventAttribute"),kListener:Symbol("kListener"),kStatusCode:Symbol("status-code"),kWebSocket:Symbol("websocket"),NOOP:()=>{}}});var Tt=U((Cp,ln)=>{"use strict";var{EMPTY_BUFFER:Kc}=xe(),_r=Buffer[Symbol.species];function Jc(t,e){if(t.length===0)return Kc;if(t.length===1)return t[0];let n=Buffer.allocUnsafe(e),r=0;for(let o=0;o<t.length;o++){let s=t[o];n.set(s,r),r+=s.length}return r<e?new _r(n.buffer,n.byteOffset,r):n}function Ts(t,e,n,r,o){for(let s=0;s<o;s++)n[r+s]=t[s]^e[s&3]}function Ps(t,e){for(let n=0;n<t.length;n++)t[n]^=e[n&3]}function Yc(t){return t.length===t.buffer.byteLength?t.buffer:t.buffer.slice(t.byteOffset,t.byteOffset+t.length)}function yr(t){if(yr.readOnly=!0,Buffer.isBuffer(t))return t;let e;return t instanceof ArrayBuffer?e=new _r(t):ArrayBuffer.isView(t)?e=new _r(t.buffer,t.byteOffset,t.byteLength):(e=Buffer.from(t),yr.readOnly=!1),e}ln.exports={concat:Jc,mask:Ts,toArrayBuffer:Yc,toBuffer:yr,unmask:Ps};if(!process.env.WS_NO_BUFFER_UTIL)try{let t=require("bufferutil");ln.exports.mask=function(e,n,r,o,s){s<48?Ts(e,n,r,o,s):t.mask(e,n,r,o,s)},ln.exports.unmask=function(e,n){e.length<32?Ps(e,n):t.unmask(e,n)}}catch{}});var Rs=U((Ap,As)=>{"use strict";var Cs=Symbol("kDone"),br=Symbol("kRun"),wr=class{constructor(e){this[Cs]=()=>{this.pending--,this[br]()},this.concurrency=e||1/0,this.jobs=[],this.pending=0}add(e){this.jobs.push(e),this[br]()}[br](){if(this.pending!==this.concurrency&&this.jobs.length){let e=this.jobs.shift();this.pending++,e(this[Cs])}}};As.exports=wr});var it=U((Rp,Ls)=>{"use strict";var Pt=require("zlib"),Ns=Tt(),zc=Rs(),{kStatusCode:Ds}=xe(),Xc=Buffer[Symbol.species],Qc=Buffer.from([0,0,255,255]),un=Symbol("permessage-deflate"),Oe=Symbol("total-length"),ot=Symbol("callback"),Ne=Symbol("buffers"),st=Symbol("error"),dn,Sr=class{constructor(e){if(this._options=e||{},this._threshold=this._options.threshold!==void 0?this._options.threshold:1024,this._maxPayload=this._options.maxPayload|0,this._isServer=!!this._options.isServer,this._deflate=null,this._inflate=null,this.params=null,!dn){let n=this._options.concurrencyLimit!==void 0?this._options.concurrencyLimit:10;dn=new zc(n)}}static get extensionName(){return"permessage-deflate"}offer(){let e={};return this._options.serverNoContextTakeover&&(e.server_no_context_takeover=!0),this._options.clientNoContextTakeover&&(e.client_no_context_takeover=!0),this._options.serverMaxWindowBits&&(e.server_max_window_bits=this._options.serverMaxWindowBits),this._options.clientMaxWindowBits?e.client_max_window_bits=this._options.clientMaxWindowBits:this._options.clientMaxWindowBits==null&&(e.client_max_window_bits=!0),e}accept(e){return e=this.normalizeParams(e),this.params=this._isServer?this.acceptAsServer(e):this.acceptAsClient(e),this.params}cleanup(){if(this._inflate&&(this._inflate.close(),this._inflate=null),this._deflate){let e=this._deflate[ot];this._deflate.close(),this._deflate=null,e&&e(new Error("The deflate stream was closed while data was being processed"))}}acceptAsServer(e){let n=this._options,r=e.find(o=>!(n.serverNoContextTakeover===!1&&o.server_no_context_takeover||o.server_max_window_bits&&(n.serverMaxWindowBits===!1||typeof n.serverMaxWindowBits=="number"&&n.serverMaxWindowBits>o.server_max_window_bits)||typeof n.clientMaxWindowBits=="number"&&!o.client_max_window_bits));if(!r)throw new Error("None of the extension offers can be accepted");return n.serverNoContextTakeover&&(r.server_no_context_takeover=!0),n.clientNoContextTakeover&&(r.client_no_context_takeover=!0),typeof n.serverMaxWindowBits=="number"&&(r.server_max_window_bits=n.serverMaxWindowBits),typeof n.clientMaxWindowBits=="number"?r.client_max_window_bits=n.clientMaxWindowBits:(r.client_max_window_bits===!0||n.clientMaxWindowBits===!1)&&delete r.client_max_window_bits,r}acceptAsClient(e){let n=e[0];if(this._options.clientNoContextTakeover===!1&&n.client_no_context_takeover)throw new Error('Unexpected parameter "client_no_context_takeover"');if(!n.client_max_window_bits)typeof this._options.clientMaxWindowBits=="number"&&(n.client_max_window_bits=this._options.clientMaxWindowBits);else if(this._options.clientMaxWindowBits===!1||typeof this._options.clientMaxWindowBits=="number"&&n.client_max_window_bits>this._options.clientMaxWindowBits)throw new Error('Unexpected or invalid parameter "client_max_window_bits"');return n}normalizeParams(e){return e.forEach(n=>{Object.keys(n).forEach(r=>{let o=n[r];if(o.length>1)throw new Error(`Parameter "${r}" must have only a single value`);if(o=o[0],r==="client_max_window_bits"){if(o!==!0){let s=+o;if(!Number.isInteger(s)||s<8||s>15)throw new TypeError(`Invalid value for parameter "${r}": ${o}`);o=s}else if(!this._isServer)throw new TypeError(`Invalid value for parameter "${r}": ${o}`)}else if(r==="server_max_window_bits"){let s=+o;if(!Number.isInteger(s)||s<8||s>15)throw new TypeError(`Invalid value for parameter "${r}": ${o}`);o=s}else if(r==="client_no_context_takeover"||r==="server_no_context_takeover"){if(o!==!0)throw new TypeError(`Invalid value for parameter "${r}": ${o}`)}else throw new Error(`Unknown parameter "${r}"`);n[r]=o})}),e}decompress(e,n,r){dn.add(o=>{this._decompress(e,n,(s,i)=>{o(),r(s,i)})})}compress(e,n,r){dn.add(o=>{this._compress(e,n,(s,i)=>{o(),r(s,i)})})}_decompress(e,n,r){let o=this._isServer?"client":"server";if(!this._inflate){let s=`${o}_max_window_bits`,i=typeof this.params[s]!="number"?Pt.Z_DEFAULT_WINDOWBITS:this.params[s];this._inflate=Pt.createInflateRaw({...this._options.zlibInflateOptions,windowBits:i}),this._inflate[un]=this,this._inflate[Oe]=0,this._inflate[Ne]=[],this._inflate.on("error",el),this._inflate.on("data",js)}this._inflate[ot]=r,this._inflate.write(e),n&&this._inflate.write(Qc),this._inflate.flush(()=>{let s=this._inflate[st];if(s){this._inflate.close(),this._inflate=null,r(s);return}let i=Ns.concat(this._inflate[Ne],this._inflate[Oe]);this._inflate._readableState.endEmitted?(this._inflate.close(),this._inflate=null):(this._inflate[Oe]=0,this._inflate[Ne]=[],n&&this.params[`${o}_no_context_takeover`]&&this._inflate.reset()),r(null,i)})}_compress(e,n,r){let o=this._isServer?"server":"client";if(!this._deflate){let s=`${o}_max_window_bits`,i=typeof this.params[s]!="number"?Pt.Z_DEFAULT_WINDOWBITS:this.params[s];this._deflate=Pt.createDeflateRaw({...this._options.zlibDeflateOptions,windowBits:i}),this._deflate[Oe]=0,this._deflate[Ne]=[],this._deflate.on("data",Zc)}this._deflate[ot]=r,this._deflate.write(e),this._deflate.flush(Pt.Z_SYNC_FLUSH,()=>{if(!this._deflate)return;let s=Ns.concat(this._deflate[Ne],this._deflate[Oe]);n&&(s=new Xc(s.buffer,s.byteOffset,s.length-4)),this._deflate[ot]=null,this._deflate[Oe]=0,this._deflate[Ne]=[],n&&this.params[`${o}_no_context_takeover`]&&this._deflate.reset(),r(null,s)})}};Ls.exports=Sr;function Zc(t){this[Ne].push(t),this[Oe]+=t.length}function js(t){if(this[Oe]+=t.length,this[un]._maxPayload<1||this[Oe]<=this[un]._maxPayload){this[Ne].push(t);return}this[st]=new RangeError("Max payload size exceeded"),this[st].code="WS_ERR_UNSUPPORTED_MESSAGE_LENGTH",this[st][Ds]=1009,this.removeListener("data",js),this.reset()}function el(t){if(this[un]._inflate=null,this[st]){this[ot](this[st]);return}t[Ds]=1007,this[ot](t)}});var at=U((Np,pn)=>{"use strict";var{isUtf8:Ms}=require("buffer"),{hasBlob:tl}=xe(),nl=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,1,1,1,0,0,1,1,0,1,1,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,1,0];function rl(t){return t>=1e3&&t<=1014&&t!==1004&&t!==1005&&t!==1006||t>=3e3&&t<=4999}function kr(t){let e=t.length,n=0;for(;n<e;)if((t[n]&128)===0)n++;else if((t[n]&224)===192){if(n+1===e||(t[n+1]&192)!==128||(t[n]&254)===192)return!1;n+=2}else if((t[n]&240)===224){if(n+2>=e||(t[n+1]&192)!==128||(t[n+2]&192)!==128||t[n]===224&&(t[n+1]&224)===128||t[n]===237&&(t[n+1]&224)===160)return!1;n+=3}else if((t[n]&248)===240){if(n+3>=e||(t[n+1]&192)!==128||(t[n+2]&192)!==128||(t[n+3]&192)!==128||t[n]===240&&(t[n+1]&240)===128||t[n]===244&&t[n+1]>143||t[n]>244)return!1;n+=4}else return!1;return!0}function ol(t){return tl&&typeof t=="object"&&typeof t.arrayBuffer=="function"&&typeof t.type=="string"&&typeof t.stream=="function"&&(t[Symbol.toStringTag]==="Blob"||t[Symbol.toStringTag]==="File")}pn.exports={isBlob:ol,isValidStatusCode:rl,isValidUTF8:kr,tokenChars:nl};if(Ms)pn.exports.isValidUTF8=function(t){return t.length<24?kr(t):Ms(t)};else if(!process.env.WS_NO_UTF_8_VALIDATE)try{let t=require("utf-8-validate");pn.exports.isValidUTF8=function(e){return e.length<32?kr(e):t(e)}}catch{}});var Or=U((Dp,Hs)=>{"use strict";var{Writable:sl}=require("stream"),$s=it(),{BINARY_TYPES:il,EMPTY_BUFFER:Bs,kStatusCode:al,kWebSocket:cl}=xe(),{concat:vr,toArrayBuffer:ll,unmask:dl}=Tt(),{isValidStatusCode:ul,isValidUTF8:Us}=at(),fn=Buffer[Symbol.species],le=0,Fs=1,Ws=2,Gs=3,Er=4,Ir=5,hn=6,xr=class extends sl{constructor(e={}){super(),this._allowSynchronousEvents=e.allowSynchronousEvents!==void 0?e.allowSynchronousEvents:!0,this._binaryType=e.binaryType||il[0],this._extensions=e.extensions||{},this._isServer=!!e.isServer,this._maxPayload=e.maxPayload|0,this._skipUTF8Validation=!!e.skipUTF8Validation,this[cl]=void 0,this._bufferedBytes=0,this._buffers=[],this._compressed=!1,this._payloadLength=0,this._mask=void 0,this._fragmented=0,this._masked=!1,this._fin=!1,this._opcode=0,this._totalPayloadLength=0,this._messageLength=0,this._fragments=[],this._errored=!1,this._loop=!1,this._state=le}_write(e,n,r){if(this._opcode===8&&this._state==le)return r();this._bufferedBytes+=e.length,this._buffers.push(e),this.startLoop(r)}consume(e){if(this._bufferedBytes-=e,e===this._buffers[0].length)return this._buffers.shift();if(e<this._buffers[0].length){let r=this._buffers[0];return this._buffers[0]=new fn(r.buffer,r.byteOffset+e,r.length-e),new fn(r.buffer,r.byteOffset,e)}let n=Buffer.allocUnsafe(e);do{let r=this._buffers[0],o=n.length-e;e>=r.length?n.set(this._buffers.shift(),o):(n.set(new Uint8Array(r.buffer,r.byteOffset,e),o),this._buffers[0]=new fn(r.buffer,r.byteOffset+e,r.length-e)),e-=r.length}while(e>0);return n}startLoop(e){this._loop=!0;do switch(this._state){case le:this.getInfo(e);break;case Fs:this.getPayloadLength16(e);break;case Ws:this.getPayloadLength64(e);break;case Gs:this.getMask();break;case Er:this.getData(e);break;case Ir:case hn:this._loop=!1;return}while(this._loop);this._errored||e()}getInfo(e){if(this._bufferedBytes<2){this._loop=!1;return}let n=this.consume(2);if((n[0]&48)!==0){let o=this.createError(RangeError,"RSV2 and RSV3 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_2_3");e(o);return}let r=(n[0]&64)===64;if(r&&!this._extensions[$s.extensionName]){let o=this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");e(o);return}if(this._fin=(n[0]&128)===128,this._opcode=n[0]&15,this._payloadLength=n[1]&127,this._opcode===0){if(r){let o=this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");e(o);return}if(!this._fragmented){let o=this.createError(RangeError,"invalid opcode 0",!0,1002,"WS_ERR_INVALID_OPCODE");e(o);return}this._opcode=this._fragmented}else if(this._opcode===1||this._opcode===2){if(this._fragmented){let o=this.createError(RangeError,`invalid opcode ${this._opcode}`,!0,1002,"WS_ERR_INVALID_OPCODE");e(o);return}this._compressed=r}else if(this._opcode>7&&this._opcode<11){if(!this._fin){let o=this.createError(RangeError,"FIN must be set",!0,1002,"WS_ERR_EXPECTED_FIN");e(o);return}if(r){let o=this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");e(o);return}if(this._payloadLength>125||this._opcode===8&&this._payloadLength===1){let o=this.createError(RangeError,`invalid payload length ${this._payloadLength}`,!0,1002,"WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH");e(o);return}}else{let o=this.createError(RangeError,`invalid opcode ${this._opcode}`,!0,1002,"WS_ERR_INVALID_OPCODE");e(o);return}if(!this._fin&&!this._fragmented&&(this._fragmented=this._opcode),this._masked=(n[1]&128)===128,this._isServer){if(!this._masked){let o=this.createError(RangeError,"MASK must be set",!0,1002,"WS_ERR_EXPECTED_MASK");e(o);return}}else if(this._masked){let o=this.createError(RangeError,"MASK must be clear",!0,1002,"WS_ERR_UNEXPECTED_MASK");e(o);return}this._payloadLength===126?this._state=Fs:this._payloadLength===127?this._state=Ws:this.haveLength(e)}getPayloadLength16(e){if(this._bufferedBytes<2){this._loop=!1;return}this._payloadLength=this.consume(2).readUInt16BE(0),this.haveLength(e)}getPayloadLength64(e){if(this._bufferedBytes<8){this._loop=!1;return}let n=this.consume(8),r=n.readUInt32BE(0);if(r>Math.pow(2,21)-1){let o=this.createError(RangeError,"Unsupported WebSocket frame: payload length > 2^53 - 1",!1,1009,"WS_ERR_UNSUPPORTED_DATA_PAYLOAD_LENGTH");e(o);return}this._payloadLength=r*Math.pow(2,32)+n.readUInt32BE(4),this.haveLength(e)}haveLength(e){if(this._payloadLength&&this._opcode<8&&(this._totalPayloadLength+=this._payloadLength,this._totalPayloadLength>this._maxPayload&&this._maxPayload>0)){let n=this.createError(RangeError,"Max payload size exceeded",!1,1009,"WS_ERR_UNSUPPORTED_MESSAGE_LENGTH");e(n);return}this._masked?this._state=Gs:this._state=Er}getMask(){if(this._bufferedBytes<4){this._loop=!1;return}this._mask=this.consume(4),this._state=Er}getData(e){let n=Bs;if(this._payloadLength){if(this._bufferedBytes<this._payloadLength){this._loop=!1;return}n=this.consume(this._payloadLength),this._masked&&(this._mask[0]|this._mask[1]|this._mask[2]|this._mask[3])!==0&&dl(n,this._mask)}if(this._opcode>7){this.controlMessage(n,e);return}if(this._compressed){this._state=Ir,this.decompress(n,e);return}n.length&&(this._messageLength=this._totalPayloadLength,this._fragments.push(n)),this.dataMessage(e)}decompress(e,n){this._extensions[$s.extensionName].decompress(e,this._fin,(o,s)=>{if(o)return n(o);if(s.length){if(this._messageLength+=s.length,this._messageLength>this._maxPayload&&this._maxPayload>0){let i=this.createError(RangeError,"Max payload size exceeded",!1,1009,"WS_ERR_UNSUPPORTED_MESSAGE_LENGTH");n(i);return}this._fragments.push(s)}this.dataMessage(n),this._state===le&&this.startLoop(n)})}dataMessage(e){if(!this._fin){this._state=le;return}let n=this._messageLength,r=this._fragments;if(this._totalPayloadLength=0,this._messageLength=0,this._fragmented=0,this._fragments=[],this._opcode===2){let o;this._binaryType==="nodebuffer"?o=vr(r,n):this._binaryType==="arraybuffer"?o=ll(vr(r,n)):this._binaryType==="blob"?o=new Blob(r):o=r,this._allowSynchronousEvents?(this.emit("message",o,!0),this._state=le):(this._state=hn,setImmediate(()=>{this.emit("message",o,!0),this._state=le,this.startLoop(e)}))}else{let o=vr(r,n);if(!this._skipUTF8Validation&&!Us(o)){let s=this.createError(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");e(s);return}this._state===Ir||this._allowSynchronousEvents?(this.emit("message",o,!1),this._state=le):(this._state=hn,setImmediate(()=>{this.emit("message",o,!1),this._state=le,this.startLoop(e)}))}}controlMessage(e,n){if(this._opcode===8){if(e.length===0)this._loop=!1,this.emit("conclude",1005,Bs),this.end();else{let r=e.readUInt16BE(0);if(!ul(r)){let s=this.createError(RangeError,`invalid status code ${r}`,!0,1002,"WS_ERR_INVALID_CLOSE_CODE");n(s);return}let o=new fn(e.buffer,e.byteOffset+2,e.length-2);if(!this._skipUTF8Validation&&!Us(o)){let s=this.createError(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");n(s);return}this._loop=!1,this.emit("conclude",r,o),this.end()}this._state=le;return}this._allowSynchronousEvents?(this.emit(this._opcode===9?"ping":"pong",e),this._state=le):(this._state=hn,setImmediate(()=>{this.emit(this._opcode===9?"ping":"pong",e),this._state=le,this.startLoop(n)}))}createError(e,n,r,o,s){this._loop=!1,this._errored=!0;let i=new e(r?`Invalid WebSocket frame: ${n}`:n);return Error.captureStackTrace(i,this.createError),i.code=s,i[al]=o,i}};Hs.exports=xr});var Cr=U((Lp,Ks)=>{"use strict";var{Duplex:jp}=require("stream"),{randomFillSync:pl}=require("crypto"),qs=it(),{EMPTY_BUFFER:fl,kWebSocket:hl,NOOP:gl}=xe(),{isBlob:ct,isValidStatusCode:ml}=at(),{mask:Vs,toBuffer:We}=Tt(),de=Symbol("kByteLength"),_l=Buffer.alloc(4),gn=8*1024,Ge,lt=gn,he=0,yl=1,bl=2,Tr=class t{constructor(e,n,r){this._extensions=n||{},r&&(this._generateMask=r,this._maskBuffer=Buffer.alloc(4)),this._socket=e,this._firstFragment=!0,this._compress=!1,this._bufferedBytes=0,this._queue=[],this._state=he,this.onerror=gl,this[hl]=void 0}static frame(e,n){let r,o=!1,s=2,i=!1;n.mask&&(r=n.maskBuffer||_l,n.generateMask?n.generateMask(r):(lt===gn&&(Ge===void 0&&(Ge=Buffer.alloc(gn)),pl(Ge,0,gn),lt=0),r[0]=Ge[lt++],r[1]=Ge[lt++],r[2]=Ge[lt++],r[3]=Ge[lt++]),i=(r[0]|r[1]|r[2]|r[3])===0,s=6);let a;typeof e=="string"?(!n.mask||i)&&n[de]!==void 0?a=n[de]:(e=Buffer.from(e),a=e.length):(a=e.length,o=n.mask&&n.readOnly&&!i);let c=a;a>=65536?(s+=8,c=127):a>125&&(s+=2,c=126);let l=Buffer.allocUnsafe(o?a+s:s);return l[0]=n.fin?n.opcode|128:n.opcode,n.rsv1&&(l[0]|=64),l[1]=c,c===126?l.writeUInt16BE(a,2):c===127&&(l[2]=l[3]=0,l.writeUIntBE(a,4,6)),n.mask?(l[1]|=128,l[s-4]=r[0],l[s-3]=r[1],l[s-2]=r[2],l[s-1]=r[3],i?[l,e]:o?(Vs(e,r,l,s,a),[l]):(Vs(e,r,e,0,a),[l,e])):[l,e]}close(e,n,r,o){let s;if(e===void 0)s=fl;else{if(typeof e!="number"||!ml(e))throw new TypeError("First argument must be a valid error code number");if(n===void 0||!n.length)s=Buffer.allocUnsafe(2),s.writeUInt16BE(e,0);else{let a=Buffer.byteLength(n);if(a>123)throw new RangeError("The message must not be greater than 123 bytes");s=Buffer.allocUnsafe(2+a),s.writeUInt16BE(e,0),typeof n=="string"?s.write(n,2):s.set(n,2)}}let i={[de]:s.length,fin:!0,generateMask:this._generateMask,mask:r,maskBuffer:this._maskBuffer,opcode:8,readOnly:!1,rsv1:!1};this._state!==he?this.enqueue([this.dispatch,s,!1,i,o]):this.sendFrame(t.frame(s,i),o)}ping(e,n,r){let o,s;if(typeof e=="string"?(o=Buffer.byteLength(e),s=!1):ct(e)?(o=e.size,s=!1):(e=We(e),o=e.length,s=We.readOnly),o>125)throw new RangeError("The data size must not be greater than 125 bytes");let i={[de]:o,fin:!0,generateMask:this._generateMask,mask:n,maskBuffer:this._maskBuffer,opcode:9,readOnly:s,rsv1:!1};ct(e)?this._state!==he?this.enqueue([this.getBlobData,e,!1,i,r]):this.getBlobData(e,!1,i,r):this._state!==he?this.enqueue([this.dispatch,e,!1,i,r]):this.sendFrame(t.frame(e,i),r)}pong(e,n,r){let o,s;if(typeof e=="string"?(o=Buffer.byteLength(e),s=!1):ct(e)?(o=e.size,s=!1):(e=We(e),o=e.length,s=We.readOnly),o>125)throw new RangeError("The data size must not be greater than 125 bytes");let i={[de]:o,fin:!0,generateMask:this._generateMask,mask:n,maskBuffer:this._maskBuffer,opcode:10,readOnly:s,rsv1:!1};ct(e)?this._state!==he?this.enqueue([this.getBlobData,e,!1,i,r]):this.getBlobData(e,!1,i,r):this._state!==he?this.enqueue([this.dispatch,e,!1,i,r]):this.sendFrame(t.frame(e,i),r)}send(e,n,r){let o=this._extensions[qs.extensionName],s=n.binary?2:1,i=n.compress,a,c;typeof e=="string"?(a=Buffer.byteLength(e),c=!1):ct(e)?(a=e.size,c=!1):(e=We(e),a=e.length,c=We.readOnly),this._firstFragment?(this._firstFragment=!1,i&&o&&o.params[o._isServer?"server_no_context_takeover":"client_no_context_takeover"]&&(i=a>=o._threshold),this._compress=i):(i=!1,s=0),n.fin&&(this._firstFragment=!0);let l={[de]:a,fin:n.fin,generateMask:this._generateMask,mask:n.mask,maskBuffer:this._maskBuffer,opcode:s,readOnly:c,rsv1:i};ct(e)?this._state!==he?this.enqueue([this.getBlobData,e,this._compress,l,r]):this.getBlobData(e,this._compress,l,r):this._state!==he?this.enqueue([this.dispatch,e,this._compress,l,r]):this.dispatch(e,this._compress,l,r)}getBlobData(e,n,r,o){this._bufferedBytes+=r[de],this._state=bl,e.arrayBuffer().then(s=>{if(this._socket.destroyed){let a=new Error("The socket was closed while the blob was being read");process.nextTick(Pr,this,a,o);return}this._bufferedBytes-=r[de];let i=We(s);n?this.dispatch(i,n,r,o):(this._state=he,this.sendFrame(t.frame(i,r),o),this.dequeue())}).catch(s=>{process.nextTick(wl,this,s,o)})}dispatch(e,n,r,o){if(!n){this.sendFrame(t.frame(e,r),o);return}let s=this._extensions[qs.extensionName];this._bufferedBytes+=r[de],this._state=yl,s.compress(e,r.fin,(i,a)=>{if(this._socket.destroyed){let c=new Error("The socket was closed while data was being compressed");Pr(this,c,o);return}this._bufferedBytes-=r[de],this._state=he,r.readOnly=!1,this.sendFrame(t.frame(a,r),o),this.dequeue()})}dequeue(){for(;this._state===he&&this._queue.length;){let e=this._queue.shift();this._bufferedBytes-=e[3][de],Reflect.apply(e[0],this,e.slice(1))}}enqueue(e){this._bufferedBytes+=e[3][de],this._queue.push(e)}sendFrame(e,n){e.length===2?(this._socket.cork(),this._socket.write(e[0]),this._socket.write(e[1],n),this._socket.uncork()):this._socket.write(e[0],n)}};Ks.exports=Tr;function Pr(t,e,n){typeof n=="function"&&n(e);for(let r=0;r<t._queue.length;r++){let o=t._queue[r],s=o[o.length-1];typeof s=="function"&&s(e)}}function wl(t,e,n){Pr(t,e,n),t.onerror(e)}});var ni=U((Mp,ti)=>{"use strict";var{kForOnEventAttribute:Ct,kListener:Ar}=xe(),Js=Symbol("kCode"),Ys=Symbol("kData"),zs=Symbol("kError"),Xs=Symbol("kMessage"),Qs=Symbol("kReason"),dt=Symbol("kTarget"),Zs=Symbol("kType"),ei=Symbol("kWasClean"),Te=class{constructor(e){this[dt]=null,this[Zs]=e}get target(){return this[dt]}get type(){return this[Zs]}};Object.defineProperty(Te.prototype,"target",{enumerable:!0});Object.defineProperty(Te.prototype,"type",{enumerable:!0});var He=class extends Te{constructor(e,n={}){super(e),this[Js]=n.code===void 0?0:n.code,this[Qs]=n.reason===void 0?"":n.reason,this[ei]=n.wasClean===void 0?!1:n.wasClean}get code(){return this[Js]}get reason(){return this[Qs]}get wasClean(){return this[ei]}};Object.defineProperty(He.prototype,"code",{enumerable:!0});Object.defineProperty(He.prototype,"reason",{enumerable:!0});Object.defineProperty(He.prototype,"wasClean",{enumerable:!0});var ut=class extends Te{constructor(e,n={}){super(e),this[zs]=n.error===void 0?null:n.error,this[Xs]=n.message===void 0?"":n.message}get error(){return this[zs]}get message(){return this[Xs]}};Object.defineProperty(ut.prototype,"error",{enumerable:!0});Object.defineProperty(ut.prototype,"message",{enumerable:!0});var At=class extends Te{constructor(e,n={}){super(e),this[Ys]=n.data===void 0?null:n.data}get data(){return this[Ys]}};Object.defineProperty(At.prototype,"data",{enumerable:!0});var Sl={addEventListener(t,e,n={}){for(let o of this.listeners(t))if(!n[Ct]&&o[Ar]===e&&!o[Ct])return;let r;if(t==="message")r=function(s,i){let a=new At("message",{data:i?s:s.toString()});a[dt]=this,mn(e,this,a)};else if(t==="close")r=function(s,i){let a=new He("close",{code:s,reason:i.toString(),wasClean:this._closeFrameReceived&&this._closeFrameSent});a[dt]=this,mn(e,this,a)};else if(t==="error")r=function(s){let i=new ut("error",{error:s,message:s.message});i[dt]=this,mn(e,this,i)};else if(t==="open")r=function(){let s=new Te("open");s[dt]=this,mn(e,this,s)};else return;r[Ct]=!!n[Ct],r[Ar]=e,n.once?this.once(t,r):this.on(t,r)},removeEventListener(t,e){for(let n of this.listeners(t))if(n[Ar]===e&&!n[Ct]){this.removeListener(t,n);break}}};ti.exports={CloseEvent:He,ErrorEvent:ut,Event:Te,EventTarget:Sl,MessageEvent:At};function mn(t,e,n){typeof t=="object"&&t.handleEvent?t.handleEvent.call(t,n):t.call(e,n)}});var _n=U(($p,ri)=>{"use strict";var{tokenChars:Rt}=at();function we(t,e,n){t[e]===void 0?t[e]=[n]:t[e].push(n)}function kl(t){let e=Object.create(null),n=Object.create(null),r=!1,o=!1,s=!1,i,a,c=-1,l=-1,d=-1,u=0;for(;u<t.length;u++)if(l=t.charCodeAt(u),i===void 0)if(d===-1&&Rt[l]===1)c===-1&&(c=u);else if(u!==0&&(l===32||l===9))d===-1&&c!==-1&&(d=u);else if(l===59||l===44){if(c===-1)throw new SyntaxError(`Unexpected character at index ${u}`);d===-1&&(d=u);let f=t.slice(c,d);l===44?(we(e,f,n),n=Object.create(null)):i=f,c=d=-1}else throw new SyntaxError(`Unexpected character at index ${u}`);else if(a===void 0)if(d===-1&&Rt[l]===1)c===-1&&(c=u);else if(l===32||l===9)d===-1&&c!==-1&&(d=u);else if(l===59||l===44){if(c===-1)throw new SyntaxError(`Unexpected character at index ${u}`);d===-1&&(d=u),we(n,t.slice(c,d),!0),l===44&&(we(e,i,n),n=Object.create(null),i=void 0),c=d=-1}else if(l===61&&c!==-1&&d===-1)a=t.slice(c,u),c=d=-1;else throw new SyntaxError(`Unexpected character at index ${u}`);else if(o){if(Rt[l]!==1)throw new SyntaxError(`Unexpected character at index ${u}`);c===-1?c=u:r||(r=!0),o=!1}else if(s)if(Rt[l]===1)c===-1&&(c=u);else if(l===34&&c!==-1)s=!1,d=u;else if(l===92)o=!0;else throw new SyntaxError(`Unexpected character at index ${u}`);else if(l===34&&t.charCodeAt(u-1)===61)s=!0;else if(d===-1&&Rt[l]===1)c===-1&&(c=u);else if(c!==-1&&(l===32||l===9))d===-1&&(d=u);else if(l===59||l===44){if(c===-1)throw new SyntaxError(`Unexpected character at index ${u}`);d===-1&&(d=u);let f=t.slice(c,d);r&&(f=f.replace(/\\/g,""),r=!1),we(n,a,f),l===44&&(we(e,i,n),n=Object.create(null),i=void 0),a=void 0,c=d=-1}else throw new SyntaxError(`Unexpected character at index ${u}`);if(c===-1||s||l===32||l===9)throw new SyntaxError("Unexpected end of input");d===-1&&(d=u);let p=t.slice(c,d);return i===void 0?we(e,p,n):(a===void 0?we(n,p,!0):r?we(n,a,p.replace(/\\/g,"")):we(n,a,p),we(e,i,n)),e}function vl(t){return Object.keys(t).map(e=>{let n=t[e];return Array.isArray(n)||(n=[n]),n.map(r=>[e].concat(Object.keys(r).map(o=>{let s=r[o];return Array.isArray(s)||(s=[s]),s.map(i=>i===!0?o:`${o}=${i}`).join("; ")})).join("; ")).join(", ")}).join(", ")}ri.exports={format:vl,parse:kl}});var Sn=U((Fp,gi)=>{"use strict";var El=require("events"),Il=require("https"),xl=require("http"),ii=require("net"),Ol=require("tls"),{randomBytes:Tl,createHash:Pl}=require("crypto"),{Duplex:Bp,Readable:Up}=require("stream"),{URL:Rr}=require("url"),De=it(),Cl=Or(),Al=Cr(),{isBlob:Rl}=at(),{BINARY_TYPES:oi,CLOSE_TIMEOUT:Nl,EMPTY_BUFFER:yn,GUID:Dl,kForOnEventAttribute:Nr,kListener:jl,kStatusCode:Ll,kWebSocket:J,NOOP:ai}=xe(),{EventTarget:{addEventListener:Ml,removeEventListener:$l}}=ni(),{format:Bl,parse:Ul}=_n(),{toBuffer:Fl}=Tt(),ci=Symbol("kAborted"),Dr=[8,13],Pe=["CONNECTING","OPEN","CLOSING","CLOSED"],Wl=/^[!#$%&'*+\-.0-9A-Z^_`|a-z~]+$/,B=class t extends El{constructor(e,n,r){super(),this._binaryType=oi[0],this._closeCode=1006,this._closeFrameReceived=!1,this._closeFrameSent=!1,this._closeMessage=yn,this._closeTimer=null,this._errorEmitted=!1,this._extensions={},this._paused=!1,this._protocol="",this._readyState=t.CONNECTING,this._receiver=null,this._sender=null,this._socket=null,e!==null?(this._bufferedAmount=0,this._isServer=!1,this._redirects=0,n===void 0?n=[]:Array.isArray(n)||(typeof n=="object"&&n!==null?(r=n,n=[]):n=[n]),li(this,e,n,r)):(this._autoPong=r.autoPong,this._closeTimeout=r.closeTimeout,this._isServer=!0)}get binaryType(){return this._binaryType}set binaryType(e){oi.includes(e)&&(this._binaryType=e,this._receiver&&(this._receiver._binaryType=e))}get bufferedAmount(){return this._socket?this._socket._writableState.length+this._sender._bufferedBytes:this._bufferedAmount}get extensions(){return Object.keys(this._extensions).join()}get isPaused(){return this._paused}get onclose(){return null}get onerror(){return null}get onopen(){return null}get onmessage(){return null}get protocol(){return this._protocol}get readyState(){return this._readyState}get url(){return this._url}setSocket(e,n,r){let o=new Cl({allowSynchronousEvents:r.allowSynchronousEvents,binaryType:this.binaryType,extensions:this._extensions,isServer:this._isServer,maxPayload:r.maxPayload,skipUTF8Validation:r.skipUTF8Validation}),s=new Al(e,this._extensions,r.generateMask);this._receiver=o,this._sender=s,this._socket=e,o[J]=this,s[J]=this,e[J]=this,o.on("conclude",ql),o.on("drain",Vl),o.on("error",Kl),o.on("message",Jl),o.on("ping",Yl),o.on("pong",zl),s.onerror=Xl,e.setTimeout&&e.setTimeout(0),e.setNoDelay&&e.setNoDelay(),n.length>0&&e.unshift(n),e.on("close",pi),e.on("data",wn),e.on("end",fi),e.on("error",hi),this._readyState=t.OPEN,this.emit("open")}emitClose(){if(!this._socket){this._readyState=t.CLOSED,this.emit("close",this._closeCode,this._closeMessage);return}this._extensions[De.extensionName]&&this._extensions[De.extensionName].cleanup(),this._receiver.removeAllListeners(),this._readyState=t.CLOSED,this.emit("close",this._closeCode,this._closeMessage)}close(e,n){if(this.readyState!==t.CLOSED){if(this.readyState===t.CONNECTING){se(this,this._req,"WebSocket was closed before the connection was established");return}if(this.readyState===t.CLOSING){this._closeFrameSent&&(this._closeFrameReceived||this._receiver._writableState.errorEmitted)&&this._socket.end();return}this._readyState=t.CLOSING,this._sender.close(e,n,!this._isServer,r=>{r||(this._closeFrameSent=!0,(this._closeFrameReceived||this._receiver._writableState.errorEmitted)&&this._socket.end())}),ui(this)}}pause(){this.readyState===t.CONNECTING||this.readyState===t.CLOSED||(this._paused=!0,this._socket.pause())}ping(e,n,r){if(this.readyState===t.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof e=="function"?(r=e,e=n=void 0):typeof n=="function"&&(r=n,n=void 0),typeof e=="number"&&(e=e.toString()),this.readyState!==t.OPEN){jr(this,e,r);return}n===void 0&&(n=!this._isServer),this._sender.ping(e||yn,n,r)}pong(e,n,r){if(this.readyState===t.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof e=="function"?(r=e,e=n=void 0):typeof n=="function"&&(r=n,n=void 0),typeof e=="number"&&(e=e.toString()),this.readyState!==t.OPEN){jr(this,e,r);return}n===void 0&&(n=!this._isServer),this._sender.pong(e||yn,n,r)}resume(){this.readyState===t.CONNECTING||this.readyState===t.CLOSED||(this._paused=!1,this._receiver._writableState.needDrain||this._socket.resume())}send(e,n,r){if(this.readyState===t.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof n=="function"&&(r=n,n={}),typeof e=="number"&&(e=e.toString()),this.readyState!==t.OPEN){jr(this,e,r);return}let o={binary:typeof e!="string",mask:!this._isServer,compress:!0,fin:!0,...n};this._extensions[De.extensionName]||(o.compress=!1),this._sender.send(e||yn,o,r)}terminate(){if(this.readyState!==t.CLOSED){if(this.readyState===t.CONNECTING){se(this,this._req,"WebSocket was closed before the connection was established");return}this._socket&&(this._readyState=t.CLOSING,this._socket.destroy())}}};Object.defineProperty(B,"CONNECTING",{enumerable:!0,value:Pe.indexOf("CONNECTING")});Object.defineProperty(B.prototype,"CONNECTING",{enumerable:!0,value:Pe.indexOf("CONNECTING")});Object.defineProperty(B,"OPEN",{enumerable:!0,value:Pe.indexOf("OPEN")});Object.defineProperty(B.prototype,"OPEN",{enumerable:!0,value:Pe.indexOf("OPEN")});Object.defineProperty(B,"CLOSING",{enumerable:!0,value:Pe.indexOf("CLOSING")});Object.defineProperty(B.prototype,"CLOSING",{enumerable:!0,value:Pe.indexOf("CLOSING")});Object.defineProperty(B,"CLOSED",{enumerable:!0,value:Pe.indexOf("CLOSED")});Object.defineProperty(B.prototype,"CLOSED",{enumerable:!0,value:Pe.indexOf("CLOSED")});["binaryType","bufferedAmount","extensions","isPaused","protocol","readyState","url"].forEach(t=>{Object.defineProperty(B.prototype,t,{enumerable:!0})});["open","error","close","message"].forEach(t=>{Object.defineProperty(B.prototype,`on${t}`,{enumerable:!0,get(){for(let e of this.listeners(t))if(e[Nr])return e[jl];return null},set(e){for(let n of this.listeners(t))if(n[Nr]){this.removeListener(t,n);break}typeof e=="function"&&this.addEventListener(t,e,{[Nr]:!0})}})});B.prototype.addEventListener=Ml;B.prototype.removeEventListener=$l;gi.exports=B;function li(t,e,n,r){let o={allowSynchronousEvents:!0,autoPong:!0,closeTimeout:Nl,protocolVersion:Dr[1],maxPayload:104857600,skipUTF8Validation:!1,perMessageDeflate:!0,followRedirects:!1,maxRedirects:10,...r,socketPath:void 0,hostname:void 0,protocol:void 0,timeout:void 0,method:"GET",host:void 0,path:void 0,port:void 0};if(t._autoPong=o.autoPong,t._closeTimeout=o.closeTimeout,!Dr.includes(o.protocolVersion))throw new RangeError(`Unsupported protocol version: ${o.protocolVersion} (supported versions: ${Dr.join(", ")})`);let s;if(e instanceof Rr)s=e;else try{s=new Rr(e)}catch{throw new SyntaxError(`Invalid URL: ${e}`)}s.protocol==="http:"?s.protocol="ws:":s.protocol==="https:"&&(s.protocol="wss:"),t._url=s.href;let i=s.protocol==="wss:",a=s.protocol==="ws+unix:",c;if(s.protocol!=="ws:"&&!i&&!a?c=`The URL's protocol must be one of "ws:", "wss:", "http:", "https:", or "ws+unix:"`:a&&!s.pathname?c="The URL's pathname is empty":s.hash&&(c="The URL contains a fragment identifier"),c){let g=new SyntaxError(c);if(t._redirects===0)throw g;bn(t,g);return}let l=i?443:80,d=Tl(16).toString("base64"),u=i?Il.request:xl.request,p=new Set,f;if(o.createConnection=o.createConnection||(i?Hl:Gl),o.defaultPort=o.defaultPort||l,o.port=s.port||l,o.host=s.hostname.startsWith("[")?s.hostname.slice(1,-1):s.hostname,o.headers={...o.headers,"Sec-WebSocket-Version":o.protocolVersion,"Sec-WebSocket-Key":d,Connection:"Upgrade",Upgrade:"websocket"},o.path=s.pathname+s.search,o.timeout=o.handshakeTimeout,o.perMessageDeflate&&(f=new De({...o.perMessageDeflate,isServer:!1,maxPayload:o.maxPayload}),o.headers["Sec-WebSocket-Extensions"]=Bl({[De.extensionName]:f.offer()})),n.length){for(let g of n){if(typeof g!="string"||!Wl.test(g)||p.has(g))throw new SyntaxError("An invalid or duplicated subprotocol was specified");p.add(g)}o.headers["Sec-WebSocket-Protocol"]=n.join(",")}if(o.origin&&(o.protocolVersion<13?o.headers["Sec-WebSocket-Origin"]=o.origin:o.headers.Origin=o.origin),(s.username||s.password)&&(o.auth=`${s.username}:${s.password}`),a){let g=o.path.split(":");o.socketPath=g[0],o.path=g[1]}let h;if(o.followRedirects){if(t._redirects===0){t._originalIpc=a,t._originalSecure=i,t._originalHostOrSocketPath=a?o.socketPath:s.host;let g=r&&r.headers;if(r={...r,headers:{}},g)for(let[w,E]of Object.entries(g))r.headers[w.toLowerCase()]=E}else if(t.listenerCount("redirect")===0){let g=a?t._originalIpc?o.socketPath===t._originalHostOrSocketPath:!1:t._originalIpc?!1:s.host===t._originalHostOrSocketPath;(!g||t._originalSecure&&!i)&&(delete o.headers.authorization,delete o.headers.cookie,g||delete o.headers.host,o.auth=void 0)}o.auth&&!r.headers.authorization&&(r.headers.authorization="Basic "+Buffer.from(o.auth).toString("base64")),h=t._req=u(o),t._redirects&&t.emit("redirect",t.url,h)}else h=t._req=u(o);o.timeout&&h.on("timeout",()=>{se(t,h,"Opening handshake has timed out")}),h.on("error",g=>{h===null||h[ci]||(h=t._req=null,bn(t,g))}),h.on("response",g=>{let w=g.headers.location,E=g.statusCode;if(w&&o.followRedirects&&E>=300&&E<400){if(++t._redirects>o.maxRedirects){se(t,h,"Maximum redirects exceeded");return}h.abort();let O;try{O=new Rr(w,e)}catch{let x=new SyntaxError(`Invalid URL: ${w}`);bn(t,x);return}li(t,O,n,r)}else t.emit("unexpected-response",h,g)||se(t,h,`Unexpected server response: ${g.statusCode}`)}),h.on("upgrade",(g,w,E)=>{if(t.emit("upgrade",g),t.readyState!==B.CONNECTING)return;h=t._req=null;let O=g.headers.upgrade;if(O===void 0||O.toLowerCase()!=="websocket"){se(t,w,"Invalid Upgrade header");return}let T=Pl("sha1").update(d+Dl).digest("base64");if(g.headers["sec-websocket-accept"]!==T){se(t,w,"Invalid Sec-WebSocket-Accept header");return}let x=g.headers["sec-websocket-protocol"],y;if(x!==void 0?p.size?p.has(x)||(y="Server sent an invalid subprotocol"):y="Server sent a subprotocol but none was requested":p.size&&(y="Server sent no subprotocol"),y){se(t,w,y);return}x&&(t._protocol=x);let b=g.headers["sec-websocket-extensions"];if(b!==void 0){if(!f){se(t,w,"Server sent a Sec-WebSocket-Extensions header but no extension was requested");return}let m;try{m=Ul(b)}catch{se(t,w,"Invalid Sec-WebSocket-Extensions header");return}let k=Object.keys(m);if(k.length!==1||k[0]!==De.extensionName){se(t,w,"Server indicated an extension that was not requested");return}try{f.accept(m[De.extensionName])}catch{se(t,w,"Invalid Sec-WebSocket-Extensions header");return}t._extensions[De.extensionName]=f}t.setSocket(w,E,{allowSynchronousEvents:o.allowSynchronousEvents,generateMask:o.generateMask,maxPayload:o.maxPayload,skipUTF8Validation:o.skipUTF8Validation})}),o.finishRequest?o.finishRequest(h,t):h.end()}function bn(t,e){t._readyState=B.CLOSING,t._errorEmitted=!0,t.emit("error",e),t.emitClose()}function Gl(t){return t.path=t.socketPath,ii.connect(t)}function Hl(t){return t.path=void 0,!t.servername&&t.servername!==""&&(t.servername=ii.isIP(t.host)?"":t.host),Ol.connect(t)}function se(t,e,n){t._readyState=B.CLOSING;let r=new Error(n);Error.captureStackTrace(r,se),e.setHeader?(e[ci]=!0,e.abort(),e.socket&&!e.socket.destroyed&&e.socket.destroy(),process.nextTick(bn,t,r)):(e.destroy(r),e.once("error",t.emit.bind(t,"error")),e.once("close",t.emitClose.bind(t)))}function jr(t,e,n){if(e){let r=Rl(e)?e.size:Fl(e).length;t._socket?t._sender._bufferedBytes+=r:t._bufferedAmount+=r}if(n){let r=new Error(`WebSocket is not open: readyState ${t.readyState} (${Pe[t.readyState]})`);process.nextTick(n,r)}}function ql(t,e){let n=this[J];n._closeFrameReceived=!0,n._closeMessage=e,n._closeCode=t,n._socket[J]!==void 0&&(n._socket.removeListener("data",wn),process.nextTick(di,n._socket),t===1005?n.close():n.close(t,e))}function Vl(){let t=this[J];t.isPaused||t._socket.resume()}function Kl(t){let e=this[J];e._socket[J]!==void 0&&(e._socket.removeListener("data",wn),process.nextTick(di,e._socket),e.close(t[Ll])),e._errorEmitted||(e._errorEmitted=!0,e.emit("error",t))}function si(){this[J].emitClose()}function Jl(t,e){this[J].emit("message",t,e)}function Yl(t){let e=this[J];e._autoPong&&e.pong(t,!this._isServer,ai),e.emit("ping",t)}function zl(t){this[J].emit("pong",t)}function di(t){t.resume()}function Xl(t){let e=this[J];e.readyState!==B.CLOSED&&(e.readyState===B.OPEN&&(e._readyState=B.CLOSING,ui(e)),this._socket.end(),e._errorEmitted||(e._errorEmitted=!0,e.emit("error",t)))}function ui(t){t._closeTimer=setTimeout(t._socket.destroy.bind(t._socket),t._closeTimeout)}function pi(){let t=this[J];if(this.removeListener("close",pi),this.removeListener("data",wn),this.removeListener("end",fi),t._readyState=B.CLOSING,!this._readableState.endEmitted&&!t._closeFrameReceived&&!t._receiver._writableState.errorEmitted&&this._readableState.length!==0){let e=this.read(this._readableState.length);t._receiver.write(e)}t._receiver.end(),this[J]=void 0,clearTimeout(t._closeTimer),t._receiver._writableState.finished||t._receiver._writableState.errorEmitted?t.emitClose():(t._receiver.on("error",si),t._receiver.on("finish",si))}function wn(t){this[J]._receiver.write(t)||this.pause()}function fi(){let t=this[J];t._readyState=B.CLOSING,t._receiver.end(),this.end()}function hi(){let t=this[J];this.removeListener("error",hi),this.on("error",ai),t&&(t._readyState=B.CLOSING,this.destroy())}});var bi=U((Gp,yi)=>{"use strict";var Wp=Sn(),{Duplex:Ql}=require("stream");function mi(t){t.emit("close")}function Zl(){!this.destroyed&&this._writableState.finished&&this.destroy()}function _i(t){this.removeListener("error",_i),this.destroy(),this.listenerCount("error")===0&&this.emit("error",t)}function ed(t,e){let n=!0,r=new Ql({...e,autoDestroy:!1,emitClose:!1,objectMode:!1,writableObjectMode:!1});return t.on("message",function(s,i){let a=!i&&r._readableState.objectMode?s.toString():s;r.push(a)||t.pause()}),t.once("error",function(s){r.destroyed||(n=!1,r.destroy(s))}),t.once("close",function(){r.destroyed||r.push(null)}),r._destroy=function(o,s){if(t.readyState===t.CLOSED){s(o),process.nextTick(mi,r);return}let i=!1;t.once("error",function(c){i=!0,s(c)}),t.once("close",function(){i||s(o),process.nextTick(mi,r)}),n&&t.terminate()},r._final=function(o){if(t.readyState===t.CONNECTING){t.once("open",function(){r._final(o)});return}t._socket!==null&&(t._socket._writableState.finished?(o(),r._readableState.endEmitted&&r.destroy()):(t._socket.once("finish",function(){o()}),t.close()))},r._read=function(){t.isPaused&&t.resume()},r._write=function(o,s,i){if(t.readyState===t.CONNECTING){t.once("open",function(){r._write(o,s,i)});return}t.send(o,i)},r.on("end",Zl),r.on("error",_i),r}yi.exports=ed});var Lr=U((Hp,wi)=>{"use strict";var{tokenChars:td}=at();function nd(t){let e=new Set,n=-1,r=-1,o=0;for(o;o<t.length;o++){let i=t.charCodeAt(o);if(r===-1&&td[i]===1)n===-1&&(n=o);else if(o!==0&&(i===32||i===9))r===-1&&n!==-1&&(r=o);else if(i===44){if(n===-1)throw new SyntaxError(`Unexpected character at index ${o}`);r===-1&&(r=o);let a=t.slice(n,r);if(e.has(a))throw new SyntaxError(`The "${a}" subprotocol is duplicated`);e.add(a),n=r=-1}else throw new SyntaxError(`Unexpected character at index ${o}`)}if(n===-1||r!==-1)throw new SyntaxError("Unexpected end of input");let s=t.slice(n,o);if(e.has(s))throw new SyntaxError(`The "${s}" subprotocol is duplicated`);return e.add(s),e}wi.exports={parse:nd}});var Oi=U((Vp,xi)=>{"use strict";var rd=require("events"),kn=require("http"),{Duplex:qp}=require("stream"),{createHash:od}=require("crypto"),Si=_n(),qe=it(),sd=Lr(),id=Sn(),{CLOSE_TIMEOUT:ad,GUID:cd,kWebSocket:ld}=xe(),dd=/^[+/0-9A-Za-z]{22}==$/,ki=0,vi=1,Ii=2,Mr=class extends rd{constructor(e,n){if(super(),e={allowSynchronousEvents:!0,autoPong:!0,maxPayload:100*1024*1024,skipUTF8Validation:!1,perMessageDeflate:!1,handleProtocols:null,clientTracking:!0,closeTimeout:ad,verifyClient:null,noServer:!1,backlog:null,server:null,host:null,path:null,port:null,WebSocket:id,...e},e.port==null&&!e.server&&!e.noServer||e.port!=null&&(e.server||e.noServer)||e.server&&e.noServer)throw new TypeError('One and only one of the "port", "server", or "noServer" options must be specified');if(e.port!=null?(this._server=kn.createServer((r,o)=>{let s=kn.STATUS_CODES[426];o.writeHead(426,{"Content-Length":s.length,"Content-Type":"text/plain"}),o.end(s)}),this._server.listen(e.port,e.host,e.backlog,n)):e.server&&(this._server=e.server),this._server){let r=this.emit.bind(this,"connection");this._removeListeners=ud(this._server,{listening:this.emit.bind(this,"listening"),error:this.emit.bind(this,"error"),upgrade:(o,s,i)=>{this.handleUpgrade(o,s,i,r)}})}e.perMessageDeflate===!0&&(e.perMessageDeflate={}),e.clientTracking&&(this.clients=new Set,this._shouldEmitClose=!1),this.options=e,this._state=ki}address(){if(this.options.noServer)throw new Error('The server is operating in "noServer" mode');return this._server?this._server.address():null}close(e){if(this._state===Ii){e&&this.once("close",()=>{e(new Error("The server is not running"))}),process.nextTick(Nt,this);return}if(e&&this.once("close",e),this._state!==vi)if(this._state=vi,this.options.noServer||this.options.server)this._server&&(this._removeListeners(),this._removeListeners=this._server=null),this.clients?this.clients.size?this._shouldEmitClose=!0:process.nextTick(Nt,this):process.nextTick(Nt,this);else{let n=this._server;this._removeListeners(),this._removeListeners=this._server=null,n.close(()=>{Nt(this)})}}shouldHandle(e){if(this.options.path){let n=e.url.indexOf("?");if((n!==-1?e.url.slice(0,n):e.url)!==this.options.path)return!1}return!0}handleUpgrade(e,n,r,o){n.on("error",Ei);let s=e.headers["sec-websocket-key"],i=e.headers.upgrade,a=+e.headers["sec-websocket-version"];if(e.method!=="GET"){Ve(this,e,n,405,"Invalid HTTP method");return}if(i===void 0||i.toLowerCase()!=="websocket"){Ve(this,e,n,400,"Invalid Upgrade header");return}if(s===void 0||!dd.test(s)){Ve(this,e,n,400,"Missing or invalid Sec-WebSocket-Key header");return}if(a!==13&&a!==8){Ve(this,e,n,400,"Missing or invalid Sec-WebSocket-Version header",{"Sec-WebSocket-Version":"13, 8"});return}if(!this.shouldHandle(e)){Dt(n,400);return}let c=e.headers["sec-websocket-protocol"],l=new Set;if(c!==void 0)try{l=sd.parse(c)}catch{Ve(this,e,n,400,"Invalid Sec-WebSocket-Protocol header");return}let d=e.headers["sec-websocket-extensions"],u={};if(this.options.perMessageDeflate&&d!==void 0){let p=new qe({...this.options.perMessageDeflate,isServer:!0,maxPayload:this.options.maxPayload});try{let f=Si.parse(d);f[qe.extensionName]&&(p.accept(f[qe.extensionName]),u[qe.extensionName]=p)}catch{Ve(this,e,n,400,"Invalid or unacceptable Sec-WebSocket-Extensions header");return}}if(this.options.verifyClient){let p={origin:e.headers[`${a===8?"sec-websocket-origin":"origin"}`],secure:!!(e.socket.authorized||e.socket.encrypted),req:e};if(this.options.verifyClient.length===2){this.options.verifyClient(p,(f,h,g,w)=>{if(!f)return Dt(n,h||401,g,w);this.completeUpgrade(u,s,l,e,n,r,o)});return}if(!this.options.verifyClient(p))return Dt(n,401)}this.completeUpgrade(u,s,l,e,n,r,o)}completeUpgrade(e,n,r,o,s,i,a){if(!s.readable||!s.writable)return s.destroy();if(s[ld])throw new Error("server.handleUpgrade() was called more than once with the same socket, possibly due to a misconfiguration");if(this._state>ki)return Dt(s,503);let l=["HTTP/1.1 101 Switching Protocols","Upgrade: websocket","Connection: Upgrade",`Sec-WebSocket-Accept: ${od("sha1").update(n+cd).digest("base64")}`],d=new this.options.WebSocket(null,void 0,this.options);if(r.size){let u=this.options.handleProtocols?this.options.handleProtocols(r,o):r.values().next().value;u&&(l.push(`Sec-WebSocket-Protocol: ${u}`),d._protocol=u)}if(e[qe.extensionName]){let u=e[qe.extensionName].params,p=Si.format({[qe.extensionName]:[u]});l.push(`Sec-WebSocket-Extensions: ${p}`),d._extensions=e}this.emit("headers",l,o),s.write(l.concat(`\r
|
|
23
|
+
`)}),this}_outputHelpIfRequested(e){let n=this._getHelpOption();n&&e.find(o=>n.is(o))&&(this.outputHelp(),this._exit(0,"commander.helpDisplayed","(outputHelp)"))}};function $o(t){return t.map(e=>{if(!e.startsWith("--inspect"))return e;let n,r="127.0.0.1",o="9229",s;return(s=e.match(/^(--inspect(-brk)?)$/))!==null?n=s[1]:(s=e.match(/^(--inspect(-brk|-port)?)=([^:]+)$/))!==null?(n=s[1],/^\d+$/.test(s[3])?o=s[3]:r=s[3]):(s=e.match(/^(--inspect(-brk|-port)?)=([^:]+):(\d+)$/))!==null&&(n=s[1],r=s[3],o=s[4]),n&&o!=="0"?`${n}=${r}:${parseInt(o)+1}`:e})}Bo.Command=sr});var Ho=U(ce=>{var{Argument:Fo}=Zt(),{Command:ir}=Uo(),{CommanderError:xc,InvalidArgumentError:Wo}=vt(),{Help:Oc}=Xn(),{Option:Go}=tr();ce.program=new ir;ce.createCommand=t=>new ir(t);ce.createOption=(t,e)=>new Go(t,e);ce.createArgument=(t,e)=>new Fo(t,e);ce.Command=ir;ce.Option=Go;ce.Argument=Fo;ce.Help=Oc;ce.CommanderError=xc;ce.InvalidArgumentError=Wo;ce.InvalidOptionArgumentError=Wo});var Qo=U(q=>{"use strict";var ar=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),Tc=ar(t=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.sync=t.isexe=void 0;var e=require("node:fs"),n=require("node:fs/promises"),r=async(a,c={})=>{let{ignoreErrors:l=!1}=c;try{return s(await(0,n.stat)(a),c)}catch(d){let u=d;if(l||u.code==="EACCES")return!1;throw u}};t.isexe=r;var o=(a,c={})=>{let{ignoreErrors:l=!1}=c;try{return s((0,e.statSync)(a),c)}catch(d){let u=d;if(l||u.code==="EACCES")return!1;throw u}};t.sync=o;var s=(a,c)=>a.isFile()&&i(a,c),i=(a,c)=>{let l=c.uid??process.getuid?.(),d=c.groups??process.getgroups?.()??[],u=c.gid??process.getgid?.()??d[0];if(l===void 0||u===void 0)throw new Error("cannot get uid or gid");let p=new Set([u,...d]),f=a.mode,h=a.uid,g=a.gid,w=parseInt("100",8),E=parseInt("010",8),O=parseInt("001",8),T=w|E;return!!(f&O||f&E&&p.has(g)||f&w&&h===l||f&T&&l===0)}}),Pc=ar(t=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.sync=t.isexe=void 0;var e=require("node:fs"),n=require("node:fs/promises"),r=require("node:path"),o=async(c,l={})=>{let{ignoreErrors:d=!1}=l;try{return a(await(0,n.stat)(c),c,l)}catch(u){let p=u;if(d||p.code==="EACCES")return!1;throw p}};t.isexe=o;var s=(c,l={})=>{let{ignoreErrors:d=!1}=l;try{return a((0,e.statSync)(c),c,l)}catch(u){let p=u;if(d||p.code==="EACCES")return!1;throw p}};t.sync=s;var i=(c,l)=>{let{pathExt:d=process.env.PATHEXT||""}=l,u=d.split(r.delimiter);if(u.indexOf("")!==-1)return!0;for(let p of u){let f=p.toLowerCase(),h=c.substring(c.length-f.length).toLowerCase();if(f&&h===f)return!0}return!1},a=(c,l,d)=>c.isFile()&&i(l,d)}),Cc=ar(t=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})}),Ko=q&&q.__createBinding||(Object.create?(function(t,e,n,r){r===void 0&&(r=n);var o=Object.getOwnPropertyDescriptor(e,n);(!o||("get"in o?!e.__esModule:o.writable||o.configurable))&&(o={enumerable:!0,get:function(){return e[n]}}),Object.defineProperty(t,r,o)}):(function(t,e,n,r){r===void 0&&(r=n),t[r]=e[n]})),Ac=q&&q.__setModuleDefault||(Object.create?(function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}):function(t,e){t.default=e}),Jo=q&&q.__importStar||(function(){var t=function(e){return t=Object.getOwnPropertyNames||function(n){var r=[];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(r[r.length]=o);return r},t(e)};return function(e){if(e&&e.__esModule)return e;var n={};if(e!=null)for(var r=t(e),o=0;o<r.length;o++)r[o]!=="default"&&Ko(n,e,r[o]);return Ac(n,e),n}})(),Rc=q&&q.__exportStar||function(t,e){for(var n in t)n!=="default"&&!Object.prototype.hasOwnProperty.call(e,n)&&Ko(e,t,n)};Object.defineProperty(q,"__esModule",{value:!0});q.sync=q.isexe=q.posix=q.win32=void 0;var Yo=Jo(Tc());q.posix=Yo;var zo=Jo(Pc());q.win32=zo;Rc(Cc(),q);var Nc=process.env._ISEXE_TEST_PLATFORM_||process.platform,Xo=Nc==="win32"?zo:Yo;q.isexe=Xo.isexe;q.sync=Xo.sync});var cs=U((gp,as)=>{var{isexe:Dc,sync:jc}=Qo(),{join:Lc,delimiter:Mc,sep:Zo,posix:es}=require("path"),ts=process.platform==="win32",ns=new RegExp(`[${es.sep}${Zo===es.sep?"":Zo}]`.replace(/(\\)/g,"\\$1")),$c=new RegExp(`^\\.${ns.source}`),rs=t=>Object.assign(new Error(`not found: ${t}`),{code:"ENOENT"}),os=(t,{path:e=process.env.PATH,pathExt:n=process.env.PATHEXT,delimiter:r=Mc})=>{let o=t.match(ns)?[""]:[...ts?[process.cwd()]:[],...(e||"").split(r)];if(ts){let s=n||[".EXE",".CMD",".BAT",".COM"].join(r),i=s.split(r).flatMap(a=>[a,a.toLowerCase()]);return t.includes(".")&&i[0]!==""&&i.unshift(""),{pathEnv:o,pathExt:i,pathExtExe:s}}return{pathEnv:o,pathExt:[""]}},ss=(t,e)=>{let n=/^".*"$/.test(t)?t.slice(1,-1):t;return(!n&&$c.test(e)?e.slice(0,2):"")+Lc(n,e)},is=async(t,e={})=>{let{pathEnv:n,pathExt:r,pathExtExe:o}=os(t,e),s=[];for(let i of n){let a=ss(i,t);for(let c of r){let l=a+c;if(await Dc(l,{pathExt:o,ignoreErrors:!0})){if(!e.all)return l;s.push(l)}}}if(e.all&&s.length)return s;if(e.nothrow)return null;throw rs(t)},Bc=(t,e={})=>{let{pathEnv:n,pathExt:r,pathExtExe:o}=os(t,e),s=[];for(let i of n){let a=ss(i,t);for(let c of r){let l=a+c;if(jc(l,{pathExt:o,ignoreErrors:!0})){if(!e.all)return l;s.push(l)}}}if(e.all&&s.length)return s;if(e.nothrow)return null;throw rs(t)};as.exports=is;is.sync=Bc});function ye(){let t=process.env.BRIDGE_PROFILE||void 0;return t!==void 0&&!hs.test(t)&&(console.error(`[bridge] profile.invalid \u2014 BRIDGE_PROFILE "${t}" contains unsafe characters (allowed: a-z A-Z 0-9 -)`),process.exit(1)),t}function Q(){let t=ye();return t?ne.default.join(pr,"profiles",t,"settings.json"):ne.default.join(pr,"settings.json")}function Re(){let t=ye(),e=t?`${t}.daemon.lock`:"daemon.lock";return ne.default.join((0,ue.homedir)(),".bridge",e)}function pe(){let t=ye();return t?`com.jerico.bridge-agent.${t}.plist`:"com.jerico.bridge-agent.plist"}function Ae(){let t=ye(),e=t?`-${t}`:"";return{out:ne.default.join((0,ue.homedir)(),`bridge-daemon${e}.log`),err:ne.default.join((0,ue.homedir)(),`bridge-daemon${e}.err.log`),lifecycle:ne.default.join((0,ue.homedir)(),`bridge-daemon${e}.lifecycle.log`)}}function xt(){let t=ye(),e=t?`spawn-manifest-${t}.json`:"spawn-manifest.json";return ne.default.join((0,ue.homedir)(),".bridge",e)}function be(){let t=process.env.HEALTH_PORT;if(t){let e=parseInt(t,10);if(Number.isFinite(e))return e}return ye()?3102:3101}function fr(){let t=ye();return ne.default.join((0,ue.homedir)(),".bridge",t?`bridge-agent-wrapper-${t}.sh`:"bridge-agent-wrapper.sh")}function nn(){return ye()??"default"}function gs(){let t=ne.default.join(pr,"profiles");if(!(0,tn.existsSync)(t))return[];try{return(0,tn.readdirSync)(t,{withFileTypes:!0}).filter(e=>e.isDirectory()&&hs.test(e.name)).map(e=>e.name)}catch{return[]}}function ms(){let t=ye();return t?`:profile:${t}`:""}function _s(){let t=ye(),e=t?`com.jerico.bridge-agent.${t}.plist`:"com.jerico.bridge-agent.plist",n=ne.default.join((0,ue.homedir)(),".bridge","update.lock"),r=ne.default.join((0,ue.homedir)(),".bridge","update-state.json");return{plist:ne.default.join((0,ue.homedir)(),"Library","LaunchAgents",e),wrapper:fr(),lock:Re(),logOut:Ae().out,logErr:Ae().err,config:Q(),updateLock:t?null:n,updateState:t?null:r}}var ue,tn,ne,pr,hs,Z=tt(()=>{"use strict";ue=require("node:os"),tn=require("node:fs"),ne=S(require("path")),pr=ne.default.join((0,ue.homedir)(),".jerico"),hs=/^[a-zA-Z0-9-]+$/});function hr(){try{let t=require.resolve("node-pty"),e=an.default.resolve(an.default.dirname(t),"..");return an.default.join(e,"prebuilds",`${process.platform}-${process.arch}`,"spawn-helper")}catch{return}}function vs(){let t=hr();if(!t||!Ss.default.existsSync(t))return!0;try{return ks.spawn("/bin/sh",[],{name:"xterm-256color",cols:80,rows:24}).kill(),!0}catch{return!1}}var Ss,an,ks,gr=tt(()=>{"use strict";Ss=S(require("fs")),an=S(require("path")),ks=S(require("node-pty"))});function qc(){try{let t=Ot.default.join(Ot.default.dirname(process.execPath),"spawn-helper");if(rt.default.existsSync(t))return t;if(process.pkg!==void 0){let e=hr();if(e){let n=Ot.default.join(Es.default.homedir(),".bridge","bin"),r=Ot.default.join(n,"spawn-helper");try{rt.default.mkdirSync(n,{recursive:!0});let o=rt.default.readFileSync(e);return rt.default.writeFileSync(r,o),rt.default.chmodSync(r,493),r}catch(o){console.warn("[bridge] spawn-helper.extract.failed",{error:String(o)})}}}return null}catch{return null}}function Vc(t){if(process.platform==="win32")return;let e;try{e=require("node-pty").native}catch{return}if(!e||typeof e.fork!="function"||e.__helperPatched)return;let n=e.fork.bind(e);e.fork=function(...r){return r.length>9&&(r[9]=t),n(...r)},e.__helperPatched=!0,console.error("[bridge] spawn-helper.fork-patched",{path:t})}function cn(){let t=qc();t&&Vc(t)}var rt,Ot,Es,mr=tt(()=>{"use strict";rt=S(require("fs")),Ot=S(require("path")),Es=S(require("os"));gr()});var xe=U((Pp,Os)=>{"use strict";var Is=["nodebuffer","arraybuffer","fragments"],xs=typeof Blob<"u";xs&&Is.push("blob");Os.exports={BINARY_TYPES:Is,CLOSE_TIMEOUT:3e4,EMPTY_BUFFER:Buffer.alloc(0),GUID:"258EAFA5-E914-47DA-95CA-C5AB0DC85B11",hasBlob:xs,kForOnEventAttribute:Symbol("kIsForOnEventAttribute"),kListener:Symbol("kListener"),kStatusCode:Symbol("status-code"),kWebSocket:Symbol("websocket"),NOOP:()=>{}}});var Tt=U((Cp,ln)=>{"use strict";var{EMPTY_BUFFER:Kc}=xe(),_r=Buffer[Symbol.species];function Jc(t,e){if(t.length===0)return Kc;if(t.length===1)return t[0];let n=Buffer.allocUnsafe(e),r=0;for(let o=0;o<t.length;o++){let s=t[o];n.set(s,r),r+=s.length}return r<e?new _r(n.buffer,n.byteOffset,r):n}function Ts(t,e,n,r,o){for(let s=0;s<o;s++)n[r+s]=t[s]^e[s&3]}function Ps(t,e){for(let n=0;n<t.length;n++)t[n]^=e[n&3]}function Yc(t){return t.length===t.buffer.byteLength?t.buffer:t.buffer.slice(t.byteOffset,t.byteOffset+t.length)}function yr(t){if(yr.readOnly=!0,Buffer.isBuffer(t))return t;let e;return t instanceof ArrayBuffer?e=new _r(t):ArrayBuffer.isView(t)?e=new _r(t.buffer,t.byteOffset,t.byteLength):(e=Buffer.from(t),yr.readOnly=!1),e}ln.exports={concat:Jc,mask:Ts,toArrayBuffer:Yc,toBuffer:yr,unmask:Ps};if(!process.env.WS_NO_BUFFER_UTIL)try{let t=require("bufferutil");ln.exports.mask=function(e,n,r,o,s){s<48?Ts(e,n,r,o,s):t.mask(e,n,r,o,s)},ln.exports.unmask=function(e,n){e.length<32?Ps(e,n):t.unmask(e,n)}}catch{}});var Rs=U((Ap,As)=>{"use strict";var Cs=Symbol("kDone"),br=Symbol("kRun"),wr=class{constructor(e){this[Cs]=()=>{this.pending--,this[br]()},this.concurrency=e||1/0,this.jobs=[],this.pending=0}add(e){this.jobs.push(e),this[br]()}[br](){if(this.pending!==this.concurrency&&this.jobs.length){let e=this.jobs.shift();this.pending++,e(this[Cs])}}};As.exports=wr});var it=U((Rp,Ls)=>{"use strict";var Pt=require("zlib"),Ns=Tt(),zc=Rs(),{kStatusCode:Ds}=xe(),Xc=Buffer[Symbol.species],Qc=Buffer.from([0,0,255,255]),un=Symbol("permessage-deflate"),Oe=Symbol("total-length"),ot=Symbol("callback"),Ne=Symbol("buffers"),st=Symbol("error"),dn,Sr=class{constructor(e){if(this._options=e||{},this._threshold=this._options.threshold!==void 0?this._options.threshold:1024,this._maxPayload=this._options.maxPayload|0,this._isServer=!!this._options.isServer,this._deflate=null,this._inflate=null,this.params=null,!dn){let n=this._options.concurrencyLimit!==void 0?this._options.concurrencyLimit:10;dn=new zc(n)}}static get extensionName(){return"permessage-deflate"}offer(){let e={};return this._options.serverNoContextTakeover&&(e.server_no_context_takeover=!0),this._options.clientNoContextTakeover&&(e.client_no_context_takeover=!0),this._options.serverMaxWindowBits&&(e.server_max_window_bits=this._options.serverMaxWindowBits),this._options.clientMaxWindowBits?e.client_max_window_bits=this._options.clientMaxWindowBits:this._options.clientMaxWindowBits==null&&(e.client_max_window_bits=!0),e}accept(e){return e=this.normalizeParams(e),this.params=this._isServer?this.acceptAsServer(e):this.acceptAsClient(e),this.params}cleanup(){if(this._inflate&&(this._inflate.close(),this._inflate=null),this._deflate){let e=this._deflate[ot];this._deflate.close(),this._deflate=null,e&&e(new Error("The deflate stream was closed while data was being processed"))}}acceptAsServer(e){let n=this._options,r=e.find(o=>!(n.serverNoContextTakeover===!1&&o.server_no_context_takeover||o.server_max_window_bits&&(n.serverMaxWindowBits===!1||typeof n.serverMaxWindowBits=="number"&&n.serverMaxWindowBits>o.server_max_window_bits)||typeof n.clientMaxWindowBits=="number"&&!o.client_max_window_bits));if(!r)throw new Error("None of the extension offers can be accepted");return n.serverNoContextTakeover&&(r.server_no_context_takeover=!0),n.clientNoContextTakeover&&(r.client_no_context_takeover=!0),typeof n.serverMaxWindowBits=="number"&&(r.server_max_window_bits=n.serverMaxWindowBits),typeof n.clientMaxWindowBits=="number"?r.client_max_window_bits=n.clientMaxWindowBits:(r.client_max_window_bits===!0||n.clientMaxWindowBits===!1)&&delete r.client_max_window_bits,r}acceptAsClient(e){let n=e[0];if(this._options.clientNoContextTakeover===!1&&n.client_no_context_takeover)throw new Error('Unexpected parameter "client_no_context_takeover"');if(!n.client_max_window_bits)typeof this._options.clientMaxWindowBits=="number"&&(n.client_max_window_bits=this._options.clientMaxWindowBits);else if(this._options.clientMaxWindowBits===!1||typeof this._options.clientMaxWindowBits=="number"&&n.client_max_window_bits>this._options.clientMaxWindowBits)throw new Error('Unexpected or invalid parameter "client_max_window_bits"');return n}normalizeParams(e){return e.forEach(n=>{Object.keys(n).forEach(r=>{let o=n[r];if(o.length>1)throw new Error(`Parameter "${r}" must have only a single value`);if(o=o[0],r==="client_max_window_bits"){if(o!==!0){let s=+o;if(!Number.isInteger(s)||s<8||s>15)throw new TypeError(`Invalid value for parameter "${r}": ${o}`);o=s}else if(!this._isServer)throw new TypeError(`Invalid value for parameter "${r}": ${o}`)}else if(r==="server_max_window_bits"){let s=+o;if(!Number.isInteger(s)||s<8||s>15)throw new TypeError(`Invalid value for parameter "${r}": ${o}`);o=s}else if(r==="client_no_context_takeover"||r==="server_no_context_takeover"){if(o!==!0)throw new TypeError(`Invalid value for parameter "${r}": ${o}`)}else throw new Error(`Unknown parameter "${r}"`);n[r]=o})}),e}decompress(e,n,r){dn.add(o=>{this._decompress(e,n,(s,i)=>{o(),r(s,i)})})}compress(e,n,r){dn.add(o=>{this._compress(e,n,(s,i)=>{o(),r(s,i)})})}_decompress(e,n,r){let o=this._isServer?"client":"server";if(!this._inflate){let s=`${o}_max_window_bits`,i=typeof this.params[s]!="number"?Pt.Z_DEFAULT_WINDOWBITS:this.params[s];this._inflate=Pt.createInflateRaw({...this._options.zlibInflateOptions,windowBits:i}),this._inflate[un]=this,this._inflate[Oe]=0,this._inflate[Ne]=[],this._inflate.on("error",el),this._inflate.on("data",js)}this._inflate[ot]=r,this._inflate.write(e),n&&this._inflate.write(Qc),this._inflate.flush(()=>{let s=this._inflate[st];if(s){this._inflate.close(),this._inflate=null,r(s);return}let i=Ns.concat(this._inflate[Ne],this._inflate[Oe]);this._inflate._readableState.endEmitted?(this._inflate.close(),this._inflate=null):(this._inflate[Oe]=0,this._inflate[Ne]=[],n&&this.params[`${o}_no_context_takeover`]&&this._inflate.reset()),r(null,i)})}_compress(e,n,r){let o=this._isServer?"server":"client";if(!this._deflate){let s=`${o}_max_window_bits`,i=typeof this.params[s]!="number"?Pt.Z_DEFAULT_WINDOWBITS:this.params[s];this._deflate=Pt.createDeflateRaw({...this._options.zlibDeflateOptions,windowBits:i}),this._deflate[Oe]=0,this._deflate[Ne]=[],this._deflate.on("data",Zc)}this._deflate[ot]=r,this._deflate.write(e),this._deflate.flush(Pt.Z_SYNC_FLUSH,()=>{if(!this._deflate)return;let s=Ns.concat(this._deflate[Ne],this._deflate[Oe]);n&&(s=new Xc(s.buffer,s.byteOffset,s.length-4)),this._deflate[ot]=null,this._deflate[Oe]=0,this._deflate[Ne]=[],n&&this.params[`${o}_no_context_takeover`]&&this._deflate.reset(),r(null,s)})}};Ls.exports=Sr;function Zc(t){this[Ne].push(t),this[Oe]+=t.length}function js(t){if(this[Oe]+=t.length,this[un]._maxPayload<1||this[Oe]<=this[un]._maxPayload){this[Ne].push(t);return}this[st]=new RangeError("Max payload size exceeded"),this[st].code="WS_ERR_UNSUPPORTED_MESSAGE_LENGTH",this[st][Ds]=1009,this.removeListener("data",js),this.reset()}function el(t){if(this[un]._inflate=null,this[st]){this[ot](this[st]);return}t[Ds]=1007,this[ot](t)}});var at=U((Np,pn)=>{"use strict";var{isUtf8:Ms}=require("buffer"),{hasBlob:tl}=xe(),nl=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,1,1,1,0,0,1,1,0,1,1,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,1,0];function rl(t){return t>=1e3&&t<=1014&&t!==1004&&t!==1005&&t!==1006||t>=3e3&&t<=4999}function kr(t){let e=t.length,n=0;for(;n<e;)if((t[n]&128)===0)n++;else if((t[n]&224)===192){if(n+1===e||(t[n+1]&192)!==128||(t[n]&254)===192)return!1;n+=2}else if((t[n]&240)===224){if(n+2>=e||(t[n+1]&192)!==128||(t[n+2]&192)!==128||t[n]===224&&(t[n+1]&224)===128||t[n]===237&&(t[n+1]&224)===160)return!1;n+=3}else if((t[n]&248)===240){if(n+3>=e||(t[n+1]&192)!==128||(t[n+2]&192)!==128||(t[n+3]&192)!==128||t[n]===240&&(t[n+1]&240)===128||t[n]===244&&t[n+1]>143||t[n]>244)return!1;n+=4}else return!1;return!0}function ol(t){return tl&&typeof t=="object"&&typeof t.arrayBuffer=="function"&&typeof t.type=="string"&&typeof t.stream=="function"&&(t[Symbol.toStringTag]==="Blob"||t[Symbol.toStringTag]==="File")}pn.exports={isBlob:ol,isValidStatusCode:rl,isValidUTF8:kr,tokenChars:nl};if(Ms)pn.exports.isValidUTF8=function(t){return t.length<24?kr(t):Ms(t)};else if(!process.env.WS_NO_UTF_8_VALIDATE)try{let t=require("utf-8-validate");pn.exports.isValidUTF8=function(e){return e.length<32?kr(e):t(e)}}catch{}});var Or=U((Dp,Hs)=>{"use strict";var{Writable:sl}=require("stream"),$s=it(),{BINARY_TYPES:il,EMPTY_BUFFER:Bs,kStatusCode:al,kWebSocket:cl}=xe(),{concat:vr,toArrayBuffer:ll,unmask:dl}=Tt(),{isValidStatusCode:ul,isValidUTF8:Us}=at(),fn=Buffer[Symbol.species],le=0,Fs=1,Ws=2,Gs=3,Er=4,Ir=5,hn=6,xr=class extends sl{constructor(e={}){super(),this._allowSynchronousEvents=e.allowSynchronousEvents!==void 0?e.allowSynchronousEvents:!0,this._binaryType=e.binaryType||il[0],this._extensions=e.extensions||{},this._isServer=!!e.isServer,this._maxPayload=e.maxPayload|0,this._skipUTF8Validation=!!e.skipUTF8Validation,this[cl]=void 0,this._bufferedBytes=0,this._buffers=[],this._compressed=!1,this._payloadLength=0,this._mask=void 0,this._fragmented=0,this._masked=!1,this._fin=!1,this._opcode=0,this._totalPayloadLength=0,this._messageLength=0,this._fragments=[],this._errored=!1,this._loop=!1,this._state=le}_write(e,n,r){if(this._opcode===8&&this._state==le)return r();this._bufferedBytes+=e.length,this._buffers.push(e),this.startLoop(r)}consume(e){if(this._bufferedBytes-=e,e===this._buffers[0].length)return this._buffers.shift();if(e<this._buffers[0].length){let r=this._buffers[0];return this._buffers[0]=new fn(r.buffer,r.byteOffset+e,r.length-e),new fn(r.buffer,r.byteOffset,e)}let n=Buffer.allocUnsafe(e);do{let r=this._buffers[0],o=n.length-e;e>=r.length?n.set(this._buffers.shift(),o):(n.set(new Uint8Array(r.buffer,r.byteOffset,e),o),this._buffers[0]=new fn(r.buffer,r.byteOffset+e,r.length-e)),e-=r.length}while(e>0);return n}startLoop(e){this._loop=!0;do switch(this._state){case le:this.getInfo(e);break;case Fs:this.getPayloadLength16(e);break;case Ws:this.getPayloadLength64(e);break;case Gs:this.getMask();break;case Er:this.getData(e);break;case Ir:case hn:this._loop=!1;return}while(this._loop);this._errored||e()}getInfo(e){if(this._bufferedBytes<2){this._loop=!1;return}let n=this.consume(2);if((n[0]&48)!==0){let o=this.createError(RangeError,"RSV2 and RSV3 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_2_3");e(o);return}let r=(n[0]&64)===64;if(r&&!this._extensions[$s.extensionName]){let o=this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");e(o);return}if(this._fin=(n[0]&128)===128,this._opcode=n[0]&15,this._payloadLength=n[1]&127,this._opcode===0){if(r){let o=this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");e(o);return}if(!this._fragmented){let o=this.createError(RangeError,"invalid opcode 0",!0,1002,"WS_ERR_INVALID_OPCODE");e(o);return}this._opcode=this._fragmented}else if(this._opcode===1||this._opcode===2){if(this._fragmented){let o=this.createError(RangeError,`invalid opcode ${this._opcode}`,!0,1002,"WS_ERR_INVALID_OPCODE");e(o);return}this._compressed=r}else if(this._opcode>7&&this._opcode<11){if(!this._fin){let o=this.createError(RangeError,"FIN must be set",!0,1002,"WS_ERR_EXPECTED_FIN");e(o);return}if(r){let o=this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");e(o);return}if(this._payloadLength>125||this._opcode===8&&this._payloadLength===1){let o=this.createError(RangeError,`invalid payload length ${this._payloadLength}`,!0,1002,"WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH");e(o);return}}else{let o=this.createError(RangeError,`invalid opcode ${this._opcode}`,!0,1002,"WS_ERR_INVALID_OPCODE");e(o);return}if(!this._fin&&!this._fragmented&&(this._fragmented=this._opcode),this._masked=(n[1]&128)===128,this._isServer){if(!this._masked){let o=this.createError(RangeError,"MASK must be set",!0,1002,"WS_ERR_EXPECTED_MASK");e(o);return}}else if(this._masked){let o=this.createError(RangeError,"MASK must be clear",!0,1002,"WS_ERR_UNEXPECTED_MASK");e(o);return}this._payloadLength===126?this._state=Fs:this._payloadLength===127?this._state=Ws:this.haveLength(e)}getPayloadLength16(e){if(this._bufferedBytes<2){this._loop=!1;return}this._payloadLength=this.consume(2).readUInt16BE(0),this.haveLength(e)}getPayloadLength64(e){if(this._bufferedBytes<8){this._loop=!1;return}let n=this.consume(8),r=n.readUInt32BE(0);if(r>Math.pow(2,21)-1){let o=this.createError(RangeError,"Unsupported WebSocket frame: payload length > 2^53 - 1",!1,1009,"WS_ERR_UNSUPPORTED_DATA_PAYLOAD_LENGTH");e(o);return}this._payloadLength=r*Math.pow(2,32)+n.readUInt32BE(4),this.haveLength(e)}haveLength(e){if(this._payloadLength&&this._opcode<8&&(this._totalPayloadLength+=this._payloadLength,this._totalPayloadLength>this._maxPayload&&this._maxPayload>0)){let n=this.createError(RangeError,"Max payload size exceeded",!1,1009,"WS_ERR_UNSUPPORTED_MESSAGE_LENGTH");e(n);return}this._masked?this._state=Gs:this._state=Er}getMask(){if(this._bufferedBytes<4){this._loop=!1;return}this._mask=this.consume(4),this._state=Er}getData(e){let n=Bs;if(this._payloadLength){if(this._bufferedBytes<this._payloadLength){this._loop=!1;return}n=this.consume(this._payloadLength),this._masked&&(this._mask[0]|this._mask[1]|this._mask[2]|this._mask[3])!==0&&dl(n,this._mask)}if(this._opcode>7){this.controlMessage(n,e);return}if(this._compressed){this._state=Ir,this.decompress(n,e);return}n.length&&(this._messageLength=this._totalPayloadLength,this._fragments.push(n)),this.dataMessage(e)}decompress(e,n){this._extensions[$s.extensionName].decompress(e,this._fin,(o,s)=>{if(o)return n(o);if(s.length){if(this._messageLength+=s.length,this._messageLength>this._maxPayload&&this._maxPayload>0){let i=this.createError(RangeError,"Max payload size exceeded",!1,1009,"WS_ERR_UNSUPPORTED_MESSAGE_LENGTH");n(i);return}this._fragments.push(s)}this.dataMessage(n),this._state===le&&this.startLoop(n)})}dataMessage(e){if(!this._fin){this._state=le;return}let n=this._messageLength,r=this._fragments;if(this._totalPayloadLength=0,this._messageLength=0,this._fragmented=0,this._fragments=[],this._opcode===2){let o;this._binaryType==="nodebuffer"?o=vr(r,n):this._binaryType==="arraybuffer"?o=ll(vr(r,n)):this._binaryType==="blob"?o=new Blob(r):o=r,this._allowSynchronousEvents?(this.emit("message",o,!0),this._state=le):(this._state=hn,setImmediate(()=>{this.emit("message",o,!0),this._state=le,this.startLoop(e)}))}else{let o=vr(r,n);if(!this._skipUTF8Validation&&!Us(o)){let s=this.createError(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");e(s);return}this._state===Ir||this._allowSynchronousEvents?(this.emit("message",o,!1),this._state=le):(this._state=hn,setImmediate(()=>{this.emit("message",o,!1),this._state=le,this.startLoop(e)}))}}controlMessage(e,n){if(this._opcode===8){if(e.length===0)this._loop=!1,this.emit("conclude",1005,Bs),this.end();else{let r=e.readUInt16BE(0);if(!ul(r)){let s=this.createError(RangeError,`invalid status code ${r}`,!0,1002,"WS_ERR_INVALID_CLOSE_CODE");n(s);return}let o=new fn(e.buffer,e.byteOffset+2,e.length-2);if(!this._skipUTF8Validation&&!Us(o)){let s=this.createError(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");n(s);return}this._loop=!1,this.emit("conclude",r,o),this.end()}this._state=le;return}this._allowSynchronousEvents?(this.emit(this._opcode===9?"ping":"pong",e),this._state=le):(this._state=hn,setImmediate(()=>{this.emit(this._opcode===9?"ping":"pong",e),this._state=le,this.startLoop(n)}))}createError(e,n,r,o,s){this._loop=!1,this._errored=!0;let i=new e(r?`Invalid WebSocket frame: ${n}`:n);return Error.captureStackTrace(i,this.createError),i.code=s,i[al]=o,i}};Hs.exports=xr});var Cr=U((Lp,Ks)=>{"use strict";var{Duplex:jp}=require("stream"),{randomFillSync:pl}=require("crypto"),qs=it(),{EMPTY_BUFFER:fl,kWebSocket:hl,NOOP:gl}=xe(),{isBlob:ct,isValidStatusCode:ml}=at(),{mask:Vs,toBuffer:We}=Tt(),de=Symbol("kByteLength"),_l=Buffer.alloc(4),gn=8*1024,Ge,lt=gn,he=0,yl=1,bl=2,Tr=class t{constructor(e,n,r){this._extensions=n||{},r&&(this._generateMask=r,this._maskBuffer=Buffer.alloc(4)),this._socket=e,this._firstFragment=!0,this._compress=!1,this._bufferedBytes=0,this._queue=[],this._state=he,this.onerror=gl,this[hl]=void 0}static frame(e,n){let r,o=!1,s=2,i=!1;n.mask&&(r=n.maskBuffer||_l,n.generateMask?n.generateMask(r):(lt===gn&&(Ge===void 0&&(Ge=Buffer.alloc(gn)),pl(Ge,0,gn),lt=0),r[0]=Ge[lt++],r[1]=Ge[lt++],r[2]=Ge[lt++],r[3]=Ge[lt++]),i=(r[0]|r[1]|r[2]|r[3])===0,s=6);let a;typeof e=="string"?(!n.mask||i)&&n[de]!==void 0?a=n[de]:(e=Buffer.from(e),a=e.length):(a=e.length,o=n.mask&&n.readOnly&&!i);let c=a;a>=65536?(s+=8,c=127):a>125&&(s+=2,c=126);let l=Buffer.allocUnsafe(o?a+s:s);return l[0]=n.fin?n.opcode|128:n.opcode,n.rsv1&&(l[0]|=64),l[1]=c,c===126?l.writeUInt16BE(a,2):c===127&&(l[2]=l[3]=0,l.writeUIntBE(a,4,6)),n.mask?(l[1]|=128,l[s-4]=r[0],l[s-3]=r[1],l[s-2]=r[2],l[s-1]=r[3],i?[l,e]:o?(Vs(e,r,l,s,a),[l]):(Vs(e,r,e,0,a),[l,e])):[l,e]}close(e,n,r,o){let s;if(e===void 0)s=fl;else{if(typeof e!="number"||!ml(e))throw new TypeError("First argument must be a valid error code number");if(n===void 0||!n.length)s=Buffer.allocUnsafe(2),s.writeUInt16BE(e,0);else{let a=Buffer.byteLength(n);if(a>123)throw new RangeError("The message must not be greater than 123 bytes");s=Buffer.allocUnsafe(2+a),s.writeUInt16BE(e,0),typeof n=="string"?s.write(n,2):s.set(n,2)}}let i={[de]:s.length,fin:!0,generateMask:this._generateMask,mask:r,maskBuffer:this._maskBuffer,opcode:8,readOnly:!1,rsv1:!1};this._state!==he?this.enqueue([this.dispatch,s,!1,i,o]):this.sendFrame(t.frame(s,i),o)}ping(e,n,r){let o,s;if(typeof e=="string"?(o=Buffer.byteLength(e),s=!1):ct(e)?(o=e.size,s=!1):(e=We(e),o=e.length,s=We.readOnly),o>125)throw new RangeError("The data size must not be greater than 125 bytes");let i={[de]:o,fin:!0,generateMask:this._generateMask,mask:n,maskBuffer:this._maskBuffer,opcode:9,readOnly:s,rsv1:!1};ct(e)?this._state!==he?this.enqueue([this.getBlobData,e,!1,i,r]):this.getBlobData(e,!1,i,r):this._state!==he?this.enqueue([this.dispatch,e,!1,i,r]):this.sendFrame(t.frame(e,i),r)}pong(e,n,r){let o,s;if(typeof e=="string"?(o=Buffer.byteLength(e),s=!1):ct(e)?(o=e.size,s=!1):(e=We(e),o=e.length,s=We.readOnly),o>125)throw new RangeError("The data size must not be greater than 125 bytes");let i={[de]:o,fin:!0,generateMask:this._generateMask,mask:n,maskBuffer:this._maskBuffer,opcode:10,readOnly:s,rsv1:!1};ct(e)?this._state!==he?this.enqueue([this.getBlobData,e,!1,i,r]):this.getBlobData(e,!1,i,r):this._state!==he?this.enqueue([this.dispatch,e,!1,i,r]):this.sendFrame(t.frame(e,i),r)}send(e,n,r){let o=this._extensions[qs.extensionName],s=n.binary?2:1,i=n.compress,a,c;typeof e=="string"?(a=Buffer.byteLength(e),c=!1):ct(e)?(a=e.size,c=!1):(e=We(e),a=e.length,c=We.readOnly),this._firstFragment?(this._firstFragment=!1,i&&o&&o.params[o._isServer?"server_no_context_takeover":"client_no_context_takeover"]&&(i=a>=o._threshold),this._compress=i):(i=!1,s=0),n.fin&&(this._firstFragment=!0);let l={[de]:a,fin:n.fin,generateMask:this._generateMask,mask:n.mask,maskBuffer:this._maskBuffer,opcode:s,readOnly:c,rsv1:i};ct(e)?this._state!==he?this.enqueue([this.getBlobData,e,this._compress,l,r]):this.getBlobData(e,this._compress,l,r):this._state!==he?this.enqueue([this.dispatch,e,this._compress,l,r]):this.dispatch(e,this._compress,l,r)}getBlobData(e,n,r,o){this._bufferedBytes+=r[de],this._state=bl,e.arrayBuffer().then(s=>{if(this._socket.destroyed){let a=new Error("The socket was closed while the blob was being read");process.nextTick(Pr,this,a,o);return}this._bufferedBytes-=r[de];let i=We(s);n?this.dispatch(i,n,r,o):(this._state=he,this.sendFrame(t.frame(i,r),o),this.dequeue())}).catch(s=>{process.nextTick(wl,this,s,o)})}dispatch(e,n,r,o){if(!n){this.sendFrame(t.frame(e,r),o);return}let s=this._extensions[qs.extensionName];this._bufferedBytes+=r[de],this._state=yl,s.compress(e,r.fin,(i,a)=>{if(this._socket.destroyed){let c=new Error("The socket was closed while data was being compressed");Pr(this,c,o);return}this._bufferedBytes-=r[de],this._state=he,r.readOnly=!1,this.sendFrame(t.frame(a,r),o),this.dequeue()})}dequeue(){for(;this._state===he&&this._queue.length;){let e=this._queue.shift();this._bufferedBytes-=e[3][de],Reflect.apply(e[0],this,e.slice(1))}}enqueue(e){this._bufferedBytes+=e[3][de],this._queue.push(e)}sendFrame(e,n){e.length===2?(this._socket.cork(),this._socket.write(e[0]),this._socket.write(e[1],n),this._socket.uncork()):this._socket.write(e[0],n)}};Ks.exports=Tr;function Pr(t,e,n){typeof n=="function"&&n(e);for(let r=0;r<t._queue.length;r++){let o=t._queue[r],s=o[o.length-1];typeof s=="function"&&s(e)}}function wl(t,e,n){Pr(t,e,n),t.onerror(e)}});var ni=U((Mp,ti)=>{"use strict";var{kForOnEventAttribute:Ct,kListener:Ar}=xe(),Js=Symbol("kCode"),Ys=Symbol("kData"),zs=Symbol("kError"),Xs=Symbol("kMessage"),Qs=Symbol("kReason"),dt=Symbol("kTarget"),Zs=Symbol("kType"),ei=Symbol("kWasClean"),Te=class{constructor(e){this[dt]=null,this[Zs]=e}get target(){return this[dt]}get type(){return this[Zs]}};Object.defineProperty(Te.prototype,"target",{enumerable:!0});Object.defineProperty(Te.prototype,"type",{enumerable:!0});var He=class extends Te{constructor(e,n={}){super(e),this[Js]=n.code===void 0?0:n.code,this[Qs]=n.reason===void 0?"":n.reason,this[ei]=n.wasClean===void 0?!1:n.wasClean}get code(){return this[Js]}get reason(){return this[Qs]}get wasClean(){return this[ei]}};Object.defineProperty(He.prototype,"code",{enumerable:!0});Object.defineProperty(He.prototype,"reason",{enumerable:!0});Object.defineProperty(He.prototype,"wasClean",{enumerable:!0});var ut=class extends Te{constructor(e,n={}){super(e),this[zs]=n.error===void 0?null:n.error,this[Xs]=n.message===void 0?"":n.message}get error(){return this[zs]}get message(){return this[Xs]}};Object.defineProperty(ut.prototype,"error",{enumerable:!0});Object.defineProperty(ut.prototype,"message",{enumerable:!0});var At=class extends Te{constructor(e,n={}){super(e),this[Ys]=n.data===void 0?null:n.data}get data(){return this[Ys]}};Object.defineProperty(At.prototype,"data",{enumerable:!0});var Sl={addEventListener(t,e,n={}){for(let o of this.listeners(t))if(!n[Ct]&&o[Ar]===e&&!o[Ct])return;let r;if(t==="message")r=function(s,i){let a=new At("message",{data:i?s:s.toString()});a[dt]=this,mn(e,this,a)};else if(t==="close")r=function(s,i){let a=new He("close",{code:s,reason:i.toString(),wasClean:this._closeFrameReceived&&this._closeFrameSent});a[dt]=this,mn(e,this,a)};else if(t==="error")r=function(s){let i=new ut("error",{error:s,message:s.message});i[dt]=this,mn(e,this,i)};else if(t==="open")r=function(){let s=new Te("open");s[dt]=this,mn(e,this,s)};else return;r[Ct]=!!n[Ct],r[Ar]=e,n.once?this.once(t,r):this.on(t,r)},removeEventListener(t,e){for(let n of this.listeners(t))if(n[Ar]===e&&!n[Ct]){this.removeListener(t,n);break}}};ti.exports={CloseEvent:He,ErrorEvent:ut,Event:Te,EventTarget:Sl,MessageEvent:At};function mn(t,e,n){typeof t=="object"&&t.handleEvent?t.handleEvent.call(t,n):t.call(e,n)}});var _n=U(($p,ri)=>{"use strict";var{tokenChars:Rt}=at();function we(t,e,n){t[e]===void 0?t[e]=[n]:t[e].push(n)}function kl(t){let e=Object.create(null),n=Object.create(null),r=!1,o=!1,s=!1,i,a,c=-1,l=-1,d=-1,u=0;for(;u<t.length;u++)if(l=t.charCodeAt(u),i===void 0)if(d===-1&&Rt[l]===1)c===-1&&(c=u);else if(u!==0&&(l===32||l===9))d===-1&&c!==-1&&(d=u);else if(l===59||l===44){if(c===-1)throw new SyntaxError(`Unexpected character at index ${u}`);d===-1&&(d=u);let f=t.slice(c,d);l===44?(we(e,f,n),n=Object.create(null)):i=f,c=d=-1}else throw new SyntaxError(`Unexpected character at index ${u}`);else if(a===void 0)if(d===-1&&Rt[l]===1)c===-1&&(c=u);else if(l===32||l===9)d===-1&&c!==-1&&(d=u);else if(l===59||l===44){if(c===-1)throw new SyntaxError(`Unexpected character at index ${u}`);d===-1&&(d=u),we(n,t.slice(c,d),!0),l===44&&(we(e,i,n),n=Object.create(null),i=void 0),c=d=-1}else if(l===61&&c!==-1&&d===-1)a=t.slice(c,u),c=d=-1;else throw new SyntaxError(`Unexpected character at index ${u}`);else if(o){if(Rt[l]!==1)throw new SyntaxError(`Unexpected character at index ${u}`);c===-1?c=u:r||(r=!0),o=!1}else if(s)if(Rt[l]===1)c===-1&&(c=u);else if(l===34&&c!==-1)s=!1,d=u;else if(l===92)o=!0;else throw new SyntaxError(`Unexpected character at index ${u}`);else if(l===34&&t.charCodeAt(u-1)===61)s=!0;else if(d===-1&&Rt[l]===1)c===-1&&(c=u);else if(c!==-1&&(l===32||l===9))d===-1&&(d=u);else if(l===59||l===44){if(c===-1)throw new SyntaxError(`Unexpected character at index ${u}`);d===-1&&(d=u);let f=t.slice(c,d);r&&(f=f.replace(/\\/g,""),r=!1),we(n,a,f),l===44&&(we(e,i,n),n=Object.create(null),i=void 0),a=void 0,c=d=-1}else throw new SyntaxError(`Unexpected character at index ${u}`);if(c===-1||s||l===32||l===9)throw new SyntaxError("Unexpected end of input");d===-1&&(d=u);let p=t.slice(c,d);return i===void 0?we(e,p,n):(a===void 0?we(n,p,!0):r?we(n,a,p.replace(/\\/g,"")):we(n,a,p),we(e,i,n)),e}function vl(t){return Object.keys(t).map(e=>{let n=t[e];return Array.isArray(n)||(n=[n]),n.map(r=>[e].concat(Object.keys(r).map(o=>{let s=r[o];return Array.isArray(s)||(s=[s]),s.map(i=>i===!0?o:`${o}=${i}`).join("; ")})).join("; ")).join(", ")}).join(", ")}ri.exports={format:vl,parse:kl}});var Sn=U((Fp,gi)=>{"use strict";var El=require("events"),Il=require("https"),xl=require("http"),ii=require("net"),Ol=require("tls"),{randomBytes:Tl,createHash:Pl}=require("crypto"),{Duplex:Bp,Readable:Up}=require("stream"),{URL:Rr}=require("url"),De=it(),Cl=Or(),Al=Cr(),{isBlob:Rl}=at(),{BINARY_TYPES:oi,CLOSE_TIMEOUT:Nl,EMPTY_BUFFER:yn,GUID:Dl,kForOnEventAttribute:Nr,kListener:jl,kStatusCode:Ll,kWebSocket:J,NOOP:ai}=xe(),{EventTarget:{addEventListener:Ml,removeEventListener:$l}}=ni(),{format:Bl,parse:Ul}=_n(),{toBuffer:Fl}=Tt(),ci=Symbol("kAborted"),Dr=[8,13],Pe=["CONNECTING","OPEN","CLOSING","CLOSED"],Wl=/^[!#$%&'*+\-.0-9A-Z^_`|a-z~]+$/,B=class t extends El{constructor(e,n,r){super(),this._binaryType=oi[0],this._closeCode=1006,this._closeFrameReceived=!1,this._closeFrameSent=!1,this._closeMessage=yn,this._closeTimer=null,this._errorEmitted=!1,this._extensions={},this._paused=!1,this._protocol="",this._readyState=t.CONNECTING,this._receiver=null,this._sender=null,this._socket=null,e!==null?(this._bufferedAmount=0,this._isServer=!1,this._redirects=0,n===void 0?n=[]:Array.isArray(n)||(typeof n=="object"&&n!==null?(r=n,n=[]):n=[n]),li(this,e,n,r)):(this._autoPong=r.autoPong,this._closeTimeout=r.closeTimeout,this._isServer=!0)}get binaryType(){return this._binaryType}set binaryType(e){oi.includes(e)&&(this._binaryType=e,this._receiver&&(this._receiver._binaryType=e))}get bufferedAmount(){return this._socket?this._socket._writableState.length+this._sender._bufferedBytes:this._bufferedAmount}get extensions(){return Object.keys(this._extensions).join()}get isPaused(){return this._paused}get onclose(){return null}get onerror(){return null}get onopen(){return null}get onmessage(){return null}get protocol(){return this._protocol}get readyState(){return this._readyState}get url(){return this._url}setSocket(e,n,r){let o=new Cl({allowSynchronousEvents:r.allowSynchronousEvents,binaryType:this.binaryType,extensions:this._extensions,isServer:this._isServer,maxPayload:r.maxPayload,skipUTF8Validation:r.skipUTF8Validation}),s=new Al(e,this._extensions,r.generateMask);this._receiver=o,this._sender=s,this._socket=e,o[J]=this,s[J]=this,e[J]=this,o.on("conclude",ql),o.on("drain",Vl),o.on("error",Kl),o.on("message",Jl),o.on("ping",Yl),o.on("pong",zl),s.onerror=Xl,e.setTimeout&&e.setTimeout(0),e.setNoDelay&&e.setNoDelay(),n.length>0&&e.unshift(n),e.on("close",pi),e.on("data",wn),e.on("end",fi),e.on("error",hi),this._readyState=t.OPEN,this.emit("open")}emitClose(){if(!this._socket){this._readyState=t.CLOSED,this.emit("close",this._closeCode,this._closeMessage);return}this._extensions[De.extensionName]&&this._extensions[De.extensionName].cleanup(),this._receiver.removeAllListeners(),this._readyState=t.CLOSED,this.emit("close",this._closeCode,this._closeMessage)}close(e,n){if(this.readyState!==t.CLOSED){if(this.readyState===t.CONNECTING){se(this,this._req,"WebSocket was closed before the connection was established");return}if(this.readyState===t.CLOSING){this._closeFrameSent&&(this._closeFrameReceived||this._receiver._writableState.errorEmitted)&&this._socket.end();return}this._readyState=t.CLOSING,this._sender.close(e,n,!this._isServer,r=>{r||(this._closeFrameSent=!0,(this._closeFrameReceived||this._receiver._writableState.errorEmitted)&&this._socket.end())}),ui(this)}}pause(){this.readyState===t.CONNECTING||this.readyState===t.CLOSED||(this._paused=!0,this._socket.pause())}ping(e,n,r){if(this.readyState===t.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof e=="function"?(r=e,e=n=void 0):typeof n=="function"&&(r=n,n=void 0),typeof e=="number"&&(e=e.toString()),this.readyState!==t.OPEN){jr(this,e,r);return}n===void 0&&(n=!this._isServer),this._sender.ping(e||yn,n,r)}pong(e,n,r){if(this.readyState===t.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof e=="function"?(r=e,e=n=void 0):typeof n=="function"&&(r=n,n=void 0),typeof e=="number"&&(e=e.toString()),this.readyState!==t.OPEN){jr(this,e,r);return}n===void 0&&(n=!this._isServer),this._sender.pong(e||yn,n,r)}resume(){this.readyState===t.CONNECTING||this.readyState===t.CLOSED||(this._paused=!1,this._receiver._writableState.needDrain||this._socket.resume())}send(e,n,r){if(this.readyState===t.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof n=="function"&&(r=n,n={}),typeof e=="number"&&(e=e.toString()),this.readyState!==t.OPEN){jr(this,e,r);return}let o={binary:typeof e!="string",mask:!this._isServer,compress:!0,fin:!0,...n};this._extensions[De.extensionName]||(o.compress=!1),this._sender.send(e||yn,o,r)}terminate(){if(this.readyState!==t.CLOSED){if(this.readyState===t.CONNECTING){se(this,this._req,"WebSocket was closed before the connection was established");return}this._socket&&(this._readyState=t.CLOSING,this._socket.destroy())}}};Object.defineProperty(B,"CONNECTING",{enumerable:!0,value:Pe.indexOf("CONNECTING")});Object.defineProperty(B.prototype,"CONNECTING",{enumerable:!0,value:Pe.indexOf("CONNECTING")});Object.defineProperty(B,"OPEN",{enumerable:!0,value:Pe.indexOf("OPEN")});Object.defineProperty(B.prototype,"OPEN",{enumerable:!0,value:Pe.indexOf("OPEN")});Object.defineProperty(B,"CLOSING",{enumerable:!0,value:Pe.indexOf("CLOSING")});Object.defineProperty(B.prototype,"CLOSING",{enumerable:!0,value:Pe.indexOf("CLOSING")});Object.defineProperty(B,"CLOSED",{enumerable:!0,value:Pe.indexOf("CLOSED")});Object.defineProperty(B.prototype,"CLOSED",{enumerable:!0,value:Pe.indexOf("CLOSED")});["binaryType","bufferedAmount","extensions","isPaused","protocol","readyState","url"].forEach(t=>{Object.defineProperty(B.prototype,t,{enumerable:!0})});["open","error","close","message"].forEach(t=>{Object.defineProperty(B.prototype,`on${t}`,{enumerable:!0,get(){for(let e of this.listeners(t))if(e[Nr])return e[jl];return null},set(e){for(let n of this.listeners(t))if(n[Nr]){this.removeListener(t,n);break}typeof e=="function"&&this.addEventListener(t,e,{[Nr]:!0})}})});B.prototype.addEventListener=Ml;B.prototype.removeEventListener=$l;gi.exports=B;function li(t,e,n,r){let o={allowSynchronousEvents:!0,autoPong:!0,closeTimeout:Nl,protocolVersion:Dr[1],maxPayload:104857600,skipUTF8Validation:!1,perMessageDeflate:!0,followRedirects:!1,maxRedirects:10,...r,socketPath:void 0,hostname:void 0,protocol:void 0,timeout:void 0,method:"GET",host:void 0,path:void 0,port:void 0};if(t._autoPong=o.autoPong,t._closeTimeout=o.closeTimeout,!Dr.includes(o.protocolVersion))throw new RangeError(`Unsupported protocol version: ${o.protocolVersion} (supported versions: ${Dr.join(", ")})`);let s;if(e instanceof Rr)s=e;else try{s=new Rr(e)}catch{throw new SyntaxError(`Invalid URL: ${e}`)}s.protocol==="http:"?s.protocol="ws:":s.protocol==="https:"&&(s.protocol="wss:"),t._url=s.href;let i=s.protocol==="wss:",a=s.protocol==="ws+unix:",c;if(s.protocol!=="ws:"&&!i&&!a?c=`The URL's protocol must be one of "ws:", "wss:", "http:", "https:", or "ws+unix:"`:a&&!s.pathname?c="The URL's pathname is empty":s.hash&&(c="The URL contains a fragment identifier"),c){let g=new SyntaxError(c);if(t._redirects===0)throw g;bn(t,g);return}let l=i?443:80,d=Tl(16).toString("base64"),u=i?Il.request:xl.request,p=new Set,f;if(o.createConnection=o.createConnection||(i?Hl:Gl),o.defaultPort=o.defaultPort||l,o.port=s.port||l,o.host=s.hostname.startsWith("[")?s.hostname.slice(1,-1):s.hostname,o.headers={...o.headers,"Sec-WebSocket-Version":o.protocolVersion,"Sec-WebSocket-Key":d,Connection:"Upgrade",Upgrade:"websocket"},o.path=s.pathname+s.search,o.timeout=o.handshakeTimeout,o.perMessageDeflate&&(f=new De({...o.perMessageDeflate,isServer:!1,maxPayload:o.maxPayload}),o.headers["Sec-WebSocket-Extensions"]=Bl({[De.extensionName]:f.offer()})),n.length){for(let g of n){if(typeof g!="string"||!Wl.test(g)||p.has(g))throw new SyntaxError("An invalid or duplicated subprotocol was specified");p.add(g)}o.headers["Sec-WebSocket-Protocol"]=n.join(",")}if(o.origin&&(o.protocolVersion<13?o.headers["Sec-WebSocket-Origin"]=o.origin:o.headers.Origin=o.origin),(s.username||s.password)&&(o.auth=`${s.username}:${s.password}`),a){let g=o.path.split(":");o.socketPath=g[0],o.path=g[1]}let h;if(o.followRedirects){if(t._redirects===0){t._originalIpc=a,t._originalSecure=i,t._originalHostOrSocketPath=a?o.socketPath:s.host;let g=r&&r.headers;if(r={...r,headers:{}},g)for(let[w,E]of Object.entries(g))r.headers[w.toLowerCase()]=E}else if(t.listenerCount("redirect")===0){let g=a?t._originalIpc?o.socketPath===t._originalHostOrSocketPath:!1:t._originalIpc?!1:s.host===t._originalHostOrSocketPath;(!g||t._originalSecure&&!i)&&(delete o.headers.authorization,delete o.headers.cookie,g||delete o.headers.host,o.auth=void 0)}o.auth&&!r.headers.authorization&&(r.headers.authorization="Basic "+Buffer.from(o.auth).toString("base64")),h=t._req=u(o),t._redirects&&t.emit("redirect",t.url,h)}else h=t._req=u(o);o.timeout&&h.on("timeout",()=>{se(t,h,"Opening handshake has timed out")}),h.on("error",g=>{h===null||h[ci]||(h=t._req=null,bn(t,g))}),h.on("response",g=>{let w=g.headers.location,E=g.statusCode;if(w&&o.followRedirects&&E>=300&&E<400){if(++t._redirects>o.maxRedirects){se(t,h,"Maximum redirects exceeded");return}h.abort();let O;try{O=new Rr(w,e)}catch{let x=new SyntaxError(`Invalid URL: ${w}`);bn(t,x);return}li(t,O,n,r)}else t.emit("unexpected-response",h,g)||se(t,h,`Unexpected server response: ${g.statusCode}`)}),h.on("upgrade",(g,w,E)=>{if(t.emit("upgrade",g),t.readyState!==B.CONNECTING)return;h=t._req=null;let O=g.headers.upgrade;if(O===void 0||O.toLowerCase()!=="websocket"){se(t,w,"Invalid Upgrade header");return}let T=Pl("sha1").update(d+Dl).digest("base64");if(g.headers["sec-websocket-accept"]!==T){se(t,w,"Invalid Sec-WebSocket-Accept header");return}let x=g.headers["sec-websocket-protocol"],y;if(x!==void 0?p.size?p.has(x)||(y="Server sent an invalid subprotocol"):y="Server sent a subprotocol but none was requested":p.size&&(y="Server sent no subprotocol"),y){se(t,w,y);return}x&&(t._protocol=x);let b=g.headers["sec-websocket-extensions"];if(b!==void 0){if(!f){se(t,w,"Server sent a Sec-WebSocket-Extensions header but no extension was requested");return}let m;try{m=Ul(b)}catch{se(t,w,"Invalid Sec-WebSocket-Extensions header");return}let k=Object.keys(m);if(k.length!==1||k[0]!==De.extensionName){se(t,w,"Server indicated an extension that was not requested");return}try{f.accept(m[De.extensionName])}catch{se(t,w,"Invalid Sec-WebSocket-Extensions header");return}t._extensions[De.extensionName]=f}t.setSocket(w,E,{allowSynchronousEvents:o.allowSynchronousEvents,generateMask:o.generateMask,maxPayload:o.maxPayload,skipUTF8Validation:o.skipUTF8Validation})}),o.finishRequest?o.finishRequest(h,t):h.end()}function bn(t,e){t._readyState=B.CLOSING,t._errorEmitted=!0,t.emit("error",e),t.emitClose()}function Gl(t){return t.path=t.socketPath,ii.connect(t)}function Hl(t){return t.path=void 0,!t.servername&&t.servername!==""&&(t.servername=ii.isIP(t.host)?"":t.host),Ol.connect(t)}function se(t,e,n){t._readyState=B.CLOSING;let r=new Error(n);Error.captureStackTrace(r,se),e.setHeader?(e[ci]=!0,e.abort(),e.socket&&!e.socket.destroyed&&e.socket.destroy(),process.nextTick(bn,t,r)):(e.destroy(r),e.once("error",t.emit.bind(t,"error")),e.once("close",t.emitClose.bind(t)))}function jr(t,e,n){if(e){let r=Rl(e)?e.size:Fl(e).length;t._socket?t._sender._bufferedBytes+=r:t._bufferedAmount+=r}if(n){let r=new Error(`WebSocket is not open: readyState ${t.readyState} (${Pe[t.readyState]})`);process.nextTick(n,r)}}function ql(t,e){let n=this[J];n._closeFrameReceived=!0,n._closeMessage=e,n._closeCode=t,n._socket[J]!==void 0&&(n._socket.removeListener("data",wn),process.nextTick(di,n._socket),t===1005?n.close():n.close(t,e))}function Vl(){let t=this[J];t.isPaused||t._socket.resume()}function Kl(t){let e=this[J];e._socket[J]!==void 0&&(e._socket.removeListener("data",wn),process.nextTick(di,e._socket),e.close(t[Ll])),e._errorEmitted||(e._errorEmitted=!0,e.emit("error",t))}function si(){this[J].emitClose()}function Jl(t,e){this[J].emit("message",t,e)}function Yl(t){let e=this[J];e._autoPong&&e.pong(t,!this._isServer,ai),e.emit("ping",t)}function zl(t){this[J].emit("pong",t)}function di(t){t.resume()}function Xl(t){let e=this[J];e.readyState!==B.CLOSED&&(e.readyState===B.OPEN&&(e._readyState=B.CLOSING,ui(e)),this._socket.end(),e._errorEmitted||(e._errorEmitted=!0,e.emit("error",t)))}function ui(t){t._closeTimer=setTimeout(t._socket.destroy.bind(t._socket),t._closeTimeout)}function pi(){let t=this[J];if(this.removeListener("close",pi),this.removeListener("data",wn),this.removeListener("end",fi),t._readyState=B.CLOSING,!this._readableState.endEmitted&&!t._closeFrameReceived&&!t._receiver._writableState.errorEmitted&&this._readableState.length!==0){let e=this.read(this._readableState.length);t._receiver.write(e)}t._receiver.end(),this[J]=void 0,clearTimeout(t._closeTimer),t._receiver._writableState.finished||t._receiver._writableState.errorEmitted?t.emitClose():(t._receiver.on("error",si),t._receiver.on("finish",si))}function wn(t){this[J]._receiver.write(t)||this.pause()}function fi(){let t=this[J];t._readyState=B.CLOSING,t._receiver.end(),this.end()}function hi(){let t=this[J];this.removeListener("error",hi),this.on("error",ai),t&&(t._readyState=B.CLOSING,this.destroy())}});var bi=U((Gp,yi)=>{"use strict";var Wp=Sn(),{Duplex:Ql}=require("stream");function mi(t){t.emit("close")}function Zl(){!this.destroyed&&this._writableState.finished&&this.destroy()}function _i(t){this.removeListener("error",_i),this.destroy(),this.listenerCount("error")===0&&this.emit("error",t)}function ed(t,e){let n=!0,r=new Ql({...e,autoDestroy:!1,emitClose:!1,objectMode:!1,writableObjectMode:!1});return t.on("message",function(s,i){let a=!i&&r._readableState.objectMode?s.toString():s;r.push(a)||t.pause()}),t.once("error",function(s){r.destroyed||(n=!1,r.destroy(s))}),t.once("close",function(){r.destroyed||r.push(null)}),r._destroy=function(o,s){if(t.readyState===t.CLOSED){s(o),process.nextTick(mi,r);return}let i=!1;t.once("error",function(c){i=!0,s(c)}),t.once("close",function(){i||s(o),process.nextTick(mi,r)}),n&&t.terminate()},r._final=function(o){if(t.readyState===t.CONNECTING){t.once("open",function(){r._final(o)});return}t._socket!==null&&(t._socket._writableState.finished?(o(),r._readableState.endEmitted&&r.destroy()):(t._socket.once("finish",function(){o()}),t.close()))},r._read=function(){t.isPaused&&t.resume()},r._write=function(o,s,i){if(t.readyState===t.CONNECTING){t.once("open",function(){r._write(o,s,i)});return}t.send(o,i)},r.on("end",Zl),r.on("error",_i),r}yi.exports=ed});var Lr=U((Hp,wi)=>{"use strict";var{tokenChars:td}=at();function nd(t){let e=new Set,n=-1,r=-1,o=0;for(o;o<t.length;o++){let i=t.charCodeAt(o);if(r===-1&&td[i]===1)n===-1&&(n=o);else if(o!==0&&(i===32||i===9))r===-1&&n!==-1&&(r=o);else if(i===44){if(n===-1)throw new SyntaxError(`Unexpected character at index ${o}`);r===-1&&(r=o);let a=t.slice(n,r);if(e.has(a))throw new SyntaxError(`The "${a}" subprotocol is duplicated`);e.add(a),n=r=-1}else throw new SyntaxError(`Unexpected character at index ${o}`)}if(n===-1||r!==-1)throw new SyntaxError("Unexpected end of input");let s=t.slice(n,o);if(e.has(s))throw new SyntaxError(`The "${s}" subprotocol is duplicated`);return e.add(s),e}wi.exports={parse:nd}});var Oi=U((Vp,xi)=>{"use strict";var rd=require("events"),kn=require("http"),{Duplex:qp}=require("stream"),{createHash:od}=require("crypto"),Si=_n(),qe=it(),sd=Lr(),id=Sn(),{CLOSE_TIMEOUT:ad,GUID:cd,kWebSocket:ld}=xe(),dd=/^[+/0-9A-Za-z]{22}==$/,ki=0,vi=1,Ii=2,Mr=class extends rd{constructor(e,n){if(super(),e={allowSynchronousEvents:!0,autoPong:!0,maxPayload:100*1024*1024,skipUTF8Validation:!1,perMessageDeflate:!1,handleProtocols:null,clientTracking:!0,closeTimeout:ad,verifyClient:null,noServer:!1,backlog:null,server:null,host:null,path:null,port:null,WebSocket:id,...e},e.port==null&&!e.server&&!e.noServer||e.port!=null&&(e.server||e.noServer)||e.server&&e.noServer)throw new TypeError('One and only one of the "port", "server", or "noServer" options must be specified');if(e.port!=null?(this._server=kn.createServer((r,o)=>{let s=kn.STATUS_CODES[426];o.writeHead(426,{"Content-Length":s.length,"Content-Type":"text/plain"}),o.end(s)}),this._server.listen(e.port,e.host,e.backlog,n)):e.server&&(this._server=e.server),this._server){let r=this.emit.bind(this,"connection");this._removeListeners=ud(this._server,{listening:this.emit.bind(this,"listening"),error:this.emit.bind(this,"error"),upgrade:(o,s,i)=>{this.handleUpgrade(o,s,i,r)}})}e.perMessageDeflate===!0&&(e.perMessageDeflate={}),e.clientTracking&&(this.clients=new Set,this._shouldEmitClose=!1),this.options=e,this._state=ki}address(){if(this.options.noServer)throw new Error('The server is operating in "noServer" mode');return this._server?this._server.address():null}close(e){if(this._state===Ii){e&&this.once("close",()=>{e(new Error("The server is not running"))}),process.nextTick(Nt,this);return}if(e&&this.once("close",e),this._state!==vi)if(this._state=vi,this.options.noServer||this.options.server)this._server&&(this._removeListeners(),this._removeListeners=this._server=null),this.clients?this.clients.size?this._shouldEmitClose=!0:process.nextTick(Nt,this):process.nextTick(Nt,this);else{let n=this._server;this._removeListeners(),this._removeListeners=this._server=null,n.close(()=>{Nt(this)})}}shouldHandle(e){if(this.options.path){let n=e.url.indexOf("?");if((n!==-1?e.url.slice(0,n):e.url)!==this.options.path)return!1}return!0}handleUpgrade(e,n,r,o){n.on("error",Ei);let s=e.headers["sec-websocket-key"],i=e.headers.upgrade,a=+e.headers["sec-websocket-version"];if(e.method!=="GET"){Ve(this,e,n,405,"Invalid HTTP method");return}if(i===void 0||i.toLowerCase()!=="websocket"){Ve(this,e,n,400,"Invalid Upgrade header");return}if(s===void 0||!dd.test(s)){Ve(this,e,n,400,"Missing or invalid Sec-WebSocket-Key header");return}if(a!==13&&a!==8){Ve(this,e,n,400,"Missing or invalid Sec-WebSocket-Version header",{"Sec-WebSocket-Version":"13, 8"});return}if(!this.shouldHandle(e)){Dt(n,400);return}let c=e.headers["sec-websocket-protocol"],l=new Set;if(c!==void 0)try{l=sd.parse(c)}catch{Ve(this,e,n,400,"Invalid Sec-WebSocket-Protocol header");return}let d=e.headers["sec-websocket-extensions"],u={};if(this.options.perMessageDeflate&&d!==void 0){let p=new qe({...this.options.perMessageDeflate,isServer:!0,maxPayload:this.options.maxPayload});try{let f=Si.parse(d);f[qe.extensionName]&&(p.accept(f[qe.extensionName]),u[qe.extensionName]=p)}catch{Ve(this,e,n,400,"Invalid or unacceptable Sec-WebSocket-Extensions header");return}}if(this.options.verifyClient){let p={origin:e.headers[`${a===8?"sec-websocket-origin":"origin"}`],secure:!!(e.socket.authorized||e.socket.encrypted),req:e};if(this.options.verifyClient.length===2){this.options.verifyClient(p,(f,h,g,w)=>{if(!f)return Dt(n,h||401,g,w);this.completeUpgrade(u,s,l,e,n,r,o)});return}if(!this.options.verifyClient(p))return Dt(n,401)}this.completeUpgrade(u,s,l,e,n,r,o)}completeUpgrade(e,n,r,o,s,i,a){if(!s.readable||!s.writable)return s.destroy();if(s[ld])throw new Error("server.handleUpgrade() was called more than once with the same socket, possibly due to a misconfiguration");if(this._state>ki)return Dt(s,503);let l=["HTTP/1.1 101 Switching Protocols","Upgrade: websocket","Connection: Upgrade",`Sec-WebSocket-Accept: ${od("sha1").update(n+cd).digest("base64")}`],d=new this.options.WebSocket(null,void 0,this.options);if(r.size){let u=this.options.handleProtocols?this.options.handleProtocols(r,o):r.values().next().value;u&&(l.push(`Sec-WebSocket-Protocol: ${u}`),d._protocol=u)}if(e[qe.extensionName]){let u=e[qe.extensionName].params,p=Si.format({[qe.extensionName]:[u]});l.push(`Sec-WebSocket-Extensions: ${p}`),d._extensions=e}this.emit("headers",l,o),s.write(l.concat(`\r
|
|
24
24
|
`).join(`\r
|
|
25
25
|
`)),s.removeListener("error",Ei),d.setSocket(s,i,{allowSynchronousEvents:this.options.allowSynchronousEvents,maxPayload:this.options.maxPayload,skipUTF8Validation:this.options.skipUTF8Validation}),this.clients&&(this.clients.add(d),d.on("close",()=>{this.clients.delete(d),this._shouldEmitClose&&!this.clients.size&&process.nextTick(Nt,this)})),a(d,o)}};xi.exports=Mr;function ud(t,e){for(let n of Object.keys(e))t.on(n,e[n]);return function(){for(let r of Object.keys(e))t.removeListener(r,e[r])}}function Nt(t){t._state=Ii,t.emit("close")}function Ei(){this.destroy()}function Dt(t,e,n,r){n=n||kn.STATUS_CODES[e],r={Connection:"close","Content-Type":"text/html","Content-Length":Buffer.byteLength(n),...r},t.once("finish",t.destroy),t.end(`HTTP/1.1 ${e} ${kn.STATUS_CODES[e]}\r
|
|
26
26
|
`+Object.keys(r).map(o=>`${o}: ${r[o]}`).join(`\r
|
|
@@ -31,7 +31,7 @@ Expecting one of '${r.join("', '")}'`);let o=`${e}Help`;return this.on(o,s=>{let
|
|
|
31
31
|
`),process.exit(e.ok?0:1)}var ic=tt(()=>{"use strict";mr()});var qo=S(Ho(),1),{program:rp,createCommand:op,createArgument:sp,createOption:ip,CommanderError:ap,InvalidArgumentError:cp,InvalidOptionArgumentError:lp,Command:Vo,Argument:dp,Option:up,Help:pp}=qo.default;var Pa=require("node:http"),ke=require("node:child_process"),j=require("node:fs"),Ca=require("node:crypto"),Qe=require("node:os"),te=S(require("path"));var bs=S(require("node-pty")),fe=require("node:fs"),ws=S(require("node:path"));var lr=S(cs()),nt=S(require("fs")),It=S(require("path")),ds=S(require("net")),us=require("child_process"),cr=t=>t+`
|
|
32
32
|
`,Ue=t=>t.replace(/[\r\n]+$/,"")+"\r",Fe=[{key:"sh",displayName:"Shell",binary:"sh",checkAuth:async()=>!0,formatInput:cr},{key:"claude",displayName:"Claude Code",binary:"claude",checkAuth:async()=>Et(".claude")||_e("ANTHROPIC_API_KEY"),assignSessionId:!0,spawnArgs:["--dangerously-skip-permissions"],resumeArgs:t=>["--dangerously-skip-permissions","--resume",t],formatInput:Ue,versionDirGlobs:[".local/share/claude/versions/*"]},{key:"codex",displayName:"Codex CLI",binary:"codex",checkAuth:async()=>_e("OPENAI_API_KEY"),spawnArgs:["--full-auto"],formatInput:Ue},{key:"qwen",displayName:"Qwen CLI",binary:"qwen",checkAuth:async()=>Et(".qwen"),assignSessionId:!0,spawnArgs:["--yolo"],resumeArgs:t=>["--resume",t,"--yolo"],formatInput:Ue,versionDirGlobs:[".local/share/qwen/versions/*"]},{key:"gemini",displayName:"Gemini",binary:"gemini",checkAuth:async()=>_e("GEMINI_API_KEY"),spawnArgs:["--approval-mode","yolo"],assignSessionId:!0,resumeArgs:t=>["--approval-mode","yolo","--resume",t],formatInput:Ue},{key:"ollama",displayName:"Ollama",binary:"ollama",checkAuth:async()=>Wc(11434),formatInput:cr},{key:"aider",displayName:"Aider",binary:"aider",checkAuth:async()=>_e("OPENAI_API_KEY")||_e("ANTHROPIC_API_KEY"),formatInput:cr},{key:"kimi",displayName:"Kimi Code",binary:"kimi",checkAuth:async()=>Et(".kimi")||_e("KIMI_API_KEY"),assignSessionId:!0,spawnArgs:["--yolo"],resumeArgs:t=>["-r",t,"--yolo"],formatInput:Ue,versionDirGlobs:[".local/share/uv/tools/kimi-cli/bin",".local/share/kimi/versions/*"]},{key:"forge",displayName:"Forge",binary:"forge",checkAuth:async()=>Et(".forge/.credentials.json")||_e("FORGE_API_KEY"),assignSessionId:!0,resumeArgs:t=>["--conversation-id",t],formatInput:Ue},{key:"opencode",displayName:"OpenCode",binary:"opencode",checkAuth:async()=>Et(".config/opencode")||_e("OPENCODE_API_KEY")||_e("ANTHROPIC_API_KEY")||_e("OPENAI_API_KEY"),formatInput:Ue,versionDirGlobs:[".opencode/bin"],env:{OPENCODE_CONFIG_CONTENT:'{"permission":"allow"}'}}];var ls=process.env.HOME??"/Users/unknown";function en(t){try{let e=(0,us.spawnSync)(t,["--version"],{timeout:5e3});return e.status!==0?void 0:(e.stdout??e.stderr??Buffer.from("")).toString("utf8").split(`
|
|
33
33
|
`)[0].trim()||void 0}catch{return}}function Uc(t){if(!t.versionDirGlobs?.length)return[];let e=[],n=t.versionDirGlobs;for(let r of n){let o=It.default.join(ls,r.replace(/\/\*$/,""));if(r.endsWith("/*")){let s=[];try{s=nt.default.readdirSync(o)}catch{}s.sort((i,a)=>a.localeCompare(i));for(let i of s){let a=It.default.join(o,i,t.binary);if(nt.default.existsSync(a)){let c=en(a);e.push({path:a,version:c})}}}else{let s=It.default.join(ls,r);if(nt.default.existsSync(s)){let i=en(s);e.push({path:s,version:i})}}}return e}async function Fc(t,e={}){if(e[t.key]){let r=e[t.key],o=en(r);if(o)return{path:r,version:o}}try{let r=await(0,lr.default)(t.binary);if(r&&nt.default.existsSync(r)){let o=en(r);if(o!==void 0)return{path:r,version:o}}}catch{}let n=Uc(t);for(let r of n)if(r.version!==void 0)return r;try{let r=await(0,lr.default)(t.binary);if(r)return{path:r}}catch{}throw new Error(`No working binary found for agent '${t.key}'`)}async function dr(t={}){let e=[];for(let n of Fe)try{let{path:r,version:o}=await Fc(n,t),i=await n.checkAuth()?"ok":"missing";e.push({key:n.key,displayName:n.displayName,binaryPath:r,authStatus:i,version:o})}catch{}return console.log("[daemon] agent.detect.done",{found:e.map(n=>n.key),missing:Fe.map(n=>n.key).filter(n=>!e.find(r=>r.key===n))}),e}function Et(t){return nt.default.existsSync(It.default.join(process.env.HOME??"",t))}function _e(t){return!!process.env[t]}async function Wc(t){return new Promise(e=>{let n=ds.default.createConnection(t,"127.0.0.1");n.setTimeout(200),n.on("connect",()=>{n.destroy(),e(!0)}),n.on("error",()=>e(!1)),n.on("timeout",()=>{n.destroy(),e(!1)})})}var ps=new Set(["PATH","HOME","USER","LOGNAME","SHELL","PWD","OLDPWD","SHLVL","TMPDIR","TMP","TEMP","TERM","COLORTERM","LANG","TZ","TERM_PROGRAM","TERM_PROGRAM_VERSION","TERM_SESSION_ID","DISPLAY","WAYLAND_DISPLAY","__CFBundleIdentifier","COMMAND_MODE","ANTHROPIC_API_KEY","OPENAI_API_KEY","GEMINI_API_KEY","KIMI_API_KEY","FORGE_API_KEY","OPENCODE_API_KEY","OLLAMA_HOST","HTTP_MODE","NODE_PATH","NODE_OPTIONS","NODE_ENV","npm_config_global_prefix","npm_config_prefix","npm_config_cache","npm_config_userconfig","PNPM_HOME","BUN_INSTALL","VOLTA_HOME","DENO_INSTALL","DENO_DIR","PYTHONPATH","PYTHONHOME","VIRTUAL_ENV","GOPATH","GOROOT","GOBIN","GOMODCACHE","GOPROXY","CARGO_HOME","RUSTUP_HOME","RUST_BACKTRACE","JAVA_HOME","JDK_HOME","JRE_HOME","ANDROID_HOME","ANDROID_SDK_ROOT","HOMEBREW_PREFIX","HOMEBREW_CELLAR","HOMEBREW_REPOSITORY","EDITOR","VISUAL","PAGER","MANPATH","INFOPATH","DBUS_SESSION_BUS_ADDRESS","XDG_SESSION_TYPE","GIT_AUTHOR_NAME","GIT_AUTHOR_EMAIL","GIT_AUTHOR_DATE","GIT_COMMITTER_NAME","GIT_COMMITTER_EMAIL","GIT_COMMITTER_DATE","RBENV_ROOT","RBENV_VERSION"]),fs=["LC_","XDG_","NVM_","PYENV_","CONDA_","ITERM_"],Gc=[/_KEY$/i,/_(TOKEN|SECRET|PASSWORD|PASSWD|CREDENTIALS?|PRIVATE_KEY|SECRET_KEY|ACCESS_KEY|API_SECRET)$/i,/^(TOKEN|SECRET|PASSWORD|PASSWD|CREDENTIALS?|PRIVATE_KEY|SECRET_KEY|ACCESS_KEY|API_SECRET|KEY)$/i];if(ps.size===0&&fs.length===0)throw new Error("[daemon] env.filter.fail_fast: both ALLOWED_EXACT and ALLOWED_PREFIXES are empty \u2014 env scoping would drop everything. This is a build/config error.");function ur(t){let e={},n=[];for(let[r,o]of Object.entries(t))if(o!==void 0){if(ps.has(r)){e[r]=o;continue}if(r.startsWith("BRIDGE_")){e[r]=o;continue}if(Gc.some(s=>s.test(r))){n.push(r);continue}if(fs.some(s=>r.startsWith(s))){e[r]=o;continue}n.push(r)}return e.PATH||(e.PATH="/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin"),{env:e,dropped:n}}Z();var on=require("node:fs"),ys=S(require("node:path"));Z();var rn=null;function Hc(){return rn!==null||(rn=Ae().lifecycle),rn}function P(t,e={},n="daemon"){let r={ts:Date.now(),event:t,component:n,pid:process.pid,...e},o=process.env.BRIDGE_REQUEST_ID;o&&(r.requestId=o);let s=JSON.stringify(r)+`
|
|
34
|
-
`;try{let i=Hc();(0,on.mkdirSync)(ys.default.dirname(i),{recursive:!0}),(0,on.appendFileSync)(i,s,"utf-8")}catch{}console.log(s.trim())}var sn=class{handles=new Map;nextInstanceId=1;lastErrors=new Map;livenessTimer=null;currentWs=null;setCurrentWs(e){this.currentWs=e}getCurrentWs(){return this.currentWs}startLivenessCheck(e=6e4){this.livenessTimer||(this.livenessTimer=setInterval(()=>{for(let[n,r]of this.handles.entries()){if(r.killed)continue;let o=!1;try{o=process.kill(r.pid,0)}catch{o=!1}o||(console.warn("[daemon] pty.liveness.dead",{agentId:n,pid:r.pid}),this.handles.delete(n),r.onExit(137,"SIGKILL"))}},e),console.log("[daemon] pty.liveness.started",{intervalMs:e}))}stopLivenessCheck(){this.livenessTimer&&(clearInterval(this.livenessTimer),this.livenessTimer=null,console.log("[daemon] pty.liveness.stopped"))}spawn(e,n,r,o,s,i,a,c,l){let d=this.handles.get(e);d&&(console.warn("[daemon] pty.spawn.replace_existing",{agentId:e,oldPid:d.pid,newAgentKey:n}),this.kill(e,!0));let u=Math.max(1,Math.min(500,s)),p=Math.max(1,Math.min(500,i)),f=process.env.BRIDGE_ENV_WHITELIST!=="0",h,g=[];if(f){let m=ur(process.env);h=m.env,g=m.dropped,g.length&&console.debug("[daemon] env.filter",{agentId:e,droppedCount:g.length,dropped:g}),h.HOME===void 0&&console.warn("[daemon] env.filter.no_home",{agentId:e})}else{let m=ur(process.env);m.dropped.length&&console.debug("[daemon] env.filter.shadow",{agentId:e,wouldDrop:m.dropped}),h={...process.env}}let w={...h,TERM:"xterm-256color",COLORTERM:"truecolor"};l?.projectEnv&&Object.assign(w,l.projectEnv);let E=Fe.find(m=>m.key===n);E?.env&&Object.assign(w,E.env),l&&(w.BRIDGE_SERVER_URL=l.serverUrl,w.BRIDGE_TOKEN=l.token,w.BRIDGE_WORKSPACE_ID=l.workspaceId,w.BRIDGE_PROJECT_ID=l.projectId||"");let O=process.env.BRIDGE_MCP_URL;O?w.BRIDGE_MCP_URL=O:delete w.BRIDGE_MCP_URL;let T={name:"xterm-256color",cols:u,rows:p,cwd:l?.cwd,env:w},x;try{x=bs.spawn(r,o,T)}catch(m){let k=m instanceof Error?m.message:String(m);return this.lastErrors.set(e,k),console.error("[daemon] pty.spawn.failed",{agentId:e,agentKey:n,error:k}),!1}let y=this.nextInstanceId++,b={agentId:e,agentKey:n,process:x,pid:x.pid,killed:!1,instanceId:y,onExit:c};x.onData(m=>{let k=this.handles.get(e);!k||k.instanceId!==y||b.killed||a(Buffer.from(m).toString("base64"))}),x.onExit(({exitCode:m,signal:k})=>{let _=this.handles.get(e);!_||_.instanceId!==y||b.killed||b.killed||(this.handles.delete(e),console.log("[daemon] pty.exit",{agentId:e,exitCode:m,signal:k}),c(m??null,k?String(k):null))}),this.lastErrors.delete(e),this.handles.set(e,b);try{let m=xt();(0,fe.mkdirSync)(ws.default.dirname(m),{recursive:!0});let k=x.pid,_=[];if((0,fe.existsSync)(m))try{let v=(0,fe.readFileSync)(m,"utf8");v.trim()&&(_=JSON.parse(v)),Array.isArray(_)||(_=[])}catch{_=[]}_.push({agentId:e,agentKey:n,pid:x.pid,pgid:k,startedAt:Date.now(),daemonPid:process.pid});let I=m+".tmp";(0,fe.writeFileSync)(I,JSON.stringify(_),"utf-8"),(0,fe.renameSync)(I,m)}catch{}return console.log("[daemon] pty.spawn.success",{agentId:e,agentKey:n,args:o,cwd:l?.cwd}),!0}write(e,n,r){let o=this.handles.get(e);if(!o)return console.warn("[daemon] pty.write.no_handle",{agentId:e.slice(-8),source:r,dataLength:n.length}),!1;let s=Buffer.from(n,"base64").toString(),i=Fe.find(c=>c.key===o.agentKey),a=r==="orchestrator"&&i?.formatInput?i.formatInput(s):s;return o.process.write(a),!0}kill(e,n=!1){let r=this.handles.get(e);if(!r)return;r.killed=!0,this.handles.delete(e);let o=r.pid;if(n){try{process.kill(-o,"SIGTERM")}catch{r.process.kill()}setTimeout(()=>{try{process.kill(-o,"SIGKILL")}catch{}},2e3)}else try{process.kill(-o,"SIGTERM")}catch{r.process.kill()}console.log("[daemon] pty.kill",{agentId:e,force:n})}resize(e,n,r){let o=this.handles.get(e);if(!o)return;let s=Math.max(1,Math.min(500,n)),i=Math.max(1,Math.min(500,r));o.process.resize(s,i)}getLastError(e){return this.lastErrors.get(e)}killAll(){try{(0,fe.writeFileSync)(xt(),"","utf-8")}catch{}for(let e of this.handles.values())try{process.kill(-e.pid,"SIGTERM")}catch{e.process.kill()}this.handles.clear(),P("lifecycle.killAll.complete",{component:"daemon"})}getLiveAgentIds(){return[...this.handles.keys()]}getAgentKey(e){return this.handles.get(e)?.agentKey}};mr();var pd=S(bi(),1),fd=S(_n(),1),hd=S(it(),1),gd=S(Or(),1),md=S(Cr(),1),_d=S(Lr(),1),Ti=S(Sn(),1),yd=S(Oi(),1);var A=Ti.default;var R=S(require("fs")),qt=require("node:fs/promises"),C=S(require("path")),L=S(require("os")),mt=require("node:child_process"),_t=require("node:crypto");var $r=["claude","codex","qwen","kimi","forge","opencode","gemini"];var vn=["developer","reviewer","planner","executor","shell","runner","orchestrator"],Jp=vn.filter(t=>t!=="orchestrator"),Yp=[...vn,"system"];var Pi=t=>t;var Ci=t=>t,Ai=t=>t,Ri=3e3;function Br(t){return(process.env.JERICO_FEATURES??"").split(",").map(n=>n.trim()).filter(Boolean).includes(t)}var Ni={developer:`# Bridge Worker \u2014 Developer Role
|
|
34
|
+
`;try{let i=Hc();(0,on.mkdirSync)(ys.default.dirname(i),{recursive:!0}),(0,on.appendFileSync)(i,s,"utf-8")}catch{}console.log(s.trim())}var sn=class{handles=new Map;nextInstanceId=1;lastErrors=new Map;livenessTimer=null;currentWs=null;tombstone=new Set;tombstoneRejected=0;setCurrentWs(e){this.currentWs=e}getCurrentWs(){return this.currentWs}startLivenessCheck(e=6e4){this.livenessTimer||(this.livenessTimer=setInterval(()=>{for(let[n,r]of this.handles.entries()){if(r.killed)continue;let o=!1;try{o=process.kill(r.pid,0)}catch{o=!1}o||(console.warn("[daemon] pty.liveness.dead",{agentId:n,pid:r.pid}),this.handles.delete(n),r.onExit(137,"SIGKILL"))}},e),console.log("[daemon] pty.liveness.started",{intervalMs:e}))}stopLivenessCheck(){this.livenessTimer&&(clearInterval(this.livenessTimer),this.livenessTimer=null,console.log("[daemon] pty.liveness.stopped"))}spawn(e,n,r,o,s,i,a,c,l){let d=this.handles.get(e);d&&(console.warn("[daemon] pty.spawn.replace_existing",{agentId:e,oldPid:d.pid,newAgentKey:n}),this.kill(e,!0));let u=Math.max(1,Math.min(500,s)),p=Math.max(1,Math.min(500,i)),f=process.env.BRIDGE_ENV_WHITELIST!=="0",h,g=[];if(f){let m=ur(process.env);h=m.env,g=m.dropped,g.length&&console.debug("[daemon] env.filter",{agentId:e,droppedCount:g.length,dropped:g}),h.HOME===void 0&&console.warn("[daemon] env.filter.no_home",{agentId:e})}else{let m=ur(process.env);m.dropped.length&&console.debug("[daemon] env.filter.shadow",{agentId:e,wouldDrop:m.dropped}),h={...process.env}}let w={...h,TERM:"xterm-256color",COLORTERM:"truecolor"};l?.projectEnv&&Object.assign(w,l.projectEnv);let E=Fe.find(m=>m.key===n);E?.env&&Object.assign(w,E.env),l&&(w.BRIDGE_SERVER_URL=l.serverUrl,w.BRIDGE_TOKEN=l.token,w.BRIDGE_WORKSPACE_ID=l.workspaceId,w.BRIDGE_PROJECT_ID=l.projectId||"");let O=process.env.BRIDGE_MCP_URL;O?w.BRIDGE_MCP_URL=O:delete w.BRIDGE_MCP_URL;let T={name:"xterm-256color",cols:u,rows:p,cwd:l?.cwd,env:w},x;try{x=bs.spawn(r,o,T)}catch(m){let k=m instanceof Error?m.message:String(m);return this.lastErrors.set(e,k),console.error("[daemon] pty.spawn.failed",{agentId:e,agentKey:n,error:k}),!1}let y=this.nextInstanceId++,b={agentId:e,agentKey:n,process:x,pid:x.pid,killed:!1,instanceId:y,onExit:c};x.onData(m=>{let k=this.handles.get(e);!k||k.instanceId!==y||b.killed||a(Buffer.from(m).toString("base64"))}),x.onExit(({exitCode:m,signal:k})=>{let _=this.handles.get(e);!_||_.instanceId!==y||b.killed||b.killed||(this.handles.delete(e),console.log("[daemon] pty.exit",{agentId:e,exitCode:m,signal:k}),c(m??null,k?String(k):null))}),this.lastErrors.delete(e),this.handles.set(e,b);try{let m=xt();(0,fe.mkdirSync)(ws.default.dirname(m),{recursive:!0});let k=x.pid,_=[];if((0,fe.existsSync)(m))try{let v=(0,fe.readFileSync)(m,"utf8");v.trim()&&(_=JSON.parse(v)),Array.isArray(_)||(_=[])}catch{_=[]}_.push({agentId:e,agentKey:n,pid:x.pid,pgid:k,startedAt:Date.now(),daemonPid:process.pid});let I=m+".tmp";(0,fe.writeFileSync)(I,JSON.stringify(_),"utf-8"),(0,fe.renameSync)(I,m)}catch{}return console.log("[daemon] pty.spawn.success",{agentId:e,agentKey:n,args:o,cwd:l?.cwd}),!0}write(e,n,r){let o=this.handles.get(e);if(!o)return this.tombstone.has(e)?(this.tombstoneRejected++,!1):(console.warn("[daemon] pty.write.no_handle",{agentId:e.slice(-8),source:r,dataLength:n.length}),!1);let s=Buffer.from(n,"base64").toString(),i=Fe.find(c=>c.key===o.agentKey),a=r==="orchestrator"&&i?.formatInput?i.formatInput(s):s;return o.process.write(a),!0}kill(e,n=!1){let r=this.handles.get(e);if(!r)return;r.killed=!0,this.handles.delete(e),this.tombstone.add(e);let o=r.pid;if(n){try{process.kill(-o,"SIGTERM")}catch{r.process.kill()}setTimeout(()=>{try{process.kill(-o,"SIGKILL")}catch{}},2e3)}else try{process.kill(-o,"SIGTERM")}catch{r.process.kill()}r.onExit(null,"SIGTERM"),console.log("[daemon] pty.kill",{agentId:e,force:n})}resize(e,n,r){let o=this.handles.get(e);if(!o)return;let s=Math.max(1,Math.min(500,n)),i=Math.max(1,Math.min(500,r));o.process.resize(s,i)}getLastError(e){return this.lastErrors.get(e)}killAll(){try{(0,fe.writeFileSync)(xt(),"","utf-8")}catch{}for(let e of this.handles.values())try{process.kill(-e.pid,"SIGTERM")}catch{e.process.kill()}this.handles.clear(),P("lifecycle.killAll.complete",{component:"daemon"})}getLiveAgentIds(){return[...this.handles.keys()]}getAgentKey(e){return this.handles.get(e)?.agentKey}};mr();var pd=S(bi(),1),fd=S(_n(),1),hd=S(it(),1),gd=S(Or(),1),md=S(Cr(),1),_d=S(Lr(),1),Ti=S(Sn(),1),yd=S(Oi(),1);var A=Ti.default;var R=S(require("fs")),qt=require("node:fs/promises"),C=S(require("path")),L=S(require("os")),mt=require("node:child_process"),_t=require("node:crypto");var $r=["claude","codex","qwen","kimi","forge","opencode","gemini"];var vn=["developer","reviewer","planner","executor","shell","runner","orchestrator"],Jp=vn.filter(t=>t!=="orchestrator"),Yp=[...vn,"system"];var Pi=t=>t;var Ci=t=>t,Ai=t=>t,Ri=3e3;function Br(t){return(process.env.JERICO_FEATURES??"").split(",").map(n=>n.trim()).filter(Boolean).includes(t)}var Ni={developer:`# Bridge Worker \u2014 Developer Role
|
|
35
35
|
|
|
36
36
|
You are a **Developer** worker in a multi-agent orchestration system called Bridge.
|
|
37
37
|
|
|
@@ -387,7 +387,7 @@ session. You may call bridge_get_role_prompt again at any time to refresh.
|
|
|
387
387
|
|
|
388
388
|
If bridge_get_role_prompt is unavailable, fall back to default behavior for role=${t}.`}var Mi=S(require("os"));async function Fr(){return Mi.default.platform()!=="darwin"?null:{key:"sim_ios",displayName:"iOS Simulator",binaryPath:"xcrun",authStatus:"ok"}}var je=require("child_process"),Gr=require("fs/promises"),Wi=require("crypto"),pt=S(require("fs")),In=S(require("path")),Hr=S(require("os"));var jt=require("child_process"),$i=require("fs/promises"),Bi=S(require("path")),Ui=S(require("os"));async function wd(){return new Promise(t=>{let e=(0,jt.spawn)("xcrun",["simctl","list","devices","booted","--json"],{timeout:5e3}),n="";e.stdout.on("data",r=>{n+=r.toString("utf8")}),e.on("close",r=>{if(r!==0){t(null);return}try{let o=JSON.parse(n);for(let s of Object.values(o.devices)){let i=s.find(a=>a.state==="Booted");if(i){t(i.udid);return}}t(null)}catch{t(null)}}),e.on("error",()=>t(null))})}async function Sd(){return new Promise(t=>{let e=(0,jt.spawn)("xcrun",["simctl","list","devices","available","--json"],{timeout:5e3}),n="";e.stdout.on("data",r=>{n+=r.toString("utf8")}),e.on("close",r=>{if(r!==0){t([]);return}try{let o=JSON.parse(n),s=[];for(let[i,a]of Object.entries(o.devices)){for(let c of a){let l=i.replace(/^com\.apple\.CoreSimulator\.SimRuntime\./,"").replace(/-/g,".");if(s.push(`${c.name} (${l})`),s.length>=3)break}if(s.length>=3)break}t(s)}catch{t([])}}),e.on("error",()=>t([]))})}async function Wr(t){let e=[],n=null,r=await new Promise(s=>{let i=(0,jt.spawn)("xcrun",["simctl","help"],{timeout:2e3});i.on("close",a=>s(a===0)),i.on("error",()=>s(!1)),i.stdout?.resume(),i.stderr?.resume()});e.push({id:"xcrun_exists",status:r?"pass":"fail",label:"Xcode CLI tools",detail:r?void 0:"Xcode command-line tools not found. Install them to use the iOS Simulator panel.",fixCmd:r?void 0:"xcode-select --install"});let o=!1;if(r){let s=Bi.default.join(Ui.default.homedir(),".local/bin/idb");o=await(0,$i.access)(s).then(()=>!0).catch(()=>!1)}if(e.push({id:"idb_present",status:o?"pass":"fail",label:"idb",detail:o?void 0:"idb not found at ~/.local/bin/idb. Required for simulator automation.",fixCmd:o?void 0:"pip3 install fb-idb && brew install facebook/fb/idb-companion"}),r){let s=await new Promise(i=>{let a=(0,jt.spawn)("xcrun",["simctl","list","--json"],{timeout:5e3});a.on("close",c=>i(c===0)),a.on("error",()=>i(!1)),a.stdout?.resume(),a.stderr?.resume()});if(e.push({id:"simctl_ok",status:s?"pass":"fail",label:"simctl",detail:s?void 0:"simctl is not responding. Xcode may not be fully installed.",fixCmd:s?void 0:"sudo xcode-select --reset"}),s)if(n=await wd(),n)e.push({id:"booted_simulator",status:"pass",label:"Booted simulator"});else{let i=await Sd();e.push({id:"booted_simulator",status:"fail",label:"Booted simulator",detail:i.length>0?`No simulator is booted. Available: ${i.join(", ")}. Open Simulator.app and boot one.`:"No simulator is booted and no devices found. Open Xcode \u2192 Window \u2192 Devices and Simulators to add one.",fixCmd:"open -a Simulator"})}else e.push({id:"booted_simulator",status:"fail",label:"Booted simulator",detail:"Skipped \u2014 previous check failed"})}else e.push({id:"simctl_ok",status:"fail",label:"simctl",detail:"Skipped \u2014 previous check failed"}),e.push({id:"booted_simulator",status:"fail",label:"Booted simulator",detail:"Skipped \u2014 previous check failed"});return{checks:e,udid:n}}var qr=In.default.join(Hr.default.homedir(),".local/bin/idb");async function Fi(t){try{let e=await new Promise((s,i)=>{let a=(0,je.spawn)(qr,["describe","--udid",t,"--json"],{timeout:1e4}),c="",l="";a.stdout.on("data",d=>{c+=d.toString("utf8")}),a.stderr.on("data",d=>{l+=d.toString("utf8")}),a.on("close",d=>{d!==0?i(new Error(l||`idb exited ${d}`)):s(c)}),a.on("error",d=>i(d))}),n=JSON.parse(e),r=n.screen_dimensions?.width_points,o=n.screen_dimensions?.height_points;if(Number.isFinite(r)&&Number.isFinite(o))return{width:r,height:o}}catch(e){console.warn("[daemon] simulator.metadata.error",{udid:t,error:String(e)})}return{}}function kd(t,e,n){let r=Buffer.from(t,"utf-8"),o=Buffer.allocUnsafe(1+r.length+4);return o.writeUInt8(r.length,0),r.copy(o,1),o.writeUInt16BE(Math.max(0,Math.min(65535,e)),1+r.length),o.writeUInt16BE(Math.max(0,Math.min(65535,n)),1+r.length+2),o}function vd(t,e){let n=`/tmp/sim_frame_${e}.png`,r=`/tmp/sim_frame_${e}.jpg`;return new Promise(o=>{let s=(0,je.spawn)("xcrun",["simctl","io",t,"screenshot",n],{stdio:["ignore","ignore","ignore"]});s.on("close",async i=>{if(i!==0){o(null);return}try{await new Promise((a,c)=>{let l=(0,je.spawn)("sips",["-s","format","jpeg",n,"--out",r],{stdio:["ignore","ignore","ignore"]});l.on("close",d=>d===0?a():c(new Error(`sips exited ${d}`))),l.on("error",d=>c(d))}),o(await(0,Gr.readFile)(r))}catch{try{o(await(0,Gr.readFile)(n))}catch{o(null)}}}),s.on("error",()=>o(null))})}function En(t,e){return new Promise((n,r)=>{let o=(0,je.spawn)(qr,[...e,"--udid",t],{timeout:15e3}),s="";o.stderr.on("data",i=>{s+=i.toString("utf8")}),o.on("close",i=>{i!==0?r(new Error(s||`idb exited ${i}`)):n()}),o.on("error",i=>r(i))})}var xn=class{sessions=new Map;pendingSubscriptions=new Set;pendingUdids=new Map;pendingDaemonBootedUdids=new Set;bootedUdidsByAgent=new Map;ws=null;daemonId;installProc=new Map;cancelledInstalls=new Set;constructor(e){this.daemonId=e}updateWs(e){this.ws=e}async start(e){if(this.sessions.has(e)){console.warn("[daemon] simulator.start: session already exists",{agentId:e});return}let{checks:n,udid:r}=await Wr(e);if(this.sendSimHealth(e,n),n.find(u=>u.status==="fail")){if(this.bootedUdidsByAgent.has(e)){let u=this.bootedUdidsByAgent.get(e);this.pendingDaemonBootedUdids.delete(u),this.bootedUdidsByAgent.delete(e)}return}if(!r){this.sendError(e,"SPAWN_FAILED","No booted iOS simulator found");return}let s=[...this.sessions.values()].find(u=>u.udid===r);if(s){this.sendError(e,"DUPLICATE_SIMULATOR",`Simulator already attached as agent ${s.agentId}`,{existingAgentId:s.agentId,udid:r});return}let i=this.pendingUdids.get(r);if(i&&i!==e){this.sendError(e,"DUPLICATE_SIMULATOR",`Simulator already being attached as agent ${i}`,{existingAgentId:i,udid:r});return}this.pendingUdids.set(r,e);let a=this.pendingSubscriptions.has(e);this.pendingSubscriptions.delete(e);let c=await Fi(r);c.width!=null&&c.height!=null&&console.log("[daemon] simulator.metadata",{agentId:e,udid:r,logicalWidth:c.width,logicalHeight:c.height});let l=this.pendingDaemonBootedUdids.has(r);l&&(this.pendingDaemonBootedUdids.delete(r),this.bootedUdidsByAgent.delete(e));let d={agentId:e,udid:r,frameInterval:null,capturing:!1,subscribed:a,logicalWidth:c.width,logicalHeight:c.height,lastDescribeAt:Date.now(),daemonBooted:l};if(this.sessions.set(e,d),this.pendingUdids.delete(r),d.frameInterval=setInterval(async()=>{if(!(!d.subscribed||d.capturing)&&!(!this.ws||this.ws.bufferedAmount>256*1024)){d.capturing=!0;try{Date.now()-d.lastDescribeAt>=5e3&&(d.lastDescribeAt=Date.now(),Fi(r).then(p=>{p.width!=null&&p.height!=null&&(p.width!==d.logicalWidth||p.height!==d.logicalHeight)&&(console.log("[daemon] simulator.metadata.update",{agentId:e,udid:r,from:{logicalWidth:d.logicalWidth,logicalHeight:d.logicalHeight},to:p}),d.logicalWidth=p.width,d.logicalHeight=p.height)}).catch(()=>{}));let u=await vd(r,e);if(u&&this.ws&&this.ws.readyState===A.OPEN){let p=d.logicalWidth??0,f=d.logicalHeight??0,h=kd(e,p,f);this.ws.send(Buffer.concat([h,u]),{binary:!0})}}catch(u){console.error("[daemon] simulator.capture.error",{agentId:e,error:String(u)})}finally{d.capturing=!1}}},200),this.ws&&this.ws.readyState===A.OPEN){let u=(0,Wi.randomUUID)();this.ws.send(JSON.stringify({type:"session_started",agentId:e,sessionId:u})),this.ws.send(JSON.stringify({type:"agent_spawned",agentId:e,agentKey:"sim_ios",daemonId:this.daemonId}))}console.log("[daemon] simulator.started",{agentId:e,udid:r})}stop(e){let n=this.installProc.get(e);n&&(console.log("[daemon] simulator.install.cancelled",{agentId:e}),this.cancelledInstalls.add(e),n.kill("SIGTERM"),this.installProc.delete(e));let r=this.sessions.get(e);if(!r){for(let[i,a]of this.pendingUdids)if(a===e){this.pendingUdids.delete(i);break}return}r.frameInterval&&clearInterval(r.frameInterval);let o=r.udid,s=r.daemonBooted;this.sessions.delete(e),this.pendingUdids.delete(o),this.ws&&this.ws.readyState===A.OPEN&&this.ws.send(JSON.stringify({type:"exit",agentId:e,exitCode:0,signal:null})),console.log("[daemon] simulator.stop",{agentId:e,udid:o,daemonBooted:s}),s&&(0,je.spawn)("xcrun",["simctl","shutdown",o],{stdio:"ignore"}).on("error",i=>console.warn("[daemon] simulator.shutdown.error",{udid:o,err:String(i)}))}stopAll(){for(let e of[...this.installProc.keys()])this.stop(e);for(let e of[...this.sessions.keys()])this.stop(e)}subscribe(e){let n=this.sessions.get(e);n&&(n.subscribed=!0)}unsubscribe(e){let n=this.sessions.get(e);n&&(n.subscribed=!1)}async handle(e){let n=this.sessions.get(e.agentId);if(e.type==="sim_subscribe"){n?this.subscribe(e.agentId):this.pendingSubscriptions.add(e.agentId);return}if(e.type==="sim_unsubscribe"){this.pendingSubscriptions.delete(e.agentId),n&&this.unsubscribe(e.agentId);return}if(e.type==="sim_healthcheck"){let{checks:r}=await Wr(e.agentId);this.sendSimHealth(e.agentId,r);return}if(e.type==="sim_install_run"){await this.handleSimInstallRun(e.agentId);return}if(e.type==="sim_install_cancel"){this.handleSimInstallCancel(e.agentId);return}if(!n){console.warn("[daemon] simulator.handle: no session",{agentId:e.agentId,type:e.type});return}try{switch(e.type){case"sim_tap":{await En(n.udid,["ui","tap",String(e.x),String(e.y)]);break}case"sim_swipe":{await En(n.udid,["ui","swipe",String(e.x1),String(e.y1),String(e.x2),String(e.y2),"--duration",String(e.duration??.5)]);break}case"sim_key":{await En(n.udid,["ui","text",e.key]);break}case"sim_button":{console.log("[daemon] simulator.button.start",{agentId:e.agentId,button:e.button,udid:n.udid}),await En(n.udid,["ui","button",e.button]),console.log("[daemon] simulator.button.done",{agentId:e.agentId,button:e.button});break}case"sim_get_source":{let r=await new Promise((o,s)=>{let i=(0,je.spawn)(qr,["ui","describe-all","--udid",n.udid],{timeout:15e3}),a="",c="";i.stdout.on("data",l=>{a+=l.toString("utf8")}),i.stderr.on("data",l=>{c+=l.toString("utf8")}),i.on("close",l=>{l!==0?s(new Error(c||`idb exited ${l}`)):o(a)}),i.on("error",l=>s(l))});this.ws&&this.ws.readyState===A.OPEN&&this.ws.send(JSON.stringify({type:"sim_source",agentId:e.agentId,source:r}));break}}}catch(r){console.error("[daemon] simulator.handle.error",{agentId:e.agentId,type:e.type,error:String(r)})}}sendError(e,n,r,o){this.ws&&this.ws.readyState===A.OPEN&&this.ws.send(JSON.stringify({type:"error",code:n,message:r,agentId:e,...o}))}sendSimHealth(e,n){this.ws&&this.ws.readyState===A.OPEN&&this.ws.send(JSON.stringify({type:"sim_health",agentId:e,checks:n}))}resolveSimInstallScript(){let e=process.env.BRIDGE_SIM_INSTALL_SCRIPT;if(e)return e;let n=In.default.join(Hr.default.homedir(),".bridge/install-sim-prereqs.sh");if(pt.default.existsSync(n))return n;let r=In.default.join(__dirname,"../../../scripts/install-sim-prereqs.sh");return pt.default.existsSync(r)?r:null}async handleSimInstallRun(e){if(this.installProc.has(e)){this.sendInstallProgress(e,{step:"error",error:"already installing"});return}this.cancelledInstalls.delete(e);let n=this.resolveSimInstallScript();if(!n){this.sendInstallProgress(e,{step:"error",error:"install script not found"});return}try{pt.default.accessSync(n,pt.default.constants.F_OK|pt.default.constants.X_OK)}catch{this.sendInstallProgress(e,{step:"error",error:`install script not found at ${n}`});return}let r=(0,je.spawn)("bash",["-lc",n],{timeout:6e5});this.installProc.set(e,r);let o="pre_check",s="",i="";r.stdout?.on("data",a=>{s+=a.toString("utf8");let c;for(;(c=s.indexOf(`
|
|
389
389
|
`))!==-1;){let l=s.slice(0,c);if(s=s.slice(c+1),!!l)if(l.startsWith("STEP:"))o=l.slice(5).trim(),this.sendInstallProgress(e,{step:o});else if(l.startsWith("BOOTED_UDID:")){let d=l.slice(12).trim();this.pendingDaemonBootedUdids.add(d),this.bootedUdidsByAgent.set(e,d)}else this.sendInstallProgress(e,{stream:"stdout",line:l})}}),r.stderr?.on("data",a=>{i+=a.toString("utf8");let c;for(;(c=i.indexOf(`
|
|
390
|
-
`))!==-1;){let l=i.slice(0,c);i=i.slice(c+1),l&&this.sendInstallProgress(e,{stream:"stderr",line:l})}}),r.on("close",a=>{if(this.installProc.delete(e),a!==0){let l=this.bootedUdidsByAgent.get(e);l&&(this.pendingDaemonBootedUdids.delete(l),this.bootedUdidsByAgent.delete(e))}if(s){let l=s;s="",l.startsWith("STEP:")?(o=l.slice(5).trim(),this.sendInstallProgress(e,{step:o})):this.sendInstallProgress(e,{stream:"stdout",line:l})}if(i){let l=i;i="",this.sendInstallProgress(e,{stream:"stderr",line:l})}let c=this.cancelledInstalls.has(e);this.cancelledInstalls.delete(e),!c&&(a===0?this.sendInstallProgress(e,{step:"done",exitCode:0}):this.sendInstallProgress(e,{step:"error",exitCode:a??void 0,error:`install script exited with code ${a}`}))}),r.on("error",a=>{this.installProc.delete(e);let c=this.bootedUdidsByAgent.get(e);c&&(this.pendingDaemonBootedUdids.delete(c),this.bootedUdidsByAgent.delete(e));let l=this.cancelledInstalls.has(e);this.cancelledInstalls.delete(e),!l&&this.sendInstallProgress(e,{step:"error",error:String(a)})})}handleSimInstallCancel(e){let n=this.installProc.get(e);if(!n)return;this.cancelledInstalls.add(e);let r=this.bootedUdidsByAgent.get(e);r&&(this.pendingDaemonBootedUdids.delete(r),this.bootedUdidsByAgent.delete(e)),n.kill("SIGTERM"),this.installProc.delete(e),this.sendInstallProgress(e,{step:"error",error:"cancelled by user"})}sendInstallProgress(e,n){this.ws&&this.ws.readyState===A.OPEN&&this.ws.send(JSON.stringify({type:"sim_install_progress",agentId:e,...n}))}};Ke();Z();function ie(){return"0.13.
|
|
390
|
+
`))!==-1;){let l=i.slice(0,c);i=i.slice(c+1),l&&this.sendInstallProgress(e,{stream:"stderr",line:l})}}),r.on("close",a=>{if(this.installProc.delete(e),a!==0){let l=this.bootedUdidsByAgent.get(e);l&&(this.pendingDaemonBootedUdids.delete(l),this.bootedUdidsByAgent.delete(e))}if(s){let l=s;s="",l.startsWith("STEP:")?(o=l.slice(5).trim(),this.sendInstallProgress(e,{step:o})):this.sendInstallProgress(e,{stream:"stdout",line:l})}if(i){let l=i;i="",this.sendInstallProgress(e,{stream:"stderr",line:l})}let c=this.cancelledInstalls.has(e);this.cancelledInstalls.delete(e),!c&&(a===0?this.sendInstallProgress(e,{step:"done",exitCode:0}):this.sendInstallProgress(e,{step:"error",exitCode:a??void 0,error:`install script exited with code ${a}`}))}),r.on("error",a=>{this.installProc.delete(e);let c=this.bootedUdidsByAgent.get(e);c&&(this.pendingDaemonBootedUdids.delete(c),this.bootedUdidsByAgent.delete(e));let l=this.cancelledInstalls.has(e);this.cancelledInstalls.delete(e),!l&&this.sendInstallProgress(e,{step:"error",error:String(a)})})}handleSimInstallCancel(e){let n=this.installProc.get(e);if(!n)return;this.cancelledInstalls.add(e);let r=this.bootedUdidsByAgent.get(e);r&&(this.pendingDaemonBootedUdids.delete(r),this.bootedUdidsByAgent.delete(e)),n.kill("SIGTERM"),this.installProc.delete(e),this.sendInstallProgress(e,{step:"error",error:"cancelled by user"})}sendInstallProgress(e,n){this.ws&&this.ws.readyState===A.OPEN&&this.ws.send(JSON.stringify({type:"sim_install_progress",agentId:e,...n}))}};Ke();Z();function ie(){return"0.13.8"}var eo=require("fs"),Zr=S(require("path")),ea=S(require("os"));var Zi=require("node:fs"),Pn=class{cache=new Map;get(e,n){let r=this.cache.get(e);if(r&&r.mtimeMs===n.mtimeMs&&r.size===n.size)return r.value}set(e,n,r){this.cache.set(e,{mtimeMs:n.mtimeMs,size:n.size,value:r})}invalidate(e){this.cache.delete(e)}clear(){this.cache.clear()}prune(e){for(let n of this.cache.keys())e.has(n)||this.cache.delete(n)}prunePrefix(e,n){for(let r of this.cache.keys())r.startsWith(e)&&!n.has(r)&&this.cache.delete(r)}get size(){return this.cache.size}},V=new Pn,Xf=new Pn;async function ae(t){try{let e=await Zi.promises.stat(t);return{mtimeMs:e.mtimeMs,size:e.size}}catch{return null}}function Se(){return new Promise(t=>setImmediate(t))}var Od=2e5,Td="ctx:";async function Pd(t){let e=Zr.default.join(ea.default.homedir(),".claude","projects");try{let n=await eo.promises.readdir(e,{withFileTypes:!0});for(let r of n){if(!r.isDirectory())continue;let o=Zr.default.join(e,r.name,`${t}.jsonl`);if(await ae(o))return o}}catch{}}async function Cd(t,e){let n=await ae(t);if(!n)return null;let r=Td+t,o=V.get(r,n);if(o!==void 0)return o;await Se();try{let i=(await eo.promises.readFile(t,"utf-8")).trim().split(`
|
|
391
391
|
`);for(let a=i.length-1;a>=0;a--){let c=i[a]?.trim();if(c)try{let l=JSON.parse(c),d=l.message?.usage??l.usage;if(!d||typeof d!="object")continue;let u=d,p=(u.input_tokens??0)+(u.cache_creation_input_tokens??0)+(u.cache_read_input_tokens??0);if(p===0)continue;let h={usedPct:Math.min(100,Math.round(p/Od*100)),usedTokens:p};return V.set(r,n,h),h}catch{continue}}}catch{}return null}function to(t,e,n){let r,o=-1,s=!0,i=async()=>{if(s)try{if(r||(r=await Pd(e)),!r)return;let l=await Cd(r,o);if(!l||l.usedTokens===o)return;o=l.usedTokens,s&&n(t,l.usedPct,l.usedTokens)}catch{}},a=setTimeout(()=>{i()},5e3),c=setInterval(()=>{i()},6e4);return()=>{s=!1,clearTimeout(a),clearInterval(c)}}var $t=require("fs"),Cn=S(require("path")),oa=S(require("os"));Z();var ta=300*60*1e3,no={free:10,pro:40,max_5x:200,max_20x:200};function Bt(){let t=Q();try{let{statSync:e,readFileSync:n}=require("fs");if(!e(t,{throwIfNoEntry:!1}))return"pro";let o=JSON.parse(n(t,"utf-8")).claudeTier;if(typeof o=="string"&&o in no)return o}catch{}return"pro"}function Ad(t){if(!Array.isArray(t))return!1;for(let e of t)if(e&&typeof e=="object"&&e.type==="tool_result")return!0;return!1}var na="quota:";async function ra(){let t=Cn.default.join(oa.default.homedir(),".claude","projects"),n=Date.now()-ta,r=1/0,o=0,s=new Set;try{let a=await $t.promises.readdir(t,{withFileTypes:!0});for(let c of a){if(!c.isDirectory())continue;let l=Cn.default.join(t,c.name),d;try{d=(await $t.promises.readdir(l,{withFileTypes:!0})).filter(p=>p.isFile()&&p.name.endsWith(".jsonl")).map(p=>p.name)}catch{continue}for(let u of d){let p=Cn.default.join(l,u),f=await ae(p);if(!f)continue;await Se();let h=na+p;s.add(h);let g=V.get(h,f);if(g!==void 0){for(let x of g.events)x.epoch>=n&&(o++,x.epoch<r&&(r=x.epoch));continue}let w;try{if(f.size>20*1024*1024){let y=Math.max(0,f.size-10485760),b=await $t.promises.open(p,"r");try{let m=Buffer.alloc(f.size-y);await b.read(m,0,m.length,y);let k=m.toString("utf-8"),_=k.indexOf(`
|
|
392
392
|
`);w=_>=0?k.slice(_+1):k}finally{await b.close()}}else w=await $t.promises.readFile(p,"utf-8")}catch{continue}let E=0,O=1/0,T=[];for(let x of w.split(`
|
|
393
393
|
`)){let y=x.trim();if(y)try{let b=JSON.parse(y);if(b.type!=="user")continue;let m=b.message;if(m?.role!=="user"||b.userType!==void 0&&b.userType!=="external"||Ad(m?.content)||b.isSidechain===!0||b.isMeta===!0)continue;let k=b.timestamp;if(typeof k!="string")continue;let _=Date.parse(k);if(isNaN(_)||_<n)continue;E++,T.push({epoch:_}),_<O&&(O=_)}catch{continue}}o+=E,O<r&&(r=O),V.set(h,f,{events:T})}}}catch{}V.prunePrefix(na,s);let i=isFinite(r)?r+ta:0;return{prompts5h:o,resetAt:i}}function sa(t){let e=!0,n=async()=>{if(e)try{let s=Bt(),i=no[s]??40,{prompts5h:a,resetAt:c}=await ra();e&&t({prompts5h:a,limit5h:i,resetAt:c,tier:s})}catch(s){console.warn("[claude-quota] poll failed",s)}};oo(async()=>{if(e)try{let s=Bt(),i=no[s]??40,{prompts5h:a,resetAt:c}=await ra();e&&t({prompts5h:a,limit5h:i,resetAt:c,tier:s})}catch{}});let r=setTimeout(()=>{n()},5e3),o=setInterval(()=>{n()},6e4);return()=>{e=!1,clearTimeout(r),clearInterval(o)}}var ro=null;function ia(){if(ro)try{ro()}catch{}}function oo(t){ro=t}var Ut=require("fs"),Ft=S(require("path")),so=S(require("os"));var aa=300*60*1e3,la={coding_plan:6e3};function Rd(){let t=Ft.default.join(so.default.homedir(),".jerico","settings.json");try{let{statSync:e,readFileSync:n}=require("fs");if(!e(t,{throwIfNoEntry:!1}))return"default";let o=JSON.parse(n(t,"utf-8")).qwenPlan;if(typeof o=="string"&&o in la)return o}catch{}return"default"}var ca="qwen:";async function Nd(){let t=Ft.default.join(so.default.homedir(),".qwen","projects"),n=Date.now()-aa,r=1/0,o=0,s=0,i=0,a=0,c=new Set;try{let d=await Ut.promises.readdir(t,{withFileTypes:!0});for(let u of d){if(!u.isDirectory())continue;let p=Ft.default.join(t,u.name,"chats"),f;try{f=(await Ut.promises.readdir(p,{withFileTypes:!0})).filter(g=>g.isFile()&&g.name.endsWith(".jsonl")).map(g=>g.name)}catch{continue}for(let h of f){let g=Ft.default.join(p,h),w=await ae(g);if(!w)continue;await Se();let E=ca+g;c.add(E);let O=V.get(E,w);if(O!==void 0){for(let y of O.events)y.epoch>=n&&(o++,s+=y.totalTokenCount,y.epoch<r&&(r=y.epoch)),y.epoch>a&&(a=y.epoch,typeof y.contextWindowSize=="number"&&y.contextWindowSize>0&&(i=Math.round(y.totalTokenCount/y.contextWindowSize*100)));continue}let T;try{if(w.size>20*1024*1024){let b=Math.max(0,w.size-10485760),m=await Ut.promises.open(g,"r");try{let k=Buffer.alloc(w.size-b);await m.read(k,0,k.length,b);let _=k.toString("utf-8"),I=_.indexOf(`
|
|
@@ -500,7 +500,7 @@ You can remove this daemon at any time: bridge-agent uninstall
|
|
|
500
500
|
`;async function $a(t,e=!1,n){let r=!(t&&t.trim()),o=r?Tu:t.trim(),s=!1;try{let u=Q();(0,Un.existsSync)(u)&&(s=JSON.parse((0,Un.readFileSync)(u,"utf-8")).consentVersion===ft)}catch{}s?console.log("[bridge] consent.skipped",{reason:"already_consented"}):process.stdin.isTTY?(console.log(ja),console.log("[bridge] consent.shown",{version:ft}),await Cu('Type "yes" to continue: ')||(console.log("[bridge] auth.consent_declined"),process.exit(1)),console.log("[bridge] consent.accepted",{version:ft})):(process.stderr.write(ja+`
|
|
501
501
|
`),console.log("[bridge] consent.skipped",{reason:"non_interactive"})),console.log("[bridge] Starting auth flow..."),console.log(`[bridge] Server: ${o}${r?" (default)":""}`),console.log("[bridge] Open this URL to generate a daemon token:"),console.log(` ${o}/connect`);let i=Pu(n);i&&console.log("[bridge] Using token from --token"),e&&(i?console.log("[bridge] --no-browser ignored because --token is provided."):(console.log("[bridge] --no-browser: exiting after printing URL."),process.exit(0)));let a=i;a||(console.log(),console.log("[bridge] After authenticating, paste your token here:"),a=await Au()),a||(console.error("[bridge] No token provided. Exiting."),process.exit(1)),await Ru(o,a)||(console.error("[bridge] Token validation failed. Please try again."),process.exit(1));let d=o.replace(/^https?:\/\//,u=>u.startsWith("https")?"wss://":"ws://").replace(/\/?$/,"/ws/daemon");Ji(a),me({server:d,name:process.env.HOSTNAME??"My Machine",consentVersion:ft}),console.log(`[bridge] Auth successful! Config saved to ${Q()}`),console.log("[bridge] Run: bridge-agent start"),process.exit(0)}async function Cu(t){return new Promise(e=>{process.stdout.write(t);let n="";process.stdin.setEncoding("utf-8"),process.stdin.resume(),process.stdin.on("data",r=>{n+=r,n.includes(`
|
|
502
502
|
`)&&(process.stdin.pause(),e(n.trim().toLowerCase()==="yes"))})})}async function Au(){return new Promise(t=>{process.stdout.write("Token: ");let e="";process.stdin.setEncoding("utf-8"),process.stdin.on("data",n=>{e+=n,e.includes(`
|
|
503
|
-
`)&&(process.stdin.pause(),t(e.trim()))}),process.stdin.resume()})}async function Ru(t,e){return new Promise(n=>{let r=new URL("/api/tokens/validate",t),o=r.protocol==="https:",s=o?La.default:Ma.default,i={hostname:r.hostname,port:r.port||(o?443:80),path:r.pathname,method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${e}`}},a=s.request(i,c=>{n(c.statusCode===200)});a.on("error",()=>n(!1)),a.end()})}var Ba=S(require("https")),Ua=S(require("http")),wo=S(require("fs")),So=S(require("path")),Fa=require("node:crypto");Ke();function Nu(t){return t.replace(/^wss?:/,e=>e==="wss:"?"https:":"http:").replace(/\/ws(\/.*)?$/,"")}async function Wa(t,e,n){let r=Ce(),o=(0,Fa.createHash)("sha256").update(r.token).digest("hex"),s=Nu(r.server),i=So.default.resolve(n);So.default.isAbsolute(i)||(console.error("[bridge] link-project: path must be absolute"),process.exit(1)),wo.default.existsSync(i)||(console.error("[bridge] link-project: path does not exist:",i),process.exit(1)),wo.default.statSync(i).isDirectory()||(console.error("[bridge] link-project: path must be a directory:",i),process.exit(1));let c=new URL(`/api/workspaces/${t}/projects/${e}/machine-paths`,s),l=c.protocol==="https:",d=l?Ba.default:Ua.default;r.projectPaths={...r.projectPaths??{},[e]:i},me({projectPaths:r.projectPaths}),console.log("[cli] link-project.local_json_written",{projectId:e,path:i});let u=JSON.stringify({daemonId:o,localPath:i,machineFingerprint:_o()}),p=await new Promise((f,h)=>{let g=d.request({hostname:c.hostname,port:c.port||(l?443:80),path:c.pathname,method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${r.token}`,"Content-Length":Buffer.byteLength(u)}},w=>{let E="";w.on("data",O=>{E+=O}),w.on("end",()=>{if(w.statusCode===200)f(200);else{try{let O=JSON.parse(E);console.error("[bridge] link-project failed:",O.error??`HTTP ${w.statusCode}`)}catch{console.error("[bridge] link-project failed:",`HTTP ${w.statusCode}`)}f(w.statusCode??0)}})});g.on("error",w=>{h(w)}),g.write(u),g.end()});p===200?(console.log("[cli] link-project.server_success",{projectId:e}),console.log("[cli] link-project.success (dual-write)"),console.log(` workspace: ${t}`),console.log(` project: ${e}`),console.log(` daemon: ${o.slice(0,16)}\u2026`),console.log(` path: ${i}`),console.log("[cli] Next spawn for this project will use the linked path."),process.exit(0)):(console.warn("[cli] link-project.server_fail",{projectId:e,statusCode:p}),console.log("[cli] Local override still active \u2014 path will work on this machine"),process.exit(0))}Ke();function Du(t){return t.replace(/^wss?:/,e=>e==="wss:"?"https:":"http:").replace(/\/ws(\/.*)?$/,"")}async function Ga(){let t=Ce(),e=Du(t.server),n=await fetch(`${e}/api/admin/cleanup-orphans`,{method:"POST",headers:{Authorization:`Bearer ${t.token}`,"Content-Type":"application/json"},body:"{}"});n.ok||(console.error(`[cli] cleanup-orphans: HTTP ${n.status}`),process.exit(1));let{deleted:r}=await n.json();console.log(`[cli] cleanup-orphans: deleted ${r} orphaned path ${r===1?"entry":"entries"}`),process.exit(0)}var Me=require("node:child_process"),Ze=require("node:fs"),Fn=require("node:os"),Ha=S(require("path"));Z();var
|
|
503
|
+
`)&&(process.stdin.pause(),t(e.trim()))}),process.stdin.resume()})}async function Ru(t,e){return new Promise(n=>{let r=new URL("/api/tokens/validate",t),o=r.protocol==="https:",s=o?La.default:Ma.default,i={hostname:r.hostname,port:r.port||(o?443:80),path:r.pathname,method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${e}`}},a=s.request(i,c=>{n(c.statusCode===200)});a.on("error",()=>n(!1)),a.end()})}var Ba=S(require("https")),Ua=S(require("http")),wo=S(require("fs")),So=S(require("path")),Fa=require("node:crypto");Ke();function Nu(t){return t.replace(/^wss?:/,e=>e==="wss:"?"https:":"http:").replace(/\/ws(\/.*)?$/,"")}async function Wa(t,e,n){let r=Ce(),o=(0,Fa.createHash)("sha256").update(r.token).digest("hex"),s=Nu(r.server),i=So.default.resolve(n);So.default.isAbsolute(i)||(console.error("[bridge] link-project: path must be absolute"),process.exit(1)),wo.default.existsSync(i)||(console.error("[bridge] link-project: path does not exist:",i),process.exit(1)),wo.default.statSync(i).isDirectory()||(console.error("[bridge] link-project: path must be a directory:",i),process.exit(1));let c=new URL(`/api/workspaces/${t}/projects/${e}/machine-paths`,s),l=c.protocol==="https:",d=l?Ba.default:Ua.default;r.projectPaths={...r.projectPaths??{},[e]:i},me({projectPaths:r.projectPaths}),console.log("[cli] link-project.local_json_written",{projectId:e,path:i});let u=JSON.stringify({daemonId:o,localPath:i,machineFingerprint:_o()}),p=await new Promise((f,h)=>{let g=d.request({hostname:c.hostname,port:c.port||(l?443:80),path:c.pathname,method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${r.token}`,"Content-Length":Buffer.byteLength(u)}},w=>{let E="";w.on("data",O=>{E+=O}),w.on("end",()=>{if(w.statusCode===200)f(200);else{try{let O=JSON.parse(E);console.error("[bridge] link-project failed:",O.error??`HTTP ${w.statusCode}`)}catch{console.error("[bridge] link-project failed:",`HTTP ${w.statusCode}`)}f(w.statusCode??0)}})});g.on("error",w=>{h(w)}),g.write(u),g.end()});p===200?(console.log("[cli] link-project.server_success",{projectId:e}),console.log("[cli] link-project.success (dual-write)"),console.log(` workspace: ${t}`),console.log(` project: ${e}`),console.log(` daemon: ${o.slice(0,16)}\u2026`),console.log(` path: ${i}`),console.log("[cli] Next spawn for this project will use the linked path."),process.exit(0)):(console.warn("[cli] link-project.server_fail",{projectId:e,statusCode:p}),console.log("[cli] Local override still active \u2014 path will work on this machine"),process.exit(0))}Ke();function Du(t){return t.replace(/^wss?:/,e=>e==="wss:"?"https:":"http:").replace(/\/ws(\/.*)?$/,"")}async function Ga(){let t=Ce(),e=Du(t.server),n=await fetch(`${e}/api/admin/cleanup-orphans`,{method:"POST",headers:{Authorization:`Bearer ${t.token}`,"Content-Type":"application/json"},body:"{}"});n.ok||(console.error(`[cli] cleanup-orphans: HTTP ${n.status}`),process.exit(1));let{deleted:r}=await n.json();console.log(`[cli] cleanup-orphans: deleted ${r} orphaned path ${r===1?"entry":"entries"}`),process.exit(0)}var Me=require("node:child_process"),Ze=require("node:fs"),Fn=require("node:os"),Ha=S(require("path"));Z();var Xh=Ha.default.join((0,Fn.homedir)(),"Library","LaunchAgents");function Yt(){let e=pe().replace(".plist",""),n=(0,Fn.userInfo)().uid,r=be();P("lifecycle.stop.begin",{},"cli");let o=null,s=null,i=Re();if((0,Ze.existsSync)(i))try{let u=JSON.parse((0,Ze.readFileSync)(i,"utf8"));o=u.pid??null,s=u.shutdownToken??null}catch{}if(!o)try{let f=(0,Me.execSync)(`launchctl list gui/${n}/${e}`,{encoding:"utf8",stdio:"pipe"}).match(/"PID"\s*=\s*(\d+)/)?.[1];f&&(o=parseInt(f,10),P("lifecycle.stop.pid_from_launchctl",{pid:o},"cli"))}catch{}let a=!1;if(o&&s)try{let u=encodeURIComponent(s);(0,Me.execSync)(`curl -fsS -X POST -o /dev/null "http://127.0.0.1:${r}/shutdown?token=${u}"`,{stdio:"pipe",timeout:5e3}),a=!0,P("lifecycle.stop.shutdown_rpc_sent",{pid:o})}catch{P("lifecycle.stop.shutdown_rpc_failed",{pid:o})}if(a&&o){let u=Date.now()+5e3;for(;Date.now()<u;){try{process.kill(o,0)}catch{break}(0,Me.execSync)("sleep 0.2",{stdio:"ignore"})}}if((o?(()=>{try{return process.kill(o,0),!0}catch{return!1}})():!1)&&o){P("lifecycle.stop.sigterm_sent",{pid:o});try{process.kill(o,"SIGTERM")}catch{}let u=Date.now()+5e3;for(;Date.now()<u;){try{process.kill(o,0)}catch{break}(0,Me.execSync)("sleep 0.2",{stdio:"ignore"})}}if((o?(()=>{try{return process.kill(o,0),!0}catch{return!1}})():!1)&&o){P("lifecycle.stop.sigkill_escalation",{pid:o});try{(0,Me.execSync)(`launchctl disable gui/${n}/${e}`,{stdio:"pipe"}),(0,Me.execSync)(`launchctl kill SIGKILL gui/${n}/${e}`,{stdio:"pipe"})}catch{}let u=Date.now()+3e3;for(;Date.now()<u;){try{process.kill(o,0)}catch{break}(0,Me.execSync)("sleep 0.2",{stdio:"ignore"})}}if((0,Ze.existsSync)(i)&&(o?(()=>{try{return process.kill(o,0),!1}catch{return!0}})():!0)){try{(0,Ze.unlinkSync)(i)}catch{}P("lifecycle.stop.lock_cleaned")}return(o?(()=>{try{return process.kill(o,0),!0}catch{return!1}})():!1)?(P("lifecycle.stop.did_not_exit",{pid:o}),{ok:!1,reason:"daemon did not exit after 3-phase stop"}):(P("lifecycle.stop.complete"),{ok:!0,reason:"stopped"})}function qa(){let t=Yt();t.ok||(console.error(`[bridge] stop.failed \u2014 ${t.reason}`),process.exit(1)),console.log("[bridge] stop.ok \u2014 daemon stopped, service stays loaded"),process.exit(0)}var Va=S(require("node:net"));Z();function ju(t){let e=be(),n=Date.now()+t;return new Promise(r=>{let o=()=>{if(Date.now()>n){r(!1);return}let s=new Va.default.Socket;s.setTimeout(1e3),s.on("connect",()=>{s.destroy(),setTimeout(o,500)}),s.on("error",i=>{s.destroy(),i.code==="ECONNREFUSED"?r(!0):setTimeout(o,500)}),s.on("timeout",()=>{s.destroy(),setTimeout(o,500)}),s.connect(e,"127.0.0.1")};o()})}function Lu(t,e){let n=be(),r=Date.now()+e;return new Promise(o=>{let s=()=>{if(Date.now()>r){P("lifecycle.restart.version_timeout",{target:t},"cli"),o(!1);return}let a=require("node:http").get(`http://127.0.0.1:${n}/health`,{timeout:2e3},c=>{let l="";c.on("data",d=>{l+=d}),c.on("end",()=>{try{let d=JSON.parse(l);d.version===t?(P("lifecycle.restart.version_confirmed",{version:d.version},"cli"),o(!0)):(P("lifecycle.restart.version_mismatch",{got:d.version,expected:t},"cli"),setTimeout(s,1e3))}catch{setTimeout(s,1e3)}})});a.on("error",()=>{setTimeout(s,1e3)}),a.on("timeout",()=>{a.destroy(),setTimeout(s,1e3)})};setTimeout(s,2e3)})}async function Ka(){P("lifecycle.restart.begin",{version:ie()},"cli"),console.log("[bridge] restart.begin \u2014 stopping daemon...");let t=ie(),e=Yt();e.ok||(P("lifecycle.restart.stop_failed",{reason:e.reason},"cli"),console.error(`[bridge] restart.failed \u2014 stop: ${e.reason}`),process.exit(1)),P("lifecycle.restart.stop_ok",{reason:e.reason},"cli"),console.log("[bridge] restart.stop_ok"),console.log("[bridge] restart.waiting_port_free..."),await ju(1e4)||(P("lifecycle.restart.port_busy_timeout",{},"cli"),console.error("[bridge] restart.failed \u2014 health port still in use after 10s"),process.exit(1)),P("lifecycle.restart.port_free",{},"cli"),console.log("[bridge] restart.port_free \u2014 starting new daemon...");let r=ve(),o=Jt(r);o.ok||(P("lifecycle.restart.start_failed",{reason:o.reason},"cli"),console.error(`[bridge] restart.failed \u2014 ${o.reason}`),process.exit(1)),P("lifecycle.restart.start_ok",{reason:o.reason},"cli"),console.log(`[bridge] restart.start_ok \u2014 ${o.reason}`),console.log("[bridge] restart.awaiting_version..."),await Lu(t,3e4)||(P("lifecycle.restart.version_not_confirmed",{},"cli"),console.error("[bridge] restart.failed \u2014 version did not match after 30s"),process.exit(1)),P("lifecycle.restart.complete",{version:t},"cli"),console.log("[bridge] restart.complete"),process.exit(0)}var Ee=require("node:fs");Z();function Ya(t){let e=Ae().lifecycle;(0,Ee.existsSync)(e)||(console.log("[bridge-agent] No lifecycle log found at",e),process.exit(0));let n=Mu(e,t.lines);for(let s of n)console.log(Ja(s,t.component));if(!t.follow){process.exit(0);return}let r;try{r=(0,Ee.statSync)(e).size}catch{r=0}let o=null;try{o=(0,Ee.watch)(e,{persistent:!1},s=>{if(s==="change")try{let i=(0,Ee.statSync)(e);if(i.size<=r)return;let a=(0,Ee.readFileSync)(e,"utf8").slice(r);r=i.size;for(let c of a.split(`
|
|
504
504
|
`)){let l=c.trim();l&&console.log(Ja(l,t.component))}}catch{}})}catch{console.warn("[bridge-agent] Cannot watch log file \u2014 showing history only"),process.exit(0)}process.on("SIGINT",()=>{o?.close(),process.exit(0)}),process.on("SIGTERM",()=>{o?.close(),process.exit(0)})}function Mu(t,e){try{return(0,Ee.readFileSync)(t,"utf8").split(`
|
|
505
505
|
`).filter(o=>o.trim()).slice(-e)}catch{return[]}}function Ja(t,e){try{let n=JSON.parse(t);if(e&&n.component!==e)return"";let r=new Date(n.ts).toISOString(),o=(n.component||"??").padEnd(8),s=n.requestId?` [${n.requestId.slice(0,8)}]`:"",i=n.event||"??",a=[];for(let[l,d]of Object.entries(n))["ts","event","component","pid","requestId"].includes(l)||d!=null&&(typeof d=="object"?a.push(`${l}=${JSON.stringify(d)}`):a.push(`${l}=${d}`));let c=a.length>0?` | ${a.join(" ")}`:"";return`${r} ${o}${s} ${i}${c}`}catch{return e?"":t}}var za=require("node:child_process"),oe=require("node:fs"),ko=require("node:os"),zt=S(require("path"));Z();Tn();function et(t,e,n,r){if(!(0,oe.existsSync)(t))return!0;if(e)return console.log(`[bridge] uninstall.dry_run \u2014 would remove: ${t}`),!0;try{return(0,oe.unlinkSync)(t),console.log(`[bridge] uninstall.${n}.removed`,{path:t}),!0}catch(o){let s=o instanceof Error?o.message:String(o);return console.warn("[bridge] uninstall.step.failed",{step:n,error:s}),r.errors.push({step:n,error:s}),!1}}function Wn(t,e,n){if((0,oe.existsSync)(t)){if(e){console.log(`[bridge] uninstall.dry_run \u2014 would rmdir (if empty): ${t}`);return}try{(0,oe.rmdirSync)(t),console.log("[bridge] uninstall.dir.removed",{path:t}),n.dirsRemoved.push(t)}catch(r){let o=r instanceof Error?r.message:String(r);r.code==="ENOTEMPTY"?console.log("[bridge] uninstall.dir_not_empty",{path:t}):r.code!=="ENOENT"&&(console.warn("[bridge] uninstall.step.failed",{step:"rmdir",error:o}),n.errors.push({step:`rmdir:${t}`,error:o}))}}}async function Xa(t){let{dryRun:e=!1,force:n=!1,json:r=!1}=t;process.getuid!==void 0&&process.getuid()===0&&(console.error("[bridge] uninstall.aborted.root_user \u2014 do not run uninstall as root"),process.exit(1)),!e&&!n&&process.stdin.isTTY&&(await $u()||(console.log("[bridge] uninstall.cancelled"),process.exit(0))),console.log("[bridge] uninstall.start",{dryRun:e});let o={stopped:!1,plistRemoved:!1,wrapperRemoved:!1,lockRemoved:!1,logsRemoved:!1,configRemoved:!1,dirsRemoved:[],errors:[]},s=_s(),a=pe().replace(".plist","");if(e)console.log("[bridge] uninstall.dry_run \u2014 would stop daemon via launchctl bootout");else{try{(0,za.execSync)(`launchctl bootout gui/$(id -u)/${a} 2>/dev/null`,{stdio:"pipe"}),console.log("[bridge] uninstall.daemon.stopped"),o.stopped=!0}catch{console.log("[bridge] uninstall.daemon.not_managed")}if((0,oe.existsSync)(s.lock))try{let{pid:f}=JSON.parse((0,oe.readFileSync)(s.lock,"utf-8"));if(f){let h=Date.now()+3e3;for(;Date.now()<h;)try{process.kill(f,0),await new Promise(g=>setTimeout(g,300))}catch{break}try{process.kill(f,0),process.kill(f,9),console.log("[bridge] uninstall.daemon.killed",{pid:f}),o.stopped=!0}catch{o.stopped=!0}}}catch(f){let h=f instanceof Error?f.message:String(f);console.warn("[bridge] uninstall.daemon.kill_failed",{error:h}),o.errors.push({step:"daemon.kill",error:h})}}o.plistRemoved=et(s.plist,e,"plist",o),o.wrapperRemoved=et(s.wrapper,e,"wrapper",o),o.lockRemoved=et(s.lock,e,"lock",o);let c=et(s.logOut,e,"log_out",o),l=et(s.logErr,e,"log_err",o);if(o.logsRemoved=c&&l,e?console.log("[bridge] uninstall.dry_run \u2014 would delete Keychain token entry"):(Yi(),console.log("[bridge] uninstall.token.keychain_deleted")),!(0,oe.existsSync)(s.config))o.configRemoved=!0;else if(e)console.log(`[bridge] uninstall.dry_run \u2014 would remove config (auth token): ${s.config}`),o.configRemoved=!0;else try{(0,oe.lstatSync)(s.config).isFile()?((0,oe.unlinkSync)(s.config),console.log("[bridge] uninstall.config.removed",{path:s.config}),o.configRemoved=!0):(console.warn("[bridge] uninstall.config.not_regular_file",{path:s.config}),o.errors.push({step:"config",error:"not a regular file \u2014 skipped (symlink attack guard)"}))}catch(f){let h=f instanceof Error?f.message:String(f);console.warn("[bridge] uninstall.step.failed",{step:"config",error:h}),o.errors.push({step:"config",error:h})}s.updateLock&&et(s.updateLock,e,"update_lock",o),s.updateState&&et(s.updateState,e,"update_state",o),Wn(zt.default.join((0,ko.homedir)(),".bridge"),e,o);let d=zt.default.join((0,ko.homedir)(),".jerico"),u=process.env.BRIDGE_PROFILE;u&&(Wn(zt.default.join(d,"profiles",u),e,o),Wn(zt.default.join(d,"profiles"),e,o)),Wn(d,e,o),!e&&!u&&(zi(),console.log("[bridge] uninstall.token.all_keychain_entries_deleted"));let p=[o.plistRemoved,o.wrapperRemoved,o.lockRemoved,o.logsRemoved,o.configRemoved].filter(Boolean).length;console.log("[bridge] uninstall.complete",{removedCount:p,errorCount:o.errors.length,dryRun:e}),r&&process.stdout.write(JSON.stringify(o,null,2)+`
|
|
506
506
|
`),process.exit(o.errors.length>0?1:0)}async function $u(){return new Promise(t=>{process.stdout.write(`This will stop the daemon, remove the login service, delete the auth token,
|