bridge-agent 0.3.1 → 0.3.3
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 +38 -38
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1,46 +1,46 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
"use strict";var
|
|
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(
|
|
2
|
+
"use strict";var Rs=Object.create;var ft=Object.defineProperty;var Ds=Object.getOwnPropertyDescriptor;var Ls=Object.getOwnPropertyNames;var Ms=Object.getPrototypeOf,js=Object.prototype.hasOwnProperty;var $s=(r,e)=>()=>(r&&(e=r(r=0)),e);var v=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports),Bs=(r,e)=>{for(var t in e)ft(r,t,{get:e[t],enumerable:!0})},Us=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of Ls(e))!js.call(r,s)&&s!==t&&ft(r,s,{get:()=>e[s],enumerable:!(n=Ds(e,s))||n.enumerable});return r};var _=(r,e,t)=>(t=r!=null?Rs(Ms(r)):{},Us(e||!r||!r.__esModule?ft(t,"default",{value:r,enumerable:!0}):t,r));var xe=v(gt=>{var Ue=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}},pt=class extends Ue{constructor(e){super(1,"commander.invalidArgument",e),Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name}};gt.CommanderError=Ue;gt.InvalidArgumentError=pt});var We=v(_t=>{var{InvalidArgumentError:Ws}=xe(),mt=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 Ws(`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 Fs(r){let e=r.name()+(r.variadic===!0?"...":"");return r.required?"<"+e+">":"["+e+"]"}_t.Argument=mt;_t.humanReadableArgName=Fs});var bt=v(gr=>{var{humanReadableArgName:Hs}=We(),yt=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=>Hs(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(p,f){if(f){let m=`${p.padEnd(n+o)}${f}`;return t.wrap(m,s-i,n+o)}return p}function a(p){return p.join(`
|
|
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(p=>l(t.argumentTerm(p),t.argumentDescription(p)));u.length>0&&(c=c.concat(["Arguments:",a(u),""]));let h=t.visibleOptions(e).map(p=>l(t.optionTerm(p),t.optionDescription(p)));if(h.length>0&&(c=c.concat(["Options:",a(h),""])),this.showGlobalOptions){let p=t.visibleGlobalOptions(e).map(f=>l(t.optionTerm(f),t.optionDescription(f)));p.length>0&&(c=c.concat(["Global Options:",a(p),""]))}let g=t.visibleCommands(e).map(p=>l(t.subcommandTerm(p),t.subcommandDescription(p)));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
|
-
|.{1,${l-1}}([${h}]|$)|[^${h}]+?([${h}]|$)`,"g"),
|
|
8
|
-
`?"":(
|
|
9
|
-
`)}};
|
|
7
|
+
|.{1,${l-1}}([${h}]|$)|[^${h}]+?([${h}]|$)`,"g"),p=c.match(g)||[];return a+p.map((f,m)=>f===`
|
|
8
|
+
`?"":(m>0?d:"")+f.trimEnd()).join(`
|
|
9
|
+
`)}};gr.Help=yt});var vt=v(Et=>{var{InvalidArgumentError:qs}=xe(),wt=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=Gs(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 qs(`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 Vs(this.name().replace(/^no-/,""))}is(e){return this.short===e||this.long===e}isBoolean(){return!this.required&&!this.optional&&!this.negate}},St=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 Vs(r){return r.split("-").reduce((e,t)=>e+t[0].toUpperCase()+t.slice(1))}function Gs(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}}Et.Option=wt;Et.DualOptions=St});var _r=v(mr=>{function Ks(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 Ys(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=Ks(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]}?)`:""}
|
|
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
|
|
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
|
|
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
|
|
11
|
+
(Did you mean ${n[0]}?)`:""}mr.suggestSimilar=Ys});var Er=v(Sr=>{var Js=require("node:events").EventEmitter,xt=require("node:child_process"),F=require("node:path"),kt=require("node:fs"),x=require("node:process"),{Argument:zs,humanReadableArgName:Xs}=We(),{CommanderError:Ot}=xe(),{Help:Qs}=bt(),{Option:yr,DualOptions:Zs}=vt(),{suggestSimilar:br}=_r(),Ct=class r extends Js{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 Qs,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
|
+
- 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 zs(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 Ot(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 yr(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 yr)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=F.resolve(d,u);if(kt.existsSync(h))return h;if(s.includes(F.extname(u)))return;let g=s.find(p=>kt.existsSync(`${h}${p}`));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=kt.realpathSync(this._scriptPath)}catch{d=this._scriptPath}l=F.resolve(F.dirname(d),l)}if(l){let d=i(l,o);if(!d&&!e._executableFile&&this._scriptPath){let u=F.basename(this._scriptPath,F.extname(this._scriptPath));u!==this._name&&(d=i(l,`${u}-${e._name}`))}o=d||o}n=s.includes(F.extname(o));let a;x.platform!=="win32"?n?(t.unshift(o),t=wr(x.execArgv).concat(t),a=xt.spawn(x.argv[0],t,{stdio:"inherit"})):a=xt.spawn(o,t,{stdio:"inherit"}):(t.unshift(o),t=wr(x.execArgv).concat(t),a=xt.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 Ot(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
|
-
- ${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
|
|
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 Ot(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
|
|
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=>
|
|
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 Zs(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=br(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=br(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
|
+
`),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=>Xs(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=F.basename(e,F.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 mr(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})}_r.Command=xt});var Er=v(N=>{var{Argument:br}=Me(),{Command:kt}=yr(),{CommanderError:Vs,InvalidArgumentError:Sr}=be(),{Help:Gs}=mt(),{Option:wr}=St();N.program=new kt;N.createCommand=r=>new kt(r);N.createOption=(r,e)=>new wr(r,e);N.createArgument=(r,e)=>new br(r,e);N.Command=kt;N.Option=wr;N.Argument=br;N.Help=Gs;N.CommanderError=Vs;N.InvalidArgumentError=Sr;N.InvalidOptionArgumentError=Sr});var Tr=v(O=>{"use strict";var Ot=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports),Ks=Ot(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,y=parseInt("100",8),k=parseInt("010",8),E=parseInt("001",8),m=y|k;return!!(g&E||g&k&&h.has(p)||g&y&&f===c||g&m&&c===0)}}),Ys=Ot(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)}),Js=Ot(r=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0})}),kr=O&&O.__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]})),zs=O&&O.__setModuleDefault||(Object.create?(function(r,e){Object.defineProperty(r,"default",{enumerable:!0,value:e})}):function(r,e){r.default=e}),Or=O&&O.__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"&&kr(t,e,n[s]);return zs(t,e),t}})(),Xs=O&&O.__exportStar||function(r,e){for(var t in r)t!=="default"&&!Object.prototype.hasOwnProperty.call(e,t)&&kr(e,r,t)};Object.defineProperty(O,"__esModule",{value:!0});O.sync=O.isexe=O.posix=O.win32=void 0;var Cr=Or(Ks());O.posix=Cr;var Ir=Or(Ys());O.win32=Ir;Xs(Js(),O);var Qs=process.env._ISEXE_TEST_PLATFORM_||process.platform,Ar=Qs==="win32"?Ir:Cr;O.isexe=Ar.isexe;O.sync=Ar.sync});var Ur=v((qa,$r)=>{var{isexe:Zs,sync:ei}=Tr(),{join:ti,delimiter:ri,sep:Pr,posix:Nr}=require("path"),Rr=process.platform==="win32",Dr=new RegExp(`[${Nr.sep}${Pr===Nr.sep?"":Pr}]`.replace(/(\\)/g,"\\$1")),ni=new RegExp(`^\\.${Dr.source}`),Lr=r=>Object.assign(new Error(`not found: ${r}`),{code:"ENOENT"}),Mr=(r,{path:e=process.env.PATH,pathExt:t=process.env.PATHEXT,delimiter:n=ri})=>{let s=r.match(Dr)?[""]:[...Rr?[process.cwd()]:[],...(e||"").split(n)];if(Rr){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:[""]}},jr=(r,e)=>{let t=/^".*"$/.test(r)?r.slice(1,-1):r;return(!t&&ni.test(e)?e.slice(0,2):"")+ti(t,e)},Br=async(r,e={})=>{let{pathEnv:t,pathExt:n,pathExtExe:s}=Mr(r,e),i=[];for(let o of t){let l=jr(o,r);for(let a of n){let c=l+a;if(await Zs(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 Lr(r)},si=(r,e={})=>{let{pathEnv:t,pathExt:n,pathExtExe:s}=Mr(r,e),i=[];for(let o of t){let l=jr(o,r);for(let a of n){let c=l+a;if(ei(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 Lr(r)};$r.exports=Br;Br.sync=si});var U=v((Ka,Kr)=>{"use strict";var Vr=["nodebuffer","arraybuffer","fragments"],Gr=typeof Blob<"u";Gr&&Vr.push("blob");Kr.exports={BINARY_TYPES:Vr,CLOSE_TIMEOUT:3e4,EMPTY_BUFFER:Buffer.alloc(0),GUID:"258EAFA5-E914-47DA-95CA-C5AB0DC85B11",hasBlob:Gr,kForOnEventAttribute:Symbol("kIsForOnEventAttribute"),kListener:Symbol("kListener"),kStatusCode:Symbol("status-code"),kWebSocket:Symbol("websocket"),NOOP:()=>{}}});var we=v((Ya,We)=>{"use strict";var{EMPTY_BUFFER:ci}=U(),Tt=Buffer[Symbol.species];function li(r,e){if(r.length===0)return ci;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 Tt(t.buffer,t.byteOffset,n):t}function Yr(r,e,t,n,s){for(let i=0;i<s;i++)t[n+i]=r[i]^e[i&3]}function Jr(r,e){for(let t=0;t<r.length;t++)r[t]^=e[t&3]}function di(r){return r.length===r.buffer.byteLength?r.buffer:r.buffer.slice(r.byteOffset,r.byteOffset+r.length)}function Pt(r){if(Pt.readOnly=!0,Buffer.isBuffer(r))return r;let e;return r instanceof ArrayBuffer?e=new Tt(r):ArrayBuffer.isView(r)?e=new Tt(r.buffer,r.byteOffset,r.byteLength):(e=Buffer.from(r),Pt.readOnly=!1),e}We.exports={concat:li,mask:Yr,toArrayBuffer:di,toBuffer:Pt,unmask:Jr};if(!process.env.WS_NO_BUFFER_UTIL)try{let r=require("bufferutil");We.exports.mask=function(e,t,n,s,i){i<48?Yr(e,t,n,s,i):r.mask(e,t,n,s,i)},We.exports.unmask=function(e,t){e.length<32?Jr(e,t):r.unmask(e,t)}}catch{}});var Qr=v((Ja,Xr)=>{"use strict";var zr=Symbol("kDone"),Nt=Symbol("kRun"),Rt=class{constructor(e){this[zr]=()=>{this.pending--,this[Nt]()},this.concurrency=e||1/0,this.jobs=[],this.pending=0}add(e){this.jobs.push(e),this[Nt]()}[Nt](){if(this.pending!==this.concurrency&&this.jobs.length){let e=this.jobs.shift();this.pending++,e(this[zr])}}};Xr.exports=Rt});var de=v((za,rn)=>{"use strict";var Ee=require("zlib"),Zr=we(),ui=Qr(),{kStatusCode:en}=U(),hi=Buffer[Symbol.species],fi=Buffer.from([0,0,255,255]),qe=Symbol("permessage-deflate"),W=Symbol("total-length"),ce=Symbol("callback"),G=Symbol("buffers"),le=Symbol("error"),Fe,Dt=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,!Fe){let t=this._options.concurrencyLimit!==void 0?this._options.concurrencyLimit:10;Fe=new ui(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[ce];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){Fe.add(s=>{this._decompress(e,t,(i,o)=>{s(),n(i,o)})})}compress(e,t,n){Fe.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"?Ee.Z_DEFAULT_WINDOWBITS:this.params[i];this._inflate=Ee.createInflateRaw({...this._options.zlibInflateOptions,windowBits:o}),this._inflate[qe]=this,this._inflate[W]=0,this._inflate[G]=[],this._inflate.on("error",gi),this._inflate.on("data",tn)}this._inflate[ce]=n,this._inflate.write(e),t&&this._inflate.write(fi),this._inflate.flush(()=>{let i=this._inflate[le];if(i){this._inflate.close(),this._inflate=null,n(i);return}let o=Zr.concat(this._inflate[G],this._inflate[W]);this._inflate._readableState.endEmitted?(this._inflate.close(),this._inflate=null):(this._inflate[W]=0,this._inflate[G]=[],t&&this.params[`${s}_no_context_takeover`]&&this._inflate.reset()),n(null,o)})}_compress(e,t,n){let s=this._isServer?"server":"client";if(!this._deflate){let i=`${s}_max_window_bits`,o=typeof this.params[i]!="number"?Ee.Z_DEFAULT_WINDOWBITS:this.params[i];this._deflate=Ee.createDeflateRaw({...this._options.zlibDeflateOptions,windowBits:o}),this._deflate[W]=0,this._deflate[G]=[],this._deflate.on("data",pi)}this._deflate[ce]=n,this._deflate.write(e),this._deflate.flush(Ee.Z_SYNC_FLUSH,()=>{if(!this._deflate)return;let i=Zr.concat(this._deflate[G],this._deflate[W]);t&&(i=new hi(i.buffer,i.byteOffset,i.length-4)),this._deflate[ce]=null,this._deflate[W]=0,this._deflate[G]=[],t&&this.params[`${s}_no_context_takeover`]&&this._deflate.reset(),n(null,i)})}};rn.exports=Dt;function pi(r){this[G].push(r),this[W]+=r.length}function tn(r){if(this[W]+=r.length,this[qe]._maxPayload<1||this[W]<=this[qe]._maxPayload){this[G].push(r);return}this[le]=new RangeError("Max payload size exceeded"),this[le].code="WS_ERR_UNSUPPORTED_MESSAGE_LENGTH",this[le][en]=1009,this.removeListener("data",tn),this.reset()}function gi(r){if(this[qe]._inflate=null,this[le]){this[ce](this[le]);return}r[en]=1007,this[ce](r)}});var ue=v((Xa,He)=>{"use strict";var{isUtf8:nn}=require("buffer"),{hasBlob:mi}=U(),_i=[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 yi(r){return r>=1e3&&r<=1014&&r!==1004&&r!==1005&&r!==1006||r>=3e3&&r<=4999}function Lt(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 bi(r){return mi&&typeof r=="object"&&typeof r.arrayBuffer=="function"&&typeof r.type=="string"&&typeof r.stream=="function"&&(r[Symbol.toStringTag]==="Blob"||r[Symbol.toStringTag]==="File")}He.exports={isBlob:bi,isValidStatusCode:yi,isValidUTF8:Lt,tokenChars:_i};if(nn)He.exports.isValidUTF8=function(r){return r.length<24?Lt(r):nn(r)};else if(!process.env.WS_NO_UTF_8_VALIDATE)try{let r=require("utf-8-validate");He.exports.isValidUTF8=function(e){return e.length<32?Lt(e):r(e)}}catch{}});var Ut=v((Qa,un)=>{"use strict";var{Writable:Si}=require("stream"),sn=de(),{BINARY_TYPES:wi,EMPTY_BUFFER:on,kStatusCode:Ei,kWebSocket:vi}=U(),{concat:Mt,toArrayBuffer:xi,unmask:ki}=we(),{isValidStatusCode:Oi,isValidUTF8:an}=ue(),Ve=Buffer[Symbol.species],R=0,cn=1,ln=2,dn=3,jt=4,Bt=5,Ge=6,$t=class extends Si{constructor(e={}){super(),this._allowSynchronousEvents=e.allowSynchronousEvents!==void 0?e.allowSynchronousEvents:!0,this._binaryType=e.binaryType||wi[0],this._extensions=e.extensions||{},this._isServer=!!e.isServer,this._maxPayload=e.maxPayload|0,this._skipUTF8Validation=!!e.skipUTF8Validation,this[vi]=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=R}_write(e,t,n){if(this._opcode===8&&this._state==R)return n();this._bufferedBytes+=e.length,this._buffers.push(e),this.startLoop(n)}consume(e){if(this._bufferedBytes-=e,e===this._buffers[0].length)return this._buffers.shift();if(e<this._buffers[0].length){let n=this._buffers[0];return this._buffers[0]=new Ve(n.buffer,n.byteOffset+e,n.length-e),new Ve(n.buffer,n.byteOffset,e)}let t=Buffer.allocUnsafe(e);do{let n=this._buffers[0],s=t.length-e;e>=n.length?t.set(this._buffers.shift(),s):(t.set(new Uint8Array(n.buffer,n.byteOffset,e),s),this._buffers[0]=new Ve(n.buffer,n.byteOffset+e,n.length-e)),e-=n.length}while(e>0);return t}startLoop(e){this._loop=!0;do switch(this._state){case R:this.getInfo(e);break;case cn:this.getPayloadLength16(e);break;case ln:this.getPayloadLength64(e);break;case dn:this.getMask();break;case jt:this.getData(e);break;case Bt:case Ge:this._loop=!1;return}while(this._loop);this._errored||e()}getInfo(e){if(this._bufferedBytes<2){this._loop=!1;return}let t=this.consume(2);if((t[0]&48)!==0){let s=this.createError(RangeError,"RSV2 and RSV3 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_2_3");e(s);return}let n=(t[0]&64)===64;if(n&&!this._extensions[sn.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=cn:this._payloadLength===127?this._state=ln: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=dn:this._state=jt}getMask(){if(this._bufferedBytes<4){this._loop=!1;return}this._mask=this.consume(4),this._state=jt}getData(e){let t=on;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&&ki(t,this._mask)}if(this._opcode>7){this.controlMessage(t,e);return}if(this._compressed){this._state=Bt,this.decompress(t,e);return}t.length&&(this._messageLength=this._totalPayloadLength,this._fragments.push(t)),this.dataMessage(e)}decompress(e,t){this._extensions[sn.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===R&&this.startLoop(t)})}dataMessage(e){if(!this._fin){this._state=R;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=Mt(n,t):this._binaryType==="arraybuffer"?s=xi(Mt(n,t)):this._binaryType==="blob"?s=new Blob(n):s=n,this._allowSynchronousEvents?(this.emit("message",s,!0),this._state=R):(this._state=Ge,setImmediate(()=>{this.emit("message",s,!0),this._state=R,this.startLoop(e)}))}else{let s=Mt(n,t);if(!this._skipUTF8Validation&&!an(s)){let i=this.createError(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");e(i);return}this._state===Bt||this._allowSynchronousEvents?(this.emit("message",s,!1),this._state=R):(this._state=Ge,setImmediate(()=>{this.emit("message",s,!1),this._state=R,this.startLoop(e)}))}}controlMessage(e,t){if(this._opcode===8){if(e.length===0)this._loop=!1,this.emit("conclude",1005,on),this.end();else{let n=e.readUInt16BE(0);if(!Oi(n)){let i=this.createError(RangeError,`invalid status code ${n}`,!0,1002,"WS_ERR_INVALID_CLOSE_CODE");t(i);return}let s=new Ve(e.buffer,e.byteOffset+2,e.length-2);if(!this._skipUTF8Validation&&!an(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=R;return}this._allowSynchronousEvents?(this.emit(this._opcode===9?"ping":"pong",e),this._state=R):(this._state=Ge,setImmediate(()=>{this.emit(this._opcode===9?"ping":"pong",e),this._state=R,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[Ei]=s,o}};un.exports=$t});var qt=v((ec,pn)=>{"use strict";var{Duplex:Za}=require("stream"),{randomFillSync:Ci}=require("crypto"),hn=de(),{EMPTY_BUFFER:Ii,kWebSocket:Ai,NOOP:Ti}=U(),{isBlob:he,isValidStatusCode:Pi}=ue(),{mask:fn,toBuffer:X}=we(),D=Symbol("kByteLength"),Ni=Buffer.alloc(4),Ke=8*1024,Q,fe=Ke,j=0,Ri=1,Di=2,Wt=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=j,this.onerror=Ti,this[Ai]=void 0}static frame(e,t){let n,s=!1,i=2,o=!1;t.mask&&(n=t.maskBuffer||Ni,t.generateMask?t.generateMask(n):(fe===Ke&&(Q===void 0&&(Q=Buffer.alloc(Ke)),Ci(Q,0,Ke),fe=0),n[0]=Q[fe++],n[1]=Q[fe++],n[2]=Q[fe++],n[3]=Q[fe++]),o=(n[0]|n[1]|n[2]|n[3])===0,i=6);let l;typeof e=="string"?(!t.mask||o)&&t[D]!==void 0?l=t[D]:(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?(fn(e,n,c,i,l),[c]):(fn(e,n,e,0,l),[c,e])):[c,e]}close(e,t,n,s){let i;if(e===void 0)i=Ii;else{if(typeof e!="number"||!Pi(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={[D]:i.length,fin:!0,generateMask:this._generateMask,mask:n,maskBuffer:this._maskBuffer,opcode:8,readOnly:!1,rsv1:!1};this._state!==j?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):he(e)?(s=e.size,i=!1):(e=X(e),s=e.length,i=X.readOnly),s>125)throw new RangeError("The data size must not be greater than 125 bytes");let o={[D]:s,fin:!0,generateMask:this._generateMask,mask:t,maskBuffer:this._maskBuffer,opcode:9,readOnly:i,rsv1:!1};he(e)?this._state!==j?this.enqueue([this.getBlobData,e,!1,o,n]):this.getBlobData(e,!1,o,n):this._state!==j?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):he(e)?(s=e.size,i=!1):(e=X(e),s=e.length,i=X.readOnly),s>125)throw new RangeError("The data size must not be greater than 125 bytes");let o={[D]:s,fin:!0,generateMask:this._generateMask,mask:t,maskBuffer:this._maskBuffer,opcode:10,readOnly:i,rsv1:!1};he(e)?this._state!==j?this.enqueue([this.getBlobData,e,!1,o,n]):this.getBlobData(e,!1,o,n):this._state!==j?this.enqueue([this.dispatch,e,!1,o,n]):this.sendFrame(r.frame(e,o),n)}send(e,t,n){let s=this._extensions[hn.extensionName],i=t.binary?2:1,o=t.compress,l,a;typeof e=="string"?(l=Buffer.byteLength(e),a=!1):he(e)?(l=e.size,a=!1):(e=X(e),l=e.length,a=X.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={[D]:l,fin:t.fin,generateMask:this._generateMask,mask:t.mask,maskBuffer:this._maskBuffer,opcode:i,readOnly:a,rsv1:o};he(e)?this._state!==j?this.enqueue([this.getBlobData,e,this._compress,c,n]):this.getBlobData(e,this._compress,c,n):this._state!==j?this.enqueue([this.dispatch,e,this._compress,c,n]):this.dispatch(e,this._compress,c,n)}getBlobData(e,t,n,s){this._bufferedBytes+=n[D],this._state=Di,e.arrayBuffer().then(i=>{if(this._socket.destroyed){let l=new Error("The socket was closed while the blob was being read");process.nextTick(Ft,this,l,s);return}this._bufferedBytes-=n[D];let o=X(i);t?this.dispatch(o,t,n,s):(this._state=j,this.sendFrame(r.frame(o,n),s),this.dequeue())}).catch(i=>{process.nextTick(Li,this,i,s)})}dispatch(e,t,n,s){if(!t){this.sendFrame(r.frame(e,n),s);return}let i=this._extensions[hn.extensionName];this._bufferedBytes+=n[D],this._state=Ri,i.compress(e,n.fin,(o,l)=>{if(this._socket.destroyed){let a=new Error("The socket was closed while data was being compressed");Ft(this,a,s);return}this._bufferedBytes-=n[D],this._state=j,n.readOnly=!1,this.sendFrame(r.frame(l,n),s),this.dequeue()})}dequeue(){for(;this._state===j&&this._queue.length;){let e=this._queue.shift();this._bufferedBytes-=e[3][D],Reflect.apply(e[0],this,e.slice(1))}}enqueue(e){this._bufferedBytes+=e[3][D],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)}};pn.exports=Wt;function Ft(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 Li(r,e,t){Ft(r,e,t),r.onerror(e)}});var vn=v((tc,En)=>{"use strict";var{kForOnEventAttribute:ve,kListener:Ht}=U(),gn=Symbol("kCode"),mn=Symbol("kData"),_n=Symbol("kError"),yn=Symbol("kMessage"),bn=Symbol("kReason"),pe=Symbol("kTarget"),Sn=Symbol("kType"),wn=Symbol("kWasClean"),F=class{constructor(e){this[pe]=null,this[Sn]=e}get target(){return this[pe]}get type(){return this[Sn]}};Object.defineProperty(F.prototype,"target",{enumerable:!0});Object.defineProperty(F.prototype,"type",{enumerable:!0});var Z=class extends F{constructor(e,t={}){super(e),this[gn]=t.code===void 0?0:t.code,this[bn]=t.reason===void 0?"":t.reason,this[wn]=t.wasClean===void 0?!1:t.wasClean}get code(){return this[gn]}get reason(){return this[bn]}get wasClean(){return this[wn]}};Object.defineProperty(Z.prototype,"code",{enumerable:!0});Object.defineProperty(Z.prototype,"reason",{enumerable:!0});Object.defineProperty(Z.prototype,"wasClean",{enumerable:!0});var ge=class extends F{constructor(e,t={}){super(e),this[_n]=t.error===void 0?null:t.error,this[yn]=t.message===void 0?"":t.message}get error(){return this[_n]}get message(){return this[yn]}};Object.defineProperty(ge.prototype,"error",{enumerable:!0});Object.defineProperty(ge.prototype,"message",{enumerable:!0});var xe=class extends F{constructor(e,t={}){super(e),this[mn]=t.data===void 0?null:t.data}get data(){return this[mn]}};Object.defineProperty(xe.prototype,"data",{enumerable:!0});var Mi={addEventListener(r,e,t={}){for(let s of this.listeners(r))if(!t[ve]&&s[Ht]===e&&!s[ve])return;let n;if(r==="message")n=function(i,o){let l=new xe("message",{data:o?i:i.toString()});l[pe]=this,Ye(e,this,l)};else if(r==="close")n=function(i,o){let l=new Z("close",{code:i,reason:o.toString(),wasClean:this._closeFrameReceived&&this._closeFrameSent});l[pe]=this,Ye(e,this,l)};else if(r==="error")n=function(i){let o=new ge("error",{error:i,message:i.message});o[pe]=this,Ye(e,this,o)};else if(r==="open")n=function(){let i=new F("open");i[pe]=this,Ye(e,this,i)};else return;n[ve]=!!t[ve],n[Ht]=e,t.once?this.once(r,n):this.on(r,n)},removeEventListener(r,e){for(let t of this.listeners(r))if(t[Ht]===e&&!t[ve]){this.removeListener(r,t);break}}};En.exports={CloseEvent:Z,ErrorEvent:ge,Event:F,EventTarget:Mi,MessageEvent:xe};function Ye(r,e,t){typeof r=="object"&&r.handleEvent?r.handleEvent.call(r,t):r.call(e,t)}});var Je=v((rc,xn)=>{"use strict";var{tokenChars:ke}=ue();function B(r,e,t){r[e]===void 0?r[e]=[t]:r[e].push(t)}function ji(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&&ke[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?(B(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&&ke[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),B(t,r.slice(a,d),!0),c===44&&(B(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(ke[c]!==1)throw new SyntaxError(`Unexpected character at index ${u}`);a===-1?a=u:n||(n=!0),s=!1}else if(i)if(ke[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&&ke[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),B(t,l,g),c===44&&(B(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?B(e,h,t):(l===void 0?B(t,h,!0):n?B(t,l,h.replace(/\\/g,"")):B(t,l,h),B(e,o,t)),e}function Bi(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(", ")}xn.exports={format:Bi,parse:ji}});var Ze=v((ic,Mn)=>{"use strict";var $i=require("events"),Ui=require("https"),Wi=require("http"),Cn=require("net"),Fi=require("tls"),{randomBytes:qi,createHash:Hi}=require("crypto"),{Duplex:nc,Readable:sc}=require("stream"),{URL:Vt}=require("url"),K=de(),Vi=Ut(),Gi=qt(),{isBlob:Ki}=ue(),{BINARY_TYPES:kn,CLOSE_TIMEOUT:Yi,EMPTY_BUFFER:ze,GUID:Ji,kForOnEventAttribute:Gt,kListener:zi,kStatusCode:Xi,kWebSocket:I,NOOP:In}=U(),{EventTarget:{addEventListener:Qi,removeEventListener:Zi}}=vn(),{format:eo,parse:to}=Je(),{toBuffer:ro}=we(),An=Symbol("kAborted"),Kt=[8,13],q=["CONNECTING","OPEN","CLOSING","CLOSED"],no=/^[!#$%&'*+\-.0-9A-Z^_`|a-z~]+$/,w=class r extends $i{constructor(e,t,n){super(),this._binaryType=kn[0],this._closeCode=1006,this._closeFrameReceived=!1,this._closeFrameSent=!1,this._closeMessage=ze,this._closeTimer=null,this._errorEmitted=!1,this._extensions={},this._paused=!1,this._protocol="",this._readyState=r.CONNECTING,this._receiver=null,this._sender=null,this._socket=null,e!==null?(this._bufferedAmount=0,this._isServer=!1,this._redirects=0,t===void 0?t=[]:Array.isArray(t)||(typeof t=="object"&&t!==null?(n=t,t=[]):t=[t]),Tn(this,e,t,n)):(this._autoPong=n.autoPong,this._closeTimeout=n.closeTimeout,this._isServer=!0)}get binaryType(){return this._binaryType}set binaryType(e){kn.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 Vi({allowSynchronousEvents:n.allowSynchronousEvents,binaryType:this.binaryType,extensions:this._extensions,isServer:this._isServer,maxPayload:n.maxPayload,skipUTF8Validation:n.skipUTF8Validation}),i=new Gi(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",oo),s.on("drain",ao),s.on("error",co),s.on("message",lo),s.on("ping",uo),s.on("pong",ho),i.onerror=fo,e.setTimeout&&e.setTimeout(0),e.setNoDelay&&e.setNoDelay(),t.length>0&&e.unshift(t),e.on("close",Rn),e.on("data",Qe),e.on("end",Dn),e.on("error",Ln),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[K.extensionName]&&this._extensions[K.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){T(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())}),Nn(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){Yt(this,e,n);return}t===void 0&&(t=!this._isServer),this._sender.ping(e||ze,t,n)}pong(e,t,n){if(this.readyState===r.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof e=="function"?(n=e,e=t=void 0):typeof t=="function"&&(n=t,t=void 0),typeof e=="number"&&(e=e.toString()),this.readyState!==r.OPEN){Yt(this,e,n);return}t===void 0&&(t=!this._isServer),this._sender.pong(e||ze,t,n)}resume(){this.readyState===r.CONNECTING||this.readyState===r.CLOSED||(this._paused=!1,this._receiver._writableState.needDrain||this._socket.resume())}send(e,t,n){if(this.readyState===r.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof t=="function"&&(n=t,t={}),typeof e=="number"&&(e=e.toString()),this.readyState!==r.OPEN){Yt(this,e,n);return}let s={binary:typeof e!="string",mask:!this._isServer,compress:!0,fin:!0,...t};this._extensions[K.extensionName]||(s.compress=!1),this._sender.send(e||ze,s,n)}terminate(){if(this.readyState!==r.CLOSED){if(this.readyState===r.CONNECTING){T(this,this._req,"WebSocket was closed before the connection was established");return}this._socket&&(this._readyState=r.CLOSING,this._socket.destroy())}}};Object.defineProperty(w,"CONNECTING",{enumerable:!0,value:q.indexOf("CONNECTING")});Object.defineProperty(w.prototype,"CONNECTING",{enumerable:!0,value:q.indexOf("CONNECTING")});Object.defineProperty(w,"OPEN",{enumerable:!0,value:q.indexOf("OPEN")});Object.defineProperty(w.prototype,"OPEN",{enumerable:!0,value:q.indexOf("OPEN")});Object.defineProperty(w,"CLOSING",{enumerable:!0,value:q.indexOf("CLOSING")});Object.defineProperty(w.prototype,"CLOSING",{enumerable:!0,value:q.indexOf("CLOSING")});Object.defineProperty(w,"CLOSED",{enumerable:!0,value:q.indexOf("CLOSED")});Object.defineProperty(w.prototype,"CLOSED",{enumerable:!0,value:q.indexOf("CLOSED")});["binaryType","bufferedAmount","extensions","isPaused","protocol","readyState","url"].forEach(r=>{Object.defineProperty(w.prototype,r,{enumerable:!0})});["open","error","close","message"].forEach(r=>{Object.defineProperty(w.prototype,`on${r}`,{enumerable:!0,get(){for(let e of this.listeners(r))if(e[Gt])return e[zi];return null},set(e){for(let t of this.listeners(r))if(t[Gt]){this.removeListener(r,t);break}typeof e=="function"&&this.addEventListener(r,e,{[Gt]:!0})}})});w.prototype.addEventListener=Qi;w.prototype.removeEventListener=Zi;Mn.exports=w;function Tn(r,e,t,n){let s={allowSynchronousEvents:!0,autoPong:!0,closeTimeout:Yi,protocolVersion:Kt[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,!Kt.includes(s.protocolVersion))throw new RangeError(`Unsupported protocol version: ${s.protocolVersion} (supported versions: ${Kt.join(", ")})`);let i;if(e instanceof Vt)i=e;else try{i=new Vt(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;Xe(r,p);return}let c=o?443:80,d=qi(16).toString("base64"),u=o?Ui.request:Wi.request,h=new Set,g;if(s.createConnection=s.createConnection||(o?io:so),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 K({...s.perMessageDeflate,isServer:!1,maxPayload:s.maxPayload}),s.headers["Sec-WebSocket-Extensions"]=eo({[K.extensionName]:g.offer()})),t.length){for(let p of t){if(typeof p!="string"||!no.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[y,k]of Object.entries(p))n.headers[y.toLowerCase()]=k}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",()=>{T(r,f,"Opening handshake has timed out")}),f.on("error",p=>{f===null||f[An]||(f=r._req=null,Xe(r,p))}),f.on("response",p=>{let y=p.headers.location,k=p.statusCode;if(y&&s.followRedirects&&k>=300&&k<400){if(++r._redirects>s.maxRedirects){T(r,f,"Maximum redirects exceeded");return}f.abort();let E;try{E=new Vt(y,e)}catch{let S=new SyntaxError(`Invalid URL: ${y}`);Xe(r,S);return}Tn(r,E,t,n)}else r.emit("unexpected-response",f,p)||T(r,f,`Unexpected server response: ${p.statusCode}`)}),f.on("upgrade",(p,y,k)=>{if(r.emit("upgrade",p),r.readyState!==w.CONNECTING)return;f=r._req=null;let E=p.headers.upgrade;if(E===void 0||E.toLowerCase()!=="websocket"){T(r,y,"Invalid Upgrade header");return}let m=Hi("sha1").update(d+Ji).digest("base64");if(p.headers["sec-websocket-accept"]!==m){T(r,y,"Invalid Sec-WebSocket-Accept header");return}let S=p.headers["sec-websocket-protocol"],b;if(S!==void 0?h.size?h.has(S)||(b="Server sent an invalid subprotocol"):b="Server sent a subprotocol but none was requested":h.size&&(b="Server sent no subprotocol"),b){T(r,y,b);return}S&&(r._protocol=S);let M=p.headers["sec-websocket-extensions"];if(M!==void 0){if(!g){T(r,y,"Server sent a Sec-WebSocket-Extensions header but no extension was requested");return}let z;try{z=to(M)}catch{T(r,y,"Invalid Sec-WebSocket-Extensions header");return}let De=Object.keys(z);if(De.length!==1||De[0]!==K.extensionName){T(r,y,"Server indicated an extension that was not requested");return}try{g.accept(z[K.extensionName])}catch{T(r,y,"Invalid Sec-WebSocket-Extensions header");return}r._extensions[K.extensionName]=g}r.setSocket(y,k,{allowSynchronousEvents:s.allowSynchronousEvents,generateMask:s.generateMask,maxPayload:s.maxPayload,skipUTF8Validation:s.skipUTF8Validation})}),s.finishRequest?s.finishRequest(f,r):f.end()}function Xe(r,e){r._readyState=w.CLOSING,r._errorEmitted=!0,r.emit("error",e),r.emitClose()}function so(r){return r.path=r.socketPath,Cn.connect(r)}function io(r){return r.path=void 0,!r.servername&&r.servername!==""&&(r.servername=Cn.isIP(r.host)?"":r.host),Fi.connect(r)}function T(r,e,t){r._readyState=w.CLOSING;let n=new Error(t);Error.captureStackTrace(n,T),e.setHeader?(e[An]=!0,e.abort(),e.socket&&!e.socket.destroyed&&e.socket.destroy(),process.nextTick(Xe,r,n)):(e.destroy(n),e.once("error",r.emit.bind(r,"error")),e.once("close",r.emitClose.bind(r)))}function Yt(r,e,t){if(e){let n=Ki(e)?e.size:ro(e).length;r._socket?r._sender._bufferedBytes+=n:r._bufferedAmount+=n}if(t){let n=new Error(`WebSocket is not open: readyState ${r.readyState} (${q[r.readyState]})`);process.nextTick(t,n)}}function oo(r,e){let t=this[I];t._closeFrameReceived=!0,t._closeMessage=e,t._closeCode=r,t._socket[I]!==void 0&&(t._socket.removeListener("data",Qe),process.nextTick(Pn,t._socket),r===1005?t.close():t.close(r,e))}function ao(){let r=this[I];r.isPaused||r._socket.resume()}function co(r){let e=this[I];e._socket[I]!==void 0&&(e._socket.removeListener("data",Qe),process.nextTick(Pn,e._socket),e.close(r[Xi])),e._errorEmitted||(e._errorEmitted=!0,e.emit("error",r))}function On(){this[I].emitClose()}function lo(r,e){this[I].emit("message",r,e)}function uo(r){let e=this[I];e._autoPong&&e.pong(r,!this._isServer,In),e.emit("ping",r)}function ho(r){this[I].emit("pong",r)}function Pn(r){r.resume()}function fo(r){let e=this[I];e.readyState!==w.CLOSED&&(e.readyState===w.OPEN&&(e._readyState=w.CLOSING,Nn(e)),this._socket.end(),e._errorEmitted||(e._errorEmitted=!0,e.emit("error",r)))}function Nn(r){r._closeTimer=setTimeout(r._socket.destroy.bind(r._socket),r._closeTimeout)}function Rn(){let r=this[I];if(this.removeListener("close",Rn),this.removeListener("data",Qe),this.removeListener("end",Dn),r._readyState=w.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",On),r._receiver.on("finish",On))}function Qe(r){this[I]._receiver.write(r)||this.pause()}function Dn(){let r=this[I];r._readyState=w.CLOSING,r._receiver.end(),this.end()}function Ln(){let r=this[I];this.removeListener("error",Ln),this.on("error",In),r&&(r._readyState=w.CLOSING,this.destroy())}});var Un=v((ac,$n)=>{"use strict";var oc=Ze(),{Duplex:po}=require("stream");function jn(r){r.emit("close")}function go(){!this.destroyed&&this._writableState.finished&&this.destroy()}function Bn(r){this.removeListener("error",Bn),this.destroy(),this.listenerCount("error")===0&&this.emit("error",r)}function mo(r,e){let t=!0,n=new po({...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(jn,n);return}let o=!1;r.once("error",function(a){o=!0,i(a)}),r.once("close",function(){o||i(s),process.nextTick(jn,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",go),n.on("error",Bn),n}$n.exports=mo});var Jt=v((cc,Wn)=>{"use strict";var{tokenChars:_o}=ue();function yo(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&&_o[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}Wn.exports={parse:yo}});var Yn=v((dc,Kn)=>{"use strict";var bo=require("events"),et=require("http"),{Duplex:lc}=require("stream"),{createHash:So}=require("crypto"),Fn=Je(),ee=de(),wo=Jt(),Eo=Ze(),{CLOSE_TIMEOUT:vo,GUID:xo,kWebSocket:ko}=U(),Oo=/^[+/0-9A-Za-z]{22}==$/,qn=0,Hn=1,Gn=2,zt=class extends bo{constructor(e,t){if(super(),e={allowSynchronousEvents:!0,autoPong:!0,maxPayload:100*1024*1024,skipUTF8Validation:!1,perMessageDeflate:!1,handleProtocols:null,clientTracking:!0,closeTimeout:vo,verifyClient:null,noServer:!1,backlog:null,server:null,host:null,path:null,port:null,WebSocket:Eo,...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=et.createServer((n,s)=>{let i=et.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=Co(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=qn}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===Gn){e&&this.once("close",()=>{e(new Error("The server is not running"))}),process.nextTick(Oe,this);return}if(e&&this.once("close",e),this._state!==Hn)if(this._state=Hn,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(Oe,this):process.nextTick(Oe,this);else{let t=this._server;this._removeListeners(),this._removeListeners=this._server=null,t.close(()=>{Oe(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",Vn);let i=e.headers["sec-websocket-key"],o=e.headers.upgrade,l=+e.headers["sec-websocket-version"];if(e.method!=="GET"){te(this,e,t,405,"Invalid HTTP method");return}if(o===void 0||o.toLowerCase()!=="websocket"){te(this,e,t,400,"Invalid Upgrade header");return}if(i===void 0||!Oo.test(i)){te(this,e,t,400,"Missing or invalid Sec-WebSocket-Key header");return}if(l!==13&&l!==8){te(this,e,t,400,"Missing or invalid Sec-WebSocket-Version header",{"Sec-WebSocket-Version":"13, 8"});return}if(!this.shouldHandle(e)){Ce(t,400);return}let a=e.headers["sec-websocket-protocol"],c=new Set;if(a!==void 0)try{c=wo.parse(a)}catch{te(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 ee({...this.options.perMessageDeflate,isServer:!0,maxPayload:this.options.maxPayload});try{let g=Fn.parse(d);g[ee.extensionName]&&(h.accept(g[ee.extensionName]),u[ee.extensionName]=h)}catch{te(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,y)=>{if(!g)return Ce(t,f||401,p,y);this.completeUpgrade(u,i,c,e,t,n,s)});return}if(!this.options.verifyClient(h))return Ce(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[ko])throw new Error("server.handleUpgrade() was called more than once with the same socket, possibly due to a misconfiguration");if(this._state>qn)return Ce(i,503);let c=["HTTP/1.1 101 Switching Protocols","Upgrade: websocket","Connection: Upgrade",`Sec-WebSocket-Accept: ${So("sha1").update(t+xo).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[ee.extensionName]){let u=e[ee.extensionName].params,h=Fn.format({[ee.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 wr(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})}Sr.Command=Ct});var Or=v(L=>{var{Argument:vr}=We(),{Command:It}=Er(),{CommanderError:ei,InvalidArgumentError:xr}=xe(),{Help:ti}=bt(),{Option:kr}=vt();L.program=new It;L.createCommand=r=>new It(r);L.createOption=(r,e)=>new kr(r,e);L.createArgument=(r,e)=>new vr(r,e);L.Command=It;L.Option=kr;L.Argument=vr;L.Help=ti;L.CommanderError=ei;L.InvalidArgumentError=xr;L.InvalidOptionArgumentError=xr});var Dr=v(O=>{"use strict";var At=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports),ri=At(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,p=l.uid,f=l.gid,m=parseInt("100",8),E=parseInt("010",8),b=parseInt("001",8),T=m|E;return!!(g&b||g&E&&h.has(f)||g&m&&p===c||g&T&&c===0)}}),ni=At(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(),p=a.substring(a.length-g.length).toLowerCase();if(g&&p===g)return!0}return!1},l=(a,c,d)=>a.isFile()&&o(c,d)}),si=At(r=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0})}),Ar=O&&O.__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]})),ii=O&&O.__setModuleDefault||(Object.create?(function(r,e){Object.defineProperty(r,"default",{enumerable:!0,value:e})}):function(r,e){r.default=e}),Tr=O&&O.__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"&&Ar(t,e,n[s]);return ii(t,e),t}})(),oi=O&&O.__exportStar||function(r,e){for(var t in r)t!=="default"&&!Object.prototype.hasOwnProperty.call(e,t)&&Ar(e,r,t)};Object.defineProperty(O,"__esModule",{value:!0});O.sync=O.isexe=O.posix=O.win32=void 0;var Pr=Tr(ri());O.posix=Pr;var Nr=Tr(ni());O.win32=Nr;oi(si(),O);var ai=process.env._ISEXE_TEST_PLATFORM_||process.platform,Rr=ai==="win32"?Nr:Pr;O.isexe=Rr.isexe;O.sync=Rr.sync});var qr=v((rc,Hr)=>{var{isexe:ci,sync:li}=Dr(),{join:di,delimiter:ui,sep:Lr,posix:Mr}=require("path"),jr=process.platform==="win32",$r=new RegExp(`[${Mr.sep}${Lr===Mr.sep?"":Lr}]`.replace(/(\\)/g,"\\$1")),hi=new RegExp(`^\\.${$r.source}`),Br=r=>Object.assign(new Error(`not found: ${r}`),{code:"ENOENT"}),Ur=(r,{path:e=process.env.PATH,pathExt:t=process.env.PATHEXT,delimiter:n=ui})=>{let s=r.match($r)?[""]:[...jr?[process.cwd()]:[],...(e||"").split(n)];if(jr){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:[""]}},Wr=(r,e)=>{let t=/^".*"$/.test(r)?r.slice(1,-1):r;return(!t&&hi.test(e)?e.slice(0,2):"")+di(t,e)},Fr=async(r,e={})=>{let{pathEnv:t,pathExt:n,pathExtExe:s}=Ur(r,e),i=[];for(let o of t){let l=Wr(o,r);for(let a of n){let c=l+a;if(await ci(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 Br(r)},fi=(r,e={})=>{let{pathEnv:t,pathExt:n,pathExtExe:s}=Ur(r,e),i=[];for(let o of t){let l=Wr(o,r);for(let a of n){let c=l+a;if(li(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 Br(r)};Hr.exports=Fr;Fr.sync=fi});var H=v((oc,Xr)=>{"use strict";var Jr=["nodebuffer","arraybuffer","fragments"],zr=typeof Blob<"u";zr&&Jr.push("blob");Xr.exports={BINARY_TYPES:Jr,CLOSE_TIMEOUT:3e4,EMPTY_BUFFER:Buffer.alloc(0),GUID:"258EAFA5-E914-47DA-95CA-C5AB0DC85B11",hasBlob:zr,kForOnEventAttribute:Symbol("kIsForOnEventAttribute"),kListener:Symbol("kListener"),kStatusCode:Symbol("status-code"),kWebSocket:Symbol("websocket"),NOOP:()=>{}}});var Oe=v((ac,Ge)=>{"use strict";var{EMPTY_BUFFER:_i}=H(),Rt=Buffer[Symbol.species];function yi(r,e){if(r.length===0)return _i;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 Rt(t.buffer,t.byteOffset,n):t}function Qr(r,e,t,n,s){for(let i=0;i<s;i++)t[n+i]=r[i]^e[i&3]}function Zr(r,e){for(let t=0;t<r.length;t++)r[t]^=e[t&3]}function bi(r){return r.length===r.buffer.byteLength?r.buffer:r.buffer.slice(r.byteOffset,r.byteOffset+r.length)}function Dt(r){if(Dt.readOnly=!0,Buffer.isBuffer(r))return r;let e;return r instanceof ArrayBuffer?e=new Rt(r):ArrayBuffer.isView(r)?e=new Rt(r.buffer,r.byteOffset,r.byteLength):(e=Buffer.from(r),Dt.readOnly=!1),e}Ge.exports={concat:yi,mask:Qr,toArrayBuffer:bi,toBuffer:Dt,unmask:Zr};if(!process.env.WS_NO_BUFFER_UTIL)try{let r=require("bufferutil");Ge.exports.mask=function(e,t,n,s,i){i<48?Qr(e,t,n,s,i):r.mask(e,t,n,s,i)},Ge.exports.unmask=function(e,t){e.length<32?Zr(e,t):r.unmask(e,t)}}catch{}});var rn=v((cc,tn)=>{"use strict";var en=Symbol("kDone"),Lt=Symbol("kRun"),Mt=class{constructor(e){this[en]=()=>{this.pending--,this[Lt]()},this.concurrency=e||1/0,this.jobs=[],this.pending=0}add(e){this.jobs.push(e),this[Lt]()}[Lt](){if(this.pending!==this.concurrency&&this.jobs.length){let e=this.jobs.shift();this.pending++,e(this[en])}}};tn.exports=Mt});var pe=v((lc,an)=>{"use strict";var Ce=require("zlib"),nn=Oe(),wi=rn(),{kStatusCode:sn}=H(),Si=Buffer[Symbol.species],Ei=Buffer.from([0,0,255,255]),Ye=Symbol("permessage-deflate"),q=Symbol("total-length"),he=Symbol("callback"),Y=Symbol("buffers"),fe=Symbol("error"),Ke,jt=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,!Ke){let t=this._options.concurrencyLimit!==void 0?this._options.concurrencyLimit:10;Ke=new wi(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[he];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){Ke.add(s=>{this._decompress(e,t,(i,o)=>{s(),n(i,o)})})}compress(e,t,n){Ke.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"?Ce.Z_DEFAULT_WINDOWBITS:this.params[i];this._inflate=Ce.createInflateRaw({...this._options.zlibInflateOptions,windowBits:o}),this._inflate[Ye]=this,this._inflate[q]=0,this._inflate[Y]=[],this._inflate.on("error",xi),this._inflate.on("data",on)}this._inflate[he]=n,this._inflate.write(e),t&&this._inflate.write(Ei),this._inflate.flush(()=>{let i=this._inflate[fe];if(i){this._inflate.close(),this._inflate=null,n(i);return}let o=nn.concat(this._inflate[Y],this._inflate[q]);this._inflate._readableState.endEmitted?(this._inflate.close(),this._inflate=null):(this._inflate[q]=0,this._inflate[Y]=[],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"?Ce.Z_DEFAULT_WINDOWBITS:this.params[i];this._deflate=Ce.createDeflateRaw({...this._options.zlibDeflateOptions,windowBits:o}),this._deflate[q]=0,this._deflate[Y]=[],this._deflate.on("data",vi)}this._deflate[he]=n,this._deflate.write(e),this._deflate.flush(Ce.Z_SYNC_FLUSH,()=>{if(!this._deflate)return;let i=nn.concat(this._deflate[Y],this._deflate[q]);t&&(i=new Si(i.buffer,i.byteOffset,i.length-4)),this._deflate[he]=null,this._deflate[q]=0,this._deflate[Y]=[],t&&this.params[`${s}_no_context_takeover`]&&this._deflate.reset(),n(null,i)})}};an.exports=jt;function vi(r){this[Y].push(r),this[q]+=r.length}function on(r){if(this[q]+=r.length,this[Ye]._maxPayload<1||this[q]<=this[Ye]._maxPayload){this[Y].push(r);return}this[fe]=new RangeError("Max payload size exceeded"),this[fe].code="WS_ERR_UNSUPPORTED_MESSAGE_LENGTH",this[fe][sn]=1009,this.removeListener("data",on),this.reset()}function xi(r){if(this[Ye]._inflate=null,this[fe]){this[he](this[fe]);return}r[sn]=1007,this[he](r)}});var ge=v((dc,Je)=>{"use strict";var{isUtf8:cn}=require("buffer"),{hasBlob:ki}=H(),Oi=[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 Ci(r){return r>=1e3&&r<=1014&&r!==1004&&r!==1005&&r!==1006||r>=3e3&&r<=4999}function $t(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 Ii(r){return ki&&typeof r=="object"&&typeof r.arrayBuffer=="function"&&typeof r.type=="string"&&typeof r.stream=="function"&&(r[Symbol.toStringTag]==="Blob"||r[Symbol.toStringTag]==="File")}Je.exports={isBlob:Ii,isValidStatusCode:Ci,isValidUTF8:$t,tokenChars:Oi};if(cn)Je.exports.isValidUTF8=function(r){return r.length<24?$t(r):cn(r)};else if(!process.env.WS_NO_UTF_8_VALIDATE)try{let r=require("utf-8-validate");Je.exports.isValidUTF8=function(e){return e.length<32?$t(e):r(e)}}catch{}});var Ht=v((uc,gn)=>{"use strict";var{Writable:Ai}=require("stream"),ln=pe(),{BINARY_TYPES:Ti,EMPTY_BUFFER:dn,kStatusCode:Pi,kWebSocket:Ni}=H(),{concat:Bt,toArrayBuffer:Ri,unmask:Di}=Oe(),{isValidStatusCode:Li,isValidUTF8:un}=ge(),ze=Buffer[Symbol.species],M=0,hn=1,fn=2,pn=3,Ut=4,Wt=5,Xe=6,Ft=class extends Ai{constructor(e={}){super(),this._allowSynchronousEvents=e.allowSynchronousEvents!==void 0?e.allowSynchronousEvents:!0,this._binaryType=e.binaryType||Ti[0],this._extensions=e.extensions||{},this._isServer=!!e.isServer,this._maxPayload=e.maxPayload|0,this._skipUTF8Validation=!!e.skipUTF8Validation,this[Ni]=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=M}_write(e,t,n){if(this._opcode===8&&this._state==M)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 ze(n.buffer,n.byteOffset+e,n.length-e),new ze(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 ze(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 M:this.getInfo(e);break;case hn:this.getPayloadLength16(e);break;case fn:this.getPayloadLength64(e);break;case pn:this.getMask();break;case Ut:this.getData(e);break;case Wt:case Xe: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[ln.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=hn:this._payloadLength===127?this._state=fn: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=pn:this._state=Ut}getMask(){if(this._bufferedBytes<4){this._loop=!1;return}this._mask=this.consume(4),this._state=Ut}getData(e){let t=dn;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&&Di(t,this._mask)}if(this._opcode>7){this.controlMessage(t,e);return}if(this._compressed){this._state=Wt,this.decompress(t,e);return}t.length&&(this._messageLength=this._totalPayloadLength,this._fragments.push(t)),this.dataMessage(e)}decompress(e,t){this._extensions[ln.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===M&&this.startLoop(t)})}dataMessage(e){if(!this._fin){this._state=M;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=Bt(n,t):this._binaryType==="arraybuffer"?s=Ri(Bt(n,t)):this._binaryType==="blob"?s=new Blob(n):s=n,this._allowSynchronousEvents?(this.emit("message",s,!0),this._state=M):(this._state=Xe,setImmediate(()=>{this.emit("message",s,!0),this._state=M,this.startLoop(e)}))}else{let s=Bt(n,t);if(!this._skipUTF8Validation&&!un(s)){let i=this.createError(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");e(i);return}this._state===Wt||this._allowSynchronousEvents?(this.emit("message",s,!1),this._state=M):(this._state=Xe,setImmediate(()=>{this.emit("message",s,!1),this._state=M,this.startLoop(e)}))}}controlMessage(e,t){if(this._opcode===8){if(e.length===0)this._loop=!1,this.emit("conclude",1005,dn),this.end();else{let n=e.readUInt16BE(0);if(!Li(n)){let i=this.createError(RangeError,`invalid status code ${n}`,!0,1002,"WS_ERR_INVALID_CLOSE_CODE");t(i);return}let s=new ze(e.buffer,e.byteOffset+2,e.length-2);if(!this._skipUTF8Validation&&!un(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=M;return}this._allowSynchronousEvents?(this.emit(this._opcode===9?"ping":"pong",e),this._state=M):(this._state=Xe,setImmediate(()=>{this.emit(this._opcode===9?"ping":"pong",e),this._state=M,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[Pi]=s,o}};gn.exports=Ft});var Gt=v((fc,yn)=>{"use strict";var{Duplex:hc}=require("stream"),{randomFillSync:Mi}=require("crypto"),mn=pe(),{EMPTY_BUFFER:ji,kWebSocket:$i,NOOP:Bi}=H(),{isBlob:me,isValidStatusCode:Ui}=ge(),{mask:_n,toBuffer:Q}=Oe(),j=Symbol("kByteLength"),Wi=Buffer.alloc(4),Qe=8*1024,Z,_e=Qe,B=0,Fi=1,Hi=2,qt=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=B,this.onerror=Bi,this[$i]=void 0}static frame(e,t){let n,s=!1,i=2,o=!1;t.mask&&(n=t.maskBuffer||Wi,t.generateMask?t.generateMask(n):(_e===Qe&&(Z===void 0&&(Z=Buffer.alloc(Qe)),Mi(Z,0,Qe),_e=0),n[0]=Z[_e++],n[1]=Z[_e++],n[2]=Z[_e++],n[3]=Z[_e++]),o=(n[0]|n[1]|n[2]|n[3])===0,i=6);let l;typeof e=="string"?(!t.mask||o)&&t[j]!==void 0?l=t[j]:(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?(_n(e,n,c,i,l),[c]):(_n(e,n,e,0,l),[c,e])):[c,e]}close(e,t,n,s){let i;if(e===void 0)i=ji;else{if(typeof e!="number"||!Ui(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={[j]:i.length,fin:!0,generateMask:this._generateMask,mask:n,maskBuffer:this._maskBuffer,opcode:8,readOnly:!1,rsv1:!1};this._state!==B?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):me(e)?(s=e.size,i=!1):(e=Q(e),s=e.length,i=Q.readOnly),s>125)throw new RangeError("The data size must not be greater than 125 bytes");let o={[j]:s,fin:!0,generateMask:this._generateMask,mask:t,maskBuffer:this._maskBuffer,opcode:9,readOnly:i,rsv1:!1};me(e)?this._state!==B?this.enqueue([this.getBlobData,e,!1,o,n]):this.getBlobData(e,!1,o,n):this._state!==B?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):me(e)?(s=e.size,i=!1):(e=Q(e),s=e.length,i=Q.readOnly),s>125)throw new RangeError("The data size must not be greater than 125 bytes");let o={[j]:s,fin:!0,generateMask:this._generateMask,mask:t,maskBuffer:this._maskBuffer,opcode:10,readOnly:i,rsv1:!1};me(e)?this._state!==B?this.enqueue([this.getBlobData,e,!1,o,n]):this.getBlobData(e,!1,o,n):this._state!==B?this.enqueue([this.dispatch,e,!1,o,n]):this.sendFrame(r.frame(e,o),n)}send(e,t,n){let s=this._extensions[mn.extensionName],i=t.binary?2:1,o=t.compress,l,a;typeof e=="string"?(l=Buffer.byteLength(e),a=!1):me(e)?(l=e.size,a=!1):(e=Q(e),l=e.length,a=Q.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={[j]:l,fin:t.fin,generateMask:this._generateMask,mask:t.mask,maskBuffer:this._maskBuffer,opcode:i,readOnly:a,rsv1:o};me(e)?this._state!==B?this.enqueue([this.getBlobData,e,this._compress,c,n]):this.getBlobData(e,this._compress,c,n):this._state!==B?this.enqueue([this.dispatch,e,this._compress,c,n]):this.dispatch(e,this._compress,c,n)}getBlobData(e,t,n,s){this._bufferedBytes+=n[j],this._state=Hi,e.arrayBuffer().then(i=>{if(this._socket.destroyed){let l=new Error("The socket was closed while the blob was being read");process.nextTick(Vt,this,l,s);return}this._bufferedBytes-=n[j];let o=Q(i);t?this.dispatch(o,t,n,s):(this._state=B,this.sendFrame(r.frame(o,n),s),this.dequeue())}).catch(i=>{process.nextTick(qi,this,i,s)})}dispatch(e,t,n,s){if(!t){this.sendFrame(r.frame(e,n),s);return}let i=this._extensions[mn.extensionName];this._bufferedBytes+=n[j],this._state=Fi,i.compress(e,n.fin,(o,l)=>{if(this._socket.destroyed){let a=new Error("The socket was closed while data was being compressed");Vt(this,a,s);return}this._bufferedBytes-=n[j],this._state=B,n.readOnly=!1,this.sendFrame(r.frame(l,n),s),this.dequeue()})}dequeue(){for(;this._state===B&&this._queue.length;){let e=this._queue.shift();this._bufferedBytes-=e[3][j],Reflect.apply(e[0],this,e.slice(1))}}enqueue(e){this._bufferedBytes+=e[3][j],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)}};yn.exports=qt;function Vt(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 qi(r,e,t){Vt(r,e,t),r.onerror(e)}});var Cn=v((pc,On)=>{"use strict";var{kForOnEventAttribute:Ie,kListener:Kt}=H(),bn=Symbol("kCode"),wn=Symbol("kData"),Sn=Symbol("kError"),En=Symbol("kMessage"),vn=Symbol("kReason"),ye=Symbol("kTarget"),xn=Symbol("kType"),kn=Symbol("kWasClean"),V=class{constructor(e){this[ye]=null,this[xn]=e}get target(){return this[ye]}get type(){return this[xn]}};Object.defineProperty(V.prototype,"target",{enumerable:!0});Object.defineProperty(V.prototype,"type",{enumerable:!0});var ee=class extends V{constructor(e,t={}){super(e),this[bn]=t.code===void 0?0:t.code,this[vn]=t.reason===void 0?"":t.reason,this[kn]=t.wasClean===void 0?!1:t.wasClean}get code(){return this[bn]}get reason(){return this[vn]}get wasClean(){return this[kn]}};Object.defineProperty(ee.prototype,"code",{enumerable:!0});Object.defineProperty(ee.prototype,"reason",{enumerable:!0});Object.defineProperty(ee.prototype,"wasClean",{enumerable:!0});var be=class extends V{constructor(e,t={}){super(e),this[Sn]=t.error===void 0?null:t.error,this[En]=t.message===void 0?"":t.message}get error(){return this[Sn]}get message(){return this[En]}};Object.defineProperty(be.prototype,"error",{enumerable:!0});Object.defineProperty(be.prototype,"message",{enumerable:!0});var Ae=class extends V{constructor(e,t={}){super(e),this[wn]=t.data===void 0?null:t.data}get data(){return this[wn]}};Object.defineProperty(Ae.prototype,"data",{enumerable:!0});var Vi={addEventListener(r,e,t={}){for(let s of this.listeners(r))if(!t[Ie]&&s[Kt]===e&&!s[Ie])return;let n;if(r==="message")n=function(i,o){let l=new Ae("message",{data:o?i:i.toString()});l[ye]=this,Ze(e,this,l)};else if(r==="close")n=function(i,o){let l=new ee("close",{code:i,reason:o.toString(),wasClean:this._closeFrameReceived&&this._closeFrameSent});l[ye]=this,Ze(e,this,l)};else if(r==="error")n=function(i){let o=new be("error",{error:i,message:i.message});o[ye]=this,Ze(e,this,o)};else if(r==="open")n=function(){let i=new V("open");i[ye]=this,Ze(e,this,i)};else return;n[Ie]=!!t[Ie],n[Kt]=e,t.once?this.once(r,n):this.on(r,n)},removeEventListener(r,e){for(let t of this.listeners(r))if(t[Kt]===e&&!t[Ie]){this.removeListener(r,t);break}}};On.exports={CloseEvent:ee,ErrorEvent:be,Event:V,EventTarget:Vi,MessageEvent:Ae};function Ze(r,e,t){typeof r=="object"&&r.handleEvent?r.handleEvent.call(r,t):r.call(e,t)}});var et=v((gc,In)=>{"use strict";var{tokenChars:Te}=ge();function U(r,e,t){r[e]===void 0?r[e]=[t]:r[e].push(t)}function Gi(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&&Te[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?(U(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&&Te[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),U(t,r.slice(a,d),!0),c===44&&(U(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(Te[c]!==1)throw new SyntaxError(`Unexpected character at index ${u}`);a===-1?a=u:n||(n=!0),s=!1}else if(i)if(Te[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&&Te[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),U(t,l,g),c===44&&(U(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?U(e,h,t):(l===void 0?U(t,h,!0):n?U(t,l,h.replace(/\\/g,"")):U(t,l,h),U(e,o,t)),e}function Ki(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(", ")}In.exports={format:Ki,parse:Gi}});var st=v((yc,Un)=>{"use strict";var Yi=require("events"),Ji=require("https"),zi=require("http"),Pn=require("net"),Xi=require("tls"),{randomBytes:Qi,createHash:Zi}=require("crypto"),{Duplex:mc,Readable:_c}=require("stream"),{URL:Yt}=require("url"),J=pe(),eo=Ht(),to=Gt(),{isBlob:ro}=ge(),{BINARY_TYPES:An,CLOSE_TIMEOUT:no,EMPTY_BUFFER:tt,GUID:so,kForOnEventAttribute:Jt,kListener:io,kStatusCode:oo,kWebSocket:I,NOOP:Nn}=H(),{EventTarget:{addEventListener:ao,removeEventListener:co}}=Cn(),{format:lo,parse:uo}=et(),{toBuffer:ho}=Oe(),Rn=Symbol("kAborted"),zt=[8,13],G=["CONNECTING","OPEN","CLOSING","CLOSED"],fo=/^[!#$%&'*+\-.0-9A-Z^_`|a-z~]+$/,S=class r extends Yi{constructor(e,t,n){super(),this._binaryType=An[0],this._closeCode=1006,this._closeFrameReceived=!1,this._closeFrameSent=!1,this._closeMessage=tt,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]),Dn(this,e,t,n)):(this._autoPong=n.autoPong,this._closeTimeout=n.closeTimeout,this._isServer=!0)}get binaryType(){return this._binaryType}set binaryType(e){An.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 eo({allowSynchronousEvents:n.allowSynchronousEvents,binaryType:this.binaryType,extensions:this._extensions,isServer:this._isServer,maxPayload:n.maxPayload,skipUTF8Validation:n.skipUTF8Validation}),i=new to(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",mo),s.on("drain",_o),s.on("error",yo),s.on("message",bo),s.on("ping",wo),s.on("pong",So),i.onerror=Eo,e.setTimeout&&e.setTimeout(0),e.setNoDelay&&e.setNoDelay(),t.length>0&&e.unshift(t),e.on("close",jn),e.on("data",nt),e.on("end",$n),e.on("error",Bn),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[J.extensionName]&&this._extensions[J.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){R(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())}),Mn(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){Xt(this,e,n);return}t===void 0&&(t=!this._isServer),this._sender.ping(e||tt,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){Xt(this,e,n);return}t===void 0&&(t=!this._isServer),this._sender.pong(e||tt,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){Xt(this,e,n);return}let s={binary:typeof e!="string",mask:!this._isServer,compress:!0,fin:!0,...t};this._extensions[J.extensionName]||(s.compress=!1),this._sender.send(e||tt,s,n)}terminate(){if(this.readyState!==r.CLOSED){if(this.readyState===r.CONNECTING){R(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:G.indexOf("CONNECTING")});Object.defineProperty(S.prototype,"CONNECTING",{enumerable:!0,value:G.indexOf("CONNECTING")});Object.defineProperty(S,"OPEN",{enumerable:!0,value:G.indexOf("OPEN")});Object.defineProperty(S.prototype,"OPEN",{enumerable:!0,value:G.indexOf("OPEN")});Object.defineProperty(S,"CLOSING",{enumerable:!0,value:G.indexOf("CLOSING")});Object.defineProperty(S.prototype,"CLOSING",{enumerable:!0,value:G.indexOf("CLOSING")});Object.defineProperty(S,"CLOSED",{enumerable:!0,value:G.indexOf("CLOSED")});Object.defineProperty(S.prototype,"CLOSED",{enumerable:!0,value:G.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[Jt])return e[io];return null},set(e){for(let t of this.listeners(r))if(t[Jt]){this.removeListener(r,t);break}typeof e=="function"&&this.addEventListener(r,e,{[Jt]:!0})}})});S.prototype.addEventListener=ao;S.prototype.removeEventListener=co;Un.exports=S;function Dn(r,e,t,n){let s={allowSynchronousEvents:!0,autoPong:!0,closeTimeout:no,protocolVersion:zt[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,!zt.includes(s.protocolVersion))throw new RangeError(`Unsupported protocol version: ${s.protocolVersion} (supported versions: ${zt.join(", ")})`);let i;if(e instanceof Yt)i=e;else try{i=new Yt(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 f=new SyntaxError(a);if(r._redirects===0)throw f;rt(r,f);return}let c=o?443:80,d=Qi(16).toString("base64"),u=o?Ji.request:zi.request,h=new Set,g;if(s.createConnection=s.createConnection||(o?go:po),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 J({...s.perMessageDeflate,isServer:!1,maxPayload:s.maxPayload}),s.headers["Sec-WebSocket-Extensions"]=lo({[J.extensionName]:g.offer()})),t.length){for(let f of t){if(typeof f!="string"||!fo.test(f)||h.has(f))throw new SyntaxError("An invalid or duplicated subprotocol was specified");h.add(f)}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 f=s.path.split(":");s.socketPath=f[0],s.path=f[1]}let p;if(s.followRedirects){if(r._redirects===0){r._originalIpc=l,r._originalSecure=o,r._originalHostOrSocketPath=l?s.socketPath:i.host;let f=n&&n.headers;if(n={...n,headers:{}},f)for(let[m,E]of Object.entries(f))n.headers[m.toLowerCase()]=E}else if(r.listenerCount("redirect")===0){let f=l?r._originalIpc?s.socketPath===r._originalHostOrSocketPath:!1:r._originalIpc?!1:i.host===r._originalHostOrSocketPath;(!f||r._originalSecure&&!o)&&(delete s.headers.authorization,delete s.headers.cookie,f||delete s.headers.host,s.auth=void 0)}s.auth&&!n.headers.authorization&&(n.headers.authorization="Basic "+Buffer.from(s.auth).toString("base64")),p=r._req=u(s),r._redirects&&r.emit("redirect",r.url,p)}else p=r._req=u(s);s.timeout&&p.on("timeout",()=>{R(r,p,"Opening handshake has timed out")}),p.on("error",f=>{p===null||p[Rn]||(p=r._req=null,rt(r,f))}),p.on("response",f=>{let m=f.headers.location,E=f.statusCode;if(m&&s.followRedirects&&E>=300&&E<400){if(++r._redirects>s.maxRedirects){R(r,p,"Maximum redirects exceeded");return}p.abort();let b;try{b=new Yt(m,e)}catch{let y=new SyntaxError(`Invalid URL: ${m}`);rt(r,y);return}Dn(r,b,t,n)}else r.emit("unexpected-response",p,f)||R(r,p,`Unexpected server response: ${f.statusCode}`)}),p.on("upgrade",(f,m,E)=>{if(r.emit("upgrade",f),r.readyState!==S.CONNECTING)return;p=r._req=null;let b=f.headers.upgrade;if(b===void 0||b.toLowerCase()!=="websocket"){R(r,m,"Invalid Upgrade header");return}let T=Zi("sha1").update(d+so).digest("base64");if(f.headers["sec-websocket-accept"]!==T){R(r,m,"Invalid Sec-WebSocket-Accept header");return}let y=f.headers["sec-websocket-protocol"],w;if(y!==void 0?h.size?h.has(y)||(w="Server sent an invalid subprotocol"):w="Server sent a subprotocol but none was requested":h.size&&(w="Server sent no subprotocol"),w){R(r,m,w);return}y&&(r._protocol=y);let k=f.headers["sec-websocket-extensions"];if(k!==void 0){if(!g){R(r,m,"Server sent a Sec-WebSocket-Extensions header but no extension was requested");return}let N;try{N=uo(k)}catch{R(r,m,"Invalid Sec-WebSocket-Extensions header");return}let P=Object.keys(N);if(P.length!==1||P[0]!==J.extensionName){R(r,m,"Server indicated an extension that was not requested");return}try{g.accept(N[J.extensionName])}catch{R(r,m,"Invalid Sec-WebSocket-Extensions header");return}r._extensions[J.extensionName]=g}r.setSocket(m,E,{allowSynchronousEvents:s.allowSynchronousEvents,generateMask:s.generateMask,maxPayload:s.maxPayload,skipUTF8Validation:s.skipUTF8Validation})}),s.finishRequest?s.finishRequest(p,r):p.end()}function rt(r,e){r._readyState=S.CLOSING,r._errorEmitted=!0,r.emit("error",e),r.emitClose()}function po(r){return r.path=r.socketPath,Pn.connect(r)}function go(r){return r.path=void 0,!r.servername&&r.servername!==""&&(r.servername=Pn.isIP(r.host)?"":r.host),Xi.connect(r)}function R(r,e,t){r._readyState=S.CLOSING;let n=new Error(t);Error.captureStackTrace(n,R),e.setHeader?(e[Rn]=!0,e.abort(),e.socket&&!e.socket.destroyed&&e.socket.destroy(),process.nextTick(rt,r,n)):(e.destroy(n),e.once("error",r.emit.bind(r,"error")),e.once("close",r.emitClose.bind(r)))}function Xt(r,e,t){if(e){let n=ro(e)?e.size:ho(e).length;r._socket?r._sender._bufferedBytes+=n:r._bufferedAmount+=n}if(t){let n=new Error(`WebSocket is not open: readyState ${r.readyState} (${G[r.readyState]})`);process.nextTick(t,n)}}function mo(r,e){let t=this[I];t._closeFrameReceived=!0,t._closeMessage=e,t._closeCode=r,t._socket[I]!==void 0&&(t._socket.removeListener("data",nt),process.nextTick(Ln,t._socket),r===1005?t.close():t.close(r,e))}function _o(){let r=this[I];r.isPaused||r._socket.resume()}function yo(r){let e=this[I];e._socket[I]!==void 0&&(e._socket.removeListener("data",nt),process.nextTick(Ln,e._socket),e.close(r[oo])),e._errorEmitted||(e._errorEmitted=!0,e.emit("error",r))}function Tn(){this[I].emitClose()}function bo(r,e){this[I].emit("message",r,e)}function wo(r){let e=this[I];e._autoPong&&e.pong(r,!this._isServer,Nn),e.emit("ping",r)}function So(r){this[I].emit("pong",r)}function Ln(r){r.resume()}function Eo(r){let e=this[I];e.readyState!==S.CLOSED&&(e.readyState===S.OPEN&&(e._readyState=S.CLOSING,Mn(e)),this._socket.end(),e._errorEmitted||(e._errorEmitted=!0,e.emit("error",r)))}function Mn(r){r._closeTimer=setTimeout(r._socket.destroy.bind(r._socket),r._closeTimeout)}function jn(){let r=this[I];if(this.removeListener("close",jn),this.removeListener("data",nt),this.removeListener("end",$n),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",Tn),r._receiver.on("finish",Tn))}function nt(r){this[I]._receiver.write(r)||this.pause()}function $n(){let r=this[I];r._readyState=S.CLOSING,r._receiver.end(),this.end()}function Bn(){let r=this[I];this.removeListener("error",Bn),this.on("error",Nn),r&&(r._readyState=S.CLOSING,this.destroy())}});var qn=v((wc,Hn)=>{"use strict";var bc=st(),{Duplex:vo}=require("stream");function Wn(r){r.emit("close")}function xo(){!this.destroyed&&this._writableState.finished&&this.destroy()}function Fn(r){this.removeListener("error",Fn),this.destroy(),this.listenerCount("error")===0&&this.emit("error",r)}function ko(r,e){let t=!0,n=new vo({...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(Wn,n);return}let o=!1;r.once("error",function(a){o=!0,i(a)}),r.once("close",function(){o||i(s),process.nextTick(Wn,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",xo),n.on("error",Fn),n}Hn.exports=ko});var Qt=v((Sc,Vn)=>{"use strict";var{tokenChars:Oo}=ge();function Co(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&&Oo[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}Vn.exports={parse:Co}});var Qn=v((vc,Xn)=>{"use strict";var Io=require("events"),it=require("http"),{Duplex:Ec}=require("stream"),{createHash:Ao}=require("crypto"),Gn=et(),te=pe(),To=Qt(),Po=st(),{CLOSE_TIMEOUT:No,GUID:Ro,kWebSocket:Do}=H(),Lo=/^[+/0-9A-Za-z]{22}==$/,Kn=0,Yn=1,zn=2,Zt=class extends Io{constructor(e,t){if(super(),e={allowSynchronousEvents:!0,autoPong:!0,maxPayload:100*1024*1024,skipUTF8Validation:!1,perMessageDeflate:!1,handleProtocols:null,clientTracking:!0,closeTimeout:No,verifyClient:null,noServer:!1,backlog:null,server:null,host:null,path:null,port:null,WebSocket:Po,...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=it.createServer((n,s)=>{let i=it.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=Mo(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=Kn}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===zn){e&&this.once("close",()=>{e(new Error("The server is not running"))}),process.nextTick(Pe,this);return}if(e&&this.once("close",e),this._state!==Yn)if(this._state=Yn,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(Pe,this):process.nextTick(Pe,this);else{let t=this._server;this._removeListeners(),this._removeListeners=this._server=null,t.close(()=>{Pe(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",Jn);let i=e.headers["sec-websocket-key"],o=e.headers.upgrade,l=+e.headers["sec-websocket-version"];if(e.method!=="GET"){re(this,e,t,405,"Invalid HTTP method");return}if(o===void 0||o.toLowerCase()!=="websocket"){re(this,e,t,400,"Invalid Upgrade header");return}if(i===void 0||!Lo.test(i)){re(this,e,t,400,"Missing or invalid Sec-WebSocket-Key header");return}if(l!==13&&l!==8){re(this,e,t,400,"Missing or invalid Sec-WebSocket-Version header",{"Sec-WebSocket-Version":"13, 8"});return}if(!this.shouldHandle(e)){Ne(t,400);return}let a=e.headers["sec-websocket-protocol"],c=new Set;if(a!==void 0)try{c=To.parse(a)}catch{re(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 te({...this.options.perMessageDeflate,isServer:!0,maxPayload:this.options.maxPayload});try{let g=Gn.parse(d);g[te.extensionName]&&(h.accept(g[te.extensionName]),u[te.extensionName]=h)}catch{re(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,p,f,m)=>{if(!g)return Ne(t,p||401,f,m);this.completeUpgrade(u,i,c,e,t,n,s)});return}if(!this.options.verifyClient(h))return Ne(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[Do])throw new Error("server.handleUpgrade() was called more than once with the same socket, possibly due to a misconfiguration");if(this._state>Kn)return Ne(i,503);let c=["HTTP/1.1 101 Switching Protocols","Upgrade: websocket","Connection: Upgrade",`Sec-WebSocket-Accept: ${Ao("sha1").update(t+Ro).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[te.extensionName]){let u=e[te.extensionName].params,h=Gn.format({[te.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",Jn),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(Pe,this)})),l(d,s)}};Xn.exports=Zt;function Mo(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 Pe(r){r._state=zn,r.emit("close")}function Jn(){this.destroy()}function Ne(r,e,t,n){t=t||it.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} ${it.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
|
|
30
|
-
`,
|
|
31
|
-
`)[0].trim()||void 0}catch{return}}function
|
|
32
|
-
`);for(let n=t.length-1;n>=0;n--){let s=t[n]?.trim();if(s)try{let i=JSON.parse(s),o=i.message?.usage??i.usage;if(!o||typeof o!="object")continue;let 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/
|
|
33
|
-
`)){let
|
|
34
|
-
`,"utf-8"),console.log("[daemon] mcp.config.written",{tmpPath:n,transport:e?"http":"stdio"}),["--mcp-config",n]}catch(e){return console.warn("[daemon] mcp.config.build.failed",{error:String(e)}),[]}}var
|
|
29
|
+
`+t)}function re(r,e,t,n,s,i){if(r.listenerCount("wsClientError")){let o=new Error(s);Error.captureStackTrace(o,re),r.emit("wsClientError",o,t,e)}else Ne(t,n,s,i)}});var ss={};Bs(ss,{loadConfig:()=>ne,loadProjectSettings:()=>tr,saveConfig:()=>Le});function Re(r,e){let t=r[e];if(!(!t||typeof t!="object"||Array.isArray(t)))return Object.fromEntries(Object.entries(t).filter(([,n])=>typeof n=="string"))}function ne(){let r=K.default.existsSync(ot)?ot:ns;K.default.existsSync(r)||(console.error("[bridge] Config not found. Run: bridge-agent auth"),process.exit(1));let e=K.default.readFileSync(r,"utf-8"),t;try{t=JSON.parse(e)}catch{console.error("[bridge] Invalid config file at",ns),process.exit(1)}(!t||typeof t!="object")&&(console.error("[bridge] Config must be a JSON object. Run: bridge-agent auth"),process.exit(1));let n=t,s=typeof n.server=="string"?n.server:"",i=typeof n.token=="string"?n.token:"",o=typeof n.name=="string"?n.name:"bridge-agent";(!s||!i)&&(console.error("[bridge] Config missing server or token. Run: bridge-agent auth"),process.exit(1));let l={server:s,token:i,name:o},a=Re(n,"agentPaths"),c=Re(n,"projectPaths");return a&&(l.agentPaths=a),c&&(l.projectPaths=c),l}function Le(r){let e=De.default.dirname(ot);K.default.existsSync(e)||K.default.mkdirSync(e,{recursive:!0}),K.default.writeFileSync(ot,JSON.stringify(r,null,2),{mode:384})}function tr(r){let e=De.default.join(r??process.cwd(),".jerico","settings.json");if(!K.default.existsSync(e))return{};try{let t=K.default.readFileSync(e,"utf-8"),n=JSON.parse(t);if(!n||typeof n!="object"||Array.isArray(n))return{};let s=n,i={};typeof s.preferredAgent=="string"&&(i.preferredAgent=s.preferredAgent);let o=Re(s,"hooks"),l=Re(s,"env"),a=Re(s,"agentPaths");return o&&(i.hooks=o),l&&(i.env=l),a&&(i.agentPaths=a),i}catch{return console.warn("[bridge] Failed to parse .jerico/settings.json, ignoring"),{}}}var K,De,er,ot,ns,we=$s(()=>{"use strict";K=_(require("fs")),De=_(require("path")),er=_(require("os"));ot=De.default.join(er.default.homedir(),".jerico","settings.json"),ns=De.default.join(er.default.homedir(),".bridge","config.json")});var Cr=_(Or(),1),{program:qa,createCommand:Va,createArgument:Ga,createOption:Ka,CommanderError:Ya,InvalidArgumentError:Ja,InvalidOptionArgumentError:za,Command:Ir,Argument:Xa,Option:Qa,Help:Za}=Cr.default;var bs=require("node:http"),ae=require("node:child_process"),A=require("node:fs"),X=require("node:os"),D=_(require("path"));var Yr=_(require("node-pty"));var Pt=_(qr()),de=_(require("fs")),ke=_(require("path")),Gr=_(require("net")),Kr=require("child_process"),Fe=r=>r+`
|
|
30
|
+
`,He=r=>r.replace(/[\r\n]+$/,"")+"\r",ue=[{key:"sh",displayName:"Shell",binary:"sh",checkAuth:async()=>!0,formatInput:Fe},{key:"claude",displayName:"Claude Code",binary:"claude",checkAuth:async()=>Tt(".claude")||le("ANTHROPIC_API_KEY"),assignSessionId:!0,spawnArgs:["--dangerously-skip-permissions"],resumeArgs:r=>["--dangerously-skip-permissions","--resume",r],supportsMcpConfig:!0,formatInput:He,versionDirGlobs:[".local/share/claude/versions/*"]},{key:"codex",displayName:"Codex CLI",binary:"codex",checkAuth:async()=>le("OPENAI_API_KEY"),spawnArgs:["--full-auto"],supportsMcpConfig:!0,formatInput:He},{key:"qwen",displayName:"Qwen CLI",binary:"qwen",checkAuth:async()=>Tt(".qwen"),assignSessionId:!0,spawnArgs:["--yolo"],resumeArgs:r=>["--resume",r,"--yolo"],supportsMcpConfig:!0,formatInput:He,versionDirGlobs:[".local/share/qwen/versions/*"]},{key:"gemini",displayName:"Gemini",binary:"gemini",checkAuth:async()=>le("GEMINI_API_KEY"),supportsMcpConfig:!0,formatInput:Fe},{key:"ollama",displayName:"Ollama",binary:"ollama",checkAuth:async()=>mi(11434),formatInput:Fe},{key:"aider",displayName:"Aider",binary:"aider",checkAuth:async()=>le("OPENAI_API_KEY")||le("ANTHROPIC_API_KEY"),supportsMcpConfig:!0,formatInput:Fe},{key:"kimi",displayName:"Kimi Code",binary:"kimi",checkAuth:async()=>Tt(".kimi")||le("KIMI_API_KEY"),assignSessionId:!0,spawnArgs:["--yolo"],resumeArgs:r=>["-r",r,"--yolo"],supportsMcpConfig:!0,formatInput:He,versionDirGlobs:[".local/share/uv/tools/kimi-cli/bin",".local/share/kimi/versions/*"]}];var Vr=process.env.HOME??"/Users/unknown";function qe(r){try{let e=(0,Kr.spawnSync)(r,["--version"],{timeout:5e3});return e.status!==0?void 0:(e.stdout??e.stderr??Buffer.from("")).toString("utf8").split(`
|
|
31
|
+
`)[0].trim()||void 0}catch{return}}function pi(r){if(!r.versionDirGlobs?.length)return[];let e=[],t=r.versionDirGlobs;for(let n of t){let s=ke.default.join(Vr,n.replace(/\/\*$/,""));if(n.endsWith("/*")){let i=[];try{i=de.default.readdirSync(s)}catch{}i.sort((o,l)=>l.localeCompare(o));for(let o of i){let l=ke.default.join(s,o,r.binary);if(de.default.existsSync(l)){let a=qe(l);e.push({path:l,version:a})}}}else{let i=ke.default.join(Vr,n);if(de.default.existsSync(i)){let o=qe(i);e.push({path:i,version:o})}}}return e}async function gi(r,e={}){if(e[r.key]){let n=e[r.key],s=qe(n);if(s)return{path:n,version:s}}try{let n=await(0,Pt.default)(r.binary);if(n&&de.default.existsSync(n)){let s=qe(n);if(s!==void 0)return{path:n,version:s}}}catch{}let t=pi(r);for(let n of t)if(n.version!==void 0)return n;try{let n=await(0,Pt.default)(r.binary);if(n)return{path:n}}catch{}throw new Error(`No working binary found for agent '${r.key}'`)}async function Nt(r={}){let e=[];for(let t of ue)try{let{path:n,version:s}=await gi(t,r),o=await t.checkAuth()?"ok":"missing";e.push({key:t.key,displayName:t.displayName,binaryPath:n,authStatus:o,version:s})}catch{}return console.log("[daemon] agent.detect.done",{found:e.map(t=>t.key),missing:ue.map(t=>t.key).filter(t=>!e.find(n=>n.key===t))}),e}function Tt(r){return de.default.existsSync(ke.default.join(process.env.HOME??"",r))}function le(r){return!!process.env[r]}async function mi(r){return new Promise(e=>{let t=Gr.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 Ve=class{handles=new Map;nextInstanceId=1;lastErrors=new Map;spawn(e,t,n,s,i,o,l,a,c){let d=this.handles.get(e);d&&(console.warn("[daemon] pty.spawn.replace_existing",{agentId:e,oldPid:d.pid,newAgentKey:t}),this.kill(e,!0));let u=Math.max(1,Math.min(500,i)),h=Math.max(1,Math.min(500,o)),g={...process.env,TERM:"xterm-256color",COLORTERM:"truecolor"};c&&(g.BRIDGE_SERVER_URL=c.serverUrl,g.BRIDGE_TOKEN=c.token,g.BRIDGE_WORKSPACE_ID=c.workspaceId,g.BRIDGE_PROJECT_ID=c.projectId,c.projectEnv&&Object.assign(g,c.projectEnv));let p=process.env.BRIDGE_MCP_URL;p&&(g.BRIDGE_MCP_URL=p);let f;try{f=Yr.spawn(n,s,{name:"xterm-256color",cols:u,rows:h,cwd:c?.cwd,env:g})}catch(b){let T=b instanceof Error?b.message:String(b);return this.lastErrors.set(e,T),console.error("[daemon] pty.spawn.failed",{agentId:e,agentKey:t,error:T}),!1}let m=this.nextInstanceId++,E={agentId:e,agentKey:t,process:f,pid:f.pid,killed:!1,instanceId:m};return f.onData(b=>{let T=this.handles.get(e);!T||T.instanceId!==m||E.killed||l(Buffer.from(b).toString("base64"))}),f.onExit(({exitCode:b,signal:T})=>{let y=this.handles.get(e);!y||y.instanceId!==m||E.killed||E.killed||(this.handles.delete(e),console.log("[daemon] pty.exit",{agentId:e,exitCode:b,signal:T}),a(b??null,T?String(T):null))}),this.lastErrors.delete(e),this.handles.set(e,E),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=ue.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)}getLastError(e){return this.lastErrors.get(e)}killAll(){for(let e of this.handles.values())try{process.kill(-e.pid,"SIGTERM")}catch{e.process.kill()}this.handles.clear()}getLiveAgentIds(){return[...this.handles.keys()]}};var jo=_(qn(),1),$o=_(et(),1),Bo=_(pe(),1),Uo=_(Ht(),1),Wo=_(Gt(),1),Fo=_(Qt(),1),Zn=_(st(),1),Ho=_(Qn(),1);var C=Zn.default;var W=_(require("fs")),$=_(require("path")),ie=_(require("os")),cr=require("node:child_process"),gs=require("node:crypto");var es=r=>r;var ts=r=>r,rs=r=>r;we();var Me=_(require("fs")),rr=_(require("path")),is=_(require("os")),qo=2e5;function Vo(r){let e=rr.default.join(is.default.homedir(),".claude","projects");if(Me.default.existsSync(e))try{let t=Me.default.readdirSync(e,{withFileTypes:!0}).filter(n=>n.isDirectory());for(let n of t){let s=rr.default.join(e,n.name,`${r}.jsonl`);if(Me.default.existsSync(s))return s}}catch{}}function Go(r){try{let t=Me.default.readFileSync(r,"utf-8").trim().split(`
|
|
32
|
+
`);for(let n=t.length-1;n>=0;n--){let s=t[n]?.trim();if(s)try{let i=JSON.parse(s),o=i.message?.usage??i.usage;if(!o||typeof o!="object")continue;let 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/qo*100)),usedTokens:a}}catch{continue}}}catch{}return null}function nr(r,e,t){let n,s=-1,i=()=>{if(n||(n=Vo(e)),!n)return;let a=Go(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 z=_(require("fs")),je=_(require("path")),sr=_(require("os")),os=300*60*1e3,as={free:10,pro:40,max_5x:200,max_20x:200};function Ko(){let r=je.default.join(sr.default.homedir(),".jerico","settings.json");try{if(!z.default.existsSync(r))return"pro";let t=JSON.parse(z.default.readFileSync(r,"utf-8")).claudeTier;if(typeof t=="string"&&t in as)return t}catch{}return"pro"}function Yo(){let r=je.default.join(sr.default.homedir(),".claude","projects");if(!z.default.existsSync(r))return{prompts5h:0,resetAt:0};let t=Date.now()-os,n=1/0,s=0;try{let o=z.default.readdirSync(r,{withFileTypes:!0}).filter(l=>l.isDirectory());for(let l of o){let a=je.default.join(r,l.name),c;try{c=z.default.readdirSync(a).filter(d=>d.endsWith(".jsonl"))}catch{continue}for(let d of c){let u=je.default.join(a,d),h;try{if(z.default.statSync(u).size>20*1024*1024)continue;h=z.default.readFileSync(u,"utf-8")}catch{continue}for(let g of h.split(`
|
|
33
|
+
`)){let p=g.trim();if(p)try{let f=JSON.parse(p);if(f.type!=="user"||f.message?.role!=="user"||f.userType!==void 0&&f.userType!=="external")continue;let E=f.timestamp;if(typeof E!="string")continue;let b=Date.parse(E);if(isNaN(b)||b<t)continue;s++,b<n&&(n=b)}catch{continue}}}}}catch{}let i=isFinite(n)?n+os:0;return{prompts5h:s,resetAt:i}}function cs(r){let e=()=>{let n=Ko(),s=as[n]??40,{prompts5h:i,resetAt:o}=Yo();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 Se=_(require("os")),at=_(require("fs")),or=require("node:child_process");function ds(){let r=0,e=0;for(let t of Se.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 ir=ds();function Jo(){let r=ds(),e=r.idle-ir.idle,t=r.total-ir.total;return ir=r,t===0?0:Math.round((1-e/t)*100)}function zo(){let r=Se.default.totalmem(),e=Se.default.freemem(),t=0;try{let n=(0,or.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 Xo(){if(process.platform==="darwin")return zo();let r=Se.default.totalmem(),e=Se.default.freemem();return{totalMb:Math.round(r/1024/1024),usedMb:Math.round((r-e)/1024/1024),cachedMb:0}}function Qo(){try{let r=(0,or.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 Zo(){try{let r="/sys/class/power_supply",e=at.default.readdirSync(r).filter(o=>/^BAT/i.test(o));if(e.length===0)return;let t=`${r}/${e[0]}`,n=parseInt(at.default.readFileSync(`${t}/capacity`,"utf-8").trim(),10),s=at.default.readFileSync(`${t}/status`,"utf-8").trim().toLowerCase();return{percent:n,charging:s==="charging"||s==="full"}}catch{return}}function ls(){let r=process.platform;if(r==="darwin")return Qo();if(r==="linux")return Zo()}var ea=1e4,ta=3;function us(r){let e=0,t=ls(),n=setInterval(()=>{e++,e%ta===0&&(t=ls());let s=Xo();r({cpu:Jo(),ramUsedMb:s.usedMb,ramTotalMb:s.totalMb,ramCachedMb:s.cachedMb,battery:t})},ea);return()=>clearInterval(n)}var ct=_(require("fs")),lt=_(require("path")),hs=_(require("node-pty"));function ra(){try{let r=require.resolve("node-pty"),e=lt.default.resolve(lt.default.dirname(r),"..");return lt.default.join(e,"prebuilds",`${process.platform}-${process.arch}`,"spawn-helper")}catch{return}}function fs(){let r=ra();if(!r||!ct.default.existsSync(r))return!0;try{ct.default.accessSync(r,ct.default.constants.X_OK)}catch{return!1}try{hs.spawn("/bin/sh",[],{name:"xterm-256color",cols:80,rows:24}).kill()}catch{return!1}return!0}var se=new Map,$e=[];function na(r){let e=Date.now(),t=e-3e4;for(;$e.length&&$e[0].ts<t;)$e.shift();return $e.push({agentKey:r,ts:e}),new Set($e.map(s=>s.agentKey)).size>=2}var sa=r=>r.replace(/[\r\n]+$/,"")+"\r",lr=null,ia=cs(r=>{lr=r}),oa=3e4,aa=5e3,ca=400;function la(r){return r.replace(/\x1b\[[0-9;?]*[A-Za-z]/g,"")}function da(r,e=ca){return r.length<=e?r:`${r.slice(0,e)}...`}function ua(r){return r.replace(/^wss?:/,e=>e==="wss:"?"https:":"http:").replace(/\/ws(\/.*)?$/,"")}function ut(){let r=W.default.realpathSync(process.argv[1]??""),e=$.default.dirname(r);return[$.default.resolve(e,"../../mcp-server/dist/index.cjs"),$.default.resolve(e,"bridge-mcp.cjs"),$.default.resolve(process.cwd(),"node_modules/.bin/bridge-mcp")].find(n=>W.default.existsSync(n))??"bridge-mcp"}function ha(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:ut(),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=$.default.join(ie.default.tmpdir(),`bridge-mcp-${r.agentId??r.projectId}.json`);return W.default.writeFileSync(n,JSON.stringify(t,null,2)+`
|
|
34
|
+
`,"utf-8"),console.log("[daemon] mcp.config.written",{tmpPath:n,transport:e?"http":"stdio"}),["--mcp-config",n]}catch(e){return console.warn("[daemon] mcp.config.build.failed",{error:String(e)}),[]}}var fa={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 Ee(...r){return`
|
|
35
35
|
|
|
36
|
-
**Available MCP tools:** ${r.join(", ")}`}function
|
|
36
|
+
**Available MCP tools:** ${r.join(", ")}`}function pa(...r){return`
|
|
37
37
|
|
|
38
38
|
## Tool reference (only call tools listed here)
|
|
39
39
|
|
|
40
40
|
| Tool | Purpose |
|
|
41
41
|
|------|---------|
|
|
42
|
-
${r.map(t=>`| \`${t}\` | ${
|
|
43
|
-
`)}`}var
|
|
42
|
+
${r.map(t=>`| \`${t}\` | ${fa[t]} |`).join(`
|
|
43
|
+
`)}`}var ga={developer:`# Bridge Worker \u2014 Developer Role
|
|
44
44
|
|
|
45
45
|
You are a **Developer** worker in a multi-agent orchestration system called Bridge.
|
|
46
46
|
|
|
@@ -53,7 +53,7 @@ You are a **Developer** worker in a multi-agent orchestration system called Brid
|
|
|
53
53
|
- After making changes, check the runner agent (role:'runner' in bridge_list_agents) for build errors: bridge_get_agent_output(runnerAgentId)
|
|
54
54
|
- Trigger hot reload after file changes: bridge_send_input(runnerAgentId, "r")
|
|
55
55
|
|
|
56
|
-
${
|
|
56
|
+
${Ee("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
|
|
57
57
|
|
|
58
58
|
You are a **Quality-Obsessed Tech Lead** reviewing code changes in a multi-agent system called Bridge.
|
|
59
59
|
Your identity: Agile, pragmatic, anti-fragile. You ship with confidence or you send it back.
|
|
@@ -137,7 +137,7 @@ If a runner agent exists (bridge_list_agents \u2192 role:'runner'), call bridge_
|
|
|
137
137
|
- One \`bridge_fail_task\` per review cycle \u2014 consolidate all issues into a single message
|
|
138
138
|
- If unsure whether something is a bug or intentional design: flag it as a question, don't reject
|
|
139
139
|
|
|
140
|
-
${
|
|
140
|
+
${Ee("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
|
|
141
141
|
|
|
142
142
|
You are a **Planner** in Bridge. Your job: understand the project, listen to the user, then create a well-structured and verified execution plan.
|
|
143
143
|
|
|
@@ -227,7 +227,7 @@ Show the complete todo list with types and dependency chain. Then stop.
|
|
|
227
227
|
- To close a stale open todo that's already done: \`bridge_complete_task\` with its ID
|
|
228
228
|
- Todo titles must be specific: name the files, endpoints, components \u2014 no vague verbs
|
|
229
229
|
|
|
230
|
-
${
|
|
230
|
+
${Ee("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
|
|
231
231
|
|
|
232
232
|
You are an **Executor** worker in a multi-agent orchestration system called Bridge.
|
|
233
233
|
|
|
@@ -237,7 +237,7 @@ You are an **Executor** worker in a multi-agent orchestration system called Brid
|
|
|
237
237
|
- Capture and report all relevant output
|
|
238
238
|
- Call \`bridge_complete_task\` on success, \`bridge_fail_task\` with error details on failure
|
|
239
239
|
|
|
240
|
-
${
|
|
240
|
+
${Ee("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
|
|
241
241
|
|
|
242
242
|
You are a **Shell** worker in a multi-agent orchestration system called Bridge.
|
|
243
243
|
|
|
@@ -247,7 +247,7 @@ You are a **Shell** worker in a multi-agent orchestration system called Bridge.
|
|
|
247
247
|
- Call \`bridge_complete_task\` when the command exits cleanly
|
|
248
248
|
- Call \`bridge_fail_task\` with the error output if the command fails
|
|
249
249
|
|
|
250
|
-
${
|
|
250
|
+
${Ee("bridge_get_my_task","bridge_complete_task","bridge_fail_task")}`,orchestrator:`# Bridge Orchestrator
|
|
251
251
|
|
|
252
252
|
You are a **Bridge Orchestrator**. Your sole purpose is to decompose specs into todos, delegate them to worker agents, and report results. Nothing else.
|
|
253
253
|
|
|
@@ -340,7 +340,7 @@ Summarize: todos completed, failed, any blockers. List what workers did.
|
|
|
340
340
|
|
|
341
341
|
---
|
|
342
342
|
|
|
343
|
-
${
|
|
343
|
+
${pa("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")}`},ma=`# Bridge Worker \u2014 Reviewer Role (SCRIPTED TEST MODE)
|
|
344
344
|
|
|
345
345
|
You are a test-mode reviewer. DO NOT apply AI judgment. Apply the mechanical rule below.
|
|
346
346
|
|
|
@@ -359,10 +359,10 @@ You are a test-mode reviewer. DO NOT apply AI judgment. Apply the mechanical rul
|
|
|
359
359
|
- Decide solely based on (todo.retryCount ?? 0) > 0
|
|
360
360
|
- This is a signaling mechanic test, not a code quality review
|
|
361
361
|
|
|
362
|
-
${
|
|
363
|
-
`,"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
|
|
364
|
-
`,"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 da(r){try{let e=at(),t=`{BRIDGE_SERVER_URL=${Ne(r.serverUrl)},BRIDGE_TOKEN=${Ne(r.token)},BRIDGE_WORKSPACE_ID=${Ne(r.workspaceId)},BRIDGE_PROJECT_ID=${Ne(r.projectId)},HTTP_MODE="false"}`;return["-c",'mcp_servers.bridge.transport="stdio"',"-c",`mcp_servers.bridge.command=${Ne(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 ua(r){try{if(!r.cwd)return console.warn("[daemon] qwen.mcp.setup.skipped",{reason:"missing_cwd",projectId:r.projectId}),!1;let e=at(),t={cwd:r.cwd,encoding:"utf-8",timeout:5e3,stdio:"pipe"};(0,or.spawnSync)("qwen",["mcp","remove","--scope","project","bridge"],t);let n=(0,or.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 ot=[],cr=!1,ds=!1;function fs(){return cr}function ps(r){if(ds)throw new Error("[daemon] startDaemonConnection called twice \u2014 only one connection manager allowed");if(ds=!0,process.env.BRIDGE_TEST_SCRIPTED_REVIEW!=="1")try{let c=L.default.join(ye.default.homedir(),".jerico","settings.json");V.default.existsSync(c)&&JSON.parse(V.default.readFileSync(c,"utf-8")).testScriptedReview===!0&&(process.env.BRIDGE_TEST_SCRIPTED_REVIEW="1",console.log("[daemon] scripted-review-mode enabled from ~/.jerico/settings.json"))}catch{}process.env.BRIDGE_TEST_SCRIPTED_REVIEW==="1"&&console.log("[daemon] scripted-review-mode ENABLED");let e=Qt(),t=(0,us.createHash)("sha256").update(e.token).digest("hex"),n=null,s=null,i=null,o=0;function l(){s&&(clearTimeout(s),s=null),n=new C(e.server,{headers:{Authorization:`Bearer ${e.token}`}});let c=n,d=null;c.on("open",()=>{cr=!0,console.log("[daemon] ws.connected",{server:e.server}),i=setInterval(()=>{c.readyState===C.OPEN&&c.ping()},Xo);let u=!ls();c.send(JSON.stringify({type:"ready",version:"1.1",name:e.name,spawnHelperBroken:u,liveAgentIds:r.getLiveAgentIds()})),At(e.agentPaths).then(h=>{ot=h,c.readyState===C.OPEN&&c.send(JSON.stringify({type:"agents",list:ot}))}),d=as(h=>{c.readyState===C.OPEN&&c.send(JSON.stringify({type:"system_metrics",daemonId:t,...h}))})}),c.on("message",u=>{let h;try{h=JSON.parse(u.toString())}catch{console.warn("[daemon] Invalid JSON from server, ignoring");return}ha(h,c,r,e)}),c.on("close",u=>{cr=!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),zo();for(let c of re.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 ha(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=ot.find(m=>m.key===r.agentKey);if(!s){e.readyState===C.OPEN&&e.send(JSON.stringify({type:"error",code:"AGENT_NOT_FOUND",message:`Agent '${r.agentKey}' is not installed on this machine`}));return}let i=ae.find(m=>m.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"&&(re.get(r.agentId)?.(),re.set(r.agentId,rr(r.agentId,r.sessionId,(m,S,b)=>{e.readyState===C.OPEN&&e.send(JSON.stringify({type:"panel_token_usage",agentId:m,usedPct:S,usedTokens:b,...ar}))})));else if(i?.assignSessionId){let m=crypto.randomUUID(),S=r.agentKey==="kimi"?"--session":"--session-id";o=[...i.spawnArgs??[],S,m],e.readyState===C.OPEN&&(e.send(JSON.stringify({type:"session_started",agentId:r.agentId,sessionId:m})),console.log("[daemon] session.assigned",{agentId:r.agentId,sessionId:m})),r.agentKey==="claude"&&(re.get(r.agentId)?.(),re.set(r.agentId,rr(r.agentId,m,(b,M,z)=>{e.readyState===C.OPEN&&e.send(JSON.stringify({type:"panel_token_usage",agentId:b,usedPct:M,usedTokens:z,...ar}))})))}else e.readyState===C.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 m=ra(n.server),S=er(r.cwd);if(l={serverUrl:m,token:n.token,workspaceId:Xn(r.workspaceId),projectId:Qn(r.projectId),agentId:r.agentId?zn(r.agentId):void 0,cwd:r.cwd,projectEnv:S.env},r.agentKey==="claude"){let b=na(l);a=b.length>0,c=process.env.BRIDGE_MCP_URL?"http":"stdio",o=[...o,...b]}else if(r.agentKey==="codex"){let b=da(l);a=b.length>0,c="stdio",o=[...o,...b]}else if(r.agentKey==="qwen")a=ua(l),c=a?"stdio":void 0;else if(r.agentKey==="kimi"){let b=la(l);a=b.length>0,c=process.env.BRIDGE_MCP_URL?"http":"stdio",o=[...o,...b]}else a=!1,console.log("[daemon] mcp.config.skipped",{agentId:r.agentId,agentKey:r.agentKey,reason:"unsupported_agent_path"})}let d=ca(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,y=!1,k=!1;if(t.spawn(r.agentId,r.agentKey,s.binaryPath,o,u,h,m=>{p+=m.length;try{let S=Buffer.from(m,"base64").toString("utf-8");if(r.agentKey==="kimi"&&r.role&&!k&&Date.now()-g<3e4&&(/yolo agent/.test(S)||/●/.test(S)||/○/.test(S))){k=!0;let b=hs(r.role);if(b){let M=b.replaceAll("{{PANEL_ID}}",r.agentId),z=Jo(M),De=Buffer.from(z).toString("base64");t.write(r.agentId,De,"orchestrator"),console.log("[daemon] kimi.role.injected",{agentId:r.agentId,role:r.role})}}}catch{}if(!f)try{let S=Buffer.from(m,"base64").toString("utf-8"),b=ea(S).replace(/\x00/g,"").trim();if(b&&(f=ta(b)),r.agentKey==="codex"&&!y&&Date.now()-g<2e4&&/included in your plan for free|let[’']s build together/i.test(b)&&/yes|no|\[y\/n\]|\(y\/n\)|y\/n/i.test(b)){y=!0;let M=Buffer.from("y").toString("base64");t.write(r.agentId,M,"orchestrator"),console.log("[daemon] codex.onboarding.auto_ack",{agentId:r.agentId})}}catch{}e.readyState===C.OPEN&&e.send(JSON.stringify({type:"output",agentId:r.agentId,data:m}))},(m,S)=>{let b=Date.now()-g,M=b<=Qo;console.log("[daemon] pty.spawn.result",{agentId:r.agentId,agentKey:r.agentKey,daemonId:r.daemonId,exitCode:m,signal:S,uptimeMs:b,earlyExit:M,outputBytes:p,firstOutputSnippet:f||void 0}),M&&e.readyState===C.OPEN&&e.send(JSON.stringify({type:"error",code:"SPAWN_FAILED",message:`Early exit: agent=${r.agentKey} code=${m??"null"} signal=${S??"null"} snippet="${f||"no output"}"`})),e.readyState===C.OPEN&&e.send(JSON.stringify({type:"exit",agentId:r.agentId,exitCode:m,signal:S}))},l))e.readyState===C.OPEN&&e.send(JSON.stringify({type:"mcp_status",agentId:r.agentId,mcpConfigured:a,transport:a?c:void 0,projectId:l?.projectId}));else{let S=t.getLastError(r.agentId)?.includes("posix_spawnp failed")&&Yo(r.agentKey);e.readyState===C.OPEN&&(S?e.send(JSON.stringify({type:"error",code:"SPAWN_HELPER_BROKEN",message:"node-pty spawn-helper is not executable. Upgrade bridge-agent to v0.2.10+."})):e.send(JSON.stringify({type:"error",code:"SPAWN_FAILED",message:`Failed to spawn panel ${r.agentId}`})))}break}case"input":t.write(r.agentId,r.data,r.source);break;case"kill":re.get(r.agentId)?.(),re.delete(r.agentId),t.kill(r.agentId,r.force);break;case"resize":t.resize(r.agentId,r.cols,r.rows);break;case"detect_agents":At(n.agentPaths).then(s=>{ot=s,e.readyState===C.OPEN&&e.send(JSON.stringify({type:"agents",list:s}))});break;case"dir_list":{let s=ye.default.homedir(),i=(r.path||"~").replace(/^~/,s),o=L.default.resolve(i);if(o!==s&&!o.startsWith(s+L.default.sep)){e.readyState===C.OPEN&&e.send(JSON.stringify({type:"error",code:"INVALID_MSG",message:"Path outside home directory"}));return}try{let l=V.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===C.OPEN&&e.send(JSON.stringify({type:"dir_list_result",requestId:r.requestId,path:o,entries:l}))}catch(l){e.readyState===C.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 ms="com.jerico.bridge-agent.plist",_s=P.default.join((0,J.homedir)(),"Library","LaunchAgents"),ct=P.default.join(_s,ms),lr=P.default.join((0,J.homedir)(),"bridge-daemon.log"),dr=P.default.join((0,J.homedir)(),"bridge-daemon.err.log"),ne=P.default.join((0,J.homedir)(),".bridge","daemon.lock");function fa(){let r=[...process.env.npm_config_global_prefix?[P.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 pa(){try{(0,A.mkdirSync)(P.default.dirname(ne),{recursive:!0})}catch{}if((0,A.existsSync)(ne))try{let{pid:r}=JSON.parse((0,A.readFileSync)(ne,"utf8"));if(r&&process.kill(r,0))return console.warn("[bridge] daemon.already.running",{pid:r,lock:ne}),!1;(0,A.unlinkSync)(ne)}catch{try{(0,A.unlinkSync)(ne)}catch{}}try{let r=(0,A.openSync)(ne,"wx");return(0,A.writeSync)(r,JSON.stringify({pid:process.pid,startedAt:Date.now()})),(0,A.closeSync)(r),!0}catch{return!1}}function ys(){let r=["claude","codex","qwen","ollama","aider","python3","node","bun","sh"],e=new Set;e.add(P.default.join((0,J.homedir)(),".nvm","versions","node",`v${process.versions.node}`,"bin")),e.add(P.default.join((0,J.homedir)(),".local","bin")),e.add("/opt/homebrew/bin"),e.add("/usr/local/bin"),e.add("/usr/bin"),e.add("/bin");let t=process.env.PATH??"";for(let s of t.split(":"))s&&!s.startsWith("/dev")&&!s.startsWith("/tmp")&&e.add(s);for(let s of r)try{let i=(0,se.execSync)(`which ${s} 2>/dev/null`,{stdio:"pipe"}).toString().trim();i&&i.startsWith("/")&&e.add(P.default.dirname(i))}catch{}let n=P.default.join((0,J.homedir)(),".vscode","extensions");try{let s=(0,se.execSync)(`ls "${n}" 2>/dev/null`,{stdio:"pipe"}).toString().split(`
|
|
365
|
-
`);for(let i of s)if(i.startsWith("anthropic.claude-code-")){let o=
|
|
362
|
+
${Ee("bridge_get_my_task","bridge_complete_task","bridge_fail_task","bridge_get_todo_context")}`;function ms(r){let e=process.env.BRIDGE_TEST_SCRIPTED_REVIEW,t=r==="reviewer"&&e==="1";return console.log("[daemon] getRoleSystemPrompt.called",{role:r,envFlag:e,returning:t?"SCRIPTED":"NORMAL"}),t?ma:ga[r]}function _a(r,e,t){if(!e)return[];let n=ms(e);if(!n)return[];if(r==="claude")try{let s=$.default.join(ie.default.tmpdir(),`bridge-role-${t}.md`),i=n.replaceAll("{{PANEL_ID}}",t);return W.default.writeFileSync(s,i+`
|
|
363
|
+
`,"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 Be(r){return`"${r.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}function ya(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:ut(),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=$.default.join(ie.default.tmpdir(),`bridge-mcp-kimi-${r.agentId??r.projectId}.json`);return W.default.writeFileSync(n,JSON.stringify(t,null,2)+`
|
|
364
|
+
`,"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 ba(r){try{let e=ut(),t=`{BRIDGE_SERVER_URL=${Be(r.serverUrl)},BRIDGE_TOKEN=${Be(r.token)},BRIDGE_WORKSPACE_ID=${Be(r.workspaceId)},BRIDGE_PROJECT_ID=${Be(r.projectId)},HTTP_MODE="false"}`;return["-c",'mcp_servers.bridge.transport="stdio"',"-c",`mcp_servers.bridge.command=${Be(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 wa(r){try{return W.default.statSync(r).isDirectory()}catch{return!1}}function ar(r,e){try{return e(r)}catch{return!1}}function Sa(r,e,t,n,s=wa){let i=n?.[r];if(i&&ar(i,s))return{path:i,source:"local_override"};if(t){if(ar(t,s))return{path:t,source:"daemon_override"};console.warn("[daemon] spawn.cwd.daemon_override_missing",{projectId:r,daemonLocalPath:t,hint:`Run: jerico link-project ${r} <local-path>`})}return e&&ar(e,s)?{path:e,source:"server_project"}:(console.warn("[daemon] spawn.cwd.fallback_home",{projectId:r,serverCwd:e,localOverride:i,daemonLocalPath:t??void 0,hint:`Set projectPaths["${r}"] in ~/.jerico/settings.json`}),{path:ie.default.homedir(),source:"fallback_home"})}function Ea(r){try{if(!r.cwd)return console.warn("[daemon] qwen.mcp.setup.skipped",{reason:"missing_cwd",projectId:r.projectId}),!1;let e=ut(),t={cwd:r.cwd,encoding:"utf-8",timeout:5e3,stdio:"pipe"};(0,cr.spawnSync)("qwen",["mcp","remove","--scope","project","bridge"],t);let n=(0,cr.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 dt=[],dr=!1,ps=!1;function _s(){return dr}function ys(r){if(ps)throw new Error("[daemon] startDaemonConnection called twice \u2014 only one connection manager allowed");if(ps=!0,process.env.BRIDGE_TEST_SCRIPTED_REVIEW!=="1")try{let c=$.default.join(ie.default.homedir(),".jerico","settings.json");W.default.existsSync(c)&&JSON.parse(W.default.readFileSync(c,"utf-8")).testScriptedReview===!0&&(process.env.BRIDGE_TEST_SCRIPTED_REVIEW="1",console.log("[daemon] scripted-review-mode enabled from ~/.jerico/settings.json"))}catch{}process.env.BRIDGE_TEST_SCRIPTED_REVIEW==="1"&&console.log("[daemon] scripted-review-mode ENABLED");let e=ne(),t=(0,gs.createHash)("sha256").update(e.token).digest("hex"),n=null,s=null,i=null,o=0;function l(){s&&(clearTimeout(s),s=null),n=new C(e.server,{headers:{Authorization:`Bearer ${e.token}`}});let c=n,d=null;c.on("open",()=>{dr=!0,console.log("[daemon] ws.connected",{server:e.server}),i=setInterval(()=>{c.readyState===C.OPEN&&c.ping()},oa);let u=!fs();c.send(JSON.stringify({type:"ready",version:"1.1",name:e.name,spawnHelperBroken:u,liveAgentIds:r.getLiveAgentIds()})),Nt(e.agentPaths).then(h=>{dt=h,c.readyState===C.OPEN&&c.send(JSON.stringify({type:"agents",list:dt}))}),d=us(h=>{c.readyState===C.OPEN&&c.send(JSON.stringify({type:"system_metrics",daemonId:t,...h}))})}),c.on("message",u=>{let h;try{h=JSON.parse(u.toString())}catch{console.warn("[daemon] Invalid JSON from server, ignoring");return}va(h,c,r,e)}),c.on("close",u=>{dr=!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),ia();for(let c of se.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 va(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=dt.find(y=>y.key===r.agentKey);if(!s){e.readyState===C.OPEN&&e.send(JSON.stringify({type:"error",code:"AGENT_NOT_FOUND",message:`Agent '${r.agentKey}' is not installed on this machine`}));return}let i=ue.find(y=>y.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"&&(se.get(r.agentId)?.(),se.set(r.agentId,nr(r.agentId,r.sessionId,(y,w,k)=>{e.readyState===C.OPEN&&e.send(JSON.stringify({type:"panel_token_usage",agentId:y,usedPct:w,usedTokens:k,...lr}))})));else if(i?.assignSessionId){let y=crypto.randomUUID(),w=r.agentKey==="kimi"?"--session":"--session-id";o=[...i.spawnArgs??[],w,y],e.readyState===C.OPEN&&(e.send(JSON.stringify({type:"session_started",agentId:r.agentId,sessionId:y})),console.log("[daemon] session.assigned",{agentId:r.agentId,sessionId:y})),r.agentKey==="claude"&&(se.get(r.agentId)?.(),se.set(r.agentId,nr(r.agentId,y,(k,N,P)=>{e.readyState===C.OPEN&&e.send(JSON.stringify({type:"panel_token_usage",agentId:k,usedPct:N,usedTokens:P,...lr}))})))}else e.readyState===C.OPEN&&e.send(JSON.stringify({type:"session_started",agentId:r.agentId,sessionId:crypto.randomUUID()}));let l,a=!1,c,d;if(r.projectId&&r.workspaceId){let y=ua(n.server),w=Sa(r.projectId,r.cwd,r.daemonLocalPath,n.projectPaths),k=w.path;d=w.source;let N=tr(k);if(l={serverUrl:y,token:n.token,workspaceId:ts(r.workspaceId),projectId:rs(r.projectId),agentId:r.agentId?es(r.agentId):void 0,cwd:k,projectEnv:N.env},r.agentKey==="claude"){let P=ha(l);a=P.length>0,c=process.env.BRIDGE_MCP_URL?"http":"stdio",o=[...o,...P]}else if(r.agentKey==="codex"){let P=ba(l);a=P.length>0,c="stdio",o=[...o,...P]}else if(r.agentKey==="qwen")a=Ea(l),c=a?"stdio":void 0;else if(r.agentKey==="kimi"){let P=ya(l);a=P.length>0,c=process.env.BRIDGE_MCP_URL?"http":"stdio",o=[...o,...P]}else a=!1,console.log("[daemon] mcp.config.skipped",{agentId:r.agentId,agentKey:r.agentKey,reason:"unsupported_agent_path"})}let u=_a(r.agentKey,r.role,r.agentId);u.length>0&&(o=[...o,...u]);let h=Math.max(1,Math.min(500,r.cols)),g=Math.max(1,Math.min(500,r.rows)),p=Date.now(),f="",m=0,E=!1,b=!1;if(t.spawn(r.agentId,r.agentKey,s.binaryPath,o,h,g,y=>{m+=y.length;try{let w=Buffer.from(y,"base64").toString("utf-8");if(r.agentKey==="kimi"&&r.role&&!b&&Date.now()-p<3e4&&(/yolo agent/.test(w)||/●/.test(w)||/○/.test(w))){b=!0;let k=ms(r.role);if(k){let N=k.replaceAll("{{PANEL_ID}}",r.agentId),P=sa(N),ve=Buffer.from(P).toString("base64");t.write(r.agentId,ve,"orchestrator"),console.log("[daemon] kimi.role.injected",{agentId:r.agentId,role:r.role})}}}catch{}if(!f)try{let w=Buffer.from(y,"base64").toString("utf-8"),k=la(w).replace(/\x00/g,"").trim();if(k&&(f=da(k)),r.agentKey==="codex"&&!E&&Date.now()-p<2e4&&/included in your plan for free|let[’']s build together/i.test(k)&&/yes|no|\[y\/n\]|\(y\/n\)|y\/n/i.test(k)){E=!0;let N=Buffer.from("y").toString("base64");t.write(r.agentId,N,"orchestrator"),console.log("[daemon] codex.onboarding.auto_ack",{agentId:r.agentId})}}catch{}e.readyState===C.OPEN&&e.send(JSON.stringify({type:"output",agentId:r.agentId,data:y}))},(y,w)=>{let k=Date.now()-p,N=k<=aa;console.log("[daemon] pty.spawn.result",{agentId:r.agentId,agentKey:r.agentKey,daemonId:r.daemonId,exitCode:y,signal:w,uptimeMs:k,earlyExit:N,outputBytes:m,firstOutputSnippet:f||void 0}),N&&e.readyState===C.OPEN&&e.send(JSON.stringify({type:"error",code:"SPAWN_FAILED",message:`Early exit: agent=${r.agentKey} code=${y??"null"} signal=${w??"null"} snippet="${f||"no output"}"`})),e.readyState===C.OPEN&&e.send(JSON.stringify({type:"exit",agentId:r.agentId,exitCode:y,signal:w}))},l))e.readyState===C.OPEN&&e.send(JSON.stringify({type:"mcp_status",agentId:r.agentId,mcpConfigured:a,transport:a?c:void 0,projectId:l?.projectId,effectiveCwd:l?.cwd,cwdSource:d}));else{let w=t.getLastError(r.agentId)?.includes("posix_spawnp failed")&&na(r.agentKey);e.readyState===C.OPEN&&(w?e.send(JSON.stringify({type:"error",code:"SPAWN_HELPER_BROKEN",message:"node-pty spawn-helper is not executable. Upgrade bridge-agent to v0.2.10+."})):e.send(JSON.stringify({type:"error",code:"SPAWN_FAILED",message:`Failed to spawn panel ${r.agentId}`})))}break}case"input":t.write(r.agentId,r.data,r.source);break;case"kill":se.get(r.agentId)?.(),se.delete(r.agentId),t.kill(r.agentId,r.force);break;case"resize":t.resize(r.agentId,r.cols,r.rows);break;case"detect_agents":Nt(n.agentPaths).then(s=>{dt=s,e.readyState===C.OPEN&&e.send(JSON.stringify({type:"agents",list:s}))});break;case"dir_list":{let s=ie.default.homedir(),i=(r.path||"~").replace(/^~/,s),o=$.default.resolve(i);if(o!==s&&!o.startsWith(s+$.default.sep)){e.readyState===C.OPEN&&e.send(JSON.stringify({type:"error",code:"INVALID_MSG",message:"Path outside home directory"}));return}try{let l=W.default.readdirSync(o,{withFileTypes:!0}).filter(a=>a.isDirectory()&&!a.name.startsWith(".")).map(a=>({name:a.name,path:$.default.join(o,a.name)})).sort((a,c)=>a.name.localeCompare(c.name));e.readyState===C.OPEN&&e.send(JSON.stringify({type:"dir_list_result",requestId:r.requestId,path:o,entries:l}))}catch(l){e.readyState===C.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 ws="com.jerico.bridge-agent.plist",Ss=D.default.join((0,X.homedir)(),"Library","LaunchAgents"),ht=D.default.join(Ss,ws),ur=D.default.join((0,X.homedir)(),"bridge-daemon.log"),hr=D.default.join((0,X.homedir)(),"bridge-daemon.err.log"),oe=D.default.join((0,X.homedir)(),".bridge","daemon.lock");function xa(){let r=[...process.env.npm_config_global_prefix?[D.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 ka(){try{(0,A.mkdirSync)(D.default.dirname(oe),{recursive:!0})}catch{}if((0,A.existsSync)(oe))try{let{pid:r}=JSON.parse((0,A.readFileSync)(oe,"utf8"));if(r&&process.kill(r,0))return console.warn("[bridge] daemon.already.running",{pid:r,lock:oe}),!1;(0,A.unlinkSync)(oe)}catch{try{(0,A.unlinkSync)(oe)}catch{}}try{let r=(0,A.openSync)(oe,"wx");return(0,A.writeSync)(r,JSON.stringify({pid:process.pid,startedAt:Date.now()})),(0,A.closeSync)(r),!0}catch{return!1}}function Es(){let r=["claude","codex","qwen","ollama","aider","python3","node","bun","sh"],e=new Set;e.add(D.default.join((0,X.homedir)(),".nvm","versions","node",`v${process.versions.node}`,"bin")),e.add(D.default.join((0,X.homedir)(),".local","bin")),e.add("/opt/homebrew/bin"),e.add("/usr/local/bin"),e.add("/usr/bin"),e.add("/bin");let t=process.env.PATH??"";for(let s of t.split(":"))s&&!s.startsWith("/dev")&&!s.startsWith("/tmp")&&e.add(s);for(let s of r)try{let i=(0,ae.execSync)(`which ${s} 2>/dev/null`,{stdio:"pipe"}).toString().trim();i&&i.startsWith("/")&&e.add(D.default.dirname(i))}catch{}let n=D.default.join((0,X.homedir)(),".vscode","extensions");try{let s=(0,ae.execSync)(`ls "${n}" 2>/dev/null`,{stdio:"pipe"}).toString().split(`
|
|
365
|
+
`);for(let i of s)if(i.startsWith("anthropic.claude-code-")){let o=D.default.join(n,i,"resources","native-binary");(0,A.existsSync)(o)&&e.add(o)}}catch{}return[...e].join(":")}function Oa(r){try{(0,ae.execSync)(`mkdir -p "${Ss}"`,{stdio:"pipe"})}catch{}let e=Es(),t=`<?xml version="1.0" encoding="UTF-8"?>
|
|
366
366
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
367
367
|
<plist version="1.0">
|
|
368
368
|
<dict>
|
|
@@ -378,9 +378,9 @@ ${_e("bridge_get_my_task","bridge_complete_task","bridge_fail_task","bridge_get_
|
|
|
378
378
|
<key>KeepAlive</key>
|
|
379
379
|
<true/>
|
|
380
380
|
<key>StandardOutPath</key>
|
|
381
|
-
<string>${
|
|
381
|
+
<string>${ur}</string>
|
|
382
382
|
<key>StandardErrorPath</key>
|
|
383
|
-
<string>${
|
|
383
|
+
<string>${hr}</string>
|
|
384
384
|
<key>EnvironmentVariables</key>
|
|
385
385
|
<dict>
|
|
386
386
|
<key>PATH</key>
|
|
@@ -390,6 +390,6 @@ ${_e("bridge_get_my_task","bridge_complete_task","bridge_fail_task","bridge_get_
|
|
|
390
390
|
</dict>
|
|
391
391
|
</dict>
|
|
392
392
|
</plist>
|
|
393
|
-
`;try{return(0,A.writeFileSync)(
|
|
394
|
-
`)),
|
|
395
|
-
`)&&(process.stdin.pause(),r(e.trim()))}),process.stdin.resume()})}async function
|
|
393
|
+
`;try{return(0,A.writeFileSync)(ht,t,"utf-8"),!0}catch(n){return console.warn("[bridge] launchd.plist.write.failed",{error:String(n)}),!1}}function Ca(){try{return(0,ae.execSync)(`launchctl kickstart -kp gui/$(id -u)/${ws} 2>/dev/null; launchctl unload "${ht}" 2>/dev/null; launchctl load "${ht}"`,{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 Ia(r){try{let e=(0,ae.spawn)(r,["start"],{detached:!0,stdio:"ignore",env:{...process.env,PATH:Es(),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:ur})):console.error("[bridge] background.failed \u2014 check: tail -f",{log:hr})},2e3)}catch(e){console.error("[bridge] background.spawn.failed",{error:String(e)})}}function Aa(){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 Ta(){let r=new Ve;ys(r);let e=parseInt(process.env.HEALTH_PORT??"3101",10),t=(0,bs.createServer)((n,s)=>{let i=_s(),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 vs(){let r=process.env.BRIDGE_DAEMON==="1"||process.argv.includes("--daemon");if(console.log("[bridge] Starting bridge-agent daemon..."),r){Ta();return}ka()||(console.warn("[bridge] start.aborted.already.running"),process.exit(1));let e=xa(),t=Oa(e),{ok:n,permissionDenied:s}=t?Ca():{ok:!1,permissionDenied:!1};if(n){console.log("[bridge] launchd.ok \u2014 managed, auto-restart enabled"),console.log("[bridge] logs: tail -f",{out:ur,err:hr}),Aa(),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) "${ht}"`),console.warn(`[bridge] Falling back to background process...
|
|
394
|
+
`)),Ia(e),process.exit(0)}var xs=_(require("https")),ks=_(require("http"));we();function Pa(r){return(r??"").trim()}async function Os(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=Pa(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 Na()),s||(console.error("[bridge] No token provided. Exiting."),process.exit(1)),await Ra(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");Le({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 Na(){return new Promise(r=>{process.stdout.write("Token: ");let e="";process.stdin.setEncoding("utf-8"),process.stdin.on("data",t=>{e+=t,e.includes(`
|
|
395
|
+
`)&&(process.stdin.pause(),r(e.trim()))}),process.stdin.resume()})}async function Ra(r,e){return new Promise(t=>{let n=new URL("/api/tokens/validate",r),s=n.protocol==="https:",i=s?xs.default:ks.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 Cs=_(require("https")),Is=_(require("http")),fr=_(require("fs")),pr=_(require("path")),As=require("node:crypto");we();function Da(r){return r.replace(/^wss?:/,e=>e==="wss:"?"https:":"http:").replace(/\/ws(\/.*)?$/,"")}async function Ts(r,e,t){let n=ne(),s=(0,As.createHash)("sha256").update(n.token).digest("hex"),i=Da(n.server),o=pr.default.resolve(t);pr.default.isAbsolute(o)||(console.error("[bridge] link-project: path must be absolute"),process.exit(1)),fr.default.existsSync(o)||(console.error("[bridge] link-project: path does not exist:",o),process.exit(1)),fr.default.statSync(o).isDirectory()||(console.error("[bridge] link-project: path must be a directory:",o),process.exit(1));let a=new URL(`/api/workspaces/${r}/projects/${e}/machine-paths`,i),c=a.protocol==="https:",d=c?Cs.default:Is.default;n.projectPaths={...n.projectPaths??{},[e]:o},Le(n),console.log("[cli] link-project.local_json_written",{projectId:e,path:o});let u=JSON.stringify({daemonId:s,localPath:o}),h=await new Promise((g,p)=>{let f=d.request({hostname:a.hostname,port:a.port||(c?443:80),path:a.pathname,method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${n.token}`,"Content-Length":Buffer.byteLength(u)}},m=>{let E="";m.on("data",b=>{E+=b}),m.on("end",()=>{if(m.statusCode===200)g(200);else{try{let b=JSON.parse(E);console.error("[bridge] link-project failed:",b.error??`HTTP ${m.statusCode}`)}catch{console.error("[bridge] link-project failed:",`HTTP ${m.statusCode}`)}g(m.statusCode??0)}})});f.on("error",m=>{p(m)}),f.write(u),f.end()});h===200?(console.log("[cli] link-project.server_success",{projectId:e}),console.log("[cli] link-project.success (dual-write)"),console.log(` workspace: ${r}`),console.log(` project: ${e}`),console.log(` daemon: ${s.slice(0,16)}\u2026`),console.log(` path: ${o}`),console.log("[cli] Next spawn for this project will use the linked path."),process.exit(0)):(console.warn("[cli] link-project.server_fail",{projectId:e,statusCode:h}),console.log("[cli] Local override still active \u2014 path will work on this machine"),process.exit(0))}we();function La(r){return r.replace(/^wss?:/,e=>e==="wss:"?"https:":"http:").replace(/\/ws(\/.*)?$/,"")}async function Ps(){let r=ne(),e=La(r.server),t=await fetch(`${e}/api/admin/cleanup-orphans`,{method:"POST",headers:{Authorization:`Bearer ${r.token}`,"Content-Type":"application/json"},body:"{}"});t.ok||(console.error(`[cli] cleanup-orphans: HTTP ${t.status}`),process.exit(1));let{deleted:n}=await t.json();console.log(`[cli] cleanup-orphans: deleted ${n} orphaned path ${n===1?"entry":"entries"}`),process.exit(0)}var ce=new Ir;ce.name("bridge-agent").description("Bridge local agent \u2014 connects your AI tools to Jerico").version("0.3.3");ce.command("start").description("Start the bridge-agent daemon").action(()=>{vs()});ce.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=>{Os(r.server,!r.browser,r.token)});ce.command("link-project <workspace-id> <project-id> <local-path>").description("Link a local directory to a project for this machine (Issue #152)").action((r,e,t)=>{Ts(r,e,t)});ce.command("cleanup-orphans").description("Remove orphaned daemon_project_paths rows for this user").action(()=>{Ps()});ce.command("status").description("Show connection status").action(async()=>{try{let{loadConfig:r}=await Promise.resolve().then(()=>(we(),ss)),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")}});ce.parse();
|