botparty 0.0.28 → 0.0.30

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/index.js +100 -83
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -1,59 +1,59 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire as __createRequire } from "module";
3
3
  const require = __createRequire(import.meta.url);
4
- var er=Object.create;var Ze=Object.defineProperty;var tr=Object.getOwnPropertyDescriptor;var rr=Object.getOwnPropertyNames;var nr=Object.getPrototypeOf,ir=Object.prototype.hasOwnProperty;var z=(t=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(t,{get:(e,r)=>(typeof require<"u"?require:e)[r]}):t)(function(t){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+t+'" is not supported')});var H=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var sr=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of rr(e))!ir.call(t,i)&&i!==r&&Ze(t,i,{get:()=>e[i],enumerable:!(n=tr(e,i))||n.enumerable});return t};var or=(t,e,r)=>(r=t!=null?er(nr(t)):{},sr(e||!t||!t.__esModule?Ze(r,"default",{value:t,enumerable:!0}):r,t));var ee=H(Pe=>{var ae=class extends Error{constructor(e,r,n){super(n),Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name,this.code=r,this.exitCode=e,this.nestedError=void 0}},Te=class extends ae{constructor(e){super(1,"commander.invalidArgument",e),Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name}};Pe.CommanderError=ae;Pe.InvalidArgumentError=Te});var ce=H(xe=>{var{InvalidArgumentError:bn}=ee(),Re=class{constructor(e,r){switch(this.description=r||"",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.endsWith("...")&&(this.variadic=!0,this._name=this._name.slice(0,-3))}name(){return this._name}_collectValue(e,r){return r===this.defaultValue||!Array.isArray(r)?[e]:(r.push(e),r)}default(e,r){return this.defaultValue=e,this.defaultValueDescription=r,this}argParser(e){return this.parseArg=e,this}choices(e){return this.argChoices=e.slice(),this.parseArg=(r,n)=>{if(!this.argChoices.includes(r))throw new bn(`Allowed choices are ${this.argChoices.join(", ")}.`);return this.variadic?this._collectValue(r,n):r},this}argRequired(){return this.required=!0,this}argOptional(){return this.required=!1,this}};function En(t){let e=t.name()+(t.variadic===!0?"...":"");return t.required?"<"+e+">":"["+e+"]"}xe.Argument=Re;xe.humanReadableArgName=En});var He=H(De=>{var{humanReadableArgName:An}=ce(),Ie=class{constructor(){this.helpWidth=void 0,this.minWidthToWrap=40,this.sortSubcommands=!1,this.sortOptions=!1,this.showGlobalOptions=!1}prepareContext(e){this.helpWidth=this.helpWidth??e.helpWidth??80}visibleCommands(e){let r=e.commands.filter(i=>!i._hidden),n=e._getHelpCommand();return n&&!n._hidden&&r.push(n),this.sortSubcommands&&r.sort((i,s)=>i.name().localeCompare(s.name())),r}compareOptions(e,r){let n=i=>i.short?i.short.replace(/^-/,""):i.long.replace(/^--/,"");return n(e).localeCompare(n(r))}visibleOptions(e){let r=e.options.filter(i=>!i.hidden),n=e._getHelpOption();if(n&&!n.hidden){let i=n.short&&e._findOption(n.short),s=n.long&&e._findOption(n.long);!i&&!s?r.push(n):n.long&&!s?r.push(e.createOption(n.long,n.description)):n.short&&!i&&r.push(e.createOption(n.short,n.description))}return this.sortOptions&&r.sort(this.compareOptions),r}visibleGlobalOptions(e){if(!this.showGlobalOptions)return[];let r=[];for(let n=e.parent;n;n=n.parent){let i=n.options.filter(s=>!s.hidden);r.push(...i)}return this.sortOptions&&r.sort(this.compareOptions),r}visibleArguments(e){return e._argsDescription&&e.registeredArguments.forEach(r=>{r.description=r.description||e._argsDescription[r.name()]||""}),e.registeredArguments.find(r=>r.description)?e.registeredArguments:[]}subcommandTerm(e){let r=e.registeredArguments.map(n=>An(n)).join(" ");return e._name+(e._aliases[0]?"|"+e._aliases[0]:"")+(e.options.length?" [options]":"")+(r?" "+r:"")}optionTerm(e){return e.flags}argumentTerm(e){return e.name()}longestSubcommandTermLength(e,r){return r.visibleCommands(e).reduce((n,i)=>Math.max(n,this.displayWidth(r.styleSubcommandTerm(r.subcommandTerm(i)))),0)}longestOptionTermLength(e,r){return r.visibleOptions(e).reduce((n,i)=>Math.max(n,this.displayWidth(r.styleOptionTerm(r.optionTerm(i)))),0)}longestGlobalOptionTermLength(e,r){return r.visibleGlobalOptions(e).reduce((n,i)=>Math.max(n,this.displayWidth(r.styleOptionTerm(r.optionTerm(i)))),0)}longestArgumentTermLength(e,r){return r.visibleArguments(e).reduce((n,i)=>Math.max(n,this.displayWidth(r.styleArgumentTerm(r.argumentTerm(i)))),0)}commandUsage(e){let r=e._name;e._aliases[0]&&(r=r+"|"+e._aliases[0]);let n="";for(let i=e.parent;i;i=i.parent)n=i.name()+" "+n;return n+r+" "+e.usage()}commandDescription(e){return e.description()}subcommandDescription(e){return e.summary()||e.description()}optionDescription(e){let r=[];if(e.argChoices&&r.push(`choices: ${e.argChoices.map(n=>JSON.stringify(n)).join(", ")}`),e.defaultValue!==void 0&&(e.required||e.optional||e.isBoolean()&&typeof e.defaultValue=="boolean")&&r.push(`default: ${e.defaultValueDescription||JSON.stringify(e.defaultValue)}`),e.presetArg!==void 0&&e.optional&&r.push(`preset: ${JSON.stringify(e.presetArg)}`),e.envVar!==void 0&&r.push(`env: ${e.envVar}`),r.length>0){let n=`(${r.join(", ")})`;return e.description?`${e.description} ${n}`:n}return e.description}argumentDescription(e){let r=[];if(e.argChoices&&r.push(`choices: ${e.argChoices.map(n=>JSON.stringify(n)).join(", ")}`),e.defaultValue!==void 0&&r.push(`default: ${e.defaultValueDescription||JSON.stringify(e.defaultValue)}`),r.length>0){let n=`(${r.join(", ")})`;return e.description?`${e.description} ${n}`:n}return e.description}formatItemList(e,r,n){return r.length===0?[]:[n.styleTitle(e),...r,""]}groupItems(e,r,n){let i=new Map;return e.forEach(s=>{let o=n(s);i.has(o)||i.set(o,[])}),r.forEach(s=>{let o=n(s);i.has(o)||i.set(o,[]),i.get(o).push(s)}),i}formatHelp(e,r){let n=r.padWidth(e,r),i=r.helpWidth??80;function s(d,h){return r.formatItem(d,n,h,r)}let o=[`${r.styleTitle("Usage:")} ${r.styleUsage(r.commandUsage(e))}`,""],a=r.commandDescription(e);a.length>0&&(o=o.concat([r.boxWrap(r.styleCommandDescription(a),i),""]));let c=r.visibleArguments(e).map(d=>s(r.styleArgumentTerm(r.argumentTerm(d)),r.styleArgumentDescription(r.argumentDescription(d))));if(o=o.concat(this.formatItemList("Arguments:",c,r)),this.groupItems(e.options,r.visibleOptions(e),d=>d.helpGroupHeading??"Options:").forEach((d,h)=>{let y=d.map(O=>s(r.styleOptionTerm(r.optionTerm(O)),r.styleOptionDescription(r.optionDescription(O))));o=o.concat(this.formatItemList(h,y,r))}),r.showGlobalOptions){let d=r.visibleGlobalOptions(e).map(h=>s(r.styleOptionTerm(r.optionTerm(h)),r.styleOptionDescription(r.optionDescription(h))));o=o.concat(this.formatItemList("Global Options:",d,r))}return this.groupItems(e.commands,r.visibleCommands(e),d=>d.helpGroup()||"Commands:").forEach((d,h)=>{let y=d.map(O=>s(r.styleSubcommandTerm(r.subcommandTerm(O)),r.styleSubcommandDescription(r.subcommandDescription(O))));o=o.concat(this.formatItemList(h,y,r))}),o.join(`
5
- `)}displayWidth(e){return Ot(e).length}styleTitle(e){return e}styleUsage(e){return e.split(" ").map(r=>r==="[options]"?this.styleOptionText(r):r==="[command]"?this.styleSubcommandText(r):r[0]==="["||r[0]==="<"?this.styleArgumentText(r):this.styleCommandText(r)).join(" ")}styleCommandDescription(e){return this.styleDescriptionText(e)}styleOptionDescription(e){return this.styleDescriptionText(e)}styleSubcommandDescription(e){return this.styleDescriptionText(e)}styleArgumentDescription(e){return this.styleDescriptionText(e)}styleDescriptionText(e){return e}styleOptionTerm(e){return this.styleOptionText(e)}styleSubcommandTerm(e){return e.split(" ").map(r=>r==="[options]"?this.styleOptionText(r):r[0]==="["||r[0]==="<"?this.styleArgumentText(r):this.styleSubcommandText(r)).join(" ")}styleArgumentTerm(e){return this.styleArgumentText(e)}styleOptionText(e){return e}styleArgumentText(e){return e}styleSubcommandText(e){return e}styleCommandText(e){return e}padWidth(e,r){return Math.max(r.longestOptionTermLength(e,r),r.longestGlobalOptionTermLength(e,r),r.longestSubcommandTermLength(e,r),r.longestArgumentTermLength(e,r))}preformatted(e){return/\n[^\S\r\n]/.test(e)}formatItem(e,r,n,i){let o=" ".repeat(2);if(!n)return o+e;let a=e.padEnd(r+e.length-i.displayWidth(e)),c=2,l=(this.helpWidth??80)-r-c-2,d;return l<this.minWidthToWrap||i.preformatted(n)?d=n:d=i.boxWrap(n,l).replace(/\n/g,`
6
- `+" ".repeat(r+c)),o+a+" ".repeat(c)+d.replace(/\n/g,`
7
- ${o}`)}boxWrap(e,r){if(r<this.minWidthToWrap)return e;let n=e.split(/\r\n|\n/),i=/[\s]*[^\s]+/g,s=[];return n.forEach(o=>{let a=o.match(i);if(a===null){s.push("");return}let c=[a.shift()],u=this.displayWidth(c[0]);a.forEach(l=>{let d=this.displayWidth(l);if(u+d<=r){c.push(l),u+=d;return}s.push(c.join(""));let h=l.trimStart();c=[h],u=this.displayWidth(h)}),s.push(c.join(""))}),s.join(`
8
- `)}};function Ot(t){let e=/\x1b\[\d*(;\d*)*m/g;return t.replace(e,"")}De.Help=Ie;De.stripColor=Ot});var Ke=H(Ne=>{var{InvalidArgumentError:_n}=ee(),Ue=class{constructor(e,r){this.flags=e,this.description=r||"",this.required=e.includes("<"),this.optional=e.includes("["),this.variadic=/\w\.\.\.[>\]]$/.test(e),this.mandatory=!1;let n=Sn(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,this.helpGroupHeading=void 0}default(e,r){return this.defaultValue=e,this.defaultValueDescription=r,this}preset(e){return this.presetArg=e,this}conflicts(e){return this.conflictsWith=this.conflictsWith.concat(e),this}implies(e){let r=e;return typeof e=="string"&&(r={[e]:!0}),this.implied=Object.assign(this.implied||{},r),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}_collectValue(e,r){return r===this.defaultValue||!Array.isArray(r)?[e]:(r.push(e),r)}choices(e){return this.argChoices=e.slice(),this.parseArg=(r,n)=>{if(!this.argChoices.includes(r))throw new _n(`Allowed choices are ${this.argChoices.join(", ")}.`);return this.variadic?this._collectValue(r,n):r},this}name(){return this.long?this.long.replace(/^--/,""):this.short.replace(/^-/,"")}attributeName(){return this.negate?Tt(this.name().replace(/^no-/,"")):Tt(this.name())}helpGroup(e){return this.helpGroupHeading=e,this}is(e){return this.short===e||this.long===e}isBoolean(){return!this.required&&!this.optional&&!this.negate}},Le=class{constructor(e){this.positiveOptions=new Map,this.negativeOptions=new Map,this.dualOptions=new Set,e.forEach(r=>{r.negate?this.negativeOptions.set(r.attributeName(),r):this.positiveOptions.set(r.attributeName(),r)}),this.negativeOptions.forEach((r,n)=>{this.positiveOptions.has(n)&&this.dualOptions.add(n)})}valueFromOption(e,r){let n=r.attributeName();if(!this.dualOptions.has(n))return!0;let i=this.negativeOptions.get(n).presetArg,s=i!==void 0?i:!1;return r.negate===(s===e)}};function Tt(t){return t.split("-").reduce((e,r)=>e+r[0].toUpperCase()+r.slice(1))}function Sn(t){let e,r,n=/^-[^-]$/,i=/^--[^-]/,s=t.split(/[ |,]+/).concat("guard");if(n.test(s[0])&&(e=s.shift()),i.test(s[0])&&(r=s.shift()),!e&&n.test(s[0])&&(e=s.shift()),!e&&i.test(s[0])&&(e=r,r=s.shift()),s[0].startsWith("-")){let o=s[0],a=`option creation failed due to '${o}' in option flags '${t}'`;throw/^-[^-][^-]/.test(o)?new Error(`${a}
4
+ var en=Object.create;var Ze=Object.defineProperty;var tn=Object.getOwnPropertyDescriptor;var nn=Object.getOwnPropertyNames;var rn=Object.getPrototypeOf,sn=Object.prototype.hasOwnProperty;var z=(t=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(t,{get:(e,n)=>(typeof require<"u"?require:e)[n]}):t)(function(t){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+t+'" is not supported')});var H=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var on=(t,e,n,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of nn(e))!sn.call(t,s)&&s!==n&&Ze(t,s,{get:()=>e[s],enumerable:!(r=tn(e,s))||r.enumerable});return t};var an=(t,e,n)=>(n=t!=null?en(rn(t)):{},on(e||!t||!t.__esModule?Ze(n,"default",{value:t,enumerable:!0}):n,t));var ee=H(Pe=>{var ae=class extends Error{constructor(e,n,r){super(r),Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name,this.code=n,this.exitCode=e,this.nestedError=void 0}},Oe=class extends ae{constructor(e){super(1,"commander.invalidArgument",e),Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name}};Pe.CommanderError=ae;Pe.InvalidArgumentError=Oe});var ce=H(xe=>{var{InvalidArgumentError:br}=ee(),Re=class{constructor(e,n){switch(this.description=n||"",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.endsWith("...")&&(this.variadic=!0,this._name=this._name.slice(0,-3))}name(){return this._name}_collectValue(e,n){return n===this.defaultValue||!Array.isArray(n)?[e]:(n.push(e),n)}default(e,n){return this.defaultValue=e,this.defaultValueDescription=n,this}argParser(e){return this.parseArg=e,this}choices(e){return this.argChoices=e.slice(),this.parseArg=(n,r)=>{if(!this.argChoices.includes(n))throw new br(`Allowed choices are ${this.argChoices.join(", ")}.`);return this.variadic?this._collectValue(n,r):n},this}argRequired(){return this.required=!0,this}argOptional(){return this.required=!1,this}};function Er(t){let e=t.name()+(t.variadic===!0?"...":"");return t.required?"<"+e+">":"["+e+"]"}xe.Argument=Re;xe.humanReadableArgName=Er});var Ue=H(De=>{var{humanReadableArgName:vr}=ce(),Ie=class{constructor(){this.helpWidth=void 0,this.minWidthToWrap=40,this.sortSubcommands=!1,this.sortOptions=!1,this.showGlobalOptions=!1}prepareContext(e){this.helpWidth=this.helpWidth??e.helpWidth??80}visibleCommands(e){let n=e.commands.filter(s=>!s._hidden),r=e._getHelpCommand();return r&&!r._hidden&&n.push(r),this.sortSubcommands&&n.sort((s,i)=>s.name().localeCompare(i.name())),n}compareOptions(e,n){let r=s=>s.short?s.short.replace(/^-/,""):s.long.replace(/^--/,"");return r(e).localeCompare(r(n))}visibleOptions(e){let n=e.options.filter(s=>!s.hidden),r=e._getHelpOption();if(r&&!r.hidden){let s=r.short&&e._findOption(r.short),i=r.long&&e._findOption(r.long);!s&&!i?n.push(r):r.long&&!i?n.push(e.createOption(r.long,r.description)):r.short&&!s&&n.push(e.createOption(r.short,r.description))}return this.sortOptions&&n.sort(this.compareOptions),n}visibleGlobalOptions(e){if(!this.showGlobalOptions)return[];let n=[];for(let r=e.parent;r;r=r.parent){let s=r.options.filter(i=>!i.hidden);n.push(...s)}return this.sortOptions&&n.sort(this.compareOptions),n}visibleArguments(e){return e._argsDescription&&e.registeredArguments.forEach(n=>{n.description=n.description||e._argsDescription[n.name()]||""}),e.registeredArguments.find(n=>n.description)?e.registeredArguments:[]}subcommandTerm(e){let n=e.registeredArguments.map(r=>vr(r)).join(" ");return e._name+(e._aliases[0]?"|"+e._aliases[0]:"")+(e.options.length?" [options]":"")+(n?" "+n:"")}optionTerm(e){return e.flags}argumentTerm(e){return e.name()}longestSubcommandTermLength(e,n){return n.visibleCommands(e).reduce((r,s)=>Math.max(r,this.displayWidth(n.styleSubcommandTerm(n.subcommandTerm(s)))),0)}longestOptionTermLength(e,n){return n.visibleOptions(e).reduce((r,s)=>Math.max(r,this.displayWidth(n.styleOptionTerm(n.optionTerm(s)))),0)}longestGlobalOptionTermLength(e,n){return n.visibleGlobalOptions(e).reduce((r,s)=>Math.max(r,this.displayWidth(n.styleOptionTerm(n.optionTerm(s)))),0)}longestArgumentTermLength(e,n){return n.visibleArguments(e).reduce((r,s)=>Math.max(r,this.displayWidth(n.styleArgumentTerm(n.argumentTerm(s)))),0)}commandUsage(e){let n=e._name;e._aliases[0]&&(n=n+"|"+e._aliases[0]);let r="";for(let s=e.parent;s;s=s.parent)r=s.name()+" "+r;return r+n+" "+e.usage()}commandDescription(e){return e.description()}subcommandDescription(e){return e.summary()||e.description()}optionDescription(e){let n=[];if(e.argChoices&&n.push(`choices: ${e.argChoices.map(r=>JSON.stringify(r)).join(", ")}`),e.defaultValue!==void 0&&(e.required||e.optional||e.isBoolean()&&typeof e.defaultValue=="boolean")&&n.push(`default: ${e.defaultValueDescription||JSON.stringify(e.defaultValue)}`),e.presetArg!==void 0&&e.optional&&n.push(`preset: ${JSON.stringify(e.presetArg)}`),e.envVar!==void 0&&n.push(`env: ${e.envVar}`),n.length>0){let r=`(${n.join(", ")})`;return e.description?`${e.description} ${r}`:r}return e.description}argumentDescription(e){let n=[];if(e.argChoices&&n.push(`choices: ${e.argChoices.map(r=>JSON.stringify(r)).join(", ")}`),e.defaultValue!==void 0&&n.push(`default: ${e.defaultValueDescription||JSON.stringify(e.defaultValue)}`),n.length>0){let r=`(${n.join(", ")})`;return e.description?`${e.description} ${r}`:r}return e.description}formatItemList(e,n,r){return n.length===0?[]:[r.styleTitle(e),...n,""]}groupItems(e,n,r){let s=new Map;return e.forEach(i=>{let o=r(i);s.has(o)||s.set(o,[])}),n.forEach(i=>{let o=r(i);s.has(o)||s.set(o,[]),s.get(o).push(i)}),s}formatHelp(e,n){let r=n.padWidth(e,n),s=n.helpWidth??80;function i(d,h){return n.formatItem(d,r,h,n)}let o=[`${n.styleTitle("Usage:")} ${n.styleUsage(n.commandUsage(e))}`,""],a=n.commandDescription(e);a.length>0&&(o=o.concat([n.boxWrap(n.styleCommandDescription(a),s),""]));let c=n.visibleArguments(e).map(d=>i(n.styleArgumentTerm(n.argumentTerm(d)),n.styleArgumentDescription(n.argumentDescription(d))));if(o=o.concat(this.formatItemList("Arguments:",c,n)),this.groupItems(e.options,n.visibleOptions(e),d=>d.helpGroupHeading??"Options:").forEach((d,h)=>{let w=d.map(O=>i(n.styleOptionTerm(n.optionTerm(O)),n.styleOptionDescription(n.optionDescription(O))));o=o.concat(this.formatItemList(h,w,n))}),n.showGlobalOptions){let d=n.visibleGlobalOptions(e).map(h=>i(n.styleOptionTerm(n.optionTerm(h)),n.styleOptionDescription(n.optionDescription(h))));o=o.concat(this.formatItemList("Global Options:",d,n))}return this.groupItems(e.commands,n.visibleCommands(e),d=>d.helpGroup()||"Commands:").forEach((d,h)=>{let w=d.map(O=>i(n.styleSubcommandTerm(n.subcommandTerm(O)),n.styleSubcommandDescription(n.subcommandDescription(O))));o=o.concat(this.formatItemList(h,w,n))}),o.join(`
5
+ `)}displayWidth(e){return Tt(e).length}styleTitle(e){return e}styleUsage(e){return e.split(" ").map(n=>n==="[options]"?this.styleOptionText(n):n==="[command]"?this.styleSubcommandText(n):n[0]==="["||n[0]==="<"?this.styleArgumentText(n):this.styleCommandText(n)).join(" ")}styleCommandDescription(e){return this.styleDescriptionText(e)}styleOptionDescription(e){return this.styleDescriptionText(e)}styleSubcommandDescription(e){return this.styleDescriptionText(e)}styleArgumentDescription(e){return this.styleDescriptionText(e)}styleDescriptionText(e){return e}styleOptionTerm(e){return this.styleOptionText(e)}styleSubcommandTerm(e){return e.split(" ").map(n=>n==="[options]"?this.styleOptionText(n):n[0]==="["||n[0]==="<"?this.styleArgumentText(n):this.styleSubcommandText(n)).join(" ")}styleArgumentTerm(e){return this.styleArgumentText(e)}styleOptionText(e){return e}styleArgumentText(e){return e}styleSubcommandText(e){return e}styleCommandText(e){return e}padWidth(e,n){return Math.max(n.longestOptionTermLength(e,n),n.longestGlobalOptionTermLength(e,n),n.longestSubcommandTermLength(e,n),n.longestArgumentTermLength(e,n))}preformatted(e){return/\n[^\S\r\n]/.test(e)}formatItem(e,n,r,s){let o=" ".repeat(2);if(!r)return o+e;let a=e.padEnd(n+e.length-s.displayWidth(e)),c=2,l=(this.helpWidth??80)-n-c-2,d;return l<this.minWidthToWrap||s.preformatted(r)?d=r:d=s.boxWrap(r,l).replace(/\n/g,`
6
+ `+" ".repeat(n+c)),o+a+" ".repeat(c)+d.replace(/\n/g,`
7
+ ${o}`)}boxWrap(e,n){if(n<this.minWidthToWrap)return e;let r=e.split(/\r\n|\n/),s=/[\s]*[^\s]+/g,i=[];return r.forEach(o=>{let a=o.match(s);if(a===null){i.push("");return}let c=[a.shift()],u=this.displayWidth(c[0]);a.forEach(l=>{let d=this.displayWidth(l);if(u+d<=n){c.push(l),u+=d;return}i.push(c.join(""));let h=l.trimStart();c=[h],u=this.displayWidth(h)}),i.push(c.join(""))}),i.join(`
8
+ `)}};function Tt(t){let e=/\x1b\[\d*(;\d*)*m/g;return t.replace(e,"")}De.Help=Ie;De.stripColor=Tt});var Ke=H(Le=>{var{InvalidArgumentError:Ar}=ee(),He=class{constructor(e,n){this.flags=e,this.description=n||"",this.required=e.includes("<"),this.optional=e.includes("["),this.variadic=/\w\.\.\.[>\]]$/.test(e),this.mandatory=!1;let r=kr(e);this.short=r.shortFlag,this.long=r.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,this.helpGroupHeading=void 0}default(e,n){return this.defaultValue=e,this.defaultValueDescription=n,this}preset(e){return this.presetArg=e,this}conflicts(e){return this.conflictsWith=this.conflictsWith.concat(e),this}implies(e){let n=e;return typeof e=="string"&&(n={[e]:!0}),this.implied=Object.assign(this.implied||{},n),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}_collectValue(e,n){return n===this.defaultValue||!Array.isArray(n)?[e]:(n.push(e),n)}choices(e){return this.argChoices=e.slice(),this.parseArg=(n,r)=>{if(!this.argChoices.includes(n))throw new Ar(`Allowed choices are ${this.argChoices.join(", ")}.`);return this.variadic?this._collectValue(n,r):n},this}name(){return this.long?this.long.replace(/^--/,""):this.short.replace(/^-/,"")}attributeName(){return this.negate?Ot(this.name().replace(/^no-/,"")):Ot(this.name())}helpGroup(e){return this.helpGroupHeading=e,this}is(e){return this.short===e||this.long===e}isBoolean(){return!this.required&&!this.optional&&!this.negate}},Ne=class{constructor(e){this.positiveOptions=new Map,this.negativeOptions=new Map,this.dualOptions=new Set,e.forEach(n=>{n.negate?this.negativeOptions.set(n.attributeName(),n):this.positiveOptions.set(n.attributeName(),n)}),this.negativeOptions.forEach((n,r)=>{this.positiveOptions.has(r)&&this.dualOptions.add(r)})}valueFromOption(e,n){let r=n.attributeName();if(!this.dualOptions.has(r))return!0;let s=this.negativeOptions.get(r).presetArg,i=s!==void 0?s:!1;return n.negate===(i===e)}};function Ot(t){return t.split("-").reduce((e,n)=>e+n[0].toUpperCase()+n.slice(1))}function kr(t){let e,n,r=/^-[^-]$/,s=/^--[^-]/,i=t.split(/[ |,]+/).concat("guard");if(r.test(i[0])&&(e=i.shift()),s.test(i[0])&&(n=i.shift()),!e&&r.test(i[0])&&(e=i.shift()),!e&&s.test(i[0])&&(e=n,n=i.shift()),i[0].startsWith("-")){let o=i[0],a=`option creation failed due to '${o}' in option flags '${t}'`;throw/^-[^-][^-]/.test(o)?new Error(`${a}
9
9
  - a short flag is a single dash and a single character
10
10
  - either use a single dash and a single character (for a short flag)
11
- - or use a double dash for a long option (and can have two, like '--ws, --workspace')`):n.test(o)?new Error(`${a}
12
- - too many short flags`):i.test(o)?new Error(`${a}
11
+ - or use a double dash for a long option (and can have two, like '--ws, --workspace')`):r.test(o)?new Error(`${a}
12
+ - too many short flags`):s.test(o)?new Error(`${a}
13
13
  - too many long flags`):new Error(`${a}
14
- - unrecognised flag format`)}if(e===void 0&&r===void 0)throw new Error(`option creation failed due to no flags found in '${t}'.`);return{shortFlag:e,longFlag:r}}Ne.Option=Ue;Ne.DualOptions=Le});var Rt=H(Pt=>{function vn(t,e){if(Math.abs(t.length-e.length)>3)return Math.max(t.length,e.length);let r=[];for(let n=0;n<=t.length;n++)r[n]=[n];for(let n=0;n<=e.length;n++)r[0][n]=n;for(let n=1;n<=e.length;n++)for(let i=1;i<=t.length;i++){let s=1;t[i-1]===e[n-1]?s=0:s=1,r[i][n]=Math.min(r[i-1][n]+1,r[i][n-1]+1,r[i-1][n-1]+s),i>1&&n>1&&t[i-1]===e[n-2]&&t[i-2]===e[n-1]&&(r[i][n]=Math.min(r[i][n],r[i-2][n-2]+1))}return r[t.length][e.length]}function kn(t,e){if(!e||e.length===0)return"";e=Array.from(new Set(e));let r=t.startsWith("--");r&&(t=t.slice(2),e=e.map(o=>o.slice(2)));let n=[],i=3,s=.4;return e.forEach(o=>{if(o.length<=1)return;let a=vn(t,o),c=Math.max(t.length,o.length);(c-a)/c>s&&(a<i?(i=a,n=[o]):a===i&&n.push(o))}),n.sort((o,a)=>o.localeCompare(a)),r&&(n=n.map(o=>`--${o}`)),n.length>1?`
15
- (Did you mean one of ${n.join(", ")}?)`:n.length===1?`
16
- (Did you mean ${n[0]}?)`:""}Pt.suggestSimilar=kn});var Ht=H(Fe=>{var Cn=z("node:events").EventEmitter,We=z("node:child_process"),x=z("node:path"),le=z("node:fs"),p=z("node:process"),{Argument:$n,humanReadableArgName:On}=ce(),{CommanderError:je}=ee(),{Help:Tn,stripColor:Pn}=He(),{Option:xt,DualOptions:Rn}=Ke(),{suggestSimilar:It}=Rt(),Me=class t extends Cn{constructor(e){super(),this.commands=[],this.options=[],this.parent=null,this._allowUnknownOption=!1,this._allowExcessArguments=!1,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._savedState=null,this._outputConfiguration={writeOut:r=>p.stdout.write(r),writeErr:r=>p.stderr.write(r),outputError:(r,n)=>n(r),getOutHelpWidth:()=>p.stdout.isTTY?p.stdout.columns:void 0,getErrHelpWidth:()=>p.stderr.isTTY?p.stderr.columns:void 0,getOutHasColors:()=>Ve()??(p.stdout.isTTY&&p.stdout.hasColors?.()),getErrHasColors:()=>Ve()??(p.stderr.isTTY&&p.stderr.hasColors?.()),stripColor:r=>Pn(r)},this._hidden=!1,this._helpOption=void 0,this._addImplicitHelpCommand=void 0,this._helpCommand=void 0,this._helpConfiguration={},this._helpGroupHeading=void 0,this._defaultCommandGroup=void 0,this._defaultOptionGroup=void 0}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 r=this;r;r=r.parent)e.push(r);return e}command(e,r,n){let i=r,s=n;typeof i=="object"&&i!==null&&(s=i,i=null),s=s||{};let[,o,a]=e.match(/([^ ]+) *(.*)/),c=this.createCommand(o);return i&&(c.description(i),c._executableHandler=!0),s.isDefault&&(this._defaultCommandName=c._name),c._hidden=!!(s.noHelp||s.hidden),c._executableFile=s.executableFile||null,a&&c.arguments(a),this._registerCommand(c),c.parent=this,c.copyInheritedSettings(this),i?this:c}createCommand(e){return new t(e)}createHelp(){return Object.assign(new Tn,this.configureHelp())}configureHelp(e){return e===void 0?this._helpConfiguration:(this._helpConfiguration=e,this)}configureOutput(e){return e===void 0?this._outputConfiguration:(this._outputConfiguration={...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,r){if(!e._name)throw new Error(`Command passed to .addCommand() must have a name
17
- - specify the name in Command constructor or using .name()`);return r=r||{},r.isDefault&&(this._defaultCommandName=e._name),(r.noHelp||r.hidden)&&(e._hidden=!0),this._registerCommand(e),e.parent=this,e._checkForBrokenPassThrough(),this}createArgument(e,r){return new $n(e,r)}argument(e,r,n,i){let s=this.createArgument(e,r);return typeof n=="function"?s.default(i).argParser(n):s.default(n),this.addArgument(s),this}arguments(e){return e.trim().split(/ +/).forEach(r=>{this.argument(r)}),this}addArgument(e){let r=this.registeredArguments.slice(-1)[0];if(r?.variadic)throw new Error(`only the last argument can be variadic '${r.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,r){if(typeof e=="boolean")return this._addImplicitHelpCommand=e,e&&this._defaultCommandGroup&&this._initCommandGroup(this._getHelpCommand()),this;let n=e??"help [command]",[,i,s]=n.match(/([^ ]+) *(.*)/),o=r??"display help for command",a=this.createCommand(i);return a.helpOption(!1),s&&a.arguments(s),o&&a.description(o),this._addImplicitHelpCommand=!0,this._helpCommand=a,(e||r)&&this._initCommandGroup(a),this}addHelpCommand(e,r){return typeof e!="object"?(this.helpCommand(e,r),this):(this._addImplicitHelpCommand=!0,this._helpCommand=e,this._initCommandGroup(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,r){let n=["preSubcommand","preAction","postAction"];if(!n.includes(e))throw new Error(`Unexpected value for event passed to hook : '${e}'.
18
- Expecting one of '${n.join("', '")}'`);return this._lifeCycleHooks[e]?this._lifeCycleHooks[e].push(r):this._lifeCycleHooks[e]=[r],this}exitOverride(e){return e?this._exitCallback=e:this._exitCallback=r=>{if(r.code!=="commander.executeSubCommandAsync")throw r},this}_exit(e,r,n){this._exitCallback&&this._exitCallback(new je(e,r,n)),p.exit(e)}action(e){let r=n=>{let i=this.registeredArguments.length,s=n.slice(0,i);return this._storeOptionsAsProperties?s[i]=this:s[i]=this.opts(),s.push(this),e.apply(this,s)};return this._actionHandler=r,this}createOption(e,r){return new xt(e,r)}_callParseArg(e,r,n,i){try{return e.parseArg(r,n)}catch(s){if(s.code==="commander.invalidArgument"){let o=`${i} ${s.message}`;this.error(o,{exitCode:s.exitCode,code:s.code})}throw s}}_registerOption(e){let r=e.short&&this._findOption(e.short)||e.long&&this._findOption(e.long);if(r){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}'
19
- - already used by option '${r.flags}'`)}this._initOptionGroup(e),this.options.push(e)}_registerCommand(e){let r=i=>[i.name()].concat(i.aliases()),n=r(e).find(i=>this._findCommand(i));if(n){let i=r(this._findCommand(n)).join("|"),s=r(e).join("|");throw new Error(`cannot add command '${s}' as already have command '${i}'`)}this._initCommandGroup(e),this.commands.push(e)}addOption(e){this._registerOption(e);let r=e.name(),n=e.attributeName();if(e.negate){let s=e.long.replace(/^--no-/,"--");this._findOption(s)||this.setOptionValueWithSource(n,e.defaultValue===void 0?!0:e.defaultValue,"default")}else e.defaultValue!==void 0&&this.setOptionValueWithSource(n,e.defaultValue,"default");let i=(s,o,a)=>{s==null&&e.presetArg!==void 0&&(s=e.presetArg);let c=this.getOptionValue(n);s!==null&&e.parseArg?s=this._callParseArg(e,s,c,o):s!==null&&e.variadic&&(s=e._collectValue(s,c)),s==null&&(e.negate?s=!1:e.isBoolean()||e.optional?s=!0:s=""),this.setOptionValueWithSource(n,s,a)};return this.on("option:"+r,s=>{let o=`error: option '${e.flags}' argument '${s}' is invalid.`;i(s,o,"cli")}),e.envVar&&this.on("optionEnv:"+r,s=>{let o=`error: option '${e.flags}' value '${s}' from env '${e.envVar}' is invalid.`;i(s,o,"env")}),this}_optionEx(e,r,n,i,s){if(typeof r=="object"&&r instanceof xt)throw new Error("To add an Option object use addOption() instead of option() or requiredOption()");let o=this.createOption(r,n);if(o.makeOptionMandatory(!!e.mandatory),typeof i=="function")o.default(s).argParser(i);else if(i instanceof RegExp){let a=i;i=(c,u)=>{let l=a.exec(c);return l?l[0]:u},o.default(s).argParser(i)}else o.default(i);return this.addOption(o)}option(e,r,n,i){return this._optionEx({},e,r,n,i)}requiredOption(e,r,n,i){return this._optionEx({mandatory:!0},e,r,n,i)}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,r){return this.setOptionValueWithSource(e,r,void 0)}setOptionValueWithSource(e,r,n){return this._storeOptionsAsProperties?this[e]=r:this._optionValues[e]=r,this._optionValueSources[e]=n,this}getOptionValueSource(e){return this._optionValueSources[e]}getOptionValueSourceWithGlobals(e){let r;return this._getCommandAndAncestors().forEach(n=>{n.getOptionValueSource(e)!==void 0&&(r=n.getOptionValueSource(e))}),r}_prepareUserArgs(e,r){if(e!==void 0&&!Array.isArray(e))throw new Error("first parameter to parse must be array or undefined");if(r=r||{},e===void 0&&r.from===void 0){p.versions?.electron&&(r.from="electron");let i=p.execArgv??[];(i.includes("-e")||i.includes("--eval")||i.includes("-p")||i.includes("--print"))&&(r.from="eval")}e===void 0&&(e=p.argv),this.rawArgs=e.slice();let n;switch(r.from){case void 0:case"node":this._scriptPath=e[1],n=e.slice(2);break;case"electron":p.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: '${r.from}' }`)}return!this._name&&this._scriptPath&&this.nameFromFilename(this._scriptPath),this._name=this._name||"program",n}parse(e,r){this._prepareForParse();let n=this._prepareUserArgs(e,r);return this._parseCommand([],n),this}async parseAsync(e,r){this._prepareForParse();let n=this._prepareUserArgs(e,r);return await this._parseCommand([],n),this}_prepareForParse(){this._savedState===null?this.saveStateBeforeParse():this.restoreStateBeforeParse()}saveStateBeforeParse(){this._savedState={_name:this._name,_optionValues:{...this._optionValues},_optionValueSources:{...this._optionValueSources}}}restoreStateBeforeParse(){if(this._storeOptionsAsProperties)throw new Error(`Can not call parse again when storeOptionsAsProperties is true.
20
- - either make a new Command for each call to parse, or stop storing options as properties`);this._name=this._savedState._name,this._scriptPath=null,this.rawArgs=[],this._optionValues={...this._savedState._optionValues},this._optionValueSources={...this._savedState._optionValueSources},this.args=[],this.processedArgs=[]}_checkForMissingExecutable(e,r,n){if(le.existsSync(e))return;let i=r?`searched for local subcommand relative to directory '${r}'`:"no directory for search for local subcommand, use .executableDir() to supply a custom directory",s=`'${e}' does not exist
21
- - if '${n}' is not meant to be an executable command, remove description parameter from '.command()' and use '.description()' instead
14
+ - unrecognised flag format`)}if(e===void 0&&n===void 0)throw new Error(`option creation failed due to no flags found in '${t}'.`);return{shortFlag:e,longFlag:n}}Le.Option=He;Le.DualOptions=Ne});var Rt=H(Pt=>{function _r(t,e){if(Math.abs(t.length-e.length)>3)return Math.max(t.length,e.length);let n=[];for(let r=0;r<=t.length;r++)n[r]=[r];for(let r=0;r<=e.length;r++)n[0][r]=r;for(let r=1;r<=e.length;r++)for(let s=1;s<=t.length;s++){let i=1;t[s-1]===e[r-1]?i=0:i=1,n[s][r]=Math.min(n[s-1][r]+1,n[s][r-1]+1,n[s-1][r-1]+i),s>1&&r>1&&t[s-1]===e[r-2]&&t[s-2]===e[r-1]&&(n[s][r]=Math.min(n[s][r],n[s-2][r-2]+1))}return n[t.length][e.length]}function Sr(t,e){if(!e||e.length===0)return"";e=Array.from(new Set(e));let n=t.startsWith("--");n&&(t=t.slice(2),e=e.map(o=>o.slice(2)));let r=[],s=3,i=.4;return e.forEach(o=>{if(o.length<=1)return;let a=_r(t,o),c=Math.max(t.length,o.length);(c-a)/c>i&&(a<s?(s=a,r=[o]):a===s&&r.push(o))}),r.sort((o,a)=>o.localeCompare(a)),n&&(r=r.map(o=>`--${o}`)),r.length>1?`
15
+ (Did you mean one of ${r.join(", ")}?)`:r.length===1?`
16
+ (Did you mean ${r[0]}?)`:""}Pt.suggestSimilar=Sr});var Ut=H(Fe=>{var $r=z("node:events").EventEmitter,We=z("node:child_process"),I=z("node:path"),le=z("node:fs"),m=z("node:process"),{Argument:Cr,humanReadableArgName:Tr}=ce(),{CommanderError:je}=ee(),{Help:Or,stripColor:Pr}=Ue(),{Option:xt,DualOptions:Rr}=Ke(),{suggestSimilar:It}=Rt(),Me=class t extends $r{constructor(e){super(),this.commands=[],this.options=[],this.parent=null,this._allowUnknownOption=!1,this._allowExcessArguments=!1,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._savedState=null,this._outputConfiguration={writeOut:n=>m.stdout.write(n),writeErr:n=>m.stderr.write(n),outputError:(n,r)=>r(n),getOutHelpWidth:()=>m.stdout.isTTY?m.stdout.columns:void 0,getErrHelpWidth:()=>m.stderr.isTTY?m.stderr.columns:void 0,getOutHasColors:()=>Ve()??(m.stdout.isTTY&&m.stdout.hasColors?.()),getErrHasColors:()=>Ve()??(m.stderr.isTTY&&m.stderr.hasColors?.()),stripColor:n=>Pr(n)},this._hidden=!1,this._helpOption=void 0,this._addImplicitHelpCommand=void 0,this._helpCommand=void 0,this._helpConfiguration={},this._helpGroupHeading=void 0,this._defaultCommandGroup=void 0,this._defaultOptionGroup=void 0}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 n=this;n;n=n.parent)e.push(n);return e}command(e,n,r){let s=n,i=r;typeof s=="object"&&s!==null&&(i=s,s=null),i=i||{};let[,o,a]=e.match(/([^ ]+) *(.*)/),c=this.createCommand(o);return s&&(c.description(s),c._executableHandler=!0),i.isDefault&&(this._defaultCommandName=c._name),c._hidden=!!(i.noHelp||i.hidden),c._executableFile=i.executableFile||null,a&&c.arguments(a),this._registerCommand(c),c.parent=this,c.copyInheritedSettings(this),s?this:c}createCommand(e){return new t(e)}createHelp(){return Object.assign(new Or,this.configureHelp())}configureHelp(e){return e===void 0?this._helpConfiguration:(this._helpConfiguration=e,this)}configureOutput(e){return e===void 0?this._outputConfiguration:(this._outputConfiguration={...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,n){if(!e._name)throw new Error(`Command passed to .addCommand() must have a name
17
+ - specify the name in Command constructor or using .name()`);return n=n||{},n.isDefault&&(this._defaultCommandName=e._name),(n.noHelp||n.hidden)&&(e._hidden=!0),this._registerCommand(e),e.parent=this,e._checkForBrokenPassThrough(),this}createArgument(e,n){return new Cr(e,n)}argument(e,n,r,s){let i=this.createArgument(e,n);return typeof r=="function"?i.default(s).argParser(r):i.default(r),this.addArgument(i),this}arguments(e){return e.trim().split(/ +/).forEach(n=>{this.argument(n)}),this}addArgument(e){let n=this.registeredArguments.slice(-1)[0];if(n?.variadic)throw new Error(`only the last argument can be variadic '${n.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,n){if(typeof e=="boolean")return this._addImplicitHelpCommand=e,e&&this._defaultCommandGroup&&this._initCommandGroup(this._getHelpCommand()),this;let r=e??"help [command]",[,s,i]=r.match(/([^ ]+) *(.*)/),o=n??"display help for command",a=this.createCommand(s);return a.helpOption(!1),i&&a.arguments(i),o&&a.description(o),this._addImplicitHelpCommand=!0,this._helpCommand=a,(e||n)&&this._initCommandGroup(a),this}addHelpCommand(e,n){return typeof e!="object"?(this.helpCommand(e,n),this):(this._addImplicitHelpCommand=!0,this._helpCommand=e,this._initCommandGroup(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,n){let r=["preSubcommand","preAction","postAction"];if(!r.includes(e))throw new Error(`Unexpected value for event passed to hook : '${e}'.
18
+ Expecting one of '${r.join("', '")}'`);return this._lifeCycleHooks[e]?this._lifeCycleHooks[e].push(n):this._lifeCycleHooks[e]=[n],this}exitOverride(e){return e?this._exitCallback=e:this._exitCallback=n=>{if(n.code!=="commander.executeSubCommandAsync")throw n},this}_exit(e,n,r){this._exitCallback&&this._exitCallback(new je(e,n,r)),m.exit(e)}action(e){let n=r=>{let s=this.registeredArguments.length,i=r.slice(0,s);return this._storeOptionsAsProperties?i[s]=this:i[s]=this.opts(),i.push(this),e.apply(this,i)};return this._actionHandler=n,this}createOption(e,n){return new xt(e,n)}_callParseArg(e,n,r,s){try{return e.parseArg(n,r)}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 n=e.short&&this._findOption(e.short)||e.long&&this._findOption(e.long);if(n){let r=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 '${r}'
19
+ - already used by option '${n.flags}'`)}this._initOptionGroup(e),this.options.push(e)}_registerCommand(e){let n=s=>[s.name()].concat(s.aliases()),r=n(e).find(s=>this._findCommand(s));if(r){let s=n(this._findCommand(r)).join("|"),i=n(e).join("|");throw new Error(`cannot add command '${i}' as already have command '${s}'`)}this._initCommandGroup(e),this.commands.push(e)}addOption(e){this._registerOption(e);let n=e.name(),r=e.attributeName();if(e.negate){let i=e.long.replace(/^--no-/,"--");this._findOption(i)||this.setOptionValueWithSource(r,e.defaultValue===void 0?!0:e.defaultValue,"default")}else e.defaultValue!==void 0&&this.setOptionValueWithSource(r,e.defaultValue,"default");let s=(i,o,a)=>{i==null&&e.presetArg!==void 0&&(i=e.presetArg);let c=this.getOptionValue(r);i!==null&&e.parseArg?i=this._callParseArg(e,i,c,o):i!==null&&e.variadic&&(i=e._collectValue(i,c)),i==null&&(e.negate?i=!1:e.isBoolean()||e.optional?i=!0:i=""),this.setOptionValueWithSource(r,i,a)};return this.on("option:"+n,i=>{let o=`error: option '${e.flags}' argument '${i}' is invalid.`;s(i,o,"cli")}),e.envVar&&this.on("optionEnv:"+n,i=>{let o=`error: option '${e.flags}' value '${i}' from env '${e.envVar}' is invalid.`;s(i,o,"env")}),this}_optionEx(e,n,r,s,i){if(typeof n=="object"&&n instanceof xt)throw new Error("To add an Option object use addOption() instead of option() or requiredOption()");let o=this.createOption(n,r);if(o.makeOptionMandatory(!!e.mandatory),typeof s=="function")o.default(i).argParser(s);else if(s instanceof RegExp){let a=s;s=(c,u)=>{let l=a.exec(c);return l?l[0]:u},o.default(i).argParser(s)}else o.default(s);return this.addOption(o)}option(e,n,r,s){return this._optionEx({},e,n,r,s)}requiredOption(e,n,r,s){return this._optionEx({mandatory:!0},e,n,r,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,n){return this.setOptionValueWithSource(e,n,void 0)}setOptionValueWithSource(e,n,r){return this._storeOptionsAsProperties?this[e]=n:this._optionValues[e]=n,this._optionValueSources[e]=r,this}getOptionValueSource(e){return this._optionValueSources[e]}getOptionValueSourceWithGlobals(e){let n;return this._getCommandAndAncestors().forEach(r=>{r.getOptionValueSource(e)!==void 0&&(n=r.getOptionValueSource(e))}),n}_prepareUserArgs(e,n){if(e!==void 0&&!Array.isArray(e))throw new Error("first parameter to parse must be array or undefined");if(n=n||{},e===void 0&&n.from===void 0){m.versions?.electron&&(n.from="electron");let s=m.execArgv??[];(s.includes("-e")||s.includes("--eval")||s.includes("-p")||s.includes("--print"))&&(n.from="eval")}e===void 0&&(e=m.argv),this.rawArgs=e.slice();let r;switch(n.from){case void 0:case"node":this._scriptPath=e[1],r=e.slice(2);break;case"electron":m.defaultApp?(this._scriptPath=e[1],r=e.slice(2)):r=e.slice(1);break;case"user":r=e.slice(0);break;case"eval":r=e.slice(1);break;default:throw new Error(`unexpected parse option { from: '${n.from}' }`)}return!this._name&&this._scriptPath&&this.nameFromFilename(this._scriptPath),this._name=this._name||"program",r}parse(e,n){this._prepareForParse();let r=this._prepareUserArgs(e,n);return this._parseCommand([],r),this}async parseAsync(e,n){this._prepareForParse();let r=this._prepareUserArgs(e,n);return await this._parseCommand([],r),this}_prepareForParse(){this._savedState===null?this.saveStateBeforeParse():this.restoreStateBeforeParse()}saveStateBeforeParse(){this._savedState={_name:this._name,_optionValues:{...this._optionValues},_optionValueSources:{...this._optionValueSources}}}restoreStateBeforeParse(){if(this._storeOptionsAsProperties)throw new Error(`Can not call parse again when storeOptionsAsProperties is true.
20
+ - either make a new Command for each call to parse, or stop storing options as properties`);this._name=this._savedState._name,this._scriptPath=null,this.rawArgs=[],this._optionValues={...this._savedState._optionValues},this._optionValueSources={...this._savedState._optionValueSources},this.args=[],this.processedArgs=[]}_checkForMissingExecutable(e,n,r){if(le.existsSync(e))return;let s=n?`searched for local subcommand relative to directory '${n}'`:"no directory for search for local subcommand, use .executableDir() to supply a custom directory",i=`'${e}' does not exist
21
+ - if '${r}' is not meant to be an executable command, remove description parameter from '.command()' and use '.description()' instead
22
22
  - if the default executable name is not suitable, use the executableFile option to supply a custom name or path
23
- - ${i}`;throw new Error(s)}_executeSubCommand(e,r){r=r.slice();let n=!1,i=[".js",".ts",".tsx",".mjs",".cjs"];function s(l,d){let h=x.resolve(l,d);if(le.existsSync(h))return h;if(i.includes(x.extname(d)))return;let y=i.find(O=>le.existsSync(`${h}${O}`));if(y)return`${h}${y}`}this._checkForMissingMandatoryOptions(),this._checkForConflictingOptions();let o=e._executableFile||`${this._name}-${e._name}`,a=this._executableDir||"";if(this._scriptPath){let l;try{l=le.realpathSync(this._scriptPath)}catch{l=this._scriptPath}a=x.resolve(x.dirname(l),a)}if(a){let l=s(a,o);if(!l&&!e._executableFile&&this._scriptPath){let d=x.basename(this._scriptPath,x.extname(this._scriptPath));d!==this._name&&(l=s(a,`${d}-${e._name}`))}o=l||o}n=i.includes(x.extname(o));let c;p.platform!=="win32"?n?(r.unshift(o),r=Dt(p.execArgv).concat(r),c=We.spawn(p.argv[0],r,{stdio:"inherit"})):c=We.spawn(o,r,{stdio:"inherit"}):(this._checkForMissingExecutable(o,a,e._name),r.unshift(o),r=Dt(p.execArgv).concat(r),c=We.spawn(p.execPath,r,{stdio:"inherit"})),c.killed||["SIGUSR1","SIGUSR2","SIGTERM","SIGINT","SIGHUP"].forEach(d=>{p.on(d,()=>{c.killed===!1&&c.exitCode===null&&c.kill(d)})});let u=this._exitCallback;c.on("close",l=>{l=l??1,u?u(new je(l,"commander.executeSubCommandAsync","(close)")):p.exit(l)}),c.on("error",l=>{if(l.code==="ENOENT")this._checkForMissingExecutable(o,a,e._name);else if(l.code==="EACCES")throw new Error(`'${o}' not executable`);if(!u)p.exit(1);else{let d=new je(1,"commander.executeSubCommandAsync","(error)");d.nestedError=l,u(d)}}),this.runningCommand=c}_dispatchSubcommand(e,r,n){let i=this._findCommand(e);i||this.help({error:!0}),i._prepareForParse();let s;return s=this._chainOrCallSubCommandHook(s,i,"preSubcommand"),s=this._chainOrCall(s,()=>{if(i._executableHandler)this._executeSubCommand(i,r.concat(n));else return i._parseCommand(r,n)}),s}_dispatchHelpCommand(e){e||this.help();let r=this._findCommand(e);return r&&!r._executableHandler&&r.help(),this._dispatchSubcommand(e,[],[this._getHelpOption()?.long??this._getHelpOption()?.short??"--help"])}_checkNumberOfArguments(){this.registeredArguments.forEach((e,r)=>{e.required&&this.args[r]==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,i,s)=>{let o=i;if(i!==null&&n.parseArg){let a=`error: command-argument value '${i}' is invalid for argument '${n.name()}'.`;o=this._callParseArg(n,i,s,a)}return o};this._checkNumberOfArguments();let r=[];this.registeredArguments.forEach((n,i)=>{let s=n.defaultValue;n.variadic?i<this.args.length?(s=this.args.slice(i),n.parseArg&&(s=s.reduce((o,a)=>e(n,a,o),n.defaultValue))):s===void 0&&(s=[]):i<this.args.length&&(s=this.args[i],n.parseArg&&(s=e(n,s,n.defaultValue))),r[i]=s}),this.processedArgs=r}_chainOrCall(e,r){return e?.then&&typeof e.then=="function"?e.then(()=>r()):r()}_chainOrCallHooks(e,r){let n=e,i=[];return this._getCommandAndAncestors().reverse().filter(s=>s._lifeCycleHooks[r]!==void 0).forEach(s=>{s._lifeCycleHooks[r].forEach(o=>{i.push({hookedCommand:s,callback:o})})}),r==="postAction"&&i.reverse(),i.forEach(s=>{n=this._chainOrCall(n,()=>s.callback(s.hookedCommand,this))}),n}_chainOrCallSubCommandHook(e,r,n){let i=e;return this._lifeCycleHooks[n]!==void 0&&this._lifeCycleHooks[n].forEach(s=>{i=this._chainOrCall(i,()=>s(this,r))}),i}_parseCommand(e,r){let n=this.parseOptions(r);if(this._parseOptionsEnv(),this._parseOptionsImplied(),e=e.concat(n.operands),r=n.unknown,this.args=e.concat(r),e&&this._findCommand(e[0]))return this._dispatchSubcommand(e[0],e.slice(1),r);if(this._getHelpCommand()&&e[0]===this._getHelpCommand().name())return this._dispatchHelpCommand(e[1]);if(this._defaultCommandName)return this._outputHelpIfRequested(r),this._dispatchSubcommand(this._defaultCommandName,e,r);this.commands.length&&this.args.length===0&&!this._actionHandler&&!this._defaultCommandName&&this.help({error:!0}),this._outputHelpIfRequested(n.unknown),this._checkForMissingMandatoryOptions(),this._checkForConflictingOptions();let i=()=>{n.unknown.length>0&&this.unknownOption(n.unknown[0])},s=`command:${this.name()}`;if(this._actionHandler){i(),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(s,e,r)})),o=this._chainOrCallHooks(o,"postAction"),o}if(this.parent?.listenerCount(s))i(),this._processArguments(),this.parent.emit(s,e,r);else if(e.length){if(this._findCommand("*"))return this._dispatchSubcommand("*",e,r);this.listenerCount("command:*")?this.emit("command:*",e,r):this.commands.length?this.unknownCommand():(i(),this._processArguments())}else this.commands.length?(i(),this.help({error:!0})):(i(),this._processArguments())}_findCommand(e){if(e)return this.commands.find(r=>r._name===e||r._aliases.includes(e))}_findOption(e){return this.options.find(r=>r.is(e))}_checkForMissingMandatoryOptions(){this._getCommandAndAncestors().forEach(e=>{e.options.forEach(r=>{r.mandatory&&e.getOptionValue(r.attributeName())===void 0&&e.missingMandatoryOptionValue(r)})})}_checkForConflictingLocalOptions(){let e=this.options.filter(n=>{let i=n.attributeName();return this.getOptionValue(i)===void 0?!1:this.getOptionValueSource(i)!=="default"});e.filter(n=>n.conflictsWith.length>0).forEach(n=>{let i=e.find(s=>n.conflictsWith.includes(s.attributeName()));i&&this._conflictingOption(n,i)})}_checkForConflictingOptions(){this._getCommandAndAncestors().forEach(e=>{e._checkForConflictingLocalOptions()})}parseOptions(e){let r=[],n=[],i=r;function s(l){return l.length>1&&l[0]==="-"}let o=l=>/^-(\d+|\d*\.\d+)(e[+-]?\d+)?$/.test(l)?!this._getCommandAndAncestors().some(d=>d.options.map(h=>h.short).some(h=>/^-\d$/.test(h))):!1,a=null,c=null,u=0;for(;u<e.length||c;){let l=c??e[u++];if(c=null,l==="--"){i===n&&i.push(l),i.push(...e.slice(u));break}if(a&&(!s(l)||o(l))){this.emit(`option:${a.name()}`,l);continue}if(a=null,s(l)){let d=this._findOption(l);if(d){if(d.required){let h=e[u++];h===void 0&&this.optionMissingArgument(d),this.emit(`option:${d.name()}`,h)}else if(d.optional){let h=null;u<e.length&&(!s(e[u])||o(e[u]))&&(h=e[u++]),this.emit(`option:${d.name()}`,h)}else this.emit(`option:${d.name()}`);a=d.variadic?d:null;continue}}if(l.length>2&&l[0]==="-"&&l[1]!=="-"){let d=this._findOption(`-${l[1]}`);if(d){d.required||d.optional&&this._combineFlagAndOptionalValue?this.emit(`option:${d.name()}`,l.slice(2)):(this.emit(`option:${d.name()}`),c=`-${l.slice(2)}`);continue}}if(/^--[^=]+=/.test(l)){let d=l.indexOf("="),h=this._findOption(l.slice(0,d));if(h&&(h.required||h.optional)){this.emit(`option:${h.name()}`,l.slice(d+1));continue}}if(i===r&&s(l)&&!(this.commands.length===0&&o(l))&&(i=n),(this._enablePositionalOptions||this._passThroughOptions)&&r.length===0&&n.length===0){if(this._findCommand(l)){r.push(l),n.push(...e.slice(u));break}else if(this._getHelpCommand()&&l===this._getHelpCommand().name()){r.push(l,...e.slice(u));break}else if(this._defaultCommandName){n.push(l,...e.slice(u));break}}if(this._passThroughOptions){i.push(l,...e.slice(u));break}i.push(l)}return{operands:r,unknown:n}}opts(){if(this._storeOptionsAsProperties){let e={},r=this.options.length;for(let n=0;n<r;n++){let i=this.options[n].attributeName();e[i]=i===this._versionOptionName?this._version:this[i]}return e}return this._optionValues}optsWithGlobals(){return this._getCommandAndAncestors().reduce((e,r)=>Object.assign(e,r.opts()),{})}error(e,r){this._outputConfiguration.outputError(`${e}
23
+ - ${s}`;throw new Error(i)}_executeSubCommand(e,n){n=n.slice();let r=!1,s=[".js",".ts",".tsx",".mjs",".cjs"];function i(l,d){let h=I.resolve(l,d);if(le.existsSync(h))return h;if(s.includes(I.extname(d)))return;let w=s.find(O=>le.existsSync(`${h}${O}`));if(w)return`${h}${w}`}this._checkForMissingMandatoryOptions(),this._checkForConflictingOptions();let o=e._executableFile||`${this._name}-${e._name}`,a=this._executableDir||"";if(this._scriptPath){let l;try{l=le.realpathSync(this._scriptPath)}catch{l=this._scriptPath}a=I.resolve(I.dirname(l),a)}if(a){let l=i(a,o);if(!l&&!e._executableFile&&this._scriptPath){let d=I.basename(this._scriptPath,I.extname(this._scriptPath));d!==this._name&&(l=i(a,`${d}-${e._name}`))}o=l||o}r=s.includes(I.extname(o));let c;m.platform!=="win32"?r?(n.unshift(o),n=Dt(m.execArgv).concat(n),c=We.spawn(m.argv[0],n,{stdio:"inherit"})):c=We.spawn(o,n,{stdio:"inherit"}):(this._checkForMissingExecutable(o,a,e._name),n.unshift(o),n=Dt(m.execArgv).concat(n),c=We.spawn(m.execPath,n,{stdio:"inherit"})),c.killed||["SIGUSR1","SIGUSR2","SIGTERM","SIGINT","SIGHUP"].forEach(d=>{m.on(d,()=>{c.killed===!1&&c.exitCode===null&&c.kill(d)})});let u=this._exitCallback;c.on("close",l=>{l=l??1,u?u(new je(l,"commander.executeSubCommandAsync","(close)")):m.exit(l)}),c.on("error",l=>{if(l.code==="ENOENT")this._checkForMissingExecutable(o,a,e._name);else if(l.code==="EACCES")throw new Error(`'${o}' not executable`);if(!u)m.exit(1);else{let d=new je(1,"commander.executeSubCommandAsync","(error)");d.nestedError=l,u(d)}}),this.runningCommand=c}_dispatchSubcommand(e,n,r){let s=this._findCommand(e);s||this.help({error:!0}),s._prepareForParse();let i;return i=this._chainOrCallSubCommandHook(i,s,"preSubcommand"),i=this._chainOrCall(i,()=>{if(s._executableHandler)this._executeSubCommand(s,n.concat(r));else return s._parseCommand(n,r)}),i}_dispatchHelpCommand(e){e||this.help();let n=this._findCommand(e);return n&&!n._executableHandler&&n.help(),this._dispatchSubcommand(e,[],[this._getHelpOption()?.long??this._getHelpOption()?.short??"--help"])}_checkNumberOfArguments(){this.registeredArguments.forEach((e,n)=>{e.required&&this.args[n]==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=(r,s,i)=>{let o=s;if(s!==null&&r.parseArg){let a=`error: command-argument value '${s}' is invalid for argument '${r.name()}'.`;o=this._callParseArg(r,s,i,a)}return o};this._checkNumberOfArguments();let n=[];this.registeredArguments.forEach((r,s)=>{let i=r.defaultValue;r.variadic?s<this.args.length?(i=this.args.slice(s),r.parseArg&&(i=i.reduce((o,a)=>e(r,a,o),r.defaultValue))):i===void 0&&(i=[]):s<this.args.length&&(i=this.args[s],r.parseArg&&(i=e(r,i,r.defaultValue))),n[s]=i}),this.processedArgs=n}_chainOrCall(e,n){return e?.then&&typeof e.then=="function"?e.then(()=>n()):n()}_chainOrCallHooks(e,n){let r=e,s=[];return this._getCommandAndAncestors().reverse().filter(i=>i._lifeCycleHooks[n]!==void 0).forEach(i=>{i._lifeCycleHooks[n].forEach(o=>{s.push({hookedCommand:i,callback:o})})}),n==="postAction"&&s.reverse(),s.forEach(i=>{r=this._chainOrCall(r,()=>i.callback(i.hookedCommand,this))}),r}_chainOrCallSubCommandHook(e,n,r){let s=e;return this._lifeCycleHooks[r]!==void 0&&this._lifeCycleHooks[r].forEach(i=>{s=this._chainOrCall(s,()=>i(this,n))}),s}_parseCommand(e,n){let r=this.parseOptions(n);if(this._parseOptionsEnv(),this._parseOptionsImplied(),e=e.concat(r.operands),n=r.unknown,this.args=e.concat(n),e&&this._findCommand(e[0]))return this._dispatchSubcommand(e[0],e.slice(1),n);if(this._getHelpCommand()&&e[0]===this._getHelpCommand().name())return this._dispatchHelpCommand(e[1]);if(this._defaultCommandName)return this._outputHelpIfRequested(n),this._dispatchSubcommand(this._defaultCommandName,e,n);this.commands.length&&this.args.length===0&&!this._actionHandler&&!this._defaultCommandName&&this.help({error:!0}),this._outputHelpIfRequested(r.unknown),this._checkForMissingMandatoryOptions(),this._checkForConflictingOptions();let s=()=>{r.unknown.length>0&&this.unknownOption(r.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,n)})),o=this._chainOrCallHooks(o,"postAction"),o}if(this.parent?.listenerCount(i))s(),this._processArguments(),this.parent.emit(i,e,n);else if(e.length){if(this._findCommand("*"))return this._dispatchSubcommand("*",e,n);this.listenerCount("command:*")?this.emit("command:*",e,n):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(n=>n._name===e||n._aliases.includes(e))}_findOption(e){return this.options.find(n=>n.is(e))}_checkForMissingMandatoryOptions(){this._getCommandAndAncestors().forEach(e=>{e.options.forEach(n=>{n.mandatory&&e.getOptionValue(n.attributeName())===void 0&&e.missingMandatoryOptionValue(n)})})}_checkForConflictingLocalOptions(){let e=this.options.filter(r=>{let s=r.attributeName();return this.getOptionValue(s)===void 0?!1:this.getOptionValueSource(s)!=="default"});e.filter(r=>r.conflictsWith.length>0).forEach(r=>{let s=e.find(i=>r.conflictsWith.includes(i.attributeName()));s&&this._conflictingOption(r,s)})}_checkForConflictingOptions(){this._getCommandAndAncestors().forEach(e=>{e._checkForConflictingLocalOptions()})}parseOptions(e){let n=[],r=[],s=n;function i(l){return l.length>1&&l[0]==="-"}let o=l=>/^-(\d+|\d*\.\d+)(e[+-]?\d+)?$/.test(l)?!this._getCommandAndAncestors().some(d=>d.options.map(h=>h.short).some(h=>/^-\d$/.test(h))):!1,a=null,c=null,u=0;for(;u<e.length||c;){let l=c??e[u++];if(c=null,l==="--"){s===r&&s.push(l),s.push(...e.slice(u));break}if(a&&(!i(l)||o(l))){this.emit(`option:${a.name()}`,l);continue}if(a=null,i(l)){let d=this._findOption(l);if(d){if(d.required){let h=e[u++];h===void 0&&this.optionMissingArgument(d),this.emit(`option:${d.name()}`,h)}else if(d.optional){let h=null;u<e.length&&(!i(e[u])||o(e[u]))&&(h=e[u++]),this.emit(`option:${d.name()}`,h)}else this.emit(`option:${d.name()}`);a=d.variadic?d:null;continue}}if(l.length>2&&l[0]==="-"&&l[1]!=="-"){let d=this._findOption(`-${l[1]}`);if(d){d.required||d.optional&&this._combineFlagAndOptionalValue?this.emit(`option:${d.name()}`,l.slice(2)):(this.emit(`option:${d.name()}`),c=`-${l.slice(2)}`);continue}}if(/^--[^=]+=/.test(l)){let d=l.indexOf("="),h=this._findOption(l.slice(0,d));if(h&&(h.required||h.optional)){this.emit(`option:${h.name()}`,l.slice(d+1));continue}}if(s===n&&i(l)&&!(this.commands.length===0&&o(l))&&(s=r),(this._enablePositionalOptions||this._passThroughOptions)&&n.length===0&&r.length===0){if(this._findCommand(l)){n.push(l),r.push(...e.slice(u));break}else if(this._getHelpCommand()&&l===this._getHelpCommand().name()){n.push(l,...e.slice(u));break}else if(this._defaultCommandName){r.push(l,...e.slice(u));break}}if(this._passThroughOptions){s.push(l,...e.slice(u));break}s.push(l)}return{operands:n,unknown:r}}opts(){if(this._storeOptionsAsProperties){let e={},n=this.options.length;for(let r=0;r<n;r++){let s=this.options[r].attributeName();e[s]=s===this._versionOptionName?this._version:this[s]}return e}return this._optionValues}optsWithGlobals(){return this._getCommandAndAncestors().reduce((e,n)=>Object.assign(e,n.opts()),{})}error(e,n){this._outputConfiguration.outputError(`${e}
24
24
  `,this._outputConfiguration.writeErr),typeof this._showHelpAfterError=="string"?this._outputConfiguration.writeErr(`${this._showHelpAfterError}
25
25
  `):this._showHelpAfterError&&(this._outputConfiguration.writeErr(`
26
- `),this.outputHelp({error:!0}));let n=r||{},i=n.exitCode||1,s=n.code||"commander.error";this._exit(i,s,e)}_parseOptionsEnv(){this.options.forEach(e=>{if(e.envVar&&e.envVar in p.env){let r=e.attributeName();(this.getOptionValue(r)===void 0||["default","config","env"].includes(this.getOptionValueSource(r)))&&(e.required||e.optional?this.emit(`optionEnv:${e.name()}`,p.env[e.envVar]):this.emit(`optionEnv:${e.name()}`))}})}_parseOptionsImplied(){let e=new Rn(this.options),r=n=>this.getOptionValue(n)!==void 0&&!["default","implied"].includes(this.getOptionValueSource(n));this.options.filter(n=>n.implied!==void 0&&r(n.attributeName())&&e.valueFromOption(this.getOptionValue(n.attributeName()),n)).forEach(n=>{Object.keys(n.implied).filter(i=>!r(i)).forEach(i=>{this.setOptionValueWithSource(i,n.implied[i],"implied")})})}missingArgument(e){let r=`error: missing required argument '${e}'`;this.error(r,{code:"commander.missingArgument"})}optionMissingArgument(e){let r=`error: option '${e.flags}' argument missing`;this.error(r,{code:"commander.optionMissingArgument"})}missingMandatoryOptionValue(e){let r=`error: required option '${e.flags}' not specified`;this.error(r,{code:"commander.missingMandatoryOptionValue"})}_conflictingOption(e,r){let n=o=>{let a=o.attributeName(),c=this.getOptionValue(a),u=this.options.find(d=>d.negate&&a===d.attributeName()),l=this.options.find(d=>!d.negate&&a===d.attributeName());return u&&(u.presetArg===void 0&&c===!1||u.presetArg!==void 0&&c===u.presetArg)?u:l||o},i=o=>{let a=n(o),c=a.attributeName();return this.getOptionValueSource(c)==="env"?`environment variable '${a.envVar}'`:`option '${a.flags}'`},s=`error: ${i(e)} cannot be used with ${i(r)}`;this.error(s,{code:"commander.conflictingOption"})}unknownOption(e){if(this._allowUnknownOption)return;let r="";if(e.startsWith("--")&&this._showSuggestionAfterError){let i=[],s=this;do{let o=s.createHelp().visibleOptions(s).filter(a=>a.long).map(a=>a.long);i=i.concat(o),s=s.parent}while(s&&!s._enablePositionalOptions);r=It(e,i)}let n=`error: unknown option '${e}'${r}`;this.error(n,{code:"commander.unknownOption"})}_excessArguments(e){if(this._allowExcessArguments)return;let r=this.registeredArguments.length,n=r===1?"":"s",s=`error: too many arguments${this.parent?` for '${this.name()}'`:""}. Expected ${r} argument${n} but got ${e.length}.`;this.error(s,{code:"commander.excessArguments"})}unknownCommand(){let e=this.args[0],r="";if(this._showSuggestionAfterError){let i=[];this.createHelp().visibleCommands(this).forEach(s=>{i.push(s.name()),s.alias()&&i.push(s.alias())}),r=It(e,i)}let n=`error: unknown command '${e}'${r}`;this.error(n,{code:"commander.unknownCommand"})}version(e,r,n){if(e===void 0)return this._version;this._version=e,r=r||"-V, --version",n=n||"output the version number";let i=this.createOption(r,n);return this._versionOptionName=i.attributeName(),this._registerOption(i),this.on("option:"+i.name(),()=>{this._outputConfiguration.writeOut(`${e}
27
- `),this._exit(0,"commander.version",e)}),this}description(e,r){return e===void 0&&r===void 0?this._description:(this._description=e,r&&(this._argsDescription=r),this)}summary(e){return e===void 0?this._summary:(this._summary=e,this)}alias(e){if(e===void 0)return this._aliases[0];let r=this;if(this.commands.length!==0&&this.commands[this.commands.length-1]._executableHandler&&(r=this.commands[this.commands.length-1]),e===r._name)throw new Error("Command alias can't be the same as its name");let n=this.parent?._findCommand(e);if(n){let i=[n.name()].concat(n.aliases()).join("|");throw new Error(`cannot add alias '${e}' to command '${this.name()}' as already have command '${i}'`)}return r._aliases.push(e),this}aliases(e){return e===void 0?this._aliases:(e.forEach(r=>this.alias(r)),this)}usage(e){if(e===void 0){if(this._usage)return this._usage;let r=this.registeredArguments.map(n=>On(n));return[].concat(this.options.length||this._helpOption!==null?"[options]":[],this.commands.length?"[command]":[],this.registeredArguments.length?r:[]).join(" ")}return this._usage=e,this}name(e){return e===void 0?this._name:(this._name=e,this)}helpGroup(e){return e===void 0?this._helpGroupHeading??"":(this._helpGroupHeading=e,this)}commandsGroup(e){return e===void 0?this._defaultCommandGroup??"":(this._defaultCommandGroup=e,this)}optionsGroup(e){return e===void 0?this._defaultOptionGroup??"":(this._defaultOptionGroup=e,this)}_initOptionGroup(e){this._defaultOptionGroup&&!e.helpGroupHeading&&e.helpGroup(this._defaultOptionGroup)}_initCommandGroup(e){this._defaultCommandGroup&&!e.helpGroup()&&e.helpGroup(this._defaultCommandGroup)}nameFromFilename(e){return this._name=x.basename(e,x.extname(e)),this}executableDir(e){return e===void 0?this._executableDir:(this._executableDir=e,this)}helpInformation(e){let r=this.createHelp(),n=this._getOutputContext(e);r.prepareContext({error:n.error,helpWidth:n.helpWidth,outputHasColors:n.hasColors});let i=r.formatHelp(this,r);return n.hasColors?i:this._outputConfiguration.stripColor(i)}_getOutputContext(e){e=e||{};let r=!!e.error,n,i,s;return r?(n=a=>this._outputConfiguration.writeErr(a),i=this._outputConfiguration.getErrHasColors(),s=this._outputConfiguration.getErrHelpWidth()):(n=a=>this._outputConfiguration.writeOut(a),i=this._outputConfiguration.getOutHasColors(),s=this._outputConfiguration.getOutHelpWidth()),{error:r,write:a=>(i||(a=this._outputConfiguration.stripColor(a)),n(a)),hasColors:i,helpWidth:s}}outputHelp(e){let r;typeof e=="function"&&(r=e,e=void 0);let n=this._getOutputContext(e),i={error:n.error,write:n.write,command:this};this._getCommandAndAncestors().reverse().forEach(o=>o.emit("beforeAllHelp",i)),this.emit("beforeHelp",i);let s=this.helpInformation({error:n.error});if(r&&(s=r(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",i),this._getCommandAndAncestors().forEach(o=>o.emit("afterAllHelp",i))}helpOption(e,r){return typeof e=="boolean"?(e?(this._helpOption===null&&(this._helpOption=void 0),this._defaultOptionGroup&&this._initOptionGroup(this._getHelpOption())):this._helpOption=null,this):(this._helpOption=this.createOption(e??"-h, --help",r??"display help for command"),(e||r)&&this._initOptionGroup(this._helpOption),this)}_getHelpOption(){return this._helpOption===void 0&&this.helpOption(void 0,void 0),this._helpOption}addHelpOption(e){return this._helpOption=e,this._initOptionGroup(e),this}help(e){this.outputHelp(e);let r=Number(p.exitCode??0);r===0&&e&&typeof e!="function"&&e.error&&(r=1),this._exit(r,"commander.help","(outputHelp)")}addHelpText(e,r){let n=["beforeAll","before","after","afterAll"];if(!n.includes(e))throw new Error(`Unexpected value for position to addHelpText.
28
- Expecting one of '${n.join("', '")}'`);let i=`${e}Help`;return this.on(i,s=>{let o;typeof r=="function"?o=r({error:s.error,command:s.command}):o=r,o&&s.write(`${o}
29
- `)}),this}_outputHelpIfRequested(e){let r=this._getHelpOption();r&&e.find(i=>r.is(i))&&(this.outputHelp(),this._exit(0,"commander.helpDisplayed","(outputHelp)"))}};function Dt(t){return t.map(e=>{if(!e.startsWith("--inspect"))return e;let r,n="127.0.0.1",i="9229",s;return(s=e.match(/^(--inspect(-brk)?)$/))!==null?r=s[1]:(s=e.match(/^(--inspect(-brk|-port)?)=([^:]+)$/))!==null?(r=s[1],/^\d+$/.test(s[3])?i=s[3]:n=s[3]):(s=e.match(/^(--inspect(-brk|-port)?)=([^:]+):(\d+)$/))!==null&&(r=s[1],n=s[3],i=s[4]),r&&i!=="0"?`${r}=${n}:${parseInt(i)+1}`:e})}function Ve(){if(p.env.NO_COLOR||p.env.FORCE_COLOR==="0"||p.env.FORCE_COLOR==="false")return!1;if(p.env.FORCE_COLOR||p.env.CLICOLOR_FORCE!==void 0)return!0}Fe.Command=Me;Fe.useColor=Ve});var Kt=H($=>{var{Argument:Ut}=ce(),{Command:qe}=Ht(),{CommanderError:xn,InvalidArgumentError:Lt}=ee(),{Help:In}=He(),{Option:Nt}=Ke();$.program=new qe;$.createCommand=t=>new qe(t);$.createOption=(t,e)=>new Nt(t,e);$.createArgument=(t,e)=>new Ut(t,e);$.Command=qe;$.Option=Nt;$.Argument=Ut;$.Help=In;$.CommanderError=xn;$.InvalidArgumentError=Lt;$.InvalidOptionArgumentError=Lt});import{readFileSync as Et,writeFileSync as At,mkdirSync as zr,existsSync as ie,unlinkSync as Xr}from"node:fs";import{join as M}from"node:path";import{homedir as Qr}from"node:os";import{randomBytes as _t}from"node:crypto";var ot=new TextEncoder,et=new TextDecoder,vi=2**32;function ar(...t){let e=t.reduce((i,{length:s})=>i+s,0),r=new Uint8Array(e),n=0;for(let i of t)r.set(i,n),n+=i.length;return r}function pe(t){let e=new Uint8Array(t.length);for(let r=0;r<t.length;r++){let n=t.charCodeAt(r);if(n>127)throw new TypeError("non-ASCII string encountered in encode()");e[r]=n}return e}function at(t){if(Uint8Array.prototype.toBase64)return t.toBase64();let e=32768,r=[];for(let n=0;n<t.length;n+=e)r.push(String.fromCharCode.apply(null,t.subarray(n,n+e)));return btoa(r.join(""))}function ct(t){if(Uint8Array.fromBase64)return Uint8Array.fromBase64(t);let e=atob(t),r=new Uint8Array(e.length);for(let n=0;n<e.length;n++)r[n]=e.charCodeAt(n);return r}function cr(t){if(Uint8Array.fromBase64)return Uint8Array.fromBase64(typeof t=="string"?t:et.decode(t),{alphabet:"base64url"});let e=t;e instanceof Uint8Array&&(e=et.decode(e)),e=e.replace(/-/g,"+").replace(/_/g,"/");try{return ct(e)}catch{throw new TypeError("The input to be decoded is not correctly encoded.")}}function fe(t){let e=t;return typeof e=="string"&&(e=ot.encode(e)),Uint8Array.prototype.toBase64?e.toBase64({alphabet:"base64url",omitPadding:!0}):at(e).replace(/=/g,"").replace(/\+/g,"-").replace(/\//g,"_")}var I=(t,e="algorithm.name")=>new TypeError(`CryptoKey does not support this operation, its ${e} must be ${t}`),N=(t,e)=>t.name===e;function lr(t){return parseInt(t.name.slice(4),10)}function me(t,e){if(lr(t.hash)!==e)throw I(`SHA-${e}`,"algorithm.hash")}function ur(t){switch(t){case"ES256":return"P-256";case"ES384":return"P-384";case"ES512":return"P-521";default:throw new Error("unreachable")}}function dr(t,e){if(e&&!t.usages.includes(e))throw new TypeError(`CryptoKey does not support this operation, its usages must include ${e}.`)}function hr(t,e,r){switch(e){case"HS256":case"HS384":case"HS512":{if(!N(t.algorithm,"HMAC"))throw I("HMAC");me(t.algorithm,parseInt(e.slice(2),10));break}case"RS256":case"RS384":case"RS512":{if(!N(t.algorithm,"RSASSA-PKCS1-v1_5"))throw I("RSASSA-PKCS1-v1_5");me(t.algorithm,parseInt(e.slice(2),10));break}case"PS256":case"PS384":case"PS512":{if(!N(t.algorithm,"RSA-PSS"))throw I("RSA-PSS");me(t.algorithm,parseInt(e.slice(2),10));break}case"Ed25519":case"EdDSA":{if(!N(t.algorithm,"Ed25519"))throw I("Ed25519");break}case"ML-DSA-44":case"ML-DSA-65":case"ML-DSA-87":{if(!N(t.algorithm,e))throw I(e);break}case"ES256":case"ES384":case"ES512":{if(!N(t.algorithm,"ECDSA"))throw I("ECDSA");let n=ur(e);if(t.algorithm.namedCurve!==n)throw I(n,"algorithm.namedCurve");break}default:throw new TypeError("CryptoKey does not support this operation")}dr(t,r)}function lt(t,e,...r){if(r=r.filter(Boolean),r.length>2){let n=r.pop();t+=`one of type ${r.join(", ")}, or ${n}.`}else r.length===2?t+=`one of type ${r[0]} or ${r[1]}.`:t+=`of type ${r[0]}.`;return e==null?t+=` Received ${e}`:typeof e=="function"&&e.name?t+=` Received function ${e.name}`:typeof e=="object"&&e!=null&&e.constructor?.name&&(t+=` Received an instance of ${e.constructor.name}`),t}var ut=(t,...e)=>lt("Key must be ",t,...e),dt=(t,e,...r)=>lt(`Key for the ${t} algorithm must be `,e,...r),_e=class extends Error{static code="ERR_JOSE_GENERIC";code="ERR_JOSE_GENERIC";constructor(t,e){super(t,e),this.name=this.constructor.name,Error.captureStackTrace?.(this,this.constructor)}},C=class extends _e{static code="ERR_JOSE_NOT_SUPPORTED";code="ERR_JOSE_NOT_SUPPORTED"},X=class extends _e{static code="ERR_JWS_INVALID";code="ERR_JWS_INVALID"},pr=class extends _e{static code="ERR_JWT_INVALID";code="ERR_JWT_INVALID"},Se=t=>{if(t?.[Symbol.toStringTag]==="CryptoKey")return!0;try{return t instanceof CryptoKey}catch{return!1}},ve=t=>t?.[Symbol.toStringTag]==="KeyObject",ht=t=>Se(t)||ve(t),ki=Symbol();function tt(t,e){if(t)throw new TypeError(`${e} can only be called once`)}var fr=t=>typeof t=="object"&&t!==null;function pt(t){if(!fr(t)||Object.prototype.toString.call(t)!=="[object Object]")return!1;if(Object.getPrototypeOf(t)===null)return!0;let e=t;for(;Object.getPrototypeOf(e)!==null;)e=Object.getPrototypeOf(e);return Object.getPrototypeOf(t)===e}function mr(...t){let e=t.filter(Boolean);if(e.length===0||e.length===1)return!0;let r;for(let n of e){let i=Object.keys(n);if(!r||r.size===0){r=new Set(i);continue}for(let s of i){if(r.has(s))return!1;r.add(s)}}return!0}var ke=t=>pt(t)&&typeof t.kty=="string",gr=t=>t.kty!=="oct"&&(t.kty==="AKP"&&typeof t.priv=="string"||typeof t.d=="string"),yr=t=>t.kty!=="oct"&&t.d===void 0&&t.priv===void 0,wr=t=>t.kty==="oct"&&typeof t.k=="string";function br(t,e){if(t.startsWith("RS")||t.startsWith("PS")){let{modulusLength:r}=e.algorithm;if(typeof r!="number"||r<2048)throw new TypeError(`${t} requires key modulusLength to be 2048 bits or larger`)}}function Er(t,e){let r=`SHA-${t.slice(-3)}`;switch(t){case"HS256":case"HS384":case"HS512":return{hash:r,name:"HMAC"};case"PS256":case"PS384":case"PS512":return{hash:r,name:"RSA-PSS",saltLength:parseInt(t.slice(-3),10)>>3};case"RS256":case"RS384":case"RS512":return{hash:r,name:"RSASSA-PKCS1-v1_5"};case"ES256":case"ES384":case"ES512":return{hash:r,name:"ECDSA",namedCurve:e.namedCurve};case"Ed25519":case"EdDSA":return{name:"Ed25519"};case"ML-DSA-44":case"ML-DSA-65":case"ML-DSA-87":return{name:t};default:throw new C(`alg ${t} is not supported either by JOSE or your javascript runtime`)}}async function Ar(t,e,r){if(e instanceof Uint8Array){if(!t.startsWith("HS"))throw new TypeError(ut(e,"CryptoKey","KeyObject","JSON Web Key"));return crypto.subtle.importKey("raw",e,{hash:`SHA-${t.slice(-3)}`,name:"HMAC"},!1,[r])}return hr(e,t,r),e}async function _r(t,e,r){let n=await Ar(t,e,"sign");br(t,n);let i=await crypto.subtle.sign(Er(t,n.algorithm),n,r);return new Uint8Array(i)}var re='Invalid or unsupported JWK "alg" (Algorithm) Parameter value';function Sr(t){let e,r;switch(t.kty){case"AKP":{switch(t.alg){case"ML-DSA-44":case"ML-DSA-65":case"ML-DSA-87":e={name:t.alg},r=t.priv?["sign"]:["verify"];break;default:throw new C(re)}break}case"RSA":{switch(t.alg){case"PS256":case"PS384":case"PS512":e={name:"RSA-PSS",hash:`SHA-${t.alg.slice(-3)}`},r=t.d?["sign"]:["verify"];break;case"RS256":case"RS384":case"RS512":e={name:"RSASSA-PKCS1-v1_5",hash:`SHA-${t.alg.slice(-3)}`},r=t.d?["sign"]:["verify"];break;case"RSA-OAEP":case"RSA-OAEP-256":case"RSA-OAEP-384":case"RSA-OAEP-512":e={name:"RSA-OAEP",hash:`SHA-${parseInt(t.alg.slice(-3),10)||1}`},r=t.d?["decrypt","unwrapKey"]:["encrypt","wrapKey"];break;default:throw new C(re)}break}case"EC":{switch(t.alg){case"ES256":case"ES384":case"ES512":e={name:"ECDSA",namedCurve:{ES256:"P-256",ES384:"P-384",ES512:"P-521"}[t.alg]},r=t.d?["sign"]:["verify"];break;case"ECDH-ES":case"ECDH-ES+A128KW":case"ECDH-ES+A192KW":case"ECDH-ES+A256KW":e={name:"ECDH",namedCurve:t.crv},r=t.d?["deriveBits"]:[];break;default:throw new C(re)}break}case"OKP":{switch(t.alg){case"Ed25519":case"EdDSA":e={name:"Ed25519"},r=t.d?["sign"]:["verify"];break;case"ECDH-ES":case"ECDH-ES+A128KW":case"ECDH-ES+A192KW":case"ECDH-ES+A256KW":e={name:t.crv},r=t.d?["deriveBits"]:[];break;default:throw new C(re)}break}default:throw new C('Invalid or unsupported JWK "kty" (Key Type) Parameter value')}return{algorithm:e,keyUsages:r}}async function vr(t){if(!t.alg)throw new TypeError('"alg" argument is required when "jwk.alg" is not present');let{algorithm:e,keyUsages:r}=Sr(t),n={...t};return n.kty!=="AKP"&&delete n.alg,delete n.use,crypto.subtle.importKey("jwk",n,e,t.ext??!(t.d||t.priv),t.key_ops??r)}var K="given KeyObject instance cannot be used for this algorithm",j,rt=async(t,e,r,n=!1)=>{j||=new WeakMap;let i=j.get(t);if(i?.[r])return i[r];let s=await vr({...e,alg:r});return n&&Object.freeze(t),i?i[r]=s:j.set(t,{[r]:s}),s},kr=(t,e)=>{j||=new WeakMap;let r=j.get(t);if(r?.[e])return r[e];let n=t.type==="public",i=!!n,s;if(t.asymmetricKeyType==="x25519"){switch(e){case"ECDH-ES":case"ECDH-ES+A128KW":case"ECDH-ES+A192KW":case"ECDH-ES+A256KW":break;default:throw new TypeError(K)}s=t.toCryptoKey(t.asymmetricKeyType,i,n?[]:["deriveBits"])}if(t.asymmetricKeyType==="ed25519"){if(e!=="EdDSA"&&e!=="Ed25519")throw new TypeError(K);s=t.toCryptoKey(t.asymmetricKeyType,i,[n?"verify":"sign"])}switch(t.asymmetricKeyType){case"ml-dsa-44":case"ml-dsa-65":case"ml-dsa-87":{if(e!==t.asymmetricKeyType.toUpperCase())throw new TypeError(K);s=t.toCryptoKey(t.asymmetricKeyType,i,[n?"verify":"sign"])}}if(t.asymmetricKeyType==="rsa"){let o;switch(e){case"RSA-OAEP":o="SHA-1";break;case"RS256":case"PS256":case"RSA-OAEP-256":o="SHA-256";break;case"RS384":case"PS384":case"RSA-OAEP-384":o="SHA-384";break;case"RS512":case"PS512":case"RSA-OAEP-512":o="SHA-512";break;default:throw new TypeError(K)}if(e.startsWith("RSA-OAEP"))return t.toCryptoKey({name:"RSA-OAEP",hash:o},i,n?["encrypt"]:["decrypt"]);s=t.toCryptoKey({name:e.startsWith("PS")?"RSA-PSS":"RSASSA-PKCS1-v1_5",hash:o},i,[n?"verify":"sign"])}if(t.asymmetricKeyType==="ec"){let o=new Map([["prime256v1","P-256"],["secp384r1","P-384"],["secp521r1","P-521"]]).get(t.asymmetricKeyDetails?.namedCurve);if(!o)throw new TypeError(K);let a={ES256:"P-256",ES384:"P-384",ES512:"P-521"};a[e]&&o===a[e]&&(s=t.toCryptoKey({name:"ECDSA",namedCurve:o},i,[n?"verify":"sign"])),e.startsWith("ECDH-ES")&&(s=t.toCryptoKey({name:"ECDH",namedCurve:o},i,n?[]:["deriveBits"]))}if(!s)throw new TypeError(K);return r?r[e]=s:j.set(t,{[e]:s}),s};async function Cr(t,e){if(t instanceof Uint8Array||Se(t))return t;if(ve(t)){if(t.type==="secret")return t.export();if("toCryptoKey"in t&&typeof t.toCryptoKey=="function")try{return kr(t,e)}catch(n){if(n instanceof TypeError)throw n}let r=t.export({format:"jwk"});return rt(t,r,e)}if(ke(t))return t.k?cr(t.k):rt(t,t,e,!0);throw new Error("unreachable")}var $r=(t,e)=>{let r=(t.match(/.{1,64}/g)||[]).join(`
26
+ `),this.outputHelp({error:!0}));let r=n||{},s=r.exitCode||1,i=r.code||"commander.error";this._exit(s,i,e)}_parseOptionsEnv(){this.options.forEach(e=>{if(e.envVar&&e.envVar in m.env){let n=e.attributeName();(this.getOptionValue(n)===void 0||["default","config","env"].includes(this.getOptionValueSource(n)))&&(e.required||e.optional?this.emit(`optionEnv:${e.name()}`,m.env[e.envVar]):this.emit(`optionEnv:${e.name()}`))}})}_parseOptionsImplied(){let e=new Rr(this.options),n=r=>this.getOptionValue(r)!==void 0&&!["default","implied"].includes(this.getOptionValueSource(r));this.options.filter(r=>r.implied!==void 0&&n(r.attributeName())&&e.valueFromOption(this.getOptionValue(r.attributeName()),r)).forEach(r=>{Object.keys(r.implied).filter(s=>!n(s)).forEach(s=>{this.setOptionValueWithSource(s,r.implied[s],"implied")})})}missingArgument(e){let n=`error: missing required argument '${e}'`;this.error(n,{code:"commander.missingArgument"})}optionMissingArgument(e){let n=`error: option '${e.flags}' argument missing`;this.error(n,{code:"commander.optionMissingArgument"})}missingMandatoryOptionValue(e){let n=`error: required option '${e.flags}' not specified`;this.error(n,{code:"commander.missingMandatoryOptionValue"})}_conflictingOption(e,n){let r=o=>{let a=o.attributeName(),c=this.getOptionValue(a),u=this.options.find(d=>d.negate&&a===d.attributeName()),l=this.options.find(d=>!d.negate&&a===d.attributeName());return u&&(u.presetArg===void 0&&c===!1||u.presetArg!==void 0&&c===u.presetArg)?u:l||o},s=o=>{let a=r(o),c=a.attributeName();return this.getOptionValueSource(c)==="env"?`environment variable '${a.envVar}'`:`option '${a.flags}'`},i=`error: ${s(e)} cannot be used with ${s(n)}`;this.error(i,{code:"commander.conflictingOption"})}unknownOption(e){if(this._allowUnknownOption)return;let n="";if(e.startsWith("--")&&this._showSuggestionAfterError){let s=[],i=this;do{let o=i.createHelp().visibleOptions(i).filter(a=>a.long).map(a=>a.long);s=s.concat(o),i=i.parent}while(i&&!i._enablePositionalOptions);n=It(e,s)}let r=`error: unknown option '${e}'${n}`;this.error(r,{code:"commander.unknownOption"})}_excessArguments(e){if(this._allowExcessArguments)return;let n=this.registeredArguments.length,r=n===1?"":"s",i=`error: too many arguments${this.parent?` for '${this.name()}'`:""}. Expected ${n} argument${r} but got ${e.length}.`;this.error(i,{code:"commander.excessArguments"})}unknownCommand(){let e=this.args[0],n="";if(this._showSuggestionAfterError){let s=[];this.createHelp().visibleCommands(this).forEach(i=>{s.push(i.name()),i.alias()&&s.push(i.alias())}),n=It(e,s)}let r=`error: unknown command '${e}'${n}`;this.error(r,{code:"commander.unknownCommand"})}version(e,n,r){if(e===void 0)return this._version;this._version=e,n=n||"-V, --version",r=r||"output the version number";let s=this.createOption(n,r);return this._versionOptionName=s.attributeName(),this._registerOption(s),this.on("option:"+s.name(),()=>{this._outputConfiguration.writeOut(`${e}
27
+ `),this._exit(0,"commander.version",e)}),this}description(e,n){return e===void 0&&n===void 0?this._description:(this._description=e,n&&(this._argsDescription=n),this)}summary(e){return e===void 0?this._summary:(this._summary=e,this)}alias(e){if(e===void 0)return this._aliases[0];let n=this;if(this.commands.length!==0&&this.commands[this.commands.length-1]._executableHandler&&(n=this.commands[this.commands.length-1]),e===n._name)throw new Error("Command alias can't be the same as its name");let r=this.parent?._findCommand(e);if(r){let s=[r.name()].concat(r.aliases()).join("|");throw new Error(`cannot add alias '${e}' to command '${this.name()}' as already have command '${s}'`)}return n._aliases.push(e),this}aliases(e){return e===void 0?this._aliases:(e.forEach(n=>this.alias(n)),this)}usage(e){if(e===void 0){if(this._usage)return this._usage;let n=this.registeredArguments.map(r=>Tr(r));return[].concat(this.options.length||this._helpOption!==null?"[options]":[],this.commands.length?"[command]":[],this.registeredArguments.length?n:[]).join(" ")}return this._usage=e,this}name(e){return e===void 0?this._name:(this._name=e,this)}helpGroup(e){return e===void 0?this._helpGroupHeading??"":(this._helpGroupHeading=e,this)}commandsGroup(e){return e===void 0?this._defaultCommandGroup??"":(this._defaultCommandGroup=e,this)}optionsGroup(e){return e===void 0?this._defaultOptionGroup??"":(this._defaultOptionGroup=e,this)}_initOptionGroup(e){this._defaultOptionGroup&&!e.helpGroupHeading&&e.helpGroup(this._defaultOptionGroup)}_initCommandGroup(e){this._defaultCommandGroup&&!e.helpGroup()&&e.helpGroup(this._defaultCommandGroup)}nameFromFilename(e){return this._name=I.basename(e,I.extname(e)),this}executableDir(e){return e===void 0?this._executableDir:(this._executableDir=e,this)}helpInformation(e){let n=this.createHelp(),r=this._getOutputContext(e);n.prepareContext({error:r.error,helpWidth:r.helpWidth,outputHasColors:r.hasColors});let s=n.formatHelp(this,n);return r.hasColors?s:this._outputConfiguration.stripColor(s)}_getOutputContext(e){e=e||{};let n=!!e.error,r,s,i;return n?(r=a=>this._outputConfiguration.writeErr(a),s=this._outputConfiguration.getErrHasColors(),i=this._outputConfiguration.getErrHelpWidth()):(r=a=>this._outputConfiguration.writeOut(a),s=this._outputConfiguration.getOutHasColors(),i=this._outputConfiguration.getOutHelpWidth()),{error:n,write:a=>(s||(a=this._outputConfiguration.stripColor(a)),r(a)),hasColors:s,helpWidth:i}}outputHelp(e){let n;typeof e=="function"&&(n=e,e=void 0);let r=this._getOutputContext(e),s={error:r.error,write:r.write,command:this};this._getCommandAndAncestors().reverse().forEach(o=>o.emit("beforeAllHelp",s)),this.emit("beforeHelp",s);let i=this.helpInformation({error:r.error});if(n&&(i=n(i),typeof i!="string"&&!Buffer.isBuffer(i)))throw new Error("outputHelp callback must return a string or a Buffer");r.write(i),this._getHelpOption()?.long&&this.emit(this._getHelpOption().long),this.emit("afterHelp",s),this._getCommandAndAncestors().forEach(o=>o.emit("afterAllHelp",s))}helpOption(e,n){return typeof e=="boolean"?(e?(this._helpOption===null&&(this._helpOption=void 0),this._defaultOptionGroup&&this._initOptionGroup(this._getHelpOption())):this._helpOption=null,this):(this._helpOption=this.createOption(e??"-h, --help",n??"display help for command"),(e||n)&&this._initOptionGroup(this._helpOption),this)}_getHelpOption(){return this._helpOption===void 0&&this.helpOption(void 0,void 0),this._helpOption}addHelpOption(e){return this._helpOption=e,this._initOptionGroup(e),this}help(e){this.outputHelp(e);let n=Number(m.exitCode??0);n===0&&e&&typeof e!="function"&&e.error&&(n=1),this._exit(n,"commander.help","(outputHelp)")}addHelpText(e,n){let r=["beforeAll","before","after","afterAll"];if(!r.includes(e))throw new Error(`Unexpected value for position to addHelpText.
28
+ Expecting one of '${r.join("', '")}'`);let s=`${e}Help`;return this.on(s,i=>{let o;typeof n=="function"?o=n({error:i.error,command:i.command}):o=n,o&&i.write(`${o}
29
+ `)}),this}_outputHelpIfRequested(e){let n=this._getHelpOption();n&&e.find(s=>n.is(s))&&(this.outputHelp(),this._exit(0,"commander.helpDisplayed","(outputHelp)"))}};function Dt(t){return t.map(e=>{if(!e.startsWith("--inspect"))return e;let n,r="127.0.0.1",s="9229",i;return(i=e.match(/^(--inspect(-brk)?)$/))!==null?n=i[1]:(i=e.match(/^(--inspect(-brk|-port)?)=([^:]+)$/))!==null?(n=i[1],/^\d+$/.test(i[3])?s=i[3]:r=i[3]):(i=e.match(/^(--inspect(-brk|-port)?)=([^:]+):(\d+)$/))!==null&&(n=i[1],r=i[3],s=i[4]),n&&s!=="0"?`${n}=${r}:${parseInt(s)+1}`:e})}function Ve(){if(m.env.NO_COLOR||m.env.FORCE_COLOR==="0"||m.env.FORCE_COLOR==="false")return!1;if(m.env.FORCE_COLOR||m.env.CLICOLOR_FORCE!==void 0)return!0}Fe.Command=Me;Fe.useColor=Ve});var Kt=H(T=>{var{Argument:Ht}=ce(),{Command:qe}=Ut(),{CommanderError:xr,InvalidArgumentError:Nt}=ee(),{Help:Ir}=Ue(),{Option:Lt}=Ke();T.program=new qe;T.createCommand=t=>new qe(t);T.createOption=(t,e)=>new Lt(t,e);T.createArgument=(t,e)=>new Ht(t,e);T.Command=qe;T.Option=Lt;T.Argument=Ht;T.Help=Ir;T.CommanderError=xr;T.InvalidArgumentError=Nt;T.InvalidOptionArgumentError=Nt});import{readFileSync as Et,writeFileSync as vt,mkdirSync as Xn,existsSync as se,unlinkSync as Qn}from"node:fs";import{join as V}from"node:path";import{homedir as Zn}from"node:os";import{randomBytes as At}from"node:crypto";var ot=new TextEncoder,et=new TextDecoder,Ts=2**32;function cn(...t){let e=t.reduce((s,{length:i})=>s+i,0),n=new Uint8Array(e),r=0;for(let s of t)n.set(s,r),r+=s.length;return n}function pe(t){let e=new Uint8Array(t.length);for(let n=0;n<t.length;n++){let r=t.charCodeAt(n);if(r>127)throw new TypeError("non-ASCII string encountered in encode()");e[n]=r}return e}function at(t){if(Uint8Array.prototype.toBase64)return t.toBase64();let e=32768,n=[];for(let r=0;r<t.length;r+=e)n.push(String.fromCharCode.apply(null,t.subarray(r,r+e)));return btoa(n.join(""))}function ct(t){if(Uint8Array.fromBase64)return Uint8Array.fromBase64(t);let e=atob(t),n=new Uint8Array(e.length);for(let r=0;r<e.length;r++)n[r]=e.charCodeAt(r);return n}function ln(t){if(Uint8Array.fromBase64)return Uint8Array.fromBase64(typeof t=="string"?t:et.decode(t),{alphabet:"base64url"});let e=t;e instanceof Uint8Array&&(e=et.decode(e)),e=e.replace(/-/g,"+").replace(/_/g,"/");try{return ct(e)}catch{throw new TypeError("The input to be decoded is not correctly encoded.")}}function fe(t){let e=t;return typeof e=="string"&&(e=ot.encode(e)),Uint8Array.prototype.toBase64?e.toBase64({alphabet:"base64url",omitPadding:!0}):at(e).replace(/=/g,"").replace(/\+/g,"-").replace(/\//g,"_")}var U=(t,e="algorithm.name")=>new TypeError(`CryptoKey does not support this operation, its ${e} must be ${t}`),K=(t,e)=>t.name===e;function un(t){return parseInt(t.name.slice(4),10)}function me(t,e){if(un(t.hash)!==e)throw U(`SHA-${e}`,"algorithm.hash")}function dn(t){switch(t){case"ES256":return"P-256";case"ES384":return"P-384";case"ES512":return"P-521";default:throw new Error("unreachable")}}function hn(t,e){if(e&&!t.usages.includes(e))throw new TypeError(`CryptoKey does not support this operation, its usages must include ${e}.`)}function pn(t,e,n){switch(e){case"HS256":case"HS384":case"HS512":{if(!K(t.algorithm,"HMAC"))throw U("HMAC");me(t.algorithm,parseInt(e.slice(2),10));break}case"RS256":case"RS384":case"RS512":{if(!K(t.algorithm,"RSASSA-PKCS1-v1_5"))throw U("RSASSA-PKCS1-v1_5");me(t.algorithm,parseInt(e.slice(2),10));break}case"PS256":case"PS384":case"PS512":{if(!K(t.algorithm,"RSA-PSS"))throw U("RSA-PSS");me(t.algorithm,parseInt(e.slice(2),10));break}case"Ed25519":case"EdDSA":{if(!K(t.algorithm,"Ed25519"))throw U("Ed25519");break}case"ML-DSA-44":case"ML-DSA-65":case"ML-DSA-87":{if(!K(t.algorithm,e))throw U(e);break}case"ES256":case"ES384":case"ES512":{if(!K(t.algorithm,"ECDSA"))throw U("ECDSA");let r=dn(e);if(t.algorithm.namedCurve!==r)throw U(r,"algorithm.namedCurve");break}default:throw new TypeError("CryptoKey does not support this operation")}hn(t,n)}function lt(t,e,...n){if(n=n.filter(Boolean),n.length>2){let r=n.pop();t+=`one of type ${n.join(", ")}, or ${r}.`}else n.length===2?t+=`one of type ${n[0]} or ${n[1]}.`:t+=`of type ${n[0]}.`;return e==null?t+=` Received ${e}`:typeof e=="function"&&e.name?t+=` Received function ${e.name}`:typeof e=="object"&&e!=null&&e.constructor?.name&&(t+=` Received an instance of ${e.constructor.name}`),t}var ut=(t,...e)=>lt("Key must be ",t,...e),dt=(t,e,...n)=>lt(`Key for the ${t} algorithm must be `,e,...n),Ae=class extends Error{static code="ERR_JOSE_GENERIC";code="ERR_JOSE_GENERIC";constructor(t,e){super(t,e),this.name=this.constructor.name,Error.captureStackTrace?.(this,this.constructor)}},C=class extends Ae{static code="ERR_JOSE_NOT_SUPPORTED";code="ERR_JOSE_NOT_SUPPORTED"},X=class extends Ae{static code="ERR_JWS_INVALID";code="ERR_JWS_INVALID"},fn=class extends Ae{static code="ERR_JWT_INVALID";code="ERR_JWT_INVALID"},ke=t=>{if(t?.[Symbol.toStringTag]==="CryptoKey")return!0;try{return t instanceof CryptoKey}catch{return!1}},_e=t=>t?.[Symbol.toStringTag]==="KeyObject",ht=t=>ke(t)||_e(t),Os=Symbol();function tt(t,e){if(t)throw new TypeError(`${e} can only be called once`)}var mn=t=>typeof t=="object"&&t!==null;function pt(t){if(!mn(t)||Object.prototype.toString.call(t)!=="[object Object]")return!1;if(Object.getPrototypeOf(t)===null)return!0;let e=t;for(;Object.getPrototypeOf(e)!==null;)e=Object.getPrototypeOf(e);return Object.getPrototypeOf(t)===e}function gn(...t){let e=t.filter(Boolean);if(e.length===0||e.length===1)return!0;let n;for(let r of e){let s=Object.keys(r);if(!n||n.size===0){n=new Set(s);continue}for(let i of s){if(n.has(i))return!1;n.add(i)}}return!0}var Se=t=>pt(t)&&typeof t.kty=="string",yn=t=>t.kty!=="oct"&&(t.kty==="AKP"&&typeof t.priv=="string"||typeof t.d=="string"),wn=t=>t.kty!=="oct"&&t.d===void 0&&t.priv===void 0,bn=t=>t.kty==="oct"&&typeof t.k=="string";function En(t,e){if(t.startsWith("RS")||t.startsWith("PS")){let{modulusLength:n}=e.algorithm;if(typeof n!="number"||n<2048)throw new TypeError(`${t} requires key modulusLength to be 2048 bits or larger`)}}function vn(t,e){let n=`SHA-${t.slice(-3)}`;switch(t){case"HS256":case"HS384":case"HS512":return{hash:n,name:"HMAC"};case"PS256":case"PS384":case"PS512":return{hash:n,name:"RSA-PSS",saltLength:parseInt(t.slice(-3),10)>>3};case"RS256":case"RS384":case"RS512":return{hash:n,name:"RSASSA-PKCS1-v1_5"};case"ES256":case"ES384":case"ES512":return{hash:n,name:"ECDSA",namedCurve:e.namedCurve};case"Ed25519":case"EdDSA":return{name:"Ed25519"};case"ML-DSA-44":case"ML-DSA-65":case"ML-DSA-87":return{name:t};default:throw new C(`alg ${t} is not supported either by JOSE or your javascript runtime`)}}async function An(t,e,n){if(e instanceof Uint8Array){if(!t.startsWith("HS"))throw new TypeError(ut(e,"CryptoKey","KeyObject","JSON Web Key"));return crypto.subtle.importKey("raw",e,{hash:`SHA-${t.slice(-3)}`,name:"HMAC"},!1,[n])}return pn(e,t,n),e}async function kn(t,e,n){let r=await An(t,e,"sign");En(t,r);let s=await crypto.subtle.sign(vn(t,r.algorithm),r,n);return new Uint8Array(s)}var ne='Invalid or unsupported JWK "alg" (Algorithm) Parameter value';function _n(t){let e,n;switch(t.kty){case"AKP":{switch(t.alg){case"ML-DSA-44":case"ML-DSA-65":case"ML-DSA-87":e={name:t.alg},n=t.priv?["sign"]:["verify"];break;default:throw new C(ne)}break}case"RSA":{switch(t.alg){case"PS256":case"PS384":case"PS512":e={name:"RSA-PSS",hash:`SHA-${t.alg.slice(-3)}`},n=t.d?["sign"]:["verify"];break;case"RS256":case"RS384":case"RS512":e={name:"RSASSA-PKCS1-v1_5",hash:`SHA-${t.alg.slice(-3)}`},n=t.d?["sign"]:["verify"];break;case"RSA-OAEP":case"RSA-OAEP-256":case"RSA-OAEP-384":case"RSA-OAEP-512":e={name:"RSA-OAEP",hash:`SHA-${parseInt(t.alg.slice(-3),10)||1}`},n=t.d?["decrypt","unwrapKey"]:["encrypt","wrapKey"];break;default:throw new C(ne)}break}case"EC":{switch(t.alg){case"ES256":case"ES384":case"ES512":e={name:"ECDSA",namedCurve:{ES256:"P-256",ES384:"P-384",ES512:"P-521"}[t.alg]},n=t.d?["sign"]:["verify"];break;case"ECDH-ES":case"ECDH-ES+A128KW":case"ECDH-ES+A192KW":case"ECDH-ES+A256KW":e={name:"ECDH",namedCurve:t.crv},n=t.d?["deriveBits"]:[];break;default:throw new C(ne)}break}case"OKP":{switch(t.alg){case"Ed25519":case"EdDSA":e={name:"Ed25519"},n=t.d?["sign"]:["verify"];break;case"ECDH-ES":case"ECDH-ES+A128KW":case"ECDH-ES+A192KW":case"ECDH-ES+A256KW":e={name:t.crv},n=t.d?["deriveBits"]:[];break;default:throw new C(ne)}break}default:throw new C('Invalid or unsupported JWK "kty" (Key Type) Parameter value')}return{algorithm:e,keyUsages:n}}async function Sn(t){if(!t.alg)throw new TypeError('"alg" argument is required when "jwk.alg" is not present');let{algorithm:e,keyUsages:n}=_n(t),r={...t};return r.kty!=="AKP"&&delete r.alg,delete r.use,crypto.subtle.importKey("jwk",r,e,t.ext??!(t.d||t.priv),t.key_ops??n)}var W="given KeyObject instance cannot be used for this algorithm",M,nt=async(t,e,n,r=!1)=>{M||=new WeakMap;let s=M.get(t);if(s?.[n])return s[n];let i=await Sn({...e,alg:n});return r&&Object.freeze(t),s?s[n]=i:M.set(t,{[n]:i}),i},$n=(t,e)=>{M||=new WeakMap;let n=M.get(t);if(n?.[e])return n[e];let r=t.type==="public",s=!!r,i;if(t.asymmetricKeyType==="x25519"){switch(e){case"ECDH-ES":case"ECDH-ES+A128KW":case"ECDH-ES+A192KW":case"ECDH-ES+A256KW":break;default:throw new TypeError(W)}i=t.toCryptoKey(t.asymmetricKeyType,s,r?[]:["deriveBits"])}if(t.asymmetricKeyType==="ed25519"){if(e!=="EdDSA"&&e!=="Ed25519")throw new TypeError(W);i=t.toCryptoKey(t.asymmetricKeyType,s,[r?"verify":"sign"])}switch(t.asymmetricKeyType){case"ml-dsa-44":case"ml-dsa-65":case"ml-dsa-87":{if(e!==t.asymmetricKeyType.toUpperCase())throw new TypeError(W);i=t.toCryptoKey(t.asymmetricKeyType,s,[r?"verify":"sign"])}}if(t.asymmetricKeyType==="rsa"){let o;switch(e){case"RSA-OAEP":o="SHA-1";break;case"RS256":case"PS256":case"RSA-OAEP-256":o="SHA-256";break;case"RS384":case"PS384":case"RSA-OAEP-384":o="SHA-384";break;case"RS512":case"PS512":case"RSA-OAEP-512":o="SHA-512";break;default:throw new TypeError(W)}if(e.startsWith("RSA-OAEP"))return t.toCryptoKey({name:"RSA-OAEP",hash:o},s,r?["encrypt"]:["decrypt"]);i=t.toCryptoKey({name:e.startsWith("PS")?"RSA-PSS":"RSASSA-PKCS1-v1_5",hash:o},s,[r?"verify":"sign"])}if(t.asymmetricKeyType==="ec"){let o=new Map([["prime256v1","P-256"],["secp384r1","P-384"],["secp521r1","P-521"]]).get(t.asymmetricKeyDetails?.namedCurve);if(!o)throw new TypeError(W);let a={ES256:"P-256",ES384:"P-384",ES512:"P-521"};a[e]&&o===a[e]&&(i=t.toCryptoKey({name:"ECDSA",namedCurve:o},s,[r?"verify":"sign"])),e.startsWith("ECDH-ES")&&(i=t.toCryptoKey({name:"ECDH",namedCurve:o},s,r?[]:["deriveBits"]))}if(!i)throw new TypeError(W);return n?n[e]=i:M.set(t,{[e]:i}),i};async function Cn(t,e){if(t instanceof Uint8Array||ke(t))return t;if(_e(t)){if(t.type==="secret")return t.export();if("toCryptoKey"in t&&typeof t.toCryptoKey=="function")try{return $n(t,e)}catch(r){if(r instanceof TypeError)throw r}let n=t.export({format:"jwk"});return nt(t,n,e)}if(Se(t))return t.k?ln(t.k):nt(t,t,e,!0);throw new Error("unreachable")}var Tn=(t,e)=>{let n=(t.match(/.{1,64}/g)||[]).join(`
30
30
  `);return`-----BEGIN ${e}-----
31
- ${r}
32
- -----END ${e}-----`},ft=async(t,e,r)=>{if(ve(r)){if(r.type!==t)throw new TypeError(`key is not a ${t} key`);return r.export({format:"pem",type:e})}if(!Se(r))throw new TypeError(ut(r,"CryptoKey","KeyObject"));if(!r.extractable)throw new TypeError("CryptoKey is not extractable");if(r.type!==t)throw new TypeError(`key is not a ${t} key`);return $r(at(new Uint8Array(await crypto.subtle.exportKey(e,r))),`${t.toUpperCase()} KEY`)},Or=t=>ft("public","spki",t),Tr=t=>ft("private","pkcs8",t),ge=(t,e)=>{if(t.byteLength!==e.length)return!1;for(let r=0;r<t.byteLength;r++)if(t[r]!==e[r])return!1;return!0},Pr=t=>({data:t,pos:0}),Q=t=>{let e=t.data[t.pos++];if(e&128){let r=e&127,n=0;for(let i=0;i<r;i++)n=n<<8|t.data[t.pos++];return n}return e},Z=(t,e,r)=>{if(t.data[t.pos++]!==e)throw new Error(r)},mt=(t,e)=>{let r=t.data.subarray(t.pos,t.pos+e);return t.pos+=e,r},Rr=t=>{Z(t,6,"Expected algorithm OID");let e=Q(t);return mt(t,e)};function xr(t){Z(t,48,"Invalid PKCS#8 structure"),Q(t),Z(t,2,"Expected version field");let e=Q(t);t.pos+=e,Z(t,48,"Expected algorithm identifier");let r=Q(t);return{algIdStart:t.pos,algIdLength:r}}var Ir=t=>{let e=Rr(t);if(ge(e,[43,101,110]))return"X25519";if(!ge(e,[42,134,72,206,61,2,1]))throw new Error("Unsupported key algorithm");Z(t,6,"Expected curve OID");let r=Q(t),n=mt(t,r);for(let{name:i,oid:s}of[{name:"P-256",oid:[42,134,72,206,61,3,1,7]},{name:"P-384",oid:[43,129,4,0,34]},{name:"P-521",oid:[43,129,4,0,35]}])if(ge(n,s))return i;throw new Error("Unsupported named curve")},Dr=async(t,e,r,n)=>{let i,s,o=t==="spki",a=()=>o?["verify"]:["sign"],c=()=>o?["encrypt","wrapKey"]:["decrypt","unwrapKey"];switch(r){case"PS256":case"PS384":case"PS512":i={name:"RSA-PSS",hash:`SHA-${r.slice(-3)}`},s=a();break;case"RS256":case"RS384":case"RS512":i={name:"RSASSA-PKCS1-v1_5",hash:`SHA-${r.slice(-3)}`},s=a();break;case"RSA-OAEP":case"RSA-OAEP-256":case"RSA-OAEP-384":case"RSA-OAEP-512":i={name:"RSA-OAEP",hash:`SHA-${parseInt(r.slice(-3),10)||1}`},s=c();break;case"ES256":case"ES384":case"ES512":{i={name:"ECDSA",namedCurve:{ES256:"P-256",ES384:"P-384",ES512:"P-521"}[r]},s=a();break}case"ECDH-ES":case"ECDH-ES+A128KW":case"ECDH-ES+A192KW":case"ECDH-ES+A256KW":{try{let u=n.getNamedCurve(e);i=u==="X25519"?{name:"X25519"}:{name:"ECDH",namedCurve:u}}catch{throw new C("Invalid or unsupported key format")}s=o?[]:["deriveBits"];break}case"Ed25519":case"EdDSA":i={name:"Ed25519"},s=a();break;case"ML-DSA-44":case"ML-DSA-65":case"ML-DSA-87":i={name:r},s=a();break;default:throw new C('Invalid or unsupported "alg" (Algorithm) value')}return crypto.subtle.importKey(t,e,i,n?.extractable??!!o,s)},Hr=(t,e)=>ct(t.replace(e,"")),Ur=(t,e,r)=>{let n=Hr(t,/(?:-----(?:BEGIN|END) PRIVATE KEY-----|\s)/g),i=r;return e?.startsWith?.("ECDH-ES")&&(i||={},i.getNamedCurve=s=>{let o=Pr(s);return xr(o),Ir(o)}),Dr("pkcs8",n,e,i)};async function gt(t,e,r){if(typeof t!="string"||t.indexOf("-----BEGIN PRIVATE KEY-----")!==0)throw new TypeError('"pkcs8" must be PKCS#8 formatted string');return Ur(t,e,r)}async function Lr(t){return Or(t)}async function Nr(t){return Tr(t)}function Kr(t,e,r,n,i){if(i.crit!==void 0&&n?.crit===void 0)throw new t('"crit" (Critical) Header Parameter MUST be integrity protected');if(!n||n.crit===void 0)return new Set;if(!Array.isArray(n.crit)||n.crit.length===0||n.crit.some(o=>typeof o!="string"||o.length===0))throw new t('"crit" (Critical) Header Parameter MUST be an array of non-empty strings when present');let s;r!==void 0?s=new Map([...Object.entries(r),...e.entries()]):s=e;for(let o of n.crit){if(!s.has(o))throw new C(`Extension Header Parameter "${o}" is not recognized`);if(i[o]===void 0)throw new t(`Extension Header Parameter "${o}" is missing`);if(s.get(o)&&n[o]===void 0)throw new t(`Extension Header Parameter "${o}" MUST be integrity protected`)}return new Set(n.crit)}var W=t=>t?.[Symbol.toStringTag],Ee=(t,e,r)=>{if(e.use!==void 0){let n;switch(r){case"sign":case"verify":n="sig";break;case"encrypt":case"decrypt":n="enc";break}if(e.use!==n)throw new TypeError(`Invalid key for this operation, its "use" must be "${n}" when present`)}if(e.alg!==void 0&&e.alg!==t)throw new TypeError(`Invalid key for this operation, its "alg" must be "${t}" when present`);if(Array.isArray(e.key_ops)){let n;switch(!0){case(r==="sign"||r==="verify"):case t==="dir":case t.includes("CBC-HS"):n=r;break;case t.startsWith("PBES2"):n="deriveBits";break;case/^A\d{3}(?:GCM)?(?:KW)?$/.test(t):!t.includes("GCM")&&t.endsWith("KW")?n=r==="encrypt"?"wrapKey":"unwrapKey":n=r;break;case(r==="encrypt"&&t.startsWith("RSA")):n="wrapKey";break;case r==="decrypt":n=t.startsWith("RSA")?"unwrapKey":"deriveBits";break}if(n&&e.key_ops?.includes?.(n)===!1)throw new TypeError(`Invalid key for this operation, its "key_ops" must include "${n}" when present`)}return!0},Wr=(t,e,r)=>{if(!(e instanceof Uint8Array)){if(ke(e)){if(wr(e)&&Ee(t,e,r))return;throw new TypeError('JSON Web Key for symmetric algorithms must have JWK "kty" (Key Type) equal to "oct" and the JWK "k" (Key Value) present')}if(!ht(e))throw new TypeError(dt(t,e,"CryptoKey","KeyObject","JSON Web Key","Uint8Array"));if(e.type!=="secret")throw new TypeError(`${W(e)} instances for symmetric algorithms must be of type "secret"`)}},jr=(t,e,r)=>{if(ke(e))switch(r){case"decrypt":case"sign":if(gr(e)&&Ee(t,e,r))return;throw new TypeError("JSON Web Key for this operation must be a private JWK");case"encrypt":case"verify":if(yr(e)&&Ee(t,e,r))return;throw new TypeError("JSON Web Key for this operation must be a public JWK")}if(!ht(e))throw new TypeError(dt(t,e,"CryptoKey","KeyObject","JSON Web Key"));if(e.type==="secret")throw new TypeError(`${W(e)} instances for asymmetric algorithms must not be of type "secret"`);if(e.type==="public")switch(r){case"sign":throw new TypeError(`${W(e)} instances for asymmetric algorithm signing must be of type "private"`);case"decrypt":throw new TypeError(`${W(e)} instances for asymmetric algorithm decryption must be of type "private"`)}if(e.type==="private")switch(r){case"verify":throw new TypeError(`${W(e)} instances for asymmetric algorithm verifying must be of type "public"`);case"encrypt":throw new TypeError(`${W(e)} instances for asymmetric algorithm encryption must be of type "public"`)}};function Mr(t,e,r){switch(t.substring(0,2)){case"A1":case"A2":case"di":case"HS":case"PB":Wr(t,e,r);break;default:jr(t,e,r)}}var U=t=>Math.floor(t.getTime()/1e3),yt=60,wt=yt*60,Ce=wt*24,Vr=Ce*7,Fr=Ce*365.25,qr=/^(\+|\-)? ?(\d+|\d+\.\d+) ?(seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)(?: (ago|from now))?$/i;function ye(t){let e=qr.exec(t);if(!e||e[4]&&e[1])throw new TypeError("Invalid time period format");let r=parseFloat(e[2]),n=e[3].toLowerCase(),i;switch(n){case"sec":case"secs":case"second":case"seconds":case"s":i=Math.round(r);break;case"minute":case"minutes":case"min":case"mins":case"m":i=Math.round(r*yt);break;case"hour":case"hours":case"hr":case"hrs":case"h":i=Math.round(r*wt);break;case"day":case"days":case"d":i=Math.round(r*Ce);break;case"week":case"weeks":case"w":i=Math.round(r*Vr);break;default:i=Math.round(r*Fr);break}return e[1]==="-"||e[4]==="ago"?-i:i}function L(t,e){if(!Number.isFinite(e))throw new TypeError(`Invalid ${t} input`);return e}var Gr=class{#e;constructor(t){if(!pt(t))throw new TypeError("JWT Claims Set MUST be an object");this.#e=structuredClone(t)}data(){return ot.encode(JSON.stringify(this.#e))}get iss(){return this.#e.iss}set iss(t){this.#e.iss=t}get sub(){return this.#e.sub}set sub(t){this.#e.sub=t}get aud(){return this.#e.aud}set aud(t){this.#e.aud=t}set jti(t){this.#e.jti=t}set nbf(t){typeof t=="number"?this.#e.nbf=L("setNotBefore",t):t instanceof Date?this.#e.nbf=L("setNotBefore",U(t)):this.#e.nbf=U(new Date)+ye(t)}set exp(t){typeof t=="number"?this.#e.exp=L("setExpirationTime",t):t instanceof Date?this.#e.exp=L("setExpirationTime",U(t)):this.#e.exp=U(new Date)+ye(t)}set iat(t){t===void 0?this.#e.iat=U(new Date):t instanceof Date?this.#e.iat=L("setIssuedAt",U(t)):typeof t=="string"?this.#e.iat=L("setIssuedAt",U(new Date)+ye(t)):this.#e.iat=L("setIssuedAt",t)}},bt=class{#e;#t;#r;constructor(t){if(!(t instanceof Uint8Array))throw new TypeError("payload must be an instance of Uint8Array");this.#e=t}setProtectedHeader(t){return tt(this.#t,"setProtectedHeader"),this.#t=t,this}setUnprotectedHeader(t){return tt(this.#r,"setUnprotectedHeader"),this.#r=t,this}async sign(t,e){if(!this.#t&&!this.#r)throw new X("either setProtectedHeader or setUnprotectedHeader must be called before #sign()");if(!mr(this.#t,this.#r))throw new X("JWS Protected and JWS Unprotected Header Parameter names must be disjoint");let r={...this.#t,...this.#r},n=Kr(X,new Map([["b64",!0]]),e?.crit,this.#t,r),i=!0;if(n.has("b64")&&(i=this.#t.b64,typeof i!="boolean"))throw new X('The "b64" (base64url-encode payload) Header Parameter must be a boolean');let{alg:s}=r;if(typeof s!="string"||!s)throw new X('JWS "alg" (Algorithm) Header Parameter missing or invalid');Mr(s,t,"sign");let o,a;i?(o=fe(this.#e),a=pe(o)):(a=this.#e,o="");let c,u;this.#t?(c=fe(JSON.stringify(this.#t)),u=pe(c)):(c="",u=new Uint8Array);let l=ar(u,pe("."),a),d=await Cr(t,s),h=await _r(s,d,l),y={signature:fe(h),payload:o};return this.#r&&(y.header=this.#r),this.#t&&(y.protected=c),y}},Br=class{#e;constructor(t){this.#e=new bt(t)}setProtectedHeader(t){return this.#e.setProtectedHeader(t),this}async sign(t,e){let r=await this.#e.sign(t,e);if(r.payload===void 0)throw new TypeError("use the flattened module for creating JWS with b64: false");return`${r.protected}.${r.payload}.${r.signature}`}},Jr=class{#e;#t;constructor(t={}){this.#t=new Gr(t)}setIssuer(t){return this.#t.iss=t,this}setSubject(t){return this.#t.sub=t,this}setAudience(t){return this.#t.aud=t,this}setJti(t){return this.#t.jti=t,this}setNotBefore(t){return this.#t.nbf=t,this}setExpirationTime(t){return this.#t.exp=t,this}setIssuedAt(t){return this.#t.iat=t,this}setProtectedHeader(t){return this.#e=t,this}async sign(t,e){let r=new Br(this.#t.data());if(r.setProtectedHeader(this.#e),Array.isArray(this.#e?.crit)&&this.#e.crit.includes("b64")&&this.#e.b64===!1)throw new pr("JWTs MUST NOT use unencoded payload");return r.sign(t,e)}};function we(t){let e=t?.modulusLength??2048;if(typeof e!="number"||e<2048)throw new C("Invalid or unsupported modulusLength option provided, 2048 bits or larger keys must be used");return e}async function Yr(t,e){let r,n;switch(t){case"PS256":case"PS384":case"PS512":r={name:"RSA-PSS",hash:`SHA-${t.slice(-3)}`,publicExponent:Uint8Array.of(1,0,1),modulusLength:we(e)},n=["sign","verify"];break;case"RS256":case"RS384":case"RS512":r={name:"RSASSA-PKCS1-v1_5",hash:`SHA-${t.slice(-3)}`,publicExponent:Uint8Array.of(1,0,1),modulusLength:we(e)},n=["sign","verify"];break;case"RSA-OAEP":case"RSA-OAEP-256":case"RSA-OAEP-384":case"RSA-OAEP-512":r={name:"RSA-OAEP",hash:`SHA-${parseInt(t.slice(-3),10)||1}`,publicExponent:Uint8Array.of(1,0,1),modulusLength:we(e)},n=["decrypt","unwrapKey","encrypt","wrapKey"];break;case"ES256":r={name:"ECDSA",namedCurve:"P-256"},n=["sign","verify"];break;case"ES384":r={name:"ECDSA",namedCurve:"P-384"},n=["sign","verify"];break;case"ES512":r={name:"ECDSA",namedCurve:"P-521"},n=["sign","verify"];break;case"Ed25519":case"EdDSA":{n=["sign","verify"],r={name:"Ed25519"};break}case"ML-DSA-44":case"ML-DSA-65":case"ML-DSA-87":{n=["sign","verify"],r={name:t};break}case"ECDH-ES":case"ECDH-ES+A128KW":case"ECDH-ES+A192KW":case"ECDH-ES+A256KW":{n=["deriveBits"];let i=e?.crv??"P-256";switch(i){case"P-256":case"P-384":case"P-521":{r={name:"ECDH",namedCurve:i};break}case"X25519":r={name:"X25519"};break;default:throw new C("Invalid or unsupported crv option provided, supported values are P-256, P-384, P-521, and X25519")}break}default:throw new C('Invalid or unsupported JWK "alg" (Algorithm) Parameter value')}return crypto.subtle.generateKey(r,e?.extractable??!1,n)}var Zr="https://id.botparty.club",en="EdDSA",tn=15,rn=6e4,nn="5m",sn=3,on=["brave","calm","cosmic","eager","fair","gentle","happy","keen","lively","noble","proud","quick","rare","sharp","swift","true","vivid","warm","wild","bold","cool","fast","grand","just","kind","lean","mild","neat","pale","rich","safe","tall","vast","wise","bright","dark","fierce","quiet","free","glad"],an=["lion","hawk","wolf","bear","fox","deer","owl","crane","whale","tiger","eagle","shark","raven","puma","lynx","orca","swan","viper","bison","cobra","finch","gecko","heron","ibex","jay","kite","lark","moth","newt","otter","perch","quail","robin","seal","toad","wren","yak","zebra","ant","bee"],A=class extends Error{code;statusCode;actionUrl;details;constructor(t){super(t.message),this.name="BotPartyError",this.code=t.code,this.statusCode=t.statusCode,this.actionUrl=t.actionUrl,this.details=t.details}},$e=class extends A{constructor(t){super({code:"NAMESPACE_LOCKED",message:t.message,statusCode:423,actionUrl:t.actionUrl,details:{lockedAt:t.lockedAt,reason:t.reason}}),this.name="NamespaceLockedError"}},se=class extends A{amount;service;constructor(t){super({code:"PAYMENT_REQUIRED",message:t.message,statusCode:402,actionUrl:t.actionUrl}),this.name="PaymentRequiredError",this.amount=t.amount,this.service=t.service}},oe=class extends A{missingScopes;constructor(t){super({code:"INSUFFICIENT_PERMISSION",message:t.message,statusCode:403,actionUrl:t.actionUrl}),this.name="InsufficientPermissionError",this.missingScopes=t.missingScopes}},Oe=class extends A{constructor(t){super({code:"LINK_REQUIRED",message:t.message,statusCode:403,actionUrl:t.actionUrl}),this.name="LinkRequiredError"}};function nt(t){let e=_t(4);return t[e.readUInt32BE(0)%t.length]}function cn(){return`${nt(on)}-${nt(an)}`}function ln(){let t=cn(),e=_t(2).toString("hex");return`${t}-${e}`}function un(){return M(Qr(),".botparty")}function St(t){ie(t)||zr(t,{recursive:!0,mode:448})}function dn(t){let e=M(t,"identity.json");if(!ie(e))return null;try{return JSON.parse(Et(e,"utf-8"))}catch{return null}}function vt(t,e){St(t);let r=M(t,"identity.json");At(r,JSON.stringify(e,null,2),{mode:384})}function hn(t){let e=M(t,"private.pem");if(!ie(e))return null;try{return Et(e,"utf-8")}catch{return null}}function kt(t,e){St(t);let r=M(t,"private.pem");At(r,e,{mode:384})}function it(t){for(let e of["identity.json","private.pem"]){let r=M(t,e);ie(r)&&Xr(r)}}async function Ct(t){let e={extractable:!0};t==="EdDSA"&&(e.crv="Ed25519");let{privateKey:r,publicKey:n}=await Yr(t,e),i=await Nr(r),s=await Lr(n);return{privateKey:r,publicKey:n,privatePem:i,publicPem:s}}async function pn(t,e,r){let n=await gt(e,r);return(await new bt(new TextEncoder().encode(t)).setProtectedHeader({alg:r}).sign(n)).signature}async function Ae(t,e,r,n,i){let s=n,o=await gt(r,s);return new Jr({...i}).setProtectedHeader({alg:s,kid:e}).setIssuer(t).setSubject(t).setIssuedAt().setExpirationTime(nn).sign(o)}async function R(t,e,r={}){let{token:n,...i}=r,s=new Headers(i.headers);return s.set("Content-Type","application/json"),n&&s.set("Authorization",`Bearer ${n}`),fetch(`${t}${e}`,{...i,headers:s})}async function be(t){try{return await t.clone().json()}catch{return null}}function ne(t){let e=t.error,r,n,i,s={};if(typeof e=="object"&&e!==null){let o=e;r=o.code||"UNKNOWN",n=o.message||t.message||"Request failed",i=o.actionUrl||t.actionUrl,s=o}else r=(typeof e=="string"?e:t.code)||"UNKNOWN",n=t.message||(typeof e=="string"?e:"Request failed"),i=t.actionUrl,s=t;return{code:r,message:n,actionUrl:i,extra:s}}var fn=class{constructor(t,e){this.client=t,this.keyId=e}get id(){return this.keyId}async info(){return this.client.keys.get(this.keyId)}async update(t){return this.client.keys.update(this.keyId,t)}async delete(){return this.client.keys.delete(this.keyId)}async rotate(){return this.client.keys.rotate(this.keyId)}async invalidate(t){return this.client.keys.invalidate(this.keyId,t)}},mn=class{constructor(t){this.client=t}async list(){let t=await this.client.generateToken(),e=await R(this.client.serverUrl,"/api/v1/namespaces/keys",{token:t});if(!e.ok)throw await this.client._apiError(e);return(await e.json()).data}async get(t){let e=(await this.list()).find(r=>r.id===t);if(!e)throw new A({code:"KEY_NOT_FOUND",message:`Key ${t} not found`,statusCode:404});return e}async add(t){let e=await this.client.generateToken(),r=await R(this.client.serverUrl,"/api/v1/namespaces/keys",{method:"POST",token:e,body:JSON.stringify(t)});if(!r.ok)throw await this.client._apiError(r);return r.json()}async update(t,e){let r=await this.client.generateToken(),n=await R(this.client.serverUrl,`/api/v1/namespaces/keys/${t}`,{method:"PATCH",token:r,body:JSON.stringify(e)});if(!n.ok)throw await this.client._apiError(n);return n.json()}async delete(t){let e=await this.client.generateToken(),r=await R(this.client.serverUrl,`/api/v1/namespaces/keys/${t}`,{method:"DELETE",token:e});if(!r.ok&&r.status!==204)throw await this.client._apiError(r)}async rotate(t){let e=this.client.getIdentity();if(!e)throw new Error("Not registered");let r=this.client.getPrivateKey();if(!r)throw new Error("Private key not found");let n=t||e.keyId;if(n!==e.keyId)throw new A({code:"CANNOT_ROTATE_OTHER_KEY",message:"Can only rotate the current machine key from this client. Use the server API directly for other keys.",statusCode:400});let i=await Ct(e.algorithm),s=await Ae(e.namespace,e.keyId,r,e.algorithm),o=await R(e.serverUrl,`/api/v1/namespaces/keys/${n}/rotate`,{method:"POST",token:s,body:JSON.stringify({newPublicKey:i.publicPem})});if(!o.ok)throw await this.client._apiError(o);let a=await o.json();return kt(this.client.stateDir,i.privatePem),vt(this.client.stateDir,{...e,rotatedAt:a.rotatedAt}),a}async rotateCurrent(){return this.rotate()}async invalidate(t,e){let r=await this.client.generateToken(),n=await R(this.client.serverUrl,`/api/v1/namespaces/keys/${t}/invalidate`,{method:"POST",token:r,body:JSON.stringify({reason:e})});if(!n.ok)throw await this.client._apiError(n)}},$t=class{serverUrl;stateDir;keys;algorithm;rotationTTL;constructor(t={}){this.serverUrl=(t.serverUrl||st("BOTPARTY_SERVER_URL")||Zr).replace(/\/$/,""),this.stateDir=t.stateDir||st("BOTPARTY_STATE_DIR")||un(),this.algorithm=t.algorithm||en,this.rotationTTL=t.rotationTTL||tn,this.keys=new mn(this)}getIdentity(){return dn(this.stateDir)}getPrivateKey(){return hn(this.stateDir)}isRegistered(){return this.getIdentity()!==null&&this.getPrivateKey()!==null}async register(t,e){let r=t,n=0;for(;n<sn;){r||(r=ln());let i=e||r,s=await Ct(this.algorithm),o=await R(this.serverUrl,"/api/v1/namespaces/register",{method:"POST",body:JSON.stringify({namespace:r,publicKey:s.publicPem,rotationTTL:this.rotationTTL})}),a=await o.json();if(a.status==="already_registered")throw new A({code:"ALREADY_REGISTERED",message:`Namespace "${r}" is already registered`,statusCode:409});if(o.status===409&&!t){r=void 0,n++;continue}if(!o.ok)throw new A({code:a.error||"REGISTRATION_FAILED",message:a.message||a.error||"Registration failed",statusCode:o.status});let c=a.challenge,u=await pn(c,s.privatePem,this.algorithm),l=await R(this.serverUrl,"/api/v1/namespaces/register/verify",{method:"POST",body:JSON.stringify({namespace:r,challenge:c,signature:u})});if(!l.ok)throw await this._apiError(l);let d=await l.json();return kt(this.stateDir,s.privatePem),vt(this.stateDir,{serverUrl:this.serverUrl,namespace:r,keyId:d.keyId,algorithm:this.algorithm,rotatedAt:d.rotatedAt,rotationTTL:d.rotationTTL,label:i}),d}throw new A({code:"REGISTRATION_FAILED",message:"Failed to find available namespace after retries",statusCode:409})}async ensureRegistered(){let t=this.getIdentity();if(t&&this.getPrivateKey())return t;await this.register();let e=this.getIdentity();if(!e)throw new Error("Registration succeeded but identity could not be read");return e}async ensureFreshKey(){let t=this.getIdentity();if(!t)throw new Error("Not registered");let e=new Date(t.rotatedAt).getTime()+t.rotationTTL*6e4;Date.now()>=e-rn&&await this.keys.rotateCurrent()}async generateToken(t){await this.ensureRegistered(),await this.ensureFreshKey();let e=this.getIdentity(),r=this.getPrivateKey();return Ae(e.namespace,e.keyId,r,e.algorithm,t)}async fetch(t,e={}){let r=await this.generateToken(),n=new Headers(e.headers);n.set("X-Proxy-Authorization",`Bearer ${r}`);let i=await fetch(t,{...e,headers:n});if(i.status===401){let s=await be(i);if(s){let{code:o}=ne(s);if(o==="KEY_STALE"){await this.keys.rotateCurrent();let a=await this.generateToken(),c=new Headers(e.headers);c.set("X-Proxy-Authorization",`Bearer ${a}`),i=await fetch(t,{...e,headers:c})}}}if([401,402,403,423].includes(i.status)){let s=await be(i);if(s){let{code:o}=ne(s);yn(o)&&wn(i.status,s,this.getIdentity(),this.serverUrl)}}return i}async info(t){let e=t||this.getIdentity()?.namespace;if(!e)throw new Error("Not registered and no namespace provided");let r=await R(this.serverUrl,`/api/v1/namespaces/${e}/info`);if(!r.ok)throw await this._apiError(r);return r.json()}async destroy(){let t=await this.generateToken(),e=await R(this.serverUrl,"/api/v1/namespaces",{method:"DELETE",token:t});if(!e.ok&&e.status!==204)throw await this._apiError(e);it(this.stateDir)}async link(){let t=this.getIdentity();if(!t)throw new Error("Not registered");let e=this.getPrivateKey();if(!e)throw new Error("Private key not found");let r=await Ae(t.namespace,t.keyId,e,t.algorithm,{act:"link"});return{url:`${t.serverUrl}/namespaces/${t.namespace}/link?jwt=${r}`}}whoami(){let t=this.getIdentity();if(!t)return null;let e=new Date(new Date(t.rotatedAt).getTime()+t.rotationTTL*6e4).toISOString();return{namespace:t.namespace,keyId:t.keyId,algorithm:t.algorithm,rotationTTL:t.rotationTTL,rotatedAt:t.rotatedAt,staleAt:e,label:t.label,serverUrl:t.serverUrl}}key(t){return new fn(this,t)}reset(){it(this.stateDir)}async _apiError(t){let e=await be(t);if(!e)return new A({code:"UNKNOWN",message:`Request failed with status ${t.status}`,statusCode:t.status});let{code:r,message:n,actionUrl:i}=ne(e);return new A({code:r,message:n,statusCode:t.status,actionUrl:i})}},gn=new Set(["NAMESPACE_LOCKED","LOCKUP_TRIGGERED","PAYMENT_REQUIRED","LINK_REQUIRED","INSUFFICIENT_SCOPE","PERMISSION_DENIED","KEY_STALE","KEY_EXPIRED"]);function yn(t){return gn.has(t)}function wn(t,e,r,n){let{code:i,message:s,actionUrl:o,extra:a}=ne(e),c=r?.namespace||"",u=r?.serverUrl||n;throw i==="NAMESPACE_LOCKED"||i==="LOCKUP_TRIGGERED"||t===423?new $e({message:s||"Namespace is locked",actionUrl:o||`${u}/namespaces/${c}/unlock`,lockedAt:a.lockedAt,reason:a.reason}):i==="PAYMENT_REQUIRED"||t===402?new se({message:s,actionUrl:o,amount:a.amount||e.amount,service:a.service||e.service}):i==="LINK_REQUIRED"?new Oe({message:s,actionUrl:o||`${u}/namespaces/${c}/link`}):i==="INSUFFICIENT_SCOPE"||i==="PERMISSION_DENIED"||t===403?new oe({message:s,actionUrl:o,missingScopes:a.missingScopes||a.missing_scopes}):new A({code:i,message:s,statusCode:t,actionUrl:o})}function st(t){if(typeof process<"u"&&process.env)return process.env[t]}import{writeFileSync as Mt}from"fs";import{readFileSync as ue}from"fs";import{basename as Dn}from"path";var Wt=or(Kt(),1),{program:es,createCommand:ts,createArgument:rs,createOption:ns,CommanderError:is,InvalidArgumentError:ss,InvalidOptionArgumentError:os,Command:jt,Argument:as,Option:cs,Help:ls}=Wt.default;var Hn="\x1B[1m",Un="\x1B[2m",Ln="\x1B[31m",Nn="\x1B[32m",Kn="\x1B[33m",Wn="\x1B[36m",F="\x1B[0m";function jn(t){return`${Hn}${t}${F}`}function Ge(t){return`${Un}${t}${F}`}function Vt(t){return`${Ln}${t}${F}`}function Be(t){return`${Kn}${t}${F}`}function Ft(t){return`${Wn}${t}${F}`}function Mn(t){return`${Nn}${t}${F}`}function qt(t){return(t||process.env.KEYCHAINS_PROXY_URL||process.env.BOTPARTY_PROXY_URL||"https://keychains.dev").replace(/\/$/,"")}var V=class extends Error{approvalUrl;constructor(e,r){super(e),this.approvalUrl=r}};function Vn(t,e){try{let r=new URL(t),n=new URL(e);return r.hostname===n.hostname&&r.port===n.port&&r.protocol===n.protocol?t:`${e}/${r.hostname}${r.pathname}${r.search}`}catch{return`${e}/${t}`}}async function Gt(t,e,r,n){let i=await r.generateToken(),s=Vn(t,n),o=new Headers(e.headers);o.set("X-Proxy-Authorization",`Bearer ${i}`);let a=await fetch(s,{method:e.method,headers:o,body:e.body});if(a.status===401)try{let u=await a.clone().json();if(u.code==="KEY_STALE"||u.error==="KEY_STALE"){await r.keys.rotateCurrent();let l=await r.generateToken(),d=new Headers(e.headers);d.set("X-Proxy-Authorization",`Bearer ${l}`),a=await fetch(s,{method:e.method,headers:d,body:e.body})}}catch{}if(a.status===403){let c=a.clone();try{let u=await c.json(),l=u.approval_url||u.authorizationUrl;if(l){let d=typeof u.message=="string"?u.message:u.missing_scopes?`Insufficient scopes: ${u.missing_scopes.join(", ")}`:"Missing required credentials";throw new V(d,l)}}catch(u){if(u instanceof V)throw u}}return a}function Je(t,e,r,n){let i=(Date.now()-n)/1e3,s=e.headers.get("content-type")||"",o={http_code:e.status,http_connect:0,http_version:"1.1",response_code:e.status,content_type:s,size_download:r,size_header:0,size_request:0,size_upload:0,speed_download:i>0?Math.round(r/i):0,speed_upload:0,time_appconnect:i,time_connect:i,time_namelookup:0,time_pretransfer:i,time_redirect:0,time_starttransfer:i,time_total:i,url_effective:"",num_connects:1,num_redirects:0,redirect_url:"",ssl_verify_result:0,stdout:"-",stderr:"-",exitcode:0,errormsg:"",method:"",scheme:"",filename_effective:"",onerror:"",urlnum:0},a=t;return a=a.replace(/\\n/g,`
33
- `),a=a.replace(/\\r/g,"\r"),a=a.replace(/\\t/g," "),a=a.replace(/\\\\/g,"\\"),a=a.replace(/%\{([a-zA-Z_][a-zA-Z0-9_]*)\}/g,(c,u)=>u in o?String(o[u]):c),a}function Fn(t,e,r){let n=[],i;try{let s=new URL(e);i=s.pathname+s.search}catch{i=e}n.push(`> ${t} ${i} HTTP/1.1`);try{let s=new URL(e);n.push(`> Host: ${s.host}`)}catch{}for(let[s,o]of Object.entries(r))s.toLowerCase()!=="host"&&n.push(`> ${s}: ${o}`);return n.push(">"),n.join(`
34
- `)}function qn(t,e,r){let n=[];return n.push(`< HTTP/1.1 ${t} ${e}`),r.forEach((i,s)=>{n.push(`< ${s}: ${i}`)}),n.push("<"),n.join(`
35
- `)}function Bt(t,e,r){let n=[];return n.push(`HTTP/1.1 ${t} ${e}`),r.forEach((i,s)=>{n.push(`${s}: ${i}`)}),n.push(""),n.join(`
36
- `)}function Gn(t,e,r){let n=[];return n.push(`HTTP/1.1 ${t} ${e}`),r.forEach((i,s)=>{n.push(`${s}: ${i}`)}),n.push(""),n.join(`
37
- `)}function Bn(t){let e=[];if(t.data)for(let r of t.data)if(r.startsWith("@"))try{e.push(ue(r.slice(1),"utf-8"))}catch{e.push(r)}else e.push(r);if(t.dataRaw)for(let r of t.dataRaw)e.push(r);if(t.dataBinary)for(let r of t.dataBinary)if(r.startsWith("@"))try{e.push(ue(r.slice(1),"utf-8"))}catch{e.push(r)}else e.push(r);if(t.dataUrlencode)for(let r of t.dataUrlencode){let n=r.indexOf("=");if(n>0){let i=r.slice(0,n),s=r.slice(n+1);e.push(`${encodeURIComponent(i)}=${encodeURIComponent(s)}`)}else r.startsWith("=")?e.push(encodeURIComponent(r.slice(1))):e.push(encodeURIComponent(r))}if(t.dataAscii)for(let r of t.dataAscii)e.push(r);if(t.json)for(let r of t.json)e.push(r);if(e.length!==0)return e.join("&")}function Jn(t){return!!(t.data&&t.data.length>0||t.dataRaw&&t.dataRaw.length>0||t.dataBinary&&t.dataBinary.length>0||t.dataUrlencode&&t.dataUrlencode.length>0||t.dataAscii&&t.dataAscii.length>0||t.json&&t.json.length>0)}function Yt(t){return!!(t.form&&t.form.length>0||t.formString&&t.formString.length>0)}function Yn(t){return t.request?t.request.toUpperCase():t.head?"HEAD":Jn(t)&&!t.get||Yt(t)?"POST":t.uploadFile?"PUT":"GET"}async function Jt(t,e,r,n,i,s){let o=await t.text(),a=Buffer.byteLength(o,"utf-8");if(e.verbose){let u=Fn(r,n,i);process.stderr.write(u+`
38
- `);let l=qn(t.status,t.statusText,t.headers);process.stderr.write(l+`
39
- `)}if(e.dumpHeader){let u=Gn(t.status,t.statusText,t.headers);e.dumpHeader==="-"?process.stdout.write(u):Mt(e.dumpHeader,u)}e.fail&&t.status>=400&&(e.failWithBody||(e.silent||process.stderr.write(`curl: (22) The requested URL returned error: ${t.status} ${t.statusText}
40
- `),e.writeOut&&process.stdout.write(Je(e.writeOut,t,a,s)),process.exit(22)));let c="";e.include&&(c+=Bt(t.status,t.statusText,t.headers)),e.head?!e.include&&!e.verbose&&(c+=Bt(t.status,t.statusText,t.headers)):c+=o,e.output?e.output==="-"?process.stdout.write(c):Mt(e.output,c):c&&process.stdout.write(c),e.failWithBody&&t.status>=400&&(e.silent||process.stderr.write(`curl: (22) The requested URL returned error: ${t.status} ${t.statusText}
41
- `),e.writeOut&&process.stdout.write(Je(e.writeOut,t,a,s)),process.exit(22)),e.writeOut&&process.stdout.write(Je(e.writeOut,t,a,s))}async function zt(t,e){let r=new jt;r.exitOverride(),r.name("botparty curl").argument("[url]","URL to request").description("Make a proxied API call (like curl, but through BotParty + Keychains)").allowUnknownOption(!1).option("--proxy-url <url>","Keychains proxy base URL (default: $KEYCHAINS_PROXY_URL or https://keychains.dev)").option("--wait-on-authlink","If credentials are required, wait for user approval then retry automatically").option("--wait-timeout <seconds>","Max seconds to wait for approval when using --wait-on-authlink (default: no limit)").option("-X, --request <method>","Specify request method").option("-H, --header <header...>","Pass custom header(s) to server (repeatable)").option("-d, --data <data...>","HTTP POST data (repeatable)").option("--data-raw <data...>","HTTP POST data without @ file interpretation (repeatable)").option("--data-binary <data...>","HTTP POST binary data (repeatable)").option("--data-urlencode <data...>","HTTP POST data URL encoded (repeatable)").option("--data-ascii <data...>","HTTP POST ASCII data (repeatable)").option("--json <data...>","HTTP POST JSON data (sets Content-Type and Accept headers)").option("-F, --form <name=content...>","Specify multipart MIME data (repeatable)").option("--form-string <name=content...>","Specify multipart MIME data (no file interpretation)").option("-v, --verbose","Make the operation more talkative").option("-i, --include","Include response headers in output").option("-I, --head","Show document info only (HEAD request)").option("-s, --silent","Silent mode").option("-S, --show-error","Show error even when -s is used").option("-o, --output <file>","Write to file instead of stdout").option("-D, --dump-header <file>","Write response headers to file").option("-w, --write-out <format>","Display information after transfer").option("-f, --fail","Fail fast with no output on HTTP errors").option("--fail-with-body","Fail with output on HTTP errors").option("-L, --location","Follow redirects").option("--max-redirs <num>","Maximum number of redirects").option("--location-trusted","Follow redirects and send auth to other hosts").option("-A, --user-agent <name>","Send User-Agent to server").option("-e, --referer <URL>","Referrer URL").option("-b, --cookie <data...>","Send cookies from string/file (repeatable)").option("-c, --cookie-jar <filename>","Write cookies to filename after operation").option("-u, --user <user:password>","Server user and password").option("--compressed","Request compressed response").option("-r, --range <range>","Retrieve only this byte range").option("--connect-timeout <seconds>","Maximum time for connection").option("-m, --max-time <seconds>","Maximum time for the transfer").option("--retry <num>","Retry request if transient problems occur").option("--retry-delay <seconds>","Wait time between retries").option("--retry-max-time <seconds>","Retry only within this period").option("--retry-all-errors","Retry on all errors").option("--url <url>","URL to work with").option("-G, --get","Put the post data in the URL and use GET").option("-T, --upload-file <file>","Transfer local FILE to destination").option("-k, --insecure","Allow insecure server connections").option("--cacert <file>","CA certificate to verify peer against").option("--capath <dir>","CA directory to verify peer against").option("--cert <cert[:passwd]>","Client certificate file and password").option("--cert-type <type>","Certificate type (DER/PEM/ENG)").option("--key <key>","Private key file name").option("--key-type <type>","Private key file type (DER/PEM/ENG)").option("--pass <phrase>","Pass phrase for the private key").option("--ciphers <list>","SSL ciphers to use").option("-1, --tlsv1","Use TLSv1.0 or greater").option("--tlsv1.0","Use TLSv1.0 or greater").option("--tlsv1.1","Use TLSv1.1 or greater").option("--tlsv1.2","Use TLSv1.2 or greater").option("--tlsv1.3","Use TLSv1.3 or greater").option("--ssl","Try SSL/TLS").option("--ssl-reqd","Require SSL/TLS").option("--ssl-no-revoke","Disable cert revocation checks").option("--no-alpn","Disable the ALPN TLS extension").option("--no-npn","Disable the NPN TLS extension").option("--no-sessionid","Disable SSL session-ID reusing").option("-0, --http1.0","Use HTTP 1.0").option("--http1.1","Use HTTP 1.1").option("--http2","Use HTTP 2").option("--http2-prior-knowledge","Use HTTP 2 without HTTP/1.1 Upgrade").option("--http3","Use HTTP v3").option("-4, --ipv4","Resolve names to IPv4 addresses").option("-6, --ipv6","Resolve names to IPv6 addresses").option("-x, --proxy <[protocol://]host[:port]>","Use this proxy").option("-U, --proxy-user <user:password>","Proxy user and password").option("--noproxy <no-proxy-list>","List of hosts which do not use proxy").option("-n, --netrc","Must read .netrc for user name and password").option("--netrc-optional","Use either .netrc or URL").option("--netrc-file <filename>","Specify FILE for netrc").option("-K, --config <file>","Read config from a file").option("--create-dirs","Create necessary local directory hierarchy").option("--raw",'Do HTTP "raw"; no transfer decoding').option("--no-keepalive","Disable TCP keepalive on the connection").option("--keepalive-time <seconds>","Interval time for keepalive probes").option("-N, --no-buffer","Disable buffering of the output stream").option("-#, --progress-bar","Display transfer progress as a bar").option("--stderr <file>","Where to redirect stderr").option("--trace <file>","Write a debug trace to FILE").option("--trace-ascii <file>","Like --trace, but without hex output").option("--trace-time","Add time stamps to trace/verbose output").option("--path-as-is","Do not squash .. sequences in URL path").option("--tcp-fastopen","Use TCP Fast Open").option("--tcp-nodelay","Use the TCP_NODELAY option").option("-j, --junk-session-cookies","Ignore session cookies read from file").option("-O, --remote-name","Write output to a file named as the remote file").option("--remote-name-all","Use the remote file name for all URLs").option("-R, --remote-time","Set the remote file time on the local output").option("-J, --remote-header-name","Use the header-provided filename").option("-C, --continue-at <offset>","Resumed transfer offset").option("-g, --globoff","Disable URL sequences and ranges using {} and []").option("--limit-rate <speed>","Limit transfer speed to RATE").option("--max-filesize <bytes>","Maximum file size to download").option("--interface <name>","Use network INTERFACE (or address)").option("--local-port <num/range>","Force use of RANGE for local port numbers").option("--dns-servers <addresses>","DNS server addrs to use").option("--dns-interface <interface>","Interface to use for DNS requests").option("--dns-ipv4-addr <address>","IPv4 address to use for DNS requests").option("--dns-ipv6-addr <address>","IPv6 address to use for DNS requests").option("--expect100-timeout <seconds>","How long to wait for 100-continue").option("--happy-eyeballs-timeout-ms <milliseconds>","Time for IPv6 before trying IPv4").action(async(i,s)=>{let o;try{let a=e(),c=qt(s.proxyUrl),u=i||s.url;u||(process.stderr.write(`curl: no URL specified!
31
+ ${n}
32
+ -----END ${e}-----`},ft=async(t,e,n)=>{if(_e(n)){if(n.type!==t)throw new TypeError(`key is not a ${t} key`);return n.export({format:"pem",type:e})}if(!ke(n))throw new TypeError(ut(n,"CryptoKey","KeyObject"));if(!n.extractable)throw new TypeError("CryptoKey is not extractable");if(n.type!==t)throw new TypeError(`key is not a ${t} key`);return Tn(at(new Uint8Array(await crypto.subtle.exportKey(e,n))),`${t.toUpperCase()} KEY`)},On=t=>ft("public","spki",t),Pn=t=>ft("private","pkcs8",t),ge=(t,e)=>{if(t.byteLength!==e.length)return!1;for(let n=0;n<t.byteLength;n++)if(t[n]!==e[n])return!1;return!0},Rn=t=>({data:t,pos:0}),Q=t=>{let e=t.data[t.pos++];if(e&128){let n=e&127,r=0;for(let s=0;s<n;s++)r=r<<8|t.data[t.pos++];return r}return e},Z=(t,e,n)=>{if(t.data[t.pos++]!==e)throw new Error(n)},mt=(t,e)=>{let n=t.data.subarray(t.pos,t.pos+e);return t.pos+=e,n},xn=t=>{Z(t,6,"Expected algorithm OID");let e=Q(t);return mt(t,e)};function In(t){Z(t,48,"Invalid PKCS#8 structure"),Q(t),Z(t,2,"Expected version field");let e=Q(t);t.pos+=e,Z(t,48,"Expected algorithm identifier");let n=Q(t);return{algIdStart:t.pos,algIdLength:n}}var Dn=t=>{let e=xn(t);if(ge(e,[43,101,110]))return"X25519";if(!ge(e,[42,134,72,206,61,2,1]))throw new Error("Unsupported key algorithm");Z(t,6,"Expected curve OID");let n=Q(t),r=mt(t,n);for(let{name:s,oid:i}of[{name:"P-256",oid:[42,134,72,206,61,3,1,7]},{name:"P-384",oid:[43,129,4,0,34]},{name:"P-521",oid:[43,129,4,0,35]}])if(ge(r,i))return s;throw new Error("Unsupported named curve")},Un=async(t,e,n,r)=>{let s,i,o=t==="spki",a=()=>o?["verify"]:["sign"],c=()=>o?["encrypt","wrapKey"]:["decrypt","unwrapKey"];switch(n){case"PS256":case"PS384":case"PS512":s={name:"RSA-PSS",hash:`SHA-${n.slice(-3)}`},i=a();break;case"RS256":case"RS384":case"RS512":s={name:"RSASSA-PKCS1-v1_5",hash:`SHA-${n.slice(-3)}`},i=a();break;case"RSA-OAEP":case"RSA-OAEP-256":case"RSA-OAEP-384":case"RSA-OAEP-512":s={name:"RSA-OAEP",hash:`SHA-${parseInt(n.slice(-3),10)||1}`},i=c();break;case"ES256":case"ES384":case"ES512":{s={name:"ECDSA",namedCurve:{ES256:"P-256",ES384:"P-384",ES512:"P-521"}[n]},i=a();break}case"ECDH-ES":case"ECDH-ES+A128KW":case"ECDH-ES+A192KW":case"ECDH-ES+A256KW":{try{let u=r.getNamedCurve(e);s=u==="X25519"?{name:"X25519"}:{name:"ECDH",namedCurve:u}}catch{throw new C("Invalid or unsupported key format")}i=o?[]:["deriveBits"];break}case"Ed25519":case"EdDSA":s={name:"Ed25519"},i=a();break;case"ML-DSA-44":case"ML-DSA-65":case"ML-DSA-87":s={name:n},i=a();break;default:throw new C('Invalid or unsupported "alg" (Algorithm) value')}return crypto.subtle.importKey(t,e,s,r?.extractable??!!o,i)},Hn=(t,e)=>ct(t.replace(e,"")),Nn=(t,e,n)=>{let r=Hn(t,/(?:-----(?:BEGIN|END) PRIVATE KEY-----|\s)/g),s=n;return e?.startsWith?.("ECDH-ES")&&(s||={},s.getNamedCurve=i=>{let o=Rn(i);return In(o),Dn(o)}),Un("pkcs8",r,e,s)};async function gt(t,e,n){if(typeof t!="string"||t.indexOf("-----BEGIN PRIVATE KEY-----")!==0)throw new TypeError('"pkcs8" must be PKCS#8 formatted string');return Nn(t,e,n)}async function Ln(t){return On(t)}async function Kn(t){return Pn(t)}function Wn(t,e,n,r,s){if(s.crit!==void 0&&r?.crit===void 0)throw new t('"crit" (Critical) Header Parameter MUST be integrity protected');if(!r||r.crit===void 0)return new Set;if(!Array.isArray(r.crit)||r.crit.length===0||r.crit.some(o=>typeof o!="string"||o.length===0))throw new t('"crit" (Critical) Header Parameter MUST be an array of non-empty strings when present');let i;n!==void 0?i=new Map([...Object.entries(n),...e.entries()]):i=e;for(let o of r.crit){if(!i.has(o))throw new C(`Extension Header Parameter "${o}" is not recognized`);if(s[o]===void 0)throw new t(`Extension Header Parameter "${o}" is missing`);if(i.get(o)&&r[o]===void 0)throw new t(`Extension Header Parameter "${o}" MUST be integrity protected`)}return new Set(r.crit)}var j=t=>t?.[Symbol.toStringTag],Ee=(t,e,n)=>{if(e.use!==void 0){let r;switch(n){case"sign":case"verify":r="sig";break;case"encrypt":case"decrypt":r="enc";break}if(e.use!==r)throw new TypeError(`Invalid key for this operation, its "use" must be "${r}" when present`)}if(e.alg!==void 0&&e.alg!==t)throw new TypeError(`Invalid key for this operation, its "alg" must be "${t}" when present`);if(Array.isArray(e.key_ops)){let r;switch(!0){case(n==="sign"||n==="verify"):case t==="dir":case t.includes("CBC-HS"):r=n;break;case t.startsWith("PBES2"):r="deriveBits";break;case/^A\d{3}(?:GCM)?(?:KW)?$/.test(t):!t.includes("GCM")&&t.endsWith("KW")?r=n==="encrypt"?"wrapKey":"unwrapKey":r=n;break;case(n==="encrypt"&&t.startsWith("RSA")):r="wrapKey";break;case n==="decrypt":r=t.startsWith("RSA")?"unwrapKey":"deriveBits";break}if(r&&e.key_ops?.includes?.(r)===!1)throw new TypeError(`Invalid key for this operation, its "key_ops" must include "${r}" when present`)}return!0},jn=(t,e,n)=>{if(!(e instanceof Uint8Array)){if(Se(e)){if(bn(e)&&Ee(t,e,n))return;throw new TypeError('JSON Web Key for symmetric algorithms must have JWK "kty" (Key Type) equal to "oct" and the JWK "k" (Key Value) present')}if(!ht(e))throw new TypeError(dt(t,e,"CryptoKey","KeyObject","JSON Web Key","Uint8Array"));if(e.type!=="secret")throw new TypeError(`${j(e)} instances for symmetric algorithms must be of type "secret"`)}},Mn=(t,e,n)=>{if(Se(e))switch(n){case"decrypt":case"sign":if(yn(e)&&Ee(t,e,n))return;throw new TypeError("JSON Web Key for this operation must be a private JWK");case"encrypt":case"verify":if(wn(e)&&Ee(t,e,n))return;throw new TypeError("JSON Web Key for this operation must be a public JWK")}if(!ht(e))throw new TypeError(dt(t,e,"CryptoKey","KeyObject","JSON Web Key"));if(e.type==="secret")throw new TypeError(`${j(e)} instances for asymmetric algorithms must not be of type "secret"`);if(e.type==="public")switch(n){case"sign":throw new TypeError(`${j(e)} instances for asymmetric algorithm signing must be of type "private"`);case"decrypt":throw new TypeError(`${j(e)} instances for asymmetric algorithm decryption must be of type "private"`)}if(e.type==="private")switch(n){case"verify":throw new TypeError(`${j(e)} instances for asymmetric algorithm verifying must be of type "public"`);case"encrypt":throw new TypeError(`${j(e)} instances for asymmetric algorithm encryption must be of type "public"`)}};function Vn(t,e,n){switch(t.substring(0,2)){case"A1":case"A2":case"di":case"HS":case"PB":jn(t,e,n);break;default:Mn(t,e,n)}}var N=t=>Math.floor(t.getTime()/1e3),yt=60,wt=yt*60,$e=wt*24,Fn=$e*7,qn=$e*365.25,Bn=/^(\+|\-)? ?(\d+|\d+\.\d+) ?(seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)(?: (ago|from now))?$/i;function ye(t){let e=Bn.exec(t);if(!e||e[4]&&e[1])throw new TypeError("Invalid time period format");let n=parseFloat(e[2]),r=e[3].toLowerCase(),s;switch(r){case"sec":case"secs":case"second":case"seconds":case"s":s=Math.round(n);break;case"minute":case"minutes":case"min":case"mins":case"m":s=Math.round(n*yt);break;case"hour":case"hours":case"hr":case"hrs":case"h":s=Math.round(n*wt);break;case"day":case"days":case"d":s=Math.round(n*$e);break;case"week":case"weeks":case"w":s=Math.round(n*Fn);break;default:s=Math.round(n*qn);break}return e[1]==="-"||e[4]==="ago"?-s:s}function L(t,e){if(!Number.isFinite(e))throw new TypeError(`Invalid ${t} input`);return e}var Gn=class{#e;constructor(t){if(!pt(t))throw new TypeError("JWT Claims Set MUST be an object");this.#e=structuredClone(t)}data(){return ot.encode(JSON.stringify(this.#e))}get iss(){return this.#e.iss}set iss(t){this.#e.iss=t}get sub(){return this.#e.sub}set sub(t){this.#e.sub=t}get aud(){return this.#e.aud}set aud(t){this.#e.aud=t}set jti(t){this.#e.jti=t}set nbf(t){typeof t=="number"?this.#e.nbf=L("setNotBefore",t):t instanceof Date?this.#e.nbf=L("setNotBefore",N(t)):this.#e.nbf=N(new Date)+ye(t)}set exp(t){typeof t=="number"?this.#e.exp=L("setExpirationTime",t):t instanceof Date?this.#e.exp=L("setExpirationTime",N(t)):this.#e.exp=N(new Date)+ye(t)}set iat(t){t===void 0?this.#e.iat=N(new Date):t instanceof Date?this.#e.iat=L("setIssuedAt",N(t)):typeof t=="string"?this.#e.iat=L("setIssuedAt",N(new Date)+ye(t)):this.#e.iat=L("setIssuedAt",t)}},bt=class{#e;#t;#n;constructor(t){if(!(t instanceof Uint8Array))throw new TypeError("payload must be an instance of Uint8Array");this.#e=t}setProtectedHeader(t){return tt(this.#t,"setProtectedHeader"),this.#t=t,this}setUnprotectedHeader(t){return tt(this.#n,"setUnprotectedHeader"),this.#n=t,this}async sign(t,e){if(!this.#t&&!this.#n)throw new X("either setProtectedHeader or setUnprotectedHeader must be called before #sign()");if(!gn(this.#t,this.#n))throw new X("JWS Protected and JWS Unprotected Header Parameter names must be disjoint");let n={...this.#t,...this.#n},r=Wn(X,new Map([["b64",!0]]),e?.crit,this.#t,n),s=!0;if(r.has("b64")&&(s=this.#t.b64,typeof s!="boolean"))throw new X('The "b64" (base64url-encode payload) Header Parameter must be a boolean');let{alg:i}=n;if(typeof i!="string"||!i)throw new X('JWS "alg" (Algorithm) Header Parameter missing or invalid');Vn(i,t,"sign");let o,a;s?(o=fe(this.#e),a=pe(o)):(a=this.#e,o="");let c,u;this.#t?(c=fe(JSON.stringify(this.#t)),u=pe(c)):(c="",u=new Uint8Array);let l=cn(u,pe("."),a),d=await Cn(t,i),h=await kn(i,d,l),w={signature:fe(h),payload:o};return this.#n&&(w.header=this.#n),this.#t&&(w.protected=c),w}},Jn=class{#e;constructor(t){this.#e=new bt(t)}setProtectedHeader(t){return this.#e.setProtectedHeader(t),this}async sign(t,e){let n=await this.#e.sign(t,e);if(n.payload===void 0)throw new TypeError("use the flattened module for creating JWS with b64: false");return`${n.protected}.${n.payload}.${n.signature}`}},Yn=class{#e;#t;constructor(t={}){this.#t=new Gn(t)}setIssuer(t){return this.#t.iss=t,this}setSubject(t){return this.#t.sub=t,this}setAudience(t){return this.#t.aud=t,this}setJti(t){return this.#t.jti=t,this}setNotBefore(t){return this.#t.nbf=t,this}setExpirationTime(t){return this.#t.exp=t,this}setIssuedAt(t){return this.#t.iat=t,this}setProtectedHeader(t){return this.#e=t,this}async sign(t,e){let n=new Jn(this.#t.data());if(n.setProtectedHeader(this.#e),Array.isArray(this.#e?.crit)&&this.#e.crit.includes("b64")&&this.#e.b64===!1)throw new fn("JWTs MUST NOT use unencoded payload");return n.sign(t,e)}};function we(t){let e=t?.modulusLength??2048;if(typeof e!="number"||e<2048)throw new C("Invalid or unsupported modulusLength option provided, 2048 bits or larger keys must be used");return e}async function zn(t,e){let n,r;switch(t){case"PS256":case"PS384":case"PS512":n={name:"RSA-PSS",hash:`SHA-${t.slice(-3)}`,publicExponent:Uint8Array.of(1,0,1),modulusLength:we(e)},r=["sign","verify"];break;case"RS256":case"RS384":case"RS512":n={name:"RSASSA-PKCS1-v1_5",hash:`SHA-${t.slice(-3)}`,publicExponent:Uint8Array.of(1,0,1),modulusLength:we(e)},r=["sign","verify"];break;case"RSA-OAEP":case"RSA-OAEP-256":case"RSA-OAEP-384":case"RSA-OAEP-512":n={name:"RSA-OAEP",hash:`SHA-${parseInt(t.slice(-3),10)||1}`,publicExponent:Uint8Array.of(1,0,1),modulusLength:we(e)},r=["decrypt","unwrapKey","encrypt","wrapKey"];break;case"ES256":n={name:"ECDSA",namedCurve:"P-256"},r=["sign","verify"];break;case"ES384":n={name:"ECDSA",namedCurve:"P-384"},r=["sign","verify"];break;case"ES512":n={name:"ECDSA",namedCurve:"P-521"},r=["sign","verify"];break;case"Ed25519":case"EdDSA":{r=["sign","verify"],n={name:"Ed25519"};break}case"ML-DSA-44":case"ML-DSA-65":case"ML-DSA-87":{r=["sign","verify"],n={name:t};break}case"ECDH-ES":case"ECDH-ES+A128KW":case"ECDH-ES+A192KW":case"ECDH-ES+A256KW":{r=["deriveBits"];let s=e?.crv??"P-256";switch(s){case"P-256":case"P-384":case"P-521":{n={name:"ECDH",namedCurve:s};break}case"X25519":n={name:"X25519"};break;default:throw new C("Invalid or unsupported crv option provided, supported values are P-256, P-384, P-521, and X25519")}break}default:throw new C('Invalid or unsupported JWK "alg" (Algorithm) Parameter value')}return crypto.subtle.generateKey(n,e?.extractable??!1,r)}var er="https://id.botparty.club",tr="EdDSA",nr=15,rr=6e4,sr="5m",ir=3,or=["brave","calm","cosmic","eager","fair","gentle","happy","keen","lively","noble","proud","quick","rare","sharp","swift","true","vivid","warm","wild","bold","cool","fast","grand","just","kind","lean","mild","neat","pale","rich","safe","tall","vast","wise","bright","dark","fierce","quiet","free","glad"],ar=["lion","hawk","wolf","bear","fox","deer","owl","crane","whale","tiger","eagle","shark","raven","puma","lynx","orca","swan","viper","bison","cobra","finch","gecko","heron","ibex","jay","kite","lark","moth","newt","otter","perch","quail","robin","seal","toad","wren","yak","zebra","ant","bee"],_=class extends Error{code;statusCode;actionUrl;details;constructor(t){super(t.message),this.name="BotPartyError",this.code=t.code,this.statusCode=t.statusCode,this.actionUrl=t.actionUrl,this.details=t.details}},Ce=class extends _{constructor(t){super({code:"NAMESPACE_LOCKED",message:t.message,statusCode:423,actionUrl:t.actionUrl,details:{lockedAt:t.lockedAt,reason:t.reason}}),this.name="NamespaceLockedError"}},ie=class extends _{amount;service;constructor(t){super({code:"PAYMENT_REQUIRED",message:t.message,statusCode:402,actionUrl:t.actionUrl}),this.name="PaymentRequiredError",this.amount=t.amount,this.service=t.service}},oe=class extends _{missingScopes;constructor(t){super({code:"INSUFFICIENT_PERMISSION",message:t.message,statusCode:403,actionUrl:t.actionUrl}),this.name="InsufficientPermissionError",this.missingScopes=t.missingScopes}},Te=class extends _{constructor(t){super({code:"LINK_REQUIRED",message:t.message,statusCode:403,actionUrl:t.actionUrl}),this.name="LinkRequiredError"}};function rt(t){let e=At(4);return t[e.readUInt32BE(0)%t.length]}function cr(){return`${rt(or)}-${rt(ar)}`}function lr(){let t=cr(),e=At(2).toString("hex");return`${t}-${e}`}function ur(){return V(Zn(),".botparty")}function kt(t){se(t)||Xn(t,{recursive:!0,mode:448})}function dr(t){let e=V(t,"identity.json");if(!se(e))return null;try{return JSON.parse(Et(e,"utf-8"))}catch{return null}}function _t(t,e){kt(t);let n=V(t,"identity.json");vt(n,JSON.stringify(e,null,2),{mode:384})}function hr(t){let e=V(t,"private.pem");if(!se(e))return null;try{return Et(e,"utf-8")}catch{return null}}function St(t,e){kt(t);let n=V(t,"private.pem");vt(n,e,{mode:384})}function st(t){for(let e of["identity.json","private.pem"]){let n=V(t,e);se(n)&&Qn(n)}}async function $t(t){let e={extractable:!0};t==="EdDSA"&&(e.crv="Ed25519");let{privateKey:n,publicKey:r}=await zn(t,e),s=await Kn(n),i=await Ln(r);return{privateKey:n,publicKey:r,privatePem:s,publicPem:i}}async function pr(t,e,n){let r=await gt(e,n);return(await new bt(new TextEncoder().encode(t)).setProtectedHeader({alg:n}).sign(r)).signature}async function ve(t,e,n,r,s){let i=r,o=await gt(n,i);return new Yn({...s}).setProtectedHeader({alg:i,kid:e}).setIssuer(t).setSubject(t).setIssuedAt().setExpirationTime(sr).sign(o)}async function x(t,e,n={}){let{token:r,...s}=n,i=new Headers(s.headers);return i.set("Content-Type","application/json"),r&&i.set("Authorization",`Bearer ${r}`),fetch(`${t}${e}`,{...s,headers:i})}async function be(t){try{return await t.clone().json()}catch{return null}}function re(t){let e=t.error,n,r,s,i={};if(typeof e=="object"&&e!==null){let o=e;n=o.code||"UNKNOWN",r=o.message||t.message||"Request failed",s=o.actionUrl||t.actionUrl,i=o}else n=(typeof e=="string"?e:t.code)||"UNKNOWN",r=t.message||(typeof e=="string"?e:"Request failed"),s=t.actionUrl,i=t;return{code:n,message:r,actionUrl:s,extra:i}}var fr=class{constructor(t,e){this.client=t,this.keyId=e}get id(){return this.keyId}async info(){return this.client.keys.get(this.keyId)}async update(t){return this.client.keys.update(this.keyId,t)}async delete(){return this.client.keys.delete(this.keyId)}async rotate(){return this.client.keys.rotate(this.keyId)}async invalidate(t){return this.client.keys.invalidate(this.keyId,t)}},mr=class{constructor(t){this.client=t}async list(){let t=await this.client.generateToken(),e=await x(this.client.serverUrl,"/api/v1/namespaces/keys",{token:t});if(!e.ok)throw await this.client._apiError(e);return(await e.json()).data}async get(t){let e=(await this.list()).find(n=>n.id===t);if(!e)throw new _({code:"KEY_NOT_FOUND",message:`Key ${t} not found`,statusCode:404});return e}async add(t){let e=await this.client.generateToken(),n=await x(this.client.serverUrl,"/api/v1/namespaces/keys",{method:"POST",token:e,body:JSON.stringify(t)});if(!n.ok)throw await this.client._apiError(n);return n.json()}async update(t,e){let n=await this.client.generateToken(),r=await x(this.client.serverUrl,`/api/v1/namespaces/keys/${t}`,{method:"PATCH",token:n,body:JSON.stringify(e)});if(!r.ok)throw await this.client._apiError(r);return r.json()}async delete(t){let e=await this.client.generateToken(),n=await x(this.client.serverUrl,`/api/v1/namespaces/keys/${t}`,{method:"DELETE",token:e});if(!n.ok&&n.status!==204)throw await this.client._apiError(n)}async rotate(t){let e=this.client.getIdentity();if(!e)throw new Error("Not registered");let n=this.client.getPrivateKey();if(!n)throw new Error("Private key not found");let r=t||e.keyId;if(r!==e.keyId)throw new _({code:"CANNOT_ROTATE_OTHER_KEY",message:"Can only rotate the current machine key from this client. Use the server API directly for other keys.",statusCode:400});let s=await $t(e.algorithm),i=await ve(e.namespace,e.keyId,n,e.algorithm),o=await x(e.serverUrl,`/api/v1/namespaces/keys/${r}/rotate`,{method:"POST",token:i,body:JSON.stringify({newPublicKey:s.publicPem})});if(!o.ok)throw await this.client._apiError(o);let a=await o.json();return St(this.client.stateDir,s.privatePem),_t(this.client.stateDir,{...e,rotatedAt:a.rotatedAt}),a}async rotateCurrent(){return this.rotate()}async invalidate(t,e){let n=await this.client.generateToken(),r=await x(this.client.serverUrl,`/api/v1/namespaces/keys/${t}/invalidate`,{method:"POST",token:n,body:JSON.stringify({reason:e})});if(!r.ok)throw await this.client._apiError(r)}},Ct=class{serverUrl;stateDir;keys;algorithm;rotationTTL;constructor(t={}){this.serverUrl=(t.serverUrl||it("BOTPARTY_SERVER_URL")||er).replace(/\/$/,""),this.stateDir=t.stateDir||it("BOTPARTY_STATE_DIR")||ur(),this.algorithm=t.algorithm||tr,this.rotationTTL=t.rotationTTL||nr,this.keys=new mr(this)}getIdentity(){return dr(this.stateDir)}getPrivateKey(){return hr(this.stateDir)}isRegistered(){return this.getIdentity()!==null&&this.getPrivateKey()!==null}async register(t,e){let n=t,r=0;for(;r<ir;){n||(n=lr());let s=e||n,i=await $t(this.algorithm),o=await x(this.serverUrl,"/api/v1/namespaces/register",{method:"POST",body:JSON.stringify({namespace:n,publicKey:i.publicPem,rotationTTL:this.rotationTTL})}),a=await o.json();if(a.status==="already_registered")throw new _({code:"ALREADY_REGISTERED",message:`Namespace "${n}" is already registered`,statusCode:409});if(o.status===409&&!t){n=void 0,r++;continue}if(!o.ok)throw new _({code:a.error||"REGISTRATION_FAILED",message:a.message||a.error||"Registration failed",statusCode:o.status});let c=a.challenge,u=await pr(c,i.privatePem,this.algorithm),l=await x(this.serverUrl,"/api/v1/namespaces/register/verify",{method:"POST",body:JSON.stringify({namespace:n,challenge:c,signature:u})});if(!l.ok)throw await this._apiError(l);let d=await l.json();return St(this.stateDir,i.privatePem),_t(this.stateDir,{serverUrl:this.serverUrl,namespace:n,keyId:d.keyId,algorithm:this.algorithm,rotatedAt:d.rotatedAt,rotationTTL:d.rotationTTL,label:s}),d}throw new _({code:"REGISTRATION_FAILED",message:"Failed to find available namespace after retries",statusCode:409})}async ensureRegistered(){let t=this.getIdentity();if(t&&this.getPrivateKey())return t;await this.register();let e=this.getIdentity();if(!e)throw new Error("Registration succeeded but identity could not be read");return e}async ensureFreshKey(){let t=this.getIdentity();if(!t)throw new Error("Not registered");let e=new Date(t.rotatedAt).getTime()+t.rotationTTL*6e4;Date.now()>=e-rr&&await this.keys.rotateCurrent()}async generateToken(t){await this.ensureRegistered(),await this.ensureFreshKey();let e=this.getIdentity(),n=this.getPrivateKey();return ve(e.namespace,e.keyId,n,e.algorithm,t)}async fetch(t,e={}){let n=await this.generateToken(),r=new Headers(e.headers);r.set("X-Proxy-Authorization",`Bearer ${n}`);let s=await fetch(t,{...e,headers:r});if(s.status===401){let i=await be(s);if(i){let{code:o}=re(i);if(o==="KEY_STALE"){await this.keys.rotateCurrent();let a=await this.generateToken(),c=new Headers(e.headers);c.set("X-Proxy-Authorization",`Bearer ${a}`),s=await fetch(t,{...e,headers:c})}}}if([401,402,403,423].includes(s.status)){let i=await be(s);if(i){let{code:o}=re(i);yr(o)&&wr(s.status,i,this.getIdentity(),this.serverUrl)}}return s}async info(t){let e=t||this.getIdentity()?.namespace;if(!e)throw new Error("Not registered and no namespace provided");let n=await x(this.serverUrl,`/api/v1/namespaces/${e}/info`);if(!n.ok)throw await this._apiError(n);return n.json()}async destroy(){let t=await this.generateToken(),e=await x(this.serverUrl,"/api/v1/namespaces",{method:"DELETE",token:t});if(!e.ok&&e.status!==204)throw await this._apiError(e);st(this.stateDir)}async link(){let t=this.getIdentity();if(!t)throw new Error("Not registered");let e=this.getPrivateKey();if(!e)throw new Error("Private key not found");let n=await ve(t.namespace,t.keyId,e,t.algorithm,{act:"link"});return{url:`${t.serverUrl}/namespaces/${t.namespace}/link?jwt=${n}`}}whoami(){let t=this.getIdentity();if(!t)return null;let e=new Date(new Date(t.rotatedAt).getTime()+t.rotationTTL*6e4).toISOString();return{namespace:t.namespace,keyId:t.keyId,algorithm:t.algorithm,rotationTTL:t.rotationTTL,rotatedAt:t.rotatedAt,staleAt:e,label:t.label,serverUrl:t.serverUrl}}key(t){return new fr(this,t)}reset(){st(this.stateDir)}async _apiError(t){let e=await be(t);if(!e)return new _({code:"UNKNOWN",message:`Request failed with status ${t.status}`,statusCode:t.status});let{code:n,message:r,actionUrl:s}=re(e);return new _({code:n,message:r,statusCode:t.status,actionUrl:s})}},gr=new Set(["NAMESPACE_LOCKED","LOCKUP_TRIGGERED","PAYMENT_REQUIRED","LINK_REQUIRED","INSUFFICIENT_SCOPE","PERMISSION_DENIED","KEY_STALE","KEY_EXPIRED"]);function yr(t){return gr.has(t)}function wr(t,e,n,r){let{code:s,message:i,actionUrl:o,extra:a}=re(e),c=n?.namespace||"",u=n?.serverUrl||r;throw s==="NAMESPACE_LOCKED"||s==="LOCKUP_TRIGGERED"||t===423?new Ce({message:i||"Namespace is locked",actionUrl:o||`${u}/namespaces/${c}/unlock`,lockedAt:a.lockedAt,reason:a.reason}):s==="PAYMENT_REQUIRED"||t===402?new ie({message:i,actionUrl:o,amount:a.amount||e.amount,service:a.service||e.service}):s==="LINK_REQUIRED"?new Te({message:i,actionUrl:o||`${u}/namespaces/${c}/link`}):s==="INSUFFICIENT_SCOPE"||s==="PERMISSION_DENIED"||t===403?new oe({message:i,actionUrl:o,missingScopes:a.missingScopes||a.missing_scopes}):new _({code:s,message:i,statusCode:t,actionUrl:o})}function it(t){if(typeof process<"u"&&process.env)return process.env[t]}import{writeFileSync as Mt}from"fs";import{readFileSync as ue}from"fs";import{basename as Dr}from"path";var Wt=an(Kt(),1),{program:si,createCommand:ii,createArgument:oi,createOption:ai,CommanderError:ci,InvalidArgumentError:li,InvalidOptionArgumentError:ui,Command:jt,Argument:di,Option:hi,Help:pi}=Wt.default;var Ur="\x1B[1m",Hr="\x1B[2m",Nr="\x1B[31m",Lr="\x1B[32m",Kr="\x1B[33m",Wr="\x1B[36m",q="\x1B[0m";function jr(t){return`${Ur}${t}${q}`}function Be(t){return`${Hr}${t}${q}`}function Vt(t){return`${Nr}${t}${q}`}function Ge(t){return`${Kr}${t}${q}`}function Ft(t){return`${Wr}${t}${q}`}function Mr(t){return`${Lr}${t}${q}`}function qt(t){return(t||process.env.KEYCHAINS_PROXY_URL||process.env.BOTPARTY_PROXY_URL||"https://keychains.dev").replace(/\/$/,"")}var F=class extends Error{approvalUrl;constructor(e,n){super(e),this.approvalUrl=n}};function Vr(t,e){try{let n=new URL(t),r=new URL(e);return n.hostname===r.hostname&&n.port===r.port&&n.protocol===r.protocol?t:`${e}/${n.hostname}${n.pathname}${n.search}`}catch{return`${e}/${t}`}}async function Bt(t,e,n,r){let s=await n.generateToken(),i=Vr(t,r),o=new Headers(e.headers);o.set("X-Proxy-Authorization",`Bearer ${s}`);let a=await fetch(i,{method:e.method,headers:o,body:e.body});if(a.status===401)try{let u=await a.clone().json();if(u.code==="KEY_STALE"||u.error==="KEY_STALE"){await n.keys.rotateCurrent();let l=await n.generateToken(),d=new Headers(e.headers);d.set("X-Proxy-Authorization",`Bearer ${l}`),a=await fetch(i,{method:e.method,headers:d,body:e.body})}}catch{}if(a.status===403){let c=a.clone();try{let u=await c.json(),l=u.approval_url||u.authorizationUrl;if(l){let d=typeof u.message=="string"?u.message:u.missing_scopes?`Insufficient scopes: ${u.missing_scopes.join(", ")}`:"Missing required credentials";throw new F(d,l)}}catch(u){if(u instanceof F)throw u}}return a}function Je(t,e,n,r){let s=(Date.now()-r)/1e3,i=e.headers.get("content-type")||"",o={http_code:e.status,http_connect:0,http_version:"1.1",response_code:e.status,content_type:i,size_download:n,size_header:0,size_request:0,size_upload:0,speed_download:s>0?Math.round(n/s):0,speed_upload:0,time_appconnect:s,time_connect:s,time_namelookup:0,time_pretransfer:s,time_redirect:0,time_starttransfer:s,time_total:s,url_effective:"",num_connects:1,num_redirects:0,redirect_url:"",ssl_verify_result:0,stdout:"-",stderr:"-",exitcode:0,errormsg:"",method:"",scheme:"",filename_effective:"",onerror:"",urlnum:0},a=t;return a=a.replace(/\\n/g,`
33
+ `),a=a.replace(/\\r/g,"\r"),a=a.replace(/\\t/g," "),a=a.replace(/\\\\/g,"\\"),a=a.replace(/%\{([a-zA-Z_][a-zA-Z0-9_]*)\}/g,(c,u)=>u in o?String(o[u]):c),a}function Fr(t,e,n){let r=[],s;try{let i=new URL(e);s=i.pathname+i.search}catch{s=e}r.push(`> ${t} ${s} HTTP/1.1`);try{let i=new URL(e);r.push(`> Host: ${i.host}`)}catch{}for(let[i,o]of Object.entries(n))i.toLowerCase()!=="host"&&r.push(`> ${i}: ${o}`);return r.push(">"),r.join(`
34
+ `)}function qr(t,e,n){let r=[];return r.push(`< HTTP/1.1 ${t} ${e}`),n.forEach((s,i)=>{r.push(`< ${i}: ${s}`)}),r.push("<"),r.join(`
35
+ `)}function Gt(t,e,n){let r=[];return r.push(`HTTP/1.1 ${t} ${e}`),n.forEach((s,i)=>{r.push(`${i}: ${s}`)}),r.push(""),r.join(`
36
+ `)}function Br(t,e,n){let r=[];return r.push(`HTTP/1.1 ${t} ${e}`),n.forEach((s,i)=>{r.push(`${i}: ${s}`)}),r.push(""),r.join(`
37
+ `)}function Gr(t){let e=[];if(t.data)for(let n of t.data)if(n.startsWith("@"))try{e.push(ue(n.slice(1),"utf-8"))}catch{e.push(n)}else e.push(n);if(t.dataRaw)for(let n of t.dataRaw)e.push(n);if(t.dataBinary)for(let n of t.dataBinary)if(n.startsWith("@"))try{e.push(ue(n.slice(1),"utf-8"))}catch{e.push(n)}else e.push(n);if(t.dataUrlencode)for(let n of t.dataUrlencode){let r=n.indexOf("=");if(r>0){let s=n.slice(0,r),i=n.slice(r+1);e.push(`${encodeURIComponent(s)}=${encodeURIComponent(i)}`)}else n.startsWith("=")?e.push(encodeURIComponent(n.slice(1))):e.push(encodeURIComponent(n))}if(t.dataAscii)for(let n of t.dataAscii)e.push(n);if(t.json)for(let n of t.json)e.push(n);if(e.length!==0)return e.join("&")}function Jr(t){return!!(t.data&&t.data.length>0||t.dataRaw&&t.dataRaw.length>0||t.dataBinary&&t.dataBinary.length>0||t.dataUrlencode&&t.dataUrlencode.length>0||t.dataAscii&&t.dataAscii.length>0||t.json&&t.json.length>0)}function Yt(t){return!!(t.form&&t.form.length>0||t.formString&&t.formString.length>0)}function Yr(t){return t.request?t.request.toUpperCase():t.head?"HEAD":Jr(t)&&!t.get||Yt(t)?"POST":t.uploadFile?"PUT":"GET"}async function Jt(t,e,n,r,s,i){let o=await t.text(),a=Buffer.byteLength(o,"utf-8");if(e.verbose){let u=Fr(n,r,s);process.stderr.write(u+`
38
+ `);let l=qr(t.status,t.statusText,t.headers);process.stderr.write(l+`
39
+ `)}if(e.dumpHeader){let u=Br(t.status,t.statusText,t.headers);e.dumpHeader==="-"?process.stdout.write(u):Mt(e.dumpHeader,u)}e.fail&&t.status>=400&&(e.failWithBody||(e.silent||process.stderr.write(`curl: (22) The requested URL returned error: ${t.status} ${t.statusText}
40
+ `),e.writeOut&&process.stdout.write(Je(e.writeOut,t,a,i)),process.exit(22)));let c="";e.include&&(c+=Gt(t.status,t.statusText,t.headers)),e.head?!e.include&&!e.verbose&&(c+=Gt(t.status,t.statusText,t.headers)):c+=o,e.output?e.output==="-"?process.stdout.write(c):Mt(e.output,c):c&&process.stdout.write(c),e.failWithBody&&t.status>=400&&(e.silent||process.stderr.write(`curl: (22) The requested URL returned error: ${t.status} ${t.statusText}
41
+ `),e.writeOut&&process.stdout.write(Je(e.writeOut,t,a,i)),process.exit(22)),e.writeOut&&process.stdout.write(Je(e.writeOut,t,a,i))}async function zt(t,e){let n=new jt;n.exitOverride(),n.name("botparty curl").argument("[url]","URL to request").description("Make a proxied API call (like curl, but through BotParty + Keychains)").allowUnknownOption(!1).option("--proxy-url <url>","Keychains proxy base URL (default: $KEYCHAINS_PROXY_URL or https://keychains.dev)").option("--wait-on-authlink","If credentials are required, wait for user approval then retry automatically").option("--wait-timeout <seconds>","Max seconds to wait for approval when using --wait-on-authlink (default: no limit)").option("-X, --request <method>","Specify request method").option("-H, --header <header...>","Pass custom header(s) to server (repeatable)").option("-d, --data <data...>","HTTP POST data (repeatable)").option("--data-raw <data...>","HTTP POST data without @ file interpretation (repeatable)").option("--data-binary <data...>","HTTP POST binary data (repeatable)").option("--data-urlencode <data...>","HTTP POST data URL encoded (repeatable)").option("--data-ascii <data...>","HTTP POST ASCII data (repeatable)").option("--json <data...>","HTTP POST JSON data (sets Content-Type and Accept headers)").option("-F, --form <name=content...>","Specify multipart MIME data (repeatable)").option("--form-string <name=content...>","Specify multipart MIME data (no file interpretation)").option("-v, --verbose","Make the operation more talkative").option("-i, --include","Include response headers in output").option("-I, --head","Show document info only (HEAD request)").option("-s, --silent","Silent mode").option("-S, --show-error","Show error even when -s is used").option("-o, --output <file>","Write to file instead of stdout").option("-D, --dump-header <file>","Write response headers to file").option("-w, --write-out <format>","Display information after transfer").option("-f, --fail","Fail fast with no output on HTTP errors").option("--fail-with-body","Fail with output on HTTP errors").option("-L, --location","Follow redirects").option("--max-redirs <num>","Maximum number of redirects").option("--location-trusted","Follow redirects and send auth to other hosts").option("-A, --user-agent <name>","Send User-Agent to server").option("-e, --referer <URL>","Referrer URL").option("-b, --cookie <data...>","Send cookies from string/file (repeatable)").option("-c, --cookie-jar <filename>","Write cookies to filename after operation").option("-u, --user <user:password>","Server user and password").option("--compressed","Request compressed response").option("-r, --range <range>","Retrieve only this byte range").option("--connect-timeout <seconds>","Maximum time for connection").option("-m, --max-time <seconds>","Maximum time for the transfer").option("--retry <num>","Retry request if transient problems occur").option("--retry-delay <seconds>","Wait time between retries").option("--retry-max-time <seconds>","Retry only within this period").option("--retry-all-errors","Retry on all errors").option("--url <url>","URL to work with").option("-G, --get","Put the post data in the URL and use GET").option("-T, --upload-file <file>","Transfer local FILE to destination").option("-k, --insecure","Allow insecure server connections").option("--cacert <file>","CA certificate to verify peer against").option("--capath <dir>","CA directory to verify peer against").option("--cert <cert[:passwd]>","Client certificate file and password").option("--cert-type <type>","Certificate type (DER/PEM/ENG)").option("--key <key>","Private key file name").option("--key-type <type>","Private key file type (DER/PEM/ENG)").option("--pass <phrase>","Pass phrase for the private key").option("--ciphers <list>","SSL ciphers to use").option("-1, --tlsv1","Use TLSv1.0 or greater").option("--tlsv1.0","Use TLSv1.0 or greater").option("--tlsv1.1","Use TLSv1.1 or greater").option("--tlsv1.2","Use TLSv1.2 or greater").option("--tlsv1.3","Use TLSv1.3 or greater").option("--ssl","Try SSL/TLS").option("--ssl-reqd","Require SSL/TLS").option("--ssl-no-revoke","Disable cert revocation checks").option("--no-alpn","Disable the ALPN TLS extension").option("--no-npn","Disable the NPN TLS extension").option("--no-sessionid","Disable SSL session-ID reusing").option("-0, --http1.0","Use HTTP 1.0").option("--http1.1","Use HTTP 1.1").option("--http2","Use HTTP 2").option("--http2-prior-knowledge","Use HTTP 2 without HTTP/1.1 Upgrade").option("--http3","Use HTTP v3").option("-4, --ipv4","Resolve names to IPv4 addresses").option("-6, --ipv6","Resolve names to IPv6 addresses").option("-x, --proxy <[protocol://]host[:port]>","Use this proxy").option("-U, --proxy-user <user:password>","Proxy user and password").option("--noproxy <no-proxy-list>","List of hosts which do not use proxy").option("-n, --netrc","Must read .netrc for user name and password").option("--netrc-optional","Use either .netrc or URL").option("--netrc-file <filename>","Specify FILE for netrc").option("-K, --config <file>","Read config from a file").option("--create-dirs","Create necessary local directory hierarchy").option("--raw",'Do HTTP "raw"; no transfer decoding').option("--no-keepalive","Disable TCP keepalive on the connection").option("--keepalive-time <seconds>","Interval time for keepalive probes").option("-N, --no-buffer","Disable buffering of the output stream").option("-#, --progress-bar","Display transfer progress as a bar").option("--stderr <file>","Where to redirect stderr").option("--trace <file>","Write a debug trace to FILE").option("--trace-ascii <file>","Like --trace, but without hex output").option("--trace-time","Add time stamps to trace/verbose output").option("--path-as-is","Do not squash .. sequences in URL path").option("--tcp-fastopen","Use TCP Fast Open").option("--tcp-nodelay","Use the TCP_NODELAY option").option("-j, --junk-session-cookies","Ignore session cookies read from file").option("-O, --remote-name","Write output to a file named as the remote file").option("--remote-name-all","Use the remote file name for all URLs").option("-R, --remote-time","Set the remote file time on the local output").option("-J, --remote-header-name","Use the header-provided filename").option("-C, --continue-at <offset>","Resumed transfer offset").option("-g, --globoff","Disable URL sequences and ranges using {} and []").option("--limit-rate <speed>","Limit transfer speed to RATE").option("--max-filesize <bytes>","Maximum file size to download").option("--interface <name>","Use network INTERFACE (or address)").option("--local-port <num/range>","Force use of RANGE for local port numbers").option("--dns-servers <addresses>","DNS server addrs to use").option("--dns-interface <interface>","Interface to use for DNS requests").option("--dns-ipv4-addr <address>","IPv4 address to use for DNS requests").option("--dns-ipv6-addr <address>","IPv6 address to use for DNS requests").option("--expect100-timeout <seconds>","How long to wait for 100-continue").option("--happy-eyeballs-timeout-ms <milliseconds>","Time for IPv6 before trying IPv4").action(async(s,i)=>{let o;try{let a=e(),c=qt(i.proxyUrl),u=s||i.url;u||(process.stderr.write(`curl: no URL specified!
42
42
  curl: try 'botparty curl --help' for more information
43
- `),process.exit(2));let l={};if(s.header)for(let b of s.header){let T=b.indexOf(":");if(T>0){let k=b.slice(0,T).trim(),te=b.slice(T+1).trim();te===""?delete l[k]:l[k]=te}else b.endsWith(";")&&(l[b.slice(0,-1).trim()]="")}if(s.userAgent&&(l["User-Agent"]=s.userAgent),s.referer&&(l.Referer=s.referer),s.cookie&&(l.Cookie=s.cookie.join("; ")),s.user){let b=Buffer.from(s.user).toString("base64");l.Authorization=`Basic ${b}`}s.compressed&&(l["Accept-Encoding"]="gzip, deflate, br"),s.range&&(l.Range=`bytes=${s.range}`),s.json&&s.json.length>0&&(!l["Content-Type"]&&!l["content-type"]&&(l["Content-Type"]="application/json"),!l.Accept&&!l.accept&&(l.Accept="application/json"));let d=Yn(s),h=Bn(s),y=u;if(s.get&&h){let b=y.includes("?")?"&":"?";y=y+b+h,h=void 0}if(!h&&Yt(s)){let b=new FormData,T=(k,te)=>{let he=k.indexOf("=");if(he<=0)return;let Qe=k.slice(0,he),Y=k.slice(he+1);if(te&&Y.startsWith("@"))try{let Qt=ue(Y.slice(1)),Zt=new Blob([Qt]);b.append(Qe,Zt,Dn(Y.slice(1)))}catch{process.stderr.write(`curl: (26) Failed to open/read local data from file: ${Y.slice(1)}
44
- `),process.exit(26)}else b.append(Qe,Y)};if(s.form)for(let k of s.form)T(k,!0);if(s.formString)for(let k of s.formString)T(k,!1);h=b}if(s.uploadFile&&!h)try{h=ue(s.uploadFile,"utf-8")}catch{process.stderr.write(`curl: (26) Failed to open/read local data from file: ${s.uploadFile}
45
- `),process.exit(26)}h&&!l["Content-Type"]&&!l["content-type"]&&(s.json&&s.json.length>0?l["Content-Type"]="application/json":l["Content-Type"]="application/x-www-form-urlencoded"),o={url:y,method:d,headers:l,body:typeof h=="string"?h:void 0};let O=Date.now(),B=s.retry?parseInt(s.retry,10):0,Xe=s.retryDelay?parseInt(s.retryDelay,10)*1e3:1e3,de=null,J=null;for(let b=0;b<=B;b++)try{if(J=await Gt(o.url,{method:o.method,headers:o.headers,body:o.body},a,c),J.status>=500&&b<B){de=new Error(`HTTP ${J.status}`),await new Promise(T=>setTimeout(T,Xe));continue}break}catch(T){if(de=T,b<B){await new Promise(k=>setTimeout(k,Xe));continue}throw T}if(!J)throw de;await Jt(J,s,o.method,o.url,o.headers,O)}catch(a){if(s.silent&&!s.showError&&process.exit(1),a instanceof V&&a.approvalUrl){if(s.waitOnAuthlink){process.stderr.write(`
46
- `),process.stderr.write(` ${Be("Authorization required:")} ${a.message}
47
- `),process.stderr.write(` ${Ge("Auth URL:")} ${Ft(a.approvalUrl)}
48
- `),process.stderr.write(` ${Ge("Open this link to authorize, then the request will retry.")}
43
+ `),process.exit(2));let l={};if(i.header)for(let A of i.header){let P=A.indexOf(":");if(P>0){let $=A.slice(0,P).trim(),te=A.slice(P+1).trim();te===""?delete l[$]:l[$]=te}else A.endsWith(";")&&(l[A.slice(0,-1).trim()]="")}if(i.userAgent&&(l["User-Agent"]=i.userAgent),i.referer&&(l.Referer=i.referer),i.cookie&&(l.Cookie=i.cookie.join("; ")),i.user){let A=Buffer.from(i.user).toString("base64");l.Authorization=`Basic ${A}`}i.compressed&&(l["Accept-Encoding"]="gzip, deflate, br"),i.range&&(l.Range=`bytes=${i.range}`),i.json&&i.json.length>0&&(!l["Content-Type"]&&!l["content-type"]&&(l["Content-Type"]="application/json"),!l.Accept&&!l.accept&&(l.Accept="application/json"));let d=Yr(i),h=Gr(i),w=u;if(i.get&&h){let A=w.includes("?")?"&":"?";w=w+A+h,h=void 0}if(!h&&Yt(i)){let A=new FormData,P=($,te)=>{let he=$.indexOf("=");if(he<=0)return;let Qe=$.slice(0,he),Y=$.slice(he+1);if(te&&Y.startsWith("@"))try{let Qt=ue(Y.slice(1)),Zt=new Blob([Qt]);A.append(Qe,Zt,Dr(Y.slice(1)))}catch{process.stderr.write(`curl: (26) Failed to open/read local data from file: ${Y.slice(1)}
44
+ `),process.exit(26)}else A.append(Qe,Y)};if(i.form)for(let $ of i.form)P($,!0);if(i.formString)for(let $ of i.formString)P($,!1);h=A}if(i.uploadFile&&!h)try{h=ue(i.uploadFile,"utf-8")}catch{process.stderr.write(`curl: (26) Failed to open/read local data from file: ${i.uploadFile}
45
+ `),process.exit(26)}h&&!l["Content-Type"]&&!l["content-type"]&&(i.json&&i.json.length>0?l["Content-Type"]="application/json":l["Content-Type"]="application/x-www-form-urlencoded"),o={url:w,method:d,headers:l,body:typeof h=="string"?h:void 0};let O=Date.now(),G=i.retry?parseInt(i.retry,10):0,Xe=i.retryDelay?parseInt(i.retryDelay,10)*1e3:1e3,de=null,J=null;for(let A=0;A<=G;A++)try{if(J=await Bt(o.url,{method:o.method,headers:o.headers,body:o.body},a,c),J.status>=500&&A<G){de=new Error(`HTTP ${J.status}`),await new Promise(P=>setTimeout(P,Xe));continue}break}catch(P){if(de=P,A<G){await new Promise($=>setTimeout($,Xe));continue}throw P}if(!J)throw de;await Jt(J,i,o.method,o.url,o.headers,O)}catch(a){if(i.silent&&!i.showError&&process.exit(1),a instanceof F&&a.approvalUrl){if(i.waitOnAuthlink){process.stderr.write(`
46
+ `),process.stderr.write(` ${Ge("Authorization required:")} ${a.message}
47
+ `),process.stderr.write(` ${Be("Auth URL:")} ${Ft(a.approvalUrl)}
48
+ `),process.stderr.write(` ${Be("Open this link to authorize, then the request will retry.")}
49
49
  `),process.stderr.write(`
50
- ${Be("Waiting for user to approve...")}
51
- `);try{let c=s.waitTimeout?parseInt(s.waitTimeout,10)*1e3:void 0,u=2e3,l=c?Date.now()+c:1/0,d=0,h=!1;for(;Date.now()<l;){await new Promise(y=>setTimeout(y,u)),d++,d%30===0&&process.stderr.write(`
52
- `),process.stderr.write(Ge("."));try{let y=e(),O=qt(s.proxyUrl);if(o){let B=await Gt(o.url,{method:o.method,headers:o.headers,body:o.body},y,O);process.stderr.write(`
50
+ ${Ge("Waiting for user to approve...")}
51
+ `);try{let c=i.waitTimeout?parseInt(i.waitTimeout,10)*1e3:void 0,u=2e3,l=c?Date.now()+c:1/0,d=0,h=!1;for(;Date.now()<l;){await new Promise(w=>setTimeout(w,u)),d++,d%30===0&&process.stderr.write(`
52
+ `),process.stderr.write(Be("."));try{let w=e(),O=qt(i.proxyUrl);if(o){let G=await Bt(o.url,{method:o.method,headers:o.headers,body:o.body},w,O);process.stderr.write(`
53
53
 
54
- ${Mn("\u2713")} Authorization approved!
54
+ ${Mr("\u2713")} Authorization approved!
55
55
 
56
- `),h=!0,await Jt(B,s,o.method,o.url,o.headers,Date.now());return}}catch(y){if(y instanceof V)continue;throw y}}h||(process.stderr.write(`
56
+ `),h=!0,await Jt(G,i,o.method,o.url,o.headers,Date.now());return}}catch(w){if(w instanceof F)continue;throw w}}h||(process.stderr.write(`
57
57
 
58
58
  ${Vt("Timed out waiting for approval.")}
59
59
 
@@ -62,80 +62,96 @@ curl: try 'botparty curl --help' for more information
62
62
  `),process.stderr.write(` ${Vt(c instanceof Error?c.message:String(c))}
63
63
 
64
64
  `),process.exit(1)}}process.stderr.write(`
65
- `),process.stderr.write(` ${Be("Credentials required:")} ${a.message}
65
+ `),process.stderr.write(` ${Ge("Credentials required:")} ${a.message}
66
66
  `),process.stderr.write(`
67
- `),process.stderr.write(` ${jn("Authorize at:")}
67
+ `),process.stderr.write(` ${jr("Authorize at:")}
68
68
  `),process.stderr.write(` ${Ft(a.approvalUrl)}
69
69
  `),process.stderr.write(`
70
70
  `)}else process.stderr.write(`curl: (6) ${a instanceof Error?a.message:a}
71
- `);process.exit(1)}});try{await r.parseAsync(t,{from:"user"})}catch(i){if(i&&typeof i=="object"&&"exitCode"in i){let s=i;process.exit(s.exitCode)}throw i}}var m=!1,zn="\x1B[1m",Xn="\x1B[2m",Qn="\x1B[31m",Zn="\x1B[32m",ei="\x1B[33m",ti="\x1B[36m",G="\x1B[0m";function g(t){return`${zn}${t}${G}`}function _(t){return`${Xn}${t}${G}`}function v(t){return`${Qn}${t}${G}`}function P(t){return`${Zn}${t}${G}`}function q(t){return`${ei}${t}${G}`}function f(t){return`${ti}${t}${G}`}function E(t){console.log(JSON.stringify({ok:!0,...t},null,2))}function w(t,e=1){m?console.log(JSON.stringify({ok:!1,error:{message:t}},null,2)):console.error(`${v("error")}: ${t}`),process.exit(e)}function ri(t){if(m){let e={ok:!1};t instanceof A?e.error={code:t.code,message:t.message,statusCode:t.statusCode,...t.actionUrl&&{actionUrl:t.actionUrl},...t instanceof se&&t.amount&&{amount:t.amount},...t instanceof oe&&t.missingScopes&&{missingScopes:t.missingScopes}}:t instanceof Error?e.error={message:t.message}:e.error={message:String(t)},console.log(JSON.stringify(e,null,2)),process.exit(1)}t instanceof $e&&(console.error(`
72
- ${v("NAMESPACE LOCKED")}: ${t.message}`),t.actionUrl&&console.error(`
71
+ `);process.exit(1)}});try{await n.parseAsync(t,{from:"user"})}catch(s){if(s&&typeof s=="object"&&"exitCode"in s){let i=s;process.exit(i.exitCode)}throw s}}var y=!1,zr="\x1B[1m",Xr="\x1B[2m",Qr="\x1B[31m",Zr="\x1B[32m",es="\x1B[33m",ts="\x1B[36m",B="\x1B[0m";function g(t){return`${zr}${t}${B}`}function k(t){return`${Xr}${t}${B}`}function E(t){return`${Qr}${t}${B}`}function S(t){return`${Zr}${t}${B}`}function D(t){return`${es}${t}${B}`}function p(t){return`${ts}${t}${B}`}function b(t){console.log(JSON.stringify({ok:!0,...t},null,2))}function f(t,e=1){y?console.log(JSON.stringify({ok:!1,error:{message:t}},null,2)):console.error(`${E("error")}: ${t}`),process.exit(e)}function ns(t){if(y){let e={ok:!1};t instanceof _?e.error={code:t.code,message:t.message,statusCode:t.statusCode,...t.actionUrl&&{actionUrl:t.actionUrl},...t instanceof ie&&t.amount&&{amount:t.amount},...t instanceof oe&&t.missingScopes&&{missingScopes:t.missingScopes}}:t instanceof Error?e.error={message:t.message}:e.error={message:String(t)},console.log(JSON.stringify(e,null,2)),process.exit(1)}t instanceof Ce&&(console.error(`
72
+ ${E("NAMESPACE LOCKED")}: ${t.message}`),t.actionUrl&&console.error(`
73
73
  A human must unlock it at:
74
- ${f(t.actionUrl)}`),process.exit(1)),t instanceof se&&(console.error(`
75
- ${q("PAYMENT REQUIRED")}: ${t.message}`),t.amount&&console.error(` Amount: $${(t.amount/1e6).toFixed(6)}`),t.actionUrl&&console.error(`
74
+ ${p(t.actionUrl)}`),process.exit(1)),t instanceof ie&&(console.error(`
75
+ ${D("PAYMENT REQUIRED")}: ${t.message}`),t.amount&&console.error(` Amount: $${(t.amount/1e6).toFixed(6)}`),t.actionUrl&&console.error(`
76
76
  Complete payment at:
77
- ${f(t.actionUrl)}`),process.exit(1)),t instanceof oe&&(console.error(`
78
- ${v("PERMISSION DENIED")}: ${t.message}`),t.missingScopes?.length&&console.error(` Missing scopes: ${t.missingScopes.join(", ")}`),t.actionUrl&&console.error(`
77
+ ${p(t.actionUrl)}`),process.exit(1)),t instanceof oe&&(console.error(`
78
+ ${E("PERMISSION DENIED")}: ${t.message}`),t.missingScopes?.length&&console.error(` Missing scopes: ${t.missingScopes.join(", ")}`),t.actionUrl&&console.error(`
79
79
  Grant access at:
80
- ${f(t.actionUrl)}`),process.exit(1)),t instanceof Oe&&(console.error(`
81
- ${q("LINK REQUIRED")}: ${t.message}`),t.actionUrl&&console.error(`
80
+ ${p(t.actionUrl)}`),process.exit(1)),t instanceof Te&&(console.error(`
81
+ ${D("LINK REQUIRED")}: ${t.message}`),t.actionUrl&&console.error(`
82
82
  Link a human account at:
83
- ${f(t.actionUrl)}`),process.exit(1)),t instanceof A&&(console.error(`
84
- ${v(t.code)}: ${t.message}`),t.actionUrl&&console.error(`
85
- ${f(t.actionUrl)}`),process.exit(1)),t instanceof Error&&(console.error(`
86
- ${v("error")}: ${t.message}`),process.exit(1)),console.error(t),process.exit(1)}var ni=new Set(["header","H"]);function ii(t){let e=t.slice(2),r=[],n={},i="help",s="",o=0;e[0]&&!e[0].startsWith("-")&&(i=e[0],o=1,["keys","connections","conn"].includes(i)&&e[1]&&!e[1].startsWith("-")&&(s=e[1],o=2));function a(c,u){if(ni.has(c)&&typeof u=="string"){let l=n[c];Array.isArray(l)?l.push(u):typeof l=="string"?n[c]=[l,u]:n[c]=[u]}else n[c]=u}for(let c=o;c<e.length;c++){let u=e[c];if(u.startsWith("--")){let l=u.indexOf("=");l>-1?a(u.slice(2,l),u.slice(l+1)):c+1<e.length&&!e[c+1].startsWith("-")?(a(u.slice(2),e[c+1]),c++):a(u.slice(2),!0)}else u.startsWith("-")&&u.length===2?c+1<e.length&&!e[c+1].startsWith("-")?(a(u.slice(1),e[c+1]),c++):a(u.slice(1),!0):r.push(u)}return{command:i,subcommand:s,positional:r,flags:n}}function S(t){return new $t({serverUrl:typeof t.server=="string"?t.server:void 0,stateDir:typeof t["state-dir"]=="string"?t["state-dir"]:void 0})}function D(t){return new Date(t).toLocaleString()}function ze(t){let e=new Date(t).getTime()-Date.now();if(e<=0)return v("expired");let r=Math.floor(e/6e4),n=Math.floor(e%6e4/1e3);return r>0?`${r}m ${n}s`:`${n}s`}async function si(t,e){let r=S(t);if(r.isRegistered()){let a=r.whoami();m?E({alreadyRegistered:!0,namespace:a.namespace,keyId:a.keyId,serverUrl:a.serverUrl}):(console.log(`Already registered as ${g(a.namespace)}`),console.log(` Key ID: ${a.keyId}`),console.log(` Server: ${_(a.serverUrl)}`),console.log(`
87
- Use ${f("botparty reset")} to clear and re-register.`));return}let n=e[0]||(typeof t.namespace=="string"?t.namespace:void 0),i=typeof t.name=="string"?t.name:void 0,s=typeof t.ttl=="string"?parseInt(t.ttl,10):void 0;s&&(r.rotationTTL=s),m||console.log("Registering namespace...");let o=await r.register(n,i);m?E({namespace:o.namespace,keyId:o.keyId,role:o.role,rotationTTL:o.rotationTTL}):(console.log(`
88
- ${P("Registered!")} ${g(o.namespace)}`),console.log(` Key ID: ${o.keyId}`),console.log(` Role: ${o.role}`),console.log(` Rotation TTL: ${o.rotationTTL} min`),console.log(`
89
- Identity saved to ${_("~/.botparty/")}`))}async function oi(t){let r=S(t).whoami();r||w("Not registered. Run: botparty init"),m?E(r):(console.log(g("Identity")),console.log(` Namespace: ${f(r.namespace)}`),console.log(` Key ID: ${r.keyId}`),console.log(` Algorithm: ${r.algorithm}`),console.log(` Rotation TTL: ${r.rotationTTL} min`),console.log(` Last rotated: ${D(r.rotatedAt)}`),console.log(` Stale at: ${D(r.staleAt)} (${ze(r.staleAt)})`),r.label&&console.log(` Label: ${r.label}`),console.log(` Server: ${_(r.serverUrl)}`))}async function ai(t,e){let r=S(t),n=e[0]||r.getIdentity()?.namespace;n||w("Not registered and no namespace provided. Run: botparty init");let i=await r.info(n);m?E(i):(console.log(g("Namespace Info")),console.log(` Namespace: ${f(i.namespace)}`),console.log(` Status: ${i.status==="active"?P(i.status):v(i.status)}`),console.log(` Linked: ${i.linked?P("yes"):q("no")}`),console.log(` Active keys: ${i.activeKeys}`),console.log(` Created: ${D(i.createdAt)}`),i.lockedAt&&console.log(` Locked at: ${v(D(i.lockedAt))}`))}async function ci(t){let e=S(t);e.isRegistered()||w("Not registered. Run: botparty init");let{url:r}=await e.link();m?E({url:r}):(console.log(`Share this link with your human to claim ownership:
90
- `),console.log(` ${f(r)}`),console.log(`
91
- ${_("The link expires in 5 minutes.")}`))}async function li(t){let e=S(t);e.isRegistered()||w("Not registered.");let r=e.whoami();if(t.yes!==!0&&t.y!==!0){m&&w("--yes flag required to confirm destruction"),console.log(`${v("WARNING")}: This will permanently destroy namespace ${g(r.namespace)}.`),console.log(`All keys, links, and data will be deleted.
92
- `),console.log(`Re-run with ${f("--yes")} to confirm.`);return}await e.destroy(),m?E({namespace:r.namespace,destroyed:!0}):console.log(`${P("Destroyed")} namespace ${g(r.namespace)}`)}async function ui(t){S(t).reset(),m?E({reset:!0}):(console.log(`${P("Local state cleared.")} The namespace still exists on the server.`),console.log(`Run ${f("botparty init")} to register a new namespace.`))}async function di(t){let r=await S(t).generateToken();m?E({token:r}):console.log(r)}async function hi(t){let e=process.argv.slice(2),r=e.findIndex(i=>i==="curl"||i==="fetch"),n=r>=0?e.slice(r+1):e.slice(1);await zt(n,()=>S(t))}async function pi(t){let e=S(t),r=await e.keys.list();if(m){E({keys:r});return}if(r.length===0){console.log("No keys found.");return}let n=e.getIdentity();for(let i of r){let s=n&&i.id===n.keyId,o=[];i.isRoot&&o.push(f("root")),s&&o.push(P("current"));let a=new Date(i.staleAt).getTime();Date.now()>a?o.push(v("stale")):o.push(`stale in ${ze(i.staleAt)}`),console.log(`${g(i.id)} ${o.join(" | ")}`),console.log(` Fingerprint: ${_(i.fingerprint)}`),console.log(` Algorithm: ${i.algorithm}`),console.log(` Role: ${i.role}`),i.label&&console.log(` Label: ${i.label}`),console.log(` Scopes: ${i.scopes.join(", ")}`),console.log(` Rotation TTL: ${i.rotationTTL} min`),console.log(` Last rotated: ${D(i.rotatedAt)}`),i.expiresAt&&console.log(` Expires at: ${D(i.expiresAt)}`),i.lastUsedAt&&console.log(` Last used: ${D(i.lastUsedAt)} from ${i.lastUsedIp}`),console.log("")}}async function fi(t){let e=typeof t.label=="string"?t.label:void 0,r=typeof t.scopes=="string"?t.scopes.split(","):void 0,n=typeof t.ttl=="string"?parseInt(t.ttl,10):void 0,i=typeof t.expires=="string"?t.expires:void 0,s=typeof t["public-key"]=="string"?t["public-key"]:void 0;s||w("--public-key is required (PEM-encoded public key)"),r?.length||w("--scopes is required (comma-separated)"),n||w("--ttl is required (rotation TTL in minutes)");let a=await S(t).keys.add({publicKey:s,label:e,scopes:r,rotationTTL:n,expiresAt:i});m?E(a):(console.log(`${P("Key added")}`),console.log(` ID: ${g(a.id)}`),console.log(` Fingerprint: ${a.fingerprint}`),console.log(` Scopes: ${a.scopes.join(", ")}`),console.log(` Rotation TTL: ${a.rotationTTL} min`))}async function mi(t,e){let r=e[0]||void 0,n=S(t);m||console.log("Rotating key...");let i=await n.keys.rotate(r);m?E(i):(console.log(`
93
- ${P("Key rotated")}`),console.log(` ID: ${g(i.id)}`),console.log(` Fingerprint: ${i.fingerprint}`),console.log(` Stale at: ${D(i.staleAt)} (${ze(i.staleAt)})`))}async function gi(t,e){let r=e[0];r||w("Usage: botparty keys delete <keyId>");let n=S(t);if(t.yes!==!0&&t.y!==!0){m&&w("--yes flag required to confirm deletion"),console.log(`${q("WARNING")}: This will delete key ${g(r)} and all sub-keys.`),console.log(`Re-run with ${f("--yes")} to confirm.`);return}await n.keys.delete(r),m?E({keyId:r,deleted:!0}):console.log(`${P("Deleted")} key ${g(r)}`)}async function yi(t,e){let r=e[0];r||w("Usage: botparty keys invalidate <keyId>");let n=typeof t.reason=="string"?t.reason:void 0,i=S(t);if(t.yes!==!0&&t.y!==!0){m&&w("--yes flag required to confirm invalidation"),console.log(`${v("DANGER")}: This will invalidate key ${g(r)} and ${v("LOCK THE ENTIRE NAMESPACE")}.`),console.log(`All JWTs will be rejected until a human unlocks it.
94
- `),console.log(`Re-run with ${f("--yes")} to confirm.`);return}await i.keys.invalidate(r,n),m?E({keyId:r,invalidated:!0,namespaceLocked:!0}):(console.log(`${v("Key invalidated")} \u2014 namespace is now ${v("LOCKED")}.`),console.log("A human must unlock it at the BotParty web UI."))}function Xt(t){return((typeof t["proxy-url"]=="string"?t["proxy-url"]:void 0)||process.env.KEYCHAINS_PROXY_URL||process.env.BOTPARTY_PROXY_URL||"https://keychains.dev").replace(/\/$/,"")}async function Ye(t,e,r,n){let i=await e.generateToken(),s=new Headers(n?.headers);return s.set("Authorization",`Bearer ${i}`),fetch(`${r}${t}`,{...n,headers:s})}async function wi(t){let e=S(t),r=Xt(t),n=new URLSearchParams;typeof t.provider=="string"&&n.set("provider",t.provider),typeof t.status=="string"&&n.set("status",t.status);let i=n.toString(),s=await Ye(`/api/botparty/connections${i?`?${i}`:""}`,e,r);if(!s.ok){let c=await s.json().catch(()=>({error:s.statusText}));w(c.error||`HTTP ${s.status}`)}let a=(await s.json()).connections;if(m){E({connections:a});return}if(a.length===0){console.log(_("No connections found."));return}console.log(`
83
+ ${p(t.actionUrl)}`),process.exit(1)),t instanceof _&&(console.error(`
84
+ ${E(t.code)}: ${t.message}`),t.actionUrl&&console.error(`
85
+ ${p(t.actionUrl)}`),process.exit(1)),t instanceof Error&&(console.error(`
86
+ ${E("error")}: ${t.message}`),process.exit(1)),console.error(t),process.exit(1)}var rs=new Set(["header","H"]);function ss(t){let e=t.slice(2),n=[],r={},s="help",i="",o=0;e[0]&&!e[0].startsWith("-")&&(s=e[0],o=1,["keys","connections","conn","invites","dependents","deps"].includes(s)&&e[1]&&!e[1].startsWith("-")&&(i=e[1],o=2));function a(c,u){if(rs.has(c)&&typeof u=="string"){let l=r[c];Array.isArray(l)?l.push(u):typeof l=="string"?r[c]=[l,u]:r[c]=[u]}else r[c]=u}for(let c=o;c<e.length;c++){let u=e[c];if(u.startsWith("--")){let l=u.indexOf("=");l>-1?a(u.slice(2,l),u.slice(l+1)):c+1<e.length&&!e[c+1].startsWith("-")?(a(u.slice(2),e[c+1]),c++):a(u.slice(2),!0)}else u.startsWith("-")&&u.length===2?c+1<e.length&&!e[c+1].startsWith("-")?(a(u.slice(1),e[c+1]),c++):a(u.slice(1),!0):n.push(u)}return{command:s,subcommand:i,positional:n,flags:r}}function v(t){return new Ct({serverUrl:typeof t.server=="string"?t.server:void 0,stateDir:typeof t["state-dir"]=="string"?t["state-dir"]:void 0,inviteToken:typeof t["invite-token"]=="string"?t["invite-token"]:void 0})}function R(t){return new Date(t).toLocaleString()}function ze(t){let e=new Date(t).getTime()-Date.now();if(e<=0)return E("expired");let n=Math.floor(e/6e4),r=Math.floor(e%6e4/1e3);return n>0?`${n}m ${r}s`:`${r}s`}async function is(t,e){let n=v(t);if(n.isRegistered()){let c=n.whoami();y?b({alreadyRegistered:!0,namespace:c.namespace,keyId:c.keyId,serverUrl:c.serverUrl}):(console.log(`Already registered as ${g(c.namespace)}`),console.log(` Key ID: ${c.keyId}`),console.log(` Server: ${k(c.serverUrl)}`),console.log(`
87
+ Use ${p("botparty reset")} to clear and re-register.`));return}let r=e[0]||(typeof t.namespace=="string"?t.namespace:void 0),s=typeof t.name=="string"?t.name:void 0,i=typeof t.ttl=="string"?parseInt(t.ttl,10):void 0,o=typeof t["invite-token"]=="string"?t["invite-token"]:void 0;i&&(n.rotationTTL=i),y||console.log("Registering namespace...");let a=await n.register(r,s,{inviteToken:o});y?b({namespace:a.namespace,keyId:a.keyId,role:a.role,rotationTTL:a.rotationTTL,...a.parentNamespace&&{parentNamespace:a.parentNamespace},...a.inheritedScopes&&{inheritedScopes:a.inheritedScopes}}):(console.log(`
88
+ ${S("Registered!")} ${g(a.namespace)}`),console.log(` Key ID: ${a.keyId}`),console.log(` Role: ${a.role}`),console.log(` Rotation TTL: ${a.rotationTTL} min`),a.parentNamespace&&console.log(` Parent: ${p(a.parentNamespace)}`),a.inheritedScopes&&console.log(` Inherited: ${a.inheritedScopes.join(", ")}`),console.log(`
89
+ Identity saved to ${k("~/.botparty/")}`))}async function os(t){let n=v(t).whoami();n||f("Not registered. Run: botparty init"),y?b(n):(console.log(g("Identity")),console.log(` Namespace: ${p(n.namespace)}`),console.log(` Key ID: ${n.keyId}`),console.log(` Algorithm: ${n.algorithm}`),console.log(` Rotation TTL: ${n.rotationTTL} min`),console.log(` Last rotated: ${R(n.rotatedAt)}`),console.log(` Stale at: ${R(n.staleAt)} (${ze(n.staleAt)})`),n.label&&console.log(` Label: ${n.label}`),console.log(` Server: ${k(n.serverUrl)}`))}async function as(t,e){let n=v(t),r=e[0]||n.getIdentity()?.namespace;r||f("Not registered and no namespace provided. Run: botparty init");let s=await n.info(r);y?b(s):(console.log(g("Namespace Info")),console.log(` Namespace: ${p(s.namespace)}`),console.log(` Status: ${s.status==="active"?S(s.status):E(s.status)}`),console.log(` Linked: ${s.linked?S("yes"):D("no")}`),console.log(` Active keys: ${s.activeKeys}`),console.log(` Created: ${R(s.createdAt)}`),s.lockedAt&&console.log(` Locked at: ${E(R(s.lockedAt))}`))}async function cs(t){let e=v(t);e.isRegistered()||f("Not registered. Run: botparty init");let{url:n}=await e.link();y?b({url:n}):(console.log(`Share this link with your human to claim ownership:
90
+ `),console.log(` ${p(n)}`),console.log(`
91
+ ${k("The link expires in 5 minutes.")}`))}async function ls(t){let e=v(t);e.isRegistered()||f("Not registered.");let n=e.whoami();if(t.yes!==!0&&t.y!==!0){y&&f("--yes flag required to confirm destruction"),console.log(`${E("WARNING")}: This will permanently destroy namespace ${g(n.namespace)}.`),console.log(`All keys, links, and data will be deleted.
92
+ `),console.log(`Re-run with ${p("--yes")} to confirm.`);return}await e.destroy(),y?b({namespace:n.namespace,destroyed:!0}):console.log(`${S("Destroyed")} namespace ${g(n.namespace)}`)}async function us(t){v(t).reset(),y?b({reset:!0}):(console.log(`${S("Local state cleared.")} The namespace still exists on the server.`),console.log(`Run ${p("botparty init")} to register a new namespace.`))}async function ds(t){let n=await v(t).generateToken();y?b({token:n}):console.log(n)}async function hs(t){let e=process.argv.slice(2),n=e.findIndex(s=>s==="curl"||s==="fetch"),r=n>=0?e.slice(n+1):e.slice(1);await zt(r,()=>v(t))}async function ps(t){let e=v(t),n=await e.keys.list();if(y){b({keys:n});return}if(n.length===0){console.log("No keys found.");return}let r=e.getIdentity();for(let s of n){let i=r&&s.id===r.keyId,o=[];s.isRoot&&o.push(p("root")),i&&o.push(S("current"));let a=new Date(s.staleAt).getTime();Date.now()>a?o.push(E("stale")):o.push(`stale in ${ze(s.staleAt)}`),console.log(`${g(s.id)} ${o.join(" | ")}`),console.log(` Fingerprint: ${k(s.fingerprint)}`),console.log(` Algorithm: ${s.algorithm}`),console.log(` Role: ${s.role}`),s.label&&console.log(` Label: ${s.label}`),console.log(` Scopes: ${s.scopes.join(", ")}`),console.log(` Rotation TTL: ${s.rotationTTL} min`),console.log(` Last rotated: ${R(s.rotatedAt)}`),s.expiresAt&&console.log(` Expires at: ${R(s.expiresAt)}`),s.lastUsedAt&&console.log(` Last used: ${R(s.lastUsedAt)} from ${s.lastUsedIp}`),console.log("")}}async function fs(t){let e=typeof t.label=="string"?t.label:void 0,n=typeof t.scopes=="string"?t.scopes.split(","):void 0,r=typeof t.ttl=="string"?parseInt(t.ttl,10):void 0,s=typeof t.expires=="string"?t.expires:void 0,i=typeof t["public-key"]=="string"?t["public-key"]:void 0;i||f("--public-key is required (PEM-encoded public key)"),n?.length||f("--scopes is required (comma-separated)"),r||f("--ttl is required (rotation TTL in minutes)");let a=await v(t).keys.add({publicKey:i,label:e,scopes:n,rotationTTL:r,expiresAt:s});y?b(a):(console.log(`${S("Key added")}`),console.log(` ID: ${g(a.id)}`),console.log(` Fingerprint: ${a.fingerprint}`),console.log(` Scopes: ${a.scopes.join(", ")}`),console.log(` Rotation TTL: ${a.rotationTTL} min`))}async function ms(t,e){let n=e[0]||void 0,r=v(t);y||console.log("Rotating key...");let s=await r.keys.rotate(n);y?b(s):(console.log(`
93
+ ${S("Key rotated")}`),console.log(` ID: ${g(s.id)}`),console.log(` Fingerprint: ${s.fingerprint}`),console.log(` Stale at: ${R(s.staleAt)} (${ze(s.staleAt)})`))}async function gs(t,e){let n=e[0];n||f("Usage: botparty keys delete <keyId>");let r=v(t);if(t.yes!==!0&&t.y!==!0){y&&f("--yes flag required to confirm deletion"),console.log(`${D("WARNING")}: This will delete key ${g(n)} and all sub-keys.`),console.log(`Re-run with ${p("--yes")} to confirm.`);return}await r.keys.delete(n),y?b({keyId:n,deleted:!0}):console.log(`${S("Deleted")} key ${g(n)}`)}async function ys(t,e){let n=e[0];n||f("Usage: botparty keys invalidate <keyId>");let r=typeof t.reason=="string"?t.reason:void 0,s=v(t);if(t.yes!==!0&&t.y!==!0){y&&f("--yes flag required to confirm invalidation"),console.log(`${E("DANGER")}: This will invalidate key ${g(n)} and ${E("LOCK THE ENTIRE NAMESPACE")}.`),console.log(`All JWTs will be rejected until a human unlocks it.
94
+ `),console.log(`Re-run with ${p("--yes")} to confirm.`);return}await s.keys.invalidate(n,r),y?b({keyId:n,invalidated:!0,namespaceLocked:!0}):(console.log(`${E("Key invalidated")} \u2014 namespace is now ${E("LOCKED")}.`),console.log("A human must unlock it at the BotParty web UI."))}async function ws(t){let e=v(t);e.isRegistered()||f("Not registered. Run: botparty init");let n=await e.generateToken(),r=typeof t.scopes=="string"?t.scopes.split(","):void 0,s=typeof t.expires=="string"?t.expires:void 0,i=await fetch(`${e.serverUrl}/api/v1/namespaces/invites`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${n}`},body:JSON.stringify({scopes:r,expiresIn:s})});if(!i.ok){let a=await i.json().catch(()=>({error:i.statusText}));f(a.error||`HTTP ${i.status}`)}let o=await i.json();y?b(o):(console.log(`${S("Invite created")}`),console.log(` Token ID: ${g(o.tokenId)}`),console.log(` Token: ${o.inviteToken}`),console.log(`
95
+ Share the token or set ${p("BOTPARTY_INVITE_TOKEN")} env var.`))}async function bs(t){let e=v(t);e.isRegistered()||f("Not registered. Run: botparty init");let n=await e.generateToken(),r=typeof t.status=="string"?`?status=${t.status}`:"",s=await fetch(`${e.serverUrl}/api/v1/namespaces/invites${r}`,{headers:{Authorization:`Bearer ${n}`}});if(!s.ok){let o=await s.json().catch(()=>({error:s.statusText}));f(o.error||`HTTP ${s.status}`)}let{invites:i}=await s.json();if(y){b({invites:i});return}if(i.length===0){console.log(k("No invites found."));return}console.log(`
96
+ ${g("Invites")} (${i.length})
97
+ `);for(let o of i){let a=o.status==="active"?S(o.status):o.status==="pending"?D(o.status):E(o.status);console.log(` ${g(o.tokenId)} ${a}`),console.log(` Scopes: ${o.scopes.join(", ")}`),o.childNamespace&&console.log(` Child: ${p(o.childNamespace)}`),console.log(` Created: ${R(o.createdAt)}`),console.log("")}}async function Es(t){let e=v(t);e.isRegistered()||f("Not registered. Run: botparty init");let n=await e.generateToken(),r=await fetch(`${e.serverUrl}/api/v1/namespaces/dependents`,{headers:{Authorization:`Bearer ${n}`}});if(!r.ok){let i=await r.json().catch(()=>({error:r.statusText}));f(i.error||`HTTP ${r.status}`)}let{dependents:s}=await r.json();if(y){b({dependents:s});return}if(s.length===0){console.log(k("No dependents found."));return}console.log(`
98
+ ${g("Dependents")} (${s.length})
99
+ `);for(let i of s){let o=i.status==="active"?S(i.status):i.status==="pending"?D(i.status):E(i.status);console.log(` ${g(i.tokenId)} ${o}`),i.childNamespace&&console.log(` Namespace: ${p(i.childNamespace)}`),console.log(` Scopes: ${i.scopes.join(", ")}`),console.log(` Created: ${R(i.createdAt)}`),i.revokedAt&&console.log(` Revoked: ${E(R(i.revokedAt))}`),console.log("")}}async function vs(t,e){let n=e[0];n||f("Usage: botparty dependents revoke <tokenId>");let r=v(t);if(r.isRegistered()||f("Not registered. Run: botparty init"),t.yes!==!0&&t.y!==!0){y&&f("--yes flag required to confirm revocation"),console.log(`${D("WARNING")}: This will revoke access for the child namespace linked to token ${g(n)}.`),console.log(`The child namespace will be ${E("LOCKED")}.`),console.log(`
100
+ Re-run with ${p("--yes")} to confirm.`);return}let s=await r.generateToken(),i=await fetch(`${r.serverUrl}/api/v1/namespaces/dependents?tokenId=${encodeURIComponent(n)}`,{method:"DELETE",headers:{Authorization:`Bearer ${s}`}});if(!i.ok){let a=await i.json().catch(()=>({error:i.statusText}));f(a.error||`HTTP ${i.status}`)}let o=await i.json();y?b({revoked:!0,tokenId:n,childNamespace:o.childNamespace}):(console.log(`${S("Revoked")} token ${g(n)}`),o.childNamespace&&console.log(` Child namespace ${g(o.childNamespace)} is now ${E("LOCKED")}.`))}function Xt(t){return((typeof t["proxy-url"]=="string"?t["proxy-url"]:void 0)||process.env.KEYCHAINS_PROXY_URL||process.env.BOTPARTY_PROXY_URL||"https://keychains.dev").replace(/\/$/,"")}async function Ye(t,e,n,r){let s=await e.generateToken(),i=new Headers(r?.headers);return i.set("Authorization",`Bearer ${s}`),fetch(`${n}${t}`,{...r,headers:i})}async function As(t){let e=v(t),n=Xt(t),r=new URLSearchParams;typeof t.provider=="string"&&r.set("provider",t.provider),typeof t.status=="string"&&r.set("status",t.status);let s=r.toString(),i=await Ye(`/api/botparty/connections${s?`?${s}`:""}`,e,n);if(!i.ok){let c=await i.json().catch(()=>({error:i.statusText}));f(c.error||`HTTP ${i.status}`)}let a=(await i.json()).connections;if(y){b({connections:a});return}if(a.length===0){console.log(k("No connections found."));return}console.log(`
95
101
  ${g("Connections")} (${a.length})
96
- `);for(let c of a){let u=c.status==="active"?P("active"):q(c.status),l=c.type==="api_key"?_("[api_key]"):_("[oauth]"),d=c.accountLabel&&c.accountLabel!=="default"?_(` (${c.accountLabel})`):"",h=c.accountIdentifier?_(` \u2014 ${c.accountIdentifier}`):"";console.log(` ${g(c.displayName||c.provider)} ${l} ${u}${d}${h}`),console.log(` ${_("id:")} ${c.id}`),c.keyNames?.length&&console.log(` ${_("keys:")} ${c.keyNames.join(", ")}`),c.scopes?.length&&console.log(` ${_("scopes:")} ${c.scopes.join(", ")}`)}console.log("")}function bi(t,e){let r=e.toLowerCase();if(t.id===e||t.provider.toLowerCase()===r||t.displayName?.toLowerCase()===r||t.domain?.toLowerCase()===r)return!0;let n=t.domain?.toLowerCase().replace(/\.(com|io|dev|org|net|ai|club)$/,"");return!!(n&&n===r)}async function Ei(t,e){let r=e[0];r||w("Usage: botparty connections delete <name|provider|id> [--yes]");let n=S(t),i=Xt(t),s=await Ye("/api/botparty/connections",n,i);if(!s.ok){let l=await s.json().catch(()=>({error:s.statusText}));w(l.error||`HTTP ${s.status}`)}let{connections:o}=await s.json(),a=o.filter(l=>bi(l,r));if(a.length===0&&w(`No connection found matching "${r}". Run: botparty connections list`),a.length>1){console.error(`${q("Multiple connections match")} "${r}":
97
- `);for(let l of a){let d=l.accountLabel&&l.accountLabel!=="default"?_(` (${l.accountLabel})`):"";console.error(` ${g(l.displayName||l.provider)}${d} ${_(l.id)}`)}console.error(`
98
- Specify the exact connection ID to delete.`),process.exit(1)}let c=a[0];t.yes!==!0&&t.y!==!0&&w(`This will permanently delete ${g(c.displayName||c.provider)} (${c.id}). Pass --yes to confirm.`);let u=await Ye(`/api/botparty/connections?id=${encodeURIComponent(c.id)}`,n,i,{method:"DELETE"});if(!u.ok){let l=await u.json().catch(()=>({error:u.statusText}));w(l.error||`HTTP ${u.status}`)}m?E({deleted:!0,connectionId:c.id,provider:c.provider}):console.log(`${P("Deleted")} ${g(c.displayName||c.provider)} (${c.id})`)}function Ai(){console.log(`
102
+ `);for(let c of a){let u=c.status==="active"?S("active"):D(c.status),l=c.type==="api_key"?k("[api_key]"):k("[oauth]"),d=c.accountLabel&&c.accountLabel!=="default"?k(` (${c.accountLabel})`):"",h=c.accountIdentifier?k(` \u2014 ${c.accountIdentifier}`):"";console.log(` ${g(c.displayName||c.provider)} ${l} ${u}${d}${h}`),console.log(` ${k("id:")} ${c.id}`),c.keyNames?.length&&console.log(` ${k("keys:")} ${c.keyNames.join(", ")}`),c.scopes?.length&&console.log(` ${k("scopes:")} ${c.scopes.join(", ")}`)}console.log("")}function ks(t,e){let n=e.toLowerCase();if(t.id===e||t.provider.toLowerCase()===n||t.displayName?.toLowerCase()===n||t.domain?.toLowerCase()===n)return!0;let r=t.domain?.toLowerCase().replace(/\.(com|io|dev|org|net|ai|club)$/,"");return!!(r&&r===n)}async function _s(t,e){let n=e[0];n||f("Usage: botparty connections delete <name|provider|id> [--yes]");let r=v(t),s=Xt(t),i=await Ye("/api/botparty/connections",r,s);if(!i.ok){let l=await i.json().catch(()=>({error:i.statusText}));f(l.error||`HTTP ${i.status}`)}let{connections:o}=await i.json(),a=o.filter(l=>ks(l,n));if(a.length===0&&f(`No connection found matching "${n}". Run: botparty connections list`),a.length>1){console.error(`${D("Multiple connections match")} "${n}":
103
+ `);for(let l of a){let d=l.accountLabel&&l.accountLabel!=="default"?k(` (${l.accountLabel})`):"";console.error(` ${g(l.displayName||l.provider)}${d} ${k(l.id)}`)}console.error(`
104
+ Specify the exact connection ID to delete.`),process.exit(1)}let c=a[0];t.yes!==!0&&t.y!==!0&&f(`This will permanently delete ${g(c.displayName||c.provider)} (${c.id}). Pass --yes to confirm.`);let u=await Ye(`/api/botparty/connections?id=${encodeURIComponent(c.id)}`,r,s,{method:"DELETE"});if(!u.ok){let l=await u.json().catch(()=>({error:u.statusText}));f(l.error||`HTTP ${u.status}`)}y?b({deleted:!0,connectionId:c.id,provider:c.provider}):console.log(`${S("Deleted")} ${g(c.displayName||c.provider)} (${c.id})`)}function Ss(){console.log(`
99
105
  ${g("botparty")} \u2014 federated bot identity, authentication, and payments
100
106
 
101
107
  ${g("USAGE")}
102
108
  botparty <command> [options]
103
109
 
104
110
  ${g("COMMANDS")}
105
- ${f("init")} [namespace] Register a new namespace
111
+ ${p("init")} [namespace] Register a new namespace
106
112
  --name <name> Human-readable label
107
113
  --ttl <minutes> Key rotation TTL (default: 15)
114
+ --invite-token <token> Register as child of an invite's parent
108
115
 
109
- ${f("whoami")} Show current identity
110
- ${f("info")} [namespace] Show namespace info from server
111
- ${f("link")} Generate a link URL for a human
112
- ${f("token")} Generate a JWT token (stdout)
113
- ${f("reset")} Clear local state
116
+ ${p("whoami")} Show current identity
117
+ ${p("info")} [namespace] Show namespace info from server
118
+ ${p("link")} Generate a link URL for a human
119
+ ${p("token")} Generate a JWT token (stdout)
120
+ ${p("reset")} Clear local state
114
121
 
115
- ${f("curl")} <url> Authenticated fetch
122
+ ${p("curl")} <url> Authenticated fetch
116
123
  -X, --method <METHOD> HTTP method (default: GET)
117
124
  -d, --data <body> Request body
118
125
  -H, --header <header> Additional header
119
126
 
120
- ${f("keys list")} List all keys
121
- ${f("keys add")} Add a delegated key
127
+ ${p("invites create")} Create an invite token for child namespaces
128
+ --scopes <s1,s2> Comma-separated scopes (default: all)
129
+ --expires <duration> Expiry (e.g. 24h, 7d; default: 24h)
130
+ ${p("invites list")} List invites
131
+ --status <status> Filter by status (pending/active/revoked)
132
+
133
+ ${p("dependents list")} List child namespaces
134
+ ${p("dependents revoke")} <tokenId> Revoke a child's access (--yes)
135
+
136
+ ${p("keys list")} List all keys
137
+ ${p("keys add")} Add a delegated key
122
138
  --public-key <pem> PEM-encoded public key
123
139
  --scopes <s1,s2> Comma-separated scopes
124
140
  --ttl <minutes> Rotation TTL
125
141
  --label <label> Human-readable label
126
142
  --expires <iso> Hard expiry timestamp
127
143
 
128
- ${f("keys rotate")} [keyId] Rotate a key (default: current)
129
- ${f("keys delete")} <keyId> Delete a key (--yes to confirm)
130
- ${f("keys invalidate")} <keyId> Panic button \u2014 locks namespace
144
+ ${p("keys rotate")} [keyId] Rotate a key (default: current)
145
+ ${p("keys delete")} <keyId> Delete a key (--yes to confirm)
146
+ ${p("keys invalidate")} <keyId> Panic button \u2014 locks namespace
131
147
  --reason <text> Reason for invalidation
132
148
 
133
- ${f("connections list")} List credential connections
149
+ ${p("connections list")} List credential connections
134
150
  --provider <domain> Filter by provider
135
151
  --status <status> Filter by status
136
- ${f("connections delete")} <name> Delete a connection by name, provider, or ID (--yes)
152
+ ${p("connections delete")} <name> Delete a connection by name, provider, or ID (--yes)
137
153
 
138
- ${f("destroy")} Destroy namespace (--yes to confirm)
154
+ ${p("destroy")} Destroy namespace (--yes to confirm)
139
155
 
140
156
  ${g("GLOBAL OPTIONS")}
141
157
  --server <url> BotParty server URL
@@ -145,6 +161,7 @@ ${g("GLOBAL OPTIONS")}
145
161
  ${g("ENVIRONMENT")}
146
162
  BOTPARTY_SERVER_URL Server URL override
147
163
  BOTPARTY_STATE_DIR State directory override
164
+ BOTPARTY_INVITE_TOKEN Invite token for auto-registration as child namespace
148
165
 
149
166
  ${g("EXAMPLES")}
150
167
  botparty init # Auto-generate namespace
@@ -156,4 +173,4 @@ ${g("EXAMPLES")}
156
173
  botparty connections list # Show credential connections
157
174
  botparty connections delete <id> --yes # Remove a connection
158
175
  botparty link # Get link URL for human
159
- `)}async function _i(){let{command:t,subcommand:e,positional:r,flags:n}=ii(process.argv);if(n.json===!0&&(m=!0),n.version===!0||n.v===!0&&t!=="curl"&&t!=="fetch"||t==="version"){m?E({version:"0.0.1"}):console.log("botparty 0.0.1");return}if((n.help===!0||n.h===!0||t==="help")&&t!=="curl"&&t!=="fetch"){Ai();return}try{switch(t){case"init":case"join":await si(n,r);break;case"whoami":await oi(n);break;case"info":await ai(n,r);break;case"link":await ci(n);break;case"destroy":await li(n);break;case"reset":await ui(n);break;case"token":await di(n);break;case"curl":case"fetch":await hi(n);break;case"keys":switch(e){case"list":case"ls":await pi(n);break;case"add":await fi(n);break;case"rotate":await mi(n,r);break;case"delete":case"rm":await gi(n,r);break;case"invalidate":case"panic":await yi(n,r);break;default:w(`Unknown keys subcommand: ${e||"(none)"}. Run: botparty keys list`)}break;case"connections":case"conn":switch(e){case"list":case"ls":case"":await wi(n);break;case"delete":case"rm":await Ei(n,r);break;default:w(`Unknown connections subcommand: ${e}. Run: botparty connections list`)}break;default:w(`Unknown command: ${t}. Run: botparty --help`)}}catch(i){ri(i)}}_i();
176
+ `)}async function $s(){let{command:t,subcommand:e,positional:n,flags:r}=ss(process.argv);if(r.json===!0&&(y=!0),r.version===!0||r.v===!0&&t!=="curl"&&t!=="fetch"||t==="version"){y?b({version:"0.0.1"}):console.log("botparty 0.0.1");return}if((r.help===!0||r.h===!0||t==="help")&&t!=="curl"&&t!=="fetch"){Ss();return}try{switch(t){case"init":case"join":await is(r,n);break;case"whoami":await os(r);break;case"info":await as(r,n);break;case"link":await cs(r);break;case"destroy":await ls(r);break;case"reset":await us(r);break;case"token":await ds(r);break;case"curl":case"fetch":await hs(r);break;case"keys":switch(e){case"list":case"ls":await ps(r);break;case"add":await fs(r);break;case"rotate":await ms(r,n);break;case"delete":case"rm":await gs(r,n);break;case"invalidate":case"panic":await ys(r,n);break;default:f(`Unknown keys subcommand: ${e||"(none)"}. Run: botparty keys list`)}break;case"invites":switch(e){case"create":await ws(r);break;case"list":case"ls":case"":await bs(r);break;default:f(`Unknown invites subcommand: ${e}. Try: botparty invites list`)}break;case"dependents":case"deps":switch(e){case"list":case"ls":case"":await Es(r);break;case"revoke":await vs(r,n);break;default:f(`Unknown dependents subcommand: ${e}. Try: botparty dependents list`)}break;case"connections":case"conn":switch(e){case"list":case"ls":case"":await As(r);break;case"delete":case"rm":await _s(r,n);break;default:f(`Unknown connections subcommand: ${e}. Run: botparty connections list`)}break;default:f(`Unknown command: ${t}. Run: botparty --help`)}}catch(s){ns(s)}}$s();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "botparty",
3
- "version": "0.0.28",
3
+ "version": "0.0.30",
4
4
  "description": "CLI for BotParty — federated bot identity, authentication, and payments",
5
5
  "type": "module",
6
6
  "bin": {