bridge-agent 0.2.3 → 0.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/index.js +5 -5
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -20,7 +20,7 @@ Expecting one of '${n.join("', '")}'`);return this._lifeCycleHooks[e]?this._life
20
20
  `),this.outputHelp({error:!0}));let n=t||{},s=n.exitCode||1,i=n.code||"commander.error";this._exit(s,i,e)}_parseOptionsEnv(){this.options.forEach(e=>{if(e.envVar&&e.envVar in v.env){let t=e.attributeName();(this.getOptionValue(t)===void 0||["default","config","env"].includes(this.getOptionValueSource(t)))&&(e.required||e.optional?this.emit(`optionEnv:${e.name()}`,v.env[e.envVar]):this.emit(`optionEnv:${e.name()}`))}})}_parseOptionsImplied(){let e=new Bs(this.options),t=n=>this.getOptionValue(n)!==void 0&&!["default","implied"].includes(this.getOptionValueSource(n));this.options.filter(n=>n.implied!==void 0&&t(n.attributeName())&&e.valueFromOption(this.getOptionValue(n.attributeName()),n)).forEach(n=>{Object.keys(n.implied).filter(s=>!t(s)).forEach(s=>{this.setOptionValueWithSource(s,n.implied[s],"implied")})})}missingArgument(e){let t=`error: missing required argument '${e}'`;this.error(t,{code:"commander.missingArgument"})}optionMissingArgument(e){let t=`error: option '${e.flags}' argument missing`;this.error(t,{code:"commander.optionMissingArgument"})}missingMandatoryOptionValue(e){let t=`error: required option '${e.flags}' not specified`;this.error(t,{code:"commander.missingMandatoryOptionValue"})}_conflictingOption(e,t){let n=o=>{let c=o.attributeName(),a=this.getOptionValue(c),l=this.options.find(u=>u.negate&&c===u.attributeName()),d=this.options.find(u=>!u.negate&&c===u.attributeName());return l&&(l.presetArg===void 0&&a===!1||l.presetArg!==void 0&&a===l.presetArg)?l:d||o},s=o=>{let c=n(o),a=c.attributeName();return this.getOptionValueSource(a)==="env"?`environment variable '${c.envVar}'`:`option '${c.flags}'`},i=`error: ${s(e)} cannot be used with ${s(t)}`;this.error(i,{code:"commander.conflictingOption"})}unknownOption(e){if(this._allowUnknownOption)return;let t="";if(e.startsWith("--")&&this._showSuggestionAfterError){let s=[],i=this;do{let o=i.createHelp().visibleOptions(i).filter(c=>c.long).map(c=>c.long);s=s.concat(o),i=i.parent}while(i&&!i._enablePositionalOptions);t=hr(e,s)}let n=`error: unknown option '${e}'${t}`;this.error(n,{code:"commander.unknownOption"})}_excessArguments(e){if(this._allowExcessArguments)return;let t=this.registeredArguments.length,n=t===1?"":"s",i=`error: too many arguments${this.parent?` for '${this.name()}'`:""}. Expected ${t} argument${n} but got ${e.length}.`;this.error(i,{code:"commander.excessArguments"})}unknownCommand(){let e=this.args[0],t="";if(this._showSuggestionAfterError){let s=[];this.createHelp().visibleCommands(this).forEach(i=>{s.push(i.name()),i.alias()&&s.push(i.alias())}),t=hr(e,s)}let n=`error: unknown command '${e}'${t}`;this.error(n,{code:"commander.unknownCommand"})}version(e,t,n){if(e===void 0)return this._version;this._version=e,t=t||"-V, --version",n=n||"output the version number";let s=this.createOption(t,n);return this._versionOptionName=s.attributeName(),this._registerOption(s),this.on("option:"+s.name(),()=>{this._outputConfiguration.writeOut(`${e}
21
21
  `),this._exit(0,"commander.version",e)}),this}description(e,t){return e===void 0&&t===void 0?this._description:(this._description=e,t&&(this._argsDescription=t),this)}summary(e){return e===void 0?this._summary:(this._summary=e,this)}alias(e){if(e===void 0)return this._aliases[0];let t=this;if(this.commands.length!==0&&this.commands[this.commands.length-1]._executableHandler&&(t=this.commands[this.commands.length-1]),e===t._name)throw new Error("Command alias can't be the same as its name");let n=this.parent?._findCommand(e);if(n){let s=[n.name()].concat(n.aliases()).join("|");throw new Error(`cannot add alias '${e}' to command '${this.name()}' as already have command '${s}'`)}return t._aliases.push(e),this}aliases(e){return e===void 0?this._aliases:(e.forEach(t=>this.alias(t)),this)}usage(e){if(e===void 0){if(this._usage)return this._usage;let t=this.registeredArguments.map(n=>Ms(n));return[].concat(this.options.length||this._helpOption!==null?"[options]":[],this.commands.length?"[command]":[],this.registeredArguments.length?t:[]).join(" ")}return this._usage=e,this}name(e){return e===void 0?this._name:(this._name=e,this)}nameFromFilename(e){return this._name=B.basename(e,B.extname(e)),this}executableDir(e){return e===void 0?this._executableDir:(this._executableDir=e,this)}helpInformation(e){let t=this.createHelp();return t.helpWidth===void 0&&(t.helpWidth=e&&e.error?this._outputConfiguration.getErrHelpWidth():this._outputConfiguration.getOutHelpWidth()),t.formatHelp(this,t)}_getHelpContext(e){e=e||{};let t={error:!!e.error},n;return t.error?n=s=>this._outputConfiguration.writeErr(s):n=s=>this._outputConfiguration.writeOut(s),t.write=e.write||n,t.command=this,t}outputHelp(e){let t;typeof e=="function"&&(t=e,e=void 0);let n=this._getHelpContext(e);this._getCommandAndAncestors().reverse().forEach(i=>i.emit("beforeAllHelp",n)),this.emit("beforeHelp",n);let s=this.helpInformation(n);if(t&&(s=t(s),typeof s!="string"&&!Buffer.isBuffer(s)))throw new Error("outputHelp callback must return a string or a Buffer");n.write(s),this._getHelpOption()?.long&&this.emit(this._getHelpOption().long),this.emit("afterHelp",n),this._getCommandAndAncestors().forEach(i=>i.emit("afterAllHelp",n))}helpOption(e,t){return typeof e=="boolean"?(e?this._helpOption=this._helpOption??void 0:this._helpOption=null,this):(e=e??"-h, --help",t=t??"display help for command",this._helpOption=this.createOption(e,t),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 t=v.exitCode||0;t===0&&e&&typeof e!="function"&&e.error&&(t=1),this._exit(t,"commander.help","(outputHelp)")}addHelpText(e,t){let n=["beforeAll","before","after","afterAll"];if(!n.includes(e))throw new Error(`Unexpected value for position to addHelpText.
22
22
  Expecting one of '${n.join("', '")}'`);let s=`${e}Help`;return this.on(s,i=>{let o;typeof t=="function"?o=t({error:i.error,command:i.command}):o=t,o&&i.write(`${o}
23
- `)}),this}_outputHelpIfRequested(e){let t=this._getHelpOption();t&&e.find(s=>t.is(s))&&(this.outputHelp(),this._exit(0,"commander.helpDisplayed","(outputHelp)"))}};function fr(r){return r.map(e=>{if(!e.startsWith("--inspect"))return e;let t,n="127.0.0.1",s="9229",i;return(i=e.match(/^(--inspect(-brk)?)$/))!==null?t=i[1]:(i=e.match(/^(--inspect(-brk|-port)?)=([^:]+)$/))!==null?(t=i[1],/^\d+$/.test(i[3])?s=i[3]:n=i[3]):(i=e.match(/^(--inspect(-brk|-port)?)=([^:]+):(\d+)$/))!==null&&(t=i[1],n=i[3],s=i[4]),t&&s!=="0"?`${t}=${n}:${parseInt(s)+1}`:e})}pr.Command=wt});var br=E(T=>{var{Argument:mr}=Le(),{Command:Et}=gr(),{CommanderError:$s,InvalidArgumentError:_r}=ge(),{Help:Us}=ft(),{Option:yr}=_t();T.program=new Et;T.createCommand=r=>new Et(r);T.createOption=(r,e)=>new yr(r,e);T.createArgument=(r,e)=>new mr(r,e);T.Command=Et;T.Option=yr;T.Argument=mr;T.Help=Us;T.CommanderError=$s;T.InvalidArgumentError=_r;T.InvalidOptionArgumentError=_r});var Ir=E(k=>{"use strict";var vt=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports),Ws=vt(r=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.sync=r.isexe=void 0;var e=require("node:fs"),t=require("node:fs/promises"),n=async(c,a={})=>{let{ignoreErrors:l=!1}=a;try{return i(await(0,t.stat)(c),a)}catch(d){let u=d;if(l||u.code==="EACCES")return!1;throw u}};r.isexe=n;var s=(c,a={})=>{let{ignoreErrors:l=!1}=a;try{return i((0,e.statSync)(c),a)}catch(d){let u=d;if(l||u.code==="EACCES")return!1;throw u}};r.sync=s;var i=(c,a)=>c.isFile()&&o(c,a),o=(c,a)=>{let l=a.uid??process.getuid?.(),d=a.groups??process.getgroups?.()??[],u=a.gid??process.getgid?.()??d[0];if(l===void 0||u===void 0)throw new Error("cannot get uid or gid");let h=new Set([u,...d]),g=c.mode,f=c.uid,p=c.gid,m=parseInt("100",8),x=parseInt("010",8),A=parseInt("001",8),b=m|x;return!!(g&A||g&x&&h.has(p)||g&m&&f===l||g&b&&l===0)}}),Fs=vt(r=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.sync=r.isexe=void 0;var e=require("node:fs"),t=require("node:fs/promises"),n=require("node:path"),s=async(a,l={})=>{let{ignoreErrors:d=!1}=l;try{return c(await(0,t.stat)(a),a,l)}catch(u){let h=u;if(d||h.code==="EACCES")return!1;throw h}};r.isexe=s;var i=(a,l={})=>{let{ignoreErrors:d=!1}=l;try{return c((0,e.statSync)(a),a,l)}catch(u){let h=u;if(d||h.code==="EACCES")return!1;throw h}};r.sync=i;var o=(a,l)=>{let{pathExt:d=process.env.PATHEXT||""}=l,u=d.split(n.delimiter);if(u.indexOf("")!==-1)return!0;for(let h of u){let g=h.toLowerCase(),f=a.substring(a.length-g.length).toLowerCase();if(g&&f===g)return!0}return!1},c=(a,l,d)=>a.isFile()&&o(l,d)}),qs=vt(r=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0})}),Er=k&&k.__createBinding||(Object.create?(function(r,e,t,n){n===void 0&&(n=t);var s=Object.getOwnPropertyDescriptor(e,t);(!s||("get"in s?!e.__esModule:s.writable||s.configurable))&&(s={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(r,n,s)}):(function(r,e,t,n){n===void 0&&(n=t),r[n]=e[t]})),Vs=k&&k.__setModuleDefault||(Object.create?(function(r,e){Object.defineProperty(r,"default",{enumerable:!0,value:e})}):function(r,e){r.default=e}),vr=k&&k.__importStar||(function(){var r=function(e){return r=Object.getOwnPropertyNames||function(t){var n=[];for(var s in t)Object.prototype.hasOwnProperty.call(t,s)&&(n[n.length]=s);return n},r(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var n=r(e),s=0;s<n.length;s++)n[s]!=="default"&&Er(t,e,n[s]);return Vs(t,e),t}})(),Hs=k&&k.__exportStar||function(r,e){for(var t in r)t!=="default"&&!Object.prototype.hasOwnProperty.call(e,t)&&Er(e,r,t)};Object.defineProperty(k,"__esModule",{value:!0});k.sync=k.isexe=k.posix=k.win32=void 0;var xr=vr(Ws());k.posix=xr;var kr=vr(Fs());k.win32=kr;Hs(qs(),k);var Gs=process.env._ISEXE_TEST_PLATFORM_||process.platform,Or=Gs==="win32"?kr:xr;k.isexe=Or.isexe;k.sync=Or.sync});var jr=E((Da,Mr)=>{var{isexe:Ks,sync:Ys}=Ir(),{join:zs,delimiter:Js,sep:Ar,posix:Cr}=require("path"),Tr=process.platform==="win32",Pr=new RegExp(`[${Cr.sep}${Ar===Cr.sep?"":Ar}]`.replace(/(\\)/g,"\\$1")),Xs=new RegExp(`^\\.${Pr.source}`),Nr=r=>Object.assign(new Error(`not found: ${r}`),{code:"ENOENT"}),Dr=(r,{path:e=process.env.PATH,pathExt:t=process.env.PATHEXT,delimiter:n=Js})=>{let s=r.match(Pr)?[""]:[...Tr?[process.cwd()]:[],...(e||"").split(n)];if(Tr){let i=t||[".EXE",".CMD",".BAT",".COM"].join(n),o=i.split(n).flatMap(c=>[c,c.toLowerCase()]);return r.includes(".")&&o[0]!==""&&o.unshift(""),{pathEnv:s,pathExt:o,pathExtExe:i}}return{pathEnv:s,pathExt:[""]}},Rr=(r,e)=>{let t=/^".*"$/.test(r)?r.slice(1,-1):r;return(!t&&Xs.test(e)?e.slice(0,2):"")+zs(t,e)},Lr=async(r,e={})=>{let{pathEnv:t,pathExt:n,pathExtExe:s}=Dr(r,e),i=[];for(let o of t){let c=Rr(o,r);for(let a of n){let l=c+a;if(await Ks(l,{pathExt:s,ignoreErrors:!0})){if(!e.all)return l;i.push(l)}}}if(e.all&&i.length)return i;if(e.nothrow)return null;throw Nr(r)},Qs=(r,e={})=>{let{pathEnv:t,pathExt:n,pathExtExe:s}=Dr(r,e),i=[];for(let o of t){let c=Rr(o,r);for(let a of n){let l=c+a;if(Ys(l,{pathExt:s,ignoreErrors:!0})){if(!e.all)return l;i.push(l)}}}if(e.all&&i.length)return i;if(e.nothrow)return null;throw Nr(r)};Mr.exports=Lr;Lr.sync=Qs});var $=E((ja,Vr)=>{"use strict";var Fr=["nodebuffer","arraybuffer","fragments"],qr=typeof Blob<"u";qr&&Fr.push("blob");Vr.exports={BINARY_TYPES:Fr,CLOSE_TIMEOUT:3e4,EMPTY_BUFFER:Buffer.alloc(0),GUID:"258EAFA5-E914-47DA-95CA-C5AB0DC85B11",hasBlob:qr,kForOnEventAttribute:Symbol("kIsForOnEventAttribute"),kListener:Symbol("kListener"),kStatusCode:Symbol("status-code"),kWebSocket:Symbol("websocket"),NOOP:()=>{}}});var _e=E((Ba,Ue)=>{"use strict";var{EMPTY_BUFFER:ri}=$(),It=Buffer[Symbol.species];function ni(r,e){if(r.length===0)return ri;if(r.length===1)return r[0];let t=Buffer.allocUnsafe(e),n=0;for(let s=0;s<r.length;s++){let i=r[s];t.set(i,n),n+=i.length}return n<e?new It(t.buffer,t.byteOffset,n):t}function Hr(r,e,t,n,s){for(let i=0;i<s;i++)t[n+i]=r[i]^e[i&3]}function Gr(r,e){for(let t=0;t<r.length;t++)r[t]^=e[t&3]}function si(r){return r.length===r.buffer.byteLength?r.buffer:r.buffer.slice(r.byteOffset,r.byteOffset+r.length)}function At(r){if(At.readOnly=!0,Buffer.isBuffer(r))return r;let e;return r instanceof ArrayBuffer?e=new It(r):ArrayBuffer.isView(r)?e=new It(r.buffer,r.byteOffset,r.byteLength):(e=Buffer.from(r),At.readOnly=!1),e}Ue.exports={concat:ni,mask:Hr,toArrayBuffer:si,toBuffer:At,unmask:Gr};if(!process.env.WS_NO_BUFFER_UTIL)try{let r=require("bufferutil");Ue.exports.mask=function(e,t,n,s,i){i<48?Hr(e,t,n,s,i):r.mask(e,t,n,s,i)},Ue.exports.unmask=function(e,t){e.length<32?Gr(e,t):r.unmask(e,t)}}catch{}});var zr=E(($a,Yr)=>{"use strict";var Kr=Symbol("kDone"),Ct=Symbol("kRun"),Tt=class{constructor(e){this[Kr]=()=>{this.pending--,this[Ct]()},this.concurrency=e||1/0,this.jobs=[],this.pending=0}add(e){this.jobs.push(e),this[Ct]()}[Ct](){if(this.pending!==this.concurrency&&this.jobs.length){let e=this.jobs.shift();this.pending++,e(this[Kr])}}};Yr.exports=Tt});var ae=E((Ua,Zr)=>{"use strict";var ye=require("zlib"),Jr=_e(),ii=zr(),{kStatusCode:Xr}=$(),oi=Buffer[Symbol.species],ai=Buffer.from([0,0,255,255]),Fe=Symbol("permessage-deflate"),U=Symbol("total-length"),ie=Symbol("callback"),H=Symbol("buffers"),oe=Symbol("error"),We,Pt=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,!We){let t=this._options.concurrencyLimit!==void 0?this._options.concurrencyLimit:10;We=new ii(t)}}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[ie];this._deflate.close(),this._deflate=null,e&&e(new Error("The deflate stream was closed while data was being processed"))}}acceptAsServer(e){let t=this._options,n=e.find(s=>!(t.serverNoContextTakeover===!1&&s.server_no_context_takeover||s.server_max_window_bits&&(t.serverMaxWindowBits===!1||typeof t.serverMaxWindowBits=="number"&&t.serverMaxWindowBits>s.server_max_window_bits)||typeof t.clientMaxWindowBits=="number"&&!s.client_max_window_bits));if(!n)throw new Error("None of the extension offers can be accepted");return t.serverNoContextTakeover&&(n.server_no_context_takeover=!0),t.clientNoContextTakeover&&(n.client_no_context_takeover=!0),typeof t.serverMaxWindowBits=="number"&&(n.server_max_window_bits=t.serverMaxWindowBits),typeof t.clientMaxWindowBits=="number"?n.client_max_window_bits=t.clientMaxWindowBits:(n.client_max_window_bits===!0||t.clientMaxWindowBits===!1)&&delete n.client_max_window_bits,n}acceptAsClient(e){let t=e[0];if(this._options.clientNoContextTakeover===!1&&t.client_no_context_takeover)throw new Error('Unexpected parameter "client_no_context_takeover"');if(!t.client_max_window_bits)typeof this._options.clientMaxWindowBits=="number"&&(t.client_max_window_bits=this._options.clientMaxWindowBits);else if(this._options.clientMaxWindowBits===!1||typeof this._options.clientMaxWindowBits=="number"&&t.client_max_window_bits>this._options.clientMaxWindowBits)throw new Error('Unexpected or invalid parameter "client_max_window_bits"');return t}normalizeParams(e){return e.forEach(t=>{Object.keys(t).forEach(n=>{let s=t[n];if(s.length>1)throw new Error(`Parameter "${n}" must have only a single value`);if(s=s[0],n==="client_max_window_bits"){if(s!==!0){let i=+s;if(!Number.isInteger(i)||i<8||i>15)throw new TypeError(`Invalid value for parameter "${n}": ${s}`);s=i}else if(!this._isServer)throw new TypeError(`Invalid value for parameter "${n}": ${s}`)}else if(n==="server_max_window_bits"){let i=+s;if(!Number.isInteger(i)||i<8||i>15)throw new TypeError(`Invalid value for parameter "${n}": ${s}`);s=i}else if(n==="client_no_context_takeover"||n==="server_no_context_takeover"){if(s!==!0)throw new TypeError(`Invalid value for parameter "${n}": ${s}`)}else throw new Error(`Unknown parameter "${n}"`);t[n]=s})}),e}decompress(e,t,n){We.add(s=>{this._decompress(e,t,(i,o)=>{s(),n(i,o)})})}compress(e,t,n){We.add(s=>{this._compress(e,t,(i,o)=>{s(),n(i,o)})})}_decompress(e,t,n){let s=this._isServer?"client":"server";if(!this._inflate){let i=`${s}_max_window_bits`,o=typeof this.params[i]!="number"?ye.Z_DEFAULT_WINDOWBITS:this.params[i];this._inflate=ye.createInflateRaw({...this._options.zlibInflateOptions,windowBits:o}),this._inflate[Fe]=this,this._inflate[U]=0,this._inflate[H]=[],this._inflate.on("error",li),this._inflate.on("data",Qr)}this._inflate[ie]=n,this._inflate.write(e),t&&this._inflate.write(ai),this._inflate.flush(()=>{let i=this._inflate[oe];if(i){this._inflate.close(),this._inflate=null,n(i);return}let o=Jr.concat(this._inflate[H],this._inflate[U]);this._inflate._readableState.endEmitted?(this._inflate.close(),this._inflate=null):(this._inflate[U]=0,this._inflate[H]=[],t&&this.params[`${s}_no_context_takeover`]&&this._inflate.reset()),n(null,o)})}_compress(e,t,n){let s=this._isServer?"server":"client";if(!this._deflate){let i=`${s}_max_window_bits`,o=typeof this.params[i]!="number"?ye.Z_DEFAULT_WINDOWBITS:this.params[i];this._deflate=ye.createDeflateRaw({...this._options.zlibDeflateOptions,windowBits:o}),this._deflate[U]=0,this._deflate[H]=[],this._deflate.on("data",ci)}this._deflate[ie]=n,this._deflate.write(e),this._deflate.flush(ye.Z_SYNC_FLUSH,()=>{if(!this._deflate)return;let i=Jr.concat(this._deflate[H],this._deflate[U]);t&&(i=new oi(i.buffer,i.byteOffset,i.length-4)),this._deflate[ie]=null,this._deflate[U]=0,this._deflate[H]=[],t&&this.params[`${s}_no_context_takeover`]&&this._deflate.reset(),n(null,i)})}};Zr.exports=Pt;function ci(r){this[H].push(r),this[U]+=r.length}function Qr(r){if(this[U]+=r.length,this[Fe]._maxPayload<1||this[U]<=this[Fe]._maxPayload){this[H].push(r);return}this[oe]=new RangeError("Max payload size exceeded"),this[oe].code="WS_ERR_UNSUPPORTED_MESSAGE_LENGTH",this[oe][Xr]=1009,this.removeListener("data",Qr),this.reset()}function li(r){if(this[Fe]._inflate=null,this[oe]){this[ie](this[oe]);return}r[Xr]=1007,this[ie](r)}});var ce=E((Wa,qe)=>{"use strict";var{isUtf8:en}=require("buffer"),{hasBlob:di}=$(),ui=[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 hi(r){return r>=1e3&&r<=1014&&r!==1004&&r!==1005&&r!==1006||r>=3e3&&r<=4999}function Nt(r){let e=r.length,t=0;for(;t<e;)if((r[t]&128)===0)t++;else if((r[t]&224)===192){if(t+1===e||(r[t+1]&192)!==128||(r[t]&254)===192)return!1;t+=2}else if((r[t]&240)===224){if(t+2>=e||(r[t+1]&192)!==128||(r[t+2]&192)!==128||r[t]===224&&(r[t+1]&224)===128||r[t]===237&&(r[t+1]&224)===160)return!1;t+=3}else if((r[t]&248)===240){if(t+3>=e||(r[t+1]&192)!==128||(r[t+2]&192)!==128||(r[t+3]&192)!==128||r[t]===240&&(r[t+1]&240)===128||r[t]===244&&r[t+1]>143||r[t]>244)return!1;t+=4}else return!1;return!0}function fi(r){return di&&typeof r=="object"&&typeof r.arrayBuffer=="function"&&typeof r.type=="string"&&typeof r.stream=="function"&&(r[Symbol.toStringTag]==="Blob"||r[Symbol.toStringTag]==="File")}qe.exports={isBlob:fi,isValidStatusCode:hi,isValidUTF8:Nt,tokenChars:ui};if(en)qe.exports.isValidUTF8=function(r){return r.length<24?Nt(r):en(r)};else if(!process.env.WS_NO_UTF_8_VALIDATE)try{let r=require("utf-8-validate");qe.exports.isValidUTF8=function(e){return e.length<32?Nt(e):r(e)}}catch{}});var jt=E((Fa,cn)=>{"use strict";var{Writable:pi}=require("stream"),tn=ae(),{BINARY_TYPES:gi,EMPTY_BUFFER:rn,kStatusCode:mi,kWebSocket:_i}=$(),{concat:Dt,toArrayBuffer:yi,unmask:bi}=_e(),{isValidStatusCode:Si,isValidUTF8:nn}=ce(),Ve=Buffer[Symbol.species],P=0,sn=1,on=2,an=3,Rt=4,Lt=5,He=6,Mt=class extends pi{constructor(e={}){super(),this._allowSynchronousEvents=e.allowSynchronousEvents!==void 0?e.allowSynchronousEvents:!0,this._binaryType=e.binaryType||gi[0],this._extensions=e.extensions||{},this._isServer=!!e.isServer,this._maxPayload=e.maxPayload|0,this._skipUTF8Validation=!!e.skipUTF8Validation,this[_i]=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=P}_write(e,t,n){if(this._opcode===8&&this._state==P)return n();this._bufferedBytes+=e.length,this._buffers.push(e),this.startLoop(n)}consume(e){if(this._bufferedBytes-=e,e===this._buffers[0].length)return this._buffers.shift();if(e<this._buffers[0].length){let n=this._buffers[0];return this._buffers[0]=new Ve(n.buffer,n.byteOffset+e,n.length-e),new Ve(n.buffer,n.byteOffset,e)}let t=Buffer.allocUnsafe(e);do{let n=this._buffers[0],s=t.length-e;e>=n.length?t.set(this._buffers.shift(),s):(t.set(new Uint8Array(n.buffer,n.byteOffset,e),s),this._buffers[0]=new Ve(n.buffer,n.byteOffset+e,n.length-e)),e-=n.length}while(e>0);return t}startLoop(e){this._loop=!0;do switch(this._state){case P:this.getInfo(e);break;case sn:this.getPayloadLength16(e);break;case on:this.getPayloadLength64(e);break;case an:this.getMask();break;case Rt:this.getData(e);break;case Lt:case He:this._loop=!1;return}while(this._loop);this._errored||e()}getInfo(e){if(this._bufferedBytes<2){this._loop=!1;return}let t=this.consume(2);if((t[0]&48)!==0){let s=this.createError(RangeError,"RSV2 and RSV3 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_2_3");e(s);return}let n=(t[0]&64)===64;if(n&&!this._extensions[tn.extensionName]){let s=this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");e(s);return}if(this._fin=(t[0]&128)===128,this._opcode=t[0]&15,this._payloadLength=t[1]&127,this._opcode===0){if(n){let s=this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");e(s);return}if(!this._fragmented){let s=this.createError(RangeError,"invalid opcode 0",!0,1002,"WS_ERR_INVALID_OPCODE");e(s);return}this._opcode=this._fragmented}else if(this._opcode===1||this._opcode===2){if(this._fragmented){let s=this.createError(RangeError,`invalid opcode ${this._opcode}`,!0,1002,"WS_ERR_INVALID_OPCODE");e(s);return}this._compressed=n}else if(this._opcode>7&&this._opcode<11){if(!this._fin){let s=this.createError(RangeError,"FIN must be set",!0,1002,"WS_ERR_EXPECTED_FIN");e(s);return}if(n){let s=this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");e(s);return}if(this._payloadLength>125||this._opcode===8&&this._payloadLength===1){let s=this.createError(RangeError,`invalid payload length ${this._payloadLength}`,!0,1002,"WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH");e(s);return}}else{let s=this.createError(RangeError,`invalid opcode ${this._opcode}`,!0,1002,"WS_ERR_INVALID_OPCODE");e(s);return}if(!this._fin&&!this._fragmented&&(this._fragmented=this._opcode),this._masked=(t[1]&128)===128,this._isServer){if(!this._masked){let s=this.createError(RangeError,"MASK must be set",!0,1002,"WS_ERR_EXPECTED_MASK");e(s);return}}else if(this._masked){let s=this.createError(RangeError,"MASK must be clear",!0,1002,"WS_ERR_UNEXPECTED_MASK");e(s);return}this._payloadLength===126?this._state=sn:this._payloadLength===127?this._state=on: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 t=this.consume(8),n=t.readUInt32BE(0);if(n>Math.pow(2,21)-1){let s=this.createError(RangeError,"Unsupported WebSocket frame: payload length > 2^53 - 1",!1,1009,"WS_ERR_UNSUPPORTED_DATA_PAYLOAD_LENGTH");e(s);return}this._payloadLength=n*Math.pow(2,32)+t.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 t=this.createError(RangeError,"Max payload size exceeded",!1,1009,"WS_ERR_UNSUPPORTED_MESSAGE_LENGTH");e(t);return}this._masked?this._state=an:this._state=Rt}getMask(){if(this._bufferedBytes<4){this._loop=!1;return}this._mask=this.consume(4),this._state=Rt}getData(e){let t=rn;if(this._payloadLength){if(this._bufferedBytes<this._payloadLength){this._loop=!1;return}t=this.consume(this._payloadLength),this._masked&&(this._mask[0]|this._mask[1]|this._mask[2]|this._mask[3])!==0&&bi(t,this._mask)}if(this._opcode>7){this.controlMessage(t,e);return}if(this._compressed){this._state=Lt,this.decompress(t,e);return}t.length&&(this._messageLength=this._totalPayloadLength,this._fragments.push(t)),this.dataMessage(e)}decompress(e,t){this._extensions[tn.extensionName].decompress(e,this._fin,(s,i)=>{if(s)return t(s);if(i.length){if(this._messageLength+=i.length,this._messageLength>this._maxPayload&&this._maxPayload>0){let o=this.createError(RangeError,"Max payload size exceeded",!1,1009,"WS_ERR_UNSUPPORTED_MESSAGE_LENGTH");t(o);return}this._fragments.push(i)}this.dataMessage(t),this._state===P&&this.startLoop(t)})}dataMessage(e){if(!this._fin){this._state=P;return}let t=this._messageLength,n=this._fragments;if(this._totalPayloadLength=0,this._messageLength=0,this._fragmented=0,this._fragments=[],this._opcode===2){let s;this._binaryType==="nodebuffer"?s=Dt(n,t):this._binaryType==="arraybuffer"?s=yi(Dt(n,t)):this._binaryType==="blob"?s=new Blob(n):s=n,this._allowSynchronousEvents?(this.emit("message",s,!0),this._state=P):(this._state=He,setImmediate(()=>{this.emit("message",s,!0),this._state=P,this.startLoop(e)}))}else{let s=Dt(n,t);if(!this._skipUTF8Validation&&!nn(s)){let i=this.createError(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");e(i);return}this._state===Lt||this._allowSynchronousEvents?(this.emit("message",s,!1),this._state=P):(this._state=He,setImmediate(()=>{this.emit("message",s,!1),this._state=P,this.startLoop(e)}))}}controlMessage(e,t){if(this._opcode===8){if(e.length===0)this._loop=!1,this.emit("conclude",1005,rn),this.end();else{let n=e.readUInt16BE(0);if(!Si(n)){let i=this.createError(RangeError,`invalid status code ${n}`,!0,1002,"WS_ERR_INVALID_CLOSE_CODE");t(i);return}let s=new Ve(e.buffer,e.byteOffset+2,e.length-2);if(!this._skipUTF8Validation&&!nn(s)){let i=this.createError(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");t(i);return}this._loop=!1,this.emit("conclude",n,s),this.end()}this._state=P;return}this._allowSynchronousEvents?(this.emit(this._opcode===9?"ping":"pong",e),this._state=P):(this._state=He,setImmediate(()=>{this.emit(this._opcode===9?"ping":"pong",e),this._state=P,this.startLoop(t)}))}createError(e,t,n,s,i){this._loop=!1,this._errored=!0;let o=new e(n?`Invalid WebSocket frame: ${t}`:t);return Error.captureStackTrace(o,this.createError),o.code=i,o[mi]=s,o}};cn.exports=Mt});var Ut=E((Va,un)=>{"use strict";var{Duplex:qa}=require("stream"),{randomFillSync:wi}=require("crypto"),ln=ae(),{EMPTY_BUFFER:Ei,kWebSocket:vi,NOOP:xi}=$(),{isBlob:le,isValidStatusCode:ki}=ce(),{mask:dn,toBuffer:J}=_e(),N=Symbol("kByteLength"),Oi=Buffer.alloc(4),Ge=8*1024,X,de=Ge,R=0,Ii=1,Ai=2,Bt=class r{constructor(e,t,n){this._extensions=t||{},n&&(this._generateMask=n,this._maskBuffer=Buffer.alloc(4)),this._socket=e,this._firstFragment=!0,this._compress=!1,this._bufferedBytes=0,this._queue=[],this._state=R,this.onerror=xi,this[vi]=void 0}static frame(e,t){let n,s=!1,i=2,o=!1;t.mask&&(n=t.maskBuffer||Oi,t.generateMask?t.generateMask(n):(de===Ge&&(X===void 0&&(X=Buffer.alloc(Ge)),wi(X,0,Ge),de=0),n[0]=X[de++],n[1]=X[de++],n[2]=X[de++],n[3]=X[de++]),o=(n[0]|n[1]|n[2]|n[3])===0,i=6);let c;typeof e=="string"?(!t.mask||o)&&t[N]!==void 0?c=t[N]:(e=Buffer.from(e),c=e.length):(c=e.length,s=t.mask&&t.readOnly&&!o);let a=c;c>=65536?(i+=8,a=127):c>125&&(i+=2,a=126);let l=Buffer.allocUnsafe(s?c+i:i);return l[0]=t.fin?t.opcode|128:t.opcode,t.rsv1&&(l[0]|=64),l[1]=a,a===126?l.writeUInt16BE(c,2):a===127&&(l[2]=l[3]=0,l.writeUIntBE(c,4,6)),t.mask?(l[1]|=128,l[i-4]=n[0],l[i-3]=n[1],l[i-2]=n[2],l[i-1]=n[3],o?[l,e]:s?(dn(e,n,l,i,c),[l]):(dn(e,n,e,0,c),[l,e])):[l,e]}close(e,t,n,s){let i;if(e===void 0)i=Ei;else{if(typeof e!="number"||!ki(e))throw new TypeError("First argument must be a valid error code number");if(t===void 0||!t.length)i=Buffer.allocUnsafe(2),i.writeUInt16BE(e,0);else{let c=Buffer.byteLength(t);if(c>123)throw new RangeError("The message must not be greater than 123 bytes");i=Buffer.allocUnsafe(2+c),i.writeUInt16BE(e,0),typeof t=="string"?i.write(t,2):i.set(t,2)}}let o={[N]:i.length,fin:!0,generateMask:this._generateMask,mask:n,maskBuffer:this._maskBuffer,opcode:8,readOnly:!1,rsv1:!1};this._state!==R?this.enqueue([this.dispatch,i,!1,o,s]):this.sendFrame(r.frame(i,o),s)}ping(e,t,n){let s,i;if(typeof e=="string"?(s=Buffer.byteLength(e),i=!1):le(e)?(s=e.size,i=!1):(e=J(e),s=e.length,i=J.readOnly),s>125)throw new RangeError("The data size must not be greater than 125 bytes");let o={[N]:s,fin:!0,generateMask:this._generateMask,mask:t,maskBuffer:this._maskBuffer,opcode:9,readOnly:i,rsv1:!1};le(e)?this._state!==R?this.enqueue([this.getBlobData,e,!1,o,n]):this.getBlobData(e,!1,o,n):this._state!==R?this.enqueue([this.dispatch,e,!1,o,n]):this.sendFrame(r.frame(e,o),n)}pong(e,t,n){let s,i;if(typeof e=="string"?(s=Buffer.byteLength(e),i=!1):le(e)?(s=e.size,i=!1):(e=J(e),s=e.length,i=J.readOnly),s>125)throw new RangeError("The data size must not be greater than 125 bytes");let o={[N]:s,fin:!0,generateMask:this._generateMask,mask:t,maskBuffer:this._maskBuffer,opcode:10,readOnly:i,rsv1:!1};le(e)?this._state!==R?this.enqueue([this.getBlobData,e,!1,o,n]):this.getBlobData(e,!1,o,n):this._state!==R?this.enqueue([this.dispatch,e,!1,o,n]):this.sendFrame(r.frame(e,o),n)}send(e,t,n){let s=this._extensions[ln.extensionName],i=t.binary?2:1,o=t.compress,c,a;typeof e=="string"?(c=Buffer.byteLength(e),a=!1):le(e)?(c=e.size,a=!1):(e=J(e),c=e.length,a=J.readOnly),this._firstFragment?(this._firstFragment=!1,o&&s&&s.params[s._isServer?"server_no_context_takeover":"client_no_context_takeover"]&&(o=c>=s._threshold),this._compress=o):(o=!1,i=0),t.fin&&(this._firstFragment=!0);let l={[N]:c,fin:t.fin,generateMask:this._generateMask,mask:t.mask,maskBuffer:this._maskBuffer,opcode:i,readOnly:a,rsv1:o};le(e)?this._state!==R?this.enqueue([this.getBlobData,e,this._compress,l,n]):this.getBlobData(e,this._compress,l,n):this._state!==R?this.enqueue([this.dispatch,e,this._compress,l,n]):this.dispatch(e,this._compress,l,n)}getBlobData(e,t,n,s){this._bufferedBytes+=n[N],this._state=Ai,e.arrayBuffer().then(i=>{if(this._socket.destroyed){let c=new Error("The socket was closed while the blob was being read");process.nextTick($t,this,c,s);return}this._bufferedBytes-=n[N];let o=J(i);t?this.dispatch(o,t,n,s):(this._state=R,this.sendFrame(r.frame(o,n),s),this.dequeue())}).catch(i=>{process.nextTick(Ci,this,i,s)})}dispatch(e,t,n,s){if(!t){this.sendFrame(r.frame(e,n),s);return}let i=this._extensions[ln.extensionName];this._bufferedBytes+=n[N],this._state=Ii,i.compress(e,n.fin,(o,c)=>{if(this._socket.destroyed){let a=new Error("The socket was closed while data was being compressed");$t(this,a,s);return}this._bufferedBytes-=n[N],this._state=R,n.readOnly=!1,this.sendFrame(r.frame(c,n),s),this.dequeue()})}dequeue(){for(;this._state===R&&this._queue.length;){let e=this._queue.shift();this._bufferedBytes-=e[3][N],Reflect.apply(e[0],this,e.slice(1))}}enqueue(e){this._bufferedBytes+=e[3][N],this._queue.push(e)}sendFrame(e,t){e.length===2?(this._socket.cork(),this._socket.write(e[0]),this._socket.write(e[1],t),this._socket.uncork()):this._socket.write(e[0],t)}};un.exports=Bt;function $t(r,e,t){typeof t=="function"&&t(e);for(let n=0;n<r._queue.length;n++){let s=r._queue[n],i=s[s.length-1];typeof i=="function"&&i(e)}}function Ci(r,e,t){$t(r,e,t),r.onerror(e)}});var Sn=E((Ha,bn)=>{"use strict";var{kForOnEventAttribute:be,kListener:Wt}=$(),hn=Symbol("kCode"),fn=Symbol("kData"),pn=Symbol("kError"),gn=Symbol("kMessage"),mn=Symbol("kReason"),ue=Symbol("kTarget"),_n=Symbol("kType"),yn=Symbol("kWasClean"),W=class{constructor(e){this[ue]=null,this[_n]=e}get target(){return this[ue]}get type(){return this[_n]}};Object.defineProperty(W.prototype,"target",{enumerable:!0});Object.defineProperty(W.prototype,"type",{enumerable:!0});var Q=class extends W{constructor(e,t={}){super(e),this[hn]=t.code===void 0?0:t.code,this[mn]=t.reason===void 0?"":t.reason,this[yn]=t.wasClean===void 0?!1:t.wasClean}get code(){return this[hn]}get reason(){return this[mn]}get wasClean(){return this[yn]}};Object.defineProperty(Q.prototype,"code",{enumerable:!0});Object.defineProperty(Q.prototype,"reason",{enumerable:!0});Object.defineProperty(Q.prototype,"wasClean",{enumerable:!0});var he=class extends W{constructor(e,t={}){super(e),this[pn]=t.error===void 0?null:t.error,this[gn]=t.message===void 0?"":t.message}get error(){return this[pn]}get message(){return this[gn]}};Object.defineProperty(he.prototype,"error",{enumerable:!0});Object.defineProperty(he.prototype,"message",{enumerable:!0});var Se=class extends W{constructor(e,t={}){super(e),this[fn]=t.data===void 0?null:t.data}get data(){return this[fn]}};Object.defineProperty(Se.prototype,"data",{enumerable:!0});var Ti={addEventListener(r,e,t={}){for(let s of this.listeners(r))if(!t[be]&&s[Wt]===e&&!s[be])return;let n;if(r==="message")n=function(i,o){let c=new Se("message",{data:o?i:i.toString()});c[ue]=this,Ke(e,this,c)};else if(r==="close")n=function(i,o){let c=new Q("close",{code:i,reason:o.toString(),wasClean:this._closeFrameReceived&&this._closeFrameSent});c[ue]=this,Ke(e,this,c)};else if(r==="error")n=function(i){let o=new he("error",{error:i,message:i.message});o[ue]=this,Ke(e,this,o)};else if(r==="open")n=function(){let i=new W("open");i[ue]=this,Ke(e,this,i)};else return;n[be]=!!t[be],n[Wt]=e,t.once?this.once(r,n):this.on(r,n)},removeEventListener(r,e){for(let t of this.listeners(r))if(t[Wt]===e&&!t[be]){this.removeListener(r,t);break}}};bn.exports={CloseEvent:Q,ErrorEvent:he,Event:W,EventTarget:Ti,MessageEvent:Se};function Ke(r,e,t){typeof r=="object"&&r.handleEvent?r.handleEvent.call(r,t):r.call(e,t)}});var Ye=E((Ga,wn)=>{"use strict";var{tokenChars:we}=ce();function M(r,e,t){r[e]===void 0?r[e]=[t]:r[e].push(t)}function Pi(r){let e=Object.create(null),t=Object.create(null),n=!1,s=!1,i=!1,o,c,a=-1,l=-1,d=-1,u=0;for(;u<r.length;u++)if(l=r.charCodeAt(u),o===void 0)if(d===-1&&we[l]===1)a===-1&&(a=u);else if(u!==0&&(l===32||l===9))d===-1&&a!==-1&&(d=u);else if(l===59||l===44){if(a===-1)throw new SyntaxError(`Unexpected character at index ${u}`);d===-1&&(d=u);let g=r.slice(a,d);l===44?(M(e,g,t),t=Object.create(null)):o=g,a=d=-1}else throw new SyntaxError(`Unexpected character at index ${u}`);else if(c===void 0)if(d===-1&&we[l]===1)a===-1&&(a=u);else if(l===32||l===9)d===-1&&a!==-1&&(d=u);else if(l===59||l===44){if(a===-1)throw new SyntaxError(`Unexpected character at index ${u}`);d===-1&&(d=u),M(t,r.slice(a,d),!0),l===44&&(M(e,o,t),t=Object.create(null),o=void 0),a=d=-1}else if(l===61&&a!==-1&&d===-1)c=r.slice(a,u),a=d=-1;else throw new SyntaxError(`Unexpected character at index ${u}`);else if(s){if(we[l]!==1)throw new SyntaxError(`Unexpected character at index ${u}`);a===-1?a=u:n||(n=!0),s=!1}else if(i)if(we[l]===1)a===-1&&(a=u);else if(l===34&&a!==-1)i=!1,d=u;else if(l===92)s=!0;else throw new SyntaxError(`Unexpected character at index ${u}`);else if(l===34&&r.charCodeAt(u-1)===61)i=!0;else if(d===-1&&we[l]===1)a===-1&&(a=u);else if(a!==-1&&(l===32||l===9))d===-1&&(d=u);else if(l===59||l===44){if(a===-1)throw new SyntaxError(`Unexpected character at index ${u}`);d===-1&&(d=u);let g=r.slice(a,d);n&&(g=g.replace(/\\/g,""),n=!1),M(t,c,g),l===44&&(M(e,o,t),t=Object.create(null),o=void 0),c=void 0,a=d=-1}else throw new SyntaxError(`Unexpected character at index ${u}`);if(a===-1||i||l===32||l===9)throw new SyntaxError("Unexpected end of input");d===-1&&(d=u);let h=r.slice(a,d);return o===void 0?M(e,h,t):(c===void 0?M(t,h,!0):n?M(t,c,h.replace(/\\/g,"")):M(t,c,h),M(e,o,t)),e}function Ni(r){return Object.keys(r).map(e=>{let t=r[e];return Array.isArray(t)||(t=[t]),t.map(n=>[e].concat(Object.keys(n).map(s=>{let i=n[s];return Array.isArray(i)||(i=[i]),i.map(o=>o===!0?s:`${s}=${o}`).join("; ")})).join("; ")).join(", ")}).join(", ")}wn.exports={format:Ni,parse:Pi}});var Qe=E((za,Dn)=>{"use strict";var Di=require("events"),Ri=require("https"),Li=require("http"),xn=require("net"),Mi=require("tls"),{randomBytes:ji,createHash:Bi}=require("crypto"),{Duplex:Ka,Readable:Ya}=require("stream"),{URL:Ft}=require("url"),G=ae(),$i=jt(),Ui=Ut(),{isBlob:Wi}=ce(),{BINARY_TYPES:En,CLOSE_TIMEOUT:Fi,EMPTY_BUFFER:ze,GUID:qi,kForOnEventAttribute:qt,kListener:Vi,kStatusCode:Hi,kWebSocket:I,NOOP:kn}=$(),{EventTarget:{addEventListener:Gi,removeEventListener:Ki}}=Sn(),{format:Yi,parse:zi}=Ye(),{toBuffer:Ji}=_e(),On=Symbol("kAborted"),Vt=[8,13],F=["CONNECTING","OPEN","CLOSING","CLOSED"],Xi=/^[!#$%&'*+\-.0-9A-Z^_`|a-z~]+$/,S=class r extends Di{constructor(e,t,n){super(),this._binaryType=En[0],this._closeCode=1006,this._closeFrameReceived=!1,this._closeFrameSent=!1,this._closeMessage=ze,this._closeTimer=null,this._errorEmitted=!1,this._extensions={},this._paused=!1,this._protocol="",this._readyState=r.CONNECTING,this._receiver=null,this._sender=null,this._socket=null,e!==null?(this._bufferedAmount=0,this._isServer=!1,this._redirects=0,t===void 0?t=[]:Array.isArray(t)||(typeof t=="object"&&t!==null?(n=t,t=[]):t=[t]),In(this,e,t,n)):(this._autoPong=n.autoPong,this._closeTimeout=n.closeTimeout,this._isServer=!0)}get binaryType(){return this._binaryType}set binaryType(e){En.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,t,n){let s=new $i({allowSynchronousEvents:n.allowSynchronousEvents,binaryType:this.binaryType,extensions:this._extensions,isServer:this._isServer,maxPayload:n.maxPayload,skipUTF8Validation:n.skipUTF8Validation}),i=new Ui(e,this._extensions,n.generateMask);this._receiver=s,this._sender=i,this._socket=e,s[I]=this,i[I]=this,e[I]=this,s.on("conclude",eo),s.on("drain",to),s.on("error",ro),s.on("message",no),s.on("ping",so),s.on("pong",io),i.onerror=oo,e.setTimeout&&e.setTimeout(0),e.setNoDelay&&e.setNoDelay(),t.length>0&&e.unshift(t),e.on("close",Tn),e.on("data",Xe),e.on("end",Pn),e.on("error",Nn),this._readyState=r.OPEN,this.emit("open")}emitClose(){if(!this._socket){this._readyState=r.CLOSED,this.emit("close",this._closeCode,this._closeMessage);return}this._extensions[G.extensionName]&&this._extensions[G.extensionName].cleanup(),this._receiver.removeAllListeners(),this._readyState=r.CLOSED,this.emit("close",this._closeCode,this._closeMessage)}close(e,t){if(this.readyState!==r.CLOSED){if(this.readyState===r.CONNECTING){C(this,this._req,"WebSocket was closed before the connection was established");return}if(this.readyState===r.CLOSING){this._closeFrameSent&&(this._closeFrameReceived||this._receiver._writableState.errorEmitted)&&this._socket.end();return}this._readyState=r.CLOSING,this._sender.close(e,t,!this._isServer,n=>{n||(this._closeFrameSent=!0,(this._closeFrameReceived||this._receiver._writableState.errorEmitted)&&this._socket.end())}),Cn(this)}}pause(){this.readyState===r.CONNECTING||this.readyState===r.CLOSED||(this._paused=!0,this._socket.pause())}ping(e,t,n){if(this.readyState===r.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof e=="function"?(n=e,e=t=void 0):typeof t=="function"&&(n=t,t=void 0),typeof e=="number"&&(e=e.toString()),this.readyState!==r.OPEN){Ht(this,e,n);return}t===void 0&&(t=!this._isServer),this._sender.ping(e||ze,t,n)}pong(e,t,n){if(this.readyState===r.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof e=="function"?(n=e,e=t=void 0):typeof t=="function"&&(n=t,t=void 0),typeof e=="number"&&(e=e.toString()),this.readyState!==r.OPEN){Ht(this,e,n);return}t===void 0&&(t=!this._isServer),this._sender.pong(e||ze,t,n)}resume(){this.readyState===r.CONNECTING||this.readyState===r.CLOSED||(this._paused=!1,this._receiver._writableState.needDrain||this._socket.resume())}send(e,t,n){if(this.readyState===r.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof t=="function"&&(n=t,t={}),typeof e=="number"&&(e=e.toString()),this.readyState!==r.OPEN){Ht(this,e,n);return}let s={binary:typeof e!="string",mask:!this._isServer,compress:!0,fin:!0,...t};this._extensions[G.extensionName]||(s.compress=!1),this._sender.send(e||ze,s,n)}terminate(){if(this.readyState!==r.CLOSED){if(this.readyState===r.CONNECTING){C(this,this._req,"WebSocket was closed before the connection was established");return}this._socket&&(this._readyState=r.CLOSING,this._socket.destroy())}}};Object.defineProperty(S,"CONNECTING",{enumerable:!0,value:F.indexOf("CONNECTING")});Object.defineProperty(S.prototype,"CONNECTING",{enumerable:!0,value:F.indexOf("CONNECTING")});Object.defineProperty(S,"OPEN",{enumerable:!0,value:F.indexOf("OPEN")});Object.defineProperty(S.prototype,"OPEN",{enumerable:!0,value:F.indexOf("OPEN")});Object.defineProperty(S,"CLOSING",{enumerable:!0,value:F.indexOf("CLOSING")});Object.defineProperty(S.prototype,"CLOSING",{enumerable:!0,value:F.indexOf("CLOSING")});Object.defineProperty(S,"CLOSED",{enumerable:!0,value:F.indexOf("CLOSED")});Object.defineProperty(S.prototype,"CLOSED",{enumerable:!0,value:F.indexOf("CLOSED")});["binaryType","bufferedAmount","extensions","isPaused","protocol","readyState","url"].forEach(r=>{Object.defineProperty(S.prototype,r,{enumerable:!0})});["open","error","close","message"].forEach(r=>{Object.defineProperty(S.prototype,`on${r}`,{enumerable:!0,get(){for(let e of this.listeners(r))if(e[qt])return e[Vi];return null},set(e){for(let t of this.listeners(r))if(t[qt]){this.removeListener(r,t);break}typeof e=="function"&&this.addEventListener(r,e,{[qt]:!0})}})});S.prototype.addEventListener=Gi;S.prototype.removeEventListener=Ki;Dn.exports=S;function In(r,e,t,n){let s={allowSynchronousEvents:!0,autoPong:!0,closeTimeout:Fi,protocolVersion:Vt[1],maxPayload:104857600,skipUTF8Validation:!1,perMessageDeflate:!0,followRedirects:!1,maxRedirects:10,...n,socketPath:void 0,hostname:void 0,protocol:void 0,timeout:void 0,method:"GET",host:void 0,path:void 0,port:void 0};if(r._autoPong=s.autoPong,r._closeTimeout=s.closeTimeout,!Vt.includes(s.protocolVersion))throw new RangeError(`Unsupported protocol version: ${s.protocolVersion} (supported versions: ${Vt.join(", ")})`);let i;if(e instanceof Ft)i=e;else try{i=new Ft(e)}catch{throw new SyntaxError(`Invalid URL: ${e}`)}i.protocol==="http:"?i.protocol="ws:":i.protocol==="https:"&&(i.protocol="wss:"),r._url=i.href;let o=i.protocol==="wss:",c=i.protocol==="ws+unix:",a;if(i.protocol!=="ws:"&&!o&&!c?a=`The URL's protocol must be one of "ws:", "wss:", "http:", "https:", or "ws+unix:"`:c&&!i.pathname?a="The URL's pathname is empty":i.hash&&(a="The URL contains a fragment identifier"),a){let p=new SyntaxError(a);if(r._redirects===0)throw p;Je(r,p);return}let l=o?443:80,d=ji(16).toString("base64"),u=o?Ri.request:Li.request,h=new Set,g;if(s.createConnection=s.createConnection||(o?Zi:Qi),s.defaultPort=s.defaultPort||l,s.port=i.port||l,s.host=i.hostname.startsWith("[")?i.hostname.slice(1,-1):i.hostname,s.headers={...s.headers,"Sec-WebSocket-Version":s.protocolVersion,"Sec-WebSocket-Key":d,Connection:"Upgrade",Upgrade:"websocket"},s.path=i.pathname+i.search,s.timeout=s.handshakeTimeout,s.perMessageDeflate&&(g=new G({...s.perMessageDeflate,isServer:!1,maxPayload:s.maxPayload}),s.headers["Sec-WebSocket-Extensions"]=Yi({[G.extensionName]:g.offer()})),t.length){for(let p of t){if(typeof p!="string"||!Xi.test(p)||h.has(p))throw new SyntaxError("An invalid or duplicated subprotocol was specified");h.add(p)}s.headers["Sec-WebSocket-Protocol"]=t.join(",")}if(s.origin&&(s.protocolVersion<13?s.headers["Sec-WebSocket-Origin"]=s.origin:s.headers.Origin=s.origin),(i.username||i.password)&&(s.auth=`${i.username}:${i.password}`),c){let p=s.path.split(":");s.socketPath=p[0],s.path=p[1]}let f;if(s.followRedirects){if(r._redirects===0){r._originalIpc=c,r._originalSecure=o,r._originalHostOrSocketPath=c?s.socketPath:i.host;let p=n&&n.headers;if(n={...n,headers:{}},p)for(let[m,x]of Object.entries(p))n.headers[m.toLowerCase()]=x}else if(r.listenerCount("redirect")===0){let p=c?r._originalIpc?s.socketPath===r._originalHostOrSocketPath:!1:r._originalIpc?!1:i.host===r._originalHostOrSocketPath;(!p||r._originalSecure&&!o)&&(delete s.headers.authorization,delete s.headers.cookie,p||delete s.headers.host,s.auth=void 0)}s.auth&&!n.headers.authorization&&(n.headers.authorization="Basic "+Buffer.from(s.auth).toString("base64")),f=r._req=u(s),r._redirects&&r.emit("redirect",r.url,f)}else f=r._req=u(s);s.timeout&&f.on("timeout",()=>{C(r,f,"Opening handshake has timed out")}),f.on("error",p=>{f===null||f[On]||(f=r._req=null,Je(r,p))}),f.on("response",p=>{let m=p.headers.location,x=p.statusCode;if(m&&s.followRedirects&&x>=300&&x<400){if(++r._redirects>s.maxRedirects){C(r,f,"Maximum redirects exceeded");return}f.abort();let A;try{A=new Ft(m,e)}catch{let w=new SyntaxError(`Invalid URL: ${m}`);Je(r,w);return}In(r,A,t,n)}else r.emit("unexpected-response",f,p)||C(r,f,`Unexpected server response: ${p.statusCode}`)}),f.on("upgrade",(p,m,x)=>{if(r.emit("upgrade",p),r.readyState!==S.CONNECTING)return;f=r._req=null;let A=p.headers.upgrade;if(A===void 0||A.toLowerCase()!=="websocket"){C(r,m,"Invalid Upgrade header");return}let b=Bi("sha1").update(d+qi).digest("base64");if(p.headers["sec-websocket-accept"]!==b){C(r,m,"Invalid Sec-WebSocket-Accept header");return}let w=p.headers["sec-websocket-protocol"],y;if(w!==void 0?h.size?h.has(w)||(y="Server sent an invalid subprotocol"):y="Server sent a subprotocol but none was requested":h.size&&(y="Server sent no subprotocol"),y){C(r,m,y);return}w&&(r._protocol=w);let D=p.headers["sec-websocket-extensions"];if(D!==void 0){if(!g){C(r,m,"Server sent a Sec-WebSocket-Extensions header but no extension was requested");return}let Y;try{Y=zi(D)}catch{C(r,m,"Invalid Sec-WebSocket-Extensions header");return}let De=Object.keys(Y);if(De.length!==1||De[0]!==G.extensionName){C(r,m,"Server indicated an extension that was not requested");return}try{g.accept(Y[G.extensionName])}catch{C(r,m,"Invalid Sec-WebSocket-Extensions header");return}r._extensions[G.extensionName]=g}r.setSocket(m,x,{allowSynchronousEvents:s.allowSynchronousEvents,generateMask:s.generateMask,maxPayload:s.maxPayload,skipUTF8Validation:s.skipUTF8Validation})}),s.finishRequest?s.finishRequest(f,r):f.end()}function Je(r,e){r._readyState=S.CLOSING,r._errorEmitted=!0,r.emit("error",e),r.emitClose()}function Qi(r){return r.path=r.socketPath,xn.connect(r)}function Zi(r){return r.path=void 0,!r.servername&&r.servername!==""&&(r.servername=xn.isIP(r.host)?"":r.host),Mi.connect(r)}function C(r,e,t){r._readyState=S.CLOSING;let n=new Error(t);Error.captureStackTrace(n,C),e.setHeader?(e[On]=!0,e.abort(),e.socket&&!e.socket.destroyed&&e.socket.destroy(),process.nextTick(Je,r,n)):(e.destroy(n),e.once("error",r.emit.bind(r,"error")),e.once("close",r.emitClose.bind(r)))}function Ht(r,e,t){if(e){let n=Wi(e)?e.size:Ji(e).length;r._socket?r._sender._bufferedBytes+=n:r._bufferedAmount+=n}if(t){let n=new Error(`WebSocket is not open: readyState ${r.readyState} (${F[r.readyState]})`);process.nextTick(t,n)}}function eo(r,e){let t=this[I];t._closeFrameReceived=!0,t._closeMessage=e,t._closeCode=r,t._socket[I]!==void 0&&(t._socket.removeListener("data",Xe),process.nextTick(An,t._socket),r===1005?t.close():t.close(r,e))}function to(){let r=this[I];r.isPaused||r._socket.resume()}function ro(r){let e=this[I];e._socket[I]!==void 0&&(e._socket.removeListener("data",Xe),process.nextTick(An,e._socket),e.close(r[Hi])),e._errorEmitted||(e._errorEmitted=!0,e.emit("error",r))}function vn(){this[I].emitClose()}function no(r,e){this[I].emit("message",r,e)}function so(r){let e=this[I];e._autoPong&&e.pong(r,!this._isServer,kn),e.emit("ping",r)}function io(r){this[I].emit("pong",r)}function An(r){r.resume()}function oo(r){let e=this[I];e.readyState!==S.CLOSED&&(e.readyState===S.OPEN&&(e._readyState=S.CLOSING,Cn(e)),this._socket.end(),e._errorEmitted||(e._errorEmitted=!0,e.emit("error",r)))}function Cn(r){r._closeTimer=setTimeout(r._socket.destroy.bind(r._socket),r._closeTimeout)}function Tn(){let r=this[I];if(this.removeListener("close",Tn),this.removeListener("data",Xe),this.removeListener("end",Pn),r._readyState=S.CLOSING,!this._readableState.endEmitted&&!r._closeFrameReceived&&!r._receiver._writableState.errorEmitted&&this._readableState.length!==0){let e=this.read(this._readableState.length);r._receiver.write(e)}r._receiver.end(),this[I]=void 0,clearTimeout(r._closeTimer),r._receiver._writableState.finished||r._receiver._writableState.errorEmitted?r.emitClose():(r._receiver.on("error",vn),r._receiver.on("finish",vn))}function Xe(r){this[I]._receiver.write(r)||this.pause()}function Pn(){let r=this[I];r._readyState=S.CLOSING,r._receiver.end(),this.end()}function Nn(){let r=this[I];this.removeListener("error",Nn),this.on("error",kn),r&&(r._readyState=S.CLOSING,this.destroy())}});var jn=E((Xa,Mn)=>{"use strict";var Ja=Qe(),{Duplex:ao}=require("stream");function Rn(r){r.emit("close")}function co(){!this.destroyed&&this._writableState.finished&&this.destroy()}function Ln(r){this.removeListener("error",Ln),this.destroy(),this.listenerCount("error")===0&&this.emit("error",r)}function lo(r,e){let t=!0,n=new ao({...e,autoDestroy:!1,emitClose:!1,objectMode:!1,writableObjectMode:!1});return r.on("message",function(i,o){let c=!o&&n._readableState.objectMode?i.toString():i;n.push(c)||r.pause()}),r.once("error",function(i){n.destroyed||(t=!1,n.destroy(i))}),r.once("close",function(){n.destroyed||n.push(null)}),n._destroy=function(s,i){if(r.readyState===r.CLOSED){i(s),process.nextTick(Rn,n);return}let o=!1;r.once("error",function(a){o=!0,i(a)}),r.once("close",function(){o||i(s),process.nextTick(Rn,n)}),t&&r.terminate()},n._final=function(s){if(r.readyState===r.CONNECTING){r.once("open",function(){n._final(s)});return}r._socket!==null&&(r._socket._writableState.finished?(s(),n._readableState.endEmitted&&n.destroy()):(r._socket.once("finish",function(){s()}),r.close()))},n._read=function(){r.isPaused&&r.resume()},n._write=function(s,i,o){if(r.readyState===r.CONNECTING){r.once("open",function(){n._write(s,i,o)});return}r.send(s,o)},n.on("end",co),n.on("error",Ln),n}Mn.exports=lo});var Gt=E((Qa,Bn)=>{"use strict";var{tokenChars:uo}=ce();function ho(r){let e=new Set,t=-1,n=-1,s=0;for(s;s<r.length;s++){let o=r.charCodeAt(s);if(n===-1&&uo[o]===1)t===-1&&(t=s);else if(s!==0&&(o===32||o===9))n===-1&&t!==-1&&(n=s);else if(o===44){if(t===-1)throw new SyntaxError(`Unexpected character at index ${s}`);n===-1&&(n=s);let c=r.slice(t,n);if(e.has(c))throw new SyntaxError(`The "${c}" subprotocol is duplicated`);e.add(c),t=n=-1}else throw new SyntaxError(`Unexpected character at index ${s}`)}if(t===-1||n!==-1)throw new SyntaxError("Unexpected end of input");let i=r.slice(t,s);if(e.has(i))throw new SyntaxError(`The "${i}" subprotocol is duplicated`);return e.add(i),e}Bn.exports={parse:ho}});var Hn=E((ec,Vn)=>{"use strict";var fo=require("events"),Ze=require("http"),{Duplex:Za}=require("stream"),{createHash:po}=require("crypto"),$n=Ye(),Z=ae(),go=Gt(),mo=Qe(),{CLOSE_TIMEOUT:_o,GUID:yo,kWebSocket:bo}=$(),So=/^[+/0-9A-Za-z]{22}==$/,Un=0,Wn=1,qn=2,Kt=class extends fo{constructor(e,t){if(super(),e={allowSynchronousEvents:!0,autoPong:!0,maxPayload:100*1024*1024,skipUTF8Validation:!1,perMessageDeflate:!1,handleProtocols:null,clientTracking:!0,closeTimeout:_o,verifyClient:null,noServer:!1,backlog:null,server:null,host:null,path:null,port:null,WebSocket:mo,...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=Ze.createServer((n,s)=>{let i=Ze.STATUS_CODES[426];s.writeHead(426,{"Content-Length":i.length,"Content-Type":"text/plain"}),s.end(i)}),this._server.listen(e.port,e.host,e.backlog,t)):e.server&&(this._server=e.server),this._server){let n=this.emit.bind(this,"connection");this._removeListeners=wo(this._server,{listening:this.emit.bind(this,"listening"),error:this.emit.bind(this,"error"),upgrade:(s,i,o)=>{this.handleUpgrade(s,i,o,n)}})}e.perMessageDeflate===!0&&(e.perMessageDeflate={}),e.clientTracking&&(this.clients=new Set,this._shouldEmitClose=!1),this.options=e,this._state=Un}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===qn){e&&this.once("close",()=>{e(new Error("The server is not running"))}),process.nextTick(Ee,this);return}if(e&&this.once("close",e),this._state!==Wn)if(this._state=Wn,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(Ee,this):process.nextTick(Ee,this);else{let t=this._server;this._removeListeners(),this._removeListeners=this._server=null,t.close(()=>{Ee(this)})}}shouldHandle(e){if(this.options.path){let t=e.url.indexOf("?");if((t!==-1?e.url.slice(0,t):e.url)!==this.options.path)return!1}return!0}handleUpgrade(e,t,n,s){t.on("error",Fn);let i=e.headers["sec-websocket-key"],o=e.headers.upgrade,c=+e.headers["sec-websocket-version"];if(e.method!=="GET"){ee(this,e,t,405,"Invalid HTTP method");return}if(o===void 0||o.toLowerCase()!=="websocket"){ee(this,e,t,400,"Invalid Upgrade header");return}if(i===void 0||!So.test(i)){ee(this,e,t,400,"Missing or invalid Sec-WebSocket-Key header");return}if(c!==13&&c!==8){ee(this,e,t,400,"Missing or invalid Sec-WebSocket-Version header",{"Sec-WebSocket-Version":"13, 8"});return}if(!this.shouldHandle(e)){ve(t,400);return}let a=e.headers["sec-websocket-protocol"],l=new Set;if(a!==void 0)try{l=go.parse(a)}catch{ee(this,e,t,400,"Invalid Sec-WebSocket-Protocol header");return}let d=e.headers["sec-websocket-extensions"],u={};if(this.options.perMessageDeflate&&d!==void 0){let h=new Z({...this.options.perMessageDeflate,isServer:!0,maxPayload:this.options.maxPayload});try{let g=$n.parse(d);g[Z.extensionName]&&(h.accept(g[Z.extensionName]),u[Z.extensionName]=h)}catch{ee(this,e,t,400,"Invalid or unacceptable Sec-WebSocket-Extensions header");return}}if(this.options.verifyClient){let h={origin:e.headers[`${c===8?"sec-websocket-origin":"origin"}`],secure:!!(e.socket.authorized||e.socket.encrypted),req:e};if(this.options.verifyClient.length===2){this.options.verifyClient(h,(g,f,p,m)=>{if(!g)return ve(t,f||401,p,m);this.completeUpgrade(u,i,l,e,t,n,s)});return}if(!this.options.verifyClient(h))return ve(t,401)}this.completeUpgrade(u,i,l,e,t,n,s)}completeUpgrade(e,t,n,s,i,o,c){if(!i.readable||!i.writable)return i.destroy();if(i[bo])throw new Error("server.handleUpgrade() was called more than once with the same socket, possibly due to a misconfiguration");if(this._state>Un)return ve(i,503);let l=["HTTP/1.1 101 Switching Protocols","Upgrade: websocket","Connection: Upgrade",`Sec-WebSocket-Accept: ${po("sha1").update(t+yo).digest("base64")}`],d=new this.options.WebSocket(null,void 0,this.options);if(n.size){let u=this.options.handleProtocols?this.options.handleProtocols(n,s):n.values().next().value;u&&(l.push(`Sec-WebSocket-Protocol: ${u}`),d._protocol=u)}if(e[Z.extensionName]){let u=e[Z.extensionName].params,h=$n.format({[Z.extensionName]:[u]});l.push(`Sec-WebSocket-Extensions: ${h}`),d._extensions=e}this.emit("headers",l,s),i.write(l.concat(`\r
23
+ `)}),this}_outputHelpIfRequested(e){let t=this._getHelpOption();t&&e.find(s=>t.is(s))&&(this.outputHelp(),this._exit(0,"commander.helpDisplayed","(outputHelp)"))}};function fr(r){return r.map(e=>{if(!e.startsWith("--inspect"))return e;let t,n="127.0.0.1",s="9229",i;return(i=e.match(/^(--inspect(-brk)?)$/))!==null?t=i[1]:(i=e.match(/^(--inspect(-brk|-port)?)=([^:]+)$/))!==null?(t=i[1],/^\d+$/.test(i[3])?s=i[3]:n=i[3]):(i=e.match(/^(--inspect(-brk|-port)?)=([^:]+):(\d+)$/))!==null&&(t=i[1],n=i[3],s=i[4]),t&&s!=="0"?`${t}=${n}:${parseInt(s)+1}`:e})}pr.Command=wt});var br=E(T=>{var{Argument:mr}=Le(),{Command:Et}=gr(),{CommanderError:$s,InvalidArgumentError:_r}=ge(),{Help:Us}=ft(),{Option:yr}=_t();T.program=new Et;T.createCommand=r=>new Et(r);T.createOption=(r,e)=>new yr(r,e);T.createArgument=(r,e)=>new mr(r,e);T.Command=Et;T.Option=yr;T.Argument=mr;T.Help=Us;T.CommanderError=$s;T.InvalidArgumentError=_r;T.InvalidOptionArgumentError=_r});var Ir=E(k=>{"use strict";var vt=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports),Ws=vt(r=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.sync=r.isexe=void 0;var e=require("node:fs"),t=require("node:fs/promises"),n=async(c,a={})=>{let{ignoreErrors:l=!1}=a;try{return i(await(0,t.stat)(c),a)}catch(d){let u=d;if(l||u.code==="EACCES")return!1;throw u}};r.isexe=n;var s=(c,a={})=>{let{ignoreErrors:l=!1}=a;try{return i((0,e.statSync)(c),a)}catch(d){let u=d;if(l||u.code==="EACCES")return!1;throw u}};r.sync=s;var i=(c,a)=>c.isFile()&&o(c,a),o=(c,a)=>{let l=a.uid??process.getuid?.(),d=a.groups??process.getgroups?.()??[],u=a.gid??process.getgid?.()??d[0];if(l===void 0||u===void 0)throw new Error("cannot get uid or gid");let h=new Set([u,...d]),g=c.mode,f=c.uid,p=c.gid,m=parseInt("100",8),x=parseInt("010",8),A=parseInt("001",8),b=m|x;return!!(g&A||g&x&&h.has(p)||g&m&&f===l||g&b&&l===0)}}),Fs=vt(r=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.sync=r.isexe=void 0;var e=require("node:fs"),t=require("node:fs/promises"),n=require("node:path"),s=async(a,l={})=>{let{ignoreErrors:d=!1}=l;try{return c(await(0,t.stat)(a),a,l)}catch(u){let h=u;if(d||h.code==="EACCES")return!1;throw h}};r.isexe=s;var i=(a,l={})=>{let{ignoreErrors:d=!1}=l;try{return c((0,e.statSync)(a),a,l)}catch(u){let h=u;if(d||h.code==="EACCES")return!1;throw h}};r.sync=i;var o=(a,l)=>{let{pathExt:d=process.env.PATHEXT||""}=l,u=d.split(n.delimiter);if(u.indexOf("")!==-1)return!0;for(let h of u){let g=h.toLowerCase(),f=a.substring(a.length-g.length).toLowerCase();if(g&&f===g)return!0}return!1},c=(a,l,d)=>a.isFile()&&o(l,d)}),qs=vt(r=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0})}),Er=k&&k.__createBinding||(Object.create?(function(r,e,t,n){n===void 0&&(n=t);var s=Object.getOwnPropertyDescriptor(e,t);(!s||("get"in s?!e.__esModule:s.writable||s.configurable))&&(s={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(r,n,s)}):(function(r,e,t,n){n===void 0&&(n=t),r[n]=e[t]})),Vs=k&&k.__setModuleDefault||(Object.create?(function(r,e){Object.defineProperty(r,"default",{enumerable:!0,value:e})}):function(r,e){r.default=e}),vr=k&&k.__importStar||(function(){var r=function(e){return r=Object.getOwnPropertyNames||function(t){var n=[];for(var s in t)Object.prototype.hasOwnProperty.call(t,s)&&(n[n.length]=s);return n},r(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var n=r(e),s=0;s<n.length;s++)n[s]!=="default"&&Er(t,e,n[s]);return Vs(t,e),t}})(),Gs=k&&k.__exportStar||function(r,e){for(var t in r)t!=="default"&&!Object.prototype.hasOwnProperty.call(e,t)&&Er(e,r,t)};Object.defineProperty(k,"__esModule",{value:!0});k.sync=k.isexe=k.posix=k.win32=void 0;var xr=vr(Ws());k.posix=xr;var kr=vr(Fs());k.win32=kr;Gs(qs(),k);var Hs=process.env._ISEXE_TEST_PLATFORM_||process.platform,Or=Hs==="win32"?kr:xr;k.isexe=Or.isexe;k.sync=Or.sync});var jr=E((Da,Mr)=>{var{isexe:Ks,sync:Ys}=Ir(),{join:zs,delimiter:Js,sep:Ar,posix:Cr}=require("path"),Tr=process.platform==="win32",Pr=new RegExp(`[${Cr.sep}${Ar===Cr.sep?"":Ar}]`.replace(/(\\)/g,"\\$1")),Xs=new RegExp(`^\\.${Pr.source}`),Nr=r=>Object.assign(new Error(`not found: ${r}`),{code:"ENOENT"}),Dr=(r,{path:e=process.env.PATH,pathExt:t=process.env.PATHEXT,delimiter:n=Js})=>{let s=r.match(Pr)?[""]:[...Tr?[process.cwd()]:[],...(e||"").split(n)];if(Tr){let i=t||[".EXE",".CMD",".BAT",".COM"].join(n),o=i.split(n).flatMap(c=>[c,c.toLowerCase()]);return r.includes(".")&&o[0]!==""&&o.unshift(""),{pathEnv:s,pathExt:o,pathExtExe:i}}return{pathEnv:s,pathExt:[""]}},Rr=(r,e)=>{let t=/^".*"$/.test(r)?r.slice(1,-1):r;return(!t&&Xs.test(e)?e.slice(0,2):"")+zs(t,e)},Lr=async(r,e={})=>{let{pathEnv:t,pathExt:n,pathExtExe:s}=Dr(r,e),i=[];for(let o of t){let c=Rr(o,r);for(let a of n){let l=c+a;if(await Ks(l,{pathExt:s,ignoreErrors:!0})){if(!e.all)return l;i.push(l)}}}if(e.all&&i.length)return i;if(e.nothrow)return null;throw Nr(r)},Qs=(r,e={})=>{let{pathEnv:t,pathExt:n,pathExtExe:s}=Dr(r,e),i=[];for(let o of t){let c=Rr(o,r);for(let a of n){let l=c+a;if(Ys(l,{pathExt:s,ignoreErrors:!0})){if(!e.all)return l;i.push(l)}}}if(e.all&&i.length)return i;if(e.nothrow)return null;throw Nr(r)};Mr.exports=Lr;Lr.sync=Qs});var $=E((ja,Vr)=>{"use strict";var Fr=["nodebuffer","arraybuffer","fragments"],qr=typeof Blob<"u";qr&&Fr.push("blob");Vr.exports={BINARY_TYPES:Fr,CLOSE_TIMEOUT:3e4,EMPTY_BUFFER:Buffer.alloc(0),GUID:"258EAFA5-E914-47DA-95CA-C5AB0DC85B11",hasBlob:qr,kForOnEventAttribute:Symbol("kIsForOnEventAttribute"),kListener:Symbol("kListener"),kStatusCode:Symbol("status-code"),kWebSocket:Symbol("websocket"),NOOP:()=>{}}});var _e=E((Ba,Ue)=>{"use strict";var{EMPTY_BUFFER:ri}=$(),It=Buffer[Symbol.species];function ni(r,e){if(r.length===0)return ri;if(r.length===1)return r[0];let t=Buffer.allocUnsafe(e),n=0;for(let s=0;s<r.length;s++){let i=r[s];t.set(i,n),n+=i.length}return n<e?new It(t.buffer,t.byteOffset,n):t}function Gr(r,e,t,n,s){for(let i=0;i<s;i++)t[n+i]=r[i]^e[i&3]}function Hr(r,e){for(let t=0;t<r.length;t++)r[t]^=e[t&3]}function si(r){return r.length===r.buffer.byteLength?r.buffer:r.buffer.slice(r.byteOffset,r.byteOffset+r.length)}function At(r){if(At.readOnly=!0,Buffer.isBuffer(r))return r;let e;return r instanceof ArrayBuffer?e=new It(r):ArrayBuffer.isView(r)?e=new It(r.buffer,r.byteOffset,r.byteLength):(e=Buffer.from(r),At.readOnly=!1),e}Ue.exports={concat:ni,mask:Gr,toArrayBuffer:si,toBuffer:At,unmask:Hr};if(!process.env.WS_NO_BUFFER_UTIL)try{let r=require("bufferutil");Ue.exports.mask=function(e,t,n,s,i){i<48?Gr(e,t,n,s,i):r.mask(e,t,n,s,i)},Ue.exports.unmask=function(e,t){e.length<32?Hr(e,t):r.unmask(e,t)}}catch{}});var zr=E(($a,Yr)=>{"use strict";var Kr=Symbol("kDone"),Ct=Symbol("kRun"),Tt=class{constructor(e){this[Kr]=()=>{this.pending--,this[Ct]()},this.concurrency=e||1/0,this.jobs=[],this.pending=0}add(e){this.jobs.push(e),this[Ct]()}[Ct](){if(this.pending!==this.concurrency&&this.jobs.length){let e=this.jobs.shift();this.pending++,e(this[Kr])}}};Yr.exports=Tt});var ae=E((Ua,Zr)=>{"use strict";var ye=require("zlib"),Jr=_e(),ii=zr(),{kStatusCode:Xr}=$(),oi=Buffer[Symbol.species],ai=Buffer.from([0,0,255,255]),Fe=Symbol("permessage-deflate"),U=Symbol("total-length"),ie=Symbol("callback"),G=Symbol("buffers"),oe=Symbol("error"),We,Pt=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,!We){let t=this._options.concurrencyLimit!==void 0?this._options.concurrencyLimit:10;We=new ii(t)}}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[ie];this._deflate.close(),this._deflate=null,e&&e(new Error("The deflate stream was closed while data was being processed"))}}acceptAsServer(e){let t=this._options,n=e.find(s=>!(t.serverNoContextTakeover===!1&&s.server_no_context_takeover||s.server_max_window_bits&&(t.serverMaxWindowBits===!1||typeof t.serverMaxWindowBits=="number"&&t.serverMaxWindowBits>s.server_max_window_bits)||typeof t.clientMaxWindowBits=="number"&&!s.client_max_window_bits));if(!n)throw new Error("None of the extension offers can be accepted");return t.serverNoContextTakeover&&(n.server_no_context_takeover=!0),t.clientNoContextTakeover&&(n.client_no_context_takeover=!0),typeof t.serverMaxWindowBits=="number"&&(n.server_max_window_bits=t.serverMaxWindowBits),typeof t.clientMaxWindowBits=="number"?n.client_max_window_bits=t.clientMaxWindowBits:(n.client_max_window_bits===!0||t.clientMaxWindowBits===!1)&&delete n.client_max_window_bits,n}acceptAsClient(e){let t=e[0];if(this._options.clientNoContextTakeover===!1&&t.client_no_context_takeover)throw new Error('Unexpected parameter "client_no_context_takeover"');if(!t.client_max_window_bits)typeof this._options.clientMaxWindowBits=="number"&&(t.client_max_window_bits=this._options.clientMaxWindowBits);else if(this._options.clientMaxWindowBits===!1||typeof this._options.clientMaxWindowBits=="number"&&t.client_max_window_bits>this._options.clientMaxWindowBits)throw new Error('Unexpected or invalid parameter "client_max_window_bits"');return t}normalizeParams(e){return e.forEach(t=>{Object.keys(t).forEach(n=>{let s=t[n];if(s.length>1)throw new Error(`Parameter "${n}" must have only a single value`);if(s=s[0],n==="client_max_window_bits"){if(s!==!0){let i=+s;if(!Number.isInteger(i)||i<8||i>15)throw new TypeError(`Invalid value for parameter "${n}": ${s}`);s=i}else if(!this._isServer)throw new TypeError(`Invalid value for parameter "${n}": ${s}`)}else if(n==="server_max_window_bits"){let i=+s;if(!Number.isInteger(i)||i<8||i>15)throw new TypeError(`Invalid value for parameter "${n}": ${s}`);s=i}else if(n==="client_no_context_takeover"||n==="server_no_context_takeover"){if(s!==!0)throw new TypeError(`Invalid value for parameter "${n}": ${s}`)}else throw new Error(`Unknown parameter "${n}"`);t[n]=s})}),e}decompress(e,t,n){We.add(s=>{this._decompress(e,t,(i,o)=>{s(),n(i,o)})})}compress(e,t,n){We.add(s=>{this._compress(e,t,(i,o)=>{s(),n(i,o)})})}_decompress(e,t,n){let s=this._isServer?"client":"server";if(!this._inflate){let i=`${s}_max_window_bits`,o=typeof this.params[i]!="number"?ye.Z_DEFAULT_WINDOWBITS:this.params[i];this._inflate=ye.createInflateRaw({...this._options.zlibInflateOptions,windowBits:o}),this._inflate[Fe]=this,this._inflate[U]=0,this._inflate[G]=[],this._inflate.on("error",li),this._inflate.on("data",Qr)}this._inflate[ie]=n,this._inflate.write(e),t&&this._inflate.write(ai),this._inflate.flush(()=>{let i=this._inflate[oe];if(i){this._inflate.close(),this._inflate=null,n(i);return}let o=Jr.concat(this._inflate[G],this._inflate[U]);this._inflate._readableState.endEmitted?(this._inflate.close(),this._inflate=null):(this._inflate[U]=0,this._inflate[G]=[],t&&this.params[`${s}_no_context_takeover`]&&this._inflate.reset()),n(null,o)})}_compress(e,t,n){let s=this._isServer?"server":"client";if(!this._deflate){let i=`${s}_max_window_bits`,o=typeof this.params[i]!="number"?ye.Z_DEFAULT_WINDOWBITS:this.params[i];this._deflate=ye.createDeflateRaw({...this._options.zlibDeflateOptions,windowBits:o}),this._deflate[U]=0,this._deflate[G]=[],this._deflate.on("data",ci)}this._deflate[ie]=n,this._deflate.write(e),this._deflate.flush(ye.Z_SYNC_FLUSH,()=>{if(!this._deflate)return;let i=Jr.concat(this._deflate[G],this._deflate[U]);t&&(i=new oi(i.buffer,i.byteOffset,i.length-4)),this._deflate[ie]=null,this._deflate[U]=0,this._deflate[G]=[],t&&this.params[`${s}_no_context_takeover`]&&this._deflate.reset(),n(null,i)})}};Zr.exports=Pt;function ci(r){this[G].push(r),this[U]+=r.length}function Qr(r){if(this[U]+=r.length,this[Fe]._maxPayload<1||this[U]<=this[Fe]._maxPayload){this[G].push(r);return}this[oe]=new RangeError("Max payload size exceeded"),this[oe].code="WS_ERR_UNSUPPORTED_MESSAGE_LENGTH",this[oe][Xr]=1009,this.removeListener("data",Qr),this.reset()}function li(r){if(this[Fe]._inflate=null,this[oe]){this[ie](this[oe]);return}r[Xr]=1007,this[ie](r)}});var ce=E((Wa,qe)=>{"use strict";var{isUtf8:en}=require("buffer"),{hasBlob:di}=$(),ui=[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 hi(r){return r>=1e3&&r<=1014&&r!==1004&&r!==1005&&r!==1006||r>=3e3&&r<=4999}function Nt(r){let e=r.length,t=0;for(;t<e;)if((r[t]&128)===0)t++;else if((r[t]&224)===192){if(t+1===e||(r[t+1]&192)!==128||(r[t]&254)===192)return!1;t+=2}else if((r[t]&240)===224){if(t+2>=e||(r[t+1]&192)!==128||(r[t+2]&192)!==128||r[t]===224&&(r[t+1]&224)===128||r[t]===237&&(r[t+1]&224)===160)return!1;t+=3}else if((r[t]&248)===240){if(t+3>=e||(r[t+1]&192)!==128||(r[t+2]&192)!==128||(r[t+3]&192)!==128||r[t]===240&&(r[t+1]&240)===128||r[t]===244&&r[t+1]>143||r[t]>244)return!1;t+=4}else return!1;return!0}function fi(r){return di&&typeof r=="object"&&typeof r.arrayBuffer=="function"&&typeof r.type=="string"&&typeof r.stream=="function"&&(r[Symbol.toStringTag]==="Blob"||r[Symbol.toStringTag]==="File")}qe.exports={isBlob:fi,isValidStatusCode:hi,isValidUTF8:Nt,tokenChars:ui};if(en)qe.exports.isValidUTF8=function(r){return r.length<24?Nt(r):en(r)};else if(!process.env.WS_NO_UTF_8_VALIDATE)try{let r=require("utf-8-validate");qe.exports.isValidUTF8=function(e){return e.length<32?Nt(e):r(e)}}catch{}});var jt=E((Fa,cn)=>{"use strict";var{Writable:pi}=require("stream"),tn=ae(),{BINARY_TYPES:gi,EMPTY_BUFFER:rn,kStatusCode:mi,kWebSocket:_i}=$(),{concat:Dt,toArrayBuffer:yi,unmask:bi}=_e(),{isValidStatusCode:Si,isValidUTF8:nn}=ce(),Ve=Buffer[Symbol.species],P=0,sn=1,on=2,an=3,Rt=4,Lt=5,Ge=6,Mt=class extends pi{constructor(e={}){super(),this._allowSynchronousEvents=e.allowSynchronousEvents!==void 0?e.allowSynchronousEvents:!0,this._binaryType=e.binaryType||gi[0],this._extensions=e.extensions||{},this._isServer=!!e.isServer,this._maxPayload=e.maxPayload|0,this._skipUTF8Validation=!!e.skipUTF8Validation,this[_i]=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=P}_write(e,t,n){if(this._opcode===8&&this._state==P)return n();this._bufferedBytes+=e.length,this._buffers.push(e),this.startLoop(n)}consume(e){if(this._bufferedBytes-=e,e===this._buffers[0].length)return this._buffers.shift();if(e<this._buffers[0].length){let n=this._buffers[0];return this._buffers[0]=new Ve(n.buffer,n.byteOffset+e,n.length-e),new Ve(n.buffer,n.byteOffset,e)}let t=Buffer.allocUnsafe(e);do{let n=this._buffers[0],s=t.length-e;e>=n.length?t.set(this._buffers.shift(),s):(t.set(new Uint8Array(n.buffer,n.byteOffset,e),s),this._buffers[0]=new Ve(n.buffer,n.byteOffset+e,n.length-e)),e-=n.length}while(e>0);return t}startLoop(e){this._loop=!0;do switch(this._state){case P:this.getInfo(e);break;case sn:this.getPayloadLength16(e);break;case on:this.getPayloadLength64(e);break;case an:this.getMask();break;case Rt:this.getData(e);break;case Lt:case Ge:this._loop=!1;return}while(this._loop);this._errored||e()}getInfo(e){if(this._bufferedBytes<2){this._loop=!1;return}let t=this.consume(2);if((t[0]&48)!==0){let s=this.createError(RangeError,"RSV2 and RSV3 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_2_3");e(s);return}let n=(t[0]&64)===64;if(n&&!this._extensions[tn.extensionName]){let s=this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");e(s);return}if(this._fin=(t[0]&128)===128,this._opcode=t[0]&15,this._payloadLength=t[1]&127,this._opcode===0){if(n){let s=this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");e(s);return}if(!this._fragmented){let s=this.createError(RangeError,"invalid opcode 0",!0,1002,"WS_ERR_INVALID_OPCODE");e(s);return}this._opcode=this._fragmented}else if(this._opcode===1||this._opcode===2){if(this._fragmented){let s=this.createError(RangeError,`invalid opcode ${this._opcode}`,!0,1002,"WS_ERR_INVALID_OPCODE");e(s);return}this._compressed=n}else if(this._opcode>7&&this._opcode<11){if(!this._fin){let s=this.createError(RangeError,"FIN must be set",!0,1002,"WS_ERR_EXPECTED_FIN");e(s);return}if(n){let s=this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");e(s);return}if(this._payloadLength>125||this._opcode===8&&this._payloadLength===1){let s=this.createError(RangeError,`invalid payload length ${this._payloadLength}`,!0,1002,"WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH");e(s);return}}else{let s=this.createError(RangeError,`invalid opcode ${this._opcode}`,!0,1002,"WS_ERR_INVALID_OPCODE");e(s);return}if(!this._fin&&!this._fragmented&&(this._fragmented=this._opcode),this._masked=(t[1]&128)===128,this._isServer){if(!this._masked){let s=this.createError(RangeError,"MASK must be set",!0,1002,"WS_ERR_EXPECTED_MASK");e(s);return}}else if(this._masked){let s=this.createError(RangeError,"MASK must be clear",!0,1002,"WS_ERR_UNEXPECTED_MASK");e(s);return}this._payloadLength===126?this._state=sn:this._payloadLength===127?this._state=on: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 t=this.consume(8),n=t.readUInt32BE(0);if(n>Math.pow(2,21)-1){let s=this.createError(RangeError,"Unsupported WebSocket frame: payload length > 2^53 - 1",!1,1009,"WS_ERR_UNSUPPORTED_DATA_PAYLOAD_LENGTH");e(s);return}this._payloadLength=n*Math.pow(2,32)+t.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 t=this.createError(RangeError,"Max payload size exceeded",!1,1009,"WS_ERR_UNSUPPORTED_MESSAGE_LENGTH");e(t);return}this._masked?this._state=an:this._state=Rt}getMask(){if(this._bufferedBytes<4){this._loop=!1;return}this._mask=this.consume(4),this._state=Rt}getData(e){let t=rn;if(this._payloadLength){if(this._bufferedBytes<this._payloadLength){this._loop=!1;return}t=this.consume(this._payloadLength),this._masked&&(this._mask[0]|this._mask[1]|this._mask[2]|this._mask[3])!==0&&bi(t,this._mask)}if(this._opcode>7){this.controlMessage(t,e);return}if(this._compressed){this._state=Lt,this.decompress(t,e);return}t.length&&(this._messageLength=this._totalPayloadLength,this._fragments.push(t)),this.dataMessage(e)}decompress(e,t){this._extensions[tn.extensionName].decompress(e,this._fin,(s,i)=>{if(s)return t(s);if(i.length){if(this._messageLength+=i.length,this._messageLength>this._maxPayload&&this._maxPayload>0){let o=this.createError(RangeError,"Max payload size exceeded",!1,1009,"WS_ERR_UNSUPPORTED_MESSAGE_LENGTH");t(o);return}this._fragments.push(i)}this.dataMessage(t),this._state===P&&this.startLoop(t)})}dataMessage(e){if(!this._fin){this._state=P;return}let t=this._messageLength,n=this._fragments;if(this._totalPayloadLength=0,this._messageLength=0,this._fragmented=0,this._fragments=[],this._opcode===2){let s;this._binaryType==="nodebuffer"?s=Dt(n,t):this._binaryType==="arraybuffer"?s=yi(Dt(n,t)):this._binaryType==="blob"?s=new Blob(n):s=n,this._allowSynchronousEvents?(this.emit("message",s,!0),this._state=P):(this._state=Ge,setImmediate(()=>{this.emit("message",s,!0),this._state=P,this.startLoop(e)}))}else{let s=Dt(n,t);if(!this._skipUTF8Validation&&!nn(s)){let i=this.createError(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");e(i);return}this._state===Lt||this._allowSynchronousEvents?(this.emit("message",s,!1),this._state=P):(this._state=Ge,setImmediate(()=>{this.emit("message",s,!1),this._state=P,this.startLoop(e)}))}}controlMessage(e,t){if(this._opcode===8){if(e.length===0)this._loop=!1,this.emit("conclude",1005,rn),this.end();else{let n=e.readUInt16BE(0);if(!Si(n)){let i=this.createError(RangeError,`invalid status code ${n}`,!0,1002,"WS_ERR_INVALID_CLOSE_CODE");t(i);return}let s=new Ve(e.buffer,e.byteOffset+2,e.length-2);if(!this._skipUTF8Validation&&!nn(s)){let i=this.createError(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");t(i);return}this._loop=!1,this.emit("conclude",n,s),this.end()}this._state=P;return}this._allowSynchronousEvents?(this.emit(this._opcode===9?"ping":"pong",e),this._state=P):(this._state=Ge,setImmediate(()=>{this.emit(this._opcode===9?"ping":"pong",e),this._state=P,this.startLoop(t)}))}createError(e,t,n,s,i){this._loop=!1,this._errored=!0;let o=new e(n?`Invalid WebSocket frame: ${t}`:t);return Error.captureStackTrace(o,this.createError),o.code=i,o[mi]=s,o}};cn.exports=Mt});var Ut=E((Va,un)=>{"use strict";var{Duplex:qa}=require("stream"),{randomFillSync:wi}=require("crypto"),ln=ae(),{EMPTY_BUFFER:Ei,kWebSocket:vi,NOOP:xi}=$(),{isBlob:le,isValidStatusCode:ki}=ce(),{mask:dn,toBuffer:J}=_e(),N=Symbol("kByteLength"),Oi=Buffer.alloc(4),He=8*1024,X,de=He,R=0,Ii=1,Ai=2,Bt=class r{constructor(e,t,n){this._extensions=t||{},n&&(this._generateMask=n,this._maskBuffer=Buffer.alloc(4)),this._socket=e,this._firstFragment=!0,this._compress=!1,this._bufferedBytes=0,this._queue=[],this._state=R,this.onerror=xi,this[vi]=void 0}static frame(e,t){let n,s=!1,i=2,o=!1;t.mask&&(n=t.maskBuffer||Oi,t.generateMask?t.generateMask(n):(de===He&&(X===void 0&&(X=Buffer.alloc(He)),wi(X,0,He),de=0),n[0]=X[de++],n[1]=X[de++],n[2]=X[de++],n[3]=X[de++]),o=(n[0]|n[1]|n[2]|n[3])===0,i=6);let c;typeof e=="string"?(!t.mask||o)&&t[N]!==void 0?c=t[N]:(e=Buffer.from(e),c=e.length):(c=e.length,s=t.mask&&t.readOnly&&!o);let a=c;c>=65536?(i+=8,a=127):c>125&&(i+=2,a=126);let l=Buffer.allocUnsafe(s?c+i:i);return l[0]=t.fin?t.opcode|128:t.opcode,t.rsv1&&(l[0]|=64),l[1]=a,a===126?l.writeUInt16BE(c,2):a===127&&(l[2]=l[3]=0,l.writeUIntBE(c,4,6)),t.mask?(l[1]|=128,l[i-4]=n[0],l[i-3]=n[1],l[i-2]=n[2],l[i-1]=n[3],o?[l,e]:s?(dn(e,n,l,i,c),[l]):(dn(e,n,e,0,c),[l,e])):[l,e]}close(e,t,n,s){let i;if(e===void 0)i=Ei;else{if(typeof e!="number"||!ki(e))throw new TypeError("First argument must be a valid error code number");if(t===void 0||!t.length)i=Buffer.allocUnsafe(2),i.writeUInt16BE(e,0);else{let c=Buffer.byteLength(t);if(c>123)throw new RangeError("The message must not be greater than 123 bytes");i=Buffer.allocUnsafe(2+c),i.writeUInt16BE(e,0),typeof t=="string"?i.write(t,2):i.set(t,2)}}let o={[N]:i.length,fin:!0,generateMask:this._generateMask,mask:n,maskBuffer:this._maskBuffer,opcode:8,readOnly:!1,rsv1:!1};this._state!==R?this.enqueue([this.dispatch,i,!1,o,s]):this.sendFrame(r.frame(i,o),s)}ping(e,t,n){let s,i;if(typeof e=="string"?(s=Buffer.byteLength(e),i=!1):le(e)?(s=e.size,i=!1):(e=J(e),s=e.length,i=J.readOnly),s>125)throw new RangeError("The data size must not be greater than 125 bytes");let o={[N]:s,fin:!0,generateMask:this._generateMask,mask:t,maskBuffer:this._maskBuffer,opcode:9,readOnly:i,rsv1:!1};le(e)?this._state!==R?this.enqueue([this.getBlobData,e,!1,o,n]):this.getBlobData(e,!1,o,n):this._state!==R?this.enqueue([this.dispatch,e,!1,o,n]):this.sendFrame(r.frame(e,o),n)}pong(e,t,n){let s,i;if(typeof e=="string"?(s=Buffer.byteLength(e),i=!1):le(e)?(s=e.size,i=!1):(e=J(e),s=e.length,i=J.readOnly),s>125)throw new RangeError("The data size must not be greater than 125 bytes");let o={[N]:s,fin:!0,generateMask:this._generateMask,mask:t,maskBuffer:this._maskBuffer,opcode:10,readOnly:i,rsv1:!1};le(e)?this._state!==R?this.enqueue([this.getBlobData,e,!1,o,n]):this.getBlobData(e,!1,o,n):this._state!==R?this.enqueue([this.dispatch,e,!1,o,n]):this.sendFrame(r.frame(e,o),n)}send(e,t,n){let s=this._extensions[ln.extensionName],i=t.binary?2:1,o=t.compress,c,a;typeof e=="string"?(c=Buffer.byteLength(e),a=!1):le(e)?(c=e.size,a=!1):(e=J(e),c=e.length,a=J.readOnly),this._firstFragment?(this._firstFragment=!1,o&&s&&s.params[s._isServer?"server_no_context_takeover":"client_no_context_takeover"]&&(o=c>=s._threshold),this._compress=o):(o=!1,i=0),t.fin&&(this._firstFragment=!0);let l={[N]:c,fin:t.fin,generateMask:this._generateMask,mask:t.mask,maskBuffer:this._maskBuffer,opcode:i,readOnly:a,rsv1:o};le(e)?this._state!==R?this.enqueue([this.getBlobData,e,this._compress,l,n]):this.getBlobData(e,this._compress,l,n):this._state!==R?this.enqueue([this.dispatch,e,this._compress,l,n]):this.dispatch(e,this._compress,l,n)}getBlobData(e,t,n,s){this._bufferedBytes+=n[N],this._state=Ai,e.arrayBuffer().then(i=>{if(this._socket.destroyed){let c=new Error("The socket was closed while the blob was being read");process.nextTick($t,this,c,s);return}this._bufferedBytes-=n[N];let o=J(i);t?this.dispatch(o,t,n,s):(this._state=R,this.sendFrame(r.frame(o,n),s),this.dequeue())}).catch(i=>{process.nextTick(Ci,this,i,s)})}dispatch(e,t,n,s){if(!t){this.sendFrame(r.frame(e,n),s);return}let i=this._extensions[ln.extensionName];this._bufferedBytes+=n[N],this._state=Ii,i.compress(e,n.fin,(o,c)=>{if(this._socket.destroyed){let a=new Error("The socket was closed while data was being compressed");$t(this,a,s);return}this._bufferedBytes-=n[N],this._state=R,n.readOnly=!1,this.sendFrame(r.frame(c,n),s),this.dequeue()})}dequeue(){for(;this._state===R&&this._queue.length;){let e=this._queue.shift();this._bufferedBytes-=e[3][N],Reflect.apply(e[0],this,e.slice(1))}}enqueue(e){this._bufferedBytes+=e[3][N],this._queue.push(e)}sendFrame(e,t){e.length===2?(this._socket.cork(),this._socket.write(e[0]),this._socket.write(e[1],t),this._socket.uncork()):this._socket.write(e[0],t)}};un.exports=Bt;function $t(r,e,t){typeof t=="function"&&t(e);for(let n=0;n<r._queue.length;n++){let s=r._queue[n],i=s[s.length-1];typeof i=="function"&&i(e)}}function Ci(r,e,t){$t(r,e,t),r.onerror(e)}});var Sn=E((Ga,bn)=>{"use strict";var{kForOnEventAttribute:be,kListener:Wt}=$(),hn=Symbol("kCode"),fn=Symbol("kData"),pn=Symbol("kError"),gn=Symbol("kMessage"),mn=Symbol("kReason"),ue=Symbol("kTarget"),_n=Symbol("kType"),yn=Symbol("kWasClean"),W=class{constructor(e){this[ue]=null,this[_n]=e}get target(){return this[ue]}get type(){return this[_n]}};Object.defineProperty(W.prototype,"target",{enumerable:!0});Object.defineProperty(W.prototype,"type",{enumerable:!0});var Q=class extends W{constructor(e,t={}){super(e),this[hn]=t.code===void 0?0:t.code,this[mn]=t.reason===void 0?"":t.reason,this[yn]=t.wasClean===void 0?!1:t.wasClean}get code(){return this[hn]}get reason(){return this[mn]}get wasClean(){return this[yn]}};Object.defineProperty(Q.prototype,"code",{enumerable:!0});Object.defineProperty(Q.prototype,"reason",{enumerable:!0});Object.defineProperty(Q.prototype,"wasClean",{enumerable:!0});var he=class extends W{constructor(e,t={}){super(e),this[pn]=t.error===void 0?null:t.error,this[gn]=t.message===void 0?"":t.message}get error(){return this[pn]}get message(){return this[gn]}};Object.defineProperty(he.prototype,"error",{enumerable:!0});Object.defineProperty(he.prototype,"message",{enumerable:!0});var Se=class extends W{constructor(e,t={}){super(e),this[fn]=t.data===void 0?null:t.data}get data(){return this[fn]}};Object.defineProperty(Se.prototype,"data",{enumerable:!0});var Ti={addEventListener(r,e,t={}){for(let s of this.listeners(r))if(!t[be]&&s[Wt]===e&&!s[be])return;let n;if(r==="message")n=function(i,o){let c=new Se("message",{data:o?i:i.toString()});c[ue]=this,Ke(e,this,c)};else if(r==="close")n=function(i,o){let c=new Q("close",{code:i,reason:o.toString(),wasClean:this._closeFrameReceived&&this._closeFrameSent});c[ue]=this,Ke(e,this,c)};else if(r==="error")n=function(i){let o=new he("error",{error:i,message:i.message});o[ue]=this,Ke(e,this,o)};else if(r==="open")n=function(){let i=new W("open");i[ue]=this,Ke(e,this,i)};else return;n[be]=!!t[be],n[Wt]=e,t.once?this.once(r,n):this.on(r,n)},removeEventListener(r,e){for(let t of this.listeners(r))if(t[Wt]===e&&!t[be]){this.removeListener(r,t);break}}};bn.exports={CloseEvent:Q,ErrorEvent:he,Event:W,EventTarget:Ti,MessageEvent:Se};function Ke(r,e,t){typeof r=="object"&&r.handleEvent?r.handleEvent.call(r,t):r.call(e,t)}});var Ye=E((Ha,wn)=>{"use strict";var{tokenChars:we}=ce();function M(r,e,t){r[e]===void 0?r[e]=[t]:r[e].push(t)}function Pi(r){let e=Object.create(null),t=Object.create(null),n=!1,s=!1,i=!1,o,c,a=-1,l=-1,d=-1,u=0;for(;u<r.length;u++)if(l=r.charCodeAt(u),o===void 0)if(d===-1&&we[l]===1)a===-1&&(a=u);else if(u!==0&&(l===32||l===9))d===-1&&a!==-1&&(d=u);else if(l===59||l===44){if(a===-1)throw new SyntaxError(`Unexpected character at index ${u}`);d===-1&&(d=u);let g=r.slice(a,d);l===44?(M(e,g,t),t=Object.create(null)):o=g,a=d=-1}else throw new SyntaxError(`Unexpected character at index ${u}`);else if(c===void 0)if(d===-1&&we[l]===1)a===-1&&(a=u);else if(l===32||l===9)d===-1&&a!==-1&&(d=u);else if(l===59||l===44){if(a===-1)throw new SyntaxError(`Unexpected character at index ${u}`);d===-1&&(d=u),M(t,r.slice(a,d),!0),l===44&&(M(e,o,t),t=Object.create(null),o=void 0),a=d=-1}else if(l===61&&a!==-1&&d===-1)c=r.slice(a,u),a=d=-1;else throw new SyntaxError(`Unexpected character at index ${u}`);else if(s){if(we[l]!==1)throw new SyntaxError(`Unexpected character at index ${u}`);a===-1?a=u:n||(n=!0),s=!1}else if(i)if(we[l]===1)a===-1&&(a=u);else if(l===34&&a!==-1)i=!1,d=u;else if(l===92)s=!0;else throw new SyntaxError(`Unexpected character at index ${u}`);else if(l===34&&r.charCodeAt(u-1)===61)i=!0;else if(d===-1&&we[l]===1)a===-1&&(a=u);else if(a!==-1&&(l===32||l===9))d===-1&&(d=u);else if(l===59||l===44){if(a===-1)throw new SyntaxError(`Unexpected character at index ${u}`);d===-1&&(d=u);let g=r.slice(a,d);n&&(g=g.replace(/\\/g,""),n=!1),M(t,c,g),l===44&&(M(e,o,t),t=Object.create(null),o=void 0),c=void 0,a=d=-1}else throw new SyntaxError(`Unexpected character at index ${u}`);if(a===-1||i||l===32||l===9)throw new SyntaxError("Unexpected end of input");d===-1&&(d=u);let h=r.slice(a,d);return o===void 0?M(e,h,t):(c===void 0?M(t,h,!0):n?M(t,c,h.replace(/\\/g,"")):M(t,c,h),M(e,o,t)),e}function Ni(r){return Object.keys(r).map(e=>{let t=r[e];return Array.isArray(t)||(t=[t]),t.map(n=>[e].concat(Object.keys(n).map(s=>{let i=n[s];return Array.isArray(i)||(i=[i]),i.map(o=>o===!0?s:`${s}=${o}`).join("; ")})).join("; ")).join(", ")}).join(", ")}wn.exports={format:Ni,parse:Pi}});var Qe=E((za,Dn)=>{"use strict";var Di=require("events"),Ri=require("https"),Li=require("http"),xn=require("net"),Mi=require("tls"),{randomBytes:ji,createHash:Bi}=require("crypto"),{Duplex:Ka,Readable:Ya}=require("stream"),{URL:Ft}=require("url"),H=ae(),$i=jt(),Ui=Ut(),{isBlob:Wi}=ce(),{BINARY_TYPES:En,CLOSE_TIMEOUT:Fi,EMPTY_BUFFER:ze,GUID:qi,kForOnEventAttribute:qt,kListener:Vi,kStatusCode:Gi,kWebSocket:I,NOOP:kn}=$(),{EventTarget:{addEventListener:Hi,removeEventListener:Ki}}=Sn(),{format:Yi,parse:zi}=Ye(),{toBuffer:Ji}=_e(),On=Symbol("kAborted"),Vt=[8,13],F=["CONNECTING","OPEN","CLOSING","CLOSED"],Xi=/^[!#$%&'*+\-.0-9A-Z^_`|a-z~]+$/,S=class r extends Di{constructor(e,t,n){super(),this._binaryType=En[0],this._closeCode=1006,this._closeFrameReceived=!1,this._closeFrameSent=!1,this._closeMessage=ze,this._closeTimer=null,this._errorEmitted=!1,this._extensions={},this._paused=!1,this._protocol="",this._readyState=r.CONNECTING,this._receiver=null,this._sender=null,this._socket=null,e!==null?(this._bufferedAmount=0,this._isServer=!1,this._redirects=0,t===void 0?t=[]:Array.isArray(t)||(typeof t=="object"&&t!==null?(n=t,t=[]):t=[t]),In(this,e,t,n)):(this._autoPong=n.autoPong,this._closeTimeout=n.closeTimeout,this._isServer=!0)}get binaryType(){return this._binaryType}set binaryType(e){En.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,t,n){let s=new $i({allowSynchronousEvents:n.allowSynchronousEvents,binaryType:this.binaryType,extensions:this._extensions,isServer:this._isServer,maxPayload:n.maxPayload,skipUTF8Validation:n.skipUTF8Validation}),i=new Ui(e,this._extensions,n.generateMask);this._receiver=s,this._sender=i,this._socket=e,s[I]=this,i[I]=this,e[I]=this,s.on("conclude",eo),s.on("drain",to),s.on("error",ro),s.on("message",no),s.on("ping",so),s.on("pong",io),i.onerror=oo,e.setTimeout&&e.setTimeout(0),e.setNoDelay&&e.setNoDelay(),t.length>0&&e.unshift(t),e.on("close",Tn),e.on("data",Xe),e.on("end",Pn),e.on("error",Nn),this._readyState=r.OPEN,this.emit("open")}emitClose(){if(!this._socket){this._readyState=r.CLOSED,this.emit("close",this._closeCode,this._closeMessage);return}this._extensions[H.extensionName]&&this._extensions[H.extensionName].cleanup(),this._receiver.removeAllListeners(),this._readyState=r.CLOSED,this.emit("close",this._closeCode,this._closeMessage)}close(e,t){if(this.readyState!==r.CLOSED){if(this.readyState===r.CONNECTING){C(this,this._req,"WebSocket was closed before the connection was established");return}if(this.readyState===r.CLOSING){this._closeFrameSent&&(this._closeFrameReceived||this._receiver._writableState.errorEmitted)&&this._socket.end();return}this._readyState=r.CLOSING,this._sender.close(e,t,!this._isServer,n=>{n||(this._closeFrameSent=!0,(this._closeFrameReceived||this._receiver._writableState.errorEmitted)&&this._socket.end())}),Cn(this)}}pause(){this.readyState===r.CONNECTING||this.readyState===r.CLOSED||(this._paused=!0,this._socket.pause())}ping(e,t,n){if(this.readyState===r.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof e=="function"?(n=e,e=t=void 0):typeof t=="function"&&(n=t,t=void 0),typeof e=="number"&&(e=e.toString()),this.readyState!==r.OPEN){Gt(this,e,n);return}t===void 0&&(t=!this._isServer),this._sender.ping(e||ze,t,n)}pong(e,t,n){if(this.readyState===r.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof e=="function"?(n=e,e=t=void 0):typeof t=="function"&&(n=t,t=void 0),typeof e=="number"&&(e=e.toString()),this.readyState!==r.OPEN){Gt(this,e,n);return}t===void 0&&(t=!this._isServer),this._sender.pong(e||ze,t,n)}resume(){this.readyState===r.CONNECTING||this.readyState===r.CLOSED||(this._paused=!1,this._receiver._writableState.needDrain||this._socket.resume())}send(e,t,n){if(this.readyState===r.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof t=="function"&&(n=t,t={}),typeof e=="number"&&(e=e.toString()),this.readyState!==r.OPEN){Gt(this,e,n);return}let s={binary:typeof e!="string",mask:!this._isServer,compress:!0,fin:!0,...t};this._extensions[H.extensionName]||(s.compress=!1),this._sender.send(e||ze,s,n)}terminate(){if(this.readyState!==r.CLOSED){if(this.readyState===r.CONNECTING){C(this,this._req,"WebSocket was closed before the connection was established");return}this._socket&&(this._readyState=r.CLOSING,this._socket.destroy())}}};Object.defineProperty(S,"CONNECTING",{enumerable:!0,value:F.indexOf("CONNECTING")});Object.defineProperty(S.prototype,"CONNECTING",{enumerable:!0,value:F.indexOf("CONNECTING")});Object.defineProperty(S,"OPEN",{enumerable:!0,value:F.indexOf("OPEN")});Object.defineProperty(S.prototype,"OPEN",{enumerable:!0,value:F.indexOf("OPEN")});Object.defineProperty(S,"CLOSING",{enumerable:!0,value:F.indexOf("CLOSING")});Object.defineProperty(S.prototype,"CLOSING",{enumerable:!0,value:F.indexOf("CLOSING")});Object.defineProperty(S,"CLOSED",{enumerable:!0,value:F.indexOf("CLOSED")});Object.defineProperty(S.prototype,"CLOSED",{enumerable:!0,value:F.indexOf("CLOSED")});["binaryType","bufferedAmount","extensions","isPaused","protocol","readyState","url"].forEach(r=>{Object.defineProperty(S.prototype,r,{enumerable:!0})});["open","error","close","message"].forEach(r=>{Object.defineProperty(S.prototype,`on${r}`,{enumerable:!0,get(){for(let e of this.listeners(r))if(e[qt])return e[Vi];return null},set(e){for(let t of this.listeners(r))if(t[qt]){this.removeListener(r,t);break}typeof e=="function"&&this.addEventListener(r,e,{[qt]:!0})}})});S.prototype.addEventListener=Hi;S.prototype.removeEventListener=Ki;Dn.exports=S;function In(r,e,t,n){let s={allowSynchronousEvents:!0,autoPong:!0,closeTimeout:Fi,protocolVersion:Vt[1],maxPayload:104857600,skipUTF8Validation:!1,perMessageDeflate:!0,followRedirects:!1,maxRedirects:10,...n,socketPath:void 0,hostname:void 0,protocol:void 0,timeout:void 0,method:"GET",host:void 0,path:void 0,port:void 0};if(r._autoPong=s.autoPong,r._closeTimeout=s.closeTimeout,!Vt.includes(s.protocolVersion))throw new RangeError(`Unsupported protocol version: ${s.protocolVersion} (supported versions: ${Vt.join(", ")})`);let i;if(e instanceof Ft)i=e;else try{i=new Ft(e)}catch{throw new SyntaxError(`Invalid URL: ${e}`)}i.protocol==="http:"?i.protocol="ws:":i.protocol==="https:"&&(i.protocol="wss:"),r._url=i.href;let o=i.protocol==="wss:",c=i.protocol==="ws+unix:",a;if(i.protocol!=="ws:"&&!o&&!c?a=`The URL's protocol must be one of "ws:", "wss:", "http:", "https:", or "ws+unix:"`:c&&!i.pathname?a="The URL's pathname is empty":i.hash&&(a="The URL contains a fragment identifier"),a){let p=new SyntaxError(a);if(r._redirects===0)throw p;Je(r,p);return}let l=o?443:80,d=ji(16).toString("base64"),u=o?Ri.request:Li.request,h=new Set,g;if(s.createConnection=s.createConnection||(o?Zi:Qi),s.defaultPort=s.defaultPort||l,s.port=i.port||l,s.host=i.hostname.startsWith("[")?i.hostname.slice(1,-1):i.hostname,s.headers={...s.headers,"Sec-WebSocket-Version":s.protocolVersion,"Sec-WebSocket-Key":d,Connection:"Upgrade",Upgrade:"websocket"},s.path=i.pathname+i.search,s.timeout=s.handshakeTimeout,s.perMessageDeflate&&(g=new H({...s.perMessageDeflate,isServer:!1,maxPayload:s.maxPayload}),s.headers["Sec-WebSocket-Extensions"]=Yi({[H.extensionName]:g.offer()})),t.length){for(let p of t){if(typeof p!="string"||!Xi.test(p)||h.has(p))throw new SyntaxError("An invalid or duplicated subprotocol was specified");h.add(p)}s.headers["Sec-WebSocket-Protocol"]=t.join(",")}if(s.origin&&(s.protocolVersion<13?s.headers["Sec-WebSocket-Origin"]=s.origin:s.headers.Origin=s.origin),(i.username||i.password)&&(s.auth=`${i.username}:${i.password}`),c){let p=s.path.split(":");s.socketPath=p[0],s.path=p[1]}let f;if(s.followRedirects){if(r._redirects===0){r._originalIpc=c,r._originalSecure=o,r._originalHostOrSocketPath=c?s.socketPath:i.host;let p=n&&n.headers;if(n={...n,headers:{}},p)for(let[m,x]of Object.entries(p))n.headers[m.toLowerCase()]=x}else if(r.listenerCount("redirect")===0){let p=c?r._originalIpc?s.socketPath===r._originalHostOrSocketPath:!1:r._originalIpc?!1:i.host===r._originalHostOrSocketPath;(!p||r._originalSecure&&!o)&&(delete s.headers.authorization,delete s.headers.cookie,p||delete s.headers.host,s.auth=void 0)}s.auth&&!n.headers.authorization&&(n.headers.authorization="Basic "+Buffer.from(s.auth).toString("base64")),f=r._req=u(s),r._redirects&&r.emit("redirect",r.url,f)}else f=r._req=u(s);s.timeout&&f.on("timeout",()=>{C(r,f,"Opening handshake has timed out")}),f.on("error",p=>{f===null||f[On]||(f=r._req=null,Je(r,p))}),f.on("response",p=>{let m=p.headers.location,x=p.statusCode;if(m&&s.followRedirects&&x>=300&&x<400){if(++r._redirects>s.maxRedirects){C(r,f,"Maximum redirects exceeded");return}f.abort();let A;try{A=new Ft(m,e)}catch{let w=new SyntaxError(`Invalid URL: ${m}`);Je(r,w);return}In(r,A,t,n)}else r.emit("unexpected-response",f,p)||C(r,f,`Unexpected server response: ${p.statusCode}`)}),f.on("upgrade",(p,m,x)=>{if(r.emit("upgrade",p),r.readyState!==S.CONNECTING)return;f=r._req=null;let A=p.headers.upgrade;if(A===void 0||A.toLowerCase()!=="websocket"){C(r,m,"Invalid Upgrade header");return}let b=Bi("sha1").update(d+qi).digest("base64");if(p.headers["sec-websocket-accept"]!==b){C(r,m,"Invalid Sec-WebSocket-Accept header");return}let w=p.headers["sec-websocket-protocol"],y;if(w!==void 0?h.size?h.has(w)||(y="Server sent an invalid subprotocol"):y="Server sent a subprotocol but none was requested":h.size&&(y="Server sent no subprotocol"),y){C(r,m,y);return}w&&(r._protocol=w);let D=p.headers["sec-websocket-extensions"];if(D!==void 0){if(!g){C(r,m,"Server sent a Sec-WebSocket-Extensions header but no extension was requested");return}let Y;try{Y=zi(D)}catch{C(r,m,"Invalid Sec-WebSocket-Extensions header");return}let De=Object.keys(Y);if(De.length!==1||De[0]!==H.extensionName){C(r,m,"Server indicated an extension that was not requested");return}try{g.accept(Y[H.extensionName])}catch{C(r,m,"Invalid Sec-WebSocket-Extensions header");return}r._extensions[H.extensionName]=g}r.setSocket(m,x,{allowSynchronousEvents:s.allowSynchronousEvents,generateMask:s.generateMask,maxPayload:s.maxPayload,skipUTF8Validation:s.skipUTF8Validation})}),s.finishRequest?s.finishRequest(f,r):f.end()}function Je(r,e){r._readyState=S.CLOSING,r._errorEmitted=!0,r.emit("error",e),r.emitClose()}function Qi(r){return r.path=r.socketPath,xn.connect(r)}function Zi(r){return r.path=void 0,!r.servername&&r.servername!==""&&(r.servername=xn.isIP(r.host)?"":r.host),Mi.connect(r)}function C(r,e,t){r._readyState=S.CLOSING;let n=new Error(t);Error.captureStackTrace(n,C),e.setHeader?(e[On]=!0,e.abort(),e.socket&&!e.socket.destroyed&&e.socket.destroy(),process.nextTick(Je,r,n)):(e.destroy(n),e.once("error",r.emit.bind(r,"error")),e.once("close",r.emitClose.bind(r)))}function Gt(r,e,t){if(e){let n=Wi(e)?e.size:Ji(e).length;r._socket?r._sender._bufferedBytes+=n:r._bufferedAmount+=n}if(t){let n=new Error(`WebSocket is not open: readyState ${r.readyState} (${F[r.readyState]})`);process.nextTick(t,n)}}function eo(r,e){let t=this[I];t._closeFrameReceived=!0,t._closeMessage=e,t._closeCode=r,t._socket[I]!==void 0&&(t._socket.removeListener("data",Xe),process.nextTick(An,t._socket),r===1005?t.close():t.close(r,e))}function to(){let r=this[I];r.isPaused||r._socket.resume()}function ro(r){let e=this[I];e._socket[I]!==void 0&&(e._socket.removeListener("data",Xe),process.nextTick(An,e._socket),e.close(r[Gi])),e._errorEmitted||(e._errorEmitted=!0,e.emit("error",r))}function vn(){this[I].emitClose()}function no(r,e){this[I].emit("message",r,e)}function so(r){let e=this[I];e._autoPong&&e.pong(r,!this._isServer,kn),e.emit("ping",r)}function io(r){this[I].emit("pong",r)}function An(r){r.resume()}function oo(r){let e=this[I];e.readyState!==S.CLOSED&&(e.readyState===S.OPEN&&(e._readyState=S.CLOSING,Cn(e)),this._socket.end(),e._errorEmitted||(e._errorEmitted=!0,e.emit("error",r)))}function Cn(r){r._closeTimer=setTimeout(r._socket.destroy.bind(r._socket),r._closeTimeout)}function Tn(){let r=this[I];if(this.removeListener("close",Tn),this.removeListener("data",Xe),this.removeListener("end",Pn),r._readyState=S.CLOSING,!this._readableState.endEmitted&&!r._closeFrameReceived&&!r._receiver._writableState.errorEmitted&&this._readableState.length!==0){let e=this.read(this._readableState.length);r._receiver.write(e)}r._receiver.end(),this[I]=void 0,clearTimeout(r._closeTimer),r._receiver._writableState.finished||r._receiver._writableState.errorEmitted?r.emitClose():(r._receiver.on("error",vn),r._receiver.on("finish",vn))}function Xe(r){this[I]._receiver.write(r)||this.pause()}function Pn(){let r=this[I];r._readyState=S.CLOSING,r._receiver.end(),this.end()}function Nn(){let r=this[I];this.removeListener("error",Nn),this.on("error",kn),r&&(r._readyState=S.CLOSING,this.destroy())}});var jn=E((Xa,Mn)=>{"use strict";var Ja=Qe(),{Duplex:ao}=require("stream");function Rn(r){r.emit("close")}function co(){!this.destroyed&&this._writableState.finished&&this.destroy()}function Ln(r){this.removeListener("error",Ln),this.destroy(),this.listenerCount("error")===0&&this.emit("error",r)}function lo(r,e){let t=!0,n=new ao({...e,autoDestroy:!1,emitClose:!1,objectMode:!1,writableObjectMode:!1});return r.on("message",function(i,o){let c=!o&&n._readableState.objectMode?i.toString():i;n.push(c)||r.pause()}),r.once("error",function(i){n.destroyed||(t=!1,n.destroy(i))}),r.once("close",function(){n.destroyed||n.push(null)}),n._destroy=function(s,i){if(r.readyState===r.CLOSED){i(s),process.nextTick(Rn,n);return}let o=!1;r.once("error",function(a){o=!0,i(a)}),r.once("close",function(){o||i(s),process.nextTick(Rn,n)}),t&&r.terminate()},n._final=function(s){if(r.readyState===r.CONNECTING){r.once("open",function(){n._final(s)});return}r._socket!==null&&(r._socket._writableState.finished?(s(),n._readableState.endEmitted&&n.destroy()):(r._socket.once("finish",function(){s()}),r.close()))},n._read=function(){r.isPaused&&r.resume()},n._write=function(s,i,o){if(r.readyState===r.CONNECTING){r.once("open",function(){n._write(s,i,o)});return}r.send(s,o)},n.on("end",co),n.on("error",Ln),n}Mn.exports=lo});var Ht=E((Qa,Bn)=>{"use strict";var{tokenChars:uo}=ce();function ho(r){let e=new Set,t=-1,n=-1,s=0;for(s;s<r.length;s++){let o=r.charCodeAt(s);if(n===-1&&uo[o]===1)t===-1&&(t=s);else if(s!==0&&(o===32||o===9))n===-1&&t!==-1&&(n=s);else if(o===44){if(t===-1)throw new SyntaxError(`Unexpected character at index ${s}`);n===-1&&(n=s);let c=r.slice(t,n);if(e.has(c))throw new SyntaxError(`The "${c}" subprotocol is duplicated`);e.add(c),t=n=-1}else throw new SyntaxError(`Unexpected character at index ${s}`)}if(t===-1||n!==-1)throw new SyntaxError("Unexpected end of input");let i=r.slice(t,s);if(e.has(i))throw new SyntaxError(`The "${i}" subprotocol is duplicated`);return e.add(i),e}Bn.exports={parse:ho}});var Gn=E((ec,Vn)=>{"use strict";var fo=require("events"),Ze=require("http"),{Duplex:Za}=require("stream"),{createHash:po}=require("crypto"),$n=Ye(),Z=ae(),go=Ht(),mo=Qe(),{CLOSE_TIMEOUT:_o,GUID:yo,kWebSocket:bo}=$(),So=/^[+/0-9A-Za-z]{22}==$/,Un=0,Wn=1,qn=2,Kt=class extends fo{constructor(e,t){if(super(),e={allowSynchronousEvents:!0,autoPong:!0,maxPayload:100*1024*1024,skipUTF8Validation:!1,perMessageDeflate:!1,handleProtocols:null,clientTracking:!0,closeTimeout:_o,verifyClient:null,noServer:!1,backlog:null,server:null,host:null,path:null,port:null,WebSocket:mo,...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=Ze.createServer((n,s)=>{let i=Ze.STATUS_CODES[426];s.writeHead(426,{"Content-Length":i.length,"Content-Type":"text/plain"}),s.end(i)}),this._server.listen(e.port,e.host,e.backlog,t)):e.server&&(this._server=e.server),this._server){let n=this.emit.bind(this,"connection");this._removeListeners=wo(this._server,{listening:this.emit.bind(this,"listening"),error:this.emit.bind(this,"error"),upgrade:(s,i,o)=>{this.handleUpgrade(s,i,o,n)}})}e.perMessageDeflate===!0&&(e.perMessageDeflate={}),e.clientTracking&&(this.clients=new Set,this._shouldEmitClose=!1),this.options=e,this._state=Un}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===qn){e&&this.once("close",()=>{e(new Error("The server is not running"))}),process.nextTick(Ee,this);return}if(e&&this.once("close",e),this._state!==Wn)if(this._state=Wn,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(Ee,this):process.nextTick(Ee,this);else{let t=this._server;this._removeListeners(),this._removeListeners=this._server=null,t.close(()=>{Ee(this)})}}shouldHandle(e){if(this.options.path){let t=e.url.indexOf("?");if((t!==-1?e.url.slice(0,t):e.url)!==this.options.path)return!1}return!0}handleUpgrade(e,t,n,s){t.on("error",Fn);let i=e.headers["sec-websocket-key"],o=e.headers.upgrade,c=+e.headers["sec-websocket-version"];if(e.method!=="GET"){ee(this,e,t,405,"Invalid HTTP method");return}if(o===void 0||o.toLowerCase()!=="websocket"){ee(this,e,t,400,"Invalid Upgrade header");return}if(i===void 0||!So.test(i)){ee(this,e,t,400,"Missing or invalid Sec-WebSocket-Key header");return}if(c!==13&&c!==8){ee(this,e,t,400,"Missing or invalid Sec-WebSocket-Version header",{"Sec-WebSocket-Version":"13, 8"});return}if(!this.shouldHandle(e)){ve(t,400);return}let a=e.headers["sec-websocket-protocol"],l=new Set;if(a!==void 0)try{l=go.parse(a)}catch{ee(this,e,t,400,"Invalid Sec-WebSocket-Protocol header");return}let d=e.headers["sec-websocket-extensions"],u={};if(this.options.perMessageDeflate&&d!==void 0){let h=new Z({...this.options.perMessageDeflate,isServer:!0,maxPayload:this.options.maxPayload});try{let g=$n.parse(d);g[Z.extensionName]&&(h.accept(g[Z.extensionName]),u[Z.extensionName]=h)}catch{ee(this,e,t,400,"Invalid or unacceptable Sec-WebSocket-Extensions header");return}}if(this.options.verifyClient){let h={origin:e.headers[`${c===8?"sec-websocket-origin":"origin"}`],secure:!!(e.socket.authorized||e.socket.encrypted),req:e};if(this.options.verifyClient.length===2){this.options.verifyClient(h,(g,f,p,m)=>{if(!g)return ve(t,f||401,p,m);this.completeUpgrade(u,i,l,e,t,n,s)});return}if(!this.options.verifyClient(h))return ve(t,401)}this.completeUpgrade(u,i,l,e,t,n,s)}completeUpgrade(e,t,n,s,i,o,c){if(!i.readable||!i.writable)return i.destroy();if(i[bo])throw new Error("server.handleUpgrade() was called more than once with the same socket, possibly due to a misconfiguration");if(this._state>Un)return ve(i,503);let l=["HTTP/1.1 101 Switching Protocols","Upgrade: websocket","Connection: Upgrade",`Sec-WebSocket-Accept: ${po("sha1").update(t+yo).digest("base64")}`],d=new this.options.WebSocket(null,void 0,this.options);if(n.size){let u=this.options.handleProtocols?this.options.handleProtocols(n,s):n.values().next().value;u&&(l.push(`Sec-WebSocket-Protocol: ${u}`),d._protocol=u)}if(e[Z.extensionName]){let u=e[Z.extensionName].params,h=$n.format({[Z.extensionName]:[u]});l.push(`Sec-WebSocket-Extensions: ${h}`),d._extensions=e}this.emit("headers",l,s),i.write(l.concat(`\r
24
24
  `).join(`\r
25
25
  `)),i.removeListener("error",Fn),d.setSocket(i,o,{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(Ee,this)})),c(d,s)}};Vn.exports=Kt;function wo(r,e){for(let t of Object.keys(e))r.on(t,e[t]);return function(){for(let n of Object.keys(e))r.removeListener(n,e[n])}}function Ee(r){r._state=qn,r.emit("close")}function Fn(){this.destroy()}function ve(r,e,t,n){t=t||Ze.STATUS_CODES[e],n={Connection:"close","Content-Type":"text/html","Content-Length":Buffer.byteLength(t),...n},r.once("finish",r.destroy),r.end(`HTTP/1.1 ${e} ${Ze.STATUS_CODES[e]}\r
26
26
  `+Object.keys(n).map(s=>`${s}: ${n[s]}`).join(`\r
@@ -28,9 +28,9 @@ Expecting one of '${n.join("', '")}'`);let s=`${e}Help`;return this.on(s,i=>{let
28
28
  \r
29
29
  `+t)}function ee(r,e,t,n,s,i){if(r.listenerCount("wsClientError")){let o=new Error(s);Error.captureStackTrace(o,ee),r.emit("wsClientError",o,t,e)}else ve(t,n,s,i)}});var Xn={};xs(Xn,{loadConfig:()=>zt,loadProjectSettings:()=>Xt,saveConfig:()=>Jt});function zt(){let r=q.default.existsSync(et)?et:Jn;q.default.existsSync(r)||(console.error("[bridge] Config not found. Run: bridge-agent auth"),process.exit(1));let e=q.default.readFileSync(r,"utf-8"),t;try{t=JSON.parse(e)}catch{console.error("[bridge] Invalid config file at",Jn),process.exit(1)}(!t||typeof t!="object")&&(console.error("[bridge] Config must be a JSON object. Run: bridge-agent auth"),process.exit(1));let n=t,s=typeof n.server=="string"?n.server:"",i=typeof n.token=="string"?n.token:"",o=typeof n.name=="string"?n.name:"bridge-agent";(!s||!i)&&(console.error("[bridge] Config missing server or token. Run: bridge-agent auth"),process.exit(1));let c={server:s,token:i,name:o};return n.agentPaths&&typeof n.agentPaths=="object"&&!Array.isArray(n.agentPaths)&&(c.agentPaths=Object.fromEntries(Object.entries(n.agentPaths).filter(([,a])=>typeof a=="string"))),c}function Jt(r){let e=xe.default.dirname(et);q.default.existsSync(e)||q.default.mkdirSync(e,{recursive:!0}),q.default.writeFileSync(et,JSON.stringify(r,null,2),{mode:384})}function Xt(r){let e=xe.default.join(r??process.cwd(),".jerico","settings.json");if(!q.default.existsSync(e))return{};try{let t=q.default.readFileSync(e,"utf-8"),n=JSON.parse(t);if(!n||typeof n!="object"||Array.isArray(n))return{};let s=n,i={};return typeof s.preferredAgent=="string"&&(i.preferredAgent=s.preferredAgent),s.hooks&&typeof s.hooks=="object"&&!Array.isArray(s.hooks)&&(i.hooks=Object.fromEntries(Object.entries(s.hooks).filter(([,o])=>typeof o=="string"))),s.env&&typeof s.env=="object"&&!Array.isArray(s.env)&&(i.env=Object.fromEntries(Object.entries(s.env).filter(([,o])=>typeof o=="string"))),s.agentPaths&&typeof s.agentPaths=="object"&&!Array.isArray(s.agentPaths)&&(i.agentPaths=Object.fromEntries(Object.entries(s.agentPaths).filter(([,o])=>typeof o=="string"))),i}catch{return console.warn("[bridge] Failed to parse .jerico/settings.json, ignoring"),{}}}var q,xe,Yt,et,Jn,tt=vs(()=>{"use strict";q=_(require("fs")),xe=_(require("path")),Yt=_(require("os")),et=xe.default.join(Yt.default.homedir(),".jerico","settings.json"),Jn=xe.default.join(Yt.default.homedir(),".bridge","config.json")});var Sr=_(br(),1),{program:wa,createCommand:Ea,createArgument:va,createOption:xa,CommanderError:ka,InvalidArgumentError:Oa,InvalidOptionArgumentError:Ia,Command:wr,Argument:Aa,Option:Ca,Help:Ta}=Sr.default;var ds=require("node:http"),Pe=require("node:child_process"),V=require("node:fs"),pe=require("node:os"),j=_(require("path"));var Wr=_(require("node-pty"));var kt=_(jr()),z=_(require("fs")),me=_(require("path")),$r=_(require("net")),Ur=require("child_process"),Me=r=>r+`
30
30
  `,je=r=>r.replace(/[\r\n]+$/,"")+"\r",se=[{key:"sh",displayName:"Shell",binary:"sh",checkAuth:async()=>!0,formatInput:Me},{key:"claude",displayName:"Claude Code",binary:"claude",checkAuth:async()=>xt(".claude")||ne("ANTHROPIC_API_KEY"),assignSessionId:!0,spawnArgs:["--dangerously-skip-permissions"],resumeArgs:r=>["--dangerously-skip-permissions","--resume",r],supportsMcpConfig:!0,formatInput:je,versionDirGlobs:[".local/share/claude/versions/*"]},{key:"codex",displayName:"Codex CLI",binary:"codex",checkAuth:async()=>ne("OPENAI_API_KEY"),spawnArgs:["--full-auto"],supportsMcpConfig:!0,formatInput:je},{key:"qwen",displayName:"Qwen CLI",binary:"qwen",checkAuth:async()=>xt(".qwen"),assignSessionId:!0,spawnArgs:["--yolo"],resumeArgs:r=>["--resume",r,"--yolo"],supportsMcpConfig:!0,formatInput:je,versionDirGlobs:[".local/share/qwen/versions/*"]},{key:"gemini",displayName:"Gemini",binary:"gemini",checkAuth:async()=>ne("GEMINI_API_KEY"),supportsMcpConfig:!0,formatInput:Me},{key:"ollama",displayName:"Ollama",binary:"ollama",checkAuth:async()=>ti(11434),formatInput:Me},{key:"aider",displayName:"Aider",binary:"aider",checkAuth:async()=>ne("OPENAI_API_KEY")||ne("ANTHROPIC_API_KEY"),supportsMcpConfig:!0,formatInput:Me},{key:"kimi",displayName:"Kimi Code",binary:"kimi",checkAuth:async()=>xt(".kimi")||ne("KIMI_API_KEY"),assignSessionId:!0,spawnArgs:["--yolo"],resumeArgs:r=>["-r",r,"--yolo"],supportsMcpConfig:!0,formatInput:je,versionDirGlobs:[".local/share/uv/tools/kimi-cli/bin",".local/share/kimi/versions/*"]}];var Br=process.env.HOME??"/Users/unknown";function Be(r){try{let e=(0,Ur.spawnSync)(r,["--version"],{timeout:5e3});return e.status!==0?void 0:(e.stdout??e.stderr??Buffer.from("")).toString("utf8").split(`
31
- `)[0].trim()||void 0}catch{return}}function Zs(r){if(!r.versionDirGlobs?.length)return[];let e=[],t=r.versionDirGlobs;for(let n of t){let s=me.default.join(Br,n.replace(/\/\*$/,""));if(n.endsWith("/*")){let i=[];try{i=z.default.readdirSync(s)}catch{}i.sort((o,c)=>c.localeCompare(o));for(let o of i){let c=me.default.join(s,o,r.binary);if(z.default.existsSync(c)){let a=Be(c);e.push({path:c,version:a})}}}else{let i=me.default.join(Br,n);if(z.default.existsSync(i)){let o=Be(i);e.push({path:i,version:o})}}}return e}async function ei(r,e={}){if(e[r.key]){let n=e[r.key],s=Be(n);if(z.default.existsSync(n)&&s)return{path:n,version:s}}try{let n=await(0,kt.default)(r.binary);if(n&&z.default.existsSync(n)){let s=Be(n);if(s!==void 0)return{path:n,version:s}}}catch{}let t=Zs(r);for(let n of t)if(n.version!==void 0)return n;try{let n=await(0,kt.default)(r.binary);if(n)return{path:n}}catch{}throw new Error(`No working binary found for agent '${r.key}'`)}async function Ot(r={}){let e=[];for(let t of se)try{let{path:n,version:s}=await ei(t,r),o=await t.checkAuth()?"ok":"missing";e.push({key:t.key,displayName:t.displayName,binaryPath:n,authStatus:o,version:s})}catch{}return console.log("[daemon] agent.detect.done",{found:e.map(t=>t.key),missing:se.map(t=>t.key).filter(t=>!e.find(n=>n.key===t))}),e}function xt(r){return z.default.existsSync(me.default.join(process.env.HOME??"",r))}function ne(r){return!!process.env[r]}async function ti(r){return new Promise(e=>{let t=$r.default.createConnection(r,"127.0.0.1");t.setTimeout(200),t.on("connect",()=>{t.destroy(),e(!0)}),t.on("error",()=>e(!1)),t.on("timeout",()=>{t.destroy(),e(!1)})})}var $e=class{handles=new Map;spawn(e,t,n,s,i,o,c,a,l){this.handles.has(e)&&this.kill(e,!0);let d=Math.max(1,Math.min(500,i)),u=Math.max(1,Math.min(500,o)),h={...process.env,TERM:"xterm-256color",COLORTERM:"truecolor"};l&&(h.BRIDGE_SERVER_URL=l.serverUrl,h.BRIDGE_TOKEN=l.token,h.BRIDGE_WORKSPACE_ID=l.workspaceId,h.BRIDGE_PROJECT_ID=l.projectId,l.projectEnv&&Object.assign(h,l.projectEnv));let g=process.env.BRIDGE_MCP_URL;g&&(h.BRIDGE_MCP_URL=g);let f;try{f=Wr.spawn(n,s,{name:"xterm-256color",cols:d,rows:u,cwd:l?.cwd,env:h})}catch(m){let x=m instanceof Error?m.message:String(m);return console.error("[daemon] pty.spawn.failed",{agentId:e,agentKey:t,error:x}),!1}let p={agentId:e,agentKey:t,process:f,pid:f.pid,killed:!1};return f.onData(m=>{c(Buffer.from(m).toString("base64"))}),f.onExit(({exitCode:m,signal:x})=>{p.killed||(this.handles.delete(e),console.log("[daemon] pty.exit",{agentId:e,exitCode:m,signal:x}),a(m??null,x?String(x):null))}),this.handles.set(e,p),console.log("[daemon] pty.spawn.success",{agentId:e,agentKey:t,args:s,cwd:l?.cwd}),!0}write(e,t,n){let s=this.handles.get(e);if(!s)return;let i=Buffer.from(t,"base64").toString(),o=se.find(a=>a.key===s.agentKey),c=n==="orchestrator"&&o?.formatInput?o.formatInput(i):i;s.process.write(c)}kill(e,t=!1){let n=this.handles.get(e);if(!n)return;n.killed=!0,this.handles.delete(e);let s=n.pid;if(t){try{process.kill(-s,"SIGTERM")}catch{n.process.kill()}setTimeout(()=>{try{process.kill(-s,"SIGKILL")}catch{}},2e3)}else try{process.kill(-s,"SIGTERM")}catch{n.process.kill()}console.log("[daemon] pty.kill",{agentId:e,force:t})}resize(e,t,n){let s=this.handles.get(e);if(!s)return;let i=Math.max(1,Math.min(500,t)),o=Math.max(1,Math.min(500,n));s.process.resize(i,o)}killAll(){for(let e of this.handles.values())try{process.kill(-e.pid,"SIGTERM")}catch{e.process.kill()}this.handles.clear()}};var Eo=_(jn(),1),vo=_(Ye(),1),xo=_(ae(),1),ko=_(jt(),1),Oo=_(Ut(),1),Io=_(Gt(),1),Gn=_(Qe(),1),Ao=_(Hn(),1);var O=Gn.default;var re=_(require("fs")),L=_(require("path")),Ce=_(require("os")),nr=require("node:child_process"),os=require("node:crypto");var Kn=r=>r;var Yn=r=>r,zn=r=>r;tt();var ke=_(require("fs")),Qt=_(require("path")),Qn=_(require("os")),Co=2e5;function To(r){let e=Qt.default.join(Qn.default.homedir(),".claude","projects");if(ke.default.existsSync(e))try{let t=ke.default.readdirSync(e,{withFileTypes:!0}).filter(n=>n.isDirectory());for(let n of t){let s=Qt.default.join(e,n.name,`${r}.jsonl`);if(ke.default.existsSync(s))return s}}catch{}}function Po(r){try{let t=ke.default.readFileSync(r,"utf-8").trim().split(`
31
+ `)[0].trim()||void 0}catch{return}}function Zs(r){if(!r.versionDirGlobs?.length)return[];let e=[],t=r.versionDirGlobs;for(let n of t){let s=me.default.join(Br,n.replace(/\/\*$/,""));if(n.endsWith("/*")){let i=[];try{i=z.default.readdirSync(s)}catch{}i.sort((o,c)=>c.localeCompare(o));for(let o of i){let c=me.default.join(s,o,r.binary);if(z.default.existsSync(c)){let a=Be(c);e.push({path:c,version:a})}}}else{let i=me.default.join(Br,n);if(z.default.existsSync(i)){let o=Be(i);e.push({path:i,version:o})}}}return e}async function ei(r,e={}){if(e[r.key]){let n=e[r.key],s=Be(n);if(z.default.existsSync(n)&&s)return{path:n,version:s}}try{let n=await(0,kt.default)(r.binary);if(n&&z.default.existsSync(n)){let s=Be(n);if(s!==void 0)return{path:n,version:s}}}catch{}let t=Zs(r);for(let n of t)if(n.version!==void 0)return n;try{let n=await(0,kt.default)(r.binary);if(n)return{path:n}}catch{}throw new Error(`No working binary found for agent '${r.key}'`)}async function Ot(r={}){let e=[];for(let t of se)try{let{path:n,version:s}=await ei(t,r),o=await t.checkAuth()?"ok":"missing";e.push({key:t.key,displayName:t.displayName,binaryPath:n,authStatus:o,version:s})}catch{}return console.log("[daemon] agent.detect.done",{found:e.map(t=>t.key),missing:se.map(t=>t.key).filter(t=>!e.find(n=>n.key===t))}),e}function xt(r){return z.default.existsSync(me.default.join(process.env.HOME??"",r))}function ne(r){return!!process.env[r]}async function ti(r){return new Promise(e=>{let t=$r.default.createConnection(r,"127.0.0.1");t.setTimeout(200),t.on("connect",()=>{t.destroy(),e(!0)}),t.on("error",()=>e(!1)),t.on("timeout",()=>{t.destroy(),e(!1)})})}var $e=class{handles=new Map;spawn(e,t,n,s,i,o,c,a,l){this.handles.has(e)&&this.kill(e,!0);let d=Math.max(1,Math.min(500,i)),u=Math.max(1,Math.min(500,o)),h={...process.env,TERM:"xterm-256color",COLORTERM:"truecolor"};l&&(h.BRIDGE_SERVER_URL=l.serverUrl,h.BRIDGE_TOKEN=l.token,h.BRIDGE_WORKSPACE_ID=l.workspaceId,h.BRIDGE_PROJECT_ID=l.projectId,l.projectEnv&&Object.assign(h,l.projectEnv));let g=process.env.BRIDGE_MCP_URL;g&&(h.BRIDGE_MCP_URL=g);let f;try{f=Wr.spawn(n,s,{name:"xterm-256color",cols:d,rows:u,cwd:l?.cwd,env:h})}catch(m){let x=m instanceof Error?m.message:String(m);return console.error("[daemon] pty.spawn.failed",{agentId:e,agentKey:t,error:x}),!1}let p={agentId:e,agentKey:t,process:f,pid:f.pid,killed:!1};return f.onData(m=>{c(Buffer.from(m).toString("base64"))}),f.onExit(({exitCode:m,signal:x})=>{p.killed||(this.handles.delete(e),console.log("[daemon] pty.exit",{agentId:e,exitCode:m,signal:x}),a(m??null,x?String(x):null))}),this.handles.set(e,p),console.log("[daemon] pty.spawn.success",{agentId:e,agentKey:t,args:s,cwd:l?.cwd}),!0}write(e,t,n){let s=this.handles.get(e);if(!s)return;let i=Buffer.from(t,"base64").toString(),o=se.find(a=>a.key===s.agentKey),c=n==="orchestrator"&&o?.formatInput?o.formatInput(i):i;s.process.write(c)}kill(e,t=!1){let n=this.handles.get(e);if(!n)return;n.killed=!0,this.handles.delete(e);let s=n.pid;if(t){try{process.kill(-s,"SIGTERM")}catch{n.process.kill()}setTimeout(()=>{try{process.kill(-s,"SIGKILL")}catch{}},2e3)}else try{process.kill(-s,"SIGTERM")}catch{n.process.kill()}console.log("[daemon] pty.kill",{agentId:e,force:t})}resize(e,t,n){let s=this.handles.get(e);if(!s)return;let i=Math.max(1,Math.min(500,t)),o=Math.max(1,Math.min(500,n));s.process.resize(i,o)}killAll(){for(let e of this.handles.values())try{process.kill(-e.pid,"SIGTERM")}catch{e.process.kill()}this.handles.clear()}};var Eo=_(jn(),1),vo=_(Ye(),1),xo=_(ae(),1),ko=_(jt(),1),Oo=_(Ut(),1),Io=_(Ht(),1),Hn=_(Qe(),1),Ao=_(Gn(),1);var O=Hn.default;var re=_(require("fs")),L=_(require("path")),Ce=_(require("os")),nr=require("node:child_process"),os=require("node:crypto");var Kn=r=>r;var Yn=r=>r,zn=r=>r;tt();var ke=_(require("fs")),Qt=_(require("path")),Qn=_(require("os")),Co=2e5;function To(r){let e=Qt.default.join(Qn.default.homedir(),".claude","projects");if(ke.default.existsSync(e))try{let t=ke.default.readdirSync(e,{withFileTypes:!0}).filter(n=>n.isDirectory());for(let n of t){let s=Qt.default.join(e,n.name,`${r}.jsonl`);if(ke.default.existsSync(s))return s}}catch{}}function Po(r){try{let t=ke.default.readFileSync(r,"utf-8").trim().split(`
32
32
  `);for(let n=t.length-1;n>=0;n--){let s=t[n]?.trim();if(s)try{let i=JSON.parse(s),o=i.message?.usage??i.usage;if(!o||typeof o!="object")continue;let c=o,a=(c.input_tokens??0)+(c.cache_creation_input_tokens??0)+(c.cache_read_input_tokens??0);if(a===0)continue;return{usedPct:Math.min(100,Math.round(a/Co*100)),usedTokens:a}}catch{continue}}}catch{}return null}function Zt(r,e,t){let n,s=-1,i=()=>{if(n||(n=To(e)),!n)return;let a=Po(n);a&&a.usedTokens!==s&&(s=a.usedTokens,t(r,a.usedPct,a.usedTokens))},o=setTimeout(i,2e3),c=setInterval(i,3e3);return()=>{clearTimeout(o),clearInterval(c)}}var K=_(require("fs")),Oe=_(require("path")),er=_(require("os")),Zn=300*60*1e3,es={free:10,pro:40,max_5x:200,max_20x:200};function No(){let r=Oe.default.join(er.default.homedir(),".jerico","settings.json");try{if(!K.default.existsSync(r))return"pro";let t=JSON.parse(K.default.readFileSync(r,"utf-8")).claudeTier;if(typeof t=="string"&&t in es)return t}catch{}return"pro"}function Do(){let r=Oe.default.join(er.default.homedir(),".claude","projects");if(!K.default.existsSync(r))return{prompts5h:0,resetAt:0};let t=Date.now()-Zn,n=1/0,s=0;try{let o=K.default.readdirSync(r,{withFileTypes:!0}).filter(c=>c.isDirectory());for(let c of o){let a=Oe.default.join(r,c.name),l;try{l=K.default.readdirSync(a).filter(d=>d.endsWith(".jsonl"))}catch{continue}for(let d of l){let u=Oe.default.join(a,d),h;try{if(K.default.statSync(u).size>20*1024*1024)continue;h=K.default.readFileSync(u,"utf-8")}catch{continue}for(let g of h.split(`
33
- `)){let f=g.trim();if(f)try{let p=JSON.parse(f);if(p.type!=="user"||p.message?.role!=="user"||p.userType!==void 0&&p.userType!=="external")continue;let x=p.timestamp;if(typeof x!="string")continue;let A=Date.parse(x);if(isNaN(A)||A<t)continue;s++,A<n&&(n=A)}catch{continue}}}}}catch{}let i=isFinite(n)?n+Zn:0;return{prompts5h:s,resetAt:i}}function ts(r){let e=()=>{let n=No(),s=es[n]??40,{prompts5h:i,resetAt:o}=Do();r({prompts5h:i,limit5h:s,resetAt:o,tier:n})};try{e()}catch(n){console.warn("[quota] initial poll failed",n)}let t=setInterval(()=>{try{e()}catch{}},6e4);return()=>clearInterval(t)}var fe=_(require("os")),rt=_(require("fs")),rr=require("node:child_process");function ns(){let r=0,e=0;for(let t of fe.default.cpus())r+=t.times.idle,e+=t.times.user+t.times.nice+t.times.sys+t.times.idle+(t.times.irq??0);return{idle:r,total:e}}var tr=ns();function Ro(){let r=ns(),e=r.idle-tr.idle,t=r.total-tr.total;return tr=r,t===0?0:Math.round((1-e/t)*100)}function Lo(){let r=fe.default.totalmem(),e=fe.default.freemem(),t=0;try{let n=(0,rr.spawnSync)("vm_stat",["-c","10"],{encoding:"utf-8",timeout:2e3,stdio:"pipe"});if(n.status===0&&n.stdout){let s=n.stdout.match(/page size of (\d+) bytes/),i=n.stdout.match(/Pages speculative:\s*(\d+)/),o=n.stdout.match(/Pages inactive:\s*(\d+)/);if(i&&o){let c=s?parseInt(s[1],10):4096;t=(parseInt(i[1],10)+parseInt(o[1],10))*c}}}catch{}return{totalMb:Math.round(r/1024/1024),usedMb:Math.round((r-e)/1024/1024),cachedMb:Math.round(t/1024/1024)}}function Mo(){if(process.platform==="darwin")return Lo();let r=fe.default.totalmem(),e=fe.default.freemem();return{totalMb:Math.round(r/1024/1024),usedMb:Math.round((r-e)/1024/1024),cachedMb:0}}function jo(){try{let r=(0,rr.spawnSync)("pmset",["-g","batt"],{encoding:"utf-8",timeout:2e3,stdio:"pipe"});if(r.status!==0||!r.stdout)return;let e=r.stdout.match(/(\d+)%;\s*(charging|discharging|charged|finishing charge)/i);if(!e)return;let t=parseInt(e[1],10),n=/charging|charged|finishing/i.test(e[2]);return{percent:t,charging:n}}catch{return}}function Bo(){try{let r="/sys/class/power_supply",e=rt.default.readdirSync(r).filter(o=>/^BAT/i.test(o));if(e.length===0)return;let t=`${r}/${e[0]}`,n=parseInt(rt.default.readFileSync(`${t}/capacity`,"utf-8").trim(),10),s=rt.default.readFileSync(`${t}/status`,"utf-8").trim().toLowerCase();return{percent:n,charging:s==="charging"||s==="full"}}catch{return}}function rs(){let r=process.platform;if(r==="darwin")return jo();if(r==="linux")return Bo()}var $o=1e4,Uo=3;function ss(r){let e=0,t=rs(),n=setInterval(()=>{e++,e%Uo===0&&(t=rs());let s=Mo();r({cpu:Ro(),ramUsedMb:s.usedMb,ramTotalMb:s.totalMb,ramCachedMb:s.cachedMb,battery:t})},$o);return()=>clearInterval(n)}var te=new Map,Wo=r=>r.replace(/[\r\n]+$/,"")+"\r",sr=null,Fo=ts(r=>{sr=r}),qo=3e4,Vo=5e3,Ho=400;function Go(r){return r.replace(/\x1b\[[0-9;?]*[A-Za-z]/g,"")}function Ko(r,e=Ho){return r.length<=e?r:`${r.slice(0,e)}...`}function Yo(r){return r.replace(/^wss?:/,e=>e==="wss:"?"https:":"http:").replace(/\/ws(\/.*)?$/,"")}function st(){let r=re.default.realpathSync(process.argv[1]??""),e=L.default.dirname(r);return[L.default.resolve(e,"../../mcp-server/dist/index.cjs"),L.default.resolve(e,"bridge-mcp.cjs"),L.default.resolve(process.cwd(),"node_modules/.bin/bridge-mcp")].find(n=>re.default.existsSync(n))??"bridge-mcp"}function zo(r){try{let e=process.env.BRIDGE_MCP_URL,t=e?{mcpServers:{bridge:{type:"http",url:`${e}/mcp/${r.workspaceId}/${r.projectId}`,headers:{Authorization:`Bearer ${r.token}`,"x-panel-id":r.agentId??""}}}}:{mcpServers:{bridge:{command:st(),args:[],env:{BRIDGE_SERVER_URL:r.serverUrl,BRIDGE_TOKEN:r.token,BRIDGE_WORKSPACE_ID:r.workspaceId,BRIDGE_PROJECT_ID:r.projectId,BRIDGE_PANEL_ID:r.agentId??"",HTTP_MODE:"false"}}}},n=L.default.join(Ce.default.tmpdir(),`bridge-mcp-${r.agentId??r.projectId}.json`);return re.default.writeFileSync(n,JSON.stringify(t,null,2)+`
33
+ `)){let f=g.trim();if(f)try{let p=JSON.parse(f);if(p.type!=="user"||p.message?.role!=="user"||p.userType!==void 0&&p.userType!=="external")continue;let x=p.timestamp;if(typeof x!="string")continue;let A=Date.parse(x);if(isNaN(A)||A<t)continue;s++,A<n&&(n=A)}catch{continue}}}}}catch{}let i=isFinite(n)?n+Zn:0;return{prompts5h:s,resetAt:i}}function ts(r){let e=()=>{let n=No(),s=es[n]??40,{prompts5h:i,resetAt:o}=Do();r({prompts5h:i,limit5h:s,resetAt:o,tier:n})};try{e()}catch(n){console.warn("[quota] initial poll failed",n)}let t=setInterval(()=>{try{e()}catch{}},6e4);return()=>clearInterval(t)}var fe=_(require("os")),rt=_(require("fs")),rr=require("node:child_process");function ns(){let r=0,e=0;for(let t of fe.default.cpus())r+=t.times.idle,e+=t.times.user+t.times.nice+t.times.sys+t.times.idle+(t.times.irq??0);return{idle:r,total:e}}var tr=ns();function Ro(){let r=ns(),e=r.idle-tr.idle,t=r.total-tr.total;return tr=r,t===0?0:Math.round((1-e/t)*100)}function Lo(){let r=fe.default.totalmem(),e=fe.default.freemem(),t=0;try{let n=(0,rr.spawnSync)("vm_stat",["-c","10"],{encoding:"utf-8",timeout:2e3,stdio:"pipe"});if(n.status===0&&n.stdout){let s=n.stdout.match(/page size of (\d+) bytes/),i=n.stdout.match(/Pages speculative:\s*(\d+)/),o=n.stdout.match(/Pages inactive:\s*(\d+)/);if(i&&o){let c=s?parseInt(s[1],10):4096;t=(parseInt(i[1],10)+parseInt(o[1],10))*c}}}catch{}return{totalMb:Math.round(r/1024/1024),usedMb:Math.round((r-e)/1024/1024),cachedMb:Math.round(t/1024/1024)}}function Mo(){if(process.platform==="darwin")return Lo();let r=fe.default.totalmem(),e=fe.default.freemem();return{totalMb:Math.round(r/1024/1024),usedMb:Math.round((r-e)/1024/1024),cachedMb:0}}function jo(){try{let r=(0,rr.spawnSync)("pmset",["-g","batt"],{encoding:"utf-8",timeout:2e3,stdio:"pipe"});if(r.status!==0||!r.stdout)return;let e=r.stdout.match(/(\d+)%;\s*(charging|discharging|charged|finishing charge)/i);if(!e)return;let t=parseInt(e[1],10),n=/charging|charged|finishing/i.test(e[2]);return{percent:t,charging:n}}catch{return}}function Bo(){try{let r="/sys/class/power_supply",e=rt.default.readdirSync(r).filter(o=>/^BAT/i.test(o));if(e.length===0)return;let t=`${r}/${e[0]}`,n=parseInt(rt.default.readFileSync(`${t}/capacity`,"utf-8").trim(),10),s=rt.default.readFileSync(`${t}/status`,"utf-8").trim().toLowerCase();return{percent:n,charging:s==="charging"||s==="full"}}catch{return}}function rs(){let r=process.platform;if(r==="darwin")return jo();if(r==="linux")return Bo()}var $o=1e4,Uo=3;function ss(r){let e=0,t=rs(),n=setInterval(()=>{e++,e%Uo===0&&(t=rs());let s=Mo();r({cpu:Ro(),ramUsedMb:s.usedMb,ramTotalMb:s.totalMb,ramCachedMb:s.cachedMb,battery:t})},$o);return()=>clearInterval(n)}var te=new Map,Wo=r=>r.replace(/[\r\n]+$/,"")+"\r",sr=null,Fo=ts(r=>{sr=r}),qo=3e4,Vo=5e3,Go=400;function Ho(r){return r.replace(/\x1b\[[0-9;?]*[A-Za-z]/g,"")}function Ko(r,e=Go){return r.length<=e?r:`${r.slice(0,e)}...`}function Yo(r){return r.replace(/^wss?:/,e=>e==="wss:"?"https:":"http:").replace(/\/ws(\/.*)?$/,"")}function st(){let r=re.default.realpathSync(process.argv[1]??""),e=L.default.dirname(r);return[L.default.resolve(e,"../../mcp-server/dist/index.cjs"),L.default.resolve(e,"bridge-mcp.cjs"),L.default.resolve(process.cwd(),"node_modules/.bin/bridge-mcp")].find(n=>re.default.existsSync(n))??"bridge-mcp"}function zo(r){try{let e=process.env.BRIDGE_MCP_URL,t=e?{mcpServers:{bridge:{type:"http",url:`${e}/mcp/${r.workspaceId}/${r.projectId}`,headers:{Authorization:`Bearer ${r.token}`,"x-panel-id":r.agentId??""}}}}:{mcpServers:{bridge:{command:st(),args:[],env:{BRIDGE_SERVER_URL:r.serverUrl,BRIDGE_TOKEN:r.token,BRIDGE_WORKSPACE_ID:r.workspaceId,BRIDGE_PROJECT_ID:r.projectId,BRIDGE_PANEL_ID:r.agentId??"",HTTP_MODE:"false"}}}},n=L.default.join(Ce.default.tmpdir(),`bridge-mcp-${r.agentId??r.projectId}.json`);return re.default.writeFileSync(n,JSON.stringify(t,null,2)+`
34
34
  `,"utf-8"),console.log("[daemon] mcp.config.written",{tmpPath:n,transport:e?"http":"stdio"}),["--mcp-config",n]}catch(e){return console.warn("[daemon] mcp.config.build.failed",{error:String(e)}),[]}}var Jo={bridge_get_project:"Project metadata: name, cwd, machineId",bridge_get_plan:"Read project spec/description",bridge_update_plan:"Update project spec/description",bridge_get_project_history:"Past run history and failure patterns",bridge_get_execution_status:"Run history with todo completion counts",bridge_get_todos:"List todos + session state for this project",bridge_add_todo:"Create a new todo (title, todoType, dependsOn)",bridge_update_todo:"Update a todo title or status",bridge_cancel_run:"Cancel active run (use before restarting a stale plan)",bridge_list_agents:"All agents: role, status, inRun flag",bridge_get_agent_status:"Single agent status check",bridge_spawn_worker:"Spawn a new worker agent (agentKey, role)",bridge_kill_agent:"Terminate a stuck or dead agent",bridge_get_agent_output:"Read terminal output of any agent",bridge_send_input:"Send text input to an agent PTY",bridge_get_my_task:"Get the task assigned to this agent",bridge_complete_task:"Signal task completion",bridge_fail_task:"Signal task failure with a specific reason",bridge_get_todo_context:"Read todo output/error for a specific todo",bridge_assign_task:"Assign a pending todo to a specific agent"};function Ie(...r){return`
35
35
 
36
36
  **Available MCP tools:** ${r.join(", ")}`}function Xo(...r){return`
@@ -342,7 +342,7 @@ Summarize: todos completed, failed, any blockers. List what workers did.
342
342
 
343
343
  ${Xo("bridge_get_project","bridge_get_plan","bridge_get_todos","bridge_add_todo","bridge_cancel_run","bridge_get_project_history","bridge_get_execution_status","bridge_list_agents","bridge_get_agent_status","bridge_spawn_worker","bridge_assign_task","bridge_get_todo_context","bridge_get_agent_output","bridge_kill_agent")}`};function Qo(r,e,t){if(!e)return[];let n=as[e];if(!n)return[];if(r==="claude")try{let s=L.default.join(Ce.default.tmpdir(),`bridge-role-${t}.md`),i=n.replaceAll("{{PANEL_ID}}",t);return re.default.writeFileSync(s,i+`
344
344
  `,"utf-8"),console.log("[daemon] role.prompt.written",{agentId:t,role:e,tmpPath:s}),["--append-system-prompt-file",s]}catch(s){return console.warn("[daemon] role.prompt.write.failed",{agentId:t,role:e,error:String(s)}),[]}return r==="qwen"?["--append-system-prompt",n]:[]}function Ae(r){return`"${r.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}function Zo(r){try{let e=process.env.BRIDGE_MCP_URL,t=e?{mcpServers:{bridge:{type:"http",url:`${e}/mcp/${r.workspaceId}/${r.projectId}`,headers:{Authorization:`Bearer ${r.token}`,"x-panel-id":r.agentId??""}}}}:{mcpServers:{bridge:{command:st(),args:[],env:{BRIDGE_SERVER_URL:r.serverUrl,BRIDGE_TOKEN:r.token,BRIDGE_WORKSPACE_ID:r.workspaceId,BRIDGE_PROJECT_ID:r.projectId,BRIDGE_PANEL_ID:r.agentId??"",HTTP_MODE:"false"}}}},n=L.default.join(Ce.default.tmpdir(),`bridge-mcp-kimi-${r.agentId??r.projectId}.json`);return re.default.writeFileSync(n,JSON.stringify(t,null,2)+`
345
- `,"utf-8"),console.log("[daemon] kimi.mcp.config.written",{tmpPath:n,transport:e?"http":"stdio"}),["--mcp-config-file",n]}catch(e){return console.warn("[daemon] kimi.mcp.config.build.failed",{error:String(e)}),[]}}function ea(r){try{let e=st(),t=`{BRIDGE_SERVER_URL=${Ae(r.serverUrl)},BRIDGE_TOKEN=${Ae(r.token)},BRIDGE_WORKSPACE_ID=${Ae(r.workspaceId)},BRIDGE_PROJECT_ID=${Ae(r.projectId)},HTTP_MODE="false"}`;return["-c",'mcp_servers.bridge.transport="stdio"',"-c",`mcp_servers.bridge.command=${Ae(e)}`,"-c","mcp_servers.bridge.args=[]","-c",`mcp_servers.bridge.env=${t}`]}catch(e){return console.warn("[daemon] codex.mcp.config.build.failed",{error:String(e)}),[]}}function ta(r){try{if(!r.cwd)return console.warn("[daemon] qwen.mcp.setup.skipped",{reason:"missing_cwd",projectId:r.projectId}),!1;let e=st(),t={cwd:r.cwd,encoding:"utf-8",timeout:5e3,stdio:"pipe"};(0,nr.spawnSync)("qwen",["mcp","remove","--scope","project","bridge"],t);let n=(0,nr.spawnSync)("qwen",["mcp","add","--scope","project","-t","stdio","-e",`BRIDGE_SERVER_URL=${r.serverUrl}`,"-e",`BRIDGE_TOKEN=${r.token}`,"-e",`BRIDGE_WORKSPACE_ID=${r.workspaceId}`,"-e",`BRIDGE_PROJECT_ID=${r.projectId}`,"-e",`BRIDGE_PANEL_ID=${r.agentId??""}`,"-e","HTTP_MODE=false","bridge",e],t);return n.status===0?(console.log("[daemon] qwen.mcp.setup.ok",{cwd:r.cwd,projectId:r.projectId}),!0):(console.warn("[daemon] qwen.mcp.setup.failed",{cwd:r.cwd,projectId:r.projectId,status:n.status,stderr:(n.stderr??"").toString().slice(0,300)}),!1)}catch(e){return console.warn("[daemon] qwen.mcp.setup.error",{error:String(e),projectId:r.projectId}),!1}}var nt=[],ir=!1,is=!1;function cs(){return ir}function ls(r){if(is)throw new Error("[daemon] startDaemonConnection called twice \u2014 only one connection manager allowed");is=!0;let e=zt(),t=(0,os.createHash)("sha256").update(e.token).digest("hex"),n=null,s=null,i=null,o=0;function c(){s&&(clearTimeout(s),s=null),n=new O(e.server,{headers:{Authorization:`Bearer ${e.token}`}});let l=n,d=null;l.on("open",()=>{ir=!0,console.log("[daemon] ws.connected",{server:e.server}),i=setInterval(()=>{l.readyState===O.OPEN&&l.ping()},qo),l.send(JSON.stringify({type:"ready",version:"1.1",name:e.name})),Ot(e.agentPaths).then(u=>{nt=u,l.readyState===O.OPEN&&l.send(JSON.stringify({type:"agents",list:nt}))}),d=ss(u=>{l.readyState===O.OPEN&&l.send(JSON.stringify({type:"system_metrics",daemonId:t,...u}))})}),l.on("message",u=>{let h;try{h=JSON.parse(u.toString())}catch{console.warn("[daemon] Invalid JSON from server, ignoring");return}ra(h,l,r,e)}),l.on("close",u=>{ir=!1,i&&(clearInterval(i),i=null),d?.(),d=null,u===1008?(o++,o>=2&&(console.error("[daemon] ws.auth_failed \u2014 token invalid or expired (2 consecutive rejections), stopping. Re-run: bridge-agent auth"),process.exit(1)),console.warn("[daemon] ws.auth_rejected \u2014 transient 1008, will retry once",{attempt:o})):o=0,!s&&(console.log("[daemon] ws.reconnecting",{attempt:1}),s=setTimeout(c,3e3))}),l.on("error",u=>{console.error("[daemon] ws.error",{message:u.message})})}function a(){i&&(clearInterval(i),i=null),Fo();for(let l of te.values())l();r.killAll(),n?.close()}process.on("SIGINT",()=>{a(),process.exit(0)}),process.on("SIGTERM",()=>{a(),process.exit(0)}),process.on("SIGHUP",()=>{a(),process.exit(0)}),process.on("uncaughtException",l=>{console.error("[daemon] uncaughtException",{error:l.message}),r.killAll(),process.exit(1)}),c()}function ra(r,e,t,n){switch(r.type){case"spawn":{console.log("[daemon] pty.spawn.start",{agentId:r.agentId,agentKey:r.agentKey,sessionId:r.sessionId,projectId:r.projectId,workspaceId:r.workspaceId,role:r.role});let s=nt.find(b=>b.key===r.agentKey);if(!s){e.readyState===O.OPEN&&e.send(JSON.stringify({type:"error",code:"AGENT_NOT_FOUND",message:`Agent '${r.agentKey}' is not installed on this machine`}));return}let i=se.find(b=>b.key===r.agentKey),o=[];if(r.sessionId&&i?.resumeArgs)o=i.resumeArgs(r.sessionId),console.log("[daemon] pty.spawn.resume",{agentId:r.agentId,sessionId:r.sessionId}),r.agentKey==="claude"&&(te.get(r.agentId)?.(),te.set(r.agentId,Zt(r.agentId,r.sessionId,(b,w,y)=>{e.readyState===O.OPEN&&e.send(JSON.stringify({type:"panel_token_usage",agentId:b,usedPct:w,usedTokens:y,...sr}))})));else if(i?.assignSessionId){let b=crypto.randomUUID(),w=r.agentKey==="kimi"?"--session":"--session-id";o=[...i.spawnArgs??[],w,b],e.readyState===O.OPEN&&(e.send(JSON.stringify({type:"session_started",agentId:r.agentId,sessionId:b})),console.log("[daemon] session.assigned",{agentId:r.agentId,sessionId:b})),r.agentKey==="claude"&&(te.get(r.agentId)?.(),te.set(r.agentId,Zt(r.agentId,b,(y,D,Y)=>{e.readyState===O.OPEN&&e.send(JSON.stringify({type:"panel_token_usage",agentId:y,usedPct:D,usedTokens:Y,...sr}))})))}else e.readyState===O.OPEN&&e.send(JSON.stringify({type:"session_started",agentId:r.agentId,sessionId:crypto.randomUUID()}));let c,a=!1,l;if(r.projectId&&r.workspaceId){let b=Yo(n.server),w=Xt(r.cwd);if(c={serverUrl:b,token:n.token,workspaceId:Yn(r.workspaceId),projectId:zn(r.projectId),agentId:r.agentId?Kn(r.agentId):void 0,cwd:r.cwd,projectEnv:w.env},r.agentKey==="claude"){let y=zo(c);a=y.length>0,l=process.env.BRIDGE_MCP_URL?"http":"stdio",o=[...o,...y]}else if(r.agentKey==="codex"){let y=ea(c);a=y.length>0,l="stdio",o=[...o,...y]}else if(r.agentKey==="qwen")a=ta(c),l=a?"stdio":void 0;else if(r.agentKey==="kimi"){let y=Zo(c);a=y.length>0,l=process.env.BRIDGE_MCP_URL?"http":"stdio",o=[...o,...y]}else a=!1,console.log("[daemon] mcp.config.skipped",{agentId:r.agentId,agentKey:r.agentKey,reason:"unsupported_agent_path"})}let d=Qo(r.agentKey,r.role,r.agentId);d.length>0&&(o=[...o,...d]);let u=Math.max(1,Math.min(500,r.cols)),h=Math.max(1,Math.min(500,r.rows)),g=Date.now(),f="",p=0,m=!1,x=!1;t.spawn(r.agentId,r.agentKey,s.binaryPath,o,u,h,b=>{p+=b.length;try{let w=Buffer.from(b,"base64").toString("utf-8");if(r.agentKey==="kimi"&&r.role&&!x&&Date.now()-g<3e4&&(/yolo agent/.test(w)||/●/.test(w)||/○/.test(w))){x=!0;let y=as[r.role];if(y){let D=y.replaceAll("{{PANEL_ID}}",r.agentId),Y=Wo(D),De=Buffer.from(Y).toString("base64");t.write(r.agentId,De,"orchestrator"),console.log("[daemon] kimi.role.injected",{agentId:r.agentId,role:r.role})}}}catch{}if(!f)try{let w=Buffer.from(b,"base64").toString("utf-8"),y=Go(w).replace(/\x00/g,"").trim();if(y&&(f=Ko(y)),r.agentKey==="codex"&&!m&&Date.now()-g<2e4&&/included in your plan for free|let[’']s build together/i.test(y)&&/yes|no|\[y\/n\]|\(y\/n\)|y\/n/i.test(y)){m=!0;let D=Buffer.from("y").toString("base64");t.write(r.agentId,D,"orchestrator"),console.log("[daemon] codex.onboarding.auto_ack",{agentId:r.agentId})}}catch{}e.readyState===O.OPEN&&e.send(JSON.stringify({type:"output",agentId:r.agentId,data:b}))},(b,w)=>{let y=Date.now()-g,D=y<=Vo;console.log("[daemon] pty.spawn.result",{agentId:r.agentId,agentKey:r.agentKey,daemonId:r.daemonId,exitCode:b,signal:w,uptimeMs:y,earlyExit:D,outputBytes:p,firstOutputSnippet:f||void 0}),D&&e.readyState===O.OPEN&&e.send(JSON.stringify({type:"error",code:"SPAWN_FAILED",message:`Early exit: agent=${r.agentKey} code=${b??"null"} signal=${w??"null"} snippet="${f||"no output"}"`})),e.readyState===O.OPEN&&e.send(JSON.stringify({type:"exit",agentId:r.agentId,exitCode:b,signal:w}))},c)?e.readyState===O.OPEN&&e.send(JSON.stringify({type:"mcp_status",agentId:r.agentId,mcpConfigured:a,transport:a?l:void 0,projectId:c?.projectId})):e.readyState===O.OPEN&&e.send(JSON.stringify({type:"error",code:"SPAWN_DUPLICATE",message:`Panel ${r.agentId} is already running`}));break}case"input":t.write(r.agentId,r.data,r.source);break;case"kill":te.get(r.agentId)?.(),te.delete(r.agentId),t.kill(r.agentId,r.force);break;case"resize":t.resize(r.agentId,r.cols,r.rows);break;case"detect_agents":Ot(n.agentPaths).then(s=>{nt=s,e.readyState===O.OPEN&&e.send(JSON.stringify({type:"agents",list:s}))});break;case"dir_list":{let s=Ce.default.homedir(),i=(r.path||"~").replace(/^~/,s),o=L.default.resolve(i);if(o!==s&&!o.startsWith(s+L.default.sep)){e.readyState===O.OPEN&&e.send(JSON.stringify({type:"error",code:"INVALID_MSG",message:"Path outside home directory"}));return}try{let c=re.default.readdirSync(o,{withFileTypes:!0}).filter(a=>a.isDirectory()&&!a.name.startsWith(".")).map(a=>({name:a.name,path:L.default.join(o,a.name)})).sort((a,l)=>a.name.localeCompare(l.name));e.readyState===O.OPEN&&e.send(JSON.stringify({type:"dir_list_result",requestId:r.requestId,path:o,entries:c}))}catch(c){e.readyState===O.OPEN&&e.send(JSON.stringify({type:"dir_list_result",requestId:r.requestId,path:o,entries:[],error:c instanceof Error?c.message:"Cannot read directory"}))}break}default:{let s=r}}}var us="com.jerico.bridge-agent.plist",hs=j.default.join((0,pe.homedir)(),"Library","LaunchAgents"),it=j.default.join(hs,us),or=j.default.join((0,pe.homedir)(),"bridge-daemon.log"),ar=j.default.join((0,pe.homedir)(),"bridge-daemon.err.log"),Te=j.default.join((0,pe.homedir)(),".bridge","daemon.lock");function na(){let r=[...process.env.npm_config_global_prefix?[j.default.join(process.env.npm_config_global_prefix,"lib","node_modules","bridge-agent","dist","index.js")]:[],...process.argv[1]?[process.argv[1]]:[],process.execPath];for(let e of r)try{return require("node:fs").realpathSync(e)}catch{}return process.execPath}function sa(){try{(0,V.mkdirSync)(j.default.dirname(Te),{recursive:!0})}catch{}if((0,V.existsSync)(Te))try{let{pid:r}=JSON.parse((0,V.readFileSync)(Te,"utf8"));if(r&&process.kill(r,0))return console.warn("[bridge] daemon.already.running",{pid:r,lock:Te}),!1}catch{}return(0,V.writeFileSync)(Te,JSON.stringify({pid:process.pid,startedAt:Date.now()}),"utf8"),!0}function ia(r){try{(0,Pe.execSync)(`mkdir -p "${hs}"`,{stdio:"pipe"})}catch{}let e=(0,pe.homedir)(),t=j.default.join(e,".nvm","versions","node",`v${process.versions.node}`,"bin"),n=j.default.join(e,".local","bin"),s=[t,n,"/opt/homebrew/bin","/usr/local/bin","/usr/bin","/bin"].join(":"),i=`<?xml version="1.0" encoding="UTF-8"?>
345
+ `,"utf-8"),console.log("[daemon] kimi.mcp.config.written",{tmpPath:n,transport:e?"http":"stdio"}),["--mcp-config-file",n]}catch(e){return console.warn("[daemon] kimi.mcp.config.build.failed",{error:String(e)}),[]}}function ea(r){try{let e=st(),t=`{BRIDGE_SERVER_URL=${Ae(r.serverUrl)},BRIDGE_TOKEN=${Ae(r.token)},BRIDGE_WORKSPACE_ID=${Ae(r.workspaceId)},BRIDGE_PROJECT_ID=${Ae(r.projectId)},HTTP_MODE="false"}`;return["-c",'mcp_servers.bridge.transport="stdio"',"-c",`mcp_servers.bridge.command=${Ae(e)}`,"-c","mcp_servers.bridge.args=[]","-c",`mcp_servers.bridge.env=${t}`]}catch(e){return console.warn("[daemon] codex.mcp.config.build.failed",{error:String(e)}),[]}}function ta(r){try{if(!r.cwd)return console.warn("[daemon] qwen.mcp.setup.skipped",{reason:"missing_cwd",projectId:r.projectId}),!1;let e=st(),t={cwd:r.cwd,encoding:"utf-8",timeout:5e3,stdio:"pipe"};(0,nr.spawnSync)("qwen",["mcp","remove","--scope","project","bridge"],t);let n=(0,nr.spawnSync)("qwen",["mcp","add","--scope","project","-t","stdio","-e",`BRIDGE_SERVER_URL=${r.serverUrl}`,"-e",`BRIDGE_TOKEN=${r.token}`,"-e",`BRIDGE_WORKSPACE_ID=${r.workspaceId}`,"-e",`BRIDGE_PROJECT_ID=${r.projectId}`,"-e",`BRIDGE_PANEL_ID=${r.agentId??""}`,"-e","HTTP_MODE=false","bridge",e],t);return n.status===0?(console.log("[daemon] qwen.mcp.setup.ok",{cwd:r.cwd,projectId:r.projectId}),!0):(console.warn("[daemon] qwen.mcp.setup.failed",{cwd:r.cwd,projectId:r.projectId,status:n.status,stderr:(n.stderr??"").toString().slice(0,300)}),!1)}catch(e){return console.warn("[daemon] qwen.mcp.setup.error",{error:String(e),projectId:r.projectId}),!1}}var nt=[],ir=!1,is=!1;function cs(){return ir}function ls(r){if(is)throw new Error("[daemon] startDaemonConnection called twice \u2014 only one connection manager allowed");is=!0;let e=zt(),t=(0,os.createHash)("sha256").update(e.token).digest("hex"),n=null,s=null,i=null,o=0;function c(){s&&(clearTimeout(s),s=null),n=new O(e.server,{headers:{Authorization:`Bearer ${e.token}`}});let l=n,d=null;l.on("open",()=>{ir=!0,console.log("[daemon] ws.connected",{server:e.server}),i=setInterval(()=>{l.readyState===O.OPEN&&l.ping()},qo),l.send(JSON.stringify({type:"ready",version:"1.1",name:e.name})),Ot(e.agentPaths).then(u=>{nt=u,l.readyState===O.OPEN&&l.send(JSON.stringify({type:"agents",list:nt}))}),d=ss(u=>{l.readyState===O.OPEN&&l.send(JSON.stringify({type:"system_metrics",daemonId:t,...u}))})}),l.on("message",u=>{let h;try{h=JSON.parse(u.toString())}catch{console.warn("[daemon] Invalid JSON from server, ignoring");return}ra(h,l,r,e)}),l.on("close",u=>{ir=!1,i&&(clearInterval(i),i=null),d?.(),d=null,u===1008?(o++,o>=2&&(console.error("[daemon] ws.auth_failed \u2014 token invalid or expired (2 consecutive rejections), stopping. Re-run: bridge-agent auth"),process.exit(1)),console.warn("[daemon] ws.auth_rejected \u2014 transient 1008, will retry once",{attempt:o})):o=0,!s&&(console.log("[daemon] ws.reconnecting",{attempt:1}),s=setTimeout(c,3e3))}),l.on("error",u=>{console.error("[daemon] ws.error",{message:u.message})})}function a(){i&&(clearInterval(i),i=null),Fo();for(let l of te.values())l();r.killAll(),n?.close()}process.on("SIGINT",()=>{a(),process.exit(0)}),process.on("SIGTERM",()=>{a(),process.exit(0)}),process.on("SIGHUP",()=>{a(),process.exit(0)}),process.on("uncaughtException",l=>{console.error("[daemon] uncaughtException",{error:l.message}),r.killAll(),process.exit(1)}),c()}function ra(r,e,t,n){switch(r.type){case"spawn":{console.log("[daemon] pty.spawn.start",{agentId:r.agentId,agentKey:r.agentKey,sessionId:r.sessionId,projectId:r.projectId,workspaceId:r.workspaceId,role:r.role});let s=nt.find(b=>b.key===r.agentKey);if(!s){e.readyState===O.OPEN&&e.send(JSON.stringify({type:"error",code:"AGENT_NOT_FOUND",message:`Agent '${r.agentKey}' is not installed on this machine`}));return}let i=se.find(b=>b.key===r.agentKey),o=[];if(r.sessionId&&i?.resumeArgs)o=i.resumeArgs(r.sessionId),console.log("[daemon] pty.spawn.resume",{agentId:r.agentId,sessionId:r.sessionId}),r.agentKey==="claude"&&(te.get(r.agentId)?.(),te.set(r.agentId,Zt(r.agentId,r.sessionId,(b,w,y)=>{e.readyState===O.OPEN&&e.send(JSON.stringify({type:"panel_token_usage",agentId:b,usedPct:w,usedTokens:y,...sr}))})));else if(i?.assignSessionId){let b=crypto.randomUUID(),w=r.agentKey==="kimi"?"--session":"--session-id";o=[...i.spawnArgs??[],w,b],e.readyState===O.OPEN&&(e.send(JSON.stringify({type:"session_started",agentId:r.agentId,sessionId:b})),console.log("[daemon] session.assigned",{agentId:r.agentId,sessionId:b})),r.agentKey==="claude"&&(te.get(r.agentId)?.(),te.set(r.agentId,Zt(r.agentId,b,(y,D,Y)=>{e.readyState===O.OPEN&&e.send(JSON.stringify({type:"panel_token_usage",agentId:y,usedPct:D,usedTokens:Y,...sr}))})))}else e.readyState===O.OPEN&&e.send(JSON.stringify({type:"session_started",agentId:r.agentId,sessionId:crypto.randomUUID()}));let c,a=!1,l;if(r.projectId&&r.workspaceId){let b=Yo(n.server),w=Xt(r.cwd);if(c={serverUrl:b,token:n.token,workspaceId:Yn(r.workspaceId),projectId:zn(r.projectId),agentId:r.agentId?Kn(r.agentId):void 0,cwd:r.cwd,projectEnv:w.env},r.agentKey==="claude"){let y=zo(c);a=y.length>0,l=process.env.BRIDGE_MCP_URL?"http":"stdio",o=[...o,...y]}else if(r.agentKey==="codex"){let y=ea(c);a=y.length>0,l="stdio",o=[...o,...y]}else if(r.agentKey==="qwen")a=ta(c),l=a?"stdio":void 0;else if(r.agentKey==="kimi"){let y=Zo(c);a=y.length>0,l=process.env.BRIDGE_MCP_URL?"http":"stdio",o=[...o,...y]}else a=!1,console.log("[daemon] mcp.config.skipped",{agentId:r.agentId,agentKey:r.agentKey,reason:"unsupported_agent_path"})}let d=Qo(r.agentKey,r.role,r.agentId);d.length>0&&(o=[...o,...d]);let u=Math.max(1,Math.min(500,r.cols)),h=Math.max(1,Math.min(500,r.rows)),g=Date.now(),f="",p=0,m=!1,x=!1;t.spawn(r.agentId,r.agentKey,s.binaryPath,o,u,h,b=>{p+=b.length;try{let w=Buffer.from(b,"base64").toString("utf-8");if(r.agentKey==="kimi"&&r.role&&!x&&Date.now()-g<3e4&&(/yolo agent/.test(w)||/●/.test(w)||/○/.test(w))){x=!0;let y=as[r.role];if(y){let D=y.replaceAll("{{PANEL_ID}}",r.agentId),Y=Wo(D),De=Buffer.from(Y).toString("base64");t.write(r.agentId,De,"orchestrator"),console.log("[daemon] kimi.role.injected",{agentId:r.agentId,role:r.role})}}}catch{}if(!f)try{let w=Buffer.from(b,"base64").toString("utf-8"),y=Ho(w).replace(/\x00/g,"").trim();if(y&&(f=Ko(y)),r.agentKey==="codex"&&!m&&Date.now()-g<2e4&&/included in your plan for free|let[’']s build together/i.test(y)&&/yes|no|\[y\/n\]|\(y\/n\)|y\/n/i.test(y)){m=!0;let D=Buffer.from("y").toString("base64");t.write(r.agentId,D,"orchestrator"),console.log("[daemon] codex.onboarding.auto_ack",{agentId:r.agentId})}}catch{}e.readyState===O.OPEN&&e.send(JSON.stringify({type:"output",agentId:r.agentId,data:b}))},(b,w)=>{let y=Date.now()-g,D=y<=Vo;console.log("[daemon] pty.spawn.result",{agentId:r.agentId,agentKey:r.agentKey,daemonId:r.daemonId,exitCode:b,signal:w,uptimeMs:y,earlyExit:D,outputBytes:p,firstOutputSnippet:f||void 0}),D&&e.readyState===O.OPEN&&e.send(JSON.stringify({type:"error",code:"SPAWN_FAILED",message:`Early exit: agent=${r.agentKey} code=${b??"null"} signal=${w??"null"} snippet="${f||"no output"}"`})),e.readyState===O.OPEN&&e.send(JSON.stringify({type:"exit",agentId:r.agentId,exitCode:b,signal:w}))},c)?e.readyState===O.OPEN&&e.send(JSON.stringify({type:"mcp_status",agentId:r.agentId,mcpConfigured:a,transport:a?l:void 0,projectId:c?.projectId})):e.readyState===O.OPEN&&e.send(JSON.stringify({type:"error",code:"SPAWN_DUPLICATE",message:`Panel ${r.agentId} is already running`}));break}case"input":t.write(r.agentId,r.data,r.source);break;case"kill":te.get(r.agentId)?.(),te.delete(r.agentId),t.kill(r.agentId,r.force);break;case"resize":t.resize(r.agentId,r.cols,r.rows);break;case"detect_agents":Ot(n.agentPaths).then(s=>{nt=s,e.readyState===O.OPEN&&e.send(JSON.stringify({type:"agents",list:s}))});break;case"dir_list":{let s=Ce.default.homedir(),i=(r.path||"~").replace(/^~/,s),o=L.default.resolve(i);if(o!==s&&!o.startsWith(s+L.default.sep)){e.readyState===O.OPEN&&e.send(JSON.stringify({type:"error",code:"INVALID_MSG",message:"Path outside home directory"}));return}try{let c=re.default.readdirSync(o,{withFileTypes:!0}).filter(a=>a.isDirectory()&&!a.name.startsWith(".")).map(a=>({name:a.name,path:L.default.join(o,a.name)})).sort((a,l)=>a.name.localeCompare(l.name));e.readyState===O.OPEN&&e.send(JSON.stringify({type:"dir_list_result",requestId:r.requestId,path:o,entries:c}))}catch(c){e.readyState===O.OPEN&&e.send(JSON.stringify({type:"dir_list_result",requestId:r.requestId,path:o,entries:[],error:c instanceof Error?c.message:"Cannot read directory"}))}break}default:{let s=r}}}var us="com.jerico.bridge-agent.plist",hs=j.default.join((0,pe.homedir)(),"Library","LaunchAgents"),it=j.default.join(hs,us),or=j.default.join((0,pe.homedir)(),"bridge-daemon.log"),ar=j.default.join((0,pe.homedir)(),"bridge-daemon.err.log"),Te=j.default.join((0,pe.homedir)(),".bridge","daemon.lock");function na(){let r=[...process.env.npm_config_global_prefix?[j.default.join(process.env.npm_config_global_prefix,"lib","node_modules","bridge-agent","dist","index.js")]:[],...process.argv[1]?[process.argv[1]]:[],process.execPath];for(let e of r)try{return require("node:fs").realpathSync(e)}catch{}return process.execPath}function sa(){try{(0,V.mkdirSync)(j.default.dirname(Te),{recursive:!0})}catch{}if((0,V.existsSync)(Te))try{let{pid:r}=JSON.parse((0,V.readFileSync)(Te,"utf8"));if(r&&process.kill(r,0))return console.warn("[bridge] daemon.already.running",{pid:r,lock:Te}),!1}catch{}return(0,V.writeFileSync)(Te,JSON.stringify({pid:process.pid,startedAt:Date.now()}),"utf8"),!0}function ia(r){try{(0,Pe.execSync)(`mkdir -p "${hs}"`,{stdio:"pipe"})}catch{}let e=(0,pe.homedir)(),t=j.default.join(e,".nvm","versions","node",`v${process.versions.node}`,"bin"),n=j.default.join(e,".local","bin"),s=[t,n,"/opt/homebrew/bin","/usr/local/bin","/usr/bin","/bin"].join(":"),i=`<?xml version="1.0" encoding="UTF-8"?>
346
346
  <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
347
347
  <plist version="1.0">
348
348
  <dict>
@@ -372,4 +372,4 @@ ${Xo("bridge_get_project","bridge_get_plan","bridge_get_todos","bridge_add_todo"
372
372
  </plist>
373
373
  `;try{return(0,V.writeFileSync)(it,i,"utf-8"),!0}catch(o){return console.warn("[bridge] launchd.plist.write.failed",{error:String(o)}),!1}}function oa(){try{return(0,Pe.execSync)(`launchctl kickstart -kp gui/$(id -u)/${us} 2>/dev/null; launchctl unload "${it}" 2>/dev/null; launchctl load "${it}"`,{stdio:"pipe"}),{ok:!0,permissionDenied:!1}}catch(r){let e=String(r);return{ok:!1,permissionDenied:e.includes("Permission denied")||e.includes("not allowed")||e.includes("bootstrap")}}}function aa(r){try{let e=(0,Pe.spawn)(r,["start"],{detached:!0,stdio:"ignore",env:{...process.env,BRIDGE_DAEMON:"1"}});e.unref(),setTimeout(()=>{e.pid&&process.kill(e.pid,0)?(console.log("[bridge] daemon.pid",{pid:e.pid}),console.log("[bridge] background.ok",{log:or})):console.error("[bridge] background.failed \u2014 check: tail -f",{log:ar})},2e3)}catch(e){console.error("[bridge] background.spawn.failed",{error:String(e)})}}function ca(){let r=parseInt(process.env.HEALTH_PORT??"3101",10),e=Date.now()+6e3,t=()=>{if(Date.now()>e){console.error("[bridge] health.verify.timeout \u2014 daemon may have crashed immediately");return}try{let s=require("node:http").get(`http://127.0.0.1:${r}/health`,i=>{i.statusCode===200?console.log("[bridge] health.verify.ok"):setTimeout(t,500)});s.on("error",()=>{setTimeout(t,500)}),s.setTimeout(1e3,()=>{s.destroy(),setTimeout(t,500)})}catch{setTimeout(t,500)}};setTimeout(t,1e3)}function la(){let r=new $e;ls(r);let e=parseInt(process.env.HEALTH_PORT??"3101",10),t=(0,ds.createServer)((n,s)=>{let i=cs(),o=JSON.stringify({status:"ok",connected:i,uptime:process.uptime()});s.writeHead(i?200:503,{"Content-Type":"application/json"}),s.end(o)});t.listen(e,"127.0.0.1",()=>{console.log(`[bridge] health. listening on 127.0.0.1:${e}`)}),t.on("error",n=>{console.error("[bridge] health.error",{error:n.message})})}function fs(){let r=process.env.BRIDGE_DAEMON==="1"||process.argv.includes("--daemon");if(console.log("[bridge] Starting bridge-agent daemon..."),r){la();return}sa()||(console.warn("[bridge] start.aborted.already.running"),process.exit(1));let e=na(),t=ia(e),{ok:n,permissionDenied:s}=t?oa():{ok:!1,permissionDenied:!1};if(n){console.log("[bridge] launchd.ok \u2014 managed, auto-restart enabled"),console.log("[bridge] logs: tail -f",{out:or,err:ar}),ca(),process.exit(0);return}s&&(console.warn("[bridge] launchd.permission.denied"),console.warn("[bridge] \u2192 Auto-start on login requires:"),console.warn(`[bridge] sudo launchctl bootstrap gui/$(id -u) "${it}"`),console.warn(`[bridge] Falling back to background process...
374
374
  `)),aa(e),process.exit(0)}var ps=_(require("https")),gs=_(require("http"));tt();function da(r){return(r??"").trim()}async function ms(r,e=!1,t){console.log("[bridge] Starting auth flow..."),console.log(`[bridge] Server: ${r}`),console.log("[bridge] Open this URL to generate a daemon token:"),console.log(` ${r}/connect`);let n=da(t);n&&console.log("[bridge] Using token from --token"),e&&(n?console.log("[bridge] --no-browser ignored because --token is provided."):(console.log("[bridge] --no-browser: exiting after printing URL."),process.exit(0)));let s=n;s||(console.log(),console.log("[bridge] After authenticating, paste your token here:"),s=await ua()),s||(console.error("[bridge] No token provided. Exiting."),process.exit(1)),await ha(r,s)||(console.error("[bridge] Token validation failed. Please try again."),process.exit(1));let c=r.replace(/^https?:\/\//,a=>a.startsWith("https")?"wss://":"ws://").replace(/\/?$/,"/ws/daemon");Jt({server:c,token:s,name:process.env.HOSTNAME??"My Machine"}),console.log("[bridge] Auth successful! Config saved to ~/.bridge/config.json"),console.log("[bridge] Run: bridge-agent start"),process.exit(0)}async function ua(){return new Promise(r=>{process.stdout.write("Token: ");let e="";process.stdin.setEncoding("utf-8"),process.stdin.on("data",t=>{e+=t,e.includes(`
375
- `)&&(process.stdin.pause(),r(e.trim()))}),process.stdin.resume()})}async function ha(r,e){return new Promise(t=>{let n=new URL("/api/tokens/validate",r),s=n.protocol==="https:",i=s?ps.default:gs.default,o={hostname:n.hostname,port:n.port||(s?443:80),path:n.pathname,method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${e}`}},c=i.request(o,a=>{t(a.statusCode===200)});c.on("error",()=>t(!1)),c.end()})}var Ne=new wr;Ne.name("bridge-agent").description("Bridge local agent \u2014 connects your AI tools to Jerico").version("0.1.0");Ne.command("start").description("Start the bridge-agent daemon").action(()=>{fs()});Ne.command("auth").description("Authenticate with Bridge server").requiredOption("-s, --server <url>","Server URL (e.g., https://your-server.com)").option("-t, --token <token>","Use token non-interactively").option("--no-browser","Print auth URL without opening browser or interactive prompt").action(r=>{ms(r.server,!r.browser,r.token)});Ne.command("status").description("Show connection status").action(async()=>{try{let{loadConfig:r}=await Promise.resolve().then(()=>(tt(),Xn)),e=r();console.log("[bridge] Config found"),console.log(" Server:",e.server),console.log(" Name:",e.name)}catch{console.log("[bridge] Not authenticated. Run: bridge-agent auth")}});Ne.parse();
375
+ `)&&(process.stdin.pause(),r(e.trim()))}),process.stdin.resume()})}async function ha(r,e){return new Promise(t=>{let n=new URL("/api/tokens/validate",r),s=n.protocol==="https:",i=s?ps.default:gs.default,o={hostname:n.hostname,port:n.port||(s?443:80),path:n.pathname,method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${e}`}},c=i.request(o,a=>{t(a.statusCode===200)});c.on("error",()=>t(!1)),c.end()})}var Ne=new wr;Ne.name("bridge-agent").description("Bridge local agent \u2014 connects your AI tools to Jerico").version("0.2.4");Ne.command("start").description("Start the bridge-agent daemon").action(()=>{fs()});Ne.command("auth").description("Authenticate with Bridge server").requiredOption("-s, --server <url>","Server URL (e.g., https://your-server.com)").option("-t, --token <token>","Use token non-interactively").option("--no-browser","Print auth URL without opening browser or interactive prompt").action(r=>{ms(r.server,!r.browser,r.token)});Ne.command("status").description("Show connection status").action(async()=>{try{let{loadConfig:r}=await Promise.resolve().then(()=>(tt(),Xn)),e=r();console.log("[bridge] Config found"),console.log(" Server:",e.server),console.log(" Name:",e.name)}catch{console.log("[bridge] Not authenticated. Run: bridge-agent auth")}});Ne.parse();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bridge-agent",
3
- "version": "0.2.3",
3
+ "version": "0.2.4",
4
4
  "description": "Bridge local agent — connects your AI tools to Jerico",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",