bridge-agent 0.1.3 → 0.1.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.
- package/dist/index.js +28 -28
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1,44 +1,44 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
"use strict";var ps=Object.create;var st=Object.defineProperty;var gs=Object.getOwnPropertyDescriptor;var ms=Object.getOwnPropertyNames;var _s=Object.getPrototypeOf,ys=Object.prototype.hasOwnProperty;var bs=(r,e)=>()=>(r&&(e=r(r=0)),e);var E=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports),Ss=(r,e)=>{for(var t in e)st(r,t,{get:e[t],enumerable:!0})},ws=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of ms(e))!ys.call(r,s)&&s!==t&&st(r,s,{get:()=>e[s],enumerable:!(n=gs(e,s))||n.enumerable});return r};var _=(r,e,t)=>(t=r!=null?ps(_s(r)):{},ws(e||!r||!r.__esModule?st(t,"default",{value:r,enumerable:!0}):t,r));var
|
|
2
|
+
"use strict";var ps=Object.create;var st=Object.defineProperty;var gs=Object.getOwnPropertyDescriptor;var ms=Object.getOwnPropertyNames;var _s=Object.getPrototypeOf,ys=Object.prototype.hasOwnProperty;var bs=(r,e)=>()=>(r&&(e=r(r=0)),e);var E=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports),Ss=(r,e)=>{for(var t in e)st(r,t,{get:e[t],enumerable:!0})},ws=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of ms(e))!ys.call(r,s)&&s!==t&&st(r,s,{get:()=>e[s],enumerable:!(n=gs(e,s))||n.enumerable});return r};var _=(r,e,t)=>(t=r!=null?ps(_s(r)):{},ws(e||!r||!r.__esModule?st(t,"default",{value:r,enumerable:!0}):t,r));var pe=E(ot=>{var Ne=class extends Error{constructor(e,t,n){super(n),Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name,this.code=t,this.exitCode=e,this.nestedError=void 0}},it=class extends Ne{constructor(e){super(1,"commander.invalidArgument",e),Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name}};ot.CommanderError=Ne;ot.InvalidArgumentError=it});var De=E(ct=>{var{InvalidArgumentError:Es}=pe(),at=class{constructor(e,t){switch(this.description=t||"",this.variadic=!1,this.parseArg=void 0,this.defaultValue=void 0,this.defaultValueDescription=void 0,this.argChoices=void 0,e[0]){case"<":this.required=!0,this._name=e.slice(1,-1);break;case"[":this.required=!1,this._name=e.slice(1,-1);break;default:this.required=!0,this._name=e;break}this._name.length>3&&this._name.slice(-3)==="..."&&(this.variadic=!0,this._name=this._name.slice(0,-3))}name(){return this._name}_concatValue(e,t){return t===this.defaultValue||!Array.isArray(t)?[e]:t.concat(e)}default(e,t){return this.defaultValue=e,this.defaultValueDescription=t,this}argParser(e){return this.parseArg=e,this}choices(e){return this.argChoices=e.slice(),this.parseArg=(t,n)=>{if(!this.argChoices.includes(t))throw new Es(`Allowed choices are ${this.argChoices.join(", ")}.`);return this.variadic?this._concatValue(t,n):t},this}argRequired(){return this.required=!0,this}argOptional(){return this.required=!1,this}};function xs(r){let e=r.name()+(r.variadic===!0?"...":"");return r.required?"<"+e+">":"["+e+"]"}ct.Argument=at;ct.humanReadableArgName=xs});var dt=E(sr=>{var{humanReadableArgName:vs}=De(),lt=class{constructor(){this.helpWidth=void 0,this.sortSubcommands=!1,this.sortOptions=!1,this.showGlobalOptions=!1}visibleCommands(e){let t=e.commands.filter(s=>!s._hidden),n=e._getHelpCommand();return n&&!n._hidden&&t.push(n),this.sortSubcommands&&t.sort((s,i)=>s.name().localeCompare(i.name())),t}compareOptions(e,t){let n=s=>s.short?s.short.replace(/^-/,""):s.long.replace(/^--/,"");return n(e).localeCompare(n(t))}visibleOptions(e){let t=e.options.filter(s=>!s.hidden),n=e._getHelpOption();if(n&&!n.hidden){let s=n.short&&e._findOption(n.short),i=n.long&&e._findOption(n.long);!s&&!i?t.push(n):n.long&&!i?t.push(e.createOption(n.long,n.description)):n.short&&!s&&t.push(e.createOption(n.short,n.description))}return this.sortOptions&&t.sort(this.compareOptions),t}visibleGlobalOptions(e){if(!this.showGlobalOptions)return[];let t=[];for(let n=e.parent;n;n=n.parent){let s=n.options.filter(i=>!i.hidden);t.push(...s)}return this.sortOptions&&t.sort(this.compareOptions),t}visibleArguments(e){return e._argsDescription&&e.registeredArguments.forEach(t=>{t.description=t.description||e._argsDescription[t.name()]||""}),e.registeredArguments.find(t=>t.description)?e.registeredArguments:[]}subcommandTerm(e){let t=e.registeredArguments.map(n=>vs(n)).join(" ");return e._name+(e._aliases[0]?"|"+e._aliases[0]:"")+(e.options.length?" [options]":"")+(t?" "+t:"")}optionTerm(e){return e.flags}argumentTerm(e){return e.name()}longestSubcommandTermLength(e,t){return t.visibleCommands(e).reduce((n,s)=>Math.max(n,t.subcommandTerm(s).length),0)}longestOptionTermLength(e,t){return t.visibleOptions(e).reduce((n,s)=>Math.max(n,t.optionTerm(s).length),0)}longestGlobalOptionTermLength(e,t){return t.visibleGlobalOptions(e).reduce((n,s)=>Math.max(n,t.optionTerm(s).length),0)}longestArgumentTermLength(e,t){return t.visibleArguments(e).reduce((n,s)=>Math.max(n,t.argumentTerm(s).length),0)}commandUsage(e){let t=e._name;e._aliases[0]&&(t=t+"|"+e._aliases[0]);let n="";for(let s=e.parent;s;s=s.parent)n=s.name()+" "+n;return n+t+" "+e.usage()}commandDescription(e){return e.description()}subcommandDescription(e){return e.summary()||e.description()}optionDescription(e){let t=[];return e.argChoices&&t.push(`choices: ${e.argChoices.map(n=>JSON.stringify(n)).join(", ")}`),e.defaultValue!==void 0&&(e.required||e.optional||e.isBoolean()&&typeof e.defaultValue=="boolean")&&t.push(`default: ${e.defaultValueDescription||JSON.stringify(e.defaultValue)}`),e.presetArg!==void 0&&e.optional&&t.push(`preset: ${JSON.stringify(e.presetArg)}`),e.envVar!==void 0&&t.push(`env: ${e.envVar}`),t.length>0?`${e.description} (${t.join(", ")})`:e.description}argumentDescription(e){let t=[];if(e.argChoices&&t.push(`choices: ${e.argChoices.map(n=>JSON.stringify(n)).join(", ")}`),e.defaultValue!==void 0&&t.push(`default: ${e.defaultValueDescription||JSON.stringify(e.defaultValue)}`),t.length>0){let n=`(${t.join(", ")})`;return e.description?`${e.description} ${n}`:n}return e.description}formatHelp(e,t){let n=t.padWidth(e,t),s=t.helpWidth||80,i=2,o=2;function l(f,p){if(p){let m=`${f.padEnd(n+o)}${p}`;return t.wrap(m,s-i,n+o)}return f}function a(f){return f.join(`
|
|
3
3
|
`).replace(/^/gm," ".repeat(i))}let c=[`Usage: ${t.commandUsage(e)}`,""],d=t.commandDescription(e);d.length>0&&(c=c.concat([t.wrap(d,s,0),""]));let u=t.visibleArguments(e).map(f=>l(t.argumentTerm(f),t.argumentDescription(f)));u.length>0&&(c=c.concat(["Arguments:",a(u),""]));let h=t.visibleOptions(e).map(f=>l(t.optionTerm(f),t.optionDescription(f)));if(h.length>0&&(c=c.concat(["Options:",a(h),""])),this.showGlobalOptions){let f=t.visibleGlobalOptions(e).map(p=>l(t.optionTerm(p),t.optionDescription(p)));f.length>0&&(c=c.concat(["Global Options:",a(f),""]))}let g=t.visibleCommands(e).map(f=>l(t.subcommandTerm(f),t.subcommandDescription(f)));return g.length>0&&(c=c.concat(["Commands:",a(g),""])),c.join(`
|
|
4
4
|
`)}padWidth(e,t){return Math.max(t.longestOptionTermLength(e,t),t.longestGlobalOptionTermLength(e,t),t.longestSubcommandTermLength(e,t),t.longestArgumentTermLength(e,t))}wrap(e,t,n,s=40){let i=" \\f\\t\\v\xA0\u1680\u2000-\u200A\u202F\u205F\u3000\uFEFF",o=new RegExp(`[\\n][${i}]+`);if(e.match(o))return e;let l=t-n;if(l<s)return e;let a=e.slice(0,n),c=e.slice(n).replace(`\r
|
|
5
5
|
`,`
|
|
6
6
|
`),d=" ".repeat(n),h="\\s\u200B",g=new RegExp(`
|
|
7
7
|
|.{1,${l-1}}([${h}]|$)|[^${h}]+?([${h}]|$)`,"g"),f=c.match(g)||[];return a+f.map((p,m)=>p===`
|
|
8
8
|
`?"":(m>0?d:"")+p.trimEnd()).join(`
|
|
9
|
-
`)}};
|
|
9
|
+
`)}};sr.Help=lt});var pt=E(ft=>{var{InvalidArgumentError:ks}=pe(),ut=class{constructor(e,t){this.flags=e,this.description=t||"",this.required=e.includes("<"),this.optional=e.includes("["),this.variadic=/\w\.\.\.[>\]]$/.test(e),this.mandatory=!1;let n=Is(e);this.short=n.shortFlag,this.long=n.longFlag,this.negate=!1,this.long&&(this.negate=this.long.startsWith("--no-")),this.defaultValue=void 0,this.defaultValueDescription=void 0,this.presetArg=void 0,this.envVar=void 0,this.parseArg=void 0,this.hidden=!1,this.argChoices=void 0,this.conflictsWith=[],this.implied=void 0}default(e,t){return this.defaultValue=e,this.defaultValueDescription=t,this}preset(e){return this.presetArg=e,this}conflicts(e){return this.conflictsWith=this.conflictsWith.concat(e),this}implies(e){let t=e;return typeof e=="string"&&(t={[e]:!0}),this.implied=Object.assign(this.implied||{},t),this}env(e){return this.envVar=e,this}argParser(e){return this.parseArg=e,this}makeOptionMandatory(e=!0){return this.mandatory=!!e,this}hideHelp(e=!0){return this.hidden=!!e,this}_concatValue(e,t){return t===this.defaultValue||!Array.isArray(t)?[e]:t.concat(e)}choices(e){return this.argChoices=e.slice(),this.parseArg=(t,n)=>{if(!this.argChoices.includes(t))throw new ks(`Allowed choices are ${this.argChoices.join(", ")}.`);return this.variadic?this._concatValue(t,n):t},this}name(){return this.long?this.long.replace(/^--/,""):this.short.replace(/^-/,"")}attributeName(){return Os(this.name().replace(/^no-/,""))}is(e){return this.short===e||this.long===e}isBoolean(){return!this.required&&!this.optional&&!this.negate}},ht=class{constructor(e){this.positiveOptions=new Map,this.negativeOptions=new Map,this.dualOptions=new Set,e.forEach(t=>{t.negate?this.negativeOptions.set(t.attributeName(),t):this.positiveOptions.set(t.attributeName(),t)}),this.negativeOptions.forEach((t,n)=>{this.positiveOptions.has(n)&&this.dualOptions.add(n)})}valueFromOption(e,t){let n=t.attributeName();if(!this.dualOptions.has(n))return!0;let s=this.negativeOptions.get(n).presetArg,i=s!==void 0?s:!1;return t.negate===(i===e)}};function Os(r){return r.split("-").reduce((e,t)=>e+t[0].toUpperCase()+t.slice(1))}function Is(r){let e,t,n=r.split(/[ |,]+/);return n.length>1&&!/^[[<]/.test(n[1])&&(e=n.shift()),t=n.shift(),!e&&/^-[^-]$/.test(t)&&(e=t,t=void 0),{shortFlag:e,longFlag:t}}ft.Option=ut;ft.DualOptions=ht});var or=E(ir=>{function Cs(r,e){if(Math.abs(r.length-e.length)>3)return Math.max(r.length,e.length);let t=[];for(let n=0;n<=r.length;n++)t[n]=[n];for(let n=0;n<=e.length;n++)t[0][n]=n;for(let n=1;n<=e.length;n++)for(let s=1;s<=r.length;s++){let i=1;r[s-1]===e[n-1]?i=0:i=1,t[s][n]=Math.min(t[s-1][n]+1,t[s][n-1]+1,t[s-1][n-1]+i),s>1&&n>1&&r[s-1]===e[n-2]&&r[s-2]===e[n-1]&&(t[s][n]=Math.min(t[s][n],t[s-2][n-2]+1))}return t[r.length][e.length]}function As(r,e){if(!e||e.length===0)return"";e=Array.from(new Set(e));let t=r.startsWith("--");t&&(r=r.slice(2),e=e.map(o=>o.slice(2)));let n=[],s=3,i=.4;return e.forEach(o=>{if(o.length<=1)return;let l=Cs(r,o),a=Math.max(r.length,o.length);(a-l)/a>i&&(l<s?(s=l,n=[o]):l===s&&n.push(o))}),n.sort((o,l)=>o.localeCompare(l)),t&&(n=n.map(o=>`--${o}`)),n.length>1?`
|
|
10
10
|
(Did you mean one of ${n.join(", ")}?)`:n.length===1?`
|
|
11
|
-
(Did you mean ${n[0]}?)`:""}
|
|
11
|
+
(Did you mean ${n[0]}?)`:""}ir.suggestSimilar=As});var ur=E(dr=>{var Ts=require("node:events").EventEmitter,gt=require("node:child_process"),B=require("node:path"),mt=require("node:fs"),x=require("node:process"),{Argument:Ps,humanReadableArgName:Ns}=De(),{CommanderError:_t}=pe(),{Help:Ds}=dt(),{Option:ar,DualOptions:Rs}=pt(),{suggestSimilar:cr}=or(),yt=class r extends Ts{constructor(e){super(),this.commands=[],this.options=[],this.parent=null,this._allowUnknownOption=!1,this._allowExcessArguments=!0,this.registeredArguments=[],this._args=this.registeredArguments,this.args=[],this.rawArgs=[],this.processedArgs=[],this._scriptPath=null,this._name=e||"",this._optionValues={},this._optionValueSources={},this._storeOptionsAsProperties=!1,this._actionHandler=null,this._executableHandler=!1,this._executableFile=null,this._executableDir=null,this._defaultCommandName=null,this._exitCallback=null,this._aliases=[],this._combineFlagAndOptionalValue=!0,this._description="",this._summary="",this._argsDescription=void 0,this._enablePositionalOptions=!1,this._passThroughOptions=!1,this._lifeCycleHooks={},this._showHelpAfterError=!1,this._showSuggestionAfterError=!0,this._outputConfiguration={writeOut:t=>x.stdout.write(t),writeErr:t=>x.stderr.write(t),getOutHelpWidth:()=>x.stdout.isTTY?x.stdout.columns:void 0,getErrHelpWidth:()=>x.stderr.isTTY?x.stderr.columns:void 0,outputError:(t,n)=>n(t)},this._hidden=!1,this._helpOption=void 0,this._addImplicitHelpCommand=void 0,this._helpCommand=void 0,this._helpConfiguration={}}copyInheritedSettings(e){return this._outputConfiguration=e._outputConfiguration,this._helpOption=e._helpOption,this._helpCommand=e._helpCommand,this._helpConfiguration=e._helpConfiguration,this._exitCallback=e._exitCallback,this._storeOptionsAsProperties=e._storeOptionsAsProperties,this._combineFlagAndOptionalValue=e._combineFlagAndOptionalValue,this._allowExcessArguments=e._allowExcessArguments,this._enablePositionalOptions=e._enablePositionalOptions,this._showHelpAfterError=e._showHelpAfterError,this._showSuggestionAfterError=e._showSuggestionAfterError,this}_getCommandAndAncestors(){let e=[];for(let t=this;t;t=t.parent)e.push(t);return e}command(e,t,n){let s=t,i=n;typeof s=="object"&&s!==null&&(i=s,s=null),i=i||{};let[,o,l]=e.match(/([^ ]+) *(.*)/),a=this.createCommand(o);return s&&(a.description(s),a._executableHandler=!0),i.isDefault&&(this._defaultCommandName=a._name),a._hidden=!!(i.noHelp||i.hidden),a._executableFile=i.executableFile||null,l&&a.arguments(l),this._registerCommand(a),a.parent=this,a.copyInheritedSettings(this),s?this:a}createCommand(e){return new r(e)}createHelp(){return Object.assign(new Ds,this.configureHelp())}configureHelp(e){return e===void 0?this._helpConfiguration:(this._helpConfiguration=e,this)}configureOutput(e){return e===void 0?this._outputConfiguration:(Object.assign(this._outputConfiguration,e),this)}showHelpAfterError(e=!0){return typeof e!="string"&&(e=!!e),this._showHelpAfterError=e,this}showSuggestionAfterError(e=!0){return this._showSuggestionAfterError=!!e,this}addCommand(e,t){if(!e._name)throw new Error(`Command passed to .addCommand() must have a name
|
|
12
12
|
- specify the name in Command constructor or using .name()`);return t=t||{},t.isDefault&&(this._defaultCommandName=e._name),(t.noHelp||t.hidden)&&(e._hidden=!0),this._registerCommand(e),e.parent=this,e._checkForBrokenPassThrough(),this}createArgument(e,t){return new Ps(e,t)}argument(e,t,n,s){let i=this.createArgument(e,t);return typeof n=="function"?i.default(s).argParser(n):i.default(n),this.addArgument(i),this}arguments(e){return e.trim().split(/ +/).forEach(t=>{this.argument(t)}),this}addArgument(e){let t=this.registeredArguments.slice(-1)[0];if(t&&t.variadic)throw new Error(`only the last argument can be variadic '${t.name()}'`);if(e.required&&e.defaultValue!==void 0&&e.parseArg===void 0)throw new Error(`a default value for a required argument is never used: '${e.name()}'`);return this.registeredArguments.push(e),this}helpCommand(e,t){if(typeof e=="boolean")return this._addImplicitHelpCommand=e,this;e=e??"help [command]";let[,n,s]=e.match(/([^ ]+) *(.*)/),i=t??"display help for command",o=this.createCommand(n);return o.helpOption(!1),s&&o.arguments(s),i&&o.description(i),this._addImplicitHelpCommand=!0,this._helpCommand=o,this}addHelpCommand(e,t){return typeof e!="object"?(this.helpCommand(e,t),this):(this._addImplicitHelpCommand=!0,this._helpCommand=e,this)}_getHelpCommand(){return this._addImplicitHelpCommand??(this.commands.length&&!this._actionHandler&&!this._findCommand("help"))?(this._helpCommand===void 0&&this.helpCommand(void 0,void 0),this._helpCommand):null}hook(e,t){let n=["preSubcommand","preAction","postAction"];if(!n.includes(e))throw new Error(`Unexpected value for event passed to hook : '${e}'.
|
|
13
|
-
Expecting one of '${n.join("', '")}'`);return this._lifeCycleHooks[e]?this._lifeCycleHooks[e].push(t):this._lifeCycleHooks[e]=[t],this}exitOverride(e){return e?this._exitCallback=e:this._exitCallback=t=>{if(t.code!=="commander.executeSubCommandAsync")throw t},this}_exit(e,t,n){this._exitCallback&&this._exitCallback(new _t(e,t,n)),x.exit(e)}action(e){let t=n=>{let s=this.registeredArguments.length,i=n.slice(0,s);return this._storeOptionsAsProperties?i[s]=this:i[s]=this.opts(),i.push(this),e.apply(this,i)};return this._actionHandler=t,this}createOption(e,t){return new
|
|
14
|
-
- already used by option '${t.flags}'`)}this.options.push(e)}_registerCommand(e){let t=s=>[s.name()].concat(s.aliases()),n=t(e).find(s=>this._findCommand(s));if(n){let s=t(this._findCommand(n)).join("|"),i=t(e).join("|");throw new Error(`cannot add command '${i}' as already have command '${s}'`)}this.commands.push(e)}addOption(e){this._registerOption(e);let t=e.name(),n=e.attributeName();if(e.negate){let i=e.long.replace(/^--no-/,"--");this._findOption(i)||this.setOptionValueWithSource(n,e.defaultValue===void 0?!0:e.defaultValue,"default")}else e.defaultValue!==void 0&&this.setOptionValueWithSource(n,e.defaultValue,"default");let s=(i,o,l)=>{i==null&&e.presetArg!==void 0&&(i=e.presetArg);let a=this.getOptionValue(n);i!==null&&e.parseArg?i=this._callParseArg(e,i,a,o):i!==null&&e.variadic&&(i=e._concatValue(i,a)),i==null&&(e.negate?i=!1:e.isBoolean()||e.optional?i=!0:i=""),this.setOptionValueWithSource(n,i,l)};return this.on("option:"+t,i=>{let o=`error: option '${e.flags}' argument '${i}' is invalid.`;s(i,o,"cli")}),e.envVar&&this.on("optionEnv:"+t,i=>{let o=`error: option '${e.flags}' value '${i}' from env '${e.envVar}' is invalid.`;s(i,o,"env")}),this}_optionEx(e,t,n,s,i){if(typeof t=="object"&&t instanceof
|
|
13
|
+
Expecting one of '${n.join("', '")}'`);return this._lifeCycleHooks[e]?this._lifeCycleHooks[e].push(t):this._lifeCycleHooks[e]=[t],this}exitOverride(e){return e?this._exitCallback=e:this._exitCallback=t=>{if(t.code!=="commander.executeSubCommandAsync")throw t},this}_exit(e,t,n){this._exitCallback&&this._exitCallback(new _t(e,t,n)),x.exit(e)}action(e){let t=n=>{let s=this.registeredArguments.length,i=n.slice(0,s);return this._storeOptionsAsProperties?i[s]=this:i[s]=this.opts(),i.push(this),e.apply(this,i)};return this._actionHandler=t,this}createOption(e,t){return new ar(e,t)}_callParseArg(e,t,n,s){try{return e.parseArg(t,n)}catch(i){if(i.code==="commander.invalidArgument"){let o=`${s} ${i.message}`;this.error(o,{exitCode:i.exitCode,code:i.code})}throw i}}_registerOption(e){let t=e.short&&this._findOption(e.short)||e.long&&this._findOption(e.long);if(t){let n=e.long&&this._findOption(e.long)?e.long:e.short;throw new Error(`Cannot add option '${e.flags}'${this._name&&` to command '${this._name}'`} due to conflicting flag '${n}'
|
|
14
|
+
- already used by option '${t.flags}'`)}this.options.push(e)}_registerCommand(e){let t=s=>[s.name()].concat(s.aliases()),n=t(e).find(s=>this._findCommand(s));if(n){let s=t(this._findCommand(n)).join("|"),i=t(e).join("|");throw new Error(`cannot add command '${i}' as already have command '${s}'`)}this.commands.push(e)}addOption(e){this._registerOption(e);let t=e.name(),n=e.attributeName();if(e.negate){let i=e.long.replace(/^--no-/,"--");this._findOption(i)||this.setOptionValueWithSource(n,e.defaultValue===void 0?!0:e.defaultValue,"default")}else e.defaultValue!==void 0&&this.setOptionValueWithSource(n,e.defaultValue,"default");let s=(i,o,l)=>{i==null&&e.presetArg!==void 0&&(i=e.presetArg);let a=this.getOptionValue(n);i!==null&&e.parseArg?i=this._callParseArg(e,i,a,o):i!==null&&e.variadic&&(i=e._concatValue(i,a)),i==null&&(e.negate?i=!1:e.isBoolean()||e.optional?i=!0:i=""),this.setOptionValueWithSource(n,i,l)};return this.on("option:"+t,i=>{let o=`error: option '${e.flags}' argument '${i}' is invalid.`;s(i,o,"cli")}),e.envVar&&this.on("optionEnv:"+t,i=>{let o=`error: option '${e.flags}' value '${i}' from env '${e.envVar}' is invalid.`;s(i,o,"env")}),this}_optionEx(e,t,n,s,i){if(typeof t=="object"&&t instanceof ar)throw new Error("To add an Option object use addOption() instead of option() or requiredOption()");let o=this.createOption(t,n);if(o.makeOptionMandatory(!!e.mandatory),typeof s=="function")o.default(i).argParser(s);else if(s instanceof RegExp){let l=s;s=(a,c)=>{let d=l.exec(a);return d?d[0]:c},o.default(i).argParser(s)}else o.default(s);return this.addOption(o)}option(e,t,n,s){return this._optionEx({},e,t,n,s)}requiredOption(e,t,n,s){return this._optionEx({mandatory:!0},e,t,n,s)}combineFlagAndOptionalValue(e=!0){return this._combineFlagAndOptionalValue=!!e,this}allowUnknownOption(e=!0){return this._allowUnknownOption=!!e,this}allowExcessArguments(e=!0){return this._allowExcessArguments=!!e,this}enablePositionalOptions(e=!0){return this._enablePositionalOptions=!!e,this}passThroughOptions(e=!0){return this._passThroughOptions=!!e,this._checkForBrokenPassThrough(),this}_checkForBrokenPassThrough(){if(this.parent&&this._passThroughOptions&&!this.parent._enablePositionalOptions)throw new Error(`passThroughOptions cannot be used for '${this._name}' without turning on enablePositionalOptions for parent command(s)`)}storeOptionsAsProperties(e=!0){if(this.options.length)throw new Error("call .storeOptionsAsProperties() before adding options");if(Object.keys(this._optionValues).length)throw new Error("call .storeOptionsAsProperties() before setting option values");return this._storeOptionsAsProperties=!!e,this}getOptionValue(e){return this._storeOptionsAsProperties?this[e]:this._optionValues[e]}setOptionValue(e,t){return this.setOptionValueWithSource(e,t,void 0)}setOptionValueWithSource(e,t,n){return this._storeOptionsAsProperties?this[e]=t:this._optionValues[e]=t,this._optionValueSources[e]=n,this}getOptionValueSource(e){return this._optionValueSources[e]}getOptionValueSourceWithGlobals(e){let t;return this._getCommandAndAncestors().forEach(n=>{n.getOptionValueSource(e)!==void 0&&(t=n.getOptionValueSource(e))}),t}_prepareUserArgs(e,t){if(e!==void 0&&!Array.isArray(e))throw new Error("first parameter to parse must be array or undefined");if(t=t||{},e===void 0&&t.from===void 0){x.versions?.electron&&(t.from="electron");let s=x.execArgv??[];(s.includes("-e")||s.includes("--eval")||s.includes("-p")||s.includes("--print"))&&(t.from="eval")}e===void 0&&(e=x.argv),this.rawArgs=e.slice();let n;switch(t.from){case void 0:case"node":this._scriptPath=e[1],n=e.slice(2);break;case"electron":x.defaultApp?(this._scriptPath=e[1],n=e.slice(2)):n=e.slice(1);break;case"user":n=e.slice(0);break;case"eval":n=e.slice(1);break;default:throw new Error(`unexpected parse option { from: '${t.from}' }`)}return!this._name&&this._scriptPath&&this.nameFromFilename(this._scriptPath),this._name=this._name||"program",n}parse(e,t){let n=this._prepareUserArgs(e,t);return this._parseCommand([],n),this}async parseAsync(e,t){let n=this._prepareUserArgs(e,t);return await this._parseCommand([],n),this}_executeSubCommand(e,t){t=t.slice();let n=!1,s=[".js",".ts",".tsx",".mjs",".cjs"];function i(d,u){let h=B.resolve(d,u);if(mt.existsSync(h))return h;if(s.includes(B.extname(u)))return;let g=s.find(f=>mt.existsSync(`${h}${f}`));if(g)return`${h}${g}`}this._checkForMissingMandatoryOptions(),this._checkForConflictingOptions();let o=e._executableFile||`${this._name}-${e._name}`,l=this._executableDir||"";if(this._scriptPath){let d;try{d=mt.realpathSync(this._scriptPath)}catch{d=this._scriptPath}l=B.resolve(B.dirname(d),l)}if(l){let d=i(l,o);if(!d&&!e._executableFile&&this._scriptPath){let u=B.basename(this._scriptPath,B.extname(this._scriptPath));u!==this._name&&(d=i(l,`${u}-${e._name}`))}o=d||o}n=s.includes(B.extname(o));let a;x.platform!=="win32"?n?(t.unshift(o),t=lr(x.execArgv).concat(t),a=gt.spawn(x.argv[0],t,{stdio:"inherit"})):a=gt.spawn(o,t,{stdio:"inherit"}):(t.unshift(o),t=lr(x.execArgv).concat(t),a=gt.spawn(x.execPath,t,{stdio:"inherit"})),a.killed||["SIGUSR1","SIGUSR2","SIGTERM","SIGINT","SIGHUP"].forEach(u=>{x.on(u,()=>{a.killed===!1&&a.exitCode===null&&a.kill(u)})});let c=this._exitCallback;a.on("close",d=>{d=d??1,c?c(new _t(d,"commander.executeSubCommandAsync","(close)")):x.exit(d)}),a.on("error",d=>{if(d.code==="ENOENT"){let u=l?`searched for local subcommand relative to directory '${l}'`:"no directory for search for local subcommand, use .executableDir() to supply a custom directory",h=`'${o}' does not exist
|
|
15
15
|
- if '${e._name}' is not meant to be an executable command, remove description parameter from '.command()' and use '.description()' instead
|
|
16
16
|
- if the default executable name is not suitable, use the executableFile option to supply a custom name or path
|
|
17
17
|
- ${u}`;throw new Error(h)}else if(d.code==="EACCES")throw new Error(`'${o}' not executable`);if(!c)x.exit(1);else{let u=new _t(1,"commander.executeSubCommandAsync","(error)");u.nestedError=d,c(u)}}),this.runningCommand=a}_dispatchSubcommand(e,t,n){let s=this._findCommand(e);s||this.help({error:!0});let i;return i=this._chainOrCallSubCommandHook(i,s,"preSubcommand"),i=this._chainOrCall(i,()=>{if(s._executableHandler)this._executeSubCommand(s,t.concat(n));else return s._parseCommand(t,n)}),i}_dispatchHelpCommand(e){e||this.help();let t=this._findCommand(e);return t&&!t._executableHandler&&t.help(),this._dispatchSubcommand(e,[],[this._getHelpOption()?.long??this._getHelpOption()?.short??"--help"])}_checkNumberOfArguments(){this.registeredArguments.forEach((e,t)=>{e.required&&this.args[t]==null&&this.missingArgument(e.name())}),!(this.registeredArguments.length>0&&this.registeredArguments[this.registeredArguments.length-1].variadic)&&this.args.length>this.registeredArguments.length&&this._excessArguments(this.args)}_processArguments(){let e=(n,s,i)=>{let o=s;if(s!==null&&n.parseArg){let l=`error: command-argument value '${s}' is invalid for argument '${n.name()}'.`;o=this._callParseArg(n,s,i,l)}return o};this._checkNumberOfArguments();let t=[];this.registeredArguments.forEach((n,s)=>{let i=n.defaultValue;n.variadic?s<this.args.length?(i=this.args.slice(s),n.parseArg&&(i=i.reduce((o,l)=>e(n,l,o),n.defaultValue))):i===void 0&&(i=[]):s<this.args.length&&(i=this.args[s],n.parseArg&&(i=e(n,i,n.defaultValue))),t[s]=i}),this.processedArgs=t}_chainOrCall(e,t){return e&&e.then&&typeof e.then=="function"?e.then(()=>t()):t()}_chainOrCallHooks(e,t){let n=e,s=[];return this._getCommandAndAncestors().reverse().filter(i=>i._lifeCycleHooks[t]!==void 0).forEach(i=>{i._lifeCycleHooks[t].forEach(o=>{s.push({hookedCommand:i,callback:o})})}),t==="postAction"&&s.reverse(),s.forEach(i=>{n=this._chainOrCall(n,()=>i.callback(i.hookedCommand,this))}),n}_chainOrCallSubCommandHook(e,t,n){let s=e;return this._lifeCycleHooks[n]!==void 0&&this._lifeCycleHooks[n].forEach(i=>{s=this._chainOrCall(s,()=>i(this,t))}),s}_parseCommand(e,t){let n=this.parseOptions(t);if(this._parseOptionsEnv(),this._parseOptionsImplied(),e=e.concat(n.operands),t=n.unknown,this.args=e.concat(t),e&&this._findCommand(e[0]))return this._dispatchSubcommand(e[0],e.slice(1),t);if(this._getHelpCommand()&&e[0]===this._getHelpCommand().name())return this._dispatchHelpCommand(e[1]);if(this._defaultCommandName)return this._outputHelpIfRequested(t),this._dispatchSubcommand(this._defaultCommandName,e,t);this.commands.length&&this.args.length===0&&!this._actionHandler&&!this._defaultCommandName&&this.help({error:!0}),this._outputHelpIfRequested(n.unknown),this._checkForMissingMandatoryOptions(),this._checkForConflictingOptions();let s=()=>{n.unknown.length>0&&this.unknownOption(n.unknown[0])},i=`command:${this.name()}`;if(this._actionHandler){s(),this._processArguments();let o;return o=this._chainOrCallHooks(o,"preAction"),o=this._chainOrCall(o,()=>this._actionHandler(this.processedArgs)),this.parent&&(o=this._chainOrCall(o,()=>{this.parent.emit(i,e,t)})),o=this._chainOrCallHooks(o,"postAction"),o}if(this.parent&&this.parent.listenerCount(i))s(),this._processArguments(),this.parent.emit(i,e,t);else if(e.length){if(this._findCommand("*"))return this._dispatchSubcommand("*",e,t);this.listenerCount("command:*")?this.emit("command:*",e,t):this.commands.length?this.unknownCommand():(s(),this._processArguments())}else this.commands.length?(s(),this.help({error:!0})):(s(),this._processArguments())}_findCommand(e){if(e)return this.commands.find(t=>t._name===e||t._aliases.includes(e))}_findOption(e){return this.options.find(t=>t.is(e))}_checkForMissingMandatoryOptions(){this._getCommandAndAncestors().forEach(e=>{e.options.forEach(t=>{t.mandatory&&e.getOptionValue(t.attributeName())===void 0&&e.missingMandatoryOptionValue(t)})})}_checkForConflictingLocalOptions(){let e=this.options.filter(n=>{let s=n.attributeName();return this.getOptionValue(s)===void 0?!1:this.getOptionValueSource(s)!=="default"});e.filter(n=>n.conflictsWith.length>0).forEach(n=>{let s=e.find(i=>n.conflictsWith.includes(i.attributeName()));s&&this._conflictingOption(n,s)})}_checkForConflictingOptions(){this._getCommandAndAncestors().forEach(e=>{e._checkForConflictingLocalOptions()})}parseOptions(e){let t=[],n=[],s=t,i=e.slice();function o(a){return a.length>1&&a[0]==="-"}let l=null;for(;i.length;){let a=i.shift();if(a==="--"){s===n&&s.push(a),s.push(...i);break}if(l&&!o(a)){this.emit(`option:${l.name()}`,a);continue}if(l=null,o(a)){let c=this._findOption(a);if(c){if(c.required){let d=i.shift();d===void 0&&this.optionMissingArgument(c),this.emit(`option:${c.name()}`,d)}else if(c.optional){let d=null;i.length>0&&!o(i[0])&&(d=i.shift()),this.emit(`option:${c.name()}`,d)}else this.emit(`option:${c.name()}`);l=c.variadic?c:null;continue}}if(a.length>2&&a[0]==="-"&&a[1]!=="-"){let c=this._findOption(`-${a[1]}`);if(c){c.required||c.optional&&this._combineFlagAndOptionalValue?this.emit(`option:${c.name()}`,a.slice(2)):(this.emit(`option:${c.name()}`),i.unshift(`-${a.slice(2)}`));continue}}if(/^--[^=]+=/.test(a)){let c=a.indexOf("="),d=this._findOption(a.slice(0,c));if(d&&(d.required||d.optional)){this.emit(`option:${d.name()}`,a.slice(c+1));continue}}if(o(a)&&(s=n),(this._enablePositionalOptions||this._passThroughOptions)&&t.length===0&&n.length===0){if(this._findCommand(a)){t.push(a),i.length>0&&n.push(...i);break}else if(this._getHelpCommand()&&a===this._getHelpCommand().name()){t.push(a),i.length>0&&t.push(...i);break}else if(this._defaultCommandName){n.push(a),i.length>0&&n.push(...i);break}}if(this._passThroughOptions){s.push(a),i.length>0&&s.push(...i);break}s.push(a)}return{operands:t,unknown:n}}opts(){if(this._storeOptionsAsProperties){let e={},t=this.options.length;for(let n=0;n<t;n++){let s=this.options[n].attributeName();e[s]=s===this._versionOptionName?this._version:this[s]}return e}return this._optionValues}optsWithGlobals(){return this._getCommandAndAncestors().reduce((e,t)=>Object.assign(e,t.opts()),{})}error(e,t){this._outputConfiguration.outputError(`${e}
|
|
18
18
|
`,this._outputConfiguration.writeErr),typeof this._showHelpAfterError=="string"?this._outputConfiguration.writeErr(`${this._showHelpAfterError}
|
|
19
19
|
`):this._showHelpAfterError&&(this._outputConfiguration.writeErr(`
|
|
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 x.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()}`,x.env[e.envVar]):this.emit(`optionEnv:${e.name()}`))}})}_parseOptionsImplied(){let e=new Rs(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 l=o.attributeName(),a=this.getOptionValue(l),c=this.options.find(u=>u.negate&&l===u.attributeName()),d=this.options.find(u=>!u.negate&&l===u.attributeName());return c&&(c.presetArg===void 0&&a===!1||c.presetArg!==void 0&&a===c.presetArg)?c:d||o},s=o=>{let l=n(o),a=l.attributeName();return this.getOptionValueSource(a)==="env"?`environment variable '${l.envVar}'`:`option '${l.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(l=>l.long).map(l=>l.long);s=s.concat(o),i=i.parent}while(i&&!i._enablePositionalOptions);t=
|
|
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 x.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()}`,x.env[e.envVar]):this.emit(`optionEnv:${e.name()}`))}})}_parseOptionsImplied(){let e=new Rs(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 l=o.attributeName(),a=this.getOptionValue(l),c=this.options.find(u=>u.negate&&l===u.attributeName()),d=this.options.find(u=>!u.negate&&l===u.attributeName());return c&&(c.presetArg===void 0&&a===!1||c.presetArg!==void 0&&a===c.presetArg)?c:d||o},s=o=>{let l=n(o),a=l.attributeName();return this.getOptionValueSource(a)==="env"?`environment variable '${l.envVar}'`:`option '${l.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(l=>l.long).map(l=>l.long);s=s.concat(o),i=i.parent}while(i&&!i._enablePositionalOptions);t=cr(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=cr(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=>Ns(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=x.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 cr(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})}lr.Command=yt});var pr=E(T=>{var{Argument:ur}=Ne(),{Command:bt}=dr(),{CommanderError:Ls,InvalidArgumentError:hr}=fe(),{Help:Ms}=dt(),{Option:fr}=pt();T.program=new bt;T.createCommand=r=>new bt(r);T.createOption=(r,e)=>new fr(r,e);T.createArgument=(r,e)=>new ur(r,e);T.Command=bt;T.Option=fr;T.Argument=ur;T.Help=Ms;T.CommanderError=Ls;T.InvalidArgumentError=hr;T.InvalidOptionArgumentError=hr});var Er=E(k=>{"use strict";var St=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports),js=St(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(l,a={})=>{let{ignoreErrors:c=!1}=a;try{return i(await(0,t.stat)(l),a)}catch(d){let u=d;if(c||u.code==="EACCES")return!1;throw u}};r.isexe=n;var s=(l,a={})=>{let{ignoreErrors:c=!1}=a;try{return i((0,e.statSync)(l),a)}catch(d){let u=d;if(c||u.code==="EACCES")return!1;throw u}};r.sync=s;var i=(l,a)=>l.isFile()&&o(l,a),o=(l,a)=>{let c=a.uid??process.getuid?.(),d=a.groups??process.getgroups?.()??[],u=a.gid??process.getgid?.()??d[0];if(c===void 0||u===void 0)throw new Error("cannot get uid or gid");let h=new Set([u,...d]),g=l.mode,f=l.uid,p=l.gid,m=parseInt("100",8),v=parseInt("010",8),C=parseInt("001",8),b=m|v;return!!(g&C||g&v&&h.has(p)||g&m&&f===c||g&b&&c===0)}}),Bs=St(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,c={})=>{let{ignoreErrors:d=!1}=c;try{return l(await(0,t.stat)(a),a,c)}catch(u){let h=u;if(d||h.code==="EACCES")return!1;throw h}};r.isexe=s;var i=(a,c={})=>{let{ignoreErrors:d=!1}=c;try{return l((0,e.statSync)(a),a,c)}catch(u){let h=u;if(d||h.code==="EACCES")return!1;throw h}};r.sync=i;var o=(a,c)=>{let{pathExt:d=process.env.PATHEXT||""}=c,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},l=(a,c,d)=>a.isFile()&&o(c,d)}),$s=St(r=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0})}),_r=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]})),Us=k&&k.__setModuleDefault||(Object.create?(function(r,e){Object.defineProperty(r,"default",{enumerable:!0,value:e})}):function(r,e){r.default=e}),yr=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"&&_r(t,e,n[s]);return Us(t,e),t}})(),Ws=k&&k.__exportStar||function(r,e){for(var t in r)t!=="default"&&!Object.prototype.hasOwnProperty.call(e,t)&&_r(e,r,t)};Object.defineProperty(k,"__esModule",{value:!0});k.sync=k.isexe=k.posix=k.win32=void 0;var br=yr(js());k.posix=br;var Sr=yr(Bs());k.win32=Sr;Ws($s(),k);var Fs=process.env._ISEXE_TEST_PLATFORM_||process.platform,wr=Fs==="win32"?Sr:br;k.isexe=wr.isexe;k.sync=wr.sync});var Nr=E((Ia,Pr)=>{var{isexe:qs,sync:Vs}=Er(),{join:Hs,delimiter:Gs,sep:xr,posix:vr}=require("path"),kr=process.platform==="win32",Or=new RegExp(`[${vr.sep}${xr===vr.sep?"":xr}]`.replace(/(\\)/g,"\\$1")),Ks=new RegExp(`^\\.${Or.source}`),Ir=r=>Object.assign(new Error(`not found: ${r}`),{code:"ENOENT"}),Cr=(r,{path:e=process.env.PATH,pathExt:t=process.env.PATHEXT,delimiter:n=Gs})=>{let s=r.match(Or)?[""]:[...kr?[process.cwd()]:[],...(e||"").split(n)];if(kr){let i=t||[".EXE",".CMD",".BAT",".COM"].join(n),o=i.split(n).flatMap(l=>[l,l.toLowerCase()]);return r.includes(".")&&o[0]!==""&&o.unshift(""),{pathEnv:s,pathExt:o,pathExtExe:i}}return{pathEnv:s,pathExt:[""]}},Ar=(r,e)=>{let t=/^".*"$/.test(r)?r.slice(1,-1):r;return(!t&&Ks.test(e)?e.slice(0,2):"")+Hs(t,e)},Tr=async(r,e={})=>{let{pathEnv:t,pathExt:n,pathExtExe:s}=Cr(r,e),i=[];for(let o of t){let l=Ar(o,r);for(let a of n){let c=l+a;if(await qs(c,{pathExt:s,ignoreErrors:!0})){if(!e.all)return c;i.push(c)}}}if(e.all&&i.length)return i;if(e.nothrow)return null;throw Ir(r)},Ys=(r,e={})=>{let{pathEnv:t,pathExt:n,pathExtExe:s}=Cr(r,e),i=[];for(let o of t){let l=Ar(o,r);for(let a of n){let c=l+a;if(Vs(c,{pathExt:s,ignoreErrors:!0})){if(!e.all)return c;i.push(c)}}}if(e.all&&i.length)return i;if(e.nothrow)return null;throw Ir(r)};Pr.exports=Tr;Tr.sync=Ys});var $=E((Pa,Ur)=>{"use strict";var Br=["nodebuffer","arraybuffer","fragments"],$r=typeof Blob<"u";$r&&Br.push("blob");Ur.exports={BINARY_TYPES:Br,CLOSE_TIMEOUT:3e4,EMPTY_BUFFER:Buffer.alloc(0),GUID:"258EAFA5-E914-47DA-95CA-C5AB0DC85B11",hasBlob:$r,kForOnEventAttribute:Symbol("kIsForOnEventAttribute"),kListener:Symbol("kListener"),kStatusCode:Symbol("status-code"),kWebSocket:Symbol("websocket"),NOOP:()=>{}}});var pe=E((Na,Me)=>{"use strict";var{EMPTY_BUFFER:zs}=$(),xt=Buffer[Symbol.species];function Xs(r,e){if(r.length===0)return zs;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 xt(t.buffer,t.byteOffset,n):t}function Wr(r,e,t,n,s){for(let i=0;i<s;i++)t[n+i]=r[i]^e[i&3]}function Fr(r,e){for(let t=0;t<r.length;t++)r[t]^=e[t&3]}function Qs(r){return r.length===r.buffer.byteLength?r.buffer:r.buffer.slice(r.byteOffset,r.byteOffset+r.length)}function vt(r){if(vt.readOnly=!0,Buffer.isBuffer(r))return r;let e;return r instanceof ArrayBuffer?e=new xt(r):ArrayBuffer.isView(r)?e=new xt(r.buffer,r.byteOffset,r.byteLength):(e=Buffer.from(r),vt.readOnly=!1),e}Me.exports={concat:Xs,mask:Wr,toArrayBuffer:Qs,toBuffer:vt,unmask:Fr};if(!process.env.WS_NO_BUFFER_UTIL)try{let r=require("bufferutil");Me.exports.mask=function(e,t,n,s,i){i<48?Wr(e,t,n,s,i):r.mask(e,t,n,s,i)},Me.exports.unmask=function(e,t){e.length<32?Fr(e,t):r.unmask(e,t)}}catch{}});var Hr=E((Da,Vr)=>{"use strict";var qr=Symbol("kDone"),kt=Symbol("kRun"),Ot=class{constructor(e){this[qr]=()=>{this.pending--,this[kt]()},this.concurrency=e||1/0,this.jobs=[],this.pending=0}add(e){this.jobs.push(e),this[kt]()}[kt](){if(this.pending!==this.concurrency&&this.jobs.length){let e=this.jobs.shift();this.pending++,e(this[qr])}}};Vr.exports=Ot});var oe=E((Ra,Jr)=>{"use strict";var ge=require("zlib"),Gr=pe(),Zs=Hr(),{kStatusCode:Kr}=$(),ei=Buffer[Symbol.species],ti=Buffer.from([0,0,255,255]),Be=Symbol("permessage-deflate"),U=Symbol("total-length"),se=Symbol("callback"),H=Symbol("buffers"),ie=Symbol("error"),je,It=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,!je){let t=this._options.concurrencyLimit!==void 0?this._options.concurrencyLimit:10;je=new Zs(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[se];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){je.add(s=>{this._decompress(e,t,(i,o)=>{s(),n(i,o)})})}compress(e,t,n){je.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"?ge.Z_DEFAULT_WINDOWBITS:this.params[i];this._inflate=ge.createInflateRaw({...this._options.zlibInflateOptions,windowBits:o}),this._inflate[Be]=this,this._inflate[U]=0,this._inflate[H]=[],this._inflate.on("error",ni),this._inflate.on("data",Yr)}this._inflate[se]=n,this._inflate.write(e),t&&this._inflate.write(ti),this._inflate.flush(()=>{let i=this._inflate[ie];if(i){this._inflate.close(),this._inflate=null,n(i);return}let o=Gr.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"?ge.Z_DEFAULT_WINDOWBITS:this.params[i];this._deflate=ge.createDeflateRaw({...this._options.zlibDeflateOptions,windowBits:o}),this._deflate[U]=0,this._deflate[H]=[],this._deflate.on("data",ri)}this._deflate[se]=n,this._deflate.write(e),this._deflate.flush(ge.Z_SYNC_FLUSH,()=>{if(!this._deflate)return;let i=Gr.concat(this._deflate[H],this._deflate[U]);t&&(i=new ei(i.buffer,i.byteOffset,i.length-4)),this._deflate[se]=null,this._deflate[U]=0,this._deflate[H]=[],t&&this.params[`${s}_no_context_takeover`]&&this._deflate.reset(),n(null,i)})}};Jr.exports=It;function ri(r){this[H].push(r),this[U]+=r.length}function Yr(r){if(this[U]+=r.length,this[Be]._maxPayload<1||this[U]<=this[Be]._maxPayload){this[H].push(r);return}this[ie]=new RangeError("Max payload size exceeded"),this[ie].code="WS_ERR_UNSUPPORTED_MESSAGE_LENGTH",this[ie][Kr]=1009,this.removeListener("data",Yr),this.reset()}function ni(r){if(this[Be]._inflate=null,this[ie]){this[se](this[ie]);return}r[Kr]=1007,this[se](r)}});var ae=E((La,$e)=>{"use strict";var{isUtf8:zr}=require("buffer"),{hasBlob:si}=$(),ii=[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 oi(r){return r>=1e3&&r<=1014&&r!==1004&&r!==1005&&r!==1006||r>=3e3&&r<=4999}function Ct(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 ai(r){return si&&typeof r=="object"&&typeof r.arrayBuffer=="function"&&typeof r.type=="string"&&typeof r.stream=="function"&&(r[Symbol.toStringTag]==="Blob"||r[Symbol.toStringTag]==="File")}$e.exports={isBlob:ai,isValidStatusCode:oi,isValidUTF8:Ct,tokenChars:ii};if(zr)$e.exports.isValidUTF8=function(r){return r.length<24?Ct(r):zr(r)};else if(!process.env.WS_NO_UTF_8_VALIDATE)try{let r=require("utf-8-validate");$e.exports.isValidUTF8=function(e){return e.length<32?Ct(e):r(e)}}catch{}});var Dt=E((Ma,nn)=>{"use strict";var{Writable:ci}=require("stream"),Xr=oe(),{BINARY_TYPES:li,EMPTY_BUFFER:Qr,kStatusCode:di,kWebSocket:ui}=$(),{concat:At,toArrayBuffer:hi,unmask:fi}=pe(),{isValidStatusCode:pi,isValidUTF8:Zr}=ae(),Ue=Buffer[Symbol.species],P=0,en=1,tn=2,rn=3,Tt=4,Pt=5,We=6,Nt=class extends ci{constructor(e={}){super(),this._allowSynchronousEvents=e.allowSynchronousEvents!==void 0?e.allowSynchronousEvents:!0,this._binaryType=e.binaryType||li[0],this._extensions=e.extensions||{},this._isServer=!!e.isServer,this._maxPayload=e.maxPayload|0,this._skipUTF8Validation=!!e.skipUTF8Validation,this[ui]=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 Ue(n.buffer,n.byteOffset+e,n.length-e),new Ue(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 Ue(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 en:this.getPayloadLength16(e);break;case tn:this.getPayloadLength64(e);break;case rn:this.getMask();break;case Tt:this.getData(e);break;case Pt:case We: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[Xr.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=en:this._payloadLength===127?this._state=tn: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=rn:this._state=Tt}getMask(){if(this._bufferedBytes<4){this._loop=!1;return}this._mask=this.consume(4),this._state=Tt}getData(e){let t=Qr;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&&fi(t,this._mask)}if(this._opcode>7){this.controlMessage(t,e);return}if(this._compressed){this._state=Pt,this.decompress(t,e);return}t.length&&(this._messageLength=this._totalPayloadLength,this._fragments.push(t)),this.dataMessage(e)}decompress(e,t){this._extensions[Xr.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=At(n,t):this._binaryType==="arraybuffer"?s=hi(At(n,t)):this._binaryType==="blob"?s=new Blob(n):s=n,this._allowSynchronousEvents?(this.emit("message",s,!0),this._state=P):(this._state=We,setImmediate(()=>{this.emit("message",s,!0),this._state=P,this.startLoop(e)}))}else{let s=At(n,t);if(!this._skipUTF8Validation&&!Zr(s)){let i=this.createError(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");e(i);return}this._state===Pt||this._allowSynchronousEvents?(this.emit("message",s,!1),this._state=P):(this._state=We,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,Qr),this.end();else{let n=e.readUInt16BE(0);if(!pi(n)){let i=this.createError(RangeError,`invalid status code ${n}`,!0,1002,"WS_ERR_INVALID_CLOSE_CODE");t(i);return}let s=new Ue(e.buffer,e.byteOffset+2,e.length-2);if(!this._skipUTF8Validation&&!Zr(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=We,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[di]=s,o}};nn.exports=Nt});var Mt=E((Ba,an)=>{"use strict";var{Duplex:ja}=require("stream"),{randomFillSync:gi}=require("crypto"),sn=oe(),{EMPTY_BUFFER:mi,kWebSocket:_i,NOOP:yi}=$(),{isBlob:ce,isValidStatusCode:bi}=ae(),{mask:on,toBuffer:J}=pe(),N=Symbol("kByteLength"),Si=Buffer.alloc(4),Fe=8*1024,z,le=Fe,R=0,wi=1,Ei=2,Rt=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=yi,this[_i]=void 0}static frame(e,t){let n,s=!1,i=2,o=!1;t.mask&&(n=t.maskBuffer||Si,t.generateMask?t.generateMask(n):(le===Fe&&(z===void 0&&(z=Buffer.alloc(Fe)),gi(z,0,Fe),le=0),n[0]=z[le++],n[1]=z[le++],n[2]=z[le++],n[3]=z[le++]),o=(n[0]|n[1]|n[2]|n[3])===0,i=6);let l;typeof e=="string"?(!t.mask||o)&&t[N]!==void 0?l=t[N]:(e=Buffer.from(e),l=e.length):(l=e.length,s=t.mask&&t.readOnly&&!o);let a=l;l>=65536?(i+=8,a=127):l>125&&(i+=2,a=126);let c=Buffer.allocUnsafe(s?l+i:i);return c[0]=t.fin?t.opcode|128:t.opcode,t.rsv1&&(c[0]|=64),c[1]=a,a===126?c.writeUInt16BE(l,2):a===127&&(c[2]=c[3]=0,c.writeUIntBE(l,4,6)),t.mask?(c[1]|=128,c[i-4]=n[0],c[i-3]=n[1],c[i-2]=n[2],c[i-1]=n[3],o?[c,e]:s?(on(e,n,c,i,l),[c]):(on(e,n,e,0,l),[c,e])):[c,e]}close(e,t,n,s){let i;if(e===void 0)i=mi;else{if(typeof e!="number"||!bi(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 l=Buffer.byteLength(t);if(l>123)throw new RangeError("The message must not be greater than 123 bytes");i=Buffer.allocUnsafe(2+l),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):ce(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};ce(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):ce(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};ce(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[sn.extensionName],i=t.binary?2:1,o=t.compress,l,a;typeof e=="string"?(l=Buffer.byteLength(e),a=!1):ce(e)?(l=e.size,a=!1):(e=J(e),l=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=l>=s._threshold),this._compress=o):(o=!1,i=0),t.fin&&(this._firstFragment=!0);let c={[N]:l,fin:t.fin,generateMask:this._generateMask,mask:t.mask,maskBuffer:this._maskBuffer,opcode:i,readOnly:a,rsv1:o};ce(e)?this._state!==R?this.enqueue([this.getBlobData,e,this._compress,c,n]):this.getBlobData(e,this._compress,c,n):this._state!==R?this.enqueue([this.dispatch,e,this._compress,c,n]):this.dispatch(e,this._compress,c,n)}getBlobData(e,t,n,s){this._bufferedBytes+=n[N],this._state=Ei,e.arrayBuffer().then(i=>{if(this._socket.destroyed){let l=new Error("The socket was closed while the blob was being read");process.nextTick(Lt,this,l,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(xi,this,i,s)})}dispatch(e,t,n,s){if(!t){this.sendFrame(r.frame(e,n),s);return}let i=this._extensions[sn.extensionName];this._bufferedBytes+=n[N],this._state=wi,i.compress(e,n.fin,(o,l)=>{if(this._socket.destroyed){let a=new Error("The socket was closed while data was being compressed");Lt(this,a,s);return}this._bufferedBytes-=n[N],this._state=R,n.readOnly=!1,this.sendFrame(r.frame(l,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)}};an.exports=Rt;function Lt(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 xi(r,e,t){Lt(r,e,t),r.onerror(e)}});var mn=E(($a,gn)=>{"use strict";var{kForOnEventAttribute:me,kListener:jt}=$(),cn=Symbol("kCode"),ln=Symbol("kData"),dn=Symbol("kError"),un=Symbol("kMessage"),hn=Symbol("kReason"),de=Symbol("kTarget"),fn=Symbol("kType"),pn=Symbol("kWasClean"),W=class{constructor(e){this[de]=null,this[fn]=e}get target(){return this[de]}get type(){return this[fn]}};Object.defineProperty(W.prototype,"target",{enumerable:!0});Object.defineProperty(W.prototype,"type",{enumerable:!0});var X=class extends W{constructor(e,t={}){super(e),this[cn]=t.code===void 0?0:t.code,this[hn]=t.reason===void 0?"":t.reason,this[pn]=t.wasClean===void 0?!1:t.wasClean}get code(){return this[cn]}get reason(){return this[hn]}get wasClean(){return this[pn]}};Object.defineProperty(X.prototype,"code",{enumerable:!0});Object.defineProperty(X.prototype,"reason",{enumerable:!0});Object.defineProperty(X.prototype,"wasClean",{enumerable:!0});var ue=class extends W{constructor(e,t={}){super(e),this[dn]=t.error===void 0?null:t.error,this[un]=t.message===void 0?"":t.message}get error(){return this[dn]}get message(){return this[un]}};Object.defineProperty(ue.prototype,"error",{enumerable:!0});Object.defineProperty(ue.prototype,"message",{enumerable:!0});var _e=class extends W{constructor(e,t={}){super(e),this[ln]=t.data===void 0?null:t.data}get data(){return this[ln]}};Object.defineProperty(_e.prototype,"data",{enumerable:!0});var vi={addEventListener(r,e,t={}){for(let s of this.listeners(r))if(!t[me]&&s[jt]===e&&!s[me])return;let n;if(r==="message")n=function(i,o){let l=new _e("message",{data:o?i:i.toString()});l[de]=this,qe(e,this,l)};else if(r==="close")n=function(i,o){let l=new X("close",{code:i,reason:o.toString(),wasClean:this._closeFrameReceived&&this._closeFrameSent});l[de]=this,qe(e,this,l)};else if(r==="error")n=function(i){let o=new ue("error",{error:i,message:i.message});o[de]=this,qe(e,this,o)};else if(r==="open")n=function(){let i=new W("open");i[de]=this,qe(e,this,i)};else return;n[me]=!!t[me],n[jt]=e,t.once?this.once(r,n):this.on(r,n)},removeEventListener(r,e){for(let t of this.listeners(r))if(t[jt]===e&&!t[me]){this.removeListener(r,t);break}}};gn.exports={CloseEvent:X,ErrorEvent:ue,Event:W,EventTarget:vi,MessageEvent:_e};function qe(r,e,t){typeof r=="object"&&r.handleEvent?r.handleEvent.call(r,t):r.call(e,t)}});var Ve=E((Ua,_n)=>{"use strict";var{tokenChars:ye}=ae();function M(r,e,t){r[e]===void 0?r[e]=[t]:r[e].push(t)}function ki(r){let e=Object.create(null),t=Object.create(null),n=!1,s=!1,i=!1,o,l,a=-1,c=-1,d=-1,u=0;for(;u<r.length;u++)if(c=r.charCodeAt(u),o===void 0)if(d===-1&&ye[c]===1)a===-1&&(a=u);else if(u!==0&&(c===32||c===9))d===-1&&a!==-1&&(d=u);else if(c===59||c===44){if(a===-1)throw new SyntaxError(`Unexpected character at index ${u}`);d===-1&&(d=u);let g=r.slice(a,d);c===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(l===void 0)if(d===-1&&ye[c]===1)a===-1&&(a=u);else if(c===32||c===9)d===-1&&a!==-1&&(d=u);else if(c===59||c===44){if(a===-1)throw new SyntaxError(`Unexpected character at index ${u}`);d===-1&&(d=u),M(t,r.slice(a,d),!0),c===44&&(M(e,o,t),t=Object.create(null),o=void 0),a=d=-1}else if(c===61&&a!==-1&&d===-1)l=r.slice(a,u),a=d=-1;else throw new SyntaxError(`Unexpected character at index ${u}`);else if(s){if(ye[c]!==1)throw new SyntaxError(`Unexpected character at index ${u}`);a===-1?a=u:n||(n=!0),s=!1}else if(i)if(ye[c]===1)a===-1&&(a=u);else if(c===34&&a!==-1)i=!1,d=u;else if(c===92)s=!0;else throw new SyntaxError(`Unexpected character at index ${u}`);else if(c===34&&r.charCodeAt(u-1)===61)i=!0;else if(d===-1&&ye[c]===1)a===-1&&(a=u);else if(a!==-1&&(c===32||c===9))d===-1&&(d=u);else if(c===59||c===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,l,g),c===44&&(M(e,o,t),t=Object.create(null),o=void 0),l=void 0,a=d=-1}else throw new SyntaxError(`Unexpected character at index ${u}`);if(a===-1||i||c===32||c===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):(l===void 0?M(t,h,!0):n?M(t,l,h.replace(/\\/g,"")):M(t,l,h),M(e,o,t)),e}function Oi(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(", ")}_n.exports={format:Oi,parse:ki}});var Ye=E((qa,An)=>{"use strict";var Ii=require("events"),Ci=require("https"),Ai=require("http"),Sn=require("net"),Ti=require("tls"),{randomBytes:Pi,createHash:Ni}=require("crypto"),{Duplex:Wa,Readable:Fa}=require("stream"),{URL:Bt}=require("url"),G=oe(),Di=Dt(),Ri=Mt(),{isBlob:Li}=ae(),{BINARY_TYPES:yn,CLOSE_TIMEOUT:Mi,EMPTY_BUFFER:He,GUID:ji,kForOnEventAttribute:$t,kListener:Bi,kStatusCode:$i,kWebSocket:I,NOOP:wn}=$(),{EventTarget:{addEventListener:Ui,removeEventListener:Wi}}=mn(),{format:Fi,parse:qi}=Ve(),{toBuffer:Vi}=pe(),En=Symbol("kAborted"),Ut=[8,13],F=["CONNECTING","OPEN","CLOSING","CLOSED"],Hi=/^[!#$%&'*+\-.0-9A-Z^_`|a-z~]+$/,S=class r extends Ii{constructor(e,t,n){super(),this._binaryType=yn[0],this._closeCode=1006,this._closeFrameReceived=!1,this._closeFrameSent=!1,this._closeMessage=He,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]),xn(this,e,t,n)):(this._autoPong=n.autoPong,this._closeTimeout=n.closeTimeout,this._isServer=!0)}get binaryType(){return this._binaryType}set binaryType(e){yn.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 Di({allowSynchronousEvents:n.allowSynchronousEvents,binaryType:this.binaryType,extensions:this._extensions,isServer:this._isServer,maxPayload:n.maxPayload,skipUTF8Validation:n.skipUTF8Validation}),i=new Ri(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",Yi),s.on("drain",Ji),s.on("error",zi),s.on("message",Xi),s.on("ping",Qi),s.on("pong",Zi),i.onerror=eo,e.setTimeout&&e.setTimeout(0),e.setNoDelay&&e.setNoDelay(),t.length>0&&e.unshift(t),e.on("close",On),e.on("data",Ke),e.on("end",In),e.on("error",Cn),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){A(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())}),kn(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){Wt(this,e,n);return}t===void 0&&(t=!this._isServer),this._sender.ping(e||He,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){Wt(this,e,n);return}t===void 0&&(t=!this._isServer),this._sender.pong(e||He,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){Wt(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||He,s,n)}terminate(){if(this.readyState!==r.CLOSED){if(this.readyState===r.CONNECTING){A(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[$t])return e[Bi];return null},set(e){for(let t of this.listeners(r))if(t[$t]){this.removeListener(r,t);break}typeof e=="function"&&this.addEventListener(r,e,{[$t]:!0})}})});S.prototype.addEventListener=Ui;S.prototype.removeEventListener=Wi;An.exports=S;function xn(r,e,t,n){let s={allowSynchronousEvents:!0,autoPong:!0,closeTimeout:Mi,protocolVersion:Ut[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,!Ut.includes(s.protocolVersion))throw new RangeError(`Unsupported protocol version: ${s.protocolVersion} (supported versions: ${Ut.join(", ")})`);let i;if(e instanceof Bt)i=e;else try{i=new Bt(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:",l=i.protocol==="ws+unix:",a;if(i.protocol!=="ws:"&&!o&&!l?a=`The URL's protocol must be one of "ws:", "wss:", "http:", "https:", or "ws+unix:"`:l&&!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;Ge(r,p);return}let c=o?443:80,d=Pi(16).toString("base64"),u=o?Ci.request:Ai.request,h=new Set,g;if(s.createConnection=s.createConnection||(o?Ki:Gi),s.defaultPort=s.defaultPort||c,s.port=i.port||c,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"]=Fi({[G.extensionName]:g.offer()})),t.length){for(let p of t){if(typeof p!="string"||!Hi.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}`),l){let p=s.path.split(":");s.socketPath=p[0],s.path=p[1]}let f;if(s.followRedirects){if(r._redirects===0){r._originalIpc=l,r._originalSecure=o,r._originalHostOrSocketPath=l?s.socketPath:i.host;let p=n&&n.headers;if(n={...n,headers:{}},p)for(let[m,v]of Object.entries(p))n.headers[m.toLowerCase()]=v}else if(r.listenerCount("redirect")===0){let p=l?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",()=>{A(r,f,"Opening handshake has timed out")}),f.on("error",p=>{f===null||f[En]||(f=r._req=null,Ge(r,p))}),f.on("response",p=>{let m=p.headers.location,v=p.statusCode;if(m&&s.followRedirects&&v>=300&&v<400){if(++r._redirects>s.maxRedirects){A(r,f,"Maximum redirects exceeded");return}f.abort();let C;try{C=new Bt(m,e)}catch{let w=new SyntaxError(`Invalid URL: ${m}`);Ge(r,w);return}xn(r,C,t,n)}else r.emit("unexpected-response",f,p)||A(r,f,`Unexpected server response: ${p.statusCode}`)}),f.on("upgrade",(p,m,v)=>{if(r.emit("upgrade",p),r.readyState!==S.CONNECTING)return;f=r._req=null;let C=p.headers.upgrade;if(C===void 0||C.toLowerCase()!=="websocket"){A(r,m,"Invalid Upgrade header");return}let b=Ni("sha1").update(d+ji).digest("base64");if(p.headers["sec-websocket-accept"]!==b){A(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){A(r,m,y);return}w&&(r._protocol=w);let D=p.headers["sec-websocket-extensions"];if(D!==void 0){if(!g){A(r,m,"Server sent a Sec-WebSocket-Extensions header but no extension was requested");return}let Y;try{Y=qi(D)}catch{A(r,m,"Invalid Sec-WebSocket-Extensions header");return}let Te=Object.keys(Y);if(Te.length!==1||Te[0]!==G.extensionName){A(r,m,"Server indicated an extension that was not requested");return}try{g.accept(Y[G.extensionName])}catch{A(r,m,"Invalid Sec-WebSocket-Extensions header");return}r._extensions[G.extensionName]=g}r.setSocket(m,v,{allowSynchronousEvents:s.allowSynchronousEvents,generateMask:s.generateMask,maxPayload:s.maxPayload,skipUTF8Validation:s.skipUTF8Validation})}),s.finishRequest?s.finishRequest(f,r):f.end()}function Ge(r,e){r._readyState=S.CLOSING,r._errorEmitted=!0,r.emit("error",e),r.emitClose()}function Gi(r){return r.path=r.socketPath,Sn.connect(r)}function Ki(r){return r.path=void 0,!r.servername&&r.servername!==""&&(r.servername=Sn.isIP(r.host)?"":r.host),Ti.connect(r)}function A(r,e,t){r._readyState=S.CLOSING;let n=new Error(t);Error.captureStackTrace(n,A),e.setHeader?(e[En]=!0,e.abort(),e.socket&&!e.socket.destroyed&&e.socket.destroy(),process.nextTick(Ge,r,n)):(e.destroy(n),e.once("error",r.emit.bind(r,"error")),e.once("close",r.emitClose.bind(r)))}function Wt(r,e,t){if(e){let n=Li(e)?e.size:Vi(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 Yi(r,e){let t=this[I];t._closeFrameReceived=!0,t._closeMessage=e,t._closeCode=r,t._socket[I]!==void 0&&(t._socket.removeListener("data",Ke),process.nextTick(vn,t._socket),r===1005?t.close():t.close(r,e))}function Ji(){let r=this[I];r.isPaused||r._socket.resume()}function zi(r){let e=this[I];e._socket[I]!==void 0&&(e._socket.removeListener("data",Ke),process.nextTick(vn,e._socket),e.close(r[$i])),e._errorEmitted||(e._errorEmitted=!0,e.emit("error",r))}function bn(){this[I].emitClose()}function Xi(r,e){this[I].emit("message",r,e)}function Qi(r){let e=this[I];e._autoPong&&e.pong(r,!this._isServer,wn),e.emit("ping",r)}function Zi(r){this[I].emit("pong",r)}function vn(r){r.resume()}function eo(r){let e=this[I];e.readyState!==S.CLOSED&&(e.readyState===S.OPEN&&(e._readyState=S.CLOSING,kn(e)),this._socket.end(),e._errorEmitted||(e._errorEmitted=!0,e.emit("error",r)))}function kn(r){r._closeTimer=setTimeout(r._socket.destroy.bind(r._socket),r._closeTimeout)}function On(){let r=this[I];if(this.removeListener("close",On),this.removeListener("data",Ke),this.removeListener("end",In),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",bn),r._receiver.on("finish",bn))}function Ke(r){this[I]._receiver.write(r)||this.pause()}function In(){let r=this[I];r._readyState=S.CLOSING,r._receiver.end(),this.end()}function Cn(){let r=this[I];this.removeListener("error",Cn),this.on("error",wn),r&&(r._readyState=S.CLOSING,this.destroy())}});var Dn=E((Ha,Nn)=>{"use strict";var Va=Ye(),{Duplex:to}=require("stream");function Tn(r){r.emit("close")}function ro(){!this.destroyed&&this._writableState.finished&&this.destroy()}function Pn(r){this.removeListener("error",Pn),this.destroy(),this.listenerCount("error")===0&&this.emit("error",r)}function no(r,e){let t=!0,n=new to({...e,autoDestroy:!1,emitClose:!1,objectMode:!1,writableObjectMode:!1});return r.on("message",function(i,o){let l=!o&&n._readableState.objectMode?i.toString():i;n.push(l)||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(Tn,n);return}let o=!1;r.once("error",function(a){o=!0,i(a)}),r.once("close",function(){o||i(s),process.nextTick(Tn,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",ro),n.on("error",Pn),n}Nn.exports=no});var Ft=E((Ga,Rn)=>{"use strict";var{tokenChars:so}=ae();function io(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&&so[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 l=r.slice(t,n);if(e.has(l))throw new SyntaxError(`The "${l}" subprotocol is duplicated`);e.add(l),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}Rn.exports={parse:io}});var Wn=E((Ya,Un)=>{"use strict";var oo=require("events"),Je=require("http"),{Duplex:Ka}=require("stream"),{createHash:ao}=require("crypto"),Ln=Ve(),Q=oe(),co=Ft(),lo=Ye(),{CLOSE_TIMEOUT:uo,GUID:ho,kWebSocket:fo}=$(),po=/^[+/0-9A-Za-z]{22}==$/,Mn=0,jn=1,$n=2,qt=class extends oo{constructor(e,t){if(super(),e={allowSynchronousEvents:!0,autoPong:!0,maxPayload:100*1024*1024,skipUTF8Validation:!1,perMessageDeflate:!1,handleProtocols:null,clientTracking:!0,closeTimeout:uo,verifyClient:null,noServer:!1,backlog:null,server:null,host:null,path:null,port:null,WebSocket:lo,...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=Je.createServer((n,s)=>{let i=Je.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=go(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=Mn}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===$n){e&&this.once("close",()=>{e(new Error("The server is not running"))}),process.nextTick(be,this);return}if(e&&this.once("close",e),this._state!==jn)if(this._state=jn,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(be,this):process.nextTick(be,this);else{let t=this._server;this._removeListeners(),this._removeListeners=this._server=null,t.close(()=>{be(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",Bn);let i=e.headers["sec-websocket-key"],o=e.headers.upgrade,l=+e.headers["sec-websocket-version"];if(e.method!=="GET"){Z(this,e,t,405,"Invalid HTTP method");return}if(o===void 0||o.toLowerCase()!=="websocket"){Z(this,e,t,400,"Invalid Upgrade header");return}if(i===void 0||!po.test(i)){Z(this,e,t,400,"Missing or invalid Sec-WebSocket-Key header");return}if(l!==13&&l!==8){Z(this,e,t,400,"Missing or invalid Sec-WebSocket-Version header",{"Sec-WebSocket-Version":"13, 8"});return}if(!this.shouldHandle(e)){Se(t,400);return}let a=e.headers["sec-websocket-protocol"],c=new Set;if(a!==void 0)try{c=co.parse(a)}catch{Z(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 Q({...this.options.perMessageDeflate,isServer:!0,maxPayload:this.options.maxPayload});try{let g=Ln.parse(d);g[Q.extensionName]&&(h.accept(g[Q.extensionName]),u[Q.extensionName]=h)}catch{Z(this,e,t,400,"Invalid or unacceptable Sec-WebSocket-Extensions header");return}}if(this.options.verifyClient){let h={origin:e.headers[`${l===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 Se(t,f||401,p,m);this.completeUpgrade(u,i,c,e,t,n,s)});return}if(!this.options.verifyClient(h))return Se(t,401)}this.completeUpgrade(u,i,c,e,t,n,s)}completeUpgrade(e,t,n,s,i,o,l){if(!i.readable||!i.writable)return i.destroy();if(i[fo])throw new Error("server.handleUpgrade() was called more than once with the same socket, possibly due to a misconfiguration");if(this._state>Mn)return Se(i,503);let c=["HTTP/1.1 101 Switching Protocols","Upgrade: websocket","Connection: Upgrade",`Sec-WebSocket-Accept: ${ao("sha1").update(t+ho).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&&(c.push(`Sec-WebSocket-Protocol: ${u}`),d._protocol=u)}if(e[Q.extensionName]){let u=e[Q.extensionName].params,h=Ln.format({[Q.extensionName]:[u]});c.push(`Sec-WebSocket-Extensions: ${h}`),d._extensions=e}this.emit("headers",c,s),i.write(c.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 lr(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})}dr.Command=yt});var gr=E(T=>{var{Argument:hr}=De(),{Command:bt}=ur(),{CommanderError:Ls,InvalidArgumentError:fr}=pe(),{Help:Ms}=dt(),{Option:pr}=pt();T.program=new bt;T.createCommand=r=>new bt(r);T.createOption=(r,e)=>new pr(r,e);T.createArgument=(r,e)=>new hr(r,e);T.Command=bt;T.Option=pr;T.Argument=hr;T.Help=Ms;T.CommanderError=Ls;T.InvalidArgumentError=fr;T.InvalidOptionArgumentError=fr});var xr=E(k=>{"use strict";var St=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports),js=St(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(l,a={})=>{let{ignoreErrors:c=!1}=a;try{return i(await(0,t.stat)(l),a)}catch(d){let u=d;if(c||u.code==="EACCES")return!1;throw u}};r.isexe=n;var s=(l,a={})=>{let{ignoreErrors:c=!1}=a;try{return i((0,e.statSync)(l),a)}catch(d){let u=d;if(c||u.code==="EACCES")return!1;throw u}};r.sync=s;var i=(l,a)=>l.isFile()&&o(l,a),o=(l,a)=>{let c=a.uid??process.getuid?.(),d=a.groups??process.getgroups?.()??[],u=a.gid??process.getgid?.()??d[0];if(c===void 0||u===void 0)throw new Error("cannot get uid or gid");let h=new Set([u,...d]),g=l.mode,f=l.uid,p=l.gid,m=parseInt("100",8),v=parseInt("010",8),C=parseInt("001",8),b=m|v;return!!(g&C||g&v&&h.has(p)||g&m&&f===c||g&b&&c===0)}}),Bs=St(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,c={})=>{let{ignoreErrors:d=!1}=c;try{return l(await(0,t.stat)(a),a,c)}catch(u){let h=u;if(d||h.code==="EACCES")return!1;throw h}};r.isexe=s;var i=(a,c={})=>{let{ignoreErrors:d=!1}=c;try{return l((0,e.statSync)(a),a,c)}catch(u){let h=u;if(d||h.code==="EACCES")return!1;throw h}};r.sync=i;var o=(a,c)=>{let{pathExt:d=process.env.PATHEXT||""}=c,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},l=(a,c,d)=>a.isFile()&&o(c,d)}),$s=St(r=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0})}),yr=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]})),Us=k&&k.__setModuleDefault||(Object.create?(function(r,e){Object.defineProperty(r,"default",{enumerable:!0,value:e})}):function(r,e){r.default=e}),br=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"&&yr(t,e,n[s]);return Us(t,e),t}})(),Ws=k&&k.__exportStar||function(r,e){for(var t in r)t!=="default"&&!Object.prototype.hasOwnProperty.call(e,t)&&yr(e,r,t)};Object.defineProperty(k,"__esModule",{value:!0});k.sync=k.isexe=k.posix=k.win32=void 0;var Sr=br(js());k.posix=Sr;var wr=br(Bs());k.win32=wr;Ws($s(),k);var Fs=process.env._ISEXE_TEST_PLATFORM_||process.platform,Er=Fs==="win32"?wr:Sr;k.isexe=Er.isexe;k.sync=Er.sync});var Dr=E((Ca,Nr)=>{var{isexe:qs,sync:Vs}=xr(),{join:Hs,delimiter:Gs,sep:vr,posix:kr}=require("path"),Or=process.platform==="win32",Ir=new RegExp(`[${kr.sep}${vr===kr.sep?"":vr}]`.replace(/(\\)/g,"\\$1")),Ks=new RegExp(`^\\.${Ir.source}`),Cr=r=>Object.assign(new Error(`not found: ${r}`),{code:"ENOENT"}),Ar=(r,{path:e=process.env.PATH,pathExt:t=process.env.PATHEXT,delimiter:n=Gs})=>{let s=r.match(Ir)?[""]:[...Or?[process.cwd()]:[],...(e||"").split(n)];if(Or){let i=t||[".EXE",".CMD",".BAT",".COM"].join(n),o=i.split(n).flatMap(l=>[l,l.toLowerCase()]);return r.includes(".")&&o[0]!==""&&o.unshift(""),{pathEnv:s,pathExt:o,pathExtExe:i}}return{pathEnv:s,pathExt:[""]}},Tr=(r,e)=>{let t=/^".*"$/.test(r)?r.slice(1,-1):r;return(!t&&Ks.test(e)?e.slice(0,2):"")+Hs(t,e)},Pr=async(r,e={})=>{let{pathEnv:t,pathExt:n,pathExtExe:s}=Ar(r,e),i=[];for(let o of t){let l=Tr(o,r);for(let a of n){let c=l+a;if(await qs(c,{pathExt:s,ignoreErrors:!0})){if(!e.all)return c;i.push(c)}}}if(e.all&&i.length)return i;if(e.nothrow)return null;throw Cr(r)},Ys=(r,e={})=>{let{pathEnv:t,pathExt:n,pathExtExe:s}=Ar(r,e),i=[];for(let o of t){let l=Tr(o,r);for(let a of n){let c=l+a;if(Vs(c,{pathExt:s,ignoreErrors:!0})){if(!e.all)return c;i.push(c)}}}if(e.all&&i.length)return i;if(e.nothrow)return null;throw Cr(r)};Nr.exports=Pr;Pr.sync=Ys});var $=E((Na,Wr)=>{"use strict";var $r=["nodebuffer","arraybuffer","fragments"],Ur=typeof Blob<"u";Ur&&$r.push("blob");Wr.exports={BINARY_TYPES:$r,CLOSE_TIMEOUT:3e4,EMPTY_BUFFER:Buffer.alloc(0),GUID:"258EAFA5-E914-47DA-95CA-C5AB0DC85B11",hasBlob:Ur,kForOnEventAttribute:Symbol("kIsForOnEventAttribute"),kListener:Symbol("kListener"),kStatusCode:Symbol("status-code"),kWebSocket:Symbol("websocket"),NOOP:()=>{}}});var ge=E((Da,je)=>{"use strict";var{EMPTY_BUFFER:Js}=$(),xt=Buffer[Symbol.species];function Xs(r,e){if(r.length===0)return Js;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 xt(t.buffer,t.byteOffset,n):t}function Fr(r,e,t,n,s){for(let i=0;i<s;i++)t[n+i]=r[i]^e[i&3]}function qr(r,e){for(let t=0;t<r.length;t++)r[t]^=e[t&3]}function Qs(r){return r.length===r.buffer.byteLength?r.buffer:r.buffer.slice(r.byteOffset,r.byteOffset+r.length)}function vt(r){if(vt.readOnly=!0,Buffer.isBuffer(r))return r;let e;return r instanceof ArrayBuffer?e=new xt(r):ArrayBuffer.isView(r)?e=new xt(r.buffer,r.byteOffset,r.byteLength):(e=Buffer.from(r),vt.readOnly=!1),e}je.exports={concat:Xs,mask:Fr,toArrayBuffer:Qs,toBuffer:vt,unmask:qr};if(!process.env.WS_NO_BUFFER_UTIL)try{let r=require("bufferutil");je.exports.mask=function(e,t,n,s,i){i<48?Fr(e,t,n,s,i):r.mask(e,t,n,s,i)},je.exports.unmask=function(e,t){e.length<32?qr(e,t):r.unmask(e,t)}}catch{}});var Gr=E((Ra,Hr)=>{"use strict";var Vr=Symbol("kDone"),kt=Symbol("kRun"),Ot=class{constructor(e){this[Vr]=()=>{this.pending--,this[kt]()},this.concurrency=e||1/0,this.jobs=[],this.pending=0}add(e){this.jobs.push(e),this[kt]()}[kt](){if(this.pending!==this.concurrency&&this.jobs.length){let e=this.jobs.shift();this.pending++,e(this[Vr])}}};Hr.exports=Ot});var oe=E((La,Jr)=>{"use strict";var me=require("zlib"),Kr=ge(),Zs=Gr(),{kStatusCode:Yr}=$(),ei=Buffer[Symbol.species],ti=Buffer.from([0,0,255,255]),$e=Symbol("permessage-deflate"),U=Symbol("total-length"),se=Symbol("callback"),H=Symbol("buffers"),ie=Symbol("error"),Be,It=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,!Be){let t=this._options.concurrencyLimit!==void 0?this._options.concurrencyLimit:10;Be=new Zs(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[se];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){Be.add(s=>{this._decompress(e,t,(i,o)=>{s(),n(i,o)})})}compress(e,t,n){Be.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"?me.Z_DEFAULT_WINDOWBITS:this.params[i];this._inflate=me.createInflateRaw({...this._options.zlibInflateOptions,windowBits:o}),this._inflate[$e]=this,this._inflate[U]=0,this._inflate[H]=[],this._inflate.on("error",ni),this._inflate.on("data",zr)}this._inflate[se]=n,this._inflate.write(e),t&&this._inflate.write(ti),this._inflate.flush(()=>{let i=this._inflate[ie];if(i){this._inflate.close(),this._inflate=null,n(i);return}let o=Kr.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"?me.Z_DEFAULT_WINDOWBITS:this.params[i];this._deflate=me.createDeflateRaw({...this._options.zlibDeflateOptions,windowBits:o}),this._deflate[U]=0,this._deflate[H]=[],this._deflate.on("data",ri)}this._deflate[se]=n,this._deflate.write(e),this._deflate.flush(me.Z_SYNC_FLUSH,()=>{if(!this._deflate)return;let i=Kr.concat(this._deflate[H],this._deflate[U]);t&&(i=new ei(i.buffer,i.byteOffset,i.length-4)),this._deflate[se]=null,this._deflate[U]=0,this._deflate[H]=[],t&&this.params[`${s}_no_context_takeover`]&&this._deflate.reset(),n(null,i)})}};Jr.exports=It;function ri(r){this[H].push(r),this[U]+=r.length}function zr(r){if(this[U]+=r.length,this[$e]._maxPayload<1||this[U]<=this[$e]._maxPayload){this[H].push(r);return}this[ie]=new RangeError("Max payload size exceeded"),this[ie].code="WS_ERR_UNSUPPORTED_MESSAGE_LENGTH",this[ie][Yr]=1009,this.removeListener("data",zr),this.reset()}function ni(r){if(this[$e]._inflate=null,this[ie]){this[se](this[ie]);return}r[Yr]=1007,this[se](r)}});var ae=E((Ma,Ue)=>{"use strict";var{isUtf8:Xr}=require("buffer"),{hasBlob:si}=$(),ii=[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 oi(r){return r>=1e3&&r<=1014&&r!==1004&&r!==1005&&r!==1006||r>=3e3&&r<=4999}function Ct(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 ai(r){return si&&typeof r=="object"&&typeof r.arrayBuffer=="function"&&typeof r.type=="string"&&typeof r.stream=="function"&&(r[Symbol.toStringTag]==="Blob"||r[Symbol.toStringTag]==="File")}Ue.exports={isBlob:ai,isValidStatusCode:oi,isValidUTF8:Ct,tokenChars:ii};if(Xr)Ue.exports.isValidUTF8=function(r){return r.length<24?Ct(r):Xr(r)};else if(!process.env.WS_NO_UTF_8_VALIDATE)try{let r=require("utf-8-validate");Ue.exports.isValidUTF8=function(e){return e.length<32?Ct(e):r(e)}}catch{}});var Dt=E((ja,sn)=>{"use strict";var{Writable:ci}=require("stream"),Qr=oe(),{BINARY_TYPES:li,EMPTY_BUFFER:Zr,kStatusCode:di,kWebSocket:ui}=$(),{concat:At,toArrayBuffer:hi,unmask:fi}=ge(),{isValidStatusCode:pi,isValidUTF8:en}=ae(),We=Buffer[Symbol.species],P=0,tn=1,rn=2,nn=3,Tt=4,Pt=5,Fe=6,Nt=class extends ci{constructor(e={}){super(),this._allowSynchronousEvents=e.allowSynchronousEvents!==void 0?e.allowSynchronousEvents:!0,this._binaryType=e.binaryType||li[0],this._extensions=e.extensions||{},this._isServer=!!e.isServer,this._maxPayload=e.maxPayload|0,this._skipUTF8Validation=!!e.skipUTF8Validation,this[ui]=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 We(n.buffer,n.byteOffset+e,n.length-e),new We(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 We(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 tn:this.getPayloadLength16(e);break;case rn:this.getPayloadLength64(e);break;case nn:this.getMask();break;case Tt:this.getData(e);break;case Pt:case Fe: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[Qr.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=tn:this._payloadLength===127?this._state=rn: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=nn:this._state=Tt}getMask(){if(this._bufferedBytes<4){this._loop=!1;return}this._mask=this.consume(4),this._state=Tt}getData(e){let t=Zr;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&&fi(t,this._mask)}if(this._opcode>7){this.controlMessage(t,e);return}if(this._compressed){this._state=Pt,this.decompress(t,e);return}t.length&&(this._messageLength=this._totalPayloadLength,this._fragments.push(t)),this.dataMessage(e)}decompress(e,t){this._extensions[Qr.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=At(n,t):this._binaryType==="arraybuffer"?s=hi(At(n,t)):this._binaryType==="blob"?s=new Blob(n):s=n,this._allowSynchronousEvents?(this.emit("message",s,!0),this._state=P):(this._state=Fe,setImmediate(()=>{this.emit("message",s,!0),this._state=P,this.startLoop(e)}))}else{let s=At(n,t);if(!this._skipUTF8Validation&&!en(s)){let i=this.createError(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");e(i);return}this._state===Pt||this._allowSynchronousEvents?(this.emit("message",s,!1),this._state=P):(this._state=Fe,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,Zr),this.end();else{let n=e.readUInt16BE(0);if(!pi(n)){let i=this.createError(RangeError,`invalid status code ${n}`,!0,1002,"WS_ERR_INVALID_CLOSE_CODE");t(i);return}let s=new We(e.buffer,e.byteOffset+2,e.length-2);if(!this._skipUTF8Validation&&!en(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=Fe,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[di]=s,o}};sn.exports=Nt});var Mt=E(($a,cn)=>{"use strict";var{Duplex:Ba}=require("stream"),{randomFillSync:gi}=require("crypto"),on=oe(),{EMPTY_BUFFER:mi,kWebSocket:_i,NOOP:yi}=$(),{isBlob:ce,isValidStatusCode:bi}=ae(),{mask:an,toBuffer:z}=ge(),N=Symbol("kByteLength"),Si=Buffer.alloc(4),qe=8*1024,J,le=qe,R=0,wi=1,Ei=2,Rt=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=yi,this[_i]=void 0}static frame(e,t){let n,s=!1,i=2,o=!1;t.mask&&(n=t.maskBuffer||Si,t.generateMask?t.generateMask(n):(le===qe&&(J===void 0&&(J=Buffer.alloc(qe)),gi(J,0,qe),le=0),n[0]=J[le++],n[1]=J[le++],n[2]=J[le++],n[3]=J[le++]),o=(n[0]|n[1]|n[2]|n[3])===0,i=6);let l;typeof e=="string"?(!t.mask||o)&&t[N]!==void 0?l=t[N]:(e=Buffer.from(e),l=e.length):(l=e.length,s=t.mask&&t.readOnly&&!o);let a=l;l>=65536?(i+=8,a=127):l>125&&(i+=2,a=126);let c=Buffer.allocUnsafe(s?l+i:i);return c[0]=t.fin?t.opcode|128:t.opcode,t.rsv1&&(c[0]|=64),c[1]=a,a===126?c.writeUInt16BE(l,2):a===127&&(c[2]=c[3]=0,c.writeUIntBE(l,4,6)),t.mask?(c[1]|=128,c[i-4]=n[0],c[i-3]=n[1],c[i-2]=n[2],c[i-1]=n[3],o?[c,e]:s?(an(e,n,c,i,l),[c]):(an(e,n,e,0,l),[c,e])):[c,e]}close(e,t,n,s){let i;if(e===void 0)i=mi;else{if(typeof e!="number"||!bi(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 l=Buffer.byteLength(t);if(l>123)throw new RangeError("The message must not be greater than 123 bytes");i=Buffer.allocUnsafe(2+l),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):ce(e)?(s=e.size,i=!1):(e=z(e),s=e.length,i=z.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};ce(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):ce(e)?(s=e.size,i=!1):(e=z(e),s=e.length,i=z.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};ce(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[on.extensionName],i=t.binary?2:1,o=t.compress,l,a;typeof e=="string"?(l=Buffer.byteLength(e),a=!1):ce(e)?(l=e.size,a=!1):(e=z(e),l=e.length,a=z.readOnly),this._firstFragment?(this._firstFragment=!1,o&&s&&s.params[s._isServer?"server_no_context_takeover":"client_no_context_takeover"]&&(o=l>=s._threshold),this._compress=o):(o=!1,i=0),t.fin&&(this._firstFragment=!0);let c={[N]:l,fin:t.fin,generateMask:this._generateMask,mask:t.mask,maskBuffer:this._maskBuffer,opcode:i,readOnly:a,rsv1:o};ce(e)?this._state!==R?this.enqueue([this.getBlobData,e,this._compress,c,n]):this.getBlobData(e,this._compress,c,n):this._state!==R?this.enqueue([this.dispatch,e,this._compress,c,n]):this.dispatch(e,this._compress,c,n)}getBlobData(e,t,n,s){this._bufferedBytes+=n[N],this._state=Ei,e.arrayBuffer().then(i=>{if(this._socket.destroyed){let l=new Error("The socket was closed while the blob was being read");process.nextTick(Lt,this,l,s);return}this._bufferedBytes-=n[N];let o=z(i);t?this.dispatch(o,t,n,s):(this._state=R,this.sendFrame(r.frame(o,n),s),this.dequeue())}).catch(i=>{process.nextTick(xi,this,i,s)})}dispatch(e,t,n,s){if(!t){this.sendFrame(r.frame(e,n),s);return}let i=this._extensions[on.extensionName];this._bufferedBytes+=n[N],this._state=wi,i.compress(e,n.fin,(o,l)=>{if(this._socket.destroyed){let a=new Error("The socket was closed while data was being compressed");Lt(this,a,s);return}this._bufferedBytes-=n[N],this._state=R,n.readOnly=!1,this.sendFrame(r.frame(l,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)}};cn.exports=Rt;function Lt(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 xi(r,e,t){Lt(r,e,t),r.onerror(e)}});var _n=E((Ua,mn)=>{"use strict";var{kForOnEventAttribute:_e,kListener:jt}=$(),ln=Symbol("kCode"),dn=Symbol("kData"),un=Symbol("kError"),hn=Symbol("kMessage"),fn=Symbol("kReason"),de=Symbol("kTarget"),pn=Symbol("kType"),gn=Symbol("kWasClean"),W=class{constructor(e){this[de]=null,this[pn]=e}get target(){return this[de]}get type(){return this[pn]}};Object.defineProperty(W.prototype,"target",{enumerable:!0});Object.defineProperty(W.prototype,"type",{enumerable:!0});var X=class extends W{constructor(e,t={}){super(e),this[ln]=t.code===void 0?0:t.code,this[fn]=t.reason===void 0?"":t.reason,this[gn]=t.wasClean===void 0?!1:t.wasClean}get code(){return this[ln]}get reason(){return this[fn]}get wasClean(){return this[gn]}};Object.defineProperty(X.prototype,"code",{enumerable:!0});Object.defineProperty(X.prototype,"reason",{enumerable:!0});Object.defineProperty(X.prototype,"wasClean",{enumerable:!0});var ue=class extends W{constructor(e,t={}){super(e),this[un]=t.error===void 0?null:t.error,this[hn]=t.message===void 0?"":t.message}get error(){return this[un]}get message(){return this[hn]}};Object.defineProperty(ue.prototype,"error",{enumerable:!0});Object.defineProperty(ue.prototype,"message",{enumerable:!0});var ye=class extends W{constructor(e,t={}){super(e),this[dn]=t.data===void 0?null:t.data}get data(){return this[dn]}};Object.defineProperty(ye.prototype,"data",{enumerable:!0});var vi={addEventListener(r,e,t={}){for(let s of this.listeners(r))if(!t[_e]&&s[jt]===e&&!s[_e])return;let n;if(r==="message")n=function(i,o){let l=new ye("message",{data:o?i:i.toString()});l[de]=this,Ve(e,this,l)};else if(r==="close")n=function(i,o){let l=new X("close",{code:i,reason:o.toString(),wasClean:this._closeFrameReceived&&this._closeFrameSent});l[de]=this,Ve(e,this,l)};else if(r==="error")n=function(i){let o=new ue("error",{error:i,message:i.message});o[de]=this,Ve(e,this,o)};else if(r==="open")n=function(){let i=new W("open");i[de]=this,Ve(e,this,i)};else return;n[_e]=!!t[_e],n[jt]=e,t.once?this.once(r,n):this.on(r,n)},removeEventListener(r,e){for(let t of this.listeners(r))if(t[jt]===e&&!t[_e]){this.removeListener(r,t);break}}};mn.exports={CloseEvent:X,ErrorEvent:ue,Event:W,EventTarget:vi,MessageEvent:ye};function Ve(r,e,t){typeof r=="object"&&r.handleEvent?r.handleEvent.call(r,t):r.call(e,t)}});var He=E((Wa,yn)=>{"use strict";var{tokenChars:be}=ae();function M(r,e,t){r[e]===void 0?r[e]=[t]:r[e].push(t)}function ki(r){let e=Object.create(null),t=Object.create(null),n=!1,s=!1,i=!1,o,l,a=-1,c=-1,d=-1,u=0;for(;u<r.length;u++)if(c=r.charCodeAt(u),o===void 0)if(d===-1&&be[c]===1)a===-1&&(a=u);else if(u!==0&&(c===32||c===9))d===-1&&a!==-1&&(d=u);else if(c===59||c===44){if(a===-1)throw new SyntaxError(`Unexpected character at index ${u}`);d===-1&&(d=u);let g=r.slice(a,d);c===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(l===void 0)if(d===-1&&be[c]===1)a===-1&&(a=u);else if(c===32||c===9)d===-1&&a!==-1&&(d=u);else if(c===59||c===44){if(a===-1)throw new SyntaxError(`Unexpected character at index ${u}`);d===-1&&(d=u),M(t,r.slice(a,d),!0),c===44&&(M(e,o,t),t=Object.create(null),o=void 0),a=d=-1}else if(c===61&&a!==-1&&d===-1)l=r.slice(a,u),a=d=-1;else throw new SyntaxError(`Unexpected character at index ${u}`);else if(s){if(be[c]!==1)throw new SyntaxError(`Unexpected character at index ${u}`);a===-1?a=u:n||(n=!0),s=!1}else if(i)if(be[c]===1)a===-1&&(a=u);else if(c===34&&a!==-1)i=!1,d=u;else if(c===92)s=!0;else throw new SyntaxError(`Unexpected character at index ${u}`);else if(c===34&&r.charCodeAt(u-1)===61)i=!0;else if(d===-1&&be[c]===1)a===-1&&(a=u);else if(a!==-1&&(c===32||c===9))d===-1&&(d=u);else if(c===59||c===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,l,g),c===44&&(M(e,o,t),t=Object.create(null),o=void 0),l=void 0,a=d=-1}else throw new SyntaxError(`Unexpected character at index ${u}`);if(a===-1||i||c===32||c===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):(l===void 0?M(t,h,!0):n?M(t,l,h.replace(/\\/g,"")):M(t,l,h),M(e,o,t)),e}function Oi(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(", ")}yn.exports={format:Oi,parse:ki}});var ze=E((Va,Tn)=>{"use strict";var Ii=require("events"),Ci=require("https"),Ai=require("http"),wn=require("net"),Ti=require("tls"),{randomBytes:Pi,createHash:Ni}=require("crypto"),{Duplex:Fa,Readable:qa}=require("stream"),{URL:Bt}=require("url"),G=oe(),Di=Dt(),Ri=Mt(),{isBlob:Li}=ae(),{BINARY_TYPES:bn,CLOSE_TIMEOUT:Mi,EMPTY_BUFFER:Ge,GUID:ji,kForOnEventAttribute:$t,kListener:Bi,kStatusCode:$i,kWebSocket:I,NOOP:En}=$(),{EventTarget:{addEventListener:Ui,removeEventListener:Wi}}=_n(),{format:Fi,parse:qi}=He(),{toBuffer:Vi}=ge(),xn=Symbol("kAborted"),Ut=[8,13],F=["CONNECTING","OPEN","CLOSING","CLOSED"],Hi=/^[!#$%&'*+\-.0-9A-Z^_`|a-z~]+$/,S=class r extends Ii{constructor(e,t,n){super(),this._binaryType=bn[0],this._closeCode=1006,this._closeFrameReceived=!1,this._closeFrameSent=!1,this._closeMessage=Ge,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]),vn(this,e,t,n)):(this._autoPong=n.autoPong,this._closeTimeout=n.closeTimeout,this._isServer=!0)}get binaryType(){return this._binaryType}set binaryType(e){bn.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 Di({allowSynchronousEvents:n.allowSynchronousEvents,binaryType:this.binaryType,extensions:this._extensions,isServer:this._isServer,maxPayload:n.maxPayload,skipUTF8Validation:n.skipUTF8Validation}),i=new Ri(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",Yi),s.on("drain",zi),s.on("error",Ji),s.on("message",Xi),s.on("ping",Qi),s.on("pong",Zi),i.onerror=eo,e.setTimeout&&e.setTimeout(0),e.setNoDelay&&e.setNoDelay(),t.length>0&&e.unshift(t),e.on("close",In),e.on("data",Ye),e.on("end",Cn),e.on("error",An),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){A(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())}),On(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){Wt(this,e,n);return}t===void 0&&(t=!this._isServer),this._sender.ping(e||Ge,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){Wt(this,e,n);return}t===void 0&&(t=!this._isServer),this._sender.pong(e||Ge,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){Wt(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||Ge,s,n)}terminate(){if(this.readyState!==r.CLOSED){if(this.readyState===r.CONNECTING){A(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[$t])return e[Bi];return null},set(e){for(let t of this.listeners(r))if(t[$t]){this.removeListener(r,t);break}typeof e=="function"&&this.addEventListener(r,e,{[$t]:!0})}})});S.prototype.addEventListener=Ui;S.prototype.removeEventListener=Wi;Tn.exports=S;function vn(r,e,t,n){let s={allowSynchronousEvents:!0,autoPong:!0,closeTimeout:Mi,protocolVersion:Ut[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,!Ut.includes(s.protocolVersion))throw new RangeError(`Unsupported protocol version: ${s.protocolVersion} (supported versions: ${Ut.join(", ")})`);let i;if(e instanceof Bt)i=e;else try{i=new Bt(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:",l=i.protocol==="ws+unix:",a;if(i.protocol!=="ws:"&&!o&&!l?a=`The URL's protocol must be one of "ws:", "wss:", "http:", "https:", or "ws+unix:"`:l&&!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;Ke(r,p);return}let c=o?443:80,d=Pi(16).toString("base64"),u=o?Ci.request:Ai.request,h=new Set,g;if(s.createConnection=s.createConnection||(o?Ki:Gi),s.defaultPort=s.defaultPort||c,s.port=i.port||c,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"]=Fi({[G.extensionName]:g.offer()})),t.length){for(let p of t){if(typeof p!="string"||!Hi.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}`),l){let p=s.path.split(":");s.socketPath=p[0],s.path=p[1]}let f;if(s.followRedirects){if(r._redirects===0){r._originalIpc=l,r._originalSecure=o,r._originalHostOrSocketPath=l?s.socketPath:i.host;let p=n&&n.headers;if(n={...n,headers:{}},p)for(let[m,v]of Object.entries(p))n.headers[m.toLowerCase()]=v}else if(r.listenerCount("redirect")===0){let p=l?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",()=>{A(r,f,"Opening handshake has timed out")}),f.on("error",p=>{f===null||f[xn]||(f=r._req=null,Ke(r,p))}),f.on("response",p=>{let m=p.headers.location,v=p.statusCode;if(m&&s.followRedirects&&v>=300&&v<400){if(++r._redirects>s.maxRedirects){A(r,f,"Maximum redirects exceeded");return}f.abort();let C;try{C=new Bt(m,e)}catch{let w=new SyntaxError(`Invalid URL: ${m}`);Ke(r,w);return}vn(r,C,t,n)}else r.emit("unexpected-response",f,p)||A(r,f,`Unexpected server response: ${p.statusCode}`)}),f.on("upgrade",(p,m,v)=>{if(r.emit("upgrade",p),r.readyState!==S.CONNECTING)return;f=r._req=null;let C=p.headers.upgrade;if(C===void 0||C.toLowerCase()!=="websocket"){A(r,m,"Invalid Upgrade header");return}let b=Ni("sha1").update(d+ji).digest("base64");if(p.headers["sec-websocket-accept"]!==b){A(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){A(r,m,y);return}w&&(r._protocol=w);let D=p.headers["sec-websocket-extensions"];if(D!==void 0){if(!g){A(r,m,"Server sent a Sec-WebSocket-Extensions header but no extension was requested");return}let Y;try{Y=qi(D)}catch{A(r,m,"Invalid Sec-WebSocket-Extensions header");return}let Pe=Object.keys(Y);if(Pe.length!==1||Pe[0]!==G.extensionName){A(r,m,"Server indicated an extension that was not requested");return}try{g.accept(Y[G.extensionName])}catch{A(r,m,"Invalid Sec-WebSocket-Extensions header");return}r._extensions[G.extensionName]=g}r.setSocket(m,v,{allowSynchronousEvents:s.allowSynchronousEvents,generateMask:s.generateMask,maxPayload:s.maxPayload,skipUTF8Validation:s.skipUTF8Validation})}),s.finishRequest?s.finishRequest(f,r):f.end()}function Ke(r,e){r._readyState=S.CLOSING,r._errorEmitted=!0,r.emit("error",e),r.emitClose()}function Gi(r){return r.path=r.socketPath,wn.connect(r)}function Ki(r){return r.path=void 0,!r.servername&&r.servername!==""&&(r.servername=wn.isIP(r.host)?"":r.host),Ti.connect(r)}function A(r,e,t){r._readyState=S.CLOSING;let n=new Error(t);Error.captureStackTrace(n,A),e.setHeader?(e[xn]=!0,e.abort(),e.socket&&!e.socket.destroyed&&e.socket.destroy(),process.nextTick(Ke,r,n)):(e.destroy(n),e.once("error",r.emit.bind(r,"error")),e.once("close",r.emitClose.bind(r)))}function Wt(r,e,t){if(e){let n=Li(e)?e.size:Vi(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 Yi(r,e){let t=this[I];t._closeFrameReceived=!0,t._closeMessage=e,t._closeCode=r,t._socket[I]!==void 0&&(t._socket.removeListener("data",Ye),process.nextTick(kn,t._socket),r===1005?t.close():t.close(r,e))}function zi(){let r=this[I];r.isPaused||r._socket.resume()}function Ji(r){let e=this[I];e._socket[I]!==void 0&&(e._socket.removeListener("data",Ye),process.nextTick(kn,e._socket),e.close(r[$i])),e._errorEmitted||(e._errorEmitted=!0,e.emit("error",r))}function Sn(){this[I].emitClose()}function Xi(r,e){this[I].emit("message",r,e)}function Qi(r){let e=this[I];e._autoPong&&e.pong(r,!this._isServer,En),e.emit("ping",r)}function Zi(r){this[I].emit("pong",r)}function kn(r){r.resume()}function eo(r){let e=this[I];e.readyState!==S.CLOSED&&(e.readyState===S.OPEN&&(e._readyState=S.CLOSING,On(e)),this._socket.end(),e._errorEmitted||(e._errorEmitted=!0,e.emit("error",r)))}function On(r){r._closeTimer=setTimeout(r._socket.destroy.bind(r._socket),r._closeTimeout)}function In(){let r=this[I];if(this.removeListener("close",In),this.removeListener("data",Ye),this.removeListener("end",Cn),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",Sn),r._receiver.on("finish",Sn))}function Ye(r){this[I]._receiver.write(r)||this.pause()}function Cn(){let r=this[I];r._readyState=S.CLOSING,r._receiver.end(),this.end()}function An(){let r=this[I];this.removeListener("error",An),this.on("error",En),r&&(r._readyState=S.CLOSING,this.destroy())}});var Rn=E((Ga,Dn)=>{"use strict";var Ha=ze(),{Duplex:to}=require("stream");function Pn(r){r.emit("close")}function ro(){!this.destroyed&&this._writableState.finished&&this.destroy()}function Nn(r){this.removeListener("error",Nn),this.destroy(),this.listenerCount("error")===0&&this.emit("error",r)}function no(r,e){let t=!0,n=new to({...e,autoDestroy:!1,emitClose:!1,objectMode:!1,writableObjectMode:!1});return r.on("message",function(i,o){let l=!o&&n._readableState.objectMode?i.toString():i;n.push(l)||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(Pn,n);return}let o=!1;r.once("error",function(a){o=!0,i(a)}),r.once("close",function(){o||i(s),process.nextTick(Pn,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",ro),n.on("error",Nn),n}Dn.exports=no});var Ft=E((Ka,Ln)=>{"use strict";var{tokenChars:so}=ae();function io(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&&so[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 l=r.slice(t,n);if(e.has(l))throw new SyntaxError(`The "${l}" subprotocol is duplicated`);e.add(l),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}Ln.exports={parse:io}});var Fn=E((za,Wn)=>{"use strict";var oo=require("events"),Je=require("http"),{Duplex:Ya}=require("stream"),{createHash:ao}=require("crypto"),Mn=He(),Q=oe(),co=Ft(),lo=ze(),{CLOSE_TIMEOUT:uo,GUID:ho,kWebSocket:fo}=$(),po=/^[+/0-9A-Za-z]{22}==$/,jn=0,Bn=1,Un=2,qt=class extends oo{constructor(e,t){if(super(),e={allowSynchronousEvents:!0,autoPong:!0,maxPayload:100*1024*1024,skipUTF8Validation:!1,perMessageDeflate:!1,handleProtocols:null,clientTracking:!0,closeTimeout:uo,verifyClient:null,noServer:!1,backlog:null,server:null,host:null,path:null,port:null,WebSocket:lo,...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=Je.createServer((n,s)=>{let i=Je.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=go(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=jn}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===Un){e&&this.once("close",()=>{e(new Error("The server is not running"))}),process.nextTick(Se,this);return}if(e&&this.once("close",e),this._state!==Bn)if(this._state=Bn,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(Se,this):process.nextTick(Se,this);else{let t=this._server;this._removeListeners(),this._removeListeners=this._server=null,t.close(()=>{Se(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",$n);let i=e.headers["sec-websocket-key"],o=e.headers.upgrade,l=+e.headers["sec-websocket-version"];if(e.method!=="GET"){Z(this,e,t,405,"Invalid HTTP method");return}if(o===void 0||o.toLowerCase()!=="websocket"){Z(this,e,t,400,"Invalid Upgrade header");return}if(i===void 0||!po.test(i)){Z(this,e,t,400,"Missing or invalid Sec-WebSocket-Key header");return}if(l!==13&&l!==8){Z(this,e,t,400,"Missing or invalid Sec-WebSocket-Version header",{"Sec-WebSocket-Version":"13, 8"});return}if(!this.shouldHandle(e)){we(t,400);return}let a=e.headers["sec-websocket-protocol"],c=new Set;if(a!==void 0)try{c=co.parse(a)}catch{Z(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 Q({...this.options.perMessageDeflate,isServer:!0,maxPayload:this.options.maxPayload});try{let g=Mn.parse(d);g[Q.extensionName]&&(h.accept(g[Q.extensionName]),u[Q.extensionName]=h)}catch{Z(this,e,t,400,"Invalid or unacceptable Sec-WebSocket-Extensions header");return}}if(this.options.verifyClient){let h={origin:e.headers[`${l===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 we(t,f||401,p,m);this.completeUpgrade(u,i,c,e,t,n,s)});return}if(!this.options.verifyClient(h))return we(t,401)}this.completeUpgrade(u,i,c,e,t,n,s)}completeUpgrade(e,t,n,s,i,o,l){if(!i.readable||!i.writable)return i.destroy();if(i[fo])throw new Error("server.handleUpgrade() was called more than once with the same socket, possibly due to a misconfiguration");if(this._state>jn)return we(i,503);let c=["HTTP/1.1 101 Switching Protocols","Upgrade: websocket","Connection: Upgrade",`Sec-WebSocket-Accept: ${ao("sha1").update(t+ho).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&&(c.push(`Sec-WebSocket-Protocol: ${u}`),d._protocol=u)}if(e[Q.extensionName]){let u=e[Q.extensionName].params,h=Mn.format({[Q.extensionName]:[u]});c.push(`Sec-WebSocket-Extensions: ${h}`),d._extensions=e}this.emit("headers",c,s),i.write(c.concat(`\r
|
|
24
24
|
`).join(`\r
|
|
25
|
-
`)),i.removeListener("error"
|
|
25
|
+
`)),i.removeListener("error",$n),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(Se,this)})),l(d,s)}};Wn.exports=qt;function go(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 Se(r){r._state=Un,r.emit("close")}function $n(){this.destroy()}function we(r,e,t,n){t=t||Je.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} ${Je.STATUS_CODES[e]}\r
|
|
26
26
|
`+Object.keys(n).map(s=>`${s}: ${n[s]}`).join(`\r
|
|
27
27
|
`)+`\r
|
|
28
28
|
\r
|
|
29
|
-
`+t)}function Z(r,e,t,n,s,i){if(r.listenerCount("wsClientError")){let o=new Error(s);Error.captureStackTrace(o,Z),r.emit("wsClientError",o,t,e)}else
|
|
30
|
-
`,
|
|
31
|
-
`);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 l=o,a=(l.input_tokens??0)+(l.cache_creation_input_tokens??0)+(l.cache_read_input_tokens??0);if(a===0)continue;return{usedPct:Math.min(100,Math.round(a/xo*100)),usedTokens:a}}catch{continue}}}catch{}return null}function
|
|
32
|
-
`)){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 v=p.timestamp;if(typeof v!="string")continue;let C=Date.parse(v);if(isNaN(C)||C<t)continue;s++,C<n&&(n=C)}catch{continue}}}}}catch{}let i=isFinite(n)?n+Jn:0;return{prompts5h:s,resetAt:i}}function
|
|
33
|
-
`,"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
|
|
29
|
+
`+t)}function Z(r,e,t,n,s,i){if(r.listenerCount("wsClientError")){let o=new Error(s);Error.captureStackTrace(o,Z),r.emit("wsClientError",o,t,e)}else we(t,n,s,i)}});var Yn={};Ss(Yn,{loadConfig:()=>Ht,loadProjectSettings:()=>Kt,saveConfig:()=>Gt});function Ht(){let r=q.default.existsSync(Xe)?Xe:Kn;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",Kn),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";return(!s||!i)&&(console.error("[bridge] Config missing server or token. Run: bridge-agent auth"),process.exit(1)),{server:s,token:i,name:o}}function Gt(r){let e=Ee.default.dirname(Xe);q.default.existsSync(e)||q.default.mkdirSync(e,{recursive:!0}),q.default.writeFileSync(Xe,JSON.stringify(r,null,2),{mode:384})}function Kt(r){let e=Ee.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"))),i}catch{return console.warn("[bridge] Failed to parse .jerico/settings.json, ignoring"),{}}}var q,Ee,Vt,Xe,Kn,Qe=bs(()=>{"use strict";q=_(require("fs")),Ee=_(require("path")),Vt=_(require("os")),Xe=Ee.default.join(Vt.default.homedir(),".jerico","settings.json"),Kn=Ee.default.join(Vt.default.homedir(),".bridge","config.json")});var mr=_(gr(),1),{program:ma,createCommand:_a,createArgument:ya,createOption:ba,CommanderError:Sa,InvalidArgumentError:wa,InvalidOptionArgumentError:Ea,Command:_r,Argument:xa,Option:va,Help:ka}=mr.default;var as=require("node:http"),Ae=require("node:child_process"),V=require("node:fs"),fe=require("node:os"),j=_(require("path"));var Br=_(require("node-pty"));var Rr=_(Dr()),Lr=_(require("fs")),Mr=_(require("path")),jr=_(require("net")),Re=r=>r+`
|
|
30
|
+
`,Le=r=>r.replace(/[\r\n]+$/,"")+"\r",ne=[{key:"sh",displayName:"Shell",binary:"sh",checkAuth:async()=>!0,formatInput:Re},{key:"claude",displayName:"Claude Code",binary:"claude",checkAuth:async()=>wt(".claude")||re("ANTHROPIC_API_KEY"),assignSessionId:!0,spawnArgs:["--dangerously-skip-permissions"],resumeArgs:r=>["--dangerously-skip-permissions","--resume",r],supportsMcpConfig:!0,formatInput:Le},{key:"codex",displayName:"Codex CLI",binary:"codex",checkAuth:async()=>re("OPENAI_API_KEY"),spawnArgs:["--full-auto"],supportsMcpConfig:!0,formatInput:Le},{key:"qwen",displayName:"Qwen CLI",binary:"qwen",checkAuth:async()=>wt(".qwen"),assignSessionId:!0,spawnArgs:["--yolo"],resumeArgs:r=>["--resume",r,"--yolo"],supportsMcpConfig:!0,formatInput:Le},{key:"gemini",displayName:"Gemini",binary:"gemini",checkAuth:async()=>re("GEMINI_API_KEY"),supportsMcpConfig:!0,formatInput:Re},{key:"ollama",displayName:"Ollama",binary:"ollama",checkAuth:async()=>zs(11434),formatInput:Re},{key:"aider",displayName:"Aider",binary:"aider",checkAuth:async()=>re("OPENAI_API_KEY")||re("ANTHROPIC_API_KEY"),supportsMcpConfig:!0,formatInput:Re},{key:"kimi",displayName:"Kimi Code",binary:"kimi",checkAuth:async()=>wt(".kimi")||re("KIMI_API_KEY"),assignSessionId:!0,spawnArgs:["--yolo"],resumeArgs:r=>["-r",r,"--yolo"],supportsMcpConfig:!0,formatInput:Le}];async function Et(){let r=[];for(let e of ne)try{let t=await(0,Rr.default)(e.binary),s=await e.checkAuth()?"ok":"missing";r.push({key:e.key,displayName:e.displayName,binaryPath:t,authStatus:s})}catch{}return console.log("[daemon] agent.detect.done",{found:r.map(e=>e.key),missing:ne.map(e=>e.key).filter(e=>!r.find(t=>t.key===e))}),r}function wt(r){return Lr.default.existsSync(Mr.default.join(process.env.HOME??"",r))}function re(r){return!!process.env[r]}async function zs(r){return new Promise(e=>{let t=jr.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 Me=class{handles=new Map;spawn(e,t,n,s,i,o,l,a,c){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"};c&&(h.BRIDGE_SERVER_URL=c.serverUrl,h.BRIDGE_TOKEN=c.token,h.BRIDGE_WORKSPACE_ID=c.workspaceId,h.BRIDGE_PROJECT_ID=c.projectId,c.projectEnv&&Object.assign(h,c.projectEnv));let g=process.env.BRIDGE_MCP_URL;g&&(h.BRIDGE_MCP_URL=g);let f;try{f=Br.spawn(n,s,{name:"xterm-256color",cols:d,rows:u,cwd:c?.cwd,env:h})}catch(m){let v=m instanceof Error?m.message:String(m);return console.error("[daemon] pty.spawn.failed",{agentId:e,agentKey:t,error:v}),!1}let p={agentId:e,agentKey:t,process:f,pid:f.pid,killed:!1};return f.onData(m=>{l(Buffer.from(m).toString("base64"))}),f.onExit(({exitCode:m,signal:v})=>{p.killed||(this.handles.delete(e),console.log("[daemon] pty.exit",{agentId:e,exitCode:m,signal:v}),a(m??null,v?String(v):null))}),this.handles.set(e,p),console.log("[daemon] pty.spawn.success",{agentId:e,agentKey:t,args:s,cwd:c?.cwd}),!0}write(e,t,n){let s=this.handles.get(e);if(!s)return;let i=Buffer.from(t,"base64").toString(),o=ne.find(a=>a.key===s.agentKey),l=n==="orchestrator"&&o?.formatInput?o.formatInput(i):i;s.process.write(l)}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 mo=_(Rn(),1),_o=_(He(),1),yo=_(oe(),1),bo=_(Dt(),1),So=_(Mt(),1),wo=_(Ft(),1),qn=_(ze(),1),Eo=_(Fn(),1);var O=qn.default;var te=_(require("fs")),L=_(require("path")),Ie=_(require("os")),Zt=require("node:child_process"),ns=require("node:crypto");var Vn=r=>r;var Hn=r=>r,Gn=r=>r;Qe();var xe=_(require("fs")),Yt=_(require("path")),zn=_(require("os")),xo=2e5;function vo(r){let e=Yt.default.join(zn.default.homedir(),".claude","projects");if(xe.default.existsSync(e))try{let t=xe.default.readdirSync(e,{withFileTypes:!0}).filter(n=>n.isDirectory());for(let n of t){let s=Yt.default.join(e,n.name,`${r}.jsonl`);if(xe.default.existsSync(s))return s}}catch{}}function ko(r){try{let t=xe.default.readFileSync(r,"utf-8").trim().split(`
|
|
31
|
+
`);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 l=o,a=(l.input_tokens??0)+(l.cache_creation_input_tokens??0)+(l.cache_read_input_tokens??0);if(a===0)continue;return{usedPct:Math.min(100,Math.round(a/xo*100)),usedTokens:a}}catch{continue}}}catch{}return null}function zt(r,e,t){let n,s=-1,i=()=>{if(n||(n=vo(e)),!n)return;let a=ko(n);a&&a.usedTokens!==s&&(s=a.usedTokens,t(r,a.usedPct,a.usedTokens))},o=setTimeout(i,2e3),l=setInterval(i,3e3);return()=>{clearTimeout(o),clearInterval(l)}}var K=_(require("fs")),ve=_(require("path")),Jt=_(require("os")),Jn=300*60*1e3,Xn={free:10,pro:40,max_5x:200,max_20x:200};function Oo(){let r=ve.default.join(Jt.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 Xn)return t}catch{}return"pro"}function Io(){let r=ve.default.join(Jt.default.homedir(),".claude","projects");if(!K.default.existsSync(r))return{prompts5h:0,resetAt:0};let t=Date.now()-Jn,n=1/0,s=0;try{let o=K.default.readdirSync(r,{withFileTypes:!0}).filter(l=>l.isDirectory());for(let l of o){let a=ve.default.join(r,l.name),c;try{c=K.default.readdirSync(a).filter(d=>d.endsWith(".jsonl"))}catch{continue}for(let d of c){let u=ve.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(`
|
|
32
|
+
`)){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 v=p.timestamp;if(typeof v!="string")continue;let C=Date.parse(v);if(isNaN(C)||C<t)continue;s++,C<n&&(n=C)}catch{continue}}}}}catch{}let i=isFinite(n)?n+Jn:0;return{prompts5h:s,resetAt:i}}function Qn(r){let e=()=>{let n=Oo(),s=Xn[n]??40,{prompts5h:i,resetAt:o}=Io();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 he=_(require("os")),Ze=_(require("fs")),Qt=require("node:child_process");function es(){let r=0,e=0;for(let t of he.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 Xt=es();function Co(){let r=es(),e=r.idle-Xt.idle,t=r.total-Xt.total;return Xt=r,t===0?0:Math.round((1-e/t)*100)}function Ao(){let r=he.default.totalmem(),e=he.default.freemem(),t=0;try{let n=(0,Qt.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 l=s?parseInt(s[1],10):4096;t=(parseInt(i[1],10)+parseInt(o[1],10))*l}}}catch{}return{totalMb:Math.round(r/1024/1024),usedMb:Math.round((r-e)/1024/1024),cachedMb:Math.round(t/1024/1024)}}function To(){if(process.platform==="darwin")return Ao();let r=he.default.totalmem(),e=he.default.freemem();return{totalMb:Math.round(r/1024/1024),usedMb:Math.round((r-e)/1024/1024),cachedMb:0}}function Po(){try{let r=(0,Qt.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 No(){try{let r="/sys/class/power_supply",e=Ze.default.readdirSync(r).filter(o=>/^BAT/i.test(o));if(e.length===0)return;let t=`${r}/${e[0]}`,n=parseInt(Ze.default.readFileSync(`${t}/capacity`,"utf-8").trim(),10),s=Ze.default.readFileSync(`${t}/status`,"utf-8").trim().toLowerCase();return{percent:n,charging:s==="charging"||s==="full"}}catch{return}}function Zn(){let r=process.platform;if(r==="darwin")return Po();if(r==="linux")return No()}var Do=1e4,Ro=3;function ts(r){let e=0,t=Zn(),n=setInterval(()=>{e++,e%Ro===0&&(t=Zn());let s=To();r({cpu:Co(),ramUsedMb:s.usedMb,ramTotalMb:s.totalMb,ramCachedMb:s.cachedMb,battery:t})},Do);return()=>clearInterval(n)}var ee=new Map,Lo=r=>r.replace(/[\r\n]+$/,"")+"\r",er=null,Mo=Qn(r=>{er=r}),jo=3e4,Bo=5e3,$o=400;function Uo(r){return r.replace(/\x1b\[[0-9;?]*[A-Za-z]/g,"")}function Wo(r,e=$o){return r.length<=e?r:`${r.slice(0,e)}...`}function Fo(r){return r.replace(/^wss?:/,e=>e==="wss:"?"https:":"http:").replace(/\/ws(\/.*)?$/,"")}function tt(){let r=te.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=>te.default.existsSync(n))??"bridge-mcp"}function qo(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:tt(),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(Ie.default.tmpdir(),`bridge-mcp-${r.agentId??r.projectId}.json`);return te.default.writeFileSync(n,JSON.stringify(t,null,2)+`
|
|
33
|
+
`,"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 Vo={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 ke(...r){return`
|
|
34
34
|
|
|
35
|
-
**Available MCP tools:** ${r.join(", ")}`}function
|
|
35
|
+
**Available MCP tools:** ${r.join(", ")}`}function Ho(...r){return`
|
|
36
36
|
|
|
37
37
|
## Tool reference (only call tools listed here)
|
|
38
38
|
|
|
39
39
|
| Tool | Purpose |
|
|
40
40
|
|------|---------|
|
|
41
|
-
${r.map(t=>`| \`${t}\` | ${
|
|
41
|
+
${r.map(t=>`| \`${t}\` | ${Vo[t]} |`).join(`
|
|
42
42
|
`)}`}var ss={developer:`# Bridge Worker \u2014 Developer Role
|
|
43
43
|
|
|
44
44
|
You are a **Developer** worker in a multi-agent orchestration system called Bridge.
|
|
@@ -52,7 +52,7 @@ You are a **Developer** worker in a multi-agent orchestration system called Brid
|
|
|
52
52
|
- After making changes, check the runner agent (role:'runner' in bridge_list_agents) for build errors: bridge_get_agent_output(runnerAgentId)
|
|
53
53
|
- Trigger hot reload after file changes: bridge_send_input(runnerAgentId, "r")
|
|
54
54
|
|
|
55
|
-
${
|
|
55
|
+
${ke("bridge_get_my_task","bridge_complete_task","bridge_fail_task","bridge_get_todo_context","bridge_get_todos","bridge_list_agents","bridge_get_agent_output","bridge_send_input")}`,reviewer:`# Bridge Worker \u2014 Reviewer Role
|
|
56
56
|
|
|
57
57
|
You are a **Quality-Obsessed Tech Lead** reviewing code changes in a multi-agent system called Bridge.
|
|
58
58
|
Your identity: Agile, pragmatic, anti-fragile. You ship with confidence or you send it back.
|
|
@@ -136,7 +136,7 @@ If a runner agent exists (bridge_list_agents \u2192 role:'runner'), call bridge_
|
|
|
136
136
|
- One \`bridge_fail_task\` per review cycle \u2014 consolidate all issues into a single message
|
|
137
137
|
- If unsure whether something is a bug or intentional design: flag it as a question, don't reject
|
|
138
138
|
|
|
139
|
-
${
|
|
139
|
+
${ke("bridge_get_my_task","bridge_complete_task","bridge_fail_task","bridge_get_todo_context","bridge_get_todos","bridge_list_agents","bridge_get_agent_output")}`,planner:`# Bridge Worker \u2014 Planner Role
|
|
140
140
|
|
|
141
141
|
You are a **Planner** in Bridge. Your job: understand the project, listen to the user, then create a well-structured and verified execution plan.
|
|
142
142
|
|
|
@@ -226,7 +226,7 @@ Show the complete todo list with types and dependency chain. Then stop.
|
|
|
226
226
|
- To close a stale open todo that's already done: \`bridge_complete_task\` with its ID
|
|
227
227
|
- Todo titles must be specific: name the files, endpoints, components \u2014 no vague verbs
|
|
228
228
|
|
|
229
|
-
${
|
|
229
|
+
${ke("bridge_get_plan","bridge_get_project_history","bridge_get_todos","bridge_add_todo","bridge_complete_task","bridge_fail_task")}`,executor:`# Bridge Worker \u2014 Executor Role
|
|
230
230
|
|
|
231
231
|
You are an **Executor** worker in a multi-agent orchestration system called Bridge.
|
|
232
232
|
|
|
@@ -236,7 +236,7 @@ You are an **Executor** worker in a multi-agent orchestration system called Brid
|
|
|
236
236
|
- Capture and report all relevant output
|
|
237
237
|
- Call \`bridge_complete_task\` on success, \`bridge_fail_task\` with error details on failure
|
|
238
238
|
|
|
239
|
-
${
|
|
239
|
+
${ke("bridge_get_my_task","bridge_complete_task","bridge_fail_task","bridge_get_todo_context","bridge_list_agents","bridge_get_agent_output","bridge_send_input")}`,shell:`# Bridge Worker \u2014 Shell Role
|
|
240
240
|
|
|
241
241
|
You are a **Shell** worker in a multi-agent orchestration system called Bridge.
|
|
242
242
|
|
|
@@ -246,7 +246,7 @@ You are a **Shell** worker in a multi-agent orchestration system called Bridge.
|
|
|
246
246
|
- Call \`bridge_complete_task\` when the command exits cleanly
|
|
247
247
|
- Call \`bridge_fail_task\` with the error output if the command fails
|
|
248
248
|
|
|
249
|
-
${
|
|
249
|
+
${ke("bridge_get_my_task","bridge_complete_task","bridge_fail_task")}`,orchestrator:`# Bridge Orchestrator
|
|
250
250
|
|
|
251
251
|
You are a **Bridge Orchestrator**. Your sole purpose is to decompose specs into todos, delegate them to worker agents, and report results. Nothing else.
|
|
252
252
|
|
|
@@ -339,9 +339,9 @@ Summarize: todos completed, failed, any blockers. List what workers did.
|
|
|
339
339
|
|
|
340
340
|
---
|
|
341
341
|
|
|
342
|
-
${
|
|
343
|
-
`,"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
|
|
344
|
-
`,"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
|
|
342
|
+
${Ho("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 Go(r,e,t){if(!e)return[];let n=ss[e];if(!n)return[];if(r==="claude")try{let s=L.default.join(Ie.default.tmpdir(),`bridge-role-${t}.md`),i=n.replaceAll("{{PANEL_ID}}",t);return te.default.writeFileSync(s,i+`
|
|
343
|
+
`,"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 Oe(r){return`"${r.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}function Ko(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:tt(),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(Ie.default.tmpdir(),`bridge-mcp-kimi-${r.agentId??r.projectId}.json`);return te.default.writeFileSync(n,JSON.stringify(t,null,2)+`
|
|
344
|
+
`,"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 Yo(r){try{let e=tt(),t=`{BRIDGE_SERVER_URL=${Oe(r.serverUrl)},BRIDGE_TOKEN=${Oe(r.token)},BRIDGE_WORKSPACE_ID=${Oe(r.workspaceId)},BRIDGE_PROJECT_ID=${Oe(r.projectId)},HTTP_MODE="false"}`;return["-c",'mcp_servers.bridge.transport="stdio"',"-c",`mcp_servers.bridge.command=${Oe(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 zo(r){try{if(!r.cwd)return console.warn("[daemon] qwen.mcp.setup.skipped",{reason:"missing_cwd",projectId:r.projectId}),!1;let e=tt(),t={cwd:r.cwd,encoding:"utf-8",timeout:5e3,stdio:"pipe"};(0,Zt.spawnSync)("qwen",["mcp","remove","--scope","project","bridge"],t);let n=(0,Zt.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 et=[],tr=!1,rs=!1;function is(){return tr}function os(r){if(rs)throw new Error("[daemon] startDaemonConnection called twice \u2014 only one connection manager allowed");rs=!0;let e=Ht(),t=(0,ns.createHash)("sha256").update(e.token).digest("hex"),n=null,s=null,i=null,o=0;function l(){s&&(clearTimeout(s),s=null),n=new O(e.server,{headers:{Authorization:`Bearer ${e.token}`}});let c=n,d=null;c.on("open",()=>{tr=!0,console.log("[daemon] ws.connected",{server:e.server}),i=setInterval(()=>{c.readyState===O.OPEN&&c.ping()},jo),c.send(JSON.stringify({type:"ready",version:"1.1",name:e.name})),Et().then(u=>{et=u,c.readyState===O.OPEN&&c.send(JSON.stringify({type:"agents",list:et}))}),d=ts(u=>{c.readyState===O.OPEN&&c.send(JSON.stringify({type:"system_metrics",daemonId:t,...u}))})}),c.on("message",u=>{let h;try{h=JSON.parse(u.toString())}catch{console.warn("[daemon] Invalid JSON from server, ignoring");return}Jo(h,c,r,e)}),c.on("close",u=>{tr=!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(l,3e3))}),c.on("error",u=>{console.error("[daemon] ws.error",{message:u.message})})}function a(){i&&(clearInterval(i),i=null),Mo();for(let c of ee.values())c();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",c=>{console.error("[daemon] uncaughtException",{error:c.message}),r.killAll(),process.exit(1)}),l()}function Jo(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=et.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=ne.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"&&(ee.get(r.agentId)?.(),ee.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,...er}))})));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"&&(ee.get(r.agentId)?.(),ee.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,...er}))})))}else e.readyState===O.OPEN&&e.send(JSON.stringify({type:"session_started",agentId:r.agentId,sessionId:crypto.randomUUID()}));let l,a=!1,c;if(r.projectId&&r.workspaceId){let b=Fo(n.server),w=Kt(r.cwd);if(l={serverUrl:b,token:n.token,workspaceId:Hn(r.workspaceId),projectId:Gn(r.projectId),agentId:r.agentId?Vn(r.agentId):void 0,cwd:r.cwd,projectEnv:w.env},r.agentKey==="claude"){let y=qo(l);a=y.length>0,c=process.env.BRIDGE_MCP_URL?"http":"stdio",o=[...o,...y]}else if(r.agentKey==="codex"){let y=Yo(l);a=y.length>0,c="stdio",o=[...o,...y]}else if(r.agentKey==="qwen")a=zo(l),c=a?"stdio":void 0;else if(r.agentKey==="kimi"){let y=Ko(l);a=y.length>0,c=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=Go(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,v=!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&&!v&&Date.now()-g<3e4&&(/yolo agent/.test(w)||/●/.test(w)||/○/.test(w))){v=!0;let y=ss[r.role];if(y){let D=y.replaceAll("{{PANEL_ID}}",r.agentId),Y=Lo(D),Pe=Buffer.from(Y).toString("base64");t.write(r.agentId,Pe,"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=Uo(w).replace(/\x00/g,"").trim();if(y&&(f=Wo(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<=Bo;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}))},l)?e.readyState===O.OPEN&&e.send(JSON.stringify({type:"mcp_status",agentId:r.agentId,mcpConfigured:a,transport:a?c:void 0,projectId:l?.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":ee.get(r.agentId)?.(),ee.delete(r.agentId),t.kill(r.agentId,r.force);break;case"resize":t.resize(r.agentId,r.cols,r.rows);break;case"detect_agents":Et().then(s=>{et=s,e.readyState===O.OPEN&&e.send(JSON.stringify({type:"agents",list:s}))});break;case"dir_list":{let s=Ie.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 l=te.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,c)=>a.name.localeCompare(c.name));e.readyState===O.OPEN&&e.send(JSON.stringify({type:"dir_list_result",requestId:r.requestId,path:o,entries:l}))}catch(l){e.readyState===O.OPEN&&e.send(JSON.stringify({type:"dir_list_result",requestId:r.requestId,path:o,entries:[],error:l instanceof Error?l.message:"Cannot read directory"}))}break}default:{let s=r}}}var Xo="com.jerico.bridge-agent.plist",cs=j.default.join((0,fe.homedir)(),"Library","LaunchAgents"),rt=j.default.join(cs,Xo),rr=j.default.join((0,fe.homedir)(),"bridge-daemon.log"),nr=j.default.join((0,fe.homedir)(),"bridge-daemon.err.log"),Ce=j.default.join((0,fe.homedir)(),".bridge","daemon.lock");function Qo(){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 Zo(){try{(0,V.mkdirSync)(j.default.dirname(Ce),{recursive:!0})}catch{}if((0,V.existsSync)(Ce))try{let{pid:r}=JSON.parse((0,V.readFileSync)(Ce,"utf8"));if(r&&process.kill(r,0))return console.warn("[bridge] daemon.already.running",{pid:r,lock:Ce}),!1}catch{}return(0,V.writeFileSync)(Ce,JSON.stringify({pid:process.pid,startedAt:Date.now()}),"utf8"),!0}function ea(r){try{(0,Ae.execSync)(`mkdir -p "${cs}"`,{stdio:"pipe"})}catch{}let e=(0,fe.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
345
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
346
346
|
<plist version="1.0">
|
|
347
347
|
<dict>
|
|
@@ -357,9 +357,9 @@ ${Vo("bridge_get_project","bridge_get_plan","bridge_get_todos","bridge_add_todo"
|
|
|
357
357
|
<key>KeepAlive</key>
|
|
358
358
|
<true/>
|
|
359
359
|
<key>StandardOutPath</key>
|
|
360
|
-
<string>${tr}</string>
|
|
361
|
-
<key>StandardErrorPath</key>
|
|
362
360
|
<string>${rr}</string>
|
|
361
|
+
<key>StandardErrorPath</key>
|
|
362
|
+
<string>${nr}</string>
|
|
363
363
|
<key>EnvironmentVariables</key>
|
|
364
364
|
<dict>
|
|
365
365
|
<key>PATH</key>
|
|
@@ -369,6 +369,6 @@ ${Vo("bridge_get_project","bridge_get_plan","bridge_get_todos","bridge_add_todo"
|
|
|
369
369
|
</dict>
|
|
370
370
|
</dict>
|
|
371
371
|
</plist>
|
|
372
|
-
`;try{return(0,V.writeFileSync)(rt,i,"utf-8"),!0}catch(o){return console.warn("[bridge] launchd.plist.write.failed",{error:String(o)}),!1}}function
|
|
373
|
-
`)),
|
|
374
|
-
`)&&(process.stdin.pause(),r(e.trim()))}),process.stdin.resume()})}async function
|
|
372
|
+
`;try{return(0,V.writeFileSync)(rt,i,"utf-8"),!0}catch(o){return console.warn("[bridge] launchd.plist.write.failed",{error:String(o)}),!1}}function ta(){try{return(0,Ae.execSync)(`launchctl unload "${rt}" 2>/dev/null; launchctl load "${rt}"`,{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 ra(r){try{let e=(0,Ae.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:rr})):console.error("[bridge] background.failed \u2014 check: tail -f",{log:nr})},2e3)}catch(e){console.error("[bridge] background.spawn.failed",{error:String(e)})}}function na(){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 sa(){let r=new Me;os(r);let e=parseInt(process.env.HEALTH_PORT??"3101",10),t=(0,as.createServer)((n,s)=>{let i=is(),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 ls(){let r=process.env.BRIDGE_DAEMON==="1"||process.argv.includes("--daemon");if(console.log("[bridge] Starting bridge-agent daemon..."),r){sa();return}Zo()||(console.warn("[bridge] start.aborted.already.running"),process.exit(1));let e=Qo(),t=ea(e),{ok:n,permissionDenied:s}=t?ta():{ok:!1,permissionDenied:!1};if(n){console.log("[bridge] launchd.ok \u2014 managed, auto-restart enabled"),console.log("[bridge] logs: tail -f",{out:rr,err:nr}),na(),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) "${rt}"`),console.warn(`[bridge] Falling back to background process...
|
|
373
|
+
`)),ra(e),process.exit(0)}var ds=_(require("https")),us=_(require("http"));Qe();function ia(r){return(r??"").trim()}async function hs(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=ia(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 oa()),s||(console.error("[bridge] No token provided. Exiting."),process.exit(1)),await aa(r,s)||(console.error("[bridge] Token validation failed. Please try again."),process.exit(1));let l=r.replace(/^https?:\/\//,a=>a.startsWith("https")?"wss://":"ws://").replace(/\/?$/,"/ws/daemon");Gt({server:l,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 oa(){return new Promise(r=>{process.stdout.write("Token: ");let e="";process.stdin.setEncoding("utf-8"),process.stdin.on("data",t=>{e+=t,e.includes(`
|
|
374
|
+
`)&&(process.stdin.pause(),r(e.trim()))}),process.stdin.resume()})}async function aa(r,e){return new Promise(t=>{let n=new URL("/api/tokens/validate",r),s=n.protocol==="https:",i=s?ds.default:us.default,o={hostname:n.hostname,port:n.port||(s?443:80),path:n.pathname,method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${e}`}},l=i.request(o,a=>{t(a.statusCode===200)});l.on("error",()=>t(!1)),l.end()})}var Te=new _r;Te.name("bridge-agent").description("Bridge local agent \u2014 connects your AI tools to Jerico").version("0.1.0");Te.command("start").description("Start the bridge-agent daemon").action(()=>{ls()});Te.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=>{hs(r.server,!r.browser,r.token)});Te.command("status").description("Show connection status").action(async()=>{try{let{loadConfig:r}=await Promise.resolve().then(()=>(Qe(),Yn)),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")}});Te.parse();
|