@unliftedq/kman 0.0.4 → 0.0.5

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/main.js +72 -72
  2. package/package.json +1 -1
package/dist/main.js CHANGED
@@ -1,45 +1,45 @@
1
1
  #!/usr/bin/env node
2
- import{createRequire as _3}from"node:module";var D3=Object.create;var{getPrototypeOf:w3,defineProperty:uq,getOwnPropertyNames:x3}=Object;var H3=Object.prototype.hasOwnProperty;function j3($){return this[$]}var O3,T3,h0=($,q,J)=>{var X=$!=null&&typeof $==="object";if(X){var Z=q?O3??=new WeakMap:T3??=new WeakMap,z=Z.get($);if(z)return z}J=$!=null?D3(w3($)):{};let Q=q||!$||!$.__esModule?uq(J,"default",{value:$,enumerable:!0}):J;for(let Y of x3($))if(!H3.call(Q,Y))uq(Q,Y,{get:j3.bind($,Y),enumerable:!0});if(X)Z.set($,Q);return Q};var I=($,q)=>()=>(q||$((q={exports:{}}).exports,q),q.exports);var V$=_3(import.meta.url);var x$=I((f3)=>{class C0 extends Error{constructor($,q,J){super(J);Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name,this.code=q,this.exitCode=$,this.nestedError=void 0}}class gq extends C0{constructor($){super(1,"commander.invalidArgument",$);Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name}}f3.CommanderError=C0;f3.InvalidArgumentError=gq});var s$=I((E3)=>{var{InvalidArgumentError:k3}=x$();class cq{constructor($,q){switch(this.description=q||"",this.variadic=!1,this.parseArg=void 0,this.defaultValue=void 0,this.defaultValueDescription=void 0,this.argChoices=void 0,$[0]){case"<":this.required=!0,this._name=$.slice(1,-1);break;case"[":this.required=!1,this._name=$.slice(1,-1);break;default:this.required=!0,this._name=$;break}if(this._name.endsWith("..."))this.variadic=!0,this._name=this._name.slice(0,-3)}name(){return this._name}_collectValue($,q){if(q===this.defaultValue||!Array.isArray(q))return[$];return q.push($),q}default($,q){return this.defaultValue=$,this.defaultValueDescription=q,this}argParser($){return this.parseArg=$,this}choices($){return this.argChoices=$.slice(),this.parseArg=(q,J)=>{if(!this.argChoices.includes(q))throw new k3(`Allowed choices are ${this.argChoices.join(", ")}.`);if(this.variadic)return this._collectValue(q,J);return q},this}argRequired(){return this.required=!0,this}argOptional(){return this.required=!1,this}}function A3($){let q=$.name()+($.variadic===!0?"...":"");return $.required?"<"+q+">":"["+q+"]"}E3.Argument=cq;E3.humanReadableArgName=A3});var v0=I((v3)=>{var{humanReadableArgName:C3}=s$();class mq{constructor(){this.helpWidth=void 0,this.minWidthToWrap=40,this.sortSubcommands=!1,this.sortOptions=!1,this.showGlobalOptions=!1}prepareContext($){this.helpWidth=this.helpWidth??$.helpWidth??80}visibleCommands($){let q=$.commands.filter((X)=>!X._hidden),J=$._getHelpCommand();if(J&&!J._hidden)q.push(J);if(this.sortSubcommands)q.sort((X,Z)=>{return X.name().localeCompare(Z.name())});return q}compareOptions($,q){let J=(X)=>{return X.short?X.short.replace(/^-/,""):X.long.replace(/^--/,"")};return J($).localeCompare(J(q))}visibleOptions($){let q=$.options.filter((X)=>!X.hidden),J=$._getHelpOption();if(J&&!J.hidden){let X=J.short&&$._findOption(J.short),Z=J.long&&$._findOption(J.long);if(!X&&!Z)q.push(J);else if(J.long&&!Z)q.push($.createOption(J.long,J.description));else if(J.short&&!X)q.push($.createOption(J.short,J.description))}if(this.sortOptions)q.sort(this.compareOptions);return q}visibleGlobalOptions($){if(!this.showGlobalOptions)return[];let q=[];for(let J=$.parent;J;J=J.parent){let X=J.options.filter((Z)=>!Z.hidden);q.push(...X)}if(this.sortOptions)q.sort(this.compareOptions);return q}visibleArguments($){if($._argsDescription)$.registeredArguments.forEach((q)=>{q.description=q.description||$._argsDescription[q.name()]||""});if($.registeredArguments.find((q)=>q.description))return $.registeredArguments;return[]}subcommandTerm($){let q=$.registeredArguments.map((J)=>C3(J)).join(" ");return $._name+($._aliases[0]?"|"+$._aliases[0]:"")+($.options.length?" [options]":"")+(q?" "+q:"")}optionTerm($){return $.flags}argumentTerm($){return $.name()}longestSubcommandTermLength($,q){return q.visibleCommands($).reduce((J,X)=>{return Math.max(J,this.displayWidth(q.styleSubcommandTerm(q.subcommandTerm(X))))},0)}longestOptionTermLength($,q){return q.visibleOptions($).reduce((J,X)=>{return Math.max(J,this.displayWidth(q.styleOptionTerm(q.optionTerm(X))))},0)}longestGlobalOptionTermLength($,q){return q.visibleGlobalOptions($).reduce((J,X)=>{return Math.max(J,this.displayWidth(q.styleOptionTerm(q.optionTerm(X))))},0)}longestArgumentTermLength($,q){return q.visibleArguments($).reduce((J,X)=>{return Math.max(J,this.displayWidth(q.styleArgumentTerm(q.argumentTerm(X))))},0)}commandUsage($){let q=$._name;if($._aliases[0])q=q+"|"+$._aliases[0];let J="";for(let X=$.parent;X;X=X.parent)J=X.name()+" "+J;return J+q+" "+$.usage()}commandDescription($){return $.description()}subcommandDescription($){return $.summary()||$.description()}optionDescription($){let q=[];if($.argChoices)q.push(`choices: ${$.argChoices.map((J)=>JSON.stringify(J)).join(", ")}`);if($.defaultValue!==void 0){if($.required||$.optional||$.isBoolean()&&typeof $.defaultValue==="boolean")q.push(`default: ${$.defaultValueDescription||JSON.stringify($.defaultValue)}`)}if($.presetArg!==void 0&&$.optional)q.push(`preset: ${JSON.stringify($.presetArg)}`);if($.envVar!==void 0)q.push(`env: ${$.envVar}`);if(q.length>0){let J=`(${q.join(", ")})`;if($.description)return`${$.description} ${J}`;return J}return $.description}argumentDescription($){let q=[];if($.argChoices)q.push(`choices: ${$.argChoices.map((J)=>JSON.stringify(J)).join(", ")}`);if($.defaultValue!==void 0)q.push(`default: ${$.defaultValueDescription||JSON.stringify($.defaultValue)}`);if(q.length>0){let J=`(${q.join(", ")})`;if($.description)return`${$.description} ${J}`;return J}return $.description}formatItemList($,q,J){if(q.length===0)return[];return[J.styleTitle($),...q,""]}groupItems($,q,J){let X=new Map;return $.forEach((Z)=>{let z=J(Z);if(!X.has(z))X.set(z,[])}),q.forEach((Z)=>{let z=J(Z);if(!X.has(z))X.set(z,[]);X.get(z).push(Z)}),X}formatHelp($,q){let J=q.padWidth($,q),X=q.helpWidth??80;function Z(G,V){return q.formatItem(G,J,V,q)}let z=[`${q.styleTitle("Usage:")} ${q.styleUsage(q.commandUsage($))}`,""],Q=q.commandDescription($);if(Q.length>0)z=z.concat([q.boxWrap(q.styleCommandDescription(Q),X),""]);let Y=q.visibleArguments($).map((G)=>{return Z(q.styleArgumentTerm(q.argumentTerm(G)),q.styleArgumentDescription(q.argumentDescription(G)))});if(z=z.concat(this.formatItemList("Arguments:",Y,q)),this.groupItems($.options,q.visibleOptions($),(G)=>G.helpGroupHeading??"Options:").forEach((G,V)=>{let K=G.map((L)=>{return Z(q.styleOptionTerm(q.optionTerm(L)),q.styleOptionDescription(q.optionDescription(L)))});z=z.concat(this.formatItemList(V,K,q))}),q.showGlobalOptions){let G=q.visibleGlobalOptions($).map((V)=>{return Z(q.styleOptionTerm(q.optionTerm(V)),q.styleOptionDescription(q.optionDescription(V)))});z=z.concat(this.formatItemList("Global Options:",G,q))}return this.groupItems($.commands,q.visibleCommands($),(G)=>G.helpGroup()||"Commands:").forEach((G,V)=>{let K=G.map((L)=>{return Z(q.styleSubcommandTerm(q.subcommandTerm(L)),q.styleSubcommandDescription(q.subcommandDescription(L)))});z=z.concat(this.formatItemList(V,K,q))}),z.join(`
3
- `)}displayWidth($){return dq($).length}styleTitle($){return $}styleUsage($){return $.split(" ").map((q)=>{if(q==="[options]")return this.styleOptionText(q);if(q==="[command]")return this.styleSubcommandText(q);if(q[0]==="["||q[0]==="<")return this.styleArgumentText(q);return this.styleCommandText(q)}).join(" ")}styleCommandDescription($){return this.styleDescriptionText($)}styleOptionDescription($){return this.styleDescriptionText($)}styleSubcommandDescription($){return this.styleDescriptionText($)}styleArgumentDescription($){return this.styleDescriptionText($)}styleDescriptionText($){return $}styleOptionTerm($){return this.styleOptionText($)}styleSubcommandTerm($){return $.split(" ").map((q)=>{if(q==="[options]")return this.styleOptionText(q);if(q[0]==="["||q[0]==="<")return this.styleArgumentText(q);return this.styleSubcommandText(q)}).join(" ")}styleArgumentTerm($){return this.styleArgumentText($)}styleOptionText($){return $}styleArgumentText($){return $}styleSubcommandText($){return $}styleCommandText($){return $}padWidth($,q){return Math.max(q.longestOptionTermLength($,q),q.longestGlobalOptionTermLength($,q),q.longestSubcommandTermLength($,q),q.longestArgumentTermLength($,q))}preformatted($){return/\n[^\S\r\n]/.test($)}formatItem($,q,J,X){let z=" ".repeat(2);if(!J)return z+$;let Q=$.padEnd(q+$.length-X.displayWidth($)),Y=2,W=(this.helpWidth??80)-q-Y-2,G;if(W<this.minWidthToWrap||X.preformatted(J))G=J;else G=X.boxWrap(J,W).replace(/\n/g,`
4
- `+" ".repeat(q+Y));return z+Q+" ".repeat(Y)+G.replace(/\n/g,`
5
- ${z}`)}boxWrap($,q){if(q<this.minWidthToWrap)return $;let J=$.split(/\r\n|\n/),X=/[\s]*[^\s]+/g,Z=[];return J.forEach((z)=>{let Q=z.match(X);if(Q===null){Z.push("");return}let Y=[Q.shift()],B=this.displayWidth(Y[0]);Q.forEach((W)=>{let G=this.displayWidth(W);if(B+G<=q){Y.push(W),B+=G;return}Z.push(Y.join(""));let V=W.trimStart();Y=[V],B=this.displayWidth(V)}),Z.push(Y.join(""))}),Z.join(`
6
- `)}}function dq($){let q=/\x1b\[\d*(;\d*)*m/g;return $.replace(q,"")}v3.Help=mq;v3.stripColor=dq});var u0=I((d3)=>{var{InvalidArgumentError:c3}=x$();class pq{constructor($,q){this.flags=$,this.description=q||"",this.required=$.includes("<"),this.optional=$.includes("["),this.variadic=/\w\.\.\.[>\]]$/.test($),this.mandatory=!1;let J=m3($);if(this.short=J.shortFlag,this.long=J.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($,q){return this.defaultValue=$,this.defaultValueDescription=q,this}preset($){return this.presetArg=$,this}conflicts($){return this.conflictsWith=this.conflictsWith.concat($),this}implies($){let q=$;if(typeof $==="string")q={[$]:!0};return this.implied=Object.assign(this.implied||{},q),this}env($){return this.envVar=$,this}argParser($){return this.parseArg=$,this}makeOptionMandatory($=!0){return this.mandatory=!!$,this}hideHelp($=!0){return this.hidden=!!$,this}_collectValue($,q){if(q===this.defaultValue||!Array.isArray(q))return[$];return q.push($),q}choices($){return this.argChoices=$.slice(),this.parseArg=(q,J)=>{if(!this.argChoices.includes(q))throw new c3(`Allowed choices are ${this.argChoices.join(", ")}.`);if(this.variadic)return this._collectValue(q,J);return q},this}name(){if(this.long)return this.long.replace(/^--/,"");return this.short.replace(/^-/,"")}attributeName(){if(this.negate)return lq(this.name().replace(/^no-/,""));return lq(this.name())}helpGroup($){return this.helpGroupHeading=$,this}is($){return this.short===$||this.long===$}isBoolean(){return!this.required&&!this.optional&&!this.negate}}class nq{constructor($){this.positiveOptions=new Map,this.negativeOptions=new Map,this.dualOptions=new Set,$.forEach((q)=>{if(q.negate)this.negativeOptions.set(q.attributeName(),q);else this.positiveOptions.set(q.attributeName(),q)}),this.negativeOptions.forEach((q,J)=>{if(this.positiveOptions.has(J))this.dualOptions.add(J)})}valueFromOption($,q){let J=q.attributeName();if(!this.dualOptions.has(J))return!0;let X=this.negativeOptions.get(J).presetArg,Z=X!==void 0?X:!1;return q.negate===(Z===$)}}function lq($){return $.split("-").reduce((q,J)=>{return q+J[0].toUpperCase()+J.slice(1)})}function m3($){let q,J,X=/^-[^-]$/,Z=/^--[^-]/,z=$.split(/[ |,]+/).concat("guard");if(X.test(z[0]))q=z.shift();if(Z.test(z[0]))J=z.shift();if(!q&&X.test(z[0]))q=z.shift();if(!q&&Z.test(z[0]))q=J,J=z.shift();if(z[0].startsWith("-")){let Q=z[0],Y=`option creation failed due to '${Q}' in option flags '${$}'`;if(/^-[^-][^-]/.test(Q))throw Error(`${Y}
2
+ import{createRequire as y3}from"node:module";var H3=Object.create;var{getPrototypeOf:j3,defineProperty:uq,getOwnPropertyNames:O3}=Object;var T3=Object.prototype.hasOwnProperty;function _3($){return this[$]}var f3,R3,h0=($,q,J)=>{var X=$!=null&&typeof $==="object";if(X){var Z=q?f3??=new WeakMap:R3??=new WeakMap,z=Z.get($);if(z)return z}J=$!=null?H3(j3($)):{};let Q=q||!$||!$.__esModule?uq(J,"default",{value:$,enumerable:!0}):J;for(let G of O3($))if(!T3.call(Q,G))uq(Q,G,{get:_3.bind($,G),enumerable:!0});if(X)Z.set($,Q);return Q};var I=($,q)=>()=>(q||$((q={exports:{}}).exports,q),q.exports);var B$=y3(import.meta.url);var H$=I((k3)=>{class C0 extends Error{constructor($,q,J){super(J);Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name,this.code=q,this.exitCode=$,this.nestedError=void 0}}class gq extends C0{constructor($){super(1,"commander.invalidArgument",$);Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name}}k3.CommanderError=C0;k3.InvalidArgumentError=gq});var i$=I((C3)=>{var{InvalidArgumentError:b3}=H$();class cq{constructor($,q){switch(this.description=q||"",this.variadic=!1,this.parseArg=void 0,this.defaultValue=void 0,this.defaultValueDescription=void 0,this.argChoices=void 0,$[0]){case"<":this.required=!0,this._name=$.slice(1,-1);break;case"[":this.required=!1,this._name=$.slice(1,-1);break;default:this.required=!0,this._name=$;break}if(this._name.endsWith("..."))this.variadic=!0,this._name=this._name.slice(0,-3)}name(){return this._name}_collectValue($,q){if(q===this.defaultValue||!Array.isArray(q))return[$];return q.push($),q}default($,q){return this.defaultValue=$,this.defaultValueDescription=q,this}argParser($){return this.parseArg=$,this}choices($){return this.argChoices=$.slice(),this.parseArg=(q,J)=>{if(!this.argChoices.includes(q))throw new b3(`Allowed choices are ${this.argChoices.join(", ")}.`);if(this.variadic)return this._collectValue(q,J);return q},this}argRequired(){return this.required=!0,this}argOptional(){return this.required=!1,this}}function h3($){let q=$.name()+($.variadic===!0?"...":"");return $.required?"<"+q+">":"["+q+"]"}C3.Argument=cq;C3.humanReadableArgName=h3});var v0=I((c3)=>{var{humanReadableArgName:g3}=i$();class mq{constructor(){this.helpWidth=void 0,this.minWidthToWrap=40,this.sortSubcommands=!1,this.sortOptions=!1,this.showGlobalOptions=!1}prepareContext($){this.helpWidth=this.helpWidth??$.helpWidth??80}visibleCommands($){let q=$.commands.filter((X)=>!X._hidden),J=$._getHelpCommand();if(J&&!J._hidden)q.push(J);if(this.sortSubcommands)q.sort((X,Z)=>{return X.name().localeCompare(Z.name())});return q}compareOptions($,q){let J=(X)=>{return X.short?X.short.replace(/^-/,""):X.long.replace(/^--/,"")};return J($).localeCompare(J(q))}visibleOptions($){let q=$.options.filter((X)=>!X.hidden),J=$._getHelpOption();if(J&&!J.hidden){let X=J.short&&$._findOption(J.short),Z=J.long&&$._findOption(J.long);if(!X&&!Z)q.push(J);else if(J.long&&!Z)q.push($.createOption(J.long,J.description));else if(J.short&&!X)q.push($.createOption(J.short,J.description))}if(this.sortOptions)q.sort(this.compareOptions);return q}visibleGlobalOptions($){if(!this.showGlobalOptions)return[];let q=[];for(let J=$.parent;J;J=J.parent){let X=J.options.filter((Z)=>!Z.hidden);q.push(...X)}if(this.sortOptions)q.sort(this.compareOptions);return q}visibleArguments($){if($._argsDescription)$.registeredArguments.forEach((q)=>{q.description=q.description||$._argsDescription[q.name()]||""});if($.registeredArguments.find((q)=>q.description))return $.registeredArguments;return[]}subcommandTerm($){let q=$.registeredArguments.map((J)=>g3(J)).join(" ");return $._name+($._aliases[0]?"|"+$._aliases[0]:"")+($.options.length?" [options]":"")+(q?" "+q:"")}optionTerm($){return $.flags}argumentTerm($){return $.name()}longestSubcommandTermLength($,q){return q.visibleCommands($).reduce((J,X)=>{return Math.max(J,this.displayWidth(q.styleSubcommandTerm(q.subcommandTerm(X))))},0)}longestOptionTermLength($,q){return q.visibleOptions($).reduce((J,X)=>{return Math.max(J,this.displayWidth(q.styleOptionTerm(q.optionTerm(X))))},0)}longestGlobalOptionTermLength($,q){return q.visibleGlobalOptions($).reduce((J,X)=>{return Math.max(J,this.displayWidth(q.styleOptionTerm(q.optionTerm(X))))},0)}longestArgumentTermLength($,q){return q.visibleArguments($).reduce((J,X)=>{return Math.max(J,this.displayWidth(q.styleArgumentTerm(q.argumentTerm(X))))},0)}commandUsage($){let q=$._name;if($._aliases[0])q=q+"|"+$._aliases[0];let J="";for(let X=$.parent;X;X=X.parent)J=X.name()+" "+J;return J+q+" "+$.usage()}commandDescription($){return $.description()}subcommandDescription($){return $.summary()||$.description()}optionDescription($){let q=[];if($.argChoices)q.push(`choices: ${$.argChoices.map((J)=>JSON.stringify(J)).join(", ")}`);if($.defaultValue!==void 0){if($.required||$.optional||$.isBoolean()&&typeof $.defaultValue==="boolean")q.push(`default: ${$.defaultValueDescription||JSON.stringify($.defaultValue)}`)}if($.presetArg!==void 0&&$.optional)q.push(`preset: ${JSON.stringify($.presetArg)}`);if($.envVar!==void 0)q.push(`env: ${$.envVar}`);if(q.length>0){let J=`(${q.join(", ")})`;if($.description)return`${$.description} ${J}`;return J}return $.description}argumentDescription($){let q=[];if($.argChoices)q.push(`choices: ${$.argChoices.map((J)=>JSON.stringify(J)).join(", ")}`);if($.defaultValue!==void 0)q.push(`default: ${$.defaultValueDescription||JSON.stringify($.defaultValue)}`);if(q.length>0){let J=`(${q.join(", ")})`;if($.description)return`${$.description} ${J}`;return J}return $.description}formatItemList($,q,J){if(q.length===0)return[];return[J.styleTitle($),...q,""]}groupItems($,q,J){let X=new Map;return $.forEach((Z)=>{let z=J(Z);if(!X.has(z))X.set(z,[])}),q.forEach((Z)=>{let z=J(Z);if(!X.has(z))X.set(z,[]);X.get(z).push(Z)}),X}formatHelp($,q){let J=q.padWidth($,q),X=q.helpWidth??80;function Z(W,B){return q.formatItem(W,J,B,q)}let z=[`${q.styleTitle("Usage:")} ${q.styleUsage(q.commandUsage($))}`,""],Q=q.commandDescription($);if(Q.length>0)z=z.concat([q.boxWrap(q.styleCommandDescription(Q),X),""]);let G=q.visibleArguments($).map((W)=>{return Z(q.styleArgumentTerm(q.argumentTerm(W)),q.styleArgumentDescription(q.argumentDescription(W)))});if(z=z.concat(this.formatItemList("Arguments:",G,q)),this.groupItems($.options,q.visibleOptions($),(W)=>W.helpGroupHeading??"Options:").forEach((W,B)=>{let K=W.map((L)=>{return Z(q.styleOptionTerm(q.optionTerm(L)),q.styleOptionDescription(q.optionDescription(L)))});z=z.concat(this.formatItemList(B,K,q))}),q.showGlobalOptions){let W=q.visibleGlobalOptions($).map((B)=>{return Z(q.styleOptionTerm(q.optionTerm(B)),q.styleOptionDescription(q.optionDescription(B)))});z=z.concat(this.formatItemList("Global Options:",W,q))}return this.groupItems($.commands,q.visibleCommands($),(W)=>W.helpGroup()||"Commands:").forEach((W,B)=>{let K=W.map((L)=>{return Z(q.styleSubcommandTerm(q.subcommandTerm(L)),q.styleSubcommandDescription(q.subcommandDescription(L)))});z=z.concat(this.formatItemList(B,K,q))}),z.join(`
3
+ `)}displayWidth($){return dq($).length}styleTitle($){return $}styleUsage($){return $.split(" ").map((q)=>{if(q==="[options]")return this.styleOptionText(q);if(q==="[command]")return this.styleSubcommandText(q);if(q[0]==="["||q[0]==="<")return this.styleArgumentText(q);return this.styleCommandText(q)}).join(" ")}styleCommandDescription($){return this.styleDescriptionText($)}styleOptionDescription($){return this.styleDescriptionText($)}styleSubcommandDescription($){return this.styleDescriptionText($)}styleArgumentDescription($){return this.styleDescriptionText($)}styleDescriptionText($){return $}styleOptionTerm($){return this.styleOptionText($)}styleSubcommandTerm($){return $.split(" ").map((q)=>{if(q==="[options]")return this.styleOptionText(q);if(q[0]==="["||q[0]==="<")return this.styleArgumentText(q);return this.styleSubcommandText(q)}).join(" ")}styleArgumentTerm($){return this.styleArgumentText($)}styleOptionText($){return $}styleArgumentText($){return $}styleSubcommandText($){return $}styleCommandText($){return $}padWidth($,q){return Math.max(q.longestOptionTermLength($,q),q.longestGlobalOptionTermLength($,q),q.longestSubcommandTermLength($,q),q.longestArgumentTermLength($,q))}preformatted($){return/\n[^\S\r\n]/.test($)}formatItem($,q,J,X){let z=" ".repeat(2);if(!J)return z+$;let Q=$.padEnd(q+$.length-X.displayWidth($)),G=2,Y=(this.helpWidth??80)-q-G-2,W;if(Y<this.minWidthToWrap||X.preformatted(J))W=J;else W=X.boxWrap(J,Y).replace(/\n/g,`
4
+ `+" ".repeat(q+G));return z+Q+" ".repeat(G)+W.replace(/\n/g,`
5
+ ${z}`)}boxWrap($,q){if(q<this.minWidthToWrap)return $;let J=$.split(/\r\n|\n/),X=/[\s]*[^\s]+/g,Z=[];return J.forEach((z)=>{let Q=z.match(X);if(Q===null){Z.push("");return}let G=[Q.shift()],V=this.displayWidth(G[0]);Q.forEach((Y)=>{let W=this.displayWidth(Y);if(V+W<=q){G.push(Y),V+=W;return}Z.push(G.join(""));let B=Y.trimStart();G=[B],V=this.displayWidth(B)}),Z.push(G.join(""))}),Z.join(`
6
+ `)}}function dq($){let q=/\x1b\[\d*(;\d*)*m/g;return $.replace(q,"")}c3.Help=mq;c3.stripColor=dq});var u0=I((n3)=>{var{InvalidArgumentError:l3}=H$();class pq{constructor($,q){this.flags=$,this.description=q||"",this.required=$.includes("<"),this.optional=$.includes("["),this.variadic=/\w\.\.\.[>\]]$/.test($),this.mandatory=!1;let J=p3($);if(this.short=J.shortFlag,this.long=J.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($,q){return this.defaultValue=$,this.defaultValueDescription=q,this}preset($){return this.presetArg=$,this}conflicts($){return this.conflictsWith=this.conflictsWith.concat($),this}implies($){let q=$;if(typeof $==="string")q={[$]:!0};return this.implied=Object.assign(this.implied||{},q),this}env($){return this.envVar=$,this}argParser($){return this.parseArg=$,this}makeOptionMandatory($=!0){return this.mandatory=!!$,this}hideHelp($=!0){return this.hidden=!!$,this}_collectValue($,q){if(q===this.defaultValue||!Array.isArray(q))return[$];return q.push($),q}choices($){return this.argChoices=$.slice(),this.parseArg=(q,J)=>{if(!this.argChoices.includes(q))throw new l3(`Allowed choices are ${this.argChoices.join(", ")}.`);if(this.variadic)return this._collectValue(q,J);return q},this}name(){if(this.long)return this.long.replace(/^--/,"");return this.short.replace(/^-/,"")}attributeName(){if(this.negate)return lq(this.name().replace(/^no-/,""));return lq(this.name())}helpGroup($){return this.helpGroupHeading=$,this}is($){return this.short===$||this.long===$}isBoolean(){return!this.required&&!this.optional&&!this.negate}}class nq{constructor($){this.positiveOptions=new Map,this.negativeOptions=new Map,this.dualOptions=new Set,$.forEach((q)=>{if(q.negate)this.negativeOptions.set(q.attributeName(),q);else this.positiveOptions.set(q.attributeName(),q)}),this.negativeOptions.forEach((q,J)=>{if(this.positiveOptions.has(J))this.dualOptions.add(J)})}valueFromOption($,q){let J=q.attributeName();if(!this.dualOptions.has(J))return!0;let X=this.negativeOptions.get(J).presetArg,Z=X!==void 0?X:!1;return q.negate===(Z===$)}}function lq($){return $.split("-").reduce((q,J)=>{return q+J[0].toUpperCase()+J.slice(1)})}function p3($){let q,J,X=/^-[^-]$/,Z=/^--[^-]/,z=$.split(/[ |,]+/).concat("guard");if(X.test(z[0]))q=z.shift();if(Z.test(z[0]))J=z.shift();if(!q&&X.test(z[0]))q=z.shift();if(!q&&Z.test(z[0]))q=J,J=z.shift();if(z[0].startsWith("-")){let Q=z[0],G=`option creation failed due to '${Q}' in option flags '${$}'`;if(/^-[^-][^-]/.test(Q))throw Error(`${G}
7
7
  - a short flag is a single dash and a single character
8
8
  - either use a single dash and a single character (for a short flag)
9
- - or use a double dash for a long option (and can have two, like '--ws, --workspace')`);if(X.test(Q))throw Error(`${Y}
10
- - too many short flags`);if(Z.test(Q))throw Error(`${Y}
11
- - too many long flags`);throw Error(`${Y}
12
- - unrecognised flag format`)}if(q===void 0&&J===void 0)throw Error(`option creation failed due to no flags found in '${$}'.`);return{shortFlag:q,longFlag:J}}d3.Option=pq;d3.DualOptions=nq});var sq=I((i3)=>{function n3($,q){if(Math.abs($.length-q.length)>3)return Math.max($.length,q.length);let J=[];for(let X=0;X<=$.length;X++)J[X]=[X];for(let X=0;X<=q.length;X++)J[0][X]=X;for(let X=1;X<=q.length;X++)for(let Z=1;Z<=$.length;Z++){let z=1;if($[Z-1]===q[X-1])z=0;else z=1;if(J[Z][X]=Math.min(J[Z-1][X]+1,J[Z][X-1]+1,J[Z-1][X-1]+z),Z>1&&X>1&&$[Z-1]===q[X-2]&&$[Z-2]===q[X-1])J[Z][X]=Math.min(J[Z][X],J[Z-2][X-2]+1)}return J[$.length][q.length]}function s3($,q){if(!q||q.length===0)return"";q=Array.from(new Set(q));let J=$.startsWith("--");if(J)$=$.slice(2),q=q.map((Q)=>Q.slice(2));let X=[],Z=3,z=0.4;if(q.forEach((Q)=>{if(Q.length<=1)return;let Y=n3($,Q),B=Math.max($.length,Q.length);if((B-Y)/B>z){if(Y<Z)Z=Y,X=[Q];else if(Y===Z)X.push(Q)}}),X.sort((Q,Y)=>Q.localeCompare(Y)),J)X=X.map((Q)=>`--${Q}`);if(X.length>1)return`
9
+ - or use a double dash for a long option (and can have two, like '--ws, --workspace')`);if(X.test(Q))throw Error(`${G}
10
+ - too many short flags`);if(Z.test(Q))throw Error(`${G}
11
+ - too many long flags`);throw Error(`${G}
12
+ - unrecognised flag format`)}if(q===void 0&&J===void 0)throw Error(`option creation failed due to no flags found in '${$}'.`);return{shortFlag:q,longFlag:J}}n3.Option=pq;n3.DualOptions=nq});var sq=I((a3)=>{function t3($,q){if(Math.abs($.length-q.length)>3)return Math.max($.length,q.length);let J=[];for(let X=0;X<=$.length;X++)J[X]=[X];for(let X=0;X<=q.length;X++)J[0][X]=X;for(let X=1;X<=q.length;X++)for(let Z=1;Z<=$.length;Z++){let z=1;if($[Z-1]===q[X-1])z=0;else z=1;if(J[Z][X]=Math.min(J[Z-1][X]+1,J[Z][X-1]+1,J[Z-1][X-1]+z),Z>1&&X>1&&$[Z-1]===q[X-2]&&$[Z-2]===q[X-1])J[Z][X]=Math.min(J[Z][X],J[Z-2][X-2]+1)}return J[$.length][q.length]}function o3($,q){if(!q||q.length===0)return"";q=Array.from(new Set(q));let J=$.startsWith("--");if(J)$=$.slice(2),q=q.map((Q)=>Q.slice(2));let X=[],Z=3,z=0.4;if(q.forEach((Q)=>{if(Q.length<=1)return;let G=t3($,Q),V=Math.max($.length,Q.length);if((V-G)/V>z){if(G<Z)Z=G,X=[Q];else if(G===Z)X.push(Q)}}),X.sort((Q,G)=>Q.localeCompare(G)),J)X=X.map((Q)=>`--${Q}`);if(X.length>1)return`
13
13
  (Did you mean one of ${X.join(", ")}?)`;if(X.length===1)return`
14
- (Did you mean ${X[0]}?)`;return""}i3.suggestSimilar=s3});var aq=I((J6)=>{var o3=V$("node:events").EventEmitter,g0=V$("node:child_process"),p=V$("node:path"),i$=V$("node:fs"),F=V$("node:process"),{Argument:a3,humanReadableArgName:r3}=s$(),{CommanderError:c0}=x$(),{Help:e3,stripColor:$6}=v0(),{Option:iq,DualOptions:q6}=u0(),{suggestSimilar:tq}=sq();class d0 extends o3{constructor($){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=$||"",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:(q)=>F.stdout.write(q),writeErr:(q)=>F.stderr.write(q),outputError:(q,J)=>J(q),getOutHelpWidth:()=>F.stdout.isTTY?F.stdout.columns:void 0,getErrHelpWidth:()=>F.stderr.isTTY?F.stderr.columns:void 0,getOutHasColors:()=>m0()??(F.stdout.isTTY&&F.stdout.hasColors?.()),getErrHasColors:()=>m0()??(F.stderr.isTTY&&F.stderr.hasColors?.()),stripColor:(q)=>$6(q)},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($){return this._outputConfiguration=$._outputConfiguration,this._helpOption=$._helpOption,this._helpCommand=$._helpCommand,this._helpConfiguration=$._helpConfiguration,this._exitCallback=$._exitCallback,this._storeOptionsAsProperties=$._storeOptionsAsProperties,this._combineFlagAndOptionalValue=$._combineFlagAndOptionalValue,this._allowExcessArguments=$._allowExcessArguments,this._enablePositionalOptions=$._enablePositionalOptions,this._showHelpAfterError=$._showHelpAfterError,this._showSuggestionAfterError=$._showSuggestionAfterError,this}_getCommandAndAncestors(){let $=[];for(let q=this;q;q=q.parent)$.push(q);return $}command($,q,J){let X=q,Z=J;if(typeof X==="object"&&X!==null)Z=X,X=null;Z=Z||{};let[,z,Q]=$.match(/([^ ]+) *(.*)/),Y=this.createCommand(z);if(X)Y.description(X),Y._executableHandler=!0;if(Z.isDefault)this._defaultCommandName=Y._name;if(Y._hidden=!!(Z.noHelp||Z.hidden),Y._executableFile=Z.executableFile||null,Q)Y.arguments(Q);if(this._registerCommand(Y),Y.parent=this,Y.copyInheritedSettings(this),X)return this;return Y}createCommand($){return new d0($)}createHelp(){return Object.assign(new e3,this.configureHelp())}configureHelp($){if($===void 0)return this._helpConfiguration;return this._helpConfiguration=$,this}configureOutput($){if($===void 0)return this._outputConfiguration;return this._outputConfiguration={...this._outputConfiguration,...$},this}showHelpAfterError($=!0){if(typeof $!=="string")$=!!$;return this._showHelpAfterError=$,this}showSuggestionAfterError($=!0){return this._showSuggestionAfterError=!!$,this}addCommand($,q){if(!$._name)throw Error(`Command passed to .addCommand() must have a name
15
- - specify the name in Command constructor or using .name()`);if(q=q||{},q.isDefault)this._defaultCommandName=$._name;if(q.noHelp||q.hidden)$._hidden=!0;return this._registerCommand($),$.parent=this,$._checkForBrokenPassThrough(),this}createArgument($,q){return new a3($,q)}argument($,q,J,X){let Z=this.createArgument($,q);if(typeof J==="function")Z.default(X).argParser(J);else Z.default(J);return this.addArgument(Z),this}arguments($){return $.trim().split(/ +/).forEach((q)=>{this.argument(q)}),this}addArgument($){let q=this.registeredArguments.slice(-1)[0];if(q?.variadic)throw Error(`only the last argument can be variadic '${q.name()}'`);if($.required&&$.defaultValue!==void 0&&$.parseArg===void 0)throw Error(`a default value for a required argument is never used: '${$.name()}'`);return this.registeredArguments.push($),this}helpCommand($,q){if(typeof $==="boolean"){if(this._addImplicitHelpCommand=$,$&&this._defaultCommandGroup)this._initCommandGroup(this._getHelpCommand());return this}let J=$??"help [command]",[,X,Z]=J.match(/([^ ]+) *(.*)/),z=q??"display help for command",Q=this.createCommand(X);if(Q.helpOption(!1),Z)Q.arguments(Z);if(z)Q.description(z);if(this._addImplicitHelpCommand=!0,this._helpCommand=Q,$||q)this._initCommandGroup(Q);return this}addHelpCommand($,q){if(typeof $!=="object")return this.helpCommand($,q),this;return this._addImplicitHelpCommand=!0,this._helpCommand=$,this._initCommandGroup($),this}_getHelpCommand(){if(this._addImplicitHelpCommand??(this.commands.length&&!this._actionHandler&&!this._findCommand("help"))){if(this._helpCommand===void 0)this.helpCommand(void 0,void 0);return this._helpCommand}return null}hook($,q){let J=["preSubcommand","preAction","postAction"];if(!J.includes($))throw Error(`Unexpected value for event passed to hook : '${$}'.
14
+ (Did you mean ${X[0]}?)`;return""}a3.suggestSimilar=o3});var aq=I((z6)=>{var e3=B$("node:events").EventEmitter,g0=B$("node:child_process"),p=B$("node:path"),t$=B$("node:fs"),F=B$("node:process"),{Argument:$6,humanReadableArgName:q6}=i$(),{CommanderError:c0}=H$(),{Help:J6,stripColor:X6}=v0(),{Option:iq,DualOptions:Z6}=u0(),{suggestSimilar:tq}=sq();class d0 extends e3{constructor($){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=$||"",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:(q)=>F.stdout.write(q),writeErr:(q)=>F.stderr.write(q),outputError:(q,J)=>J(q),getOutHelpWidth:()=>F.stdout.isTTY?F.stdout.columns:void 0,getErrHelpWidth:()=>F.stderr.isTTY?F.stderr.columns:void 0,getOutHasColors:()=>m0()??(F.stdout.isTTY&&F.stdout.hasColors?.()),getErrHasColors:()=>m0()??(F.stderr.isTTY&&F.stderr.hasColors?.()),stripColor:(q)=>X6(q)},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($){return this._outputConfiguration=$._outputConfiguration,this._helpOption=$._helpOption,this._helpCommand=$._helpCommand,this._helpConfiguration=$._helpConfiguration,this._exitCallback=$._exitCallback,this._storeOptionsAsProperties=$._storeOptionsAsProperties,this._combineFlagAndOptionalValue=$._combineFlagAndOptionalValue,this._allowExcessArguments=$._allowExcessArguments,this._enablePositionalOptions=$._enablePositionalOptions,this._showHelpAfterError=$._showHelpAfterError,this._showSuggestionAfterError=$._showSuggestionAfterError,this}_getCommandAndAncestors(){let $=[];for(let q=this;q;q=q.parent)$.push(q);return $}command($,q,J){let X=q,Z=J;if(typeof X==="object"&&X!==null)Z=X,X=null;Z=Z||{};let[,z,Q]=$.match(/([^ ]+) *(.*)/),G=this.createCommand(z);if(X)G.description(X),G._executableHandler=!0;if(Z.isDefault)this._defaultCommandName=G._name;if(G._hidden=!!(Z.noHelp||Z.hidden),G._executableFile=Z.executableFile||null,Q)G.arguments(Q);if(this._registerCommand(G),G.parent=this,G.copyInheritedSettings(this),X)return this;return G}createCommand($){return new d0($)}createHelp(){return Object.assign(new J6,this.configureHelp())}configureHelp($){if($===void 0)return this._helpConfiguration;return this._helpConfiguration=$,this}configureOutput($){if($===void 0)return this._outputConfiguration;return this._outputConfiguration={...this._outputConfiguration,...$},this}showHelpAfterError($=!0){if(typeof $!=="string")$=!!$;return this._showHelpAfterError=$,this}showSuggestionAfterError($=!0){return this._showSuggestionAfterError=!!$,this}addCommand($,q){if(!$._name)throw Error(`Command passed to .addCommand() must have a name
15
+ - specify the name in Command constructor or using .name()`);if(q=q||{},q.isDefault)this._defaultCommandName=$._name;if(q.noHelp||q.hidden)$._hidden=!0;return this._registerCommand($),$.parent=this,$._checkForBrokenPassThrough(),this}createArgument($,q){return new $6($,q)}argument($,q,J,X){let Z=this.createArgument($,q);if(typeof J==="function")Z.default(X).argParser(J);else Z.default(J);return this.addArgument(Z),this}arguments($){return $.trim().split(/ +/).forEach((q)=>{this.argument(q)}),this}addArgument($){let q=this.registeredArguments.slice(-1)[0];if(q?.variadic)throw Error(`only the last argument can be variadic '${q.name()}'`);if($.required&&$.defaultValue!==void 0&&$.parseArg===void 0)throw Error(`a default value for a required argument is never used: '${$.name()}'`);return this.registeredArguments.push($),this}helpCommand($,q){if(typeof $==="boolean"){if(this._addImplicitHelpCommand=$,$&&this._defaultCommandGroup)this._initCommandGroup(this._getHelpCommand());return this}let J=$??"help [command]",[,X,Z]=J.match(/([^ ]+) *(.*)/),z=q??"display help for command",Q=this.createCommand(X);if(Q.helpOption(!1),Z)Q.arguments(Z);if(z)Q.description(z);if(this._addImplicitHelpCommand=!0,this._helpCommand=Q,$||q)this._initCommandGroup(Q);return this}addHelpCommand($,q){if(typeof $!=="object")return this.helpCommand($,q),this;return this._addImplicitHelpCommand=!0,this._helpCommand=$,this._initCommandGroup($),this}_getHelpCommand(){if(this._addImplicitHelpCommand??(this.commands.length&&!this._actionHandler&&!this._findCommand("help"))){if(this._helpCommand===void 0)this.helpCommand(void 0,void 0);return this._helpCommand}return null}hook($,q){let J=["preSubcommand","preAction","postAction"];if(!J.includes($))throw Error(`Unexpected value for event passed to hook : '${$}'.
16
16
  Expecting one of '${J.join("', '")}'`);if(this._lifeCycleHooks[$])this._lifeCycleHooks[$].push(q);else this._lifeCycleHooks[$]=[q];return this}exitOverride($){if($)this._exitCallback=$;else this._exitCallback=(q)=>{if(q.code!=="commander.executeSubCommandAsync")throw q};return this}_exit($,q,J){if(this._exitCallback)this._exitCallback(new c0($,q,J));F.exit($)}action($){let q=(J)=>{let X=this.registeredArguments.length,Z=J.slice(0,X);if(this._storeOptionsAsProperties)Z[X]=this;else Z[X]=this.opts();return Z.push(this),$.apply(this,Z)};return this._actionHandler=q,this}createOption($,q){return new iq($,q)}_callParseArg($,q,J,X){try{return $.parseArg(q,J)}catch(Z){if(Z.code==="commander.invalidArgument"){let z=`${X} ${Z.message}`;this.error(z,{exitCode:Z.exitCode,code:Z.code})}throw Z}}_registerOption($){let q=$.short&&this._findOption($.short)||$.long&&this._findOption($.long);if(q){let J=$.long&&this._findOption($.long)?$.long:$.short;throw Error(`Cannot add option '${$.flags}'${this._name&&` to command '${this._name}'`} due to conflicting flag '${J}'
17
- - already used by option '${q.flags}'`)}this._initOptionGroup($),this.options.push($)}_registerCommand($){let q=(X)=>{return[X.name()].concat(X.aliases())},J=q($).find((X)=>this._findCommand(X));if(J){let X=q(this._findCommand(J)).join("|"),Z=q($).join("|");throw Error(`cannot add command '${Z}' as already have command '${X}'`)}this._initCommandGroup($),this.commands.push($)}addOption($){this._registerOption($);let q=$.name(),J=$.attributeName();if($.negate){let Z=$.long.replace(/^--no-/,"--");if(!this._findOption(Z))this.setOptionValueWithSource(J,$.defaultValue===void 0?!0:$.defaultValue,"default")}else if($.defaultValue!==void 0)this.setOptionValueWithSource(J,$.defaultValue,"default");let X=(Z,z,Q)=>{if(Z==null&&$.presetArg!==void 0)Z=$.presetArg;let Y=this.getOptionValue(J);if(Z!==null&&$.parseArg)Z=this._callParseArg($,Z,Y,z);else if(Z!==null&&$.variadic)Z=$._collectValue(Z,Y);if(Z==null)if($.negate)Z=!1;else if($.isBoolean()||$.optional)Z=!0;else Z="";this.setOptionValueWithSource(J,Z,Q)};if(this.on("option:"+q,(Z)=>{let z=`error: option '${$.flags}' argument '${Z}' is invalid.`;X(Z,z,"cli")}),$.envVar)this.on("optionEnv:"+q,(Z)=>{let z=`error: option '${$.flags}' value '${Z}' from env '${$.envVar}' is invalid.`;X(Z,z,"env")});return this}_optionEx($,q,J,X,Z){if(typeof q==="object"&&q instanceof iq)throw Error("To add an Option object use addOption() instead of option() or requiredOption()");let z=this.createOption(q,J);if(z.makeOptionMandatory(!!$.mandatory),typeof X==="function")z.default(Z).argParser(X);else if(X instanceof RegExp){let Q=X;X=(Y,B)=>{let W=Q.exec(Y);return W?W[0]:B},z.default(Z).argParser(X)}else z.default(X);return this.addOption(z)}option($,q,J,X){return this._optionEx({},$,q,J,X)}requiredOption($,q,J,X){return this._optionEx({mandatory:!0},$,q,J,X)}combineFlagAndOptionalValue($=!0){return this._combineFlagAndOptionalValue=!!$,this}allowUnknownOption($=!0){return this._allowUnknownOption=!!$,this}allowExcessArguments($=!0){return this._allowExcessArguments=!!$,this}enablePositionalOptions($=!0){return this._enablePositionalOptions=!!$,this}passThroughOptions($=!0){return this._passThroughOptions=!!$,this._checkForBrokenPassThrough(),this}_checkForBrokenPassThrough(){if(this.parent&&this._passThroughOptions&&!this.parent._enablePositionalOptions)throw Error(`passThroughOptions cannot be used for '${this._name}' without turning on enablePositionalOptions for parent command(s)`)}storeOptionsAsProperties($=!0){if(this.options.length)throw Error("call .storeOptionsAsProperties() before adding options");if(Object.keys(this._optionValues).length)throw Error("call .storeOptionsAsProperties() before setting option values");return this._storeOptionsAsProperties=!!$,this}getOptionValue($){if(this._storeOptionsAsProperties)return this[$];return this._optionValues[$]}setOptionValue($,q){return this.setOptionValueWithSource($,q,void 0)}setOptionValueWithSource($,q,J){if(this._storeOptionsAsProperties)this[$]=q;else this._optionValues[$]=q;return this._optionValueSources[$]=J,this}getOptionValueSource($){return this._optionValueSources[$]}getOptionValueSourceWithGlobals($){let q;return this._getCommandAndAncestors().forEach((J)=>{if(J.getOptionValueSource($)!==void 0)q=J.getOptionValueSource($)}),q}_prepareUserArgs($,q){if($!==void 0&&!Array.isArray($))throw Error("first parameter to parse must be array or undefined");if(q=q||{},$===void 0&&q.from===void 0){if(F.versions?.electron)q.from="electron";let X=F.execArgv??[];if(X.includes("-e")||X.includes("--eval")||X.includes("-p")||X.includes("--print"))q.from="eval"}if($===void 0)$=F.argv;this.rawArgs=$.slice();let J;switch(q.from){case void 0:case"node":this._scriptPath=$[1],J=$.slice(2);break;case"electron":if(F.defaultApp)this._scriptPath=$[1],J=$.slice(2);else J=$.slice(1);break;case"user":J=$.slice(0);break;case"eval":J=$.slice(1);break;default:throw Error(`unexpected parse option { from: '${q.from}' }`)}if(!this._name&&this._scriptPath)this.nameFromFilename(this._scriptPath);return this._name=this._name||"program",J}parse($,q){this._prepareForParse();let J=this._prepareUserArgs($,q);return this._parseCommand([],J),this}async parseAsync($,q){this._prepareForParse();let J=this._prepareUserArgs($,q);return await this._parseCommand([],J),this}_prepareForParse(){if(this._savedState===null)this.saveStateBeforeParse();else this.restoreStateBeforeParse()}saveStateBeforeParse(){this._savedState={_name:this._name,_optionValues:{...this._optionValues},_optionValueSources:{...this._optionValueSources}}}restoreStateBeforeParse(){if(this._storeOptionsAsProperties)throw Error(`Can not call parse again when storeOptionsAsProperties is true.
18
- - 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($,q,J){if(i$.existsSync($))return;let X=q?`searched for local subcommand relative to directory '${q}'`:"no directory for search for local subcommand, use .executableDir() to supply a custom directory",Z=`'${$}' does not exist
17
+ - already used by option '${q.flags}'`)}this._initOptionGroup($),this.options.push($)}_registerCommand($){let q=(X)=>{return[X.name()].concat(X.aliases())},J=q($).find((X)=>this._findCommand(X));if(J){let X=q(this._findCommand(J)).join("|"),Z=q($).join("|");throw Error(`cannot add command '${Z}' as already have command '${X}'`)}this._initCommandGroup($),this.commands.push($)}addOption($){this._registerOption($);let q=$.name(),J=$.attributeName();if($.negate){let Z=$.long.replace(/^--no-/,"--");if(!this._findOption(Z))this.setOptionValueWithSource(J,$.defaultValue===void 0?!0:$.defaultValue,"default")}else if($.defaultValue!==void 0)this.setOptionValueWithSource(J,$.defaultValue,"default");let X=(Z,z,Q)=>{if(Z==null&&$.presetArg!==void 0)Z=$.presetArg;let G=this.getOptionValue(J);if(Z!==null&&$.parseArg)Z=this._callParseArg($,Z,G,z);else if(Z!==null&&$.variadic)Z=$._collectValue(Z,G);if(Z==null)if($.negate)Z=!1;else if($.isBoolean()||$.optional)Z=!0;else Z="";this.setOptionValueWithSource(J,Z,Q)};if(this.on("option:"+q,(Z)=>{let z=`error: option '${$.flags}' argument '${Z}' is invalid.`;X(Z,z,"cli")}),$.envVar)this.on("optionEnv:"+q,(Z)=>{let z=`error: option '${$.flags}' value '${Z}' from env '${$.envVar}' is invalid.`;X(Z,z,"env")});return this}_optionEx($,q,J,X,Z){if(typeof q==="object"&&q instanceof iq)throw Error("To add an Option object use addOption() instead of option() or requiredOption()");let z=this.createOption(q,J);if(z.makeOptionMandatory(!!$.mandatory),typeof X==="function")z.default(Z).argParser(X);else if(X instanceof RegExp){let Q=X;X=(G,V)=>{let Y=Q.exec(G);return Y?Y[0]:V},z.default(Z).argParser(X)}else z.default(X);return this.addOption(z)}option($,q,J,X){return this._optionEx({},$,q,J,X)}requiredOption($,q,J,X){return this._optionEx({mandatory:!0},$,q,J,X)}combineFlagAndOptionalValue($=!0){return this._combineFlagAndOptionalValue=!!$,this}allowUnknownOption($=!0){return this._allowUnknownOption=!!$,this}allowExcessArguments($=!0){return this._allowExcessArguments=!!$,this}enablePositionalOptions($=!0){return this._enablePositionalOptions=!!$,this}passThroughOptions($=!0){return this._passThroughOptions=!!$,this._checkForBrokenPassThrough(),this}_checkForBrokenPassThrough(){if(this.parent&&this._passThroughOptions&&!this.parent._enablePositionalOptions)throw Error(`passThroughOptions cannot be used for '${this._name}' without turning on enablePositionalOptions for parent command(s)`)}storeOptionsAsProperties($=!0){if(this.options.length)throw Error("call .storeOptionsAsProperties() before adding options");if(Object.keys(this._optionValues).length)throw Error("call .storeOptionsAsProperties() before setting option values");return this._storeOptionsAsProperties=!!$,this}getOptionValue($){if(this._storeOptionsAsProperties)return this[$];return this._optionValues[$]}setOptionValue($,q){return this.setOptionValueWithSource($,q,void 0)}setOptionValueWithSource($,q,J){if(this._storeOptionsAsProperties)this[$]=q;else this._optionValues[$]=q;return this._optionValueSources[$]=J,this}getOptionValueSource($){return this._optionValueSources[$]}getOptionValueSourceWithGlobals($){let q;return this._getCommandAndAncestors().forEach((J)=>{if(J.getOptionValueSource($)!==void 0)q=J.getOptionValueSource($)}),q}_prepareUserArgs($,q){if($!==void 0&&!Array.isArray($))throw Error("first parameter to parse must be array or undefined");if(q=q||{},$===void 0&&q.from===void 0){if(F.versions?.electron)q.from="electron";let X=F.execArgv??[];if(X.includes("-e")||X.includes("--eval")||X.includes("-p")||X.includes("--print"))q.from="eval"}if($===void 0)$=F.argv;this.rawArgs=$.slice();let J;switch(q.from){case void 0:case"node":this._scriptPath=$[1],J=$.slice(2);break;case"electron":if(F.defaultApp)this._scriptPath=$[1],J=$.slice(2);else J=$.slice(1);break;case"user":J=$.slice(0);break;case"eval":J=$.slice(1);break;default:throw Error(`unexpected parse option { from: '${q.from}' }`)}if(!this._name&&this._scriptPath)this.nameFromFilename(this._scriptPath);return this._name=this._name||"program",J}parse($,q){this._prepareForParse();let J=this._prepareUserArgs($,q);return this._parseCommand([],J),this}async parseAsync($,q){this._prepareForParse();let J=this._prepareUserArgs($,q);return await this._parseCommand([],J),this}_prepareForParse(){if(this._savedState===null)this.saveStateBeforeParse();else this.restoreStateBeforeParse()}saveStateBeforeParse(){this._savedState={_name:this._name,_optionValues:{...this._optionValues},_optionValueSources:{...this._optionValueSources}}}restoreStateBeforeParse(){if(this._storeOptionsAsProperties)throw Error(`Can not call parse again when storeOptionsAsProperties is true.
18
+ - 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($,q,J){if(t$.existsSync($))return;let X=q?`searched for local subcommand relative to directory '${q}'`:"no directory for search for local subcommand, use .executableDir() to supply a custom directory",Z=`'${$}' does not exist
19
19
  - if '${J}' is not meant to be an executable command, remove description parameter from '.command()' and use '.description()' instead
20
20
  - if the default executable name is not suitable, use the executableFile option to supply a custom name or path
21
- - ${X}`;throw Error(Z)}_executeSubCommand($,q){q=q.slice();let J=!1,X=[".js",".ts",".tsx",".mjs",".cjs"];function Z(W,G){let V=p.resolve(W,G);if(i$.existsSync(V))return V;if(X.includes(p.extname(G)))return;let K=X.find((L)=>i$.existsSync(`${V}${L}`));if(K)return`${V}${K}`;return}this._checkForMissingMandatoryOptions(),this._checkForConflictingOptions();let z=$._executableFile||`${this._name}-${$._name}`,Q=this._executableDir||"";if(this._scriptPath){let W;try{W=i$.realpathSync(this._scriptPath)}catch{W=this._scriptPath}Q=p.resolve(p.dirname(W),Q)}if(Q){let W=Z(Q,z);if(!W&&!$._executableFile&&this._scriptPath){let G=p.basename(this._scriptPath,p.extname(this._scriptPath));if(G!==this._name)W=Z(Q,`${G}-${$._name}`)}z=W||z}J=X.includes(p.extname(z));let Y;if(F.platform!=="win32")if(J)q.unshift(z),q=oq(F.execArgv).concat(q),Y=g0.spawn(F.argv[0],q,{stdio:"inherit"});else Y=g0.spawn(z,q,{stdio:"inherit"});else this._checkForMissingExecutable(z,Q,$._name),q.unshift(z),q=oq(F.execArgv).concat(q),Y=g0.spawn(F.execPath,q,{stdio:"inherit"});if(!Y.killed)["SIGUSR1","SIGUSR2","SIGTERM","SIGINT","SIGHUP"].forEach((G)=>{F.on(G,()=>{if(Y.killed===!1&&Y.exitCode===null)Y.kill(G)})});let B=this._exitCallback;Y.on("close",(W)=>{if(W=W??1,!B)F.exit(W);else B(new c0(W,"commander.executeSubCommandAsync","(close)"))}),Y.on("error",(W)=>{if(W.code==="ENOENT")this._checkForMissingExecutable(z,Q,$._name);else if(W.code==="EACCES")throw Error(`'${z}' not executable`);if(!B)F.exit(1);else{let G=new c0(1,"commander.executeSubCommandAsync","(error)");G.nestedError=W,B(G)}}),this.runningCommand=Y}_dispatchSubcommand($,q,J){let X=this._findCommand($);if(!X)this.help({error:!0});X._prepareForParse();let Z;return Z=this._chainOrCallSubCommandHook(Z,X,"preSubcommand"),Z=this._chainOrCall(Z,()=>{if(X._executableHandler)this._executeSubCommand(X,q.concat(J));else return X._parseCommand(q,J)}),Z}_dispatchHelpCommand($){if(!$)this.help();let q=this._findCommand($);if(q&&!q._executableHandler)q.help();return this._dispatchSubcommand($,[],[this._getHelpOption()?.long??this._getHelpOption()?.short??"--help"])}_checkNumberOfArguments(){if(this.registeredArguments.forEach(($,q)=>{if($.required&&this.args[q]==null)this.missingArgument($.name())}),this.registeredArguments.length>0&&this.registeredArguments[this.registeredArguments.length-1].variadic)return;if(this.args.length>this.registeredArguments.length)this._excessArguments(this.args)}_processArguments(){let $=(J,X,Z)=>{let z=X;if(X!==null&&J.parseArg){let Q=`error: command-argument value '${X}' is invalid for argument '${J.name()}'.`;z=this._callParseArg(J,X,Z,Q)}return z};this._checkNumberOfArguments();let q=[];this.registeredArguments.forEach((J,X)=>{let Z=J.defaultValue;if(J.variadic){if(X<this.args.length){if(Z=this.args.slice(X),J.parseArg)Z=Z.reduce((z,Q)=>{return $(J,Q,z)},J.defaultValue)}else if(Z===void 0)Z=[]}else if(X<this.args.length){if(Z=this.args[X],J.parseArg)Z=$(J,Z,J.defaultValue)}q[X]=Z}),this.processedArgs=q}_chainOrCall($,q){if($?.then&&typeof $.then==="function")return $.then(()=>q());return q()}_chainOrCallHooks($,q){let J=$,X=[];if(this._getCommandAndAncestors().reverse().filter((Z)=>Z._lifeCycleHooks[q]!==void 0).forEach((Z)=>{Z._lifeCycleHooks[q].forEach((z)=>{X.push({hookedCommand:Z,callback:z})})}),q==="postAction")X.reverse();return X.forEach((Z)=>{J=this._chainOrCall(J,()=>{return Z.callback(Z.hookedCommand,this)})}),J}_chainOrCallSubCommandHook($,q,J){let X=$;if(this._lifeCycleHooks[J]!==void 0)this._lifeCycleHooks[J].forEach((Z)=>{X=this._chainOrCall(X,()=>{return Z(this,q)})});return X}_parseCommand($,q){let J=this.parseOptions(q);if(this._parseOptionsEnv(),this._parseOptionsImplied(),$=$.concat(J.operands),q=J.unknown,this.args=$.concat(q),$&&this._findCommand($[0]))return this._dispatchSubcommand($[0],$.slice(1),q);if(this._getHelpCommand()&&$[0]===this._getHelpCommand().name())return this._dispatchHelpCommand($[1]);if(this._defaultCommandName)return this._outputHelpIfRequested(q),this._dispatchSubcommand(this._defaultCommandName,$,q);if(this.commands.length&&this.args.length===0&&!this._actionHandler&&!this._defaultCommandName)this.help({error:!0});this._outputHelpIfRequested(J.unknown),this._checkForMissingMandatoryOptions(),this._checkForConflictingOptions();let X=()=>{if(J.unknown.length>0)this.unknownOption(J.unknown[0])},Z=`command:${this.name()}`;if(this._actionHandler){X(),this._processArguments();let z;if(z=this._chainOrCallHooks(z,"preAction"),z=this._chainOrCall(z,()=>this._actionHandler(this.processedArgs)),this.parent)z=this._chainOrCall(z,()=>{this.parent.emit(Z,$,q)});return z=this._chainOrCallHooks(z,"postAction"),z}if(this.parent?.listenerCount(Z))X(),this._processArguments(),this.parent.emit(Z,$,q);else if($.length){if(this._findCommand("*"))return this._dispatchSubcommand("*",$,q);if(this.listenerCount("command:*"))this.emit("command:*",$,q);else if(this.commands.length)this.unknownCommand();else X(),this._processArguments()}else if(this.commands.length)X(),this.help({error:!0});else X(),this._processArguments()}_findCommand($){if(!$)return;return this.commands.find((q)=>q._name===$||q._aliases.includes($))}_findOption($){return this.options.find((q)=>q.is($))}_checkForMissingMandatoryOptions(){this._getCommandAndAncestors().forEach(($)=>{$.options.forEach((q)=>{if(q.mandatory&&$.getOptionValue(q.attributeName())===void 0)$.missingMandatoryOptionValue(q)})})}_checkForConflictingLocalOptions(){let $=this.options.filter((J)=>{let X=J.attributeName();if(this.getOptionValue(X)===void 0)return!1;return this.getOptionValueSource(X)!=="default"});$.filter((J)=>J.conflictsWith.length>0).forEach((J)=>{let X=$.find((Z)=>J.conflictsWith.includes(Z.attributeName()));if(X)this._conflictingOption(J,X)})}_checkForConflictingOptions(){this._getCommandAndAncestors().forEach(($)=>{$._checkForConflictingLocalOptions()})}parseOptions($){let q=[],J=[],X=q;function Z(W){return W.length>1&&W[0]==="-"}let z=(W)=>{if(!/^-(\d+|\d*\.\d+)(e[+-]?\d+)?$/.test(W))return!1;return!this._getCommandAndAncestors().some((G)=>G.options.map((V)=>V.short).some((V)=>/^-\d$/.test(V)))},Q=null,Y=null,B=0;while(B<$.length||Y){let W=Y??$[B++];if(Y=null,W==="--"){if(X===J)X.push(W);X.push(...$.slice(B));break}if(Q&&(!Z(W)||z(W))){this.emit(`option:${Q.name()}`,W);continue}if(Q=null,Z(W)){let G=this._findOption(W);if(G){if(G.required){let V=$[B++];if(V===void 0)this.optionMissingArgument(G);this.emit(`option:${G.name()}`,V)}else if(G.optional){let V=null;if(B<$.length&&(!Z($[B])||z($[B])))V=$[B++];this.emit(`option:${G.name()}`,V)}else this.emit(`option:${G.name()}`);Q=G.variadic?G:null;continue}}if(W.length>2&&W[0]==="-"&&W[1]!=="-"){let G=this._findOption(`-${W[1]}`);if(G){if(G.required||G.optional&&this._combineFlagAndOptionalValue)this.emit(`option:${G.name()}`,W.slice(2));else this.emit(`option:${G.name()}`),Y=`-${W.slice(2)}`;continue}}if(/^--[^=]+=/.test(W)){let G=W.indexOf("="),V=this._findOption(W.slice(0,G));if(V&&(V.required||V.optional)){this.emit(`option:${V.name()}`,W.slice(G+1));continue}}if(X===q&&Z(W)&&!(this.commands.length===0&&z(W)))X=J;if((this._enablePositionalOptions||this._passThroughOptions)&&q.length===0&&J.length===0){if(this._findCommand(W)){q.push(W),J.push(...$.slice(B));break}else if(this._getHelpCommand()&&W===this._getHelpCommand().name()){q.push(W,...$.slice(B));break}else if(this._defaultCommandName){J.push(W,...$.slice(B));break}}if(this._passThroughOptions){X.push(W,...$.slice(B));break}X.push(W)}return{operands:q,unknown:J}}opts(){if(this._storeOptionsAsProperties){let $={},q=this.options.length;for(let J=0;J<q;J++){let X=this.options[J].attributeName();$[X]=X===this._versionOptionName?this._version:this[X]}return $}return this._optionValues}optsWithGlobals(){return this._getCommandAndAncestors().reduce(($,q)=>Object.assign($,q.opts()),{})}error($,q){if(this._outputConfiguration.outputError(`${$}
21
+ - ${X}`;throw Error(Z)}_executeSubCommand($,q){q=q.slice();let J=!1,X=[".js",".ts",".tsx",".mjs",".cjs"];function Z(Y,W){let B=p.resolve(Y,W);if(t$.existsSync(B))return B;if(X.includes(p.extname(W)))return;let K=X.find((L)=>t$.existsSync(`${B}${L}`));if(K)return`${B}${K}`;return}this._checkForMissingMandatoryOptions(),this._checkForConflictingOptions();let z=$._executableFile||`${this._name}-${$._name}`,Q=this._executableDir||"";if(this._scriptPath){let Y;try{Y=t$.realpathSync(this._scriptPath)}catch{Y=this._scriptPath}Q=p.resolve(p.dirname(Y),Q)}if(Q){let Y=Z(Q,z);if(!Y&&!$._executableFile&&this._scriptPath){let W=p.basename(this._scriptPath,p.extname(this._scriptPath));if(W!==this._name)Y=Z(Q,`${W}-${$._name}`)}z=Y||z}J=X.includes(p.extname(z));let G;if(F.platform!=="win32")if(J)q.unshift(z),q=oq(F.execArgv).concat(q),G=g0.spawn(F.argv[0],q,{stdio:"inherit"});else G=g0.spawn(z,q,{stdio:"inherit"});else this._checkForMissingExecutable(z,Q,$._name),q.unshift(z),q=oq(F.execArgv).concat(q),G=g0.spawn(F.execPath,q,{stdio:"inherit"});if(!G.killed)["SIGUSR1","SIGUSR2","SIGTERM","SIGINT","SIGHUP"].forEach((W)=>{F.on(W,()=>{if(G.killed===!1&&G.exitCode===null)G.kill(W)})});let V=this._exitCallback;G.on("close",(Y)=>{if(Y=Y??1,!V)F.exit(Y);else V(new c0(Y,"commander.executeSubCommandAsync","(close)"))}),G.on("error",(Y)=>{if(Y.code==="ENOENT")this._checkForMissingExecutable(z,Q,$._name);else if(Y.code==="EACCES")throw Error(`'${z}' not executable`);if(!V)F.exit(1);else{let W=new c0(1,"commander.executeSubCommandAsync","(error)");W.nestedError=Y,V(W)}}),this.runningCommand=G}_dispatchSubcommand($,q,J){let X=this._findCommand($);if(!X)this.help({error:!0});X._prepareForParse();let Z;return Z=this._chainOrCallSubCommandHook(Z,X,"preSubcommand"),Z=this._chainOrCall(Z,()=>{if(X._executableHandler)this._executeSubCommand(X,q.concat(J));else return X._parseCommand(q,J)}),Z}_dispatchHelpCommand($){if(!$)this.help();let q=this._findCommand($);if(q&&!q._executableHandler)q.help();return this._dispatchSubcommand($,[],[this._getHelpOption()?.long??this._getHelpOption()?.short??"--help"])}_checkNumberOfArguments(){if(this.registeredArguments.forEach(($,q)=>{if($.required&&this.args[q]==null)this.missingArgument($.name())}),this.registeredArguments.length>0&&this.registeredArguments[this.registeredArguments.length-1].variadic)return;if(this.args.length>this.registeredArguments.length)this._excessArguments(this.args)}_processArguments(){let $=(J,X,Z)=>{let z=X;if(X!==null&&J.parseArg){let Q=`error: command-argument value '${X}' is invalid for argument '${J.name()}'.`;z=this._callParseArg(J,X,Z,Q)}return z};this._checkNumberOfArguments();let q=[];this.registeredArguments.forEach((J,X)=>{let Z=J.defaultValue;if(J.variadic){if(X<this.args.length){if(Z=this.args.slice(X),J.parseArg)Z=Z.reduce((z,Q)=>{return $(J,Q,z)},J.defaultValue)}else if(Z===void 0)Z=[]}else if(X<this.args.length){if(Z=this.args[X],J.parseArg)Z=$(J,Z,J.defaultValue)}q[X]=Z}),this.processedArgs=q}_chainOrCall($,q){if($?.then&&typeof $.then==="function")return $.then(()=>q());return q()}_chainOrCallHooks($,q){let J=$,X=[];if(this._getCommandAndAncestors().reverse().filter((Z)=>Z._lifeCycleHooks[q]!==void 0).forEach((Z)=>{Z._lifeCycleHooks[q].forEach((z)=>{X.push({hookedCommand:Z,callback:z})})}),q==="postAction")X.reverse();return X.forEach((Z)=>{J=this._chainOrCall(J,()=>{return Z.callback(Z.hookedCommand,this)})}),J}_chainOrCallSubCommandHook($,q,J){let X=$;if(this._lifeCycleHooks[J]!==void 0)this._lifeCycleHooks[J].forEach((Z)=>{X=this._chainOrCall(X,()=>{return Z(this,q)})});return X}_parseCommand($,q){let J=this.parseOptions(q);if(this._parseOptionsEnv(),this._parseOptionsImplied(),$=$.concat(J.operands),q=J.unknown,this.args=$.concat(q),$&&this._findCommand($[0]))return this._dispatchSubcommand($[0],$.slice(1),q);if(this._getHelpCommand()&&$[0]===this._getHelpCommand().name())return this._dispatchHelpCommand($[1]);if(this._defaultCommandName)return this._outputHelpIfRequested(q),this._dispatchSubcommand(this._defaultCommandName,$,q);if(this.commands.length&&this.args.length===0&&!this._actionHandler&&!this._defaultCommandName)this.help({error:!0});this._outputHelpIfRequested(J.unknown),this._checkForMissingMandatoryOptions(),this._checkForConflictingOptions();let X=()=>{if(J.unknown.length>0)this.unknownOption(J.unknown[0])},Z=`command:${this.name()}`;if(this._actionHandler){X(),this._processArguments();let z;if(z=this._chainOrCallHooks(z,"preAction"),z=this._chainOrCall(z,()=>this._actionHandler(this.processedArgs)),this.parent)z=this._chainOrCall(z,()=>{this.parent.emit(Z,$,q)});return z=this._chainOrCallHooks(z,"postAction"),z}if(this.parent?.listenerCount(Z))X(),this._processArguments(),this.parent.emit(Z,$,q);else if($.length){if(this._findCommand("*"))return this._dispatchSubcommand("*",$,q);if(this.listenerCount("command:*"))this.emit("command:*",$,q);else if(this.commands.length)this.unknownCommand();else X(),this._processArguments()}else if(this.commands.length)X(),this.help({error:!0});else X(),this._processArguments()}_findCommand($){if(!$)return;return this.commands.find((q)=>q._name===$||q._aliases.includes($))}_findOption($){return this.options.find((q)=>q.is($))}_checkForMissingMandatoryOptions(){this._getCommandAndAncestors().forEach(($)=>{$.options.forEach((q)=>{if(q.mandatory&&$.getOptionValue(q.attributeName())===void 0)$.missingMandatoryOptionValue(q)})})}_checkForConflictingLocalOptions(){let $=this.options.filter((J)=>{let X=J.attributeName();if(this.getOptionValue(X)===void 0)return!1;return this.getOptionValueSource(X)!=="default"});$.filter((J)=>J.conflictsWith.length>0).forEach((J)=>{let X=$.find((Z)=>J.conflictsWith.includes(Z.attributeName()));if(X)this._conflictingOption(J,X)})}_checkForConflictingOptions(){this._getCommandAndAncestors().forEach(($)=>{$._checkForConflictingLocalOptions()})}parseOptions($){let q=[],J=[],X=q;function Z(Y){return Y.length>1&&Y[0]==="-"}let z=(Y)=>{if(!/^-(\d+|\d*\.\d+)(e[+-]?\d+)?$/.test(Y))return!1;return!this._getCommandAndAncestors().some((W)=>W.options.map((B)=>B.short).some((B)=>/^-\d$/.test(B)))},Q=null,G=null,V=0;while(V<$.length||G){let Y=G??$[V++];if(G=null,Y==="--"){if(X===J)X.push(Y);X.push(...$.slice(V));break}if(Q&&(!Z(Y)||z(Y))){this.emit(`option:${Q.name()}`,Y);continue}if(Q=null,Z(Y)){let W=this._findOption(Y);if(W){if(W.required){let B=$[V++];if(B===void 0)this.optionMissingArgument(W);this.emit(`option:${W.name()}`,B)}else if(W.optional){let B=null;if(V<$.length&&(!Z($[V])||z($[V])))B=$[V++];this.emit(`option:${W.name()}`,B)}else this.emit(`option:${W.name()}`);Q=W.variadic?W:null;continue}}if(Y.length>2&&Y[0]==="-"&&Y[1]!=="-"){let W=this._findOption(`-${Y[1]}`);if(W){if(W.required||W.optional&&this._combineFlagAndOptionalValue)this.emit(`option:${W.name()}`,Y.slice(2));else this.emit(`option:${W.name()}`),G=`-${Y.slice(2)}`;continue}}if(/^--[^=]+=/.test(Y)){let W=Y.indexOf("="),B=this._findOption(Y.slice(0,W));if(B&&(B.required||B.optional)){this.emit(`option:${B.name()}`,Y.slice(W+1));continue}}if(X===q&&Z(Y)&&!(this.commands.length===0&&z(Y)))X=J;if((this._enablePositionalOptions||this._passThroughOptions)&&q.length===0&&J.length===0){if(this._findCommand(Y)){q.push(Y),J.push(...$.slice(V));break}else if(this._getHelpCommand()&&Y===this._getHelpCommand().name()){q.push(Y,...$.slice(V));break}else if(this._defaultCommandName){J.push(Y,...$.slice(V));break}}if(this._passThroughOptions){X.push(Y,...$.slice(V));break}X.push(Y)}return{operands:q,unknown:J}}opts(){if(this._storeOptionsAsProperties){let $={},q=this.options.length;for(let J=0;J<q;J++){let X=this.options[J].attributeName();$[X]=X===this._versionOptionName?this._version:this[X]}return $}return this._optionValues}optsWithGlobals(){return this._getCommandAndAncestors().reduce(($,q)=>Object.assign($,q.opts()),{})}error($,q){if(this._outputConfiguration.outputError(`${$}
22
22
  `,this._outputConfiguration.writeErr),typeof this._showHelpAfterError==="string")this._outputConfiguration.writeErr(`${this._showHelpAfterError}
23
23
  `);else if(this._showHelpAfterError)this._outputConfiguration.writeErr(`
24
- `),this.outputHelp({error:!0});let J=q||{},X=J.exitCode||1,Z=J.code||"commander.error";this._exit(X,Z,$)}_parseOptionsEnv(){this.options.forEach(($)=>{if($.envVar&&$.envVar in F.env){let q=$.attributeName();if(this.getOptionValue(q)===void 0||["default","config","env"].includes(this.getOptionValueSource(q)))if($.required||$.optional)this.emit(`optionEnv:${$.name()}`,F.env[$.envVar]);else this.emit(`optionEnv:${$.name()}`)}})}_parseOptionsImplied(){let $=new q6(this.options),q=(J)=>{return this.getOptionValue(J)!==void 0&&!["default","implied"].includes(this.getOptionValueSource(J))};this.options.filter((J)=>J.implied!==void 0&&q(J.attributeName())&&$.valueFromOption(this.getOptionValue(J.attributeName()),J)).forEach((J)=>{Object.keys(J.implied).filter((X)=>!q(X)).forEach((X)=>{this.setOptionValueWithSource(X,J.implied[X],"implied")})})}missingArgument($){let q=`error: missing required argument '${$}'`;this.error(q,{code:"commander.missingArgument"})}optionMissingArgument($){let q=`error: option '${$.flags}' argument missing`;this.error(q,{code:"commander.optionMissingArgument"})}missingMandatoryOptionValue($){let q=`error: required option '${$.flags}' not specified`;this.error(q,{code:"commander.missingMandatoryOptionValue"})}_conflictingOption($,q){let J=(z)=>{let Q=z.attributeName(),Y=this.getOptionValue(Q),B=this.options.find((G)=>G.negate&&Q===G.attributeName()),W=this.options.find((G)=>!G.negate&&Q===G.attributeName());if(B&&(B.presetArg===void 0&&Y===!1||B.presetArg!==void 0&&Y===B.presetArg))return B;return W||z},X=(z)=>{let Q=J(z),Y=Q.attributeName();if(this.getOptionValueSource(Y)==="env")return`environment variable '${Q.envVar}'`;return`option '${Q.flags}'`},Z=`error: ${X($)} cannot be used with ${X(q)}`;this.error(Z,{code:"commander.conflictingOption"})}unknownOption($){if(this._allowUnknownOption)return;let q="";if($.startsWith("--")&&this._showSuggestionAfterError){let X=[],Z=this;do{let z=Z.createHelp().visibleOptions(Z).filter((Q)=>Q.long).map((Q)=>Q.long);X=X.concat(z),Z=Z.parent}while(Z&&!Z._enablePositionalOptions);q=tq($,X)}let J=`error: unknown option '${$}'${q}`;this.error(J,{code:"commander.unknownOption"})}_excessArguments($){if(this._allowExcessArguments)return;let q=this.registeredArguments.length,J=q===1?"":"s",Z=`error: too many arguments${this.parent?` for '${this.name()}'`:""}. Expected ${q} argument${J} but got ${$.length}.`;this.error(Z,{code:"commander.excessArguments"})}unknownCommand(){let $=this.args[0],q="";if(this._showSuggestionAfterError){let X=[];this.createHelp().visibleCommands(this).forEach((Z)=>{if(X.push(Z.name()),Z.alias())X.push(Z.alias())}),q=tq($,X)}let J=`error: unknown command '${$}'${q}`;this.error(J,{code:"commander.unknownCommand"})}version($,q,J){if($===void 0)return this._version;this._version=$,q=q||"-V, --version",J=J||"output the version number";let X=this.createOption(q,J);return this._versionOptionName=X.attributeName(),this._registerOption(X),this.on("option:"+X.name(),()=>{this._outputConfiguration.writeOut(`${$}
25
- `),this._exit(0,"commander.version",$)}),this}description($,q){if($===void 0&&q===void 0)return this._description;if(this._description=$,q)this._argsDescription=q;return this}summary($){if($===void 0)return this._summary;return this._summary=$,this}alias($){if($===void 0)return this._aliases[0];let q=this;if(this.commands.length!==0&&this.commands[this.commands.length-1]._executableHandler)q=this.commands[this.commands.length-1];if($===q._name)throw Error("Command alias can't be the same as its name");let J=this.parent?._findCommand($);if(J){let X=[J.name()].concat(J.aliases()).join("|");throw Error(`cannot add alias '${$}' to command '${this.name()}' as already have command '${X}'`)}return q._aliases.push($),this}aliases($){if($===void 0)return this._aliases;return $.forEach((q)=>this.alias(q)),this}usage($){if($===void 0){if(this._usage)return this._usage;let q=this.registeredArguments.map((J)=>{return r3(J)});return[].concat(this.options.length||this._helpOption!==null?"[options]":[],this.commands.length?"[command]":[],this.registeredArguments.length?q:[]).join(" ")}return this._usage=$,this}name($){if($===void 0)return this._name;return this._name=$,this}helpGroup($){if($===void 0)return this._helpGroupHeading??"";return this._helpGroupHeading=$,this}commandsGroup($){if($===void 0)return this._defaultCommandGroup??"";return this._defaultCommandGroup=$,this}optionsGroup($){if($===void 0)return this._defaultOptionGroup??"";return this._defaultOptionGroup=$,this}_initOptionGroup($){if(this._defaultOptionGroup&&!$.helpGroupHeading)$.helpGroup(this._defaultOptionGroup)}_initCommandGroup($){if(this._defaultCommandGroup&&!$.helpGroup())$.helpGroup(this._defaultCommandGroup)}nameFromFilename($){return this._name=p.basename($,p.extname($)),this}executableDir($){if($===void 0)return this._executableDir;return this._executableDir=$,this}helpInformation($){let q=this.createHelp(),J=this._getOutputContext($);q.prepareContext({error:J.error,helpWidth:J.helpWidth,outputHasColors:J.hasColors});let X=q.formatHelp(this,q);if(J.hasColors)return X;return this._outputConfiguration.stripColor(X)}_getOutputContext($){$=$||{};let q=!!$.error,J,X,Z;if(q)J=(Q)=>this._outputConfiguration.writeErr(Q),X=this._outputConfiguration.getErrHasColors(),Z=this._outputConfiguration.getErrHelpWidth();else J=(Q)=>this._outputConfiguration.writeOut(Q),X=this._outputConfiguration.getOutHasColors(),Z=this._outputConfiguration.getOutHelpWidth();return{error:q,write:(Q)=>{if(!X)Q=this._outputConfiguration.stripColor(Q);return J(Q)},hasColors:X,helpWidth:Z}}outputHelp($){let q;if(typeof $==="function")q=$,$=void 0;let J=this._getOutputContext($),X={error:J.error,write:J.write,command:this};this._getCommandAndAncestors().reverse().forEach((z)=>z.emit("beforeAllHelp",X)),this.emit("beforeHelp",X);let Z=this.helpInformation({error:J.error});if(q){if(Z=q(Z),typeof Z!=="string"&&!Buffer.isBuffer(Z))throw Error("outputHelp callback must return a string or a Buffer")}if(J.write(Z),this._getHelpOption()?.long)this.emit(this._getHelpOption().long);this.emit("afterHelp",X),this._getCommandAndAncestors().forEach((z)=>z.emit("afterAllHelp",X))}helpOption($,q){if(typeof $==="boolean"){if($){if(this._helpOption===null)this._helpOption=void 0;if(this._defaultOptionGroup)this._initOptionGroup(this._getHelpOption())}else this._helpOption=null;return this}if(this._helpOption=this.createOption($??"-h, --help",q??"display help for command"),$||q)this._initOptionGroup(this._helpOption);return this}_getHelpOption(){if(this._helpOption===void 0)this.helpOption(void 0,void 0);return this._helpOption}addHelpOption($){return this._helpOption=$,this._initOptionGroup($),this}help($){this.outputHelp($);let q=Number(F.exitCode??0);if(q===0&&$&&typeof $!=="function"&&$.error)q=1;this._exit(q,"commander.help","(outputHelp)")}addHelpText($,q){let J=["beforeAll","before","after","afterAll"];if(!J.includes($))throw Error(`Unexpected value for position to addHelpText.
24
+ `),this.outputHelp({error:!0});let J=q||{},X=J.exitCode||1,Z=J.code||"commander.error";this._exit(X,Z,$)}_parseOptionsEnv(){this.options.forEach(($)=>{if($.envVar&&$.envVar in F.env){let q=$.attributeName();if(this.getOptionValue(q)===void 0||["default","config","env"].includes(this.getOptionValueSource(q)))if($.required||$.optional)this.emit(`optionEnv:${$.name()}`,F.env[$.envVar]);else this.emit(`optionEnv:${$.name()}`)}})}_parseOptionsImplied(){let $=new Z6(this.options),q=(J)=>{return this.getOptionValue(J)!==void 0&&!["default","implied"].includes(this.getOptionValueSource(J))};this.options.filter((J)=>J.implied!==void 0&&q(J.attributeName())&&$.valueFromOption(this.getOptionValue(J.attributeName()),J)).forEach((J)=>{Object.keys(J.implied).filter((X)=>!q(X)).forEach((X)=>{this.setOptionValueWithSource(X,J.implied[X],"implied")})})}missingArgument($){let q=`error: missing required argument '${$}'`;this.error(q,{code:"commander.missingArgument"})}optionMissingArgument($){let q=`error: option '${$.flags}' argument missing`;this.error(q,{code:"commander.optionMissingArgument"})}missingMandatoryOptionValue($){let q=`error: required option '${$.flags}' not specified`;this.error(q,{code:"commander.missingMandatoryOptionValue"})}_conflictingOption($,q){let J=(z)=>{let Q=z.attributeName(),G=this.getOptionValue(Q),V=this.options.find((W)=>W.negate&&Q===W.attributeName()),Y=this.options.find((W)=>!W.negate&&Q===W.attributeName());if(V&&(V.presetArg===void 0&&G===!1||V.presetArg!==void 0&&G===V.presetArg))return V;return Y||z},X=(z)=>{let Q=J(z),G=Q.attributeName();if(this.getOptionValueSource(G)==="env")return`environment variable '${Q.envVar}'`;return`option '${Q.flags}'`},Z=`error: ${X($)} cannot be used with ${X(q)}`;this.error(Z,{code:"commander.conflictingOption"})}unknownOption($){if(this._allowUnknownOption)return;let q="";if($.startsWith("--")&&this._showSuggestionAfterError){let X=[],Z=this;do{let z=Z.createHelp().visibleOptions(Z).filter((Q)=>Q.long).map((Q)=>Q.long);X=X.concat(z),Z=Z.parent}while(Z&&!Z._enablePositionalOptions);q=tq($,X)}let J=`error: unknown option '${$}'${q}`;this.error(J,{code:"commander.unknownOption"})}_excessArguments($){if(this._allowExcessArguments)return;let q=this.registeredArguments.length,J=q===1?"":"s",Z=`error: too many arguments${this.parent?` for '${this.name()}'`:""}. Expected ${q} argument${J} but got ${$.length}.`;this.error(Z,{code:"commander.excessArguments"})}unknownCommand(){let $=this.args[0],q="";if(this._showSuggestionAfterError){let X=[];this.createHelp().visibleCommands(this).forEach((Z)=>{if(X.push(Z.name()),Z.alias())X.push(Z.alias())}),q=tq($,X)}let J=`error: unknown command '${$}'${q}`;this.error(J,{code:"commander.unknownCommand"})}version($,q,J){if($===void 0)return this._version;this._version=$,q=q||"-V, --version",J=J||"output the version number";let X=this.createOption(q,J);return this._versionOptionName=X.attributeName(),this._registerOption(X),this.on("option:"+X.name(),()=>{this._outputConfiguration.writeOut(`${$}
25
+ `),this._exit(0,"commander.version",$)}),this}description($,q){if($===void 0&&q===void 0)return this._description;if(this._description=$,q)this._argsDescription=q;return this}summary($){if($===void 0)return this._summary;return this._summary=$,this}alias($){if($===void 0)return this._aliases[0];let q=this;if(this.commands.length!==0&&this.commands[this.commands.length-1]._executableHandler)q=this.commands[this.commands.length-1];if($===q._name)throw Error("Command alias can't be the same as its name");let J=this.parent?._findCommand($);if(J){let X=[J.name()].concat(J.aliases()).join("|");throw Error(`cannot add alias '${$}' to command '${this.name()}' as already have command '${X}'`)}return q._aliases.push($),this}aliases($){if($===void 0)return this._aliases;return $.forEach((q)=>this.alias(q)),this}usage($){if($===void 0){if(this._usage)return this._usage;let q=this.registeredArguments.map((J)=>{return q6(J)});return[].concat(this.options.length||this._helpOption!==null?"[options]":[],this.commands.length?"[command]":[],this.registeredArguments.length?q:[]).join(" ")}return this._usage=$,this}name($){if($===void 0)return this._name;return this._name=$,this}helpGroup($){if($===void 0)return this._helpGroupHeading??"";return this._helpGroupHeading=$,this}commandsGroup($){if($===void 0)return this._defaultCommandGroup??"";return this._defaultCommandGroup=$,this}optionsGroup($){if($===void 0)return this._defaultOptionGroup??"";return this._defaultOptionGroup=$,this}_initOptionGroup($){if(this._defaultOptionGroup&&!$.helpGroupHeading)$.helpGroup(this._defaultOptionGroup)}_initCommandGroup($){if(this._defaultCommandGroup&&!$.helpGroup())$.helpGroup(this._defaultCommandGroup)}nameFromFilename($){return this._name=p.basename($,p.extname($)),this}executableDir($){if($===void 0)return this._executableDir;return this._executableDir=$,this}helpInformation($){let q=this.createHelp(),J=this._getOutputContext($);q.prepareContext({error:J.error,helpWidth:J.helpWidth,outputHasColors:J.hasColors});let X=q.formatHelp(this,q);if(J.hasColors)return X;return this._outputConfiguration.stripColor(X)}_getOutputContext($){$=$||{};let q=!!$.error,J,X,Z;if(q)J=(Q)=>this._outputConfiguration.writeErr(Q),X=this._outputConfiguration.getErrHasColors(),Z=this._outputConfiguration.getErrHelpWidth();else J=(Q)=>this._outputConfiguration.writeOut(Q),X=this._outputConfiguration.getOutHasColors(),Z=this._outputConfiguration.getOutHelpWidth();return{error:q,write:(Q)=>{if(!X)Q=this._outputConfiguration.stripColor(Q);return J(Q)},hasColors:X,helpWidth:Z}}outputHelp($){let q;if(typeof $==="function")q=$,$=void 0;let J=this._getOutputContext($),X={error:J.error,write:J.write,command:this};this._getCommandAndAncestors().reverse().forEach((z)=>z.emit("beforeAllHelp",X)),this.emit("beforeHelp",X);let Z=this.helpInformation({error:J.error});if(q){if(Z=q(Z),typeof Z!=="string"&&!Buffer.isBuffer(Z))throw Error("outputHelp callback must return a string or a Buffer")}if(J.write(Z),this._getHelpOption()?.long)this.emit(this._getHelpOption().long);this.emit("afterHelp",X),this._getCommandAndAncestors().forEach((z)=>z.emit("afterAllHelp",X))}helpOption($,q){if(typeof $==="boolean"){if($){if(this._helpOption===null)this._helpOption=void 0;if(this._defaultOptionGroup)this._initOptionGroup(this._getHelpOption())}else this._helpOption=null;return this}if(this._helpOption=this.createOption($??"-h, --help",q??"display help for command"),$||q)this._initOptionGroup(this._helpOption);return this}_getHelpOption(){if(this._helpOption===void 0)this.helpOption(void 0,void 0);return this._helpOption}addHelpOption($){return this._helpOption=$,this._initOptionGroup($),this}help($){this.outputHelp($);let q=Number(F.exitCode??0);if(q===0&&$&&typeof $!=="function"&&$.error)q=1;this._exit(q,"commander.help","(outputHelp)")}addHelpText($,q){let J=["beforeAll","before","after","afterAll"];if(!J.includes($))throw Error(`Unexpected value for position to addHelpText.
26
26
  Expecting one of '${J.join("', '")}'`);let X=`${$}Help`;return this.on(X,(Z)=>{let z;if(typeof q==="function")z=q({error:Z.error,command:Z.command});else z=q;if(z)Z.write(`${z}
27
- `)}),this}_outputHelpIfRequested($){let q=this._getHelpOption();if(q&&$.find((X)=>q.is(X)))this.outputHelp(),this._exit(0,"commander.helpDisplayed","(outputHelp)")}}function oq($){return $.map((q)=>{if(!q.startsWith("--inspect"))return q;let J,X="127.0.0.1",Z="9229",z;if((z=q.match(/^(--inspect(-brk)?)$/))!==null)J=z[1];else if((z=q.match(/^(--inspect(-brk|-port)?)=([^:]+)$/))!==null)if(J=z[1],/^\d+$/.test(z[3]))Z=z[3];else X=z[3];else if((z=q.match(/^(--inspect(-brk|-port)?)=([^:]+):(\d+)$/))!==null)J=z[1],X=z[3],Z=z[4];if(J&&Z!=="0")return`${J}=${X}:${parseInt(Z)+1}`;return q})}function m0(){if(F.env.NO_COLOR||F.env.FORCE_COLOR==="0"||F.env.FORCE_COLOR==="false")return!1;if(F.env.FORCE_COLOR||F.env.CLICOLOR_FORCE!==void 0)return!0;return}J6.Command=d0;J6.useColor=m0});var q2=I((Y6)=>{var{Argument:rq}=s$(),{Command:l0}=aq(),{CommanderError:z6,InvalidArgumentError:eq}=x$(),{Help:Q6}=v0(),{Option:$2}=u0();Y6.program=new l0;Y6.createCommand=($)=>new l0($);Y6.createOption=($,q)=>new $2($,q);Y6.createArgument=($,q)=>new rq($,q);Y6.Command=l0;Y6.Option=$2;Y6.Argument=rq;Y6.Help=Q6;Y6.CommanderError=z6;Y6.InvalidArgumentError=eq;Y6.InvalidOptionArgumentError=eq});var K2=I((CJ,U2)=>{class J$ extends Error{constructor($,q,J){super("[ParserError] "+$,q,J);if(this.name="ParserError",this.code="ParserError",Error.captureStackTrace)Error.captureStackTrace(this,J$)}}class o0{constructor($){this.parser=$,this.buf="",this.returned=null,this.result=null,this.resultTable=null,this.resultArr=null}}class e${constructor(){this.pos=0,this.col=0,this.line=0,this.obj={},this.ctx=this.obj,this.stack=[],this._buf="",this.char=null,this.ii=0,this.state=new o0(this.parseStart)}parse($){if($.length===0||$.length==null)return;this._buf=String($),this.ii=-1,this.char=-1;let q;while(q===!1||this.nextChar())q=this.runOne();this._buf=null}nextChar(){if(this.char===10)++this.line,this.col=-1;return++this.ii,this.char=this._buf.codePointAt(this.ii),++this.pos,++this.col,this.haveBuffer()}haveBuffer(){return this.ii<this._buf.length}runOne(){return this.state.parser.call(this,this.state.returned)}finish(){this.char=1114112;let $;do $=this.state.parser,this.runOne();while(this.state.parser!==$);return this.ctx=null,this.state=null,this._buf=null,this.obj}next($){if(typeof $!=="function")throw new J$("Tried to set state to non-existent state: "+JSON.stringify($));this.state.parser=$}goto($){return this.next($),this.runOne()}call($,q){if(q)this.next(q);this.stack.push(this.state),this.state=new o0($)}callNow($,q){return this.call($,q),this.runOne()}return($){if(this.stack.length===0)throw this.error(new J$("Stack underflow"));if($===void 0)$=this.state.buf;this.state=this.stack.pop(),this.state.returned=$}returnNow($){return this.return($),this.runOne()}consume(){if(this.char===1114112)throw this.error(new J$("Unexpected end-of-buffer"));this.state.buf+=this._buf[this.ii]}error($){return $.line=this.line,$.col=this.col,$.pos=this.pos,$}parseStart(){throw new J$("Must declare a parseStart method")}}e$.END=1114112;e$.Error=J$;U2.exports=e$});var N2=I((vJ,F2)=>{F2.exports=($)=>{let q=new Date($);if(isNaN(q))throw TypeError("Invalid Datetime");else return q}});var $0=I((uJ,I2)=>{I2.exports=($,q)=>{q=String(q);while(q.length<$)q="0"+q;return q}});var L2=I((gJ,S2)=>{var I$=$0();class P2 extends Date{constructor($){super($+"Z");this.isFloating=!0}toISOString(){let $=`${this.getUTCFullYear()}-${I$(2,this.getUTCMonth()+1)}-${I$(2,this.getUTCDate())}`,q=`${I$(2,this.getUTCHours())}:${I$(2,this.getUTCMinutes())}:${I$(2,this.getUTCSeconds())}.${I$(3,this.getUTCMilliseconds())}`;return`${$}T${q}`}}S2.exports=($)=>{let q=new P2($);if(isNaN(q))throw TypeError("Invalid Datetime");else return q}});var H2=I((cJ,x2)=>{var D2=$0(),v6=global.Date;class w2 extends v6{constructor($){super($);this.isDate=!0}toISOString(){return`${this.getUTCFullYear()}-${D2(2,this.getUTCMonth()+1)}-${D2(2,this.getUTCDate())}`}}x2.exports=($)=>{let q=new w2($);if(isNaN(q))throw TypeError("Invalid Datetime");else return q}});var T2=I((mJ,O2)=>{var q0=$0();class j2 extends Date{constructor($){super(`0000-01-01T${$}Z`);this.isTime=!0}toISOString(){return`${q0(2,this.getUTCHours())}:${q0(2,this.getUTCMinutes())}:${q0(2,this.getUTCSeconds())}.${q0(3,this.getUTCMilliseconds())}`}}O2.exports=($)=>{let q=new j2($);if(isNaN(q))throw TypeError("Invalid Datetime");else return q}});var G0=I((i2,h$)=>{h$.exports=s2(K2());h$.exports.makeParserClass=s2;class M extends Error{constructor($){super($);if(this.name="TomlError",Error.captureStackTrace)Error.captureStackTrace(this,M);this.fromTOML=!0,this.wrapped=null}}M.wrap=($)=>{let q=new M($.message);return q.code=$.code,q.wrapped=$,q};h$.exports.TomlError=M;var a0=N2(),_2=L2(),f2=H2(),R2=T2(),P=9,f=10,k=13,J0=31,x=32,m=34,X$=35,n=39,X0=43,y2=44,s=45,g=46,r=48,u6=49,g6=55,Q0=57,Z$=58,c6=61,zq=65,f$=69,m6=70,d6=84,l6=85,z0=90,c=95,b$=97,c2=98,z$=101,E$=102,k2=105,p6=108,k$=110,n6=111,m2=114,s6=115,Xq=116,A2=117,i6=120,d2=122,t6=123,E2=125,r0=91,Zq=92,R$=93,Z0=127,o6=55296,a6=57343,b2={[c2]:"\b",[Xq]:"\t",[k$]:`
28
- `,[E$]:"\f",[m2]:"\r",[m]:'"',[Zq]:"\\"};function D($){return $>=r&&$<=Q0}function e0($){return $>=zq&&$<=m6||$>=b$&&$<=E$||$>=r&&$<=Q0}function r6($){return $===u6||$===r}function e6($){return $>=r&&$<=g6}function $8($){return $>=zq&&$<=z0||$>=b$&&$<=d2||$>=r&&$<=Q0||$===n||$===m||$===c||$===s}function q8($){return $>=zq&&$<=z0||$>=b$&&$<=d2||$>=r&&$<=Q0||$===c||$===s}var R=Symbol("type"),A$=Symbol("declared"),J8=Object.prototype.hasOwnProperty,X8=Object.defineProperty,Z8={configurable:!0,enumerable:!0,writable:!0,value:void 0};function a($,q){if(J8.call($,q))return!0;if(q==="__proto__")X8($,"__proto__",Z8);return!1}var Qq=Symbol("inline-table");function h2(){return Object.defineProperties({},{[R]:{value:Qq}})}function z8($){if($===null||typeof $!=="object")return!1;return $[R]===Qq}var Yq=Symbol("table");function Q$(){return Object.defineProperties({},{[R]:{value:Yq},[A$]:{value:!1,writable:!0}})}function y$($){if($===null||typeof $!=="object")return!1;return $[R]===Yq}var l2=Symbol("content-type"),Gq=Symbol("inline-list");function C2($){return Object.defineProperties([],{[R]:{value:Gq},[l2]:{value:$}})}function v2($){if($===null||typeof $!=="object")return!1;return $[R]===Gq}var Wq=Symbol("list");function Q8(){return Object.defineProperties([],{[R]:{value:Wq}})}function $q($){if($===null||typeof $!=="object")return!1;return $[R]===Wq}var p2;try{let utilInspect=eval("require('util').inspect");p2=utilInspect.custom}catch($){}var Bq=p2||"inspect";class n2{constructor($){try{this.value=global.BigInt.asIntN(64,$)}catch(q){this.value=null}Object.defineProperty(this,R,{value:Y0})}isNaN(){return this.value===null}toString(){return String(this.value)}[Bq](){return`[BigInt: ${this.toString()}]}`}valueOf(){return this.value}}var Y0=Symbol("integer");function Y$($){let q=Number($);if(Object.is(q,-0))q=0;if(global.BigInt&&!Number.isSafeInteger(q))return new n2($);else return Object.defineProperties(new Number(q),{isNaN:{value:function(){return isNaN(this)}},[R]:{value:Y0},[Bq]:{value:()=>`[Integer: ${$}]`}})}function qq($){if($===null||typeof $!=="object")return!1;return $[R]===Y0}var Vq=Symbol("float");function u2($){return Object.defineProperties(new Number($),{[R]:{value:Vq},[Bq]:{value:()=>`[Float: ${$}]`}})}function Jq($){if($===null||typeof $!=="object")return!1;return $[R]===Vq}function g2($){let q=typeof $;if(q==="object"){if($===null)return"null";if($ instanceof Date)return"datetime";if(R in $)switch($[R]){case Qq:return"inline-table";case Gq:return"inline-list";case Yq:return"table";case Wq:return"list";case Vq:return"float";case Y0:return"integer"}}return q}function s2($){class q extends ${constructor(){super();this.ctx=this.obj=Q$()}atEndOfWord(){return this.char===X$||this.char===P||this.char===x||this.atEndOfLine()}atEndOfLine(){return this.char===$.END||this.char===f||this.char===k}parseStart(){if(this.char===$.END)return null;else if(this.char===r0)return this.call(this.parseTableOrList);else if(this.char===X$)return this.call(this.parseComment);else if(this.char===f||this.char===x||this.char===P||this.char===k)return null;else if($8(this.char))return this.callNow(this.parseAssignStatement);else throw this.error(new M(`Unknown character "${this.char}"`))}parseWhitespaceToEOL(){if(this.char===x||this.char===P||this.char===k)return null;else if(this.char===X$)return this.goto(this.parseComment);else if(this.char===$.END||this.char===f)return this.return();else throw this.error(new M("Unexpected character, expected only whitespace or comments till end of line"))}parseAssignStatement(){return this.callNow(this.parseAssign,this.recordAssignStatement)}recordAssignStatement(J){let X=this.ctx,Z=J.key.pop();for(let z of J.key){if(a(X,z)&&(!y$(X[z])||X[z][A$]))throw this.error(new M("Can't redefine existing key"));X=X[z]=X[z]||Q$()}if(a(X,Z))throw this.error(new M("Can't redefine existing key"));if(qq(J.value)||Jq(J.value))X[Z]=J.value.valueOf();else X[Z]=J.value;return this.goto(this.parseWhitespaceToEOL)}parseAssign(){return this.callNow(this.parseKeyword,this.recordAssignKeyword)}recordAssignKeyword(J){if(this.state.resultTable)this.state.resultTable.push(J);else this.state.resultTable=[J];return this.goto(this.parseAssignKeywordPreDot)}parseAssignKeywordPreDot(){if(this.char===g)return this.next(this.parseAssignKeywordPostDot);else if(this.char!==x&&this.char!==P)return this.goto(this.parseAssignEqual)}parseAssignKeywordPostDot(){if(this.char!==x&&this.char!==P)return this.callNow(this.parseKeyword,this.recordAssignKeyword)}parseAssignEqual(){if(this.char===c6)return this.next(this.parseAssignPreValue);else throw this.error(new M('Invalid character, expected "="'))}parseAssignPreValue(){if(this.char===x||this.char===P)return null;else return this.callNow(this.parseValue,this.recordAssignValue)}recordAssignValue(J){return this.returnNow({key:this.state.resultTable,value:J})}parseComment(){do if(this.char===$.END||this.char===f)return this.return();while(this.nextChar())}parseTableOrList(){if(this.char===r0)this.next(this.parseList);else return this.goto(this.parseTable)}parseTable(){return this.ctx=this.obj,this.goto(this.parseTableNext)}parseTableNext(){if(this.char===x||this.char===P)return null;else return this.callNow(this.parseKeyword,this.parseTableMore)}parseTableMore(J){if(this.char===x||this.char===P)return null;else if(this.char===R$){if(a(this.ctx,J)&&(!y$(this.ctx[J])||this.ctx[J][A$]))throw this.error(new M("Can't redefine existing key"));else this.ctx=this.ctx[J]=this.ctx[J]||Q$(),this.ctx[A$]=!0;return this.next(this.parseWhitespaceToEOL)}else if(this.char===g){if(!a(this.ctx,J))this.ctx=this.ctx[J]=Q$();else if(y$(this.ctx[J]))this.ctx=this.ctx[J];else if($q(this.ctx[J]))this.ctx=this.ctx[J][this.ctx[J].length-1];else throw this.error(new M("Can't redefine existing key"));return this.next(this.parseTableNext)}else throw this.error(new M("Unexpected character, expected whitespace, . or ]"))}parseList(){return this.ctx=this.obj,this.goto(this.parseListNext)}parseListNext(){if(this.char===x||this.char===P)return null;else return this.callNow(this.parseKeyword,this.parseListMore)}parseListMore(J){if(this.char===x||this.char===P)return null;else if(this.char===R$){if(!a(this.ctx,J))this.ctx[J]=Q8();if(v2(this.ctx[J]))throw this.error(new M("Can't extend an inline array"));else if($q(this.ctx[J])){let X=Q$();this.ctx[J].push(X),this.ctx=X}else throw this.error(new M("Can't redefine an existing key"));return this.next(this.parseListEnd)}else if(this.char===g){if(!a(this.ctx,J))this.ctx=this.ctx[J]=Q$();else if(v2(this.ctx[J]))throw this.error(new M("Can't extend an inline array"));else if(z8(this.ctx[J]))throw this.error(new M("Can't extend an inline table"));else if($q(this.ctx[J]))this.ctx=this.ctx[J][this.ctx[J].length-1];else if(y$(this.ctx[J]))this.ctx=this.ctx[J];else throw this.error(new M("Can't redefine an existing key"));return this.next(this.parseListNext)}else throw this.error(new M("Unexpected character, expected whitespace, . or ]"))}parseListEnd(J){if(this.char===R$)return this.next(this.parseWhitespaceToEOL);else throw this.error(new M("Unexpected character, expected whitespace, . or ]"))}parseValue(){if(this.char===$.END)throw this.error(new M("Key without value"));else if(this.char===m)return this.next(this.parseDoubleString);if(this.char===n)return this.next(this.parseSingleString);else if(this.char===s||this.char===X0)return this.goto(this.parseNumberSign);else if(this.char===k2)return this.next(this.parseInf);else if(this.char===k$)return this.next(this.parseNan);else if(D(this.char))return this.goto(this.parseNumberOrDateTime);else if(this.char===Xq||this.char===E$)return this.goto(this.parseBoolean);else if(this.char===r0)return this.call(this.parseInlineList,this.recordValue);else if(this.char===t6)return this.call(this.parseInlineTable,this.recordValue);else throw this.error(new M("Unexpected character, expecting string, number, datetime, boolean, inline array or inline table"))}recordValue(J){return this.returnNow(J)}parseInf(){if(this.char===k$)return this.next(this.parseInf2);else throw this.error(new M('Unexpected character, expected "inf", "+inf" or "-inf"'))}parseInf2(){if(this.char===E$)if(this.state.buf==="-")return this.return(-1/0);else return this.return(1/0);else throw this.error(new M('Unexpected character, expected "inf", "+inf" or "-inf"'))}parseNan(){if(this.char===b$)return this.next(this.parseNan2);else throw this.error(new M('Unexpected character, expected "nan"'))}parseNan2(){if(this.char===k$)return this.return(NaN);else throw this.error(new M('Unexpected character, expected "nan"'))}parseKeyword(){if(this.char===m)return this.next(this.parseBasicString);else if(this.char===n)return this.next(this.parseLiteralString);else return this.goto(this.parseBareKey)}parseBareKey(){do if(this.char===$.END)throw this.error(new M("Key ended without value"));else if(q8(this.char))this.consume();else if(this.state.buf.length===0)throw this.error(new M("Empty bare keys are not allowed"));else return this.returnNow();while(this.nextChar())}parseSingleString(){if(this.char===n)return this.next(this.parseLiteralMultiStringMaybe);else return this.goto(this.parseLiteralString)}parseLiteralString(){do if(this.char===n)return this.return();else if(this.atEndOfLine())throw this.error(new M("Unterminated string"));else if(this.char===Z0||this.char<=J0&&this.char!==P)throw this.errorControlCharInString();else this.consume();while(this.nextChar())}parseLiteralMultiStringMaybe(){if(this.char===n)return this.next(this.parseLiteralMultiString);else return this.returnNow()}parseLiteralMultiString(){if(this.char===k)return null;else if(this.char===f)return this.next(this.parseLiteralMultiStringContent);else return this.goto(this.parseLiteralMultiStringContent)}parseLiteralMultiStringContent(){do if(this.char===n)return this.next(this.parseLiteralMultiEnd);else if(this.char===$.END)throw this.error(new M("Unterminated multi-line string"));else if(this.char===Z0||this.char<=J0&&this.char!==P&&this.char!==f&&this.char!==k)throw this.errorControlCharInString();else this.consume();while(this.nextChar())}parseLiteralMultiEnd(){if(this.char===n)return this.next(this.parseLiteralMultiEnd2);else return this.state.buf+="'",this.goto(this.parseLiteralMultiStringContent)}parseLiteralMultiEnd2(){if(this.char===n)return this.return();else return this.state.buf+="''",this.goto(this.parseLiteralMultiStringContent)}parseDoubleString(){if(this.char===m)return this.next(this.parseMultiStringMaybe);else return this.goto(this.parseBasicString)}parseBasicString(){do if(this.char===Zq)return this.call(this.parseEscape,this.recordEscapeReplacement);else if(this.char===m)return this.return();else if(this.atEndOfLine())throw this.error(new M("Unterminated string"));else if(this.char===Z0||this.char<=J0&&this.char!==P)throw this.errorControlCharInString();else this.consume();while(this.nextChar())}recordEscapeReplacement(J){return this.state.buf+=J,this.goto(this.parseBasicString)}parseMultiStringMaybe(){if(this.char===m)return this.next(this.parseMultiString);else return this.returnNow()}parseMultiString(){if(this.char===k)return null;else if(this.char===f)return this.next(this.parseMultiStringContent);else return this.goto(this.parseMultiStringContent)}parseMultiStringContent(){do if(this.char===Zq)return this.call(this.parseMultiEscape,this.recordMultiEscapeReplacement);else if(this.char===m)return this.next(this.parseMultiEnd);else if(this.char===$.END)throw this.error(new M("Unterminated multi-line string"));else if(this.char===Z0||this.char<=J0&&this.char!==P&&this.char!==f&&this.char!==k)throw this.errorControlCharInString();else this.consume();while(this.nextChar())}errorControlCharInString(){let J="\\u00";if(this.char<16)J+="0";return J+=this.char.toString(16),this.error(new M(`Control characters (codes < 0x1f and 0x7f) are not allowed in strings, use ${J} instead`))}recordMultiEscapeReplacement(J){return this.state.buf+=J,this.goto(this.parseMultiStringContent)}parseMultiEnd(){if(this.char===m)return this.next(this.parseMultiEnd2);else return this.state.buf+='"',this.goto(this.parseMultiStringContent)}parseMultiEnd2(){if(this.char===m)return this.return();else return this.state.buf+='""',this.goto(this.parseMultiStringContent)}parseMultiEscape(){if(this.char===k||this.char===f)return this.next(this.parseMultiTrim);else if(this.char===x||this.char===P)return this.next(this.parsePreMultiTrim);else return this.goto(this.parseEscape)}parsePreMultiTrim(){if(this.char===x||this.char===P)return null;else if(this.char===k||this.char===f)return this.next(this.parseMultiTrim);else throw this.error(new M("Can't escape whitespace"))}parseMultiTrim(){if(this.char===f||this.char===x||this.char===P||this.char===k)return null;else return this.returnNow()}parseEscape(){if(this.char in b2)return this.return(b2[this.char]);else if(this.char===A2)return this.call(this.parseSmallUnicode,this.parseUnicodeReturn);else if(this.char===l6)return this.call(this.parseLargeUnicode,this.parseUnicodeReturn);else throw this.error(new M("Unknown escape character: "+this.char))}parseUnicodeReturn(J){try{let X=parseInt(J,16);if(X>=o6&&X<=a6)throw this.error(new M("Invalid unicode, character in range 0xD800 - 0xDFFF is reserved"));return this.returnNow(String.fromCodePoint(X))}catch(X){throw this.error(M.wrap(X))}}parseSmallUnicode(){if(!e0(this.char))throw this.error(new M("Invalid character in unicode sequence, expected hex"));else if(this.consume(),this.state.buf.length>=4)return this.return()}parseLargeUnicode(){if(!e0(this.char))throw this.error(new M("Invalid character in unicode sequence, expected hex"));else if(this.consume(),this.state.buf.length>=8)return this.return()}parseNumberSign(){return this.consume(),this.next(this.parseMaybeSignedInfOrNan)}parseMaybeSignedInfOrNan(){if(this.char===k2)return this.next(this.parseInf);else if(this.char===k$)return this.next(this.parseNan);else return this.callNow(this.parseNoUnder,this.parseNumberIntegerStart)}parseNumberIntegerStart(){if(this.char===r)return this.consume(),this.next(this.parseNumberIntegerExponentOrDecimal);else return this.goto(this.parseNumberInteger)}parseNumberIntegerExponentOrDecimal(){if(this.char===g)return this.consume(),this.call(this.parseNoUnder,this.parseNumberFloat);else if(this.char===f$||this.char===z$)return this.consume(),this.next(this.parseNumberExponentSign);else return this.returnNow(Y$(this.state.buf))}parseNumberInteger(){if(D(this.char))this.consume();else if(this.char===c)return this.call(this.parseNoUnder);else if(this.char===f$||this.char===z$)return this.consume(),this.next(this.parseNumberExponentSign);else if(this.char===g)return this.consume(),this.call(this.parseNoUnder,this.parseNumberFloat);else{let J=Y$(this.state.buf);if(J.isNaN())throw this.error(new M("Invalid number"));else return this.returnNow(J)}}parseNoUnder(){if(this.char===c||this.char===g||this.char===f$||this.char===z$)throw this.error(new M("Unexpected character, expected digit"));else if(this.atEndOfWord())throw this.error(new M("Incomplete number"));return this.returnNow()}parseNoUnderHexOctBinLiteral(){if(this.char===c||this.char===g)throw this.error(new M("Unexpected character, expected digit"));else if(this.atEndOfWord())throw this.error(new M("Incomplete number"));return this.returnNow()}parseNumberFloat(){if(this.char===c)return this.call(this.parseNoUnder,this.parseNumberFloat);else if(D(this.char))this.consume();else if(this.char===f$||this.char===z$)return this.consume(),this.next(this.parseNumberExponentSign);else return this.returnNow(u2(this.state.buf))}parseNumberExponentSign(){if(D(this.char))return this.goto(this.parseNumberExponent);else if(this.char===s||this.char===X0)this.consume(),this.call(this.parseNoUnder,this.parseNumberExponent);else throw this.error(new M("Unexpected character, expected -, + or digit"))}parseNumberExponent(){if(D(this.char))this.consume();else if(this.char===c)return this.call(this.parseNoUnder);else return this.returnNow(u2(this.state.buf))}parseNumberOrDateTime(){if(this.char===r)return this.consume(),this.next(this.parseNumberBaseOrDateTime);else return this.goto(this.parseNumberOrDateTimeOnly)}parseNumberOrDateTimeOnly(){if(this.char===c)return this.call(this.parseNoUnder,this.parseNumberInteger);else if(D(this.char)){if(this.consume(),this.state.buf.length>4)this.next(this.parseNumberInteger)}else if(this.char===f$||this.char===z$)return this.consume(),this.next(this.parseNumberExponentSign);else if(this.char===g)return this.consume(),this.call(this.parseNoUnder,this.parseNumberFloat);else if(this.char===s)return this.goto(this.parseDateTime);else if(this.char===Z$)return this.goto(this.parseOnlyTimeHour);else return this.returnNow(Y$(this.state.buf))}parseDateTimeOnly(){if(this.state.buf.length<4)if(D(this.char))return this.consume();else if(this.char===Z$)return this.goto(this.parseOnlyTimeHour);else throw this.error(new M("Expected digit while parsing year part of a date"));else if(this.char===s)return this.goto(this.parseDateTime);else throw this.error(new M("Expected hyphen (-) while parsing year part of date"))}parseNumberBaseOrDateTime(){if(this.char===c2)return this.consume(),this.call(this.parseNoUnderHexOctBinLiteral,this.parseIntegerBin);else if(this.char===n6)return this.consume(),this.call(this.parseNoUnderHexOctBinLiteral,this.parseIntegerOct);else if(this.char===i6)return this.consume(),this.call(this.parseNoUnderHexOctBinLiteral,this.parseIntegerHex);else if(this.char===g)return this.goto(this.parseNumberInteger);else if(D(this.char))return this.goto(this.parseDateTimeOnly);else return this.returnNow(Y$(this.state.buf))}parseIntegerHex(){if(e0(this.char))this.consume();else if(this.char===c)return this.call(this.parseNoUnderHexOctBinLiteral);else{let J=Y$(this.state.buf);if(J.isNaN())throw this.error(new M("Invalid number"));else return this.returnNow(J)}}parseIntegerOct(){if(e6(this.char))this.consume();else if(this.char===c)return this.call(this.parseNoUnderHexOctBinLiteral);else{let J=Y$(this.state.buf);if(J.isNaN())throw this.error(new M("Invalid number"));else return this.returnNow(J)}}parseIntegerBin(){if(r6(this.char))this.consume();else if(this.char===c)return this.call(this.parseNoUnderHexOctBinLiteral);else{let J=Y$(this.state.buf);if(J.isNaN())throw this.error(new M("Invalid number"));else return this.returnNow(J)}}parseDateTime(){if(this.state.buf.length<4)throw this.error(new M("Years less than 1000 must be zero padded to four characters"));return this.state.result=this.state.buf,this.state.buf="",this.next(this.parseDateMonth)}parseDateMonth(){if(this.char===s){if(this.state.buf.length<2)throw this.error(new M("Months less than 10 must be zero padded to two characters"));return this.state.result+="-"+this.state.buf,this.state.buf="",this.next(this.parseDateDay)}else if(D(this.char))this.consume();else throw this.error(new M("Incomplete datetime"))}parseDateDay(){if(this.char===d6||this.char===x){if(this.state.buf.length<2)throw this.error(new M("Days less than 10 must be zero padded to two characters"));return this.state.result+="-"+this.state.buf,this.state.buf="",this.next(this.parseStartTimeHour)}else if(this.atEndOfWord())return this.returnNow(f2(this.state.result+"-"+this.state.buf));else if(D(this.char))this.consume();else throw this.error(new M("Incomplete datetime"))}parseStartTimeHour(){if(this.atEndOfWord())return this.returnNow(f2(this.state.result));else return this.goto(this.parseTimeHour)}parseTimeHour(){if(this.char===Z$){if(this.state.buf.length<2)throw this.error(new M("Hours less than 10 must be zero padded to two characters"));return this.state.result+="T"+this.state.buf,this.state.buf="",this.next(this.parseTimeMin)}else if(D(this.char))this.consume();else throw this.error(new M("Incomplete datetime"))}parseTimeMin(){if(this.state.buf.length<2&&D(this.char))this.consume();else if(this.state.buf.length===2&&this.char===Z$)return this.state.result+=":"+this.state.buf,this.state.buf="",this.next(this.parseTimeSec);else throw this.error(new M("Incomplete datetime"))}parseTimeSec(){if(D(this.char)){if(this.consume(),this.state.buf.length===2)return this.state.result+=":"+this.state.buf,this.state.buf="",this.next(this.parseTimeZoneOrFraction)}else throw this.error(new M("Incomplete datetime"))}parseOnlyTimeHour(){if(this.char===Z$){if(this.state.buf.length<2)throw this.error(new M("Hours less than 10 must be zero padded to two characters"));return this.state.result=this.state.buf,this.state.buf="",this.next(this.parseOnlyTimeMin)}else throw this.error(new M("Incomplete time"))}parseOnlyTimeMin(){if(this.state.buf.length<2&&D(this.char))this.consume();else if(this.state.buf.length===2&&this.char===Z$)return this.state.result+=":"+this.state.buf,this.state.buf="",this.next(this.parseOnlyTimeSec);else throw this.error(new M("Incomplete time"))}parseOnlyTimeSec(){if(D(this.char)){if(this.consume(),this.state.buf.length===2)return this.next(this.parseOnlyTimeFractionMaybe)}else throw this.error(new M("Incomplete time"))}parseOnlyTimeFractionMaybe(){if(this.state.result+=":"+this.state.buf,this.char===g)this.state.buf="",this.next(this.parseOnlyTimeFraction);else return this.return(R2(this.state.result))}parseOnlyTimeFraction(){if(D(this.char))this.consume();else if(this.atEndOfWord()){if(this.state.buf.length===0)throw this.error(new M("Expected digit in milliseconds"));return this.returnNow(R2(this.state.result+"."+this.state.buf))}else throw this.error(new M("Unexpected character in datetime, expected period (.), minus (-), plus (+) or Z"))}parseTimeZoneOrFraction(){if(this.char===g)this.consume(),this.next(this.parseDateTimeFraction);else if(this.char===s||this.char===X0)this.consume(),this.next(this.parseTimeZoneHour);else if(this.char===z0)return this.consume(),this.return(a0(this.state.result+this.state.buf));else if(this.atEndOfWord())return this.returnNow(_2(this.state.result+this.state.buf));else throw this.error(new M("Unexpected character in datetime, expected period (.), minus (-), plus (+) or Z"))}parseDateTimeFraction(){if(D(this.char))this.consume();else if(this.state.buf.length===1)throw this.error(new M("Expected digit in milliseconds"));else if(this.char===s||this.char===X0)this.consume(),this.next(this.parseTimeZoneHour);else if(this.char===z0)return this.consume(),this.return(a0(this.state.result+this.state.buf));else if(this.atEndOfWord())return this.returnNow(_2(this.state.result+this.state.buf));else throw this.error(new M("Unexpected character in datetime, expected period (.), minus (-), plus (+) or Z"))}parseTimeZoneHour(){if(D(this.char)){if(this.consume(),/\d\d$/.test(this.state.buf))return this.next(this.parseTimeZoneSep)}else throw this.error(new M("Unexpected character in datetime, expected digit"))}parseTimeZoneSep(){if(this.char===Z$)this.consume(),this.next(this.parseTimeZoneMin);else throw this.error(new M("Unexpected character in datetime, expected colon"))}parseTimeZoneMin(){if(D(this.char)){if(this.consume(),/\d\d$/.test(this.state.buf))return this.return(a0(this.state.result+this.state.buf))}else throw this.error(new M("Unexpected character in datetime, expected digit"))}parseBoolean(){if(this.char===Xq)return this.consume(),this.next(this.parseTrue_r);else if(this.char===E$)return this.consume(),this.next(this.parseFalse_a)}parseTrue_r(){if(this.char===m2)return this.consume(),this.next(this.parseTrue_u);else throw this.error(new M("Invalid boolean, expected true or false"))}parseTrue_u(){if(this.char===A2)return this.consume(),this.next(this.parseTrue_e);else throw this.error(new M("Invalid boolean, expected true or false"))}parseTrue_e(){if(this.char===z$)return this.return(!0);else throw this.error(new M("Invalid boolean, expected true or false"))}parseFalse_a(){if(this.char===b$)return this.consume(),this.next(this.parseFalse_l);else throw this.error(new M("Invalid boolean, expected true or false"))}parseFalse_l(){if(this.char===p6)return this.consume(),this.next(this.parseFalse_s);else throw this.error(new M("Invalid boolean, expected true or false"))}parseFalse_s(){if(this.char===s6)return this.consume(),this.next(this.parseFalse_e);else throw this.error(new M("Invalid boolean, expected true or false"))}parseFalse_e(){if(this.char===z$)return this.return(!1);else throw this.error(new M("Invalid boolean, expected true or false"))}parseInlineList(){if(this.char===x||this.char===P||this.char===k||this.char===f)return null;else if(this.char===$.END)throw this.error(new M("Unterminated inline array"));else if(this.char===X$)return this.call(this.parseComment);else if(this.char===R$)return this.return(this.state.resultArr||C2());else return this.callNow(this.parseValue,this.recordInlineListValue)}recordInlineListValue(J){if(this.state.resultArr){let X=this.state.resultArr[l2],Z=g2(J);if(X!==Z)throw this.error(new M(`Inline lists must be a single type, not a mix of ${X} and ${Z}`))}else this.state.resultArr=C2(g2(J));if(Jq(J)||qq(J))this.state.resultArr.push(J.valueOf());else this.state.resultArr.push(J);return this.goto(this.parseInlineListNext)}parseInlineListNext(){if(this.char===x||this.char===P||this.char===k||this.char===f)return null;else if(this.char===X$)return this.call(this.parseComment);else if(this.char===y2)return this.next(this.parseInlineList);else if(this.char===R$)return this.goto(this.parseInlineList);else throw this.error(new M("Invalid character, expected whitespace, comma (,) or close bracket (])"))}parseInlineTable(){if(this.char===x||this.char===P)return null;else if(this.char===$.END||this.char===X$||this.char===f||this.char===k)throw this.error(new M("Unterminated inline array"));else if(this.char===E2)return this.return(this.state.resultTable||h2());else{if(!this.state.resultTable)this.state.resultTable=h2();return this.callNow(this.parseAssign,this.recordInlineTableValue)}}recordInlineTableValue(J){let X=this.state.resultTable,Z=J.key.pop();for(let z of J.key){if(a(X,z)&&(!y$(X[z])||X[z][A$]))throw this.error(new M("Can't redefine existing key"));X=X[z]=X[z]||Q$()}if(a(X,Z))throw this.error(new M("Can't redefine existing key"));if(qq(J.value)||Jq(J.value))X[Z]=J.value.valueOf();else X[Z]=J.value;return this.goto(this.parseInlineTableNext)}parseInlineTableNext(){if(this.char===x||this.char===P)return null;else if(this.char===$.END||this.char===X$||this.char===f||this.char===k)throw this.error(new M("Unterminated inline array"));else if(this.char===y2)return this.next(this.parseInlineTable);else if(this.char===E2)return this.goto(this.parseInlineTable);else throw this.error(new M("Invalid character, expected whitespace, comma (,) or close bracket (])"))}}return q}});var W0=I((dJ,t2)=>{t2.exports=Y8;function Y8($,q){if($.pos==null||$.line==null)return $;let J=$.message;if(J+=` at row ${$.line+1}, col ${$.col+1}, pos ${$.pos}:
29
- `,q&&q.split){let X=q.split(/\n/),Z=String(Math.min(X.length,$.line+3)).length,z=" ";while(z.length<Z)z+=" ";for(let Q=Math.max(0,$.line-1);Q<Math.min(X.length,$.line+2);++Q){let Y=String(Q+1);if(Y.length<Z)Y=" "+Y;if($.line===Q){J+=Y+"> "+X[Q]+`
30
- `,J+=z+" ";for(let B=0;B<$.col;++B)J+=" ";J+=`^
31
- `}else J+=Y+": "+X[Q]+`
27
+ `)}),this}_outputHelpIfRequested($){let q=this._getHelpOption();if(q&&$.find((X)=>q.is(X)))this.outputHelp(),this._exit(0,"commander.helpDisplayed","(outputHelp)")}}function oq($){return $.map((q)=>{if(!q.startsWith("--inspect"))return q;let J,X="127.0.0.1",Z="9229",z;if((z=q.match(/^(--inspect(-brk)?)$/))!==null)J=z[1];else if((z=q.match(/^(--inspect(-brk|-port)?)=([^:]+)$/))!==null)if(J=z[1],/^\d+$/.test(z[3]))Z=z[3];else X=z[3];else if((z=q.match(/^(--inspect(-brk|-port)?)=([^:]+):(\d+)$/))!==null)J=z[1],X=z[3],Z=z[4];if(J&&Z!=="0")return`${J}=${X}:${parseInt(Z)+1}`;return q})}function m0(){if(F.env.NO_COLOR||F.env.FORCE_COLOR==="0"||F.env.FORCE_COLOR==="false")return!1;if(F.env.FORCE_COLOR||F.env.CLICOLOR_FORCE!==void 0)return!0;return}z6.Command=d0;z6.useColor=m0});var q2=I((V6)=>{var{Argument:rq}=i$(),{Command:l0}=aq(),{CommanderError:W6,InvalidArgumentError:eq}=H$(),{Help:Y6}=v0(),{Option:$2}=u0();V6.program=new l0;V6.createCommand=($)=>new l0($);V6.createOption=($,q)=>new $2($,q);V6.createArgument=($,q)=>new rq($,q);V6.Command=l0;V6.Option=$2;V6.Argument=rq;V6.Help=Y6;V6.CommanderError=W6;V6.InvalidArgumentError=eq;V6.InvalidOptionArgumentError=eq});var N2=I((cJ,F2)=>{class J$ extends Error{constructor($,q,J){super("[ParserError] "+$,q,J);if(this.name="ParserError",this.code="ParserError",Error.captureStackTrace)Error.captureStackTrace(this,J$)}}class o0{constructor($){this.parser=$,this.buf="",this.returned=null,this.result=null,this.resultTable=null,this.resultArr=null}}class e${constructor(){this.pos=0,this.col=0,this.line=0,this.obj={},this.ctx=this.obj,this.stack=[],this._buf="",this.char=null,this.ii=0,this.state=new o0(this.parseStart)}parse($){if($.length===0||$.length==null)return;this._buf=String($),this.ii=-1,this.char=-1;let q;while(q===!1||this.nextChar())q=this.runOne();this._buf=null}nextChar(){if(this.char===10)++this.line,this.col=-1;return++this.ii,this.char=this._buf.codePointAt(this.ii),++this.pos,++this.col,this.haveBuffer()}haveBuffer(){return this.ii<this._buf.length}runOne(){return this.state.parser.call(this,this.state.returned)}finish(){this.char=1114112;let $;do $=this.state.parser,this.runOne();while(this.state.parser!==$);return this.ctx=null,this.state=null,this._buf=null,this.obj}next($){if(typeof $!=="function")throw new J$("Tried to set state to non-existent state: "+JSON.stringify($));this.state.parser=$}goto($){return this.next($),this.runOne()}call($,q){if(q)this.next(q);this.stack.push(this.state),this.state=new o0($)}callNow($,q){return this.call($,q),this.runOne()}return($){if(this.stack.length===0)throw this.error(new J$("Stack underflow"));if($===void 0)$=this.state.buf;this.state=this.stack.pop(),this.state.returned=$}returnNow($){return this.return($),this.runOne()}consume(){if(this.char===1114112)throw this.error(new J$("Unexpected end-of-buffer"));this.state.buf+=this._buf[this.ii]}error($){return $.line=this.line,$.col=this.col,$.pos=this.pos,$}parseStart(){throw new J$("Must declare a parseStart method")}}e$.END=1114112;e$.Error=J$;F2.exports=e$});var P2=I((mJ,I2)=>{I2.exports=($)=>{let q=new Date($);if(isNaN(q))throw TypeError("Invalid Datetime");else return q}});var $0=I((dJ,S2)=>{S2.exports=($,q)=>{q=String(q);while(q.length<$)q="0"+q;return q}});var w2=I((lJ,D2)=>{var P$=$0();class L2 extends Date{constructor($){super($+"Z");this.isFloating=!0}toISOString(){let $=`${this.getUTCFullYear()}-${P$(2,this.getUTCMonth()+1)}-${P$(2,this.getUTCDate())}`,q=`${P$(2,this.getUTCHours())}:${P$(2,this.getUTCMinutes())}:${P$(2,this.getUTCSeconds())}.${P$(3,this.getUTCMilliseconds())}`;return`${$}T${q}`}}D2.exports=($)=>{let q=new L2($);if(isNaN(q))throw TypeError("Invalid Datetime");else return q}});var O2=I((pJ,j2)=>{var x2=$0(),m6=global.Date;class H2 extends m6{constructor($){super($);this.isDate=!0}toISOString(){return`${this.getUTCFullYear()}-${x2(2,this.getUTCMonth()+1)}-${x2(2,this.getUTCDate())}`}}j2.exports=($)=>{let q=new H2($);if(isNaN(q))throw TypeError("Invalid Datetime");else return q}});var f2=I((nJ,_2)=>{var q0=$0();class T2 extends Date{constructor($){super(`0000-01-01T${$}Z`);this.isTime=!0}toISOString(){return`${q0(2,this.getUTCHours())}:${q0(2,this.getUTCMinutes())}:${q0(2,this.getUTCSeconds())}.${q0(3,this.getUTCMilliseconds())}`}}_2.exports=($)=>{let q=new T2($);if(isNaN(q))throw TypeError("Invalid Datetime");else return q}});var W0=I((o2,C$)=>{C$.exports=t2(N2());C$.exports.makeParserClass=t2;class M extends Error{constructor($){super($);if(this.name="TomlError",Error.captureStackTrace)Error.captureStackTrace(this,M);this.fromTOML=!0,this.wrapped=null}}M.wrap=($)=>{let q=new M($.message);return q.code=$.code,q.wrapped=$,q};C$.exports.TomlError=M;var a0=P2(),R2=w2(),y2=O2(),k2=f2(),P=9,f=10,k=13,J0=31,x=32,m=34,X$=35,n=39,X0=43,A2=44,s=45,g=46,r=48,d6=49,l6=55,Q0=57,Z$=58,p6=61,zq=65,R$=69,n6=70,s6=84,i6=85,z0=90,c=95,h$=97,d2=98,z$=101,b$=102,E2=105,t6=108,A$=110,o6=111,l2=114,a6=115,Xq=116,b2=117,r6=120,p2=122,e6=123,h2=125,r0=91,Zq=92,y$=93,Z0=127,$8=55296,q8=57343,C2={[d2]:"\b",[Xq]:"\t",[A$]:`
28
+ `,[b$]:"\f",[l2]:"\r",[m]:'"',[Zq]:"\\"};function D($){return $>=r&&$<=Q0}function e0($){return $>=zq&&$<=n6||$>=h$&&$<=b$||$>=r&&$<=Q0}function J8($){return $===d6||$===r}function X8($){return $>=r&&$<=l6}function Z8($){return $>=zq&&$<=z0||$>=h$&&$<=p2||$>=r&&$<=Q0||$===n||$===m||$===c||$===s}function z8($){return $>=zq&&$<=z0||$>=h$&&$<=p2||$>=r&&$<=Q0||$===c||$===s}var R=Symbol("type"),E$=Symbol("declared"),Q8=Object.prototype.hasOwnProperty,G8=Object.defineProperty,W8={configurable:!0,enumerable:!0,writable:!0,value:void 0};function a($,q){if(Q8.call($,q))return!0;if(q==="__proto__")G8($,"__proto__",W8);return!1}var Qq=Symbol("inline-table");function v2(){return Object.defineProperties({},{[R]:{value:Qq}})}function Y8($){if($===null||typeof $!=="object")return!1;return $[R]===Qq}var Gq=Symbol("table");function Q$(){return Object.defineProperties({},{[R]:{value:Gq},[E$]:{value:!1,writable:!0}})}function k$($){if($===null||typeof $!=="object")return!1;return $[R]===Gq}var n2=Symbol("content-type"),Wq=Symbol("inline-list");function u2($){return Object.defineProperties([],{[R]:{value:Wq},[n2]:{value:$}})}function g2($){if($===null||typeof $!=="object")return!1;return $[R]===Wq}var Yq=Symbol("list");function V8(){return Object.defineProperties([],{[R]:{value:Yq}})}function $q($){if($===null||typeof $!=="object")return!1;return $[R]===Yq}var s2;try{let utilInspect=eval("require('util').inspect");s2=utilInspect.custom}catch($){}var Vq=s2||"inspect";class i2{constructor($){try{this.value=global.BigInt.asIntN(64,$)}catch(q){this.value=null}Object.defineProperty(this,R,{value:G0})}isNaN(){return this.value===null}toString(){return String(this.value)}[Vq](){return`[BigInt: ${this.toString()}]}`}valueOf(){return this.value}}var G0=Symbol("integer");function G$($){let q=Number($);if(Object.is(q,-0))q=0;if(global.BigInt&&!Number.isSafeInteger(q))return new i2($);else return Object.defineProperties(new Number(q),{isNaN:{value:function(){return isNaN(this)}},[R]:{value:G0},[Vq]:{value:()=>`[Integer: ${$}]`}})}function qq($){if($===null||typeof $!=="object")return!1;return $[R]===G0}var Bq=Symbol("float");function c2($){return Object.defineProperties(new Number($),{[R]:{value:Bq},[Vq]:{value:()=>`[Float: ${$}]`}})}function Jq($){if($===null||typeof $!=="object")return!1;return $[R]===Bq}function m2($){let q=typeof $;if(q==="object"){if($===null)return"null";if($ instanceof Date)return"datetime";if(R in $)switch($[R]){case Qq:return"inline-table";case Wq:return"inline-list";case Gq:return"table";case Yq:return"list";case Bq:return"float";case G0:return"integer"}}return q}function t2($){class q extends ${constructor(){super();this.ctx=this.obj=Q$()}atEndOfWord(){return this.char===X$||this.char===P||this.char===x||this.atEndOfLine()}atEndOfLine(){return this.char===$.END||this.char===f||this.char===k}parseStart(){if(this.char===$.END)return null;else if(this.char===r0)return this.call(this.parseTableOrList);else if(this.char===X$)return this.call(this.parseComment);else if(this.char===f||this.char===x||this.char===P||this.char===k)return null;else if(Z8(this.char))return this.callNow(this.parseAssignStatement);else throw this.error(new M(`Unknown character "${this.char}"`))}parseWhitespaceToEOL(){if(this.char===x||this.char===P||this.char===k)return null;else if(this.char===X$)return this.goto(this.parseComment);else if(this.char===$.END||this.char===f)return this.return();else throw this.error(new M("Unexpected character, expected only whitespace or comments till end of line"))}parseAssignStatement(){return this.callNow(this.parseAssign,this.recordAssignStatement)}recordAssignStatement(J){let X=this.ctx,Z=J.key.pop();for(let z of J.key){if(a(X,z)&&(!k$(X[z])||X[z][E$]))throw this.error(new M("Can't redefine existing key"));X=X[z]=X[z]||Q$()}if(a(X,Z))throw this.error(new M("Can't redefine existing key"));if(qq(J.value)||Jq(J.value))X[Z]=J.value.valueOf();else X[Z]=J.value;return this.goto(this.parseWhitespaceToEOL)}parseAssign(){return this.callNow(this.parseKeyword,this.recordAssignKeyword)}recordAssignKeyword(J){if(this.state.resultTable)this.state.resultTable.push(J);else this.state.resultTable=[J];return this.goto(this.parseAssignKeywordPreDot)}parseAssignKeywordPreDot(){if(this.char===g)return this.next(this.parseAssignKeywordPostDot);else if(this.char!==x&&this.char!==P)return this.goto(this.parseAssignEqual)}parseAssignKeywordPostDot(){if(this.char!==x&&this.char!==P)return this.callNow(this.parseKeyword,this.recordAssignKeyword)}parseAssignEqual(){if(this.char===p6)return this.next(this.parseAssignPreValue);else throw this.error(new M('Invalid character, expected "="'))}parseAssignPreValue(){if(this.char===x||this.char===P)return null;else return this.callNow(this.parseValue,this.recordAssignValue)}recordAssignValue(J){return this.returnNow({key:this.state.resultTable,value:J})}parseComment(){do if(this.char===$.END||this.char===f)return this.return();while(this.nextChar())}parseTableOrList(){if(this.char===r0)this.next(this.parseList);else return this.goto(this.parseTable)}parseTable(){return this.ctx=this.obj,this.goto(this.parseTableNext)}parseTableNext(){if(this.char===x||this.char===P)return null;else return this.callNow(this.parseKeyword,this.parseTableMore)}parseTableMore(J){if(this.char===x||this.char===P)return null;else if(this.char===y$){if(a(this.ctx,J)&&(!k$(this.ctx[J])||this.ctx[J][E$]))throw this.error(new M("Can't redefine existing key"));else this.ctx=this.ctx[J]=this.ctx[J]||Q$(),this.ctx[E$]=!0;return this.next(this.parseWhitespaceToEOL)}else if(this.char===g){if(!a(this.ctx,J))this.ctx=this.ctx[J]=Q$();else if(k$(this.ctx[J]))this.ctx=this.ctx[J];else if($q(this.ctx[J]))this.ctx=this.ctx[J][this.ctx[J].length-1];else throw this.error(new M("Can't redefine existing key"));return this.next(this.parseTableNext)}else throw this.error(new M("Unexpected character, expected whitespace, . or ]"))}parseList(){return this.ctx=this.obj,this.goto(this.parseListNext)}parseListNext(){if(this.char===x||this.char===P)return null;else return this.callNow(this.parseKeyword,this.parseListMore)}parseListMore(J){if(this.char===x||this.char===P)return null;else if(this.char===y$){if(!a(this.ctx,J))this.ctx[J]=V8();if(g2(this.ctx[J]))throw this.error(new M("Can't extend an inline array"));else if($q(this.ctx[J])){let X=Q$();this.ctx[J].push(X),this.ctx=X}else throw this.error(new M("Can't redefine an existing key"));return this.next(this.parseListEnd)}else if(this.char===g){if(!a(this.ctx,J))this.ctx=this.ctx[J]=Q$();else if(g2(this.ctx[J]))throw this.error(new M("Can't extend an inline array"));else if(Y8(this.ctx[J]))throw this.error(new M("Can't extend an inline table"));else if($q(this.ctx[J]))this.ctx=this.ctx[J][this.ctx[J].length-1];else if(k$(this.ctx[J]))this.ctx=this.ctx[J];else throw this.error(new M("Can't redefine an existing key"));return this.next(this.parseListNext)}else throw this.error(new M("Unexpected character, expected whitespace, . or ]"))}parseListEnd(J){if(this.char===y$)return this.next(this.parseWhitespaceToEOL);else throw this.error(new M("Unexpected character, expected whitespace, . or ]"))}parseValue(){if(this.char===$.END)throw this.error(new M("Key without value"));else if(this.char===m)return this.next(this.parseDoubleString);if(this.char===n)return this.next(this.parseSingleString);else if(this.char===s||this.char===X0)return this.goto(this.parseNumberSign);else if(this.char===E2)return this.next(this.parseInf);else if(this.char===A$)return this.next(this.parseNan);else if(D(this.char))return this.goto(this.parseNumberOrDateTime);else if(this.char===Xq||this.char===b$)return this.goto(this.parseBoolean);else if(this.char===r0)return this.call(this.parseInlineList,this.recordValue);else if(this.char===e6)return this.call(this.parseInlineTable,this.recordValue);else throw this.error(new M("Unexpected character, expecting string, number, datetime, boolean, inline array or inline table"))}recordValue(J){return this.returnNow(J)}parseInf(){if(this.char===A$)return this.next(this.parseInf2);else throw this.error(new M('Unexpected character, expected "inf", "+inf" or "-inf"'))}parseInf2(){if(this.char===b$)if(this.state.buf==="-")return this.return(-1/0);else return this.return(1/0);else throw this.error(new M('Unexpected character, expected "inf", "+inf" or "-inf"'))}parseNan(){if(this.char===h$)return this.next(this.parseNan2);else throw this.error(new M('Unexpected character, expected "nan"'))}parseNan2(){if(this.char===A$)return this.return(NaN);else throw this.error(new M('Unexpected character, expected "nan"'))}parseKeyword(){if(this.char===m)return this.next(this.parseBasicString);else if(this.char===n)return this.next(this.parseLiteralString);else return this.goto(this.parseBareKey)}parseBareKey(){do if(this.char===$.END)throw this.error(new M("Key ended without value"));else if(z8(this.char))this.consume();else if(this.state.buf.length===0)throw this.error(new M("Empty bare keys are not allowed"));else return this.returnNow();while(this.nextChar())}parseSingleString(){if(this.char===n)return this.next(this.parseLiteralMultiStringMaybe);else return this.goto(this.parseLiteralString)}parseLiteralString(){do if(this.char===n)return this.return();else if(this.atEndOfLine())throw this.error(new M("Unterminated string"));else if(this.char===Z0||this.char<=J0&&this.char!==P)throw this.errorControlCharInString();else this.consume();while(this.nextChar())}parseLiteralMultiStringMaybe(){if(this.char===n)return this.next(this.parseLiteralMultiString);else return this.returnNow()}parseLiteralMultiString(){if(this.char===k)return null;else if(this.char===f)return this.next(this.parseLiteralMultiStringContent);else return this.goto(this.parseLiteralMultiStringContent)}parseLiteralMultiStringContent(){do if(this.char===n)return this.next(this.parseLiteralMultiEnd);else if(this.char===$.END)throw this.error(new M("Unterminated multi-line string"));else if(this.char===Z0||this.char<=J0&&this.char!==P&&this.char!==f&&this.char!==k)throw this.errorControlCharInString();else this.consume();while(this.nextChar())}parseLiteralMultiEnd(){if(this.char===n)return this.next(this.parseLiteralMultiEnd2);else return this.state.buf+="'",this.goto(this.parseLiteralMultiStringContent)}parseLiteralMultiEnd2(){if(this.char===n)return this.return();else return this.state.buf+="''",this.goto(this.parseLiteralMultiStringContent)}parseDoubleString(){if(this.char===m)return this.next(this.parseMultiStringMaybe);else return this.goto(this.parseBasicString)}parseBasicString(){do if(this.char===Zq)return this.call(this.parseEscape,this.recordEscapeReplacement);else if(this.char===m)return this.return();else if(this.atEndOfLine())throw this.error(new M("Unterminated string"));else if(this.char===Z0||this.char<=J0&&this.char!==P)throw this.errorControlCharInString();else this.consume();while(this.nextChar())}recordEscapeReplacement(J){return this.state.buf+=J,this.goto(this.parseBasicString)}parseMultiStringMaybe(){if(this.char===m)return this.next(this.parseMultiString);else return this.returnNow()}parseMultiString(){if(this.char===k)return null;else if(this.char===f)return this.next(this.parseMultiStringContent);else return this.goto(this.parseMultiStringContent)}parseMultiStringContent(){do if(this.char===Zq)return this.call(this.parseMultiEscape,this.recordMultiEscapeReplacement);else if(this.char===m)return this.next(this.parseMultiEnd);else if(this.char===$.END)throw this.error(new M("Unterminated multi-line string"));else if(this.char===Z0||this.char<=J0&&this.char!==P&&this.char!==f&&this.char!==k)throw this.errorControlCharInString();else this.consume();while(this.nextChar())}errorControlCharInString(){let J="\\u00";if(this.char<16)J+="0";return J+=this.char.toString(16),this.error(new M(`Control characters (codes < 0x1f and 0x7f) are not allowed in strings, use ${J} instead`))}recordMultiEscapeReplacement(J){return this.state.buf+=J,this.goto(this.parseMultiStringContent)}parseMultiEnd(){if(this.char===m)return this.next(this.parseMultiEnd2);else return this.state.buf+='"',this.goto(this.parseMultiStringContent)}parseMultiEnd2(){if(this.char===m)return this.return();else return this.state.buf+='""',this.goto(this.parseMultiStringContent)}parseMultiEscape(){if(this.char===k||this.char===f)return this.next(this.parseMultiTrim);else if(this.char===x||this.char===P)return this.next(this.parsePreMultiTrim);else return this.goto(this.parseEscape)}parsePreMultiTrim(){if(this.char===x||this.char===P)return null;else if(this.char===k||this.char===f)return this.next(this.parseMultiTrim);else throw this.error(new M("Can't escape whitespace"))}parseMultiTrim(){if(this.char===f||this.char===x||this.char===P||this.char===k)return null;else return this.returnNow()}parseEscape(){if(this.char in C2)return this.return(C2[this.char]);else if(this.char===b2)return this.call(this.parseSmallUnicode,this.parseUnicodeReturn);else if(this.char===i6)return this.call(this.parseLargeUnicode,this.parseUnicodeReturn);else throw this.error(new M("Unknown escape character: "+this.char))}parseUnicodeReturn(J){try{let X=parseInt(J,16);if(X>=$8&&X<=q8)throw this.error(new M("Invalid unicode, character in range 0xD800 - 0xDFFF is reserved"));return this.returnNow(String.fromCodePoint(X))}catch(X){throw this.error(M.wrap(X))}}parseSmallUnicode(){if(!e0(this.char))throw this.error(new M("Invalid character in unicode sequence, expected hex"));else if(this.consume(),this.state.buf.length>=4)return this.return()}parseLargeUnicode(){if(!e0(this.char))throw this.error(new M("Invalid character in unicode sequence, expected hex"));else if(this.consume(),this.state.buf.length>=8)return this.return()}parseNumberSign(){return this.consume(),this.next(this.parseMaybeSignedInfOrNan)}parseMaybeSignedInfOrNan(){if(this.char===E2)return this.next(this.parseInf);else if(this.char===A$)return this.next(this.parseNan);else return this.callNow(this.parseNoUnder,this.parseNumberIntegerStart)}parseNumberIntegerStart(){if(this.char===r)return this.consume(),this.next(this.parseNumberIntegerExponentOrDecimal);else return this.goto(this.parseNumberInteger)}parseNumberIntegerExponentOrDecimal(){if(this.char===g)return this.consume(),this.call(this.parseNoUnder,this.parseNumberFloat);else if(this.char===R$||this.char===z$)return this.consume(),this.next(this.parseNumberExponentSign);else return this.returnNow(G$(this.state.buf))}parseNumberInteger(){if(D(this.char))this.consume();else if(this.char===c)return this.call(this.parseNoUnder);else if(this.char===R$||this.char===z$)return this.consume(),this.next(this.parseNumberExponentSign);else if(this.char===g)return this.consume(),this.call(this.parseNoUnder,this.parseNumberFloat);else{let J=G$(this.state.buf);if(J.isNaN())throw this.error(new M("Invalid number"));else return this.returnNow(J)}}parseNoUnder(){if(this.char===c||this.char===g||this.char===R$||this.char===z$)throw this.error(new M("Unexpected character, expected digit"));else if(this.atEndOfWord())throw this.error(new M("Incomplete number"));return this.returnNow()}parseNoUnderHexOctBinLiteral(){if(this.char===c||this.char===g)throw this.error(new M("Unexpected character, expected digit"));else if(this.atEndOfWord())throw this.error(new M("Incomplete number"));return this.returnNow()}parseNumberFloat(){if(this.char===c)return this.call(this.parseNoUnder,this.parseNumberFloat);else if(D(this.char))this.consume();else if(this.char===R$||this.char===z$)return this.consume(),this.next(this.parseNumberExponentSign);else return this.returnNow(c2(this.state.buf))}parseNumberExponentSign(){if(D(this.char))return this.goto(this.parseNumberExponent);else if(this.char===s||this.char===X0)this.consume(),this.call(this.parseNoUnder,this.parseNumberExponent);else throw this.error(new M("Unexpected character, expected -, + or digit"))}parseNumberExponent(){if(D(this.char))this.consume();else if(this.char===c)return this.call(this.parseNoUnder);else return this.returnNow(c2(this.state.buf))}parseNumberOrDateTime(){if(this.char===r)return this.consume(),this.next(this.parseNumberBaseOrDateTime);else return this.goto(this.parseNumberOrDateTimeOnly)}parseNumberOrDateTimeOnly(){if(this.char===c)return this.call(this.parseNoUnder,this.parseNumberInteger);else if(D(this.char)){if(this.consume(),this.state.buf.length>4)this.next(this.parseNumberInteger)}else if(this.char===R$||this.char===z$)return this.consume(),this.next(this.parseNumberExponentSign);else if(this.char===g)return this.consume(),this.call(this.parseNoUnder,this.parseNumberFloat);else if(this.char===s)return this.goto(this.parseDateTime);else if(this.char===Z$)return this.goto(this.parseOnlyTimeHour);else return this.returnNow(G$(this.state.buf))}parseDateTimeOnly(){if(this.state.buf.length<4)if(D(this.char))return this.consume();else if(this.char===Z$)return this.goto(this.parseOnlyTimeHour);else throw this.error(new M("Expected digit while parsing year part of a date"));else if(this.char===s)return this.goto(this.parseDateTime);else throw this.error(new M("Expected hyphen (-) while parsing year part of date"))}parseNumberBaseOrDateTime(){if(this.char===d2)return this.consume(),this.call(this.parseNoUnderHexOctBinLiteral,this.parseIntegerBin);else if(this.char===o6)return this.consume(),this.call(this.parseNoUnderHexOctBinLiteral,this.parseIntegerOct);else if(this.char===r6)return this.consume(),this.call(this.parseNoUnderHexOctBinLiteral,this.parseIntegerHex);else if(this.char===g)return this.goto(this.parseNumberInteger);else if(D(this.char))return this.goto(this.parseDateTimeOnly);else return this.returnNow(G$(this.state.buf))}parseIntegerHex(){if(e0(this.char))this.consume();else if(this.char===c)return this.call(this.parseNoUnderHexOctBinLiteral);else{let J=G$(this.state.buf);if(J.isNaN())throw this.error(new M("Invalid number"));else return this.returnNow(J)}}parseIntegerOct(){if(X8(this.char))this.consume();else if(this.char===c)return this.call(this.parseNoUnderHexOctBinLiteral);else{let J=G$(this.state.buf);if(J.isNaN())throw this.error(new M("Invalid number"));else return this.returnNow(J)}}parseIntegerBin(){if(J8(this.char))this.consume();else if(this.char===c)return this.call(this.parseNoUnderHexOctBinLiteral);else{let J=G$(this.state.buf);if(J.isNaN())throw this.error(new M("Invalid number"));else return this.returnNow(J)}}parseDateTime(){if(this.state.buf.length<4)throw this.error(new M("Years less than 1000 must be zero padded to four characters"));return this.state.result=this.state.buf,this.state.buf="",this.next(this.parseDateMonth)}parseDateMonth(){if(this.char===s){if(this.state.buf.length<2)throw this.error(new M("Months less than 10 must be zero padded to two characters"));return this.state.result+="-"+this.state.buf,this.state.buf="",this.next(this.parseDateDay)}else if(D(this.char))this.consume();else throw this.error(new M("Incomplete datetime"))}parseDateDay(){if(this.char===s6||this.char===x){if(this.state.buf.length<2)throw this.error(new M("Days less than 10 must be zero padded to two characters"));return this.state.result+="-"+this.state.buf,this.state.buf="",this.next(this.parseStartTimeHour)}else if(this.atEndOfWord())return this.returnNow(y2(this.state.result+"-"+this.state.buf));else if(D(this.char))this.consume();else throw this.error(new M("Incomplete datetime"))}parseStartTimeHour(){if(this.atEndOfWord())return this.returnNow(y2(this.state.result));else return this.goto(this.parseTimeHour)}parseTimeHour(){if(this.char===Z$){if(this.state.buf.length<2)throw this.error(new M("Hours less than 10 must be zero padded to two characters"));return this.state.result+="T"+this.state.buf,this.state.buf="",this.next(this.parseTimeMin)}else if(D(this.char))this.consume();else throw this.error(new M("Incomplete datetime"))}parseTimeMin(){if(this.state.buf.length<2&&D(this.char))this.consume();else if(this.state.buf.length===2&&this.char===Z$)return this.state.result+=":"+this.state.buf,this.state.buf="",this.next(this.parseTimeSec);else throw this.error(new M("Incomplete datetime"))}parseTimeSec(){if(D(this.char)){if(this.consume(),this.state.buf.length===2)return this.state.result+=":"+this.state.buf,this.state.buf="",this.next(this.parseTimeZoneOrFraction)}else throw this.error(new M("Incomplete datetime"))}parseOnlyTimeHour(){if(this.char===Z$){if(this.state.buf.length<2)throw this.error(new M("Hours less than 10 must be zero padded to two characters"));return this.state.result=this.state.buf,this.state.buf="",this.next(this.parseOnlyTimeMin)}else throw this.error(new M("Incomplete time"))}parseOnlyTimeMin(){if(this.state.buf.length<2&&D(this.char))this.consume();else if(this.state.buf.length===2&&this.char===Z$)return this.state.result+=":"+this.state.buf,this.state.buf="",this.next(this.parseOnlyTimeSec);else throw this.error(new M("Incomplete time"))}parseOnlyTimeSec(){if(D(this.char)){if(this.consume(),this.state.buf.length===2)return this.next(this.parseOnlyTimeFractionMaybe)}else throw this.error(new M("Incomplete time"))}parseOnlyTimeFractionMaybe(){if(this.state.result+=":"+this.state.buf,this.char===g)this.state.buf="",this.next(this.parseOnlyTimeFraction);else return this.return(k2(this.state.result))}parseOnlyTimeFraction(){if(D(this.char))this.consume();else if(this.atEndOfWord()){if(this.state.buf.length===0)throw this.error(new M("Expected digit in milliseconds"));return this.returnNow(k2(this.state.result+"."+this.state.buf))}else throw this.error(new M("Unexpected character in datetime, expected period (.), minus (-), plus (+) or Z"))}parseTimeZoneOrFraction(){if(this.char===g)this.consume(),this.next(this.parseDateTimeFraction);else if(this.char===s||this.char===X0)this.consume(),this.next(this.parseTimeZoneHour);else if(this.char===z0)return this.consume(),this.return(a0(this.state.result+this.state.buf));else if(this.atEndOfWord())return this.returnNow(R2(this.state.result+this.state.buf));else throw this.error(new M("Unexpected character in datetime, expected period (.), minus (-), plus (+) or Z"))}parseDateTimeFraction(){if(D(this.char))this.consume();else if(this.state.buf.length===1)throw this.error(new M("Expected digit in milliseconds"));else if(this.char===s||this.char===X0)this.consume(),this.next(this.parseTimeZoneHour);else if(this.char===z0)return this.consume(),this.return(a0(this.state.result+this.state.buf));else if(this.atEndOfWord())return this.returnNow(R2(this.state.result+this.state.buf));else throw this.error(new M("Unexpected character in datetime, expected period (.), minus (-), plus (+) or Z"))}parseTimeZoneHour(){if(D(this.char)){if(this.consume(),/\d\d$/.test(this.state.buf))return this.next(this.parseTimeZoneSep)}else throw this.error(new M("Unexpected character in datetime, expected digit"))}parseTimeZoneSep(){if(this.char===Z$)this.consume(),this.next(this.parseTimeZoneMin);else throw this.error(new M("Unexpected character in datetime, expected colon"))}parseTimeZoneMin(){if(D(this.char)){if(this.consume(),/\d\d$/.test(this.state.buf))return this.return(a0(this.state.result+this.state.buf))}else throw this.error(new M("Unexpected character in datetime, expected digit"))}parseBoolean(){if(this.char===Xq)return this.consume(),this.next(this.parseTrue_r);else if(this.char===b$)return this.consume(),this.next(this.parseFalse_a)}parseTrue_r(){if(this.char===l2)return this.consume(),this.next(this.parseTrue_u);else throw this.error(new M("Invalid boolean, expected true or false"))}parseTrue_u(){if(this.char===b2)return this.consume(),this.next(this.parseTrue_e);else throw this.error(new M("Invalid boolean, expected true or false"))}parseTrue_e(){if(this.char===z$)return this.return(!0);else throw this.error(new M("Invalid boolean, expected true or false"))}parseFalse_a(){if(this.char===h$)return this.consume(),this.next(this.parseFalse_l);else throw this.error(new M("Invalid boolean, expected true or false"))}parseFalse_l(){if(this.char===t6)return this.consume(),this.next(this.parseFalse_s);else throw this.error(new M("Invalid boolean, expected true or false"))}parseFalse_s(){if(this.char===a6)return this.consume(),this.next(this.parseFalse_e);else throw this.error(new M("Invalid boolean, expected true or false"))}parseFalse_e(){if(this.char===z$)return this.return(!1);else throw this.error(new M("Invalid boolean, expected true or false"))}parseInlineList(){if(this.char===x||this.char===P||this.char===k||this.char===f)return null;else if(this.char===$.END)throw this.error(new M("Unterminated inline array"));else if(this.char===X$)return this.call(this.parseComment);else if(this.char===y$)return this.return(this.state.resultArr||u2());else return this.callNow(this.parseValue,this.recordInlineListValue)}recordInlineListValue(J){if(this.state.resultArr){let X=this.state.resultArr[n2],Z=m2(J);if(X!==Z)throw this.error(new M(`Inline lists must be a single type, not a mix of ${X} and ${Z}`))}else this.state.resultArr=u2(m2(J));if(Jq(J)||qq(J))this.state.resultArr.push(J.valueOf());else this.state.resultArr.push(J);return this.goto(this.parseInlineListNext)}parseInlineListNext(){if(this.char===x||this.char===P||this.char===k||this.char===f)return null;else if(this.char===X$)return this.call(this.parseComment);else if(this.char===A2)return this.next(this.parseInlineList);else if(this.char===y$)return this.goto(this.parseInlineList);else throw this.error(new M("Invalid character, expected whitespace, comma (,) or close bracket (])"))}parseInlineTable(){if(this.char===x||this.char===P)return null;else if(this.char===$.END||this.char===X$||this.char===f||this.char===k)throw this.error(new M("Unterminated inline array"));else if(this.char===h2)return this.return(this.state.resultTable||v2());else{if(!this.state.resultTable)this.state.resultTable=v2();return this.callNow(this.parseAssign,this.recordInlineTableValue)}}recordInlineTableValue(J){let X=this.state.resultTable,Z=J.key.pop();for(let z of J.key){if(a(X,z)&&(!k$(X[z])||X[z][E$]))throw this.error(new M("Can't redefine existing key"));X=X[z]=X[z]||Q$()}if(a(X,Z))throw this.error(new M("Can't redefine existing key"));if(qq(J.value)||Jq(J.value))X[Z]=J.value.valueOf();else X[Z]=J.value;return this.goto(this.parseInlineTableNext)}parseInlineTableNext(){if(this.char===x||this.char===P)return null;else if(this.char===$.END||this.char===X$||this.char===f||this.char===k)throw this.error(new M("Unterminated inline array"));else if(this.char===A2)return this.next(this.parseInlineTable);else if(this.char===h2)return this.goto(this.parseInlineTable);else throw this.error(new M("Invalid character, expected whitespace, comma (,) or close bracket (])"))}}return q}});var Y0=I((sJ,a2)=>{a2.exports=B8;function B8($,q){if($.pos==null||$.line==null)return $;let J=$.message;if(J+=` at row ${$.line+1}, col ${$.col+1}, pos ${$.pos}:
29
+ `,q&&q.split){let X=q.split(/\n/),Z=String(Math.min(X.length,$.line+3)).length,z=" ";while(z.length<Z)z+=" ";for(let Q=Math.max(0,$.line-1);Q<Math.min(X.length,$.line+2);++Q){let G=String(Q+1);if(G.length<Z)G=" "+G;if($.line===Q){J+=G+"> "+X[Q]+`
30
+ `,J+=z+" ";for(let V=0;V<$.col;++V)J+=" ";J+=`^
31
+ `}else J+=G+": "+X[Q]+`
32
32
  `}}return $.message=J+`
33
- `,$}});var a2=I((lJ,o2)=>{o2.exports=B8;var G8=G0(),W8=W0();function B8($){if(global.Buffer&&global.Buffer.isBuffer($))$=$.toString("utf8");let q=new G8;try{return q.parse($),q.finish()}catch(J){throw W8(J,$)}}});var $1=I((pJ,e2)=>{e2.exports=M8;var V8=G0(),r2=W0();function M8($,q){if(!q)q={};let J=0,X=q.blocksize||40960,Z=new V8;return new Promise((Q,Y)=>{setImmediate(z,J,X,Q,Y)});function z(Q,Y,B,W){if(Q>=$.length)try{return B(Z.finish())}catch(G){return W(r2(G,$))}try{Z.parse($.slice(Q,Q+Y)),setImmediate(z,Q+Y,Y,B,W)}catch(G){W(r2(G,$))}}}});var X1=I((nJ,J1)=>{J1.exports=K8;var U8=V$("stream"),q1=G0();function K8($){if($)return F8($);else return N8($)}function F8($){let q=new q1;return $.setEncoding("utf8"),new Promise((J,X)=>{let Z,z=!1,Q=!1;function Y(){if(z=!0,Z)return;try{J(q.finish())}catch(G){X(G)}}function B(G){Q=!0,X(G)}$.once("end",Y),$.once("error",B),W();function W(){Z=!0;let G;while((G=$.read())!==null)try{q.parse(G)}catch(V){return B(V)}if(Z=!1,z)return Y();if(Q)return;$.once("readable",W)}})}function N8(){let $=new q1;return new U8.Transform({objectMode:!0,transform(q,J,X){try{$.parse(q.toString(J))}catch(Z){this.emit("error",Z)}X()},flush(q){try{this.push($.finish())}catch(J){this.emit("error",J)}q()}})}});var Z1=I((sJ,C$)=>{C$.exports=a2();C$.exports.async=$1();C$.exports.stream=X1();C$.exports.prettyError=W0()});var M1=I((iJ,Kq)=>{Kq.exports=I8;Kq.exports.value=Uq;function I8($){if($===null)throw G$("null");if($===void 0)throw G$("undefined");if(typeof $!=="object")throw G$(typeof $);if(typeof $.toJSON==="function")$=$.toJSON();if($==null)return null;let q=A($);if(q!=="table")throw G$(q);return Mq("","",$)}function G$($){return Error("Can only stringify objects, not "+$)}function P8(){return Error("Array values can't have mixed types")}function z1($){return Object.keys($).filter((q)=>Q1($[q]))}function S8($){return Object.keys($).filter((q)=>!Q1($[q]))}function B0($){let q=Array.isArray($)?[]:Object.prototype.hasOwnProperty.call($,"__proto__")?{["__proto__"]:void 0}:{};for(let J of Object.keys($))if($[J]&&typeof $[J].toJSON==="function"&&!("toISOString"in $[J]))q[J]=$[J].toJSON();else q[J]=$[J];return q}function Mq($,q,J){J=B0(J);var X,Z;X=z1(J),Z=S8(J);var z=[],Q=q||"";if(X.forEach((B)=>{var W=A(J[B]);if(W!=="undefined"&&W!=="null")z.push(Q+V0(B)+" = "+W1(J[B],!0))}),z.length>0)z.push("");var Y=$&&X.length>0?q+" ":"";return Z.forEach((B)=>{z.push(R8($,Y,B,J[B]))}),z.join(`
34
- `)}function Q1($){switch(A($)){case"undefined":case"null":case"integer":case"nan":case"float":case"boolean":case"string":case"datetime":return!0;case"array":return $.length===0||A($[0])!=="table";case"table":return Object.keys($).length===0;default:return!1}}function A($){if($===void 0)return"undefined";else if($===null)return"null";else if(typeof $==="bigint"||Number.isInteger($)&&!Object.is($,-0))return"integer";else if(typeof $==="number")return"float";else if(typeof $==="boolean")return"boolean";else if(typeof $==="string")return"string";else if("toISOString"in $)return isNaN($)?"undefined":"datetime";else if(Array.isArray($))return"array";else return"table"}function V0($){var q=String($);if(/^[-A-Za-z0-9_]+$/.test(q))return q;else return Y1(q)}function Y1($){return'"'+G1($).replace(/"/g,"\\\"")+'"'}function L8($){return"'"+$+"'"}function D8($,q){while(q.length<$)q="0"+q;return q}function G1($){return $.replace(/\\/g,"\\\\").replace(/[\b]/g,"\\b").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\f/g,"\\f").replace(/\r/g,"\\r").replace(/([\u0000-\u001f\u007f])/,(q)=>"\\u"+D8(4,q.codePointAt(0).toString(16)))}function w8($){let q=$.split(/\n/).map((J)=>{return G1(J).replace(/"(?="")/g,"\\\"")}).join(`
33
+ `,$}});var e2=I((iJ,r2)=>{r2.exports=K8;var M8=W0(),U8=Y0();function K8($){if(global.Buffer&&global.Buffer.isBuffer($))$=$.toString("utf8");let q=new M8;try{return q.parse($),q.finish()}catch(J){throw U8(J,$)}}});var J1=I((tJ,q1)=>{q1.exports=N8;var F8=W0(),$1=Y0();function N8($,q){if(!q)q={};let J=0,X=q.blocksize||40960,Z=new F8;return new Promise((Q,G)=>{setImmediate(z,J,X,Q,G)});function z(Q,G,V,Y){if(Q>=$.length)try{return V(Z.finish())}catch(W){return Y($1(W,$))}try{Z.parse($.slice(Q,Q+G)),setImmediate(z,Q+G,G,V,Y)}catch(W){Y($1(W,$))}}}});var z1=I((oJ,Z1)=>{Z1.exports=P8;var I8=B$("stream"),X1=W0();function P8($){if($)return S8($);else return L8($)}function S8($){let q=new X1;return $.setEncoding("utf8"),new Promise((J,X)=>{let Z,z=!1,Q=!1;function G(){if(z=!0,Z)return;try{J(q.finish())}catch(W){X(W)}}function V(W){Q=!0,X(W)}$.once("end",G),$.once("error",V),Y();function Y(){Z=!0;let W;while((W=$.read())!==null)try{q.parse(W)}catch(B){return V(B)}if(Z=!1,z)return G();if(Q)return;$.once("readable",Y)}})}function L8(){let $=new X1;return new I8.Transform({objectMode:!0,transform(q,J,X){try{$.parse(q.toString(J))}catch(Z){this.emit("error",Z)}X()},flush(q){try{this.push($.finish())}catch(J){this.emit("error",J)}q()}})}});var Q1=I((aJ,v$)=>{v$.exports=e2();v$.exports.async=J1();v$.exports.stream=z1();v$.exports.prettyError=Y0()});var K1=I((rJ,Kq)=>{Kq.exports=D8;Kq.exports.value=Uq;function D8($){if($===null)throw W$("null");if($===void 0)throw W$("undefined");if(typeof $!=="object")throw W$(typeof $);if(typeof $.toJSON==="function")$=$.toJSON();if($==null)return null;let q=A($);if(q!=="table")throw W$(q);return Mq("","",$)}function W$($){return Error("Can only stringify objects, not "+$)}function w8(){return Error("Array values can't have mixed types")}function G1($){return Object.keys($).filter((q)=>W1($[q]))}function x8($){return Object.keys($).filter((q)=>!W1($[q]))}function V0($){let q=Array.isArray($)?[]:Object.prototype.hasOwnProperty.call($,"__proto__")?{["__proto__"]:void 0}:{};for(let J of Object.keys($))if($[J]&&typeof $[J].toJSON==="function"&&!("toISOString"in $[J]))q[J]=$[J].toJSON();else q[J]=$[J];return q}function Mq($,q,J){J=V0(J);var X,Z;X=G1(J),Z=x8(J);var z=[],Q=q||"";if(X.forEach((V)=>{var Y=A(J[V]);if(Y!=="undefined"&&Y!=="null")z.push(Q+B0(V)+" = "+B1(J[V],!0))}),z.length>0)z.push("");var G=$&&X.length>0?q+" ":"";return Z.forEach((V)=>{z.push(E8($,G,V,J[V]))}),z.join(`
34
+ `)}function W1($){switch(A($)){case"undefined":case"null":case"integer":case"nan":case"float":case"boolean":case"string":case"datetime":return!0;case"array":return $.length===0||A($[0])!=="table";case"table":return Object.keys($).length===0;default:return!1}}function A($){if($===void 0)return"undefined";else if($===null)return"null";else if(typeof $==="bigint"||Number.isInteger($)&&!Object.is($,-0))return"integer";else if(typeof $==="number")return"float";else if(typeof $==="boolean")return"boolean";else if(typeof $==="string")return"string";else if("toISOString"in $)return isNaN($)?"undefined":"datetime";else if(Array.isArray($))return"array";else return"table"}function B0($){var q=String($);if(/^[-A-Za-z0-9_]+$/.test(q))return q;else return Y1(q)}function Y1($){return'"'+V1($).replace(/"/g,"\\\"")+'"'}function H8($){return"'"+$+"'"}function j8($,q){while(q.length<$)q="0"+q;return q}function V1($){return $.replace(/\\/g,"\\\\").replace(/[\b]/g,"\\b").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\f/g,"\\f").replace(/\r/g,"\\r").replace(/([\u0000-\u001f\u007f])/,(q)=>"\\u"+j8(4,q.codePointAt(0).toString(16)))}function O8($){let q=$.split(/\n/).map((J)=>{return V1(J).replace(/"(?="")/g,"\\\"")}).join(`
35
35
  `);if(q.slice(-1)==='"')q+="\\\n";return`"""
36
- `+q+'"""'}function W1($,q){let J=A($);if(J==="string"){if(q&&/\n/.test($))J="string-multiline";else if(!/[\b\t\n\f\r']/.test($)&&/"/.test($))J="string-literal"}return Uq($,J)}function Uq($,q){if(!q)q=A($);switch(q){case"string-multiline":return w8($);case"string":return Y1($);case"string-literal":return L8($);case"integer":return B1($);case"float":return x8($);case"boolean":return H8($);case"datetime":return j8($);case"array":return _8($.filter((J)=>A(J)!=="null"&&A(J)!=="undefined"&&A(J)!=="nan"));case"table":return f8($);default:throw G$(q)}}function B1($){return String($).replace(/\B(?=(\d{3})+(?!\d))/g,"_")}function x8($){if($===1/0)return"inf";else if($===-1/0)return"-inf";else if(Object.is($,NaN))return"nan";else if(Object.is($,-0))return"-0.0";var q=String($).split("."),J=q[0],X=q[1]||0;return B1(J)+"."+X}function H8($){return String($)}function j8($){return $.toISOString()}function O8($){return $==="float"||$==="integer"}function T8($){var q=A($[0]);if($.every((J)=>A(J)===q))return q;if($.every((J)=>O8(A(J))))return"float";return"mixed"}function V1($){let q=T8($);if(q==="mixed")throw P8();return q}function _8($){$=B0($);let q=V1($);var J="[",X=$.map((Z)=>Uq(Z,q));if(X.join(", ").length>60||/\n/.test(X))J+=`
36
+ `+q+'"""'}function B1($,q){let J=A($);if(J==="string"){if(q&&/\n/.test($))J="string-multiline";else if(!/[\b\t\n\f\r']/.test($)&&/"/.test($))J="string-literal"}return Uq($,J)}function Uq($,q){if(!q)q=A($);switch(q){case"string-multiline":return O8($);case"string":return Y1($);case"string-literal":return H8($);case"integer":return M1($);case"float":return T8($);case"boolean":return _8($);case"datetime":return f8($);case"array":return k8($.filter((J)=>A(J)!=="null"&&A(J)!=="undefined"&&A(J)!=="nan"));case"table":return A8($);default:throw W$(q)}}function M1($){return String($).replace(/\B(?=(\d{3})+(?!\d))/g,"_")}function T8($){if($===1/0)return"inf";else if($===-1/0)return"-inf";else if(Object.is($,NaN))return"nan";else if(Object.is($,-0))return"-0.0";var q=String($).split("."),J=q[0],X=q[1]||0;return M1(J)+"."+X}function _8($){return String($)}function f8($){return $.toISOString()}function R8($){return $==="float"||$==="integer"}function y8($){var q=A($[0]);if($.every((J)=>A(J)===q))return q;if($.every((J)=>R8(A(J))))return"float";return"mixed"}function U1($){let q=y8($);if(q==="mixed")throw w8();return q}function k8($){$=V0($);let q=U1($);var J="[",X=$.map((Z)=>Uq(Z,q));if(X.join(", ").length>60||/\n/.test(X))J+=`
37
37
  `+X.join(`,
38
38
  `)+`
39
- `;else J+=" "+X.join(", ")+(X.length>0?" ":"");return J+"]"}function f8($){$=B0($);var q=[];return Object.keys($).forEach((J)=>{q.push(V0(J)+" = "+W1($[J],!1))}),"{ "+q.join(", ")+(q.length>0?" ":"")+"}"}function R8($,q,J,X){var Z=A(X);if(Z==="array")return y8($,q,J,X);else if(Z==="table")return k8($,q,J,X);else throw G$(Z)}function y8($,q,J,X){X=B0(X),V1(X);var Z=A(X[0]);if(Z!=="table")throw G$(Z);var z=$+V0(J),Q="";return X.forEach((Y)=>{if(Q.length>0)Q+=`
39
+ `;else J+=" "+X.join(", ")+(X.length>0?" ":"");return J+"]"}function A8($){$=V0($);var q=[];return Object.keys($).forEach((J)=>{q.push(B0(J)+" = "+B1($[J],!1))}),"{ "+q.join(", ")+(q.length>0?" ":"")+"}"}function E8($,q,J,X){var Z=A(X);if(Z==="array")return b8($,q,J,X);else if(Z==="table")return h8($,q,J,X);else throw W$(Z)}function b8($,q,J,X){X=V0(X),U1(X);var Z=A(X[0]);if(Z!=="table")throw W$(Z);var z=$+B0(J),Q="";return X.forEach((G)=>{if(Q.length>0)Q+=`
40
40
  `;Q+=q+"[["+z+`]]
41
- `,Q+=Mq(z+".",q,Y)}),Q}function k8($,q,J,X){var Z=$+V0(J),z="";if(z1(X).length>0)z+=q+"["+Z+`]
42
- `;return z+Mq(Z+".",q,X)}});var Fq=I((A8)=>{A8.parse=Z1();A8.stringify=M1()});var J2=h0(q2(),1),{program:$J,createCommand:qJ,createArgument:JJ,createOption:XJ,CommanderError:X2,InvalidArgumentError:ZJ,InvalidOptionArgumentError:zJ,Command:w,Argument:QJ,Option:YJ,Help:GJ}=J2.default;var p0=/^[a-z][a-z0-9-]{0,62}$/;var b={Success:0,AgentError:1,UserError:2,HookBlocked:3,BackendUnavailable:4,Interrupted:130};class H$ extends Error{code;constructor($,q,J){super(q,J);this.name="KmanError",this.code=$}}class U extends H${constructor($,q){super(b.UserError,$,q);this.name="UserError"}}class $$ extends H${constructor($,q){super(b.BackendUnavailable,$,q);this.name="BackendUnavailableError"}}var M$={name:"@unliftedq/kman",version:"0.0.4",description:"Multi-agent management tool — a CLI that manages a roster of named agent profiles on top of existing agent runtimes (claude-code, copilot-cli, ...).",keywords:["agent","agents","multi-agent","claude","claude-code","copilot","copilot-cli","ai","cli","kman"],homepage:"https://github.com/unliftedq/kman#readme",repository:{type:"git",url:"git+https://github.com/unliftedq/kman.git"},bugs:{url:"https://github.com/unliftedq/kman/issues"},license:"Apache-2.0",author:"Qiao Wang <wangqiao11@hotmail.com>",type:"module",bin:{kman:"dist/main.js"},main:"./dist/main.js",files:["dist/main.js","README.md","LICENSE"],engines:{node:">=18"},publishConfig:{access:"public"},scripts:{start:"bun run ./src/main.ts",build:"bun run ./scripts/build.ts",typecheck:"tsc -b",test:"bun test",clean:"rm -rf dist .tsbuild .turbo *.tsbuildinfo",prepublishOnly:"bun run build"},devDependencies:{"@kman/backend-claude-code":"workspace:*","@kman/backend-copilot-cli":"workspace:*","@kman/core":"workspace:*","@kman/mcp-server":"workspace:*","@kman/skills":"workspace:*","@kman/types":"workspace:*",commander:"^14.0.3",typescript:"^5.6.0"}};import{mkdir as S0,readFile as K4,readdir as F4,rename as N4,rm as L0,stat as I4,writeFile as D0}from"node:fs/promises";import{join as u$}from"node:path";import{homedir as L6}from"node:os";import{join as q$}from"node:path";function t(){let $=process.env.KMAN_HOME;return $&&$.length>0?$:q$(L6(),".kman")}function j$(){return q$(t(),"agents")}function v(){return q$(t(),"config.json")}function N($){return q$(j$(),$)}function t$($){return q$(N($),"agent.toml")}function o($,q="soul.md"){return q$(N($),q)}function u($){return q$(N($),"skills")}import{join as n0}from"node:path";var o$="kman";function D6(){return n0(t(),"runtime")}function O$($){return n0(D6(),$)}function Z2($,q){return n0(O$($),q==="claude"?".claude":".copilot")}import{randomUUID as W2}from"node:crypto";import{cp as H6,mkdir as _$,readFile as j6,rename as G2,rm as i0,stat as O6,symlink as T6,writeFile as a$}from"node:fs/promises";import{isAbsolute as _6,dirname as f6,join as _}from"node:path";class T$ extends Error{constructor($){super($);this.name="PromptArgumentError"}}var s0=[{name:"list-agents",description:"List the available kman-managed agents in a readable summary.",arguments:[],buildText:()=>"Call kman_list_agents and summarize the available agents in a compact, readable list. Include each agent's name, description, default runtime, and model when present."},{name:"find-agent",description:"Find the best kman-managed agent for a task and explain the choice.",arguments:[{name:"task",description:"Short natural-language goal.",required:!0}],buildText:($)=>`Task: ${$.task}
41
+ `,Q+=Mq(z+".",q,G)}),Q}function h8($,q,J,X){var Z=$+B0(J),z="";if(G1(X).length>0)z+=q+"["+Z+`]
42
+ `;return z+Mq(Z+".",q,X)}});var Fq=I((C8)=>{C8.parse=Q1();C8.stringify=K1()});var J2=h0(q2(),1),{program:ZJ,createCommand:zJ,createArgument:QJ,createOption:GJ,CommanderError:X2,InvalidArgumentError:WJ,InvalidOptionArgumentError:YJ,Command:w,Argument:VJ,Option:BJ,Help:MJ}=J2.default;var p0=/^[a-z][a-z0-9-]{0,62}$/;var b={Success:0,AgentError:1,UserError:2,HookBlocked:3,BackendUnavailable:4,Interrupted:130};class j$ extends Error{code;constructor($,q,J){super(q,J);this.name="KmanError",this.code=$}}class U extends j${constructor($,q){super(b.UserError,$,q);this.name="UserError"}}class $$ extends j${constructor($,q){super(b.BackendUnavailable,$,q);this.name="BackendUnavailableError"}}var M$={name:"@unliftedq/kman",version:"0.0.5",description:"Multi-agent management tool — a CLI that manages a roster of named agent profiles on top of existing agent runtimes (claude-code, copilot-cli, ...).",keywords:["agent","agents","multi-agent","claude","claude-code","copilot","copilot-cli","ai","cli","kman"],homepage:"https://github.com/unliftedq/kman#readme",repository:{type:"git",url:"git+https://github.com/unliftedq/kman.git"},bugs:{url:"https://github.com/unliftedq/kman/issues"},license:"Apache-2.0",author:"Qiao Wang <wangqiao11@hotmail.com>",type:"module",bin:{kman:"dist/main.js"},main:"./dist/main.js",files:["dist/main.js","README.md","LICENSE"],engines:{node:">=18"},publishConfig:{access:"public"},scripts:{start:"bun run ./src/main.ts",build:"bun run ./scripts/build.ts",typecheck:"tsc -b",test:"bun test",clean:"rm -rf dist .tsbuild .turbo *.tsbuildinfo",prepublishOnly:"bun run build"},devDependencies:{"@kman/backend-claude-code":"workspace:*","@kman/backend-copilot-cli":"workspace:*","@kman/core":"workspace:*","@kman/mcp-server":"workspace:*","@kman/skills":"workspace:*","@kman/types":"workspace:*",commander:"^14.0.3",typescript:"^5.6.0"}};import{mkdir as S0,readFile as P4,readdir as S4,rename as L4,rm as L0,stat as O1,writeFile as D0}from"node:fs/promises";import{join as g$}from"node:path";import{homedir as x6}from"node:os";import{join as q$}from"node:path";function t(){let $=process.env.KMAN_HOME;return $&&$.length>0?$:q$(x6(),".kman")}function O$(){return q$(t(),"agents")}function v(){return q$(t(),"config.json")}function N($){return q$(O$(),$)}function U$($){return q$(N($),"agent.toml")}function o($,q="soul.md"){return q$(N($),q)}function u($){return q$(N($),"skills")}import{join as n0}from"node:path";var o$="kman";function H6(){return n0(t(),"runtime")}function T$($){return n0(H6(),$)}function Z2($,q){return n0(T$($),q==="claude"?".claude":".copilot")}import{randomUUID as B2}from"node:crypto";import{cp as T6,mkdir as f$,readFile as _6,rename as W2,rm as i0,stat as f6,symlink as R6,writeFile as a$}from"node:fs/promises";import{isAbsolute as y6,dirname as k6,join as _}from"node:path";class _$ extends Error{constructor($){super($);this.name="PromptArgumentError"}}var s0=[{name:"list-agents",description:"List the available kman-managed agents in a readable summary.",arguments:[],buildText:()=>"Call kman_list_agents and summarize the available agents in a compact, readable list. Include each agent's name, description, default runtime, and model when present."},{name:"find-agent",description:"Find the best kman-managed agent for a task and explain the choice.",arguments:[{name:"task",description:"Short natural-language goal.",required:!0}],buildText:($)=>`Task: ${$.task}
43
43
 
44
44
  Call kman_list_agents, choose the single best-fit agent, and explain the choice in one sentence. If the roster summary is not enough, call kman_describe_agent for the top candidate(s) before deciding. Ask me before dispatching with kman_run_agent.`},{name:"delegate-task",description:"Run a task with a specific kman-managed agent and summarize the result.",arguments:[{name:"agent",description:"Target agent name (lowercase kebab-case).",required:!0},{name:"task",description:"Self-contained task for the peer agent.",required:!0}],buildText:($)=>`Run this task with the kman-managed agent "${$.agent}":
45
45
 
@@ -49,38 +49,38 @@ Call kman_run_agent with agent="${$.agent}". Summarize the result in your own wo
49
49
 
50
50
  ${$.topic}
51
51
 
52
- First call kman_describe_agent to confirm the agent is a good fit. If so, call kman_run_agent with enough context for an independent take; do not just forward my wording verbatim. Compare their view to mine and tell me where you net out.`}];function z2(){return s0.map(({name:$,description:q,arguments:J})=>({name:$,description:q,arguments:J}))}function Q2($,q){let J=s0.find((X)=>X.name===$);if(!J)throw new T$(`Unknown prompt: ${$}`);for(let X of J.arguments){let Z=q[X.name];if(X.required&&(typeof Z!=="string"||Z.length===0))throw new T$(`Missing required argument: "${X.name}".`)}return{description:J.description,messages:[{role:"user",content:{type:"text",text:J.buildText(q)}}]}}function Y2(){return s0.map(($)=>{let q=w6($.arguments),J=x6($),X=$.buildText(q),Z=`---
52
+ First call kman_describe_agent to confirm the agent is a good fit. If so, call kman_run_agent with enough context for an independent take; do not just forward my wording verbatim. Compare their view to mine and tell me where you net out.`}];function z2(){return s0.map(({name:$,description:q,arguments:J})=>({name:$,description:q,arguments:J}))}function Q2($,q){let J=s0.find((X)=>X.name===$);if(!J)throw new _$(`Unknown prompt: ${$}`);for(let X of J.arguments){let Z=q[X.name];if(X.required&&(typeof Z!=="string"||Z.length===0))throw new _$(`Missing required argument: "${X.name}".`)}return{description:J.description,messages:[{role:"user",content:{type:"text",text:J.buildText(q)}}]}}function G2(){return s0.map(($)=>{let q=j6($.arguments),J=O6($),X=$.buildText(q),Z=`---
53
53
  description: ${$.description}
54
54
  ---
55
55
 
56
56
  `+(J?`${J}
57
57
 
58
58
  `:"")+`${X}
59
- `;return{name:$.name,content:Z}})}function w6($){let q={};if($.length===1)q[$[0].name]="$ARGUMENTS";else $.forEach((J,X)=>{q[J.name]=`$${X+1}`});return q}function x6($){if($.arguments.length===0)return"";if($.arguments.length===1)return`Usage: /${$.name} <${$.arguments[0].name}>`;let q=$.arguments.map((J)=>`<${J.name}>`).join(" ");return`Usage: /${$.name} ${q}`}var R6=["skills","hooks","scripts","bin","commands"],y6=[{from:"mcp.json",legacyFrom:".mcp.json",to:".mcp.json"}],B2="kman-commands";async function K$($,q){let J=N($.name),X=Z2($.name,q),Z=`${X}.staging-${process.pid}-${W2()}`;try{await k6(Z,J,$,q),await h6(Z,X)}catch(z){throw await i0(Z,{recursive:!0,force:!0}).catch(()=>{}),z}return{pluginDir:X,pluginAgent:`${o$}:${$.name}`}}async function k6($,q,J,X){await _$($,{recursive:!0}),await C6($,q,J,X);let Z=J.soul.prompt_file,z=_6(Z)?Z:o(J.name,Z);if(await _$(_($,"agents"),{recursive:!0}),await U$(z))await E6(z,$,J,X);for(let Q of R6){let Y=_(q,Q);if(await U$(Y))await t0(Y,_($,Q),"dir")}for(let Q of y6){let Y=_(q,Q.from);if(!await U$(Y)&&Q.legacyFrom){let B=_(q,Q.legacyFrom);if(await U$(B))Y=B}if(await U$(Y))await t0(Y,_($,Q.to),"file")}if(X==="copilot")await A6($)}async function A6($){let q=_($,B2);await _$(q,{recursive:!0});for(let J of Y2())await a$(_(q,`${J.name}.md`),J.content,"utf8")}async function E6($,q,J,X){let Z=_(q,"agents");if(X==="claude"){await t0($,_(Z,`${J.name}.md`),"file");return}let z=await j6($,"utf8"),Q=b6(z,J);await a$(_(Z,`${J.name}.agent.md`),Q,"utf8")}function b6($,q){let J=q.description??`${q.name} agent`;if(!$.startsWith(`---
59
+ `;return{name:$.name,content:Z}})}function j6($){let q={};if($.length===1)q[$[0].name]="$ARGUMENTS";else $.forEach((J,X)=>{q[J.name]=`$${X+1}`});return q}function O6($){if($.arguments.length===0)return"";if($.arguments.length===1)return`Usage: /${$.name} <${$.arguments[0].name}>`;let q=$.arguments.map((J)=>`<${J.name}>`).join(" ");return`Usage: /${$.name} ${q}`}var A6=["skills","hooks","scripts","bin","commands"],E6=[{from:"mcp.json",legacyFrom:".mcp.json",to:".mcp.json"}],M2="kman-commands";async function F$($,q){let J=N($.name),X=Z2($.name,q),Z=`${X}.staging-${process.pid}-${B2()}`;try{await b6(Z,J,$,q),await g6(Z,X)}catch(z){throw await i0(Z,{recursive:!0,force:!0}).catch(()=>{}),z}return{pluginDir:X,pluginAgent:`${o$}:${$.name}`}}async function b6($,q,J,X){await f$($,{recursive:!0}),await c6($,q,J,X);let Z=J.soul.prompt_file,z=y6(Z)?Z:o(J.name,Z);if(await f$(_($,"agents"),{recursive:!0}),await K$(z))await C6(z,$,J,X);for(let Q of A6){let G=_(q,Q);if(await K$(G))await t0(G,_($,Q),"dir")}for(let Q of E6){let G=_(q,Q.from);if(!await K$(G)&&Q.legacyFrom){let V=_(q,Q.legacyFrom);if(await K$(V))G=V}if(await K$(G))await t0(G,_($,Q.to),"file")}if(X==="copilot")await h6($)}async function h6($){let q=_($,M2);await f$(q,{recursive:!0});for(let J of G2())await a$(_(q,`${J.name}.md`),J.content,"utf8")}async function C6($,q,J,X){let Z=_(q,"agents");if(X==="claude"){await t0($,_(Z,`${J.name}.md`),"file");return}let z=await _6($,"utf8"),Q=v6(z,J);await a$(_(Z,`${J.name}.agent.md`),Q,"utf8")}function v6($,q){let J=Y2(q.description??`${q.name} agent`);if(!$.startsWith(`---
60
60
  `))return`---
61
61
  name: ${q.name}
62
62
  description: ${J}
63
63
  ---
64
64
 
65
65
  ${$}`;let X=$.indexOf(`
66
- ---`,4);if(X<0)return $;let Z=$.slice(0,X);if(/^description:/m.test(Z))return $;return $.replace(/^---\n/,`---
66
+ ---`,4);if(X<0)return $;let Z=$.slice(0,X),z=/^description:\s*(.*)$/m.exec(Z);if(z){let Q=z[1]??"";if(u6(Q))return $;return $.replace(/^description:\s*(.*)$/m,(G,V)=>{return`description: ${Y2(V.trim())}`})}return $.replace(/^---\n/,`---
67
67
  description: ${J}
68
- `)}async function h6($,q){await _$(f6(q),{recursive:!0});for(let J=0;J<100;J++){let X=`${q}.trash-${process.pid}-${W2()}`,Z=!1;try{await G2(q,X),Z=!0}catch(z){if(z.code!=="ENOENT")throw z}try{await G2($,q)}catch(z){if(Z)await i0(X,{recursive:!0,force:!0}).catch(()=>{});let Q=z.code;if(Q==="ENOTEMPTY"||Q==="EEXIST")continue;throw z}if(Z)await i0(X,{recursive:!0,force:!0}).catch(()=>{});return}throw Error(`materializeRuntimePlugin: could not swap ${$} into ${q}`)}async function C6($,q,J,X){if(X==="claude"){let Q={name:o$,agents:[`./agents/${J.name}.md`]};if(J.description)Q.description=J.description;await _$(_($,".claude-plugin"),{recursive:!0}),await a$(_($,".claude-plugin","plugin.json"),JSON.stringify(Q,null,2)+`
69
- `,"utf8");return}let Z=[`${B2}/`];if(await U$(_(q,"commands")))Z.unshift("commands/");let z={name:o$,agents:"agents/",commands:Z};if(J.description)z.description=J.description;await a$(_($,"plugin.json"),JSON.stringify(z,null,2)+`
70
- `,"utf8")}async function t0($,q,J){let X=J==="dir"?process.platform==="win32"?"junction":"dir":"file";try{await T6($,q,X)}catch(Z){if(Z.code==="EEXIST")return;await H6($,q,{recursive:J==="dir"})}}async function U$($){try{return await O6($),!0}catch(q){if(q.code==="ENOENT")return!1;throw q}}var M2=["claude-code","copilot-cli"],F$=["ask","auto","yolo"],N$=["text","json","stream-json"],V2={permission_mode:"ask",output_format:"text"};function r$($,q={}){return{name:$,description:q.description,runtime:{default:q.runtime?.default??"claude-code",...q.runtime?.model!==void 0?{model:q.runtime.model}:{}},soul:{prompt_file:q.soul?.prompt_file??"soul.md"},defaults:{max_turns:q.defaults?.max_turns,permission_mode:q.defaults?.permission_mode??V2.permission_mode,output_format:q.defaults?.output_format??V2.output_format},runtimeOverrides:q.runtimeOverrides??{}}}var U1=h0(Fq(),1);import{readFile as h8}from"node:fs/promises";function P$($){if(!p0.test($))throw new U(`Invalid agent name "${$}". Must match ${p0.source} (lowercase kebab-case, 1–63 chars).`)}function M0($){if(P$($.name),!$.runtime||typeof $.runtime.default!=="string")throw new U(`Profile "${$.name}" is missing runtime.default.`);let q=$.defaults.permission_mode;if(q!==void 0&&!F$.includes(q))throw new U(`Profile "${$.name}" has invalid permission_mode "${q}". Expected one of: ${F$.join(", ")}.`);let J=$.defaults.output_format;if(J!==void 0&&!N$.includes(J))throw new U(`Profile "${$.name}" has invalid output_format "${J}". Expected one of: ${N$.join(", ")}.`);if($.defaults.max_turns!==void 0&&(!Number.isInteger($.defaults.max_turns)||$.defaults.max_turns<=0))throw new U(`Profile "${$.name}" has invalid max_turns ${$.defaults.max_turns}. Expected positive integer.`)}function C8($,q){if(typeof q!=="object"||q===null)throw new U(`Profile "${$}" is not a valid TOML object.`);let J=q,X=typeof J.description==="string"?J.description:void 0,Z=J.runtime??{},z=typeof Z.default==="string"?Z.default:"claude-code",Q=typeof Z.model==="string"?Z.model:void 0,Y={};for(let[L,O]of Object.entries(Z)){if(L==="default"||L==="model")continue;if(typeof O==="object"&&O!==null&&!Array.isArray(O)){let l=O,B$={};if(typeof l.permission_mode_raw==="string")B$.permission_mode_raw=l.permission_mode_raw;if(Array.isArray(l.extra_args))B$.extra_args=l.extra_args.filter((n$)=>typeof n$==="string");if(typeof l.model==="string")B$.model=l.model;Y[L]=B$}}let B=J.soul??{},W=typeof B.prompt_file==="string"?B.prompt_file:"soul.md",G=J.defaults??{},V={max_turns:typeof G.max_turns==="number"?G.max_turns:void 0,permission_mode:typeof G.permission_mode==="string"?G.permission_mode:void 0,output_format:typeof G.output_format==="string"?G.output_format:void 0},K=r$($,{description:X,runtime:{default:z,...Q!==void 0?{model:Q}:{}},soul:{prompt_file:W},defaults:V,runtimeOverrides:Y});return M0(K),K}async function h($){let q=t$($),J;try{J=await h8(q,"utf8")}catch(Z){if(Z.code==="ENOENT")throw new U(`Agent "${$}" not found at ${q}.`);throw new U(`Failed to read profile for "${$}": ${Z.message}`,{cause:Z})}let X;try{X=U1.default.parse(J)}catch(Z){throw new U(`Failed to parse ${q}: ${Z.message}`,{cause:Z})}return C8($,{...X,name:$})}var K1=h0(Fq(),1);import{writeFile as v8,mkdir as u8}from"node:fs/promises";import{dirname as g8}from"node:path";function c8($){M0($);let q={name:$.name};if($.description!==void 0)q.description=$.description;let J={default:$.runtime.default};if($.runtime.model!==void 0)J.model=$.runtime.model;for(let[Z,z]of Object.entries($.runtimeOverrides)){let Q={};if(z.permission_mode_raw!==void 0)Q.permission_mode_raw=z.permission_mode_raw;if(z.extra_args!==void 0)Q.extra_args=[...z.extra_args];if(z.model!==void 0)Q.model=z.model;if(Object.keys(Q).length>0)J[Z]=Q}q.runtime=J,q.soul={prompt_file:$.soul.prompt_file};let X={};if($.defaults.max_turns!==void 0)X.max_turns=$.defaults.max_turns;if($.defaults.permission_mode!==void 0)X.permission_mode=$.defaults.permission_mode;if($.defaults.output_format!==void 0)X.output_format=$.defaults.output_format;return q.defaults=X,K1.default.stringify(q)}async function Nq($){let q=t$($.name);await u8(g8(q),{recursive:!0});let J=c8($);return await v8(q,J,"utf8"),q}var m8={defaults:{runtime:"claude-code"}};function Iq($){let q={runtime:$?.defaults?.runtime??m8.defaults.runtime};if($?.defaults?.model!==void 0)q.model=$.defaults.model;if($?.defaults?.permission_mode!==void 0)q.permission_mode=$.defaults.permission_mode;if($?.defaults?.output_format!==void 0)q.output_format=$.defaults.output_format;if($?.defaults?.max_turns!==void 0)q.max_turns=$.defaults.max_turns;return{defaults:q}}function S$($){let q=$.defaults;if(typeof q.runtime!=="string"||q.runtime.length===0)throw new U("config.json: defaults.runtime must be a non-empty string.");if(q.permission_mode!==void 0&&!F$.includes(q.permission_mode))throw new U(`config.json: invalid defaults.permission_mode "${q.permission_mode}". Expected one of: ${F$.join(", ")}.`);if(q.output_format!==void 0&&!N$.includes(q.output_format))throw new U(`config.json: invalid defaults.output_format "${q.output_format}". Expected one of: ${N$.join(", ")}.`);if(q.max_turns!==void 0&&(!Number.isInteger(q.max_turns)||q.max_turns<=0))throw new U(`config.json: invalid defaults.max_turns ${q.max_turns}. Expected a positive integer.`)}function U0($){return M2.includes($)}import{readFile as d8}from"node:fs/promises";function l8($){if(typeof $!=="object"||$===null||Array.isArray($))throw new U("config.json must contain a JSON object.");let J=$.defaults??{};if(typeof J!=="object"||J===null||Array.isArray(J))throw new U('config.json: "defaults" must be an object.');let X={};if(v$(J,"runtime","string"))X.runtime=J.runtime;if(v$(J,"model","string"))X.model=J.model;if(v$(J,"permission_mode","string"))X.permission_mode=J.permission_mode;if(v$(J,"output_format","string"))X.output_format=J.output_format;if(v$(J,"max_turns","number"))X.max_turns=J.max_turns;let Z=Iq({defaults:X});return S$(Z),Z}function v$($,q,J){let X=$[q];if(X===void 0||X===null)return!1;if(typeof X!==J)throw new U(`config.json: defaults.${q} must be a ${J}, got ${typeof X}.`);return!0}async function i(){let $=v(),q;try{q=await d8($,"utf8")}catch(X){if(X.code==="ENOENT")return Iq(void 0);throw new U(`Failed to read ${$}: ${X.message}`,{cause:X})}let J;try{J=JSON.parse(q)}catch(X){throw new U(`Failed to parse ${$}: ${X.message}`,{cause:X})}return l8(J)}import{mkdir as p8,writeFile as n8}from"node:fs/promises";import{dirname as s8}from"node:path";function i8($){S$($);let q={runtime:$.defaults.runtime};if($.defaults.model!==void 0)q.model=$.defaults.model;if($.defaults.permission_mode!==void 0)q.permission_mode=$.defaults.permission_mode;if($.defaults.output_format!==void 0)q.output_format=$.defaults.output_format;if($.defaults.max_turns!==void 0)q.max_turns=$.defaults.max_turns;return JSON.stringify({defaults:q},null,2)+`
71
- `}async function Pq($){let q=v();return await p8(s8(q),{recursive:!0}),await n8(q,i8($),"utf8"),q}import{readFile as t8}from"node:fs/promises";import{isAbsolute as o8,join as a8}from"node:path";async function K0($,q={}){let J=N($.name),X=o8($.soul.prompt_file)?$.soul.prompt_file:a8(J,$.soul.prompt_file),Z="";try{Z=await t8(X,"utf8")}catch(O){if(O.code==="ENOENT")Z="";else throw new U(`Failed to read soul prompt at ${X}: ${O.message}`,{cause:O})}let z=q.backend??$.runtime.default,Q=$.runtimeOverrides[z]??{},Y=q.model??Q.model??$.runtime.model,B=q.permission??$.defaults.permission_mode??"ask",W=q.outputFormat??(q.stream?"stream-json":$.defaults.output_format??"text"),G=q.stream===!0||W==="stream-json",V=[...Q.extra_args??[],...q.runtimeFlags??[]],K={...q.env};return{profile:$,agentDir:J,soulPrompt:Z,backend:z,...Y!==void 0?{model:Y}:{},permission:B,outputFormat:W,...$.defaults.max_turns!==void 0?{maxTurns:$.defaults.max_turns}:{},cwd:q.cwd??process.cwd(),extraArgs:V,...Q.permission_mode_raw!==void 0?{permissionModeRaw:Q.permission_mode_raw}:{},env:K,...q.task!==void 0?{task:q.task}:{},stream:G}}async function F1($,q){return I1($,q,"run")}async function N1($,q){return I1($,q,"chat")}async function I1($,q,J){if(q.soulPrompt.trim().length>0&&!$.capabilities.supportsAppendSystemPrompt)throw new $$(`Backend "${$.name}" does not support append-system-prompt; cannot inject soul.md.`);let X;try{X=J==="run"?await $.spawn(q):await $.chat(q)}catch(z){if(z.code==="ENOENT")throw new $$(`Backend "${$.name}" binary not found on PATH. Install it before running.`,{cause:z});throw z}let Z=(z)=>{if(!X.killed)X.kill(z)};process.on("SIGINT",Z),process.on("SIGTERM",Z);try{return await new Promise((z,Q)=>{X.on("error",(Y)=>{if(Y.code==="ENOENT")Q(new $$(`Backend "${$.name}" binary not found on PATH. Install it before running.`,{cause:Y}));else Q(Y)}),X.on("exit",(Y,B)=>{if(B==="SIGINT"||B==="SIGTERM")z({exitCode:b.Interrupted});else z({exitCode:Y??0})})})}finally{process.off("SIGINT",Z),process.off("SIGTERM",Z)}}var P1={ok:0,info:1,warn:2,error:3};function Sq($){let q="ok";for(let J of $.sections)for(let X of J.checks)if(P1[X.severity]>P1[q])q=X.severity;return q}import{spawn as r8}from"node:child_process";var F0=[{name:"claude-code",defaultBin:"claude",envOverride:"KMAN_CLAUDE_BIN"},{name:"copilot-cli",defaultBin:"copilot",envOverride:"KMAN_COPILOT_BIN"}];function e8($){if($.envOverride){let q=process.env[$.envOverride];if(q&&q.length>0)return q}return $.defaultBin}async function $4($,q=15000){return new Promise((J)=>{let X="",Z="",z=!1,Q=(W)=>{if(z)return;z=!0,J(W)},Y;try{Y=r8($,["--version"],{stdio:["ignore","pipe","pipe"],shell:!1})}catch(W){let G=W;Q({ok:!1,errorCode:G.code,errorMessage:G.message});return}let B=setTimeout(()=>{if(Y.exitCode===null&&Y.signalCode===null)Y.kill("SIGTERM");setTimeout(()=>{if(Y.exitCode===null&&Y.signalCode===null)Y.kill("SIGKILL")},250).unref(),Q({ok:!1,errorCode:"ETIMEDOUT",errorMessage:`${$} --version timed out`})},q).unref();Y.stdout?.on("data",(W)=>{X+=W.toString("utf8")}),Y.stderr?.on("data",(W)=>{Z+=W.toString("utf8")}),Y.on("error",(W)=>{clearTimeout(B);let G=W;Q({ok:!1,errorCode:G.code,errorMessage:G.message})}),Y.on("exit",(W)=>{clearTimeout(B);let V=(X||Z).trim().split(/\r?\n/).find((K)=>K.trim().length>0)??"";if(W===0&&V.length>0)Q({ok:!0,version:V});else if(W===0)Q({ok:!0,version:"(no output)"});else Q({ok:!1,errorCode:`EXIT_${W??"NULL"}`,errorMessage:V||`${$} --version exited ${W}`})})})}async function N0($){let q=e8($),J=await $4(q),X=$.envOverride&&process.env[$.envOverride]?` (via ${$.envOverride})`:"";if(!J.ok){let Z=J.errorCode==="ENOENT";return[{id:`backend.${$.name}.binary`,label:`${$.name} binary`,severity:"error",message:Z?`"${q}" not found${X}.`:`"${q}" failed${X}: ${J.errorMessage??J.errorCode??"unknown error"}`,detail:Z?$.envOverride?`Install the ${$.name} CLI, or set ${$.envOverride} to the desired path.`:`Install the ${$.name} CLI, or ensure "${q}" is on PATH.`:void 0}]}return[{id:`backend.${$.name}.binary`,label:`${$.name} binary`,severity:"ok",message:`"${q}" on PATH${X}.`},{id:`backend.${$.name}.version`,label:`${$.name} version`,severity:"ok",message:J.version??"(unknown)"}]}import{readdir as S1,readFile as L1,stat as Lq}from"node:fs/promises";import{isAbsolute as q4,join as I0,resolve as J4}from"node:path";var X4=["git","node","npm","npx","bun","sh","bash","zsh","env","rm","mv","cp","ls","cat","echo","kman","claude","copilot","python","python3","pip","pip3"],Z4=process.platform==="win32";async function P0($){try{return await Lq($),!0}catch(q){if(q.code==="ENOENT")return!1;throw q}}async function z4($){try{let q=await h($);return{profile:q,checks:[{id:"profile.readable",label:"agent.toml",severity:"ok",message:`parsed (runtime=${q.runtime.default}${q.runtime.model?`, model=${q.runtime.model}`:""}).`}]}}catch(q){return{profile:null,checks:[{id:"profile.readable",label:"agent.toml",severity:"error",message:q.message}]}}}async function Q4($){let q=$.soul.prompt_file,J=q4(q)?q:o($.name,q);try{let X=await Lq(J);if(!X.isFile())return{id:"soul.file",label:"soul prompt",severity:"error",message:`${J} exists but is not a file.`};if(X.size===0)return{id:"soul.file",label:"soul prompt",severity:"warn",message:`${J} is empty.`};return{id:"soul.file",label:"soul prompt",severity:"ok",message:`${J} (${X.size} bytes).`}}catch(X){let Z=X;if(Z.code==="ENOENT")return{id:"soul.file",label:"soul prompt",severity:"warn",message:`${J} missing; backend will run with no soul prompt.`};return{id:"soul.file",label:"soul prompt",severity:"error",message:Z.message}}}async function Y4($){let q=I0(N($),"mcp.json"),J;try{J=await P0(q)}catch(G){return[{id:"mcp.present",label:"mcp.json",severity:"error",message:G.message}]}let X=q;if(!J){let G=I0(N($),".mcp.json");try{if(await P0(G))J=!0,X=G}catch(V){return[{id:"mcp.present",label:"mcp.json",severity:"error",message:V.message}]}}if(!J)return[{id:"mcp.present",label:"mcp.json",severity:"info",message:"not present; MCP servers disabled for this agent."}];let Z;try{Z=await L1(X,"utf8")}catch(G){return[{id:"mcp.readable",label:"mcp.json",severity:"error",message:G.message}]}let z;try{z=JSON.parse(Z)}catch(G){return[{id:"mcp.json",label:"mcp.json",severity:"error",message:`invalid JSON: ${G.message}`,detail:`Edit ${X} and ensure it is valid JSON.`}]}if(typeof z!=="object"||z===null)return[{id:"mcp.shape",label:"mcp.json",severity:"error",message:"top-level value must be an object."}];let Q=z.mcpServers,Y=[];if(typeof Q!=="object"||Q===null||Array.isArray(Q))return Y.push({id:"mcp.shape",label:"mcp.json",severity:"error",message:'missing "mcpServers" object.'}),Y;let B=Object.entries(Q);if(B.length===0)return Y.push({id:"mcp.servers",label:"mcp.json",severity:"info",message:"no MCP servers configured."}),Y;let W=0;for(let[G,V]of B){if(typeof V!=="object"||V===null){Y.push({id:`mcp.server.${G}.shape`,label:`mcpServers.${G}`,severity:"error",message:"entry must be an object."}),W++;continue}let K=V.command;if(typeof K!=="string"||K.length===0)Y.push({id:`mcp.server.${G}.command`,label:`mcpServers.${G}`,severity:"error",message:'"command" must be a non-empty string.'}),W++}return Y.unshift({id:"mcp.servers",label:"mcp.json",severity:W>0?"error":"ok",message:`${B.length} server(s) declared${W>0?`, ${W} invalid`:""}.`}),Y}function*G4($){if(typeof $!=="object"||$===null)return;let q=$.hooks;if(typeof q!=="object"||q===null)return;for(let J of Object.values(q)){if(!Array.isArray(J))continue;for(let X of J){if(typeof X!=="object"||X===null)continue;let Z=typeof X.matcher==="string"?X.matcher:void 0,z=X.hooks;if(!Array.isArray(z))continue;for(let Q of z){if(typeof Q!=="object"||Q===null)continue;let Y=Q.command;if(typeof Y==="string"&&Y.length>0)yield Z===void 0?{command:Y}:{matcher:Z,command:Y}}}}}function W4($){let J=$.trim().match(/(?:\$\{CLAUDE_PLUGIN_ROOT\}|\$CLAUDE_PLUGIN_ROOT)(["'`]?)([^\s"';|&<>]*)/);if(!J)return null;let X=J[2]??"";return X=X.replace(/^[\\/]+/,""),X.length>0?X:null}async function B4($){let q=I0(N($),"hooks","hooks.json"),J;try{J=await P0(q)}catch(B){return[{id:"hooks.present",label:"hooks/hooks.json",severity:"error",message:B.message}]}if(!J)return[{id:"hooks.present",label:"hooks/hooks.json",severity:"info",message:"not present."}];let X;try{X=await L1(q,"utf8")}catch(B){return[{id:"hooks.readable",label:"hooks/hooks.json",severity:"error",message:B.message}]}let Z;try{Z=JSON.parse(X)}catch(B){return[{id:"hooks.json",label:"hooks/hooks.json",severity:"error",message:`invalid JSON: ${B.message}`}]}let z=[],Q=N($),Y=Array.from(G4(Z));if(Y.length===0)return z.push({id:"hooks.entries",label:"hooks/hooks.json",severity:"info",message:"no command hooks declared."}),z;z.push({id:"hooks.entries",label:"hooks/hooks.json",severity:"ok",message:`${Y.length} command hook(s) declared.`});for(let[B,W]of Y.entries()){let G=W4(W.command),V=`hook[${B}]${W.matcher?` matcher=${W.matcher}`:""}`;if(!G){z.push({id:`hooks.${B}.script`,label:V,severity:"info",message:"inline command (no ${CLAUDE_PLUGIN_ROOT} reference); skipped."});continue}let K=J4(Q,G);try{let L=await Lq(K);if(!L.isFile()){z.push({id:`hooks.${B}.script`,label:V,severity:"error",message:`${K} exists but is not a file.`});continue}if(Z4){z.push({id:`hooks.${B}.script`,label:V,severity:"ok",message:`${G} present (executable bit not checked on Windows).`});continue}if((L.mode&73)===0)z.push({id:`hooks.${B}.script`,label:V,severity:"error",message:`${G} is not executable.`,detail:`Run: chmod +x ${K}`});else z.push({id:`hooks.${B}.script`,label:V,severity:"ok",message:`${G} executable.`})}catch(L){let O=L;z.push({id:`hooks.${B}.script`,label:V,severity:"error",message:O.code==="ENOENT"?`${G} missing.`:O.message})}}return z}async function V4($){let q=I0(N($),"bin"),J;try{J=await S1(q,{withFileTypes:!0})}catch(Y){let B=Y;if(B.code==="ENOENT")return[{id:"bin.present",label:"bin/",severity:"info",message:"not present."}];return[{id:"bin.readable",label:"bin/",severity:"error",message:B.message}]}let X=J.filter((Y)=>Y.isFile()||Y.isSymbolicLink()).map((Y)=>Y.name);if(X.length===0)return[{id:"bin.entries",label:"bin/",severity:"info",message:"empty."}];let Z=(Y)=>Y.replace(/\.(sh|bat|cmd|exe|ps1)$/i,""),z=X.filter((Y)=>X4.includes(Z(Y))),Q=[{id:"bin.entries",label:"bin/",severity:"ok",message:`${X.length} entr${X.length===1?"y":"ies"}.`}];if(z.length>0)Q.push({id:"bin.shadowing",label:"bin/ shadowing",severity:"warn",message:`may shadow system commands: ${z.join(", ")}.`,detail:"Rename bin/ entries to use an agent-specific prefix (see DESIGN §4.5)."});return Q}async function M4($){let q=u($),J;try{J=await S1(q,{withFileTypes:!0})}catch(Z){let z=Z;if(z.code==="ENOENT")return[{id:"skills.present",label:"skills/",severity:"info",message:"not present."}];return[{id:"skills.readable",label:"skills/",severity:"error",message:z.message}]}let X=J.filter((Z)=>Z.isDirectory()).map((Z)=>Z.name);return[{id:"skills.count",label:"skills/",severity:"ok",message:X.length===0?"no skills installed.":`${X.length} installed: ${X.join(", ")}.`}]}async function D1($){let q=N($),J;try{J=await P0(q)}catch(Q){return[{id:"agent.exists",label:"agent directory",severity:"error",message:Q.message}]}if(!J)return[{id:"agent.exists",label:"agent directory",severity:"error",message:`${q} does not exist.`,detail:`Run: kman agent create ${$}`}];let X=[],{checks:Z,profile:z}=await z4($);if(X.push(...Z),z)X.push(await Q4(z));if(X.push(...await Y4($)),X.push(...await B4($)),X.push(...await V4($)),X.push(...await M4($)),z){let Q=F0.find((Y)=>Y.name===z.runtime.default);if(!Q)X.push({id:"agent.backend.known",label:`runtime=${z.runtime.default}`,severity:"warn",message:`no built-in probe for backend "${z.runtime.default}".`});else{let Y=await N0(Q);for(let B of Y)X.push({...B,id:`agent.${B.id}`})}}return X}async function w1($={}){let q=[];q.push({title:"Environment",checks:[{id:"env.kman_home",label:"KMAN_HOME",severity:"ok",message:t()},{id:"env.platform",label:"platform",severity:"ok",message:`${process.platform} ${process.arch} (node ${process.version})`},await U4()]});let J=$.backends??F0,X=await Promise.all(J.map((Z)=>N0(Z)));if(q.push({title:"Backends",checks:X.flat()}),$.agent){let Z=await D1($.agent);q.push({title:`Agent: ${$.agent}`,checks:Z})}return{sections:q,generatedAt:new Date().toISOString()}}async function U4(){try{let q=(await i()).defaults.runtime;if(!U0(q))return{id:"env.config",label:"config.json",severity:"warn",message:`defaults.runtime="${q}" has no built-in adapter`,detail:v()};return{id:"env.config",label:"config.json",severity:"ok",message:`defaults.runtime=${q}`,detail:v()}}catch($){return{id:"env.config",label:"config.json",severity:"warn",message:$.message,detail:v()}}}function x1(){return new Promise(($)=>{process.stdin.setEncoding("utf8");let q=(J)=>{process.stdin.off("data",q),process.stdin.pause(),$(J)};process.stdin.on("data",q)})}function H1(){let $=new w("agent").description("Agent lifecycle: create, list, show, delete, rename.");return $.command("create <name>").description("Create a new agent at ~/.kman/agents/<name>/.").option("--runtime <runtime>","Default agent runtime (claude-code | copilot-cli).").option("--model <id>","Default model id.").option("--description <text>",'What the agent is for or specializes in — a short label, e.g. "C# code review".').option("--soul <text>","Initial soul prompt body — how the agent thinks and behaves. Written to soul.md.").action(async(q,J)=>{P$(q);let X=N(q);if(await g$(X))throw new U(`Agent "${q}" already exists at ${X}.`);let Z=await i();await S0(X,{recursive:!0}),await S0(u$(X,"skills"),{recursive:!0}),await S0(u$(X,"hooks"),{recursive:!0}),await S0(u$(X,"scripts"),{recursive:!0});let z=J.runtime??Z.defaults.runtime,Q=J.model??Z.defaults.model,Y={runtime:{default:z,...Q!==void 0?{model:Q}:{}}};if(J.description)Y.description=J.description;let B={...Z.defaults.permission_mode!==void 0?{permission_mode:Z.defaults.permission_mode}:{},...Z.defaults.output_format!==void 0?{output_format:Z.defaults.output_format}:{},...Z.defaults.max_turns!==void 0?{max_turns:Z.defaults.max_turns}:{}};if(Object.keys(B).length>0)Y.defaults=B;let W=r$(q,Y);await Nq(W);let G=J.soul??`# ${q}
68
+ `)}function Y2($){return JSON.stringify($)}function u6($){let q=$.trimStart();return q.startsWith('"')||q.startsWith("'")||q.startsWith("|")||q.startsWith(">")}async function g6($,q){await f$(k6(q),{recursive:!0});for(let J=0;J<100;J++){let X=`${q}.trash-${process.pid}-${B2()}`,Z=!1;try{await W2(q,X),Z=!0}catch(z){let Q=z.code;if(Q==="ENOENT");else if(V2(Q))continue;else throw z}try{await W2($,q)}catch(z){if(Z)await i0(X,{recursive:!0,force:!0}).catch(()=>{});let Q=z.code;if(V2(Q))continue;throw z}if(Z)await i0(X,{recursive:!0,force:!0}).catch(()=>{});return}throw Error(`materializeRuntimePlugin: could not swap ${$} into ${q}`)}function V2($){return $==="ENOTEMPTY"||$==="EEXIST"||process.platform==="win32"&&$==="EPERM"}async function c6($,q,J,X){if(X==="claude"){let Q={name:o$,agents:[`./agents/${J.name}.md`]};if(J.description)Q.description=J.description;await f$(_($,".claude-plugin"),{recursive:!0}),await a$(_($,".claude-plugin","plugin.json"),JSON.stringify(Q,null,2)+`
69
+ `,"utf8");return}let Z=[`${M2}/`];if(await K$(_(q,"commands")))Z.unshift("commands/");let z={name:o$,agents:"agents/",commands:Z};if(J.description)z.description=J.description;await a$(_($,"plugin.json"),JSON.stringify(z,null,2)+`
70
+ `,"utf8")}async function t0($,q,J){let X=J==="dir"?process.platform==="win32"?"junction":"dir":"file";try{await R6($,q,X)}catch(Z){if(Z.code==="EEXIST")return;await T6($,q,{recursive:J==="dir"})}}async function K$($){try{return await f6($),!0}catch(q){if(q.code==="ENOENT")return!1;throw q}}var K2=["claude-code","copilot-cli"],N$=["ask","auto","yolo"],I$=["text","json","stream-json"],U2={permission_mode:"ask",output_format:"text"};function r$($,q={}){return{name:$,description:q.description,runtime:{default:q.runtime?.default??"claude-code",...q.runtime?.model!==void 0?{model:q.runtime.model}:{}},soul:{prompt_file:q.soul?.prompt_file??"soul.md"},defaults:{max_turns:q.defaults?.max_turns,permission_mode:q.defaults?.permission_mode??U2.permission_mode,output_format:q.defaults?.output_format??U2.output_format},runtimeOverrides:q.runtimeOverrides??{}}}var F1=h0(Fq(),1);import{readFile as g8}from"node:fs/promises";function S$($){if(!p0.test($))throw new U(`Invalid agent name "${$}". Must match ${p0.source} (lowercase kebab-case, 1–63 chars).`)}function M0($){if(S$($.name),!$.runtime||typeof $.runtime.default!=="string")throw new U(`Profile "${$.name}" is missing runtime.default.`);let q=$.defaults.permission_mode;if(q!==void 0&&!N$.includes(q))throw new U(`Profile "${$.name}" has invalid permission_mode "${q}". Expected one of: ${N$.join(", ")}.`);let J=$.defaults.output_format;if(J!==void 0&&!I$.includes(J))throw new U(`Profile "${$.name}" has invalid output_format "${J}". Expected one of: ${I$.join(", ")}.`);if($.defaults.max_turns!==void 0&&(!Number.isInteger($.defaults.max_turns)||$.defaults.max_turns<=0))throw new U(`Profile "${$.name}" has invalid max_turns ${$.defaults.max_turns}. Expected positive integer.`)}function c8($,q){if(typeof q!=="object"||q===null)throw new U(`Profile "${$}" is not a valid TOML object.`);let J=q,X=typeof J.description==="string"?J.description:void 0,Z=J.runtime??{},z=typeof Z.default==="string"?Z.default:"claude-code",Q=typeof Z.model==="string"?Z.model:void 0,G={};for(let[L,O]of Object.entries(Z)){if(L==="default"||L==="model")continue;if(typeof O==="object"&&O!==null&&!Array.isArray(O)){let l=O,V$={};if(typeof l.permission_mode_raw==="string")V$.permission_mode_raw=l.permission_mode_raw;if(Array.isArray(l.extra_args))V$.extra_args=l.extra_args.filter((s$)=>typeof s$==="string");if(typeof l.model==="string")V$.model=l.model;G[L]=V$}}let V=J.soul??{},Y=typeof V.prompt_file==="string"?V.prompt_file:"soul.md",W=J.defaults??{},B={max_turns:typeof W.max_turns==="number"?W.max_turns:void 0,permission_mode:typeof W.permission_mode==="string"?W.permission_mode:void 0,output_format:typeof W.output_format==="string"?W.output_format:void 0},K=r$($,{description:X,runtime:{default:z,...Q!==void 0?{model:Q}:{}},soul:{prompt_file:Y},defaults:B,runtimeOverrides:G});return M0(K),K}async function h($){let q=U$($),J;try{J=await g8(q,"utf8")}catch(Z){if(Z.code==="ENOENT")throw new U(`Agent "${$}" not found at ${q}.`);throw new U(`Failed to read profile for "${$}": ${Z.message}`,{cause:Z})}let X;try{X=F1.default.parse(J)}catch(Z){throw new U(`Failed to parse ${q}: ${Z.message}`,{cause:Z})}return c8($,{...X,name:$})}var N1=h0(Fq(),1);import{writeFile as m8,mkdir as d8}from"node:fs/promises";import{dirname as l8}from"node:path";function p8($){M0($);let q={name:$.name};if($.description!==void 0)q.description=$.description;let J={default:$.runtime.default};if($.runtime.model!==void 0)J.model=$.runtime.model;for(let[Z,z]of Object.entries($.runtimeOverrides)){let Q={};if(z.permission_mode_raw!==void 0)Q.permission_mode_raw=z.permission_mode_raw;if(z.extra_args!==void 0)Q.extra_args=[...z.extra_args];if(z.model!==void 0)Q.model=z.model;if(Object.keys(Q).length>0)J[Z]=Q}q.runtime=J,q.soul={prompt_file:$.soul.prompt_file};let X={};if($.defaults.max_turns!==void 0)X.max_turns=$.defaults.max_turns;if($.defaults.permission_mode!==void 0)X.permission_mode=$.defaults.permission_mode;if($.defaults.output_format!==void 0)X.output_format=$.defaults.output_format;return q.defaults=X,N1.default.stringify(q)}async function Nq($){let q=U$($.name);await d8(l8(q),{recursive:!0});let J=p8($);return await m8(q,J,"utf8"),q}var n8={defaults:{runtime:"claude-code"}};function Iq($){let q={runtime:$?.defaults?.runtime??n8.defaults.runtime};if($?.defaults?.model!==void 0)q.model=$.defaults.model;if($?.defaults?.permission_mode!==void 0)q.permission_mode=$.defaults.permission_mode;if($?.defaults?.output_format!==void 0)q.output_format=$.defaults.output_format;if($?.defaults?.max_turns!==void 0)q.max_turns=$.defaults.max_turns;return{defaults:q}}function L$($){let q=$.defaults;if(typeof q.runtime!=="string"||q.runtime.length===0)throw new U("config.json: defaults.runtime must be a non-empty string.");if(q.permission_mode!==void 0&&!N$.includes(q.permission_mode))throw new U(`config.json: invalid defaults.permission_mode "${q.permission_mode}". Expected one of: ${N$.join(", ")}.`);if(q.output_format!==void 0&&!I$.includes(q.output_format))throw new U(`config.json: invalid defaults.output_format "${q.output_format}". Expected one of: ${I$.join(", ")}.`);if(q.max_turns!==void 0&&(!Number.isInteger(q.max_turns)||q.max_turns<=0))throw new U(`config.json: invalid defaults.max_turns ${q.max_turns}. Expected a positive integer.`)}function U0($){return K2.includes($)}import{readFile as s8}from"node:fs/promises";function i8($){if(typeof $!=="object"||$===null||Array.isArray($))throw new U("config.json must contain a JSON object.");let J=$.defaults??{};if(typeof J!=="object"||J===null||Array.isArray(J))throw new U('config.json: "defaults" must be an object.');let X={};if(u$(J,"runtime","string"))X.runtime=J.runtime;if(u$(J,"model","string"))X.model=J.model;if(u$(J,"permission_mode","string"))X.permission_mode=J.permission_mode;if(u$(J,"output_format","string"))X.output_format=J.output_format;if(u$(J,"max_turns","number"))X.max_turns=J.max_turns;let Z=Iq({defaults:X});return L$(Z),Z}function u$($,q,J){let X=$[q];if(X===void 0||X===null)return!1;if(typeof X!==J)throw new U(`config.json: defaults.${q} must be a ${J}, got ${typeof X}.`);return!0}async function i(){let $=v(),q;try{q=await s8($,"utf8")}catch(X){if(X.code==="ENOENT")return Iq(void 0);throw new U(`Failed to read ${$}: ${X.message}`,{cause:X})}let J;try{J=JSON.parse(q)}catch(X){throw new U(`Failed to parse ${$}: ${X.message}`,{cause:X})}return i8(J)}import{mkdir as t8,writeFile as o8}from"node:fs/promises";import{dirname as a8}from"node:path";function r8($){L$($);let q={runtime:$.defaults.runtime};if($.defaults.model!==void 0)q.model=$.defaults.model;if($.defaults.permission_mode!==void 0)q.permission_mode=$.defaults.permission_mode;if($.defaults.output_format!==void 0)q.output_format=$.defaults.output_format;if($.defaults.max_turns!==void 0)q.max_turns=$.defaults.max_turns;return JSON.stringify({defaults:q},null,2)+`
71
+ `}async function Pq($){let q=v();return await t8(a8(q),{recursive:!0}),await o8(q,r8($),"utf8"),q}import{readFile as e8}from"node:fs/promises";import{isAbsolute as $4,join as q4}from"node:path";async function K0($,q={}){let J=N($.name),X=$4($.soul.prompt_file)?$.soul.prompt_file:q4(J,$.soul.prompt_file),Z="";try{Z=await e8(X,"utf8")}catch(O){if(O.code==="ENOENT")Z="";else throw new U(`Failed to read soul prompt at ${X}: ${O.message}`,{cause:O})}let z=q.backend??$.runtime.default,Q=$.runtimeOverrides[z]??{},G=q.model??Q.model??$.runtime.model,V=q.permission??$.defaults.permission_mode??"ask",Y=q.outputFormat??(q.stream?"stream-json":$.defaults.output_format??"text"),W=q.stream===!0||Y==="stream-json",B=[...Q.extra_args??[],...q.runtimeFlags??[]],K={...q.env};return{profile:$,agentDir:J,soulPrompt:Z,backend:z,...G!==void 0?{model:G}:{},permission:V,outputFormat:Y,...$.defaults.max_turns!==void 0?{maxTurns:$.defaults.max_turns}:{},cwd:q.cwd??process.cwd(),extraArgs:B,...Q.permission_mode_raw!==void 0?{permissionModeRaw:Q.permission_mode_raw}:{},env:K,...q.task!==void 0?{task:q.task}:{},stream:W}}async function I1($,q){return S1($,q,"run")}async function P1($,q){return S1($,q,"chat")}async function S1($,q,J){if(q.soulPrompt.trim().length>0&&!$.capabilities.supportsAppendSystemPrompt)throw new $$(`Backend "${$.name}" does not support append-system-prompt; cannot inject soul.md.`);let X;try{X=J==="run"?await $.spawn(q):await $.chat(q)}catch(z){if(z.code==="ENOENT")throw new $$(`Backend "${$.name}" binary not found on PATH. Install it before running.`,{cause:z});throw z}let Z=(z)=>{if(!X.killed)X.kill(z)};process.on("SIGINT",Z),process.on("SIGTERM",Z);try{return await new Promise((z,Q)=>{X.on("error",(G)=>{if(G.code==="ENOENT")Q(new $$(`Backend "${$.name}" binary not found on PATH. Install it before running.`,{cause:G}));else Q(G)}),X.on("exit",(G,V)=>{if(V==="SIGINT"||V==="SIGTERM")z({exitCode:b.Interrupted});else z({exitCode:G??0})})})}finally{process.off("SIGINT",Z),process.off("SIGTERM",Z)}}var L1={ok:0,info:1,warn:2,error:3};function Sq($){let q="ok";for(let J of $.sections)for(let X of J.checks)if(L1[X.severity]>L1[q])q=X.severity;return q}import{spawn as J4}from"node:child_process";var F0=[{name:"claude-code",defaultBin:"claude",envOverride:"KMAN_CLAUDE_BIN"},{name:"copilot-cli",defaultBin:"copilot",envOverride:"KMAN_COPILOT_BIN"}];function X4($){if($.envOverride){let q=process.env[$.envOverride];if(q&&q.length>0)return q}return $.defaultBin}async function Z4($,q=15000){return new Promise((J)=>{let X="",Z="",z=!1,Q=(Y)=>{if(z)return;z=!0,J(Y)},G;try{G=J4($,["--version"],{stdio:["ignore","pipe","pipe"],shell:!1})}catch(Y){let W=Y;Q({ok:!1,errorCode:W.code,errorMessage:W.message});return}let V=setTimeout(()=>{if(G.exitCode===null&&G.signalCode===null)G.kill("SIGTERM");setTimeout(()=>{if(G.exitCode===null&&G.signalCode===null)G.kill("SIGKILL")},250).unref(),Q({ok:!1,errorCode:"ETIMEDOUT",errorMessage:`${$} --version timed out`})},q).unref();G.stdout?.on("data",(Y)=>{X+=Y.toString("utf8")}),G.stderr?.on("data",(Y)=>{Z+=Y.toString("utf8")}),G.on("error",(Y)=>{clearTimeout(V);let W=Y;Q({ok:!1,errorCode:W.code,errorMessage:W.message})}),G.on("exit",(Y)=>{clearTimeout(V);let B=(X||Z).trim().split(/\r?\n/).find((K)=>K.trim().length>0)??"";if(Y===0&&B.length>0)Q({ok:!0,version:B});else if(Y===0)Q({ok:!0,version:"(no output)"});else Q({ok:!1,errorCode:`EXIT_${Y??"NULL"}`,errorMessage:B||`${$} --version exited ${Y}`})})})}async function N0($){let q=X4($),J=await Z4(q),X=$.envOverride&&process.env[$.envOverride]?` (via ${$.envOverride})`:"";if(!J.ok){let Z=J.errorCode==="ENOENT";return[{id:`backend.${$.name}.binary`,label:`${$.name} binary`,severity:"error",message:Z?`"${q}" not found${X}.`:`"${q}" failed${X}: ${J.errorMessage??J.errorCode??"unknown error"}`,detail:Z?$.envOverride?`Install the ${$.name} CLI, or set ${$.envOverride} to the desired path.`:`Install the ${$.name} CLI, or ensure "${q}" is on PATH.`:void 0}]}return[{id:`backend.${$.name}.binary`,label:`${$.name} binary`,severity:"ok",message:`"${q}" on PATH${X}.`},{id:`backend.${$.name}.version`,label:`${$.name} version`,severity:"ok",message:J.version??"(unknown)"}]}import{readdir as D1,readFile as w1,stat as Lq}from"node:fs/promises";import{isAbsolute as z4,join as I0,resolve as Q4}from"node:path";var G4=["git","node","npm","npx","bun","sh","bash","zsh","env","rm","mv","cp","ls","cat","echo","kman","claude","copilot","python","python3","pip","pip3"],W4=process.platform==="win32";async function P0($){try{return await Lq($),!0}catch(q){if(q.code==="ENOENT")return!1;throw q}}async function Y4($){try{let q=await h($);return{profile:q,checks:[{id:"profile.readable",label:"agent.toml",severity:"ok",message:`parsed (runtime=${q.runtime.default}${q.runtime.model?`, model=${q.runtime.model}`:""}).`}]}}catch(q){return{profile:null,checks:[{id:"profile.readable",label:"agent.toml",severity:"error",message:q.message}]}}}async function V4($){let q=$.soul.prompt_file,J=z4(q)?q:o($.name,q);try{let X=await Lq(J);if(!X.isFile())return{id:"soul.file",label:"soul prompt",severity:"error",message:`${J} exists but is not a file.`};if(X.size===0)return{id:"soul.file",label:"soul prompt",severity:"warn",message:`${J} is empty.`};return{id:"soul.file",label:"soul prompt",severity:"ok",message:`${J} (${X.size} bytes).`}}catch(X){let Z=X;if(Z.code==="ENOENT")return{id:"soul.file",label:"soul prompt",severity:"warn",message:`${J} missing; backend will run with no soul prompt.`};return{id:"soul.file",label:"soul prompt",severity:"error",message:Z.message}}}async function B4($){let q=I0(N($),"mcp.json"),J;try{J=await P0(q)}catch(W){return[{id:"mcp.present",label:"mcp.json",severity:"error",message:W.message}]}let X=q;if(!J){let W=I0(N($),".mcp.json");try{if(await P0(W))J=!0,X=W}catch(B){return[{id:"mcp.present",label:"mcp.json",severity:"error",message:B.message}]}}if(!J)return[{id:"mcp.present",label:"mcp.json",severity:"info",message:"not present; MCP servers disabled for this agent."}];let Z;try{Z=await w1(X,"utf8")}catch(W){return[{id:"mcp.readable",label:"mcp.json",severity:"error",message:W.message}]}let z;try{z=JSON.parse(Z)}catch(W){return[{id:"mcp.json",label:"mcp.json",severity:"error",message:`invalid JSON: ${W.message}`,detail:`Edit ${X} and ensure it is valid JSON.`}]}if(typeof z!=="object"||z===null)return[{id:"mcp.shape",label:"mcp.json",severity:"error",message:"top-level value must be an object."}];let Q=z.mcpServers,G=[];if(typeof Q!=="object"||Q===null||Array.isArray(Q))return G.push({id:"mcp.shape",label:"mcp.json",severity:"error",message:'missing "mcpServers" object.'}),G;let V=Object.entries(Q);if(V.length===0)return G.push({id:"mcp.servers",label:"mcp.json",severity:"info",message:"no MCP servers configured."}),G;let Y=0;for(let[W,B]of V){if(typeof B!=="object"||B===null){G.push({id:`mcp.server.${W}.shape`,label:`mcpServers.${W}`,severity:"error",message:"entry must be an object."}),Y++;continue}let K=B.command;if(typeof K!=="string"||K.length===0)G.push({id:`mcp.server.${W}.command`,label:`mcpServers.${W}`,severity:"error",message:'"command" must be a non-empty string.'}),Y++}return G.unshift({id:"mcp.servers",label:"mcp.json",severity:Y>0?"error":"ok",message:`${V.length} server(s) declared${Y>0?`, ${Y} invalid`:""}.`}),G}function*M4($){if(typeof $!=="object"||$===null)return;let q=$.hooks;if(typeof q!=="object"||q===null)return;for(let J of Object.values(q)){if(!Array.isArray(J))continue;for(let X of J){if(typeof X!=="object"||X===null)continue;let Z=typeof X.matcher==="string"?X.matcher:void 0,z=X.hooks;if(!Array.isArray(z))continue;for(let Q of z){if(typeof Q!=="object"||Q===null)continue;let G=Q.command;if(typeof G==="string"&&G.length>0)yield Z===void 0?{command:G}:{matcher:Z,command:G}}}}}function U4($){let J=$.trim().match(/(?:\$\{CLAUDE_PLUGIN_ROOT\}|\$CLAUDE_PLUGIN_ROOT)(["'`]?)([^\s"';|&<>]*)/);if(!J)return null;let X=J[2]??"";return X=X.replace(/^[\\/]+/,""),X.length>0?X:null}async function K4($){let q=I0(N($),"hooks","hooks.json"),J;try{J=await P0(q)}catch(V){return[{id:"hooks.present",label:"hooks/hooks.json",severity:"error",message:V.message}]}if(!J)return[{id:"hooks.present",label:"hooks/hooks.json",severity:"info",message:"not present."}];let X;try{X=await w1(q,"utf8")}catch(V){return[{id:"hooks.readable",label:"hooks/hooks.json",severity:"error",message:V.message}]}let Z;try{Z=JSON.parse(X)}catch(V){return[{id:"hooks.json",label:"hooks/hooks.json",severity:"error",message:`invalid JSON: ${V.message}`}]}let z=[],Q=N($),G=Array.from(M4(Z));if(G.length===0)return z.push({id:"hooks.entries",label:"hooks/hooks.json",severity:"info",message:"no command hooks declared."}),z;z.push({id:"hooks.entries",label:"hooks/hooks.json",severity:"ok",message:`${G.length} command hook(s) declared.`});for(let[V,Y]of G.entries()){let W=U4(Y.command),B=`hook[${V}]${Y.matcher?` matcher=${Y.matcher}`:""}`;if(!W){z.push({id:`hooks.${V}.script`,label:B,severity:"info",message:"inline command (no ${CLAUDE_PLUGIN_ROOT} reference); skipped."});continue}let K=Q4(Q,W);try{let L=await Lq(K);if(!L.isFile()){z.push({id:`hooks.${V}.script`,label:B,severity:"error",message:`${K} exists but is not a file.`});continue}if(W4){z.push({id:`hooks.${V}.script`,label:B,severity:"ok",message:`${W} present (executable bit not checked on Windows).`});continue}if((L.mode&73)===0)z.push({id:`hooks.${V}.script`,label:B,severity:"error",message:`${W} is not executable.`,detail:`Run: chmod +x ${K}`});else z.push({id:`hooks.${V}.script`,label:B,severity:"ok",message:`${W} executable.`})}catch(L){let O=L;z.push({id:`hooks.${V}.script`,label:B,severity:"error",message:O.code==="ENOENT"?`${W} missing.`:O.message})}}return z}async function F4($){let q=I0(N($),"bin"),J;try{J=await D1(q,{withFileTypes:!0})}catch(G){let V=G;if(V.code==="ENOENT")return[{id:"bin.present",label:"bin/",severity:"info",message:"not present."}];return[{id:"bin.readable",label:"bin/",severity:"error",message:V.message}]}let X=J.filter((G)=>G.isFile()||G.isSymbolicLink()).map((G)=>G.name);if(X.length===0)return[{id:"bin.entries",label:"bin/",severity:"info",message:"empty."}];let Z=(G)=>G.replace(/\.(sh|bat|cmd|exe|ps1)$/i,""),z=X.filter((G)=>G4.includes(Z(G))),Q=[{id:"bin.entries",label:"bin/",severity:"ok",message:`${X.length} entr${X.length===1?"y":"ies"}.`}];if(z.length>0)Q.push({id:"bin.shadowing",label:"bin/ shadowing",severity:"warn",message:`may shadow system commands: ${z.join(", ")}.`,detail:"Rename bin/ entries to use an agent-specific prefix (see DESIGN §4.5)."});return Q}async function N4($){let q=u($),J;try{J=await D1(q,{withFileTypes:!0})}catch(Z){let z=Z;if(z.code==="ENOENT")return[{id:"skills.present",label:"skills/",severity:"info",message:"not present."}];return[{id:"skills.readable",label:"skills/",severity:"error",message:z.message}]}let X=J.filter((Z)=>Z.isDirectory()).map((Z)=>Z.name);return[{id:"skills.count",label:"skills/",severity:"ok",message:X.length===0?"no skills installed.":`${X.length} installed: ${X.join(", ")}.`}]}async function x1($){let q=N($),J;try{J=await P0(q)}catch(Q){return[{id:"agent.exists",label:"agent directory",severity:"error",message:Q.message}]}if(!J)return[{id:"agent.exists",label:"agent directory",severity:"error",message:`${q} does not exist.`,detail:`Run: kman agent create ${$}`}];let X=[],{checks:Z,profile:z}=await Y4($);if(X.push(...Z),z)X.push(await V4(z));if(X.push(...await B4($)),X.push(...await K4($)),X.push(...await F4($)),X.push(...await N4($)),z){let Q=F0.find((G)=>G.name===z.runtime.default);if(!Q)X.push({id:"agent.backend.known",label:`runtime=${z.runtime.default}`,severity:"warn",message:`no built-in probe for backend "${z.runtime.default}".`});else{let G=await N0(Q);for(let V of G)X.push({...V,id:`agent.${V.id}`})}}return X}async function H1($={}){let q=[];q.push({title:"Environment",checks:[{id:"env.kman_home",label:"KMAN_HOME",severity:"ok",message:t()},{id:"env.platform",label:"platform",severity:"ok",message:`${process.platform} ${process.arch} (node ${process.version})`},await I4()]});let J=$.backends??F0,X=await Promise.all(J.map((Z)=>N0(Z)));if(q.push({title:"Backends",checks:X.flat()}),$.agent){let Z=await x1($.agent);q.push({title:`Agent: ${$.agent}`,checks:Z})}return{sections:q,generatedAt:new Date().toISOString()}}async function I4(){try{let q=(await i()).defaults.runtime;if(!U0(q))return{id:"env.config",label:"config.json",severity:"warn",message:`defaults.runtime="${q}" has no built-in adapter`,detail:v()};return{id:"env.config",label:"config.json",severity:"ok",message:`defaults.runtime=${q}`,detail:v()}}catch($){return{id:"env.config",label:"config.json",severity:"warn",message:$.message,detail:v()}}}function j1(){return new Promise(($)=>{process.stdin.setEncoding("utf8");let q=(J)=>{process.stdin.off("data",q),process.stdin.pause(),$(J)};process.stdin.on("data",q)})}function T1(){let $=new w("agent").description("Agent lifecycle: create, list, show, delete, rename.");return $.command("create <name>").description("Create a new agent at ~/.kman/agents/<name>/.").option("--runtime <runtime>","Default agent runtime (claude-code | copilot-cli).").option("--model <id>","Default model id.").option("--description <text>",'What the agent is for or specializes in — a short label, e.g. "C# code review".').option("--soul <text>","Initial soul prompt body — how the agent thinks and behaves. Written to soul.md.").action(async(q,J)=>{S$(q);let X=N(q);if(await c$(X))throw new U(`Agent "${q}" already exists at ${X}.`);let Z=await i();await S0(X,{recursive:!0}),await S0(g$(X,"skills"),{recursive:!0}),await S0(g$(X,"hooks"),{recursive:!0}),await S0(g$(X,"scripts"),{recursive:!0});let z=J.runtime??Z.defaults.runtime,Q=J.model??Z.defaults.model,G={runtime:{default:z,...Q!==void 0?{model:Q}:{}}};if(J.description)G.description=J.description;let V={...Z.defaults.permission_mode!==void 0?{permission_mode:Z.defaults.permission_mode}:{},...Z.defaults.output_format!==void 0?{output_format:Z.defaults.output_format}:{},...Z.defaults.max_turns!==void 0?{max_turns:Z.defaults.max_turns}:{}};if(Object.keys(V).length>0)G.defaults=V;let Y=r$(q,G);await Nq(Y);let W=J.soul??`# ${q}
72
72
 
73
73
  You are ${q}. Replace this file with your agent's system prompt.
74
- `,V=J.description?`description: ${J.description}
74
+ `,B=J.description?`description: ${D4(J.description)}
75
75
  `:"",K=`---
76
76
  name: ${q}
77
- ${V}---
77
+ ${B}---
78
78
 
79
- ${G}`;await D0(o(q,W.soul.prompt_file),K,"utf8"),await D0(u$(X,"mcp.json"),JSON.stringify({mcpServers:{}},null,2)+`
79
+ ${W}`;await D0(o(q,Y.soul.prompt_file),K,"utf8"),await D0(g$(X,"mcp.json"),JSON.stringify({mcpServers:{}},null,2)+`
80
80
  `,"utf8"),process.stdout.write(`Created agent "${q}" at ${X}
81
- `)}),$.command("list").description("List all agents.").action(async()=>{let q=j$(),J;try{J=await F4(q,{withFileTypes:!0})}catch(Z){if(Z.code==="ENOENT"){process.stdout.write(`(no agents)
82
- `);return}throw Z}let X=J.filter((Z)=>Z.isDirectory()).map((Z)=>Z.name).sort();if(X.length===0){process.stdout.write(`(no agents)
83
- `);return}for(let Z of X)process.stdout.write(`${Z}
81
+ `)}),$.command("list").description("List all agents.").action(async()=>{let q=O$(),J;try{J=await S4(q,{withFileTypes:!0})}catch(Q){if(Q.code==="ENOENT"){process.stdout.write(`(no agents)
82
+ `);return}throw Q}let X=J.filter((Q)=>Q.isDirectory()).map((Q)=>Q.name),z=(await Promise.all(X.map(async(Q)=>{try{return(await O1(U$(Q))).isFile()?Q:void 0}catch{return}}))).filter((Q)=>Q!==void 0).sort();if(z.length===0){process.stdout.write(`(no agents)
83
+ `);return}for(let Q of z)process.stdout.write(`${Q}
84
84
  `)}),$.command("show <name>").description("Show an agent's profile and on-disk paths.").action(async(q)=>{let J=await h(q);if(process.stdout.write(`name: ${J.name}
85
85
  `),J.description)process.stdout.write(`description: ${J.description}
86
86
  `);if(process.stdout.write(`directory: ${N(J.name)}
@@ -88,22 +88,22 @@ ${G}`;await D0(o(q,W.soul.prompt_file),K,"utf8"),await D0(u$(X,"mcp.json"),JSON.
88
88
  `),process.stdout.write(`soul: ${J.soul.prompt_file}
89
89
  `),process.stdout.write(`defaults: permission=${J.defaults.permission_mode??"ask"} `),process.stdout.write(`output=${J.defaults.output_format??"text"}`),J.defaults.max_turns!==void 0)process.stdout.write(` max_turns=${J.defaults.max_turns}`);process.stdout.write(`
90
90
  `);let X=Object.keys(J.runtimeOverrides);if(X.length>0)process.stdout.write(`overrides: ${X.join(", ")}
91
- `)}),$.command("delete <name>").description("Delete an agent's directory and all its contents.").option("--yes","Skip the confirmation prompt.").action(async(q,J)=>{P$(q);let X=N(q);if(!await g$(X))throw new U(`Agent "${q}" not found.`);if(!J.yes){if(!process.stdin.isTTY)throw new U(`Pass --yes to delete "${q}" non-interactively.`);process.stdout.write(`Delete agent "${q}" at ${X}? [y/N] `);let Z=await x1();if(!/^y(es)?$/i.test(Z.trim())){process.stdout.write(`Aborted.
92
- `);return}}await L0(X,{recursive:!0,force:!0}),await L0(O$(q),{recursive:!0,force:!0}),process.stdout.write(`Deleted ${X}
93
- `)}),$.command("rename <from> <to>").description("Rename an agent.").action(async(q,J)=>{P$(q),P$(J);let X=N(q),Z=N(J);if(!await g$(X))throw new U(`Agent "${q}" not found.`);if(await g$(Z))throw new U(`Agent "${J}" already exists.`);await N4(X,Z);let z=await h(J);await Nq({...z,name:J}),await P4(u$(Z,z.soul.prompt_file),J),await L0(O$(q),{recursive:!0,force:!0}),await L0(O$(J),{recursive:!0,force:!0}),process.stdout.write(`Renamed ${q} → ${J}
94
- `)}),$}async function g$($){try{return await I4($),!0}catch{return!1}}async function P4($,q){if(!await g$($))return;let J=await K4($,"utf8");if(!J.startsWith("---")){let B=`---
91
+ `)}),$.command("delete <name>").description("Delete an agent's directory and all its contents.").option("--yes","Skip the confirmation prompt.").action(async(q,J)=>{S$(q);let X=N(q);if(!await c$(X))throw new U(`Agent "${q}" not found.`);if(!J.yes){if(!process.stdin.isTTY)throw new U(`Pass --yes to delete "${q}" non-interactively.`);process.stdout.write(`Delete agent "${q}" at ${X}? [y/N] `);let Z=await j1();if(!/^y(es)?$/i.test(Z.trim())){process.stdout.write(`Aborted.
92
+ `);return}}await L0(X,{recursive:!0,force:!0}),await L0(T$(q),{recursive:!0,force:!0}),process.stdout.write(`Deleted ${X}
93
+ `)}),$.command("rename <from> <to>").description("Rename an agent.").action(async(q,J)=>{S$(q),S$(J);let X=N(q),Z=N(J);if(!await c$(X))throw new U(`Agent "${q}" not found.`);if(await c$(Z))throw new U(`Agent "${J}" already exists.`);await L4(X,Z);let z=await h(J);await Nq({...z,name:J}),await w4(g$(Z,z.soul.prompt_file),J),await L0(T$(q),{recursive:!0,force:!0}),await L0(T$(J),{recursive:!0,force:!0}),process.stdout.write(`Renamed ${q} → ${J}
94
+ `)}),$}function D4($){return JSON.stringify($)}async function c$($){try{return await O1($),!0}catch{return!1}}async function w4($,q){if(!await c$($))return;let J=await P4($,"utf8");if(!J.startsWith("---")){let V=`---
95
95
  name: ${q}
96
96
  ---
97
97
 
98
- `;await D0($,B+J,"utf8");return}let X=J.indexOf(`
99
- ---`,3);if(X<0)return;let Z=J.slice(0,X),z=J.slice(X),Q=Z.replace(/^name:.*$/m,`name: ${q}`),Y=/^name:/m.test(Q)?Q:Q.replace(/^---\n/,`---
98
+ `;await D0($,V+J,"utf8");return}let X=J.indexOf(`
99
+ ---`,3);if(X<0)return;let Z=J.slice(0,X),z=J.slice(X),Q=Z.replace(/^name:.*$/m,`name: ${q}`),G=/^name:/m.test(Q)?Q:Q.replace(/^---\n/,`---
100
100
  name: ${q}
101
- `);await D0($,Y+z,"utf8")}import{isAbsolute as S4,resolve as L4}from"node:path";var D4=/^([A-Za-z0-9._-]+)\/([A-Za-z0-9._-]+)(?:\/([^@\s]+))?(?:@(.+))?$/,w4=new Set(["anthropic-skills"]);function w0($,q){let J=$.trim();if(J.length===0)throw new U("Source cannot be empty.");if(J.startsWith(".")||J.startsWith("/")||J.startsWith("~")||J.startsWith("file://")||/^[A-Za-z]:[\\/]/.test(J)||S4(J)){let Q=J.startsWith("file://")?J.slice(7):J;if(Q.startsWith("~"))Q=Q.replace(/^~/,process.env.HOME??process.env.USERPROFILE??"~");return{kind:"local",path:L4(Q),...q?{ref:q}:{}}}let X=J.match(/^https?:\/\/github\.com\/([A-Za-z0-9._-]+)\/([A-Za-z0-9._-]+?)(?:\.git)?(?:\/tree\/([^/]+))?(?:\/(.+))?$/);if(X){let[,Q="",Y="",B,W]=X,G={kind:"github",owner:Q,repo:Y};if(W)G.subpath=Dq(W);let V=q??B;if(V)G.ref=V;return G}let Z=J.match(/^https?:\/\/gitlab\.com\/([A-Za-z0-9._-]+)\/([A-Za-z0-9._-]+?)(?:\.git)?(?:\/-\/tree\/([^/]+))?(?:\/(.+))?$/);if(Z){let[,Q="",Y="",B,W]=Z,G={kind:"gitlab",owner:Q,repo:Y};if(W)G.subpath=Dq(W);let V=q??B;if(V)G.ref=V;return G}if(J.startsWith("git+")||J.startsWith("ssh://")||/^git@[^:]+:/.test(J)||J.endsWith(".git")){let Q={kind:"git",url:J.startsWith("git+")?J.slice(4):J};if(q)Q.ref=q;return Q}let z=J.match(D4);if(z){let[,Q="",Y="",B,W]=z,G={kind:"github",owner:Q,repo:Y};if(B)G.subpath=Dq(B);let V=q??W;if(V)G.ref=V;return G}if(!J.includes("/")&&w4.has(J)){let Q={kind:"well-known",name:J};if(q)Q.ref=q;return Q}throw new U(`Unrecognized source "${$}". Use a local path, GitHub/GitLab URL, owner/repo[/path][@ref], git URL, or well-known name.`)}function Dq($){let q=$.replace(/\\/g,"/").replace(/^\/+|\/+$/g,"");if(q.length===0)throw new U("Empty source subpath after sanitization.");let J=q.split("/");for(let X of J)if(X===".."||X==="."||X.length===0)throw new U(`Invalid source subpath segment "${X}" in "${$}".`);return J.join("/")}import{readdir as O1,stat as x4}from"node:fs/promises";import{basename as wq,join as c$,relative as xq}from"node:path";var H4=["","skills",".claude/skills"],j4=4,T1=new Set(["node_modules",".git",".turbo","dist","build",".cache"]);async function x0($,q){let J=q?c$($,q):$;if(!(await Hq(J))?.isDirectory())throw new U(`Source path does not exist or is not a directory: ${J}`);let Z=[];if(await jq(J))return Z.push({name:wq(J),dir:J,relPath:xq($,J)||"."}),Z;for(let z of H4){let Q=z?c$(J,z):J;if(!(await Hq(Q))?.isDirectory())continue;let B=await O4(Q);for(let W of B)Z.push({name:wq(W),dir:W,relPath:xq($,W)});if(Z.length>0)return j1(Z)}if(await _1(J,0,$,Z),Z.length===0)throw new U(`No SKILL.md found anywhere under ${J}.`);return j1(Z)}async function O4($){let q;try{q=await O1($,{withFileTypes:!0})}catch{return[]}let J=[];for(let X of q){if(!X.isDirectory()||T1.has(X.name))continue;let Z=c$($,X.name);if(await jq(Z))J.push(Z)}return J}async function _1($,q,J,X){if(q>j4)return;let Z;try{Z=await O1($,{withFileTypes:!0})}catch{return}if(await jq($)){X.push({name:wq($),dir:$,relPath:xq(J,$)||"."});return}for(let z of Z){if(!z.isDirectory()||T1.has(z.name))continue;await _1(c$($,z.name),q+1,J,X)}}async function jq($){return!!(await Hq(c$($,"SKILL.md")))?.isFile()}async function Hq($){try{return await x4($)}catch{return null}}function j1($){let q=new Set,J=[];for(let X of $){if(q.has(X.dir))continue;q.add(X.dir),J.push(X)}return J}import{cp as A1,mkdir as k4,stat as A4}from"node:fs/promises";import{join as E4}from"node:path";import{readFile as T4,writeFile as _4,stat as f4}from"node:fs/promises";import{join as R4}from"node:path";var y4=".kman-skill.json";function Oq($){return R4($,y4)}async function H0($){try{let q=await T4(Oq($),"utf8");return JSON.parse(q)}catch(q){if(q.code==="ENOENT")return null;throw q}}async function f1($,q){await _4(Oq($),JSON.stringify(q,null,2)+`
102
- `,"utf8")}async function R1($){try{return(await f4(Oq($))).mtime}catch{return null}}function y1($){switch($.kind){case"local":return $.path;case"github":return $.subpath?`${$.owner}/${$.repo}/${$.subpath}`:`${$.owner}/${$.repo}`;case"gitlab":return $.subpath?`gitlab:${$.owner}/${$.repo}/${$.subpath}`:`gitlab:${$.owner}/${$.repo}`;case"git":return $.url;case"well-known":return $.name}}function k1($){switch($.kind){case"github":return`https://github.com/${$.owner}/${$.repo}`;case"gitlab":return`https://gitlab.com/${$.owner}/${$.repo}`;case"git":return $.url;default:return}}async function j0($){let q=$.installName??$.skill.name,J=E4(u($.agent),q),X=await b4(J);if(X&&!$.force)throw new U(`Skill "${q}" already exists at ${J}. Use --force to overwrite.`);if(await k4(u($.agent),{recursive:!0}),X)await A1($.skill.dir,J,{recursive:!0,force:!0});else await A1($.skill.dir,J,{recursive:!0});let Z={source:y1($.source),installed_at:new Date().toISOString()},z=k1($.source);if(z)Z.source_url=z;if("ref"in $.source&&$.source.ref)Z.ref=$.source.ref;return await f1(J,Z),{installedPath:J,manifest:Z}}async function b4($){try{return await A4($),!0}catch{return!1}}import{readdir as c4,stat as m4}from"node:fs/promises";import{join as E1}from"node:path";import{spawn as h4}from"node:child_process";import{mkdtemp as C4,rm as v4}from"node:fs/promises";import{tmpdir as u4}from"node:os";import{join as g4}from"node:path";async function T0($){switch($.kind){case"local":return{rootDir:$.path,subpath:$.subpath,cleanup:async()=>{}};case"github":return O0(`https://github.com/${$.owner}/${$.repo}.git`,$.ref,$.subpath);case"gitlab":return O0(`https://gitlab.com/${$.owner}/${$.repo}.git`,$.ref,$.subpath);case"git":return O0($.url,$.ref,$.subpath);case"well-known":{let J={"anthropic-skills":"https://github.com/anthropics/skills.git"}[$.name];if(!J)throw new U(`Unknown well-known skill source "${$.name}".`);return O0(J,$.ref,void 0)}default:{let q=$;throw new U("Unsupported source kind.")}}}async function O0($,q,J){let X=await C4(g4(u4(),"kman-skill-"));if(await m$(["clone","--depth","1",$,X]),q)try{await m$(["fetch","--depth","1","origin",q],X),await m$(["checkout","FETCH_HEAD"],X)}catch{await m$(["fetch","--unshallow"],X).catch(()=>{}),await m$(["checkout",q],X)}return{rootDir:X,subpath:J,cleanup:()=>v4(X,{recursive:!0,force:!0})}}function m$($,q){return new Promise((J,X)=>{let Z=h4("git",$,{cwd:q,stdio:["ignore","pipe","pipe"]}),z="";Z.stderr?.on("data",(Q)=>{z+=Q.toString()}),Z.on("error",(Q)=>{if(Q.code==="ENOENT")X(new $$("git not found on PATH; cannot fetch skill sources."));else X(Q)}),Z.on("exit",(Q)=>{if(Q===0)J();else X(new U(`git ${$.join(" ")} failed: ${z.trim()}`))})})}async function b1($){let q=E1(u($.agent),$.skill),J=await H0(q);if(!J)throw new U(`Skill "${$.skill}" has no .kman-skill.json manifest; cannot update. Use "skills remove" then "skills add".`);if(!$.force){let z=await R1(q);if(z){let Q=await d4(q);if(Q&&Q.getTime()>z.getTime()+1000)throw new U(`Skill "${$.skill}" has local modifications newer than the manifest. Re-running update would overwrite them. Pass --force or "skills remove" first.`)}}let X=w0(J.source,J.ref),Z=await T0(X);try{let z=await x0(Z.rootDir,Z.subpath),Q=z.find((B)=>B.name===$.skill)??z[0];if(!Q)throw new U(`No skill named "${$.skill}" in source ${J.source}.`);let{installedPath:Y}=await j0({agent:$.agent,source:X,skill:Q,installName:$.skill,force:!0});return{installedPath:Y}}finally{await Z.cleanup()}}async function d4($){let q=null,J=[$];while(J.length>0){let X=J.pop(),Z;try{Z=await c4(X,{withFileTypes:!0})}catch{continue}for(let z of Z){let Q=E1(X,z.name);if(z.isDirectory()){J.push(Q);continue}if(z.name===".kman-skill.json")continue;try{let Y=await m4(Q);if(!q||Y.mtime>q)q=Y.mtime}catch{}}}return q}import{rm as l4,stat as p4}from"node:fs/promises";import{join as n4}from"node:path";async function h1($,q){let J=n4(u($),q);try{if(!(await p4(J)).isDirectory())throw new U(`Skill path is not a directory: ${J}`)}catch(X){if(X.code==="ENOENT")throw new U(`Skill "${q}" not found for agent "${$}".`);throw X}return await l4(J,{recursive:!0,force:!0}),J}import{readdir as s4}from"node:fs/promises";import{join as i4}from"node:path";async function _0($){let q=u($),J;try{J=await s4(q,{withFileTypes:!0})}catch(Z){if(Z.code==="ENOENT")return[];throw Z}let X=[];for(let Z of J){if(!Z.isDirectory())continue;let z=i4(q,Z.name),Q=await H0(z);X.push({name:Z.name,dir:z,manifest:Q})}return X.sort((Z,z)=>Z.name.localeCompare(z.name))}function C1($){let q=[],J;for(let X=0;X<$.length;X++){let Z=$[X];if(Z==="-a"||Z==="--agent"){let z=$[X+1];if(z===void 0||z.startsWith("-"))throw new U(`Missing value for ${Z}.`);Tq(J),J=z,X++;continue}if(Z.startsWith("--agent=")){Tq(J),J=Z.slice(8);continue}if(Z.startsWith("-a=")){Tq(J),J=Z.slice(3);continue}q.push(Z)}return{rest:q,agent:J}}function Tq($){if($!==void 0)throw new U("--agent specified more than once.")}function d(){let $=process.env.KMAN_SELECTED_AGENT;if(!$)throw new U("Missing required --agent <name>. Agent-scoped commands need a target agent.");return $}function v1(){return process.env.KMAN_SELECTED_AGENT||void 0}function L$($){if(process.env.KMAN_SELECTED_AGENT)throw new U(`Subcommand "${$}" does not accept --agent.`)}import{emitKeypressEvents as t4}from"node:readline";function o4($){let q=$.selected.length;if(q===0)return;$.cursor=($.cursor-1+q)%q}function a4($){let q=$.selected.length;if(q===0)return;$.cursor=($.cursor+1)%q}function r4($){if($.selected.length===0)return;$.selected[$.cursor]=!$.selected[$.cursor]}function e4($){let q=$.selected.length>0&&$.selected.every(Boolean);$.selected.fill(!q)}var y="\x1B[",S={hideCursor:`${y}?25l`,showCursor:`${y}?25h`,clearDown:`${y}J`,moveToCol1:`${y}1G`,up:($)=>$>0?`${y}${$}A`:"",dim:($)=>`${y}2m${$}${y}22m`,bold:($)=>`${y}1m${$}${y}22m`,cyan:($)=>`${y}36m${$}${y}39m`,green:($)=>`${y}32m${$}${y}39m`,red:($)=>`${y}31m${$}${y}39m`};function $9($,q,J,X){let Z=[];Z.push(`${S.bold("?")} ${$} ${S.dim("(↑/↓ navigate · space toggle · a select all · enter confirm · esc cancel)")}`);for(let[z,Q]of q.entries()){let Y=z===J.cursor,B=J.selected[z],W=Y?S.cyan("❯"):" ",G=B?S.green("●"):S.dim("○"),V=Y?S.cyan(Q.label):Q.label,K=Q.hint?` ${S.dim(Q.hint)}`:"";Z.push(`${W} ${G} ${V}${K}`)}if(X)Z.push(S.red(X));return{text:Z.join(`
101
+ `);await D0($,G+z,"utf8")}import{isAbsolute as x4,resolve as H4}from"node:path";var j4=/^([A-Za-z0-9._-]+)\/([A-Za-z0-9._-]+)(?:\/([^@\s]+))?(?:@(.+))?$/,O4=new Set(["anthropic-skills"]);function w0($,q){let J=$.trim();if(J.length===0)throw new U("Source cannot be empty.");if(J.startsWith(".")||J.startsWith("/")||J.startsWith("~")||J.startsWith("file://")||/^[A-Za-z]:[\\/]/.test(J)||x4(J)){let Q=J.startsWith("file://")?J.slice(7):J;if(Q.startsWith("~"))Q=Q.replace(/^~/,process.env.HOME??process.env.USERPROFILE??"~");return{kind:"local",path:H4(Q),...q?{ref:q}:{}}}let X=J.match(/^https?:\/\/github\.com\/([A-Za-z0-9._-]+)\/([A-Za-z0-9._-]+?)(?:\.git)?(?:\/tree\/([^/]+))?(?:\/(.+))?$/);if(X){let[,Q="",G="",V,Y]=X,W={kind:"github",owner:Q,repo:G};if(Y)W.subpath=Dq(Y);let B=q??V;if(B)W.ref=B;return W}let Z=J.match(/^https?:\/\/gitlab\.com\/([A-Za-z0-9._-]+)\/([A-Za-z0-9._-]+?)(?:\.git)?(?:\/-\/tree\/([^/]+))?(?:\/(.+))?$/);if(Z){let[,Q="",G="",V,Y]=Z,W={kind:"gitlab",owner:Q,repo:G};if(Y)W.subpath=Dq(Y);let B=q??V;if(B)W.ref=B;return W}if(J.startsWith("git+")||J.startsWith("ssh://")||/^git@[^:]+:/.test(J)||J.endsWith(".git")){let Q={kind:"git",url:J.startsWith("git+")?J.slice(4):J};if(q)Q.ref=q;return Q}let z=J.match(j4);if(z){let[,Q="",G="",V,Y]=z,W={kind:"github",owner:Q,repo:G};if(V)W.subpath=Dq(V);let B=q??Y;if(B)W.ref=B;return W}if(!J.includes("/")&&O4.has(J)){let Q={kind:"well-known",name:J};if(q)Q.ref=q;return Q}throw new U(`Unrecognized source "${$}". Use a local path, GitHub/GitLab URL, owner/repo[/path][@ref], git URL, or well-known name.`)}function Dq($){let q=$.replace(/\\/g,"/").replace(/^\/+|\/+$/g,"");if(q.length===0)throw new U("Empty source subpath after sanitization.");let J=q.split("/");for(let X of J)if(X===".."||X==="."||X.length===0)throw new U(`Invalid source subpath segment "${X}" in "${$}".`);return J.join("/")}import{readdir as f1,stat as T4}from"node:fs/promises";import{basename as wq,join as m$,relative as xq}from"node:path";var _4=["","skills",".claude/skills"],f4=4,R1=new Set(["node_modules",".git",".turbo","dist","build",".cache"]);async function x0($,q){let J=q?m$($,q):$;if(!(await Hq(J))?.isDirectory())throw new U(`Source path does not exist or is not a directory: ${J}`);let Z=[];if(await jq(J))return Z.push({name:wq(J),dir:J,relPath:xq($,J)||"."}),Z;for(let z of _4){let Q=z?m$(J,z):J;if(!(await Hq(Q))?.isDirectory())continue;let V=await R4(Q);for(let Y of V)Z.push({name:wq(Y),dir:Y,relPath:xq($,Y)});if(Z.length>0)return _1(Z)}if(await y1(J,0,$,Z),Z.length===0)throw new U(`No SKILL.md found anywhere under ${J}.`);return _1(Z)}async function R4($){let q;try{q=await f1($,{withFileTypes:!0})}catch{return[]}let J=[];for(let X of q){if(!X.isDirectory()||R1.has(X.name))continue;let Z=m$($,X.name);if(await jq(Z))J.push(Z)}return J}async function y1($,q,J,X){if(q>f4)return;let Z;try{Z=await f1($,{withFileTypes:!0})}catch{return}if(await jq($)){X.push({name:wq($),dir:$,relPath:xq(J,$)||"."});return}for(let z of Z){if(!z.isDirectory()||R1.has(z.name))continue;await y1(m$($,z.name),q+1,J,X)}}async function jq($){return!!(await Hq(m$($,"SKILL.md")))?.isFile()}async function Hq($){try{return await T4($)}catch{return null}}function _1($){let q=new Set,J=[];for(let X of $){if(q.has(X.dir))continue;q.add(X.dir),J.push(X)}return J}import{cp as h1,mkdir as h4,stat as C4}from"node:fs/promises";import{join as v4}from"node:path";import{readFile as y4,writeFile as k4,stat as A4}from"node:fs/promises";import{join as E4}from"node:path";var b4=".kman-skill.json";function Oq($){return E4($,b4)}async function H0($){try{let q=await y4(Oq($),"utf8");return JSON.parse(q)}catch(q){if(q.code==="ENOENT")return null;throw q}}async function k1($,q){await k4(Oq($),JSON.stringify(q,null,2)+`
102
+ `,"utf8")}async function A1($){try{return(await A4(Oq($))).mtime}catch{return null}}function E1($){switch($.kind){case"local":return $.path;case"github":return $.subpath?`${$.owner}/${$.repo}/${$.subpath}`:`${$.owner}/${$.repo}`;case"gitlab":return $.subpath?`gitlab:${$.owner}/${$.repo}/${$.subpath}`:`gitlab:${$.owner}/${$.repo}`;case"git":return $.url;case"well-known":return $.name}}function b1($){switch($.kind){case"github":return`https://github.com/${$.owner}/${$.repo}`;case"gitlab":return`https://gitlab.com/${$.owner}/${$.repo}`;case"git":return $.url;default:return}}async function j0($){let q=$.installName??$.skill.name,J=v4(u($.agent),q),X=await u4(J);if(X&&!$.force)throw new U(`Skill "${q}" already exists at ${J}. Use --force to overwrite.`);if(await h4(u($.agent),{recursive:!0}),X)await h1($.skill.dir,J,{recursive:!0,force:!0});else await h1($.skill.dir,J,{recursive:!0});let Z={source:E1($.source),installed_at:new Date().toISOString()},z=b1($.source);if(z)Z.source_url=z;if("ref"in $.source&&$.source.ref)Z.ref=$.source.ref;return await k1(J,Z),{installedPath:J,manifest:Z}}async function u4($){try{return await C4($),!0}catch{return!1}}import{readdir as p4,stat as n4}from"node:fs/promises";import{join as C1}from"node:path";import{spawn as g4}from"node:child_process";import{mkdtemp as c4,rm as m4}from"node:fs/promises";import{tmpdir as d4}from"node:os";import{join as l4}from"node:path";async function T0($){switch($.kind){case"local":return{rootDir:$.path,subpath:$.subpath,cleanup:async()=>{}};case"github":return O0(`https://github.com/${$.owner}/${$.repo}.git`,$.ref,$.subpath);case"gitlab":return O0(`https://gitlab.com/${$.owner}/${$.repo}.git`,$.ref,$.subpath);case"git":return O0($.url,$.ref,$.subpath);case"well-known":{let J={"anthropic-skills":"https://github.com/anthropics/skills.git"}[$.name];if(!J)throw new U(`Unknown well-known skill source "${$.name}".`);return O0(J,$.ref,void 0)}default:{let q=$;throw new U("Unsupported source kind.")}}}async function O0($,q,J){let X=await c4(l4(d4(),"kman-skill-"));if(await d$(["clone","--depth","1",$,X]),q)try{await d$(["fetch","--depth","1","origin",q],X),await d$(["checkout","FETCH_HEAD"],X)}catch{await d$(["fetch","--unshallow"],X).catch(()=>{}),await d$(["checkout",q],X)}return{rootDir:X,subpath:J,cleanup:()=>m4(X,{recursive:!0,force:!0})}}function d$($,q){return new Promise((J,X)=>{let Z=g4("git",$,{cwd:q,stdio:["ignore","pipe","pipe"]}),z="";Z.stderr?.on("data",(Q)=>{z+=Q.toString()}),Z.on("error",(Q)=>{if(Q.code==="ENOENT")X(new $$("git not found on PATH; cannot fetch skill sources."));else X(Q)}),Z.on("exit",(Q)=>{if(Q===0)J();else X(new U(`git ${$.join(" ")} failed: ${z.trim()}`))})})}async function v1($){let q=C1(u($.agent),$.skill),J=await H0(q);if(!J)throw new U(`Skill "${$.skill}" has no .kman-skill.json manifest; cannot update. Use "skills remove" then "skills add".`);if(!$.force){let z=await A1(q);if(z){let Q=await s4(q);if(Q&&Q.getTime()>z.getTime()+1000)throw new U(`Skill "${$.skill}" has local modifications newer than the manifest. Re-running update would overwrite them. Pass --force or "skills remove" first.`)}}let X=w0(J.source,J.ref),Z=await T0(X);try{let z=await x0(Z.rootDir,Z.subpath),Q=z.find((V)=>V.name===$.skill)??z[0];if(!Q)throw new U(`No skill named "${$.skill}" in source ${J.source}.`);let{installedPath:G}=await j0({agent:$.agent,source:X,skill:Q,installName:$.skill,force:!0});return{installedPath:G}}finally{await Z.cleanup()}}async function s4($){let q=null,J=[$];while(J.length>0){let X=J.pop(),Z;try{Z=await p4(X,{withFileTypes:!0})}catch{continue}for(let z of Z){let Q=C1(X,z.name);if(z.isDirectory()){J.push(Q);continue}if(z.name===".kman-skill.json")continue;try{let G=await n4(Q);if(!q||G.mtime>q)q=G.mtime}catch{}}}return q}import{rm as i4,stat as t4}from"node:fs/promises";import{join as o4}from"node:path";async function u1($,q){let J=o4(u($),q);try{if(!(await t4(J)).isDirectory())throw new U(`Skill path is not a directory: ${J}`)}catch(X){if(X.code==="ENOENT")throw new U(`Skill "${q}" not found for agent "${$}".`);throw X}return await i4(J,{recursive:!0,force:!0}),J}import{readdir as a4}from"node:fs/promises";import{join as r4}from"node:path";async function _0($){let q=u($),J;try{J=await a4(q,{withFileTypes:!0})}catch(Z){if(Z.code==="ENOENT")return[];throw Z}let X=[];for(let Z of J){if(!Z.isDirectory())continue;let z=r4(q,Z.name),Q=await H0(z);X.push({name:Z.name,dir:z,manifest:Q})}return X.sort((Z,z)=>Z.name.localeCompare(z.name))}function g1($){let q=[],J;for(let X=0;X<$.length;X++){let Z=$[X];if(Z==="-a"||Z==="--agent"){let z=$[X+1];if(z===void 0||z.startsWith("-"))throw new U(`Missing value for ${Z}.`);Tq(J),J=z,X++;continue}if(Z.startsWith("--agent=")){Tq(J),J=Z.slice(8);continue}if(Z.startsWith("-a=")){Tq(J),J=Z.slice(3);continue}q.push(Z)}return{rest:q,agent:J}}function Tq($){if($!==void 0)throw new U("--agent specified more than once.")}function d(){let $=process.env.KMAN_SELECTED_AGENT;if(!$)throw new U("Missing required --agent <name>. Agent-scoped commands need a target agent.");return $}function c1(){return process.env.KMAN_SELECTED_AGENT||void 0}function D$($){if(process.env.KMAN_SELECTED_AGENT)throw new U(`Subcommand "${$}" does not accept --agent.`)}import{emitKeypressEvents as e4}from"node:readline";function $9($){let q=$.selected.length;if(q===0)return;$.cursor=($.cursor-1+q)%q}function q9($){let q=$.selected.length;if(q===0)return;$.cursor=($.cursor+1)%q}function J9($){if($.selected.length===0)return;$.selected[$.cursor]=!$.selected[$.cursor]}function X9($){let q=$.selected.length>0&&$.selected.every(Boolean);$.selected.fill(!q)}var y="\x1B[",S={hideCursor:`${y}?25l`,showCursor:`${y}?25h`,clearDown:`${y}J`,moveToCol1:`${y}1G`,up:($)=>$>0?`${y}${$}A`:"",dim:($)=>`${y}2m${$}${y}22m`,bold:($)=>`${y}1m${$}${y}22m`,cyan:($)=>`${y}36m${$}${y}39m`,green:($)=>`${y}32m${$}${y}39m`,red:($)=>`${y}31m${$}${y}39m`};function Z9($,q,J,X){let Z=[];Z.push(`${S.bold("?")} ${$} ${S.dim("(↑/↓ navigate · space toggle · a select all · enter confirm · esc cancel)")}`);for(let[z,Q]of q.entries()){let G=z===J.cursor,V=J.selected[z],Y=G?S.cyan("❯"):" ",W=V?S.green("●"):S.dim("○"),B=G?S.cyan(Q.label):Q.label,K=Q.hint?` ${S.dim(Q.hint)}`:"";Z.push(`${Y} ${W} ${B}${K}`)}if(X)Z.push(S.red(X));return{text:Z.join(`
103
103
  `)+`
104
- `,lineCount:Z.length}}async function u1($){let{items:q,message:J}=$;if(q.length===0)return[];let X=$.requireOne!==!1,Z=new Set($.initialSelected??[]),z={cursor:0,selected:q.map((K)=>Z.has(K.value))},Q=process.stdout,Y=process.stdin,B=Y.isRaw===!0,W=0,G="";function V(){if(W>0)Q.write(S.moveToCol1),Q.write(S.up(W)),Q.write(S.clearDown);let K=$9(J,q,z,G);Q.write(K.text),W=K.lineCount}return new Promise((K,L)=>{function O(){Y.off("keypress",vq);try{if(!B&&Y.isTTY)Y.setRawMode(!1)}catch{}Y.pause(),Q.write(S.showCursor)}function l(){Q.write(S.moveToCol1),Q.write(S.up(W)),Q.write(S.clearDown)}function B$(){O(),l();let w$=q.filter((e,E)=>z.selected[E]);Q.write(`${S.bold("✓")} ${J} ${S.dim("—")} ${S.green(w$.map((e)=>e.label).join(", "))}
105
- `),K(w$.map((e)=>e.value))}function n$(){O(),l(),Q.write(`${S.red("✗")} ${J} ${S.dim("(cancelled)")}
106
- `),L(new U("Selection cancelled."))}function vq(w$,e){let E=e.name;if(e.ctrl&&E==="c")return n$();if(E==="escape"||E==="q")return n$();if(E==="up"||E==="k")return o4(z),G="",V();if(E==="down"||E==="j")return a4(z),G="",V();if(E==="space")return r4(z),G="",V();if(E==="a")return e4(z),G="",V();if(E==="return"){if(X&&z.selected.every((L3)=>!L3))return G="! Select at least one item, or press Esc to cancel.",V();return B$()}}try{if(t4(Y),Y.isTTY)Y.setRawMode(!0);Y.resume(),Q.write(S.hideCursor),Y.on("keypress",vq),V()}catch(w$){O(),L(w$)}})}function g1(){let $=new w("skills").description("Per-agent skills management (add | list | show | update | remove).");return $.command("add").description("Install one or more skills from a source.").requiredOption("--source <source>","Source (path, owner/repo[/path][@ref], URL, or well-known name).").option("--skill <name>","Skill name to install (repeatable).",q9,[]).option("--all","Install every skill discovered in the source.").option("--ref <ref>","Pin a branch, tag, or commit.").option("--force","Overwrite an existing skill of the same name.").action(async(q)=>{let J=d(),X=w0(q.source,q.ref),Z=await T0(X);try{let z=await x0(Z.rootDir,Z.subpath),Q=await J9(z,q.skill.length>0?q.skill:void 0,q.all===!0);for(let Y of Q){let B=await j0({agent:J,source:X,skill:Y,force:q.force===!0});process.stdout.write(`Installed ${Y.name} → ${B.installedPath}
104
+ `,lineCount:Z.length}}async function m1($){let{items:q,message:J}=$;if(q.length===0)return[];let X=$.requireOne!==!1,Z=new Set($.initialSelected??[]),z={cursor:0,selected:q.map((K)=>Z.has(K.value))},Q=process.stdout,G=process.stdin,V=G.isRaw===!0,Y=0,W="";function B(){if(Y>0)Q.write(S.moveToCol1),Q.write(S.up(Y)),Q.write(S.clearDown);let K=Z9(J,q,z,W);Q.write(K.text),Y=K.lineCount}return new Promise((K,L)=>{function O(){G.off("keypress",vq);try{if(!V&&G.isTTY)G.setRawMode(!1)}catch{}G.pause(),Q.write(S.showCursor)}function l(){Q.write(S.moveToCol1),Q.write(S.up(Y)),Q.write(S.clearDown)}function V$(){O(),l();let x$=q.filter((e,E)=>z.selected[E]);Q.write(`${S.bold("✓")} ${J} ${S.dim("—")} ${S.green(x$.map((e)=>e.label).join(", "))}
105
+ `),K(x$.map((e)=>e.value))}function s$(){O(),l(),Q.write(`${S.red("✗")} ${J} ${S.dim("(cancelled)")}
106
+ `),L(new U("Selection cancelled."))}function vq(x$,e){let E=e.name;if(e.ctrl&&E==="c")return s$();if(E==="escape"||E==="q")return s$();if(E==="up"||E==="k")return $9(z),W="",B();if(E==="down"||E==="j")return q9(z),W="",B();if(E==="space")return J9(z),W="",B();if(E==="a")return X9(z),W="",B();if(E==="return"){if(X&&z.selected.every((x3)=>!x3))return W="! Select at least one item, or press Esc to cancel.",B();return V$()}}try{if(e4(G),G.isTTY)G.setRawMode(!0);G.resume(),Q.write(S.hideCursor),G.on("keypress",vq),B()}catch(x$){O(),L(x$)}})}function d1(){let $=new w("skills").description("Per-agent skills management (add | list | show | update | remove).");return $.command("add").description("Install one or more skills from a source.").requiredOption("--source <source>","Source (path, owner/repo[/path][@ref], URL, or well-known name).").option("--skill <name>","Skill name to install (repeatable).",z9,[]).option("--all","Install every skill discovered in the source.").option("--ref <ref>","Pin a branch, tag, or commit.").option("--force","Overwrite an existing skill of the same name.").action(async(q)=>{let J=d(),X=w0(q.source,q.ref),Z=await T0(X);try{let z=await x0(Z.rootDir,Z.subpath),Q=await Q9(z,q.skill.length>0?q.skill:void 0,q.all===!0);for(let G of Q){let V=await j0({agent:J,source:X,skill:G,force:q.force===!0});process.stdout.write(`Installed ${G.name} → ${V.installedPath}
107
107
  `)}}finally{await Z.cleanup()}}),$.command("list").description("List installed skills for an agent.").action(async()=>{let q=d(),J=await _0(q);if(J.length===0){process.stdout.write(`(no skills installed for ${q})
108
108
  `);return}for(let X of J){let Z=X.manifest?.source??"local",z=X.manifest?.ref?`@${X.manifest.ref}`:"";process.stdout.write(`${X.name} ${Z}${z}
109
109
  `)}}),$.command("show").description("Show details for an installed skill.").requiredOption("--skill <name>","Skill name.").action(async(q)=>{let J=d(),Z=(await _0(J)).find((z)=>z.name===q.skill);if(!Z)throw new U(`Skill "${q.skill}" not installed for agent "${J}".`);if(process.stdout.write(`name: ${Z.name}
@@ -113,41 +113,41 @@ name: ${q}
113
113
  `);if(Z.manifest.ref)process.stdout.write(`ref: ${Z.manifest.ref}
114
114
  `);process.stdout.write(`installed_at: ${Z.manifest.installed_at}
115
115
  `)}else process.stdout.write(`(no manifest — local skill, detached)
116
- `)}),$.command("update").description("Re-fetch an installed skill from its recorded source.").option("--skill <name>","Skill name to update.").option("--all","Update every installed skill.").option("--force","Bypass local-modification safety check.").action(async(q)=>{let J=d();if(!q.skill&&!q.all)throw new U("Pass --skill <name> or --all.");let X=q.all?(await _0(J)).filter((Z)=>!!Z.manifest).map((Z)=>Z.name):[q.skill];for(let Z of X){let z=await b1({agent:J,skill:Z,force:q.force===!0});process.stdout.write(`Updated ${Z} → ${z.installedPath}
117
- `)}}),$.command("remove").description("Remove an installed skill.").requiredOption("--skill <name>","Skill name.").action(async(q)=>{let J=d(),X=await h1(J,q.skill);process.stdout.write(`Removed ${X}
118
- `)}),$}function q9($,q){return[...q,$]}async function J9($,q,J){if($.length===0)throw new U("No SKILL.md found in source.");if(q&&q.length>0){let X=$.filter((Z)=>q.includes(Z.name));if(X.length===0)throw new U(`Requested skills not found in source. Available: ${$.map((Z)=>Z.name).join(", ")}.`);return X}if(J)return $;if($.length===1)return $;if(process.stdin.isTTY&&process.stdout.isTTY)return X9($);throw new U(`Source contains multiple skills. Pass --skill <name> (repeatable) or --all. Discovered: ${$.map((X)=>X.name).join(", ")}.`)}async function X9($){return u1({message:`Select skills to install (${$.length} discovered)`,items:$.map((q)=>({value:q,label:q.name,hint:q.relPath}))})}import{spawn as Z9}from"node:child_process";function D$($,q){let J={...process.env,...$.env},X={cwd:$.cwd,env:J,stdio:"inherit",shell:!1,...q.options};return Z9(q.command,q.args,X)}var z9={ask:"default",auto:"acceptEdits",yolo:"bypassPermissions"};class c1{name="claude-code";capabilities={supportClaudeCodePlugin:!0,supportsAppendSystemPrompt:!0,supportsNativeResume:!0};binary;constructor($){this.binary=$??process.env.KMAN_CLAUDE_BIN??"claude"}mapPermission($){return z9[$]??"default"}async spawn($,q){let{pluginDir:J,pluginAgent:X}=await K$($.profile,"claude"),Z=this.buildArgs($,J,X,!1);return D$($,{command:this.binary,args:Z})}async chat($,q){let{pluginDir:J,pluginAgent:X}=await K$($.profile,"claude"),Z=this.buildArgs($,J,X,!0);return D$($,{command:this.binary,args:Z})}buildArgs($,q,J,X){let Z=[];if(Z.push("--plugin-dir",q),Z.push("--agent",J),$.model)Z.push("--model",$.model);let z=$.permissionModeRaw??this.mapPermission($.permission);if(Z.push("--permission-mode",z),$.maxTurns!==void 0)Z.push("--max-turns",String($.maxTurns));if(!X){if(Z.push("--output-format",$.outputFormat),$.stream&&$.outputFormat==="stream-json")Z.push("--include-partial-messages")}for(let Q of $.extraArgs)Z.push(Q);if(!X&&$.task!==void 0)Z.push("--print",$.task);return Z}}function m1($){return new c1($)}var d1={ask:null,auto:"--allow-all-tools",yolo:"--yolo"};class l1{name="copilot-cli";capabilities={supportClaudeCodePlugin:!0,supportsAppendSystemPrompt:!0,supportsNativeResume:!0};binary;constructor($){this.binary=$??process.env.KMAN_COPILOT_BIN??"copilot"}mapPermission($){return d1[$]??"(default)"}async spawn($,q){let{pluginDir:J,pluginAgent:X}=await K$($.profile,"copilot"),Z=this.buildArgs($,J,X,!1);return D$($,{command:this.binary,args:Z})}async chat($,q){let{pluginDir:J,pluginAgent:X}=await K$($.profile,"copilot"),Z=this.buildArgs($,J,X,!0);return D$($,{command:this.binary,args:Z})}buildArgs($,q,J,X){let Z=[];if(Z.push("--plugin-dir",q),Z.push("--agent",J),$.permissionModeRaw===void 0){let z=d1[$.permission];if(z)Z.push(z)}if($.model)Z.push("--model",$.model);if(!X){if($.outputFormat==="stream-json")Z.push("--output-format","json","--stream","on");else if($.outputFormat==="json"||$.outputFormat==="text")Z.push("--output-format",$.outputFormat)}for(let z of $.extraArgs)Z.push(z);if(!X&&$.task!==void 0)Z.push("-p",$.task);return Z}}function p1($){return new l1($)}var n1={"claude-code":m1,"copilot-cli":p1};function f0($){let q=n1[$];if(!q)throw new U(`Unknown backend "${$}". Built-in backends: ${Object.keys(n1).join(", ")}.`);return q()}import{createInterface as U9}from"node:readline";var H={ParseError:-32700,InvalidRequest:-32600,MethodNotFound:-32601,InvalidParams:-32602,InternalError:-32603};class T extends Error{code;data;constructor($,q,J){super(q);if(this.code=$,J!==void 0)this.data=J}}import{readFile as Q9,readdir as Y9,stat as G9}from"node:fs/promises";async function R0($){let q=j$(),J;try{J=await Y9(q,{withFileTypes:!0})}catch(Z){if(Z.code==="ENOENT")return[];throw Z}let X=[];for(let Z of J){if(!Z.isDirectory())continue;if($&&Z.name===$)continue;try{let z=await h(Z.name);X.push({name:z.name,description:z.description,runtime:z.runtime.default,model:z.runtime.model})}catch{}}return X.sort((Z,z)=>Z.name.localeCompare(z.name)),X}async function y0($){let q=await h($),J="";try{J=await Q9(o(q.name,q.soul.prompt_file),"utf8")}catch(X){if(X.code!=="ENOENT")throw X}return{profile:q,soul:J,directory:N(q.name)}}async function _q($){try{return(await G9(N($))).isDirectory()}catch{return!1}}import{spawn as W9}from"node:child_process";async function s1($,q,J){let X=[...$.baseArgs,"-a",q.agent,"run","--task",q.task];if(q.runtime)X.push("--runtime",q.runtime);if(q.model)X.push("--model",q.model);if(q.permission)X.push("--permission",q.permission);if(q.outputFormat)X.push("--output",q.outputFormat);if(q.cwd)X.push("--cwd",q.cwd);let Z={...process.env};if(q.appendToRunChain){let z=Z.KMAN_RUN_CHAIN??"";Z.KMAN_RUN_CHAIN=z?`${z},${q.appendToRunChain}`:q.appendToRunChain}return new Promise((z,Q)=>{let Y=W9($.command,X,{stdio:["ignore","pipe","pipe"],env:Z,shell:!1}),B="",W="";Y.stdout?.setEncoding("utf8"),Y.stderr?.setEncoding("utf8"),Y.stdout?.on("data",(V)=>{B+=V}),Y.stderr?.on("data",(V)=>{W+=V});let G;if(J&&J>0)G=setTimeout(()=>{if(!Y.killed)Y.kill("SIGTERM")},J);Y.on("error",(V)=>{if(G)clearTimeout(G);Q(V)}),Y.on("exit",(V)=>{if(G)clearTimeout(G);z({exitCode:V??0,stdout:B,stderr:W})})})}var i1={name:"kman_list_agents",description:"List kman-managed specialist agents available on this machine. Use first when a task may benefit from delegation. Returns each agent's name, description, default runtime, and default model; the local roster may change between conversations.",inputSchema:{type:"object",properties:{},additionalProperties:!1}},t1={name:"kman_describe_agent",description:"Read one agent's full profile and soul prompt. Use after `kman_list_agents` to confirm fit when the roster summary is not enough or multiple agents look relevant.",inputSchema:{type:"object",properties:{agent:{type:"string",description:"Agent name (lowercase kebab-case)."}},required:["agent"],additionalProperties:!1}},o1={name:"kman_run_agent",description:"Run a one-shot task with a kman-managed peer agent and return its stdout. Use after choosing an agent from `kman_list_agents`. The task must be self-contained: the peer receives this text, not your conversation or scratch notes, so include relevant context, file paths, constraints, and done criteria. Sessions are not shared; self-delegation and delegation cycles are rejected.",inputSchema:{type:"object",properties:{agent:{type:"string",description:"Target agent name from `kman_list_agents`."},task:{type:"string",description:"Self-contained task description with the context, paths, constraints, and done criteria needed."},runtime:{type:"string",description:"Optional override for the agent's default runtime (claude-code | copilot-cli)."},model:{type:"string",description:"Optional override for the agent's default model."},permission:{type:"string",enum:["ask","auto","yolo"],description:"Permission level for the spawned backend."},cwd:{type:"string",description:"Working directory for the spawned runtime."}},required:["agent","task"],additionalProperties:!1}};function a1(){return[i1,t1,o1]}async function r1($,q,J){switch($){case i1.name:return B9(J);case t1.name:return V9(q);case o1.name:return M9(q,J);default:throw new T(H.MethodNotFound,`Unknown tool: ${$}`)}}async function B9($){let q=await R0($.selfAgent);return{content:[{type:"text",text:q.length===0?"No kman agents found at ~/.kman/agents/. Create one with `kman agent create <name>`.":JSON.stringify(q,null,2)}]}}async function V9($){let q=fq($,"agent");if(!await _q(q))return W$(`Agent "${q}" not found at ~/.kman/agents/${q}/.`);let J=await y0(q);return{content:[{type:"text",text:JSON.stringify({name:J.profile.name,description:J.profile.description,runtime:J.profile.runtime,soul:{prompt_file:J.profile.soul.prompt_file,contents:J.soul},defaults:J.profile.defaults,directory:J.directory},null,2)}]}}async function M9($,q){let J=fq($,"agent"),X=fq($,"task");if(q.selfAgent&&J===q.selfAgent)return W$(`Refusing to delegate to "${J}" — that is the agent currently running this MCP server. `+"Self-delegation would loop the agent forever.");let Z=process.env.KMAN_RUN_CHAIN,z=Z&&!Z.includes("${")?Z.split(",").filter(Boolean):[];if(z.includes(J))return W$(`Refusing to delegate to "${J}" — cycle detected (chain so far: ${z.join(" → ")}).`);if(z.length>=8)return W$(`Delegation depth limit reached (chain: ${z.join(" → ")}).`);if(!await _q(J))return W$(`Agent "${J}" not found at ~/.kman/agents/${J}/.`);let Q;try{Q=await s1(q.invocation,{agent:J,task:X,...typeof $.runtime==="string"?{runtime:$.runtime}:{},...typeof $.model==="string"?{model:$.model}:{},...typeof $.permission==="string"?{permission:$.permission}:{},...typeof $.cwd==="string"?{cwd:$.cwd}:{},appendToRunChain:q.selfAgent??J},q.runTimeoutMs)}catch(B){return W$(`Failed to spawn kman subprocess: ${B.message}. Check that 'kman' is on PATH or set KMAN_BIN.`)}let Y=Q.stdout.trim();if(Q.exitCode===0)return{content:[{type:"text",text:Y.length>0?Y:"(agent produced no output)"}]};return W$(`Agent "${J}" exited with code ${Q.exitCode}.
116
+ `)}),$.command("update").description("Re-fetch an installed skill from its recorded source.").option("--skill <name>","Skill name to update.").option("--all","Update every installed skill.").option("--force","Bypass local-modification safety check.").action(async(q)=>{let J=d();if(!q.skill&&!q.all)throw new U("Pass --skill <name> or --all.");let X=q.all?(await _0(J)).filter((Z)=>!!Z.manifest).map((Z)=>Z.name):[q.skill];for(let Z of X){let z=await v1({agent:J,skill:Z,force:q.force===!0});process.stdout.write(`Updated ${Z} → ${z.installedPath}
117
+ `)}}),$.command("remove").description("Remove an installed skill.").requiredOption("--skill <name>","Skill name.").action(async(q)=>{let J=d(),X=await u1(J,q.skill);process.stdout.write(`Removed ${X}
118
+ `)}),$}function z9($,q){return[...q,$]}async function Q9($,q,J){if($.length===0)throw new U("No SKILL.md found in source.");if(q&&q.length>0){let X=$.filter((Z)=>q.includes(Z.name));if(X.length===0)throw new U(`Requested skills not found in source. Available: ${$.map((Z)=>Z.name).join(", ")}.`);return X}if(J)return $;if($.length===1)return $;if(process.stdin.isTTY&&process.stdout.isTTY)return G9($);throw new U(`Source contains multiple skills. Pass --skill <name> (repeatable) or --all. Discovered: ${$.map((X)=>X.name).join(", ")}.`)}async function G9($){return m1({message:`Select skills to install (${$.length} discovered)`,items:$.map((q)=>({value:q,label:q.name,hint:q.relPath}))})}import{spawn as W9}from"node:child_process";function w$($,q){let J={...process.env,...$.env},X={cwd:$.cwd,env:J,stdio:"inherit",shell:!1,...q.options};return W9(q.command,q.args,X)}var Y9={ask:"default",auto:"acceptEdits",yolo:"bypassPermissions"};class l1{name="claude-code";capabilities={supportClaudeCodePlugin:!0,supportsAppendSystemPrompt:!0,supportsNativeResume:!0};binary;constructor($){this.binary=$??process.env.KMAN_CLAUDE_BIN??"claude"}mapPermission($){return Y9[$]??"default"}async spawn($,q){let{pluginDir:J,pluginAgent:X}=await F$($.profile,"claude"),Z=this.buildArgs($,J,X,!1);return w$($,{command:this.binary,args:Z})}async chat($,q){let{pluginDir:J,pluginAgent:X}=await F$($.profile,"claude"),Z=this.buildArgs($,J,X,!0);return w$($,{command:this.binary,args:Z})}buildArgs($,q,J,X){let Z=[];if(Z.push("--plugin-dir",q),Z.push("--agent",J),$.model)Z.push("--model",$.model);let z=$.permissionModeRaw??this.mapPermission($.permission);if(Z.push("--permission-mode",z),$.maxTurns!==void 0)Z.push("--max-turns",String($.maxTurns));if(!X){if(Z.push("--output-format",$.outputFormat),$.stream&&$.outputFormat==="stream-json")Z.push("--include-partial-messages")}for(let Q of $.extraArgs)Z.push(Q);if(!X&&$.task!==void 0)Z.push("--print",$.task);return Z}}function p1($){return new l1($)}var n1={ask:null,auto:"--allow-all-tools",yolo:"--yolo"};class s1{name="copilot-cli";capabilities={supportClaudeCodePlugin:!0,supportsAppendSystemPrompt:!0,supportsNativeResume:!0};binary;constructor($){this.binary=$??process.env.KMAN_COPILOT_BIN??"copilot"}mapPermission($){return n1[$]??"(default)"}async spawn($,q){let{pluginDir:J,pluginAgent:X}=await F$($.profile,"copilot"),Z=this.buildArgs($,J,X,!1);return w$($,{command:this.binary,args:Z})}async chat($,q){let{pluginDir:J,pluginAgent:X}=await F$($.profile,"copilot"),Z=this.buildArgs($,J,X,!0);return w$($,{command:this.binary,args:Z})}buildArgs($,q,J,X){let Z=[];if(Z.push("--plugin-dir",q),Z.push("--agent",J),$.permissionModeRaw===void 0){let z=n1[$.permission];if(z)Z.push(z)}if($.model)Z.push("--model",$.model);if(!X){if($.outputFormat==="stream-json")Z.push("--output-format","json","--stream","on");else if($.outputFormat==="json"||$.outputFormat==="text")Z.push("--output-format",$.outputFormat)}for(let z of $.extraArgs)Z.push(z);if(!X&&$.task!==void 0)Z.push("-p",$.task);return Z}}function i1($){return new s1($)}var t1={"claude-code":p1,"copilot-cli":i1};function f0($){let q=t1[$];if(!q)throw new U(`Unknown backend "${$}". Built-in backends: ${Object.keys(t1).join(", ")}.`);return q()}import{createInterface as I9}from"node:readline";var H={ParseError:-32700,InvalidRequest:-32600,MethodNotFound:-32601,InvalidParams:-32602,InternalError:-32603};class T extends Error{code;data;constructor($,q,J){super(q);if(this.code=$,J!==void 0)this.data=J}}import{readFile as V9,readdir as B9,stat as M9}from"node:fs/promises";async function R0($){let q=O$(),J;try{J=await B9(q,{withFileTypes:!0})}catch(Z){if(Z.code==="ENOENT")return[];throw Z}let X=[];for(let Z of J){if(!Z.isDirectory())continue;if($&&Z.name===$)continue;try{let z=await h(Z.name);X.push({name:z.name,description:z.description,runtime:z.runtime.default,model:z.runtime.model})}catch{}}return X.sort((Z,z)=>Z.name.localeCompare(z.name)),X}async function y0($){let q=await h($),J="";try{J=await V9(o(q.name,q.soul.prompt_file),"utf8")}catch(X){if(X.code!=="ENOENT")throw X}return{profile:q,soul:J,directory:N(q.name)}}async function _q($){try{return(await M9(N($))).isDirectory()}catch{return!1}}import{spawn as U9}from"node:child_process";async function o1($,q,J){let X=[...$.baseArgs,"-a",q.agent,"run","--task",q.task];if(q.runtime)X.push("--runtime",q.runtime);if(q.model)X.push("--model",q.model);if(q.permission)X.push("--permission",q.permission);if(q.outputFormat)X.push("--output",q.outputFormat);if(q.cwd)X.push("--cwd",q.cwd);let Z={...process.env};if(q.appendToRunChain){let z=Z.KMAN_RUN_CHAIN??"";Z.KMAN_RUN_CHAIN=z?`${z},${q.appendToRunChain}`:q.appendToRunChain}return new Promise((z,Q)=>{let G=U9($.command,X,{stdio:["ignore","pipe","pipe"],env:Z,shell:!1}),V="",Y="";G.stdout?.setEncoding("utf8"),G.stderr?.setEncoding("utf8"),G.stdout?.on("data",(B)=>{V+=B}),G.stderr?.on("data",(B)=>{Y+=B});let W;if(J&&J>0)W=setTimeout(()=>{if(!G.killed)G.kill("SIGTERM")},J);G.on("error",(B)=>{if(W)clearTimeout(W);Q(B)}),G.on("exit",(B)=>{if(W)clearTimeout(W);z({exitCode:B??0,stdout:V,stderr:Y})})})}var a1={name:"kman_list_agents",description:"List kman-managed specialist agents available on this machine. Use first when a task may benefit from delegation. Returns each agent's name, description, default runtime, and default model; the local roster may change between conversations.",inputSchema:{type:"object",properties:{},additionalProperties:!1}},r1={name:"kman_describe_agent",description:"Read one agent's full profile and soul prompt. Use after `kman_list_agents` to confirm fit when the roster summary is not enough or multiple agents look relevant.",inputSchema:{type:"object",properties:{agent:{type:"string",description:"Agent name (lowercase kebab-case)."}},required:["agent"],additionalProperties:!1}},e1={name:"kman_run_agent",description:"Run a one-shot task with a kman-managed peer agent and return its stdout. Use after choosing an agent from `kman_list_agents`. The task must be self-contained: the peer receives this text, not your conversation or scratch notes, so include relevant context, file paths, constraints, and done criteria. Sessions are not shared; self-delegation and delegation cycles are rejected.",inputSchema:{type:"object",properties:{agent:{type:"string",description:"Target agent name from `kman_list_agents`."},task:{type:"string",description:"Self-contained task description with the context, paths, constraints, and done criteria needed."},runtime:{type:"string",description:"Optional override for the agent's default runtime (claude-code | copilot-cli)."},model:{type:"string",description:"Optional override for the agent's default model."},permission:{type:"string",enum:["ask","auto","yolo"],description:"Permission level for the spawned backend."},cwd:{type:"string",description:"Working directory for the spawned runtime."}},required:["agent","task"],additionalProperties:!1}};function $3(){return[a1,r1,e1]}async function q3($,q,J){switch($){case a1.name:return K9(J);case r1.name:return F9(q);case e1.name:return N9(q,J);default:throw new T(H.MethodNotFound,`Unknown tool: ${$}`)}}async function K9($){let q=await R0($.selfAgent);return{content:[{type:"text",text:q.length===0?"No kman agents found at ~/.kman/agents/. Create one with `kman agent create <name>`.":JSON.stringify(q,null,2)}]}}async function F9($){let q=fq($,"agent");if(!await _q(q))return Y$(`Agent "${q}" not found at ~/.kman/agents/${q}/.`);let J=await y0(q);return{content:[{type:"text",text:JSON.stringify({name:J.profile.name,description:J.profile.description,runtime:J.profile.runtime,soul:{prompt_file:J.profile.soul.prompt_file,contents:J.soul},defaults:J.profile.defaults,directory:J.directory},null,2)}]}}async function N9($,q){let J=fq($,"agent"),X=fq($,"task");if(q.selfAgent&&J===q.selfAgent)return Y$(`Refusing to delegate to "${J}" — that is the agent currently running this MCP server. `+"Self-delegation would loop the agent forever.");let Z=process.env.KMAN_RUN_CHAIN,z=Z&&!Z.includes("${")?Z.split(",").filter(Boolean):[];if(z.includes(J))return Y$(`Refusing to delegate to "${J}" — cycle detected (chain so far: ${z.join(" → ")}).`);if(z.length>=8)return Y$(`Delegation depth limit reached (chain: ${z.join(" → ")}).`);if(!await _q(J))return Y$(`Agent "${J}" not found at ~/.kman/agents/${J}/.`);let Q;try{Q=await o1(q.invocation,{agent:J,task:X,...typeof $.runtime==="string"?{runtime:$.runtime}:{},...typeof $.model==="string"?{model:$.model}:{},...typeof $.permission==="string"?{permission:$.permission}:{},...typeof $.cwd==="string"?{cwd:$.cwd}:{},appendToRunChain:q.selfAgent??J},q.runTimeoutMs)}catch(V){return Y$(`Failed to spawn kman subprocess: ${V.message}. Check that 'kman' is on PATH or set KMAN_BIN.`)}let G=Q.stdout.trim();if(Q.exitCode===0)return{content:[{type:"text",text:G.length>0?G:"(agent produced no output)"}]};return Y$(`Agent "${J}" exited with code ${Q.exitCode}.
119
119
  `+(Q.stderr?`stderr:
120
120
  ${Q.stderr.trim()}
121
- `:"")+(Y?`stdout:
122
- ${Y}`:""))}function fq($,q){let J=$[q];if(typeof J!=="string"||J.length===0)throw new T(H.InvalidParams,`Missing or non-string argument: "${q}".`);return J}function W$($){return{content:[{type:"text",text:$}],isError:!0}}var Rq={uri:"kman://agents",name:"Agent roster",description:"JSON list of every agent under ~/.kman/agents/.",mimeType:"application/json"},e1={uriTemplate:"kman://agents/{name}",name:"Agent profile",description:"Per-agent profile + soul prompt as a single JSON document.",mimeType:"application/json"};function $3(){return[Rq]}function q3(){return[e1]}async function J3($,q){if($===Rq.uri){let X=await R0(q.selfAgent);return{uri:$,mimeType:Rq.mimeType,text:JSON.stringify(X,null,2)}}let J=/^kman:\/\/agents\/([a-z][a-z0-9-]{0,62})$/.exec($);if(J&&J[1]){let X=J[1];if(q.selfAgent&&X===q.selfAgent)throw new T(H.InvalidParams,`Resource ${$} is hidden: agent "${X}" hosts this MCP server.`);let Z=await y0(X);return{uri:$,mimeType:e1.mimeType,text:JSON.stringify({name:Z.profile.name,description:Z.profile.description,runtime:Z.profile.runtime,soul:{prompt_file:Z.profile.soul.prompt_file,contents:Z.soul},defaults:Z.profile.defaults,directory:Z.directory},null,2)}}throw new T(H.InvalidParams,`Unknown resource URI: ${$}`)}function X3(){return z2()}function Z3($,q){try{return Q2($,q)}catch(J){if(J instanceof T$)throw new T(H.InvalidParams,J.message);throw J}}var K9="2024-11-05",F9="This MCP server (kman) exposes locally managed specialist agents. Each agent has its own soul prompt, skills, and backend.\n\nWhen a user request may benefit from a specialist (code review, refactoring, research, test writing, doc rewrites, niche-domain analysis), consider delegating:\n\n 1. Call `kman_list_agents` to see the current local roster.\n 2. If needed, call `kman_describe_agent` to confirm fit from the agent's profile and soul prompt.\n 3. Call `kman_run_agent` with the agent name and a self-contained task. The response is the agent's stdout; incorporate it into your own answer and cite the agent by name.\n\nIf no agent fits, do the work yourself. Each `kman_run_agent` call is a fresh one-shot run; sessions are not shared and the peer cannot see your conversation or scratch notes. Self-delegation and cycles are blocked server-side.\n\nFor reusable workflows, four prompts are available for hosts to surface as slash commands: `list-agents` (show the roster), `find-agent` (choose a specialist), `delegate-task` (hand a task off), and `second-opinion` (independent review).";function z3($={}){let q=$.input??process.stdin,J=$.output??process.stdout,X={invocation:{command:$.invocation?.command??process.execPath,baseArgs:$.invocation?.baseArgs??(process.argv[1]?[process.argv[1]]:[])},runTimeoutMs:$.runTimeoutMs??600000,...$.selfAgent?{selfAgent:$.selfAgent}:{}},Z=U9({input:q,crlfDelay:1/0}),z=(B)=>{J.write(JSON.stringify(B)+`
123
- `)},Q=new Set;return{done:new Promise((B)=>{Z.on("line",(W)=>{let G=W.trim();if(!G)return;let V=N9(G,X,z).catch(()=>{return});Q.add(V),V.finally(()=>Q.delete(V))}),Z.on("close",()=>{Promise.allSettled(Array.from(Q)).then(()=>B())})}),stop:()=>Z.close()}}async function N9($,q,J){let X;try{X=JSON.parse($)}catch{J({jsonrpc:"2.0",id:null,error:{code:H.ParseError,message:"Invalid JSON."}});return}if(typeof X!=="object"||X===null){J({jsonrpc:"2.0",id:null,error:{code:H.InvalidRequest,message:"Not a JSON object."}});return}let Z=X,z="id"in Z?Z.id:null;if(Z.jsonrpc!=="2.0"||typeof Z.method!=="string"){if("id"in Z)J({jsonrpc:"2.0",id:z,error:{code:H.InvalidRequest,message:"Not JSON-RPC 2.0."}});return}let Q="id"in Z;try{let Y=await I9(Z.method,Z.params,q);if(Q&&Y!==void 0)J({jsonrpc:"2.0",id:z,result:Y})}catch(Y){if(!Q)return;if(Y instanceof T)J({jsonrpc:"2.0",id:z,error:{code:Y.code,message:Y.message,...Y.data!==void 0?{data:Y.data}:{}}});else J({jsonrpc:"2.0",id:z,error:{code:H.InternalError,message:Y.message}})}}async function I9($,q,J){switch($){case"initialize":return{protocolVersion:K9,capabilities:{tools:{listChanged:!1},resources:{listChanged:!1,subscribe:!1},prompts:{listChanged:!1}},serverInfo:{name:"kman",version:P9()},instructions:F9};case"notifications/initialized":case"notifications/cancelled":case"notifications/roots/list_changed":return;case"ping":return{};case"tools/list":return{tools:a1()};case"tools/call":{let X=yq(q),Z=typeof X.name==="string"?X.name:"",z=X.arguments??{};if(!Z)throw new T(H.InvalidParams,'tools/call requires "name".');return r1(Z,z,J)}case"resources/list":return{resources:$3()};case"resources/templates/list":return{resourceTemplates:q3()};case"resources/read":{let X=yq(q),Z=typeof X.uri==="string"?X.uri:"";if(!Z)throw new T(H.InvalidParams,'resources/read requires "uri".');return{contents:[await J3(Z,{...J.selfAgent?{selfAgent:J.selfAgent}:{}})]}}case"prompts/list":return{prompts:X3()};case"prompts/get":{let X=yq(q),Z=typeof X.name==="string"?X.name:"",z=X.arguments??{};if(!Z)throw new T(H.InvalidParams,'prompts/get requires "name".');return Z3(Z,z)}default:throw new T(H.MethodNotFound,`Method not implemented: ${$}`)}}function yq($){if(typeof $!=="object"||$===null||Array.isArray($))throw new T(H.InvalidParams,"params must be an object.");return $}function P9(){return process.env.KMAN_VERSION??"0.0.0"}import{mkdir as S9,writeFile as L9,readFile as D9}from"node:fs/promises";import{dirname as w9}from"node:path";import{join as x9}from"node:path";function H9(){return x9(t(),"runtime","mcp-config.json")}async function Q3($){let q=H9();await S9(w9(q),{recursive:!0});let J=[...$.kmanBaseArgs??[],"mcp","--self-from-env"],X={mcpServers:{kman:{command:$.kmanCommand,args:J,env:{KMAN_SELF_AGENT:"${KMAN_SELF_AGENT}",KMAN_RUN_CHAIN:"${KMAN_RUN_CHAIN}"}}}};return await j9(q,JSON.stringify(X,null,2)+`
124
- `),q}async function j9($,q){try{if(await D9($,"utf8")===q)return}catch{}await L9($,q,"utf8")}import{mkdir as Y3,readFile as O9,writeFile as A0}from"node:fs/promises";import{homedir as T9,platform as _9}from"node:os";import{dirname as G3,join as k0,resolve as W3}from"node:path";var j="kman";function Aq($,q={}){let J={command:$.command,args:[...$.baseArgs,"mcp"],env:{KMAN_SELF_AGENT:"${KMAN_SELF_AGENT}",KMAN_RUN_CHAIN:"${KMAN_RUN_CHAIN}"}};if(q.copilotType)J.type="local";return J}async function B3($){let q;if($==="claude-code"||$==="claude")q=Eq("user");else if($==="copilot-cli"||$==="copilot")q=bq();else return!1;try{let X=(await l$(q)).mcpServers;if(typeof X!=="object"||X===null)return!1;return Object.prototype.hasOwnProperty.call(X,j)}catch{return!1}}function V3(){let $=new w("mcp").description("Expose kman-managed agents to other agent runtimes over the Model Context Protocol.");return $.option("--self <name>","Hide this agent from listings (used by kman during auto-injection).").option("--self-from-env","Read the agent name to hide from the KMAN_SELF_AGENT env var. Used by the injected plugin so a single on-disk MCP config works for every agent.").option("--run-timeout <ms>","Per-tool-call timeout in milliseconds (default 600000, 0 disables).",(q)=>Number.parseInt(q,10)).action(async(q)=>{let J=q.selfFromEnv?process.env.KMAN_SELF_AGENT:q.self,X=J&&!J.includes("${")?J:void 0;process.env.KMAN_VERSION=M$.version;let Z=d$();await z3({invocation:{command:Z.command,baseArgs:Z.baseArgs},...X?{selfAgent:X}:{},...q.runTimeout!==void 0?{runTimeoutMs:q.runTimeout}:{}}).done}),$.command("install <runtime>").description("Register the kman MCP server in an external runtime config (claude-code | copilot-cli).").option("--scope <scope>","user | project (claude-code only; default user).","user").option("--force",'Overwrite an existing "kman" entry if present.').action(async(q,J)=>{let X=d$();if(q==="claude-code"||q==="claude")await f9(X,J.scope==="project"?"project":"user",J.force===!0);else if(q==="copilot-cli"||q==="copilot")await y9(X,J.force===!0);else throw new U(`Unknown runtime "${q}". Use claude-code or copilot-cli.`)}),$.command("config").description("Print a JSON snippet that registers the kman MCP server (paste into any MCP host).").action(()=>{let q=d$(),J={mcpServers:{[j]:Aq(q)}};process.stdout.write(JSON.stringify(J,null,2)+`
125
- `)}),$.command("uninstall <runtime>").description("Remove the kman MCP server from an external runtime config.").option("--scope <scope>","user | project (claude-code only; default user).","user").action(async(q,J)=>{if(q==="claude-code"||q==="claude")await R9(J.scope==="project"?"project":"user");else if(q==="copilot-cli"||q==="copilot")await k9();else throw new U(`Unknown runtime "${q}". Use claude-code or copilot-cli.`)}),$}function d$(){let $=process.env.KMAN_BIN;if($&&$.length>0)return{command:$,baseArgs:[]};let q=process.argv[1];if(q&&/[\\/]kman(\.(?:js|cjs|mjs))?$/.test(q)&&!q.endsWith(".ts"))return{command:"kman",baseArgs:[]};if(!q)return{command:"kman",baseArgs:[]};return{command:process.execPath,baseArgs:[W3(q)]}}async function f9($,q,J){let X=Eq(q),Z=await l$(X),z=Z.mcpServers??{};if(z[j]&&!J)throw new U(`Claude Code config already has an MCP server named "${j}". Re-run with --force to overwrite.`);z[j]=Aq($),Z.mcpServers=z,await Y3(G3(X),{recursive:!0}),await A0(X,JSON.stringify(Z,null,2)+`
121
+ `:"")+(G?`stdout:
122
+ ${G}`:""))}function fq($,q){let J=$[q];if(typeof J!=="string"||J.length===0)throw new T(H.InvalidParams,`Missing or non-string argument: "${q}".`);return J}function Y$($){return{content:[{type:"text",text:$}],isError:!0}}var Rq={uri:"kman://agents",name:"Agent roster",description:"JSON list of every agent under ~/.kman/agents/.",mimeType:"application/json"},J3={uriTemplate:"kman://agents/{name}",name:"Agent profile",description:"Per-agent profile + soul prompt as a single JSON document.",mimeType:"application/json"};function X3(){return[Rq]}function Z3(){return[J3]}async function z3($,q){if($===Rq.uri){let X=await R0(q.selfAgent);return{uri:$,mimeType:Rq.mimeType,text:JSON.stringify(X,null,2)}}let J=/^kman:\/\/agents\/([a-z][a-z0-9-]{0,62})$/.exec($);if(J&&J[1]){let X=J[1];if(q.selfAgent&&X===q.selfAgent)throw new T(H.InvalidParams,`Resource ${$} is hidden: agent "${X}" hosts this MCP server.`);let Z=await y0(X);return{uri:$,mimeType:J3.mimeType,text:JSON.stringify({name:Z.profile.name,description:Z.profile.description,runtime:Z.profile.runtime,soul:{prompt_file:Z.profile.soul.prompt_file,contents:Z.soul},defaults:Z.profile.defaults,directory:Z.directory},null,2)}}throw new T(H.InvalidParams,`Unknown resource URI: ${$}`)}function Q3(){return z2()}function G3($,q){try{return Q2($,q)}catch(J){if(J instanceof _$)throw new T(H.InvalidParams,J.message);throw J}}var P9="2024-11-05",S9="This MCP server (kman) exposes locally managed specialist agents. Each agent has its own soul prompt, skills, and backend.\n\nWhen a user request may benefit from a specialist (code review, refactoring, research, test writing, doc rewrites, niche-domain analysis), consider delegating:\n\n 1. Call `kman_list_agents` to see the current local roster.\n 2. If needed, call `kman_describe_agent` to confirm fit from the agent's profile and soul prompt.\n 3. Call `kman_run_agent` with the agent name and a self-contained task. The response is the agent's stdout; incorporate it into your own answer and cite the agent by name.\n\nIf no agent fits, do the work yourself. Each `kman_run_agent` call is a fresh one-shot run; sessions are not shared and the peer cannot see your conversation or scratch notes. Self-delegation and cycles are blocked server-side.\n\nFor reusable workflows, four prompts are available for hosts to surface as slash commands: `list-agents` (show the roster), `find-agent` (choose a specialist), `delegate-task` (hand a task off), and `second-opinion` (independent review).";function W3($={}){let q=$.input??process.stdin,J=$.output??process.stdout,X={invocation:{command:$.invocation?.command??process.execPath,baseArgs:$.invocation?.baseArgs??(process.argv[1]?[process.argv[1]]:[])},runTimeoutMs:$.runTimeoutMs??600000,...$.selfAgent?{selfAgent:$.selfAgent}:{}},Z=I9({input:q,crlfDelay:1/0}),z=(V)=>{J.write(JSON.stringify(V)+`
123
+ `)},Q=new Set;return{done:new Promise((V)=>{Z.on("line",(Y)=>{let W=Y.trim();if(!W)return;let B=L9(W,X,z).catch(()=>{return});Q.add(B),B.finally(()=>Q.delete(B))}),Z.on("close",()=>{Promise.allSettled(Array.from(Q)).then(()=>V())})}),stop:()=>Z.close()}}async function L9($,q,J){let X;try{X=JSON.parse($)}catch{J({jsonrpc:"2.0",id:null,error:{code:H.ParseError,message:"Invalid JSON."}});return}if(typeof X!=="object"||X===null){J({jsonrpc:"2.0",id:null,error:{code:H.InvalidRequest,message:"Not a JSON object."}});return}let Z=X,z="id"in Z?Z.id:null;if(Z.jsonrpc!=="2.0"||typeof Z.method!=="string"){if("id"in Z)J({jsonrpc:"2.0",id:z,error:{code:H.InvalidRequest,message:"Not JSON-RPC 2.0."}});return}let Q="id"in Z;try{let G=await D9(Z.method,Z.params,q);if(Q&&G!==void 0)J({jsonrpc:"2.0",id:z,result:G})}catch(G){if(!Q)return;if(G instanceof T)J({jsonrpc:"2.0",id:z,error:{code:G.code,message:G.message,...G.data!==void 0?{data:G.data}:{}}});else J({jsonrpc:"2.0",id:z,error:{code:H.InternalError,message:G.message}})}}async function D9($,q,J){switch($){case"initialize":return{protocolVersion:P9,capabilities:{tools:{listChanged:!1},resources:{listChanged:!1,subscribe:!1},prompts:{listChanged:!1}},serverInfo:{name:"kman",version:w9()},instructions:S9};case"notifications/initialized":case"notifications/cancelled":case"notifications/roots/list_changed":return;case"ping":return{};case"tools/list":return{tools:$3()};case"tools/call":{let X=yq(q),Z=typeof X.name==="string"?X.name:"",z=X.arguments??{};if(!Z)throw new T(H.InvalidParams,'tools/call requires "name".');return q3(Z,z,J)}case"resources/list":return{resources:X3()};case"resources/templates/list":return{resourceTemplates:Z3()};case"resources/read":{let X=yq(q),Z=typeof X.uri==="string"?X.uri:"";if(!Z)throw new T(H.InvalidParams,'resources/read requires "uri".');return{contents:[await z3(Z,{...J.selfAgent?{selfAgent:J.selfAgent}:{}})]}}case"prompts/list":return{prompts:Q3()};case"prompts/get":{let X=yq(q),Z=typeof X.name==="string"?X.name:"",z=X.arguments??{};if(!Z)throw new T(H.InvalidParams,'prompts/get requires "name".');return G3(Z,z)}default:throw new T(H.MethodNotFound,`Method not implemented: ${$}`)}}function yq($){if(typeof $!=="object"||$===null||Array.isArray($))throw new T(H.InvalidParams,"params must be an object.");return $}function w9(){return process.env.KMAN_VERSION??"0.0.0"}import{mkdir as x9,writeFile as H9,readFile as j9}from"node:fs/promises";import{dirname as O9}from"node:path";import{join as T9}from"node:path";function _9(){return T9(t(),"runtime","mcp-config.json")}async function Y3($){let q=_9();await x9(O9(q),{recursive:!0});let J=[...$.kmanBaseArgs??[],"mcp","--self-from-env"],X={mcpServers:{kman:{command:$.kmanCommand,args:J,env:{KMAN_SELF_AGENT:"${KMAN_SELF_AGENT}",KMAN_RUN_CHAIN:"${KMAN_RUN_CHAIN}"}}}};return await f9(q,JSON.stringify(X,null,2)+`
124
+ `),q}async function f9($,q){try{if(await j9($,"utf8")===q)return}catch{}await H9($,q,"utf8")}import{mkdir as V3,readFile as R9,writeFile as A0}from"node:fs/promises";import{homedir as y9,platform as k9}from"node:os";import{dirname as B3,join as k0,resolve as M3}from"node:path";var j="kman";function Aq($,q={}){let J={command:$.command,args:[...$.baseArgs,"mcp"],env:{KMAN_SELF_AGENT:"${KMAN_SELF_AGENT}",KMAN_RUN_CHAIN:"${KMAN_RUN_CHAIN}"}};if(q.copilotType)J.type="local";return J}async function U3($){let q;if($==="claude-code"||$==="claude")q=Eq("user");else if($==="copilot-cli"||$==="copilot")q=bq();else return!1;try{let X=(await p$(q)).mcpServers;if(typeof X!=="object"||X===null)return!1;return Object.prototype.hasOwnProperty.call(X,j)}catch{return!1}}function K3(){let $=new w("mcp").description("Expose kman-managed agents to other agent runtimes over the Model Context Protocol.");return $.option("--self <name>","Hide this agent from listings (used by kman during auto-injection).").option("--self-from-env","Read the agent name to hide from the KMAN_SELF_AGENT env var. Used by the injected plugin so a single on-disk MCP config works for every agent.").option("--run-timeout <ms>","Per-tool-call timeout in milliseconds (default 600000, 0 disables).",(q)=>Number.parseInt(q,10)).action(async(q)=>{let J=q.selfFromEnv?process.env.KMAN_SELF_AGENT:q.self,X=J&&!J.includes("${")?J:void 0;process.env.KMAN_VERSION=M$.version;let Z=l$();await W3({invocation:{command:Z.command,baseArgs:Z.baseArgs},...X?{selfAgent:X}:{},...q.runTimeout!==void 0?{runTimeoutMs:q.runTimeout}:{}}).done}),$.command("install <runtime>").description("Register the kman MCP server in an external runtime config (claude-code | copilot-cli).").option("--scope <scope>","user | project (claude-code only; default user).","user").option("--force",'Overwrite an existing "kman" entry if present.').action(async(q,J)=>{let X=l$();if(q==="claude-code"||q==="claude")await A9(X,J.scope==="project"?"project":"user",J.force===!0);else if(q==="copilot-cli"||q==="copilot")await b9(X,J.force===!0);else throw new U(`Unknown runtime "${q}". Use claude-code or copilot-cli.`)}),$.command("config").description("Print a JSON snippet that registers the kman MCP server (paste into any MCP host).").action(()=>{let q=l$(),J={mcpServers:{[j]:Aq(q)}};process.stdout.write(JSON.stringify(J,null,2)+`
125
+ `)}),$.command("uninstall <runtime>").description("Remove the kman MCP server from an external runtime config.").option("--scope <scope>","user | project (claude-code only; default user).","user").action(async(q,J)=>{if(q==="claude-code"||q==="claude")await E9(J.scope==="project"?"project":"user");else if(q==="copilot-cli"||q==="copilot")await h9();else throw new U(`Unknown runtime "${q}". Use claude-code or copilot-cli.`)}),$}function l$(){let $=process.env.KMAN_BIN;if($&&$.length>0)return{command:$,baseArgs:[]};let q=process.argv[1];if(q&&/[\\/]kman(\.(?:js|cjs|mjs))?$/.test(q)&&!q.endsWith(".ts"))return{command:"kman",baseArgs:[]};if(!q)return{command:"kman",baseArgs:[]};return{command:process.execPath,baseArgs:[M3(q)]}}async function A9($,q,J){let X=Eq(q),Z=await p$(X),z=Z.mcpServers??{};if(z[j]&&!J)throw new U(`Claude Code config already has an MCP server named "${j}". Re-run with --force to overwrite.`);z[j]=Aq($),Z.mcpServers=z,await V3(B3(X),{recursive:!0}),await A0(X,JSON.stringify(Z,null,2)+`
126
126
  `,"utf8"),process.stdout.write(`Registered "${j}" MCP server in ${X}
127
- `)}async function R9($){let q=Eq($),J=await l$(q),X=J.mcpServers??{};if(!X[j]){process.stdout.write(`No "${j}" entry in ${q}.
127
+ `)}async function E9($){let q=Eq($),J=await p$(q),X=J.mcpServers??{};if(!X[j]){process.stdout.write(`No "${j}" entry in ${q}.
128
128
  `);return}delete X[j],J.mcpServers=X,await A0(q,JSON.stringify(J,null,2)+`
129
129
  `,"utf8"),process.stdout.write(`Removed "${j}" from ${q}
130
- `)}async function y9($,q){let J=bq(),X=await l$(J),Z=X.mcpServers??{};if(Z[j]&&!q)throw new U(`Copilot CLI config already has an MCP server named "${j}". Re-run with --force to overwrite.`);Z[j]=Aq($,{copilotType:!0}),X.mcpServers=Z,await Y3(G3(J),{recursive:!0}),await A0(J,JSON.stringify(X,null,2)+`
130
+ `)}async function b9($,q){let J=bq(),X=await p$(J),Z=X.mcpServers??{};if(Z[j]&&!q)throw new U(`Copilot CLI config already has an MCP server named "${j}". Re-run with --force to overwrite.`);Z[j]=Aq($,{copilotType:!0}),X.mcpServers=Z,await V3(B3(J),{recursive:!0}),await A0(J,JSON.stringify(X,null,2)+`
131
131
  `,"utf8"),process.stdout.write(`Registered "${j}" MCP server in ${J}
132
- `)}async function k9(){let $=bq(),q=await l$($),J=q.mcpServers??{};if(!J[j]){process.stdout.write(`No "${j}" entry in ${$}.
132
+ `)}async function h9(){let $=bq(),q=await p$($),J=q.mcpServers??{};if(!J[j]){process.stdout.write(`No "${j}" entry in ${$}.
133
133
  `);return}delete J[j],q.mcpServers=J,await A0($,JSON.stringify(q,null,2)+`
134
134
  `,"utf8"),process.stdout.write(`Removed "${j}" from ${$}
135
- `)}function kq(){return process.env.HOME??process.env.USERPROFILE??T9()}function Eq($){if($==="project")return W3(process.cwd(),".claude.json");return k0(kq(),".claude.json")}function bq(){if(_9()==="win32"){let $=process.env.APPDATA??k0(kq(),"AppData","Roaming");return k0($,"github-copilot","mcp_config.json")}return k0(kq(),".config","github-copilot","mcp_config.json")}async function l$($){try{let q=await O9($,"utf8");if(!q.trim())return{};let J=JSON.parse(q);if(typeof J!=="object"||J===null||Array.isArray(J))throw new U(`${$} is not a JSON object — refusing to edit.`);return J}catch(q){if(q.code==="ENOENT")return{};if(q instanceof U)throw q;if(q instanceof SyntaxError)throw new U(`${$} contains invalid JSON — refusing to edit: ${q.message}`);throw q}}async function E0($){if(process.env.KMAN_NO_MCP==="1")return $;let q=A9($.backend);if(!q)return $;let J=await B3($.backend),X={...$.env,KMAN_SELF_AGENT:$.profile.name,KMAN_RUN_CHAIN:E9(process.env.KMAN_RUN_CHAIN,$.profile.name),KMAN_SELECTED_AGENT:""};if(J)return{...$,env:X};let Z=d$(),z=await Q3({kmanCommand:Z.command,kmanBaseArgs:Z.baseArgs}),Q=q.pathPrefix?`${q.pathPrefix}${z}`:z;return{...$,extraArgs:[q.flag,Q,...$.extraArgs],env:X}}function A9($){switch($){case"claude-code":return{flag:"--mcp-config"};case"copilot-cli":return{flag:"--additional-mcp-config",pathPrefix:"@"};default:return}}function E9($,q){if(!$)return q;let J=$.split(",").filter(Boolean);if(J[J.length-1]===q)return $;return[...J,q].join(",")}function b0($){if($==="ask"||$==="auto"||$==="yolo")return $;throw new U(`Invalid --permission "${$}". Expected: ask | auto | yolo.`)}function M3($){if($==="text"||$==="json"||$==="stream-json")return $;throw new U(`Invalid --output "${$}". Expected: text | json | stream-json.`)}function U3(){return new w("run").description("Run an agent on a single task non-interactively.").option("--task <text>","Task for the agent to perform.").option("--runtime <runtime>","Override the agent's default runtime for this call.").option("--model <id>","Override the agent's default model for this call.").option("--permission <level>","Permission mode (ask | auto | yolo).").option("--runtime-flag <flag>","Pass a runtime-native flag straight through (repeatable).",b9,[]).option("--output <format>","Output format (text | json | stream-json).").option("--stream","Stream incremental output; implies --output stream-json.").option("--cwd <path>","Working directory for the runtime process.").action(async($)=>{let q=d(),J=await h(q);if($.stream&&$.output&&$.output!=="stream-json")throw new U("--stream conflicts with --output of a different value.");let X=await K0(J,{...$.runtime?{backend:$.runtime}:{},...$.model?{model:$.model}:{},...$.permission?{permission:b0($.permission)}:{},...$.output?{outputFormat:M3($.output)}:{},...$.stream!==void 0?{stream:$.stream===!0}:{},...$.cwd?{cwd:$.cwd}:{},...$.task!==void 0?{task:$.task}:{},runtimeFlags:h9($.runtimeFlag)}),Z=f0(X.backend),z=await E0(X),{exitCode:Q}=await F1(Z,z);process.exit(Q)})}function b9($,q){return[...q,$]}function h9($){let q=[];for(let J of $)if(J.includes("=")&&!J.startsWith("--")){let X=J.indexOf("="),Z=J.slice(0,X),z=J.slice(X+1);q.push(`--${Z}`,z)}else q.push(J);return q}var p$=["defaults.runtime","defaults.model","defaults.permission_mode","defaults.output_format","defaults.max_turns"];function K3(){let $=new w("config").description("View and edit global defaults in ~/.kman/config.json (e.g. the default runtime for new agents).");return $.command("show").description("Print the effective configuration (built-in defaults merged with config.json).").option("--json","Emit the configuration as JSON.").action(async(q)=>{L$("config show");let J=await i();if(q.json){process.stdout.write(JSON.stringify(J,null,2)+`
135
+ `)}function kq(){return process.env.HOME??process.env.USERPROFILE??y9()}function Eq($){if($==="project")return M3(process.cwd(),".claude.json");return k0(kq(),".claude.json")}function bq(){if(k9()==="win32"){let $=process.env.APPDATA??k0(kq(),"AppData","Roaming");return k0($,"github-copilot","mcp_config.json")}return k0(kq(),".config","github-copilot","mcp_config.json")}async function p$($){try{let q=await R9($,"utf8");if(!q.trim())return{};let J=JSON.parse(q);if(typeof J!=="object"||J===null||Array.isArray(J))throw new U(`${$} is not a JSON object — refusing to edit.`);return J}catch(q){if(q.code==="ENOENT")return{};if(q instanceof U)throw q;if(q instanceof SyntaxError)throw new U(`${$} contains invalid JSON — refusing to edit: ${q.message}`);throw q}}async function E0($){if(process.env.KMAN_NO_MCP==="1")return $;let q=C9($.backend);if(!q)return $;let J=await U3($.backend),X={...$.env,KMAN_SELF_AGENT:$.profile.name,KMAN_RUN_CHAIN:v9(process.env.KMAN_RUN_CHAIN,$.profile.name),KMAN_SELECTED_AGENT:""};if(J)return{...$,env:X};let Z=l$(),z=await Y3({kmanCommand:Z.command,kmanBaseArgs:Z.baseArgs}),Q=q.pathPrefix?`${q.pathPrefix}${z}`:z;return{...$,extraArgs:[q.flag,Q,...$.extraArgs],env:X}}function C9($){switch($){case"claude-code":return{flag:"--mcp-config"};case"copilot-cli":return{flag:"--additional-mcp-config",pathPrefix:"@"};default:return}}function v9($,q){if(!$)return q;let J=$.split(",").filter(Boolean);if(J[J.length-1]===q)return $;return[...J,q].join(",")}function b0($){if($==="ask"||$==="auto"||$==="yolo")return $;throw new U(`Invalid --permission "${$}". Expected: ask | auto | yolo.`)}function F3($){if($==="text"||$==="json"||$==="stream-json")return $;throw new U(`Invalid --output "${$}". Expected: text | json | stream-json.`)}function N3(){return new w("run").description("Run an agent on a single task non-interactively.").option("--task <text>","Task for the agent to perform.").option("--runtime <runtime>","Override the agent's default runtime for this call.").option("--model <id>","Override the agent's default model for this call.").option("--permission <level>","Permission mode (ask | auto | yolo).").option("--runtime-flag <flag>","Pass a runtime-native flag straight through (repeatable).",u9,[]).option("--output <format>","Output format (text | json | stream-json).").option("--stream","Stream incremental output; implies --output stream-json.").option("--cwd <path>","Working directory for the runtime process.").action(async($)=>{let q=d(),J=await h(q);if($.stream&&$.output&&$.output!=="stream-json")throw new U("--stream conflicts with --output of a different value.");let X=await K0(J,{...$.runtime?{backend:$.runtime}:{},...$.model?{model:$.model}:{},...$.permission?{permission:b0($.permission)}:{},...$.output?{outputFormat:F3($.output)}:{},...$.stream!==void 0?{stream:$.stream===!0}:{},...$.cwd?{cwd:$.cwd}:{},...$.task!==void 0?{task:$.task}:{},runtimeFlags:g9($.runtimeFlag)}),Z=f0(X.backend),z=await E0(X),{exitCode:Q}=await I1(Z,z);process.exit(Q)})}function u9($,q){return[...q,$]}function g9($){let q=[];for(let J of $)if(J.includes("=")&&!J.startsWith("--")){let X=J.indexOf("="),Z=J.slice(0,X),z=J.slice(X+1);q.push(`--${Z}`,z)}else q.push(J);return q}var n$=["defaults.runtime","defaults.model","defaults.permission_mode","defaults.output_format","defaults.max_turns"];function I3(){let $=new w("config").description("View and edit global defaults in ~/.kman/config.json (e.g. the default runtime for new agents).");return $.command("show").description("Print the effective configuration (built-in defaults merged with config.json).").option("--json","Emit the configuration as JSON.").action(async(q)=>{D$("config show");let J=await i();if(q.json){process.stdout.write(JSON.stringify(J,null,2)+`
136
136
  `);return}let X=J.defaults;if(process.stdout.write(`path: ${v()}
137
137
  `),process.stdout.write(`defaults.runtime: ${X.runtime}`),!U0(X.runtime))process.stdout.write(" (no built-in adapter)");if(process.stdout.write(`
138
138
  `),X.model!==void 0)process.stdout.write(`defaults.model: ${X.model}
139
139
  `);if(X.permission_mode!==void 0)process.stdout.write(`defaults.permission_mode: ${X.permission_mode}
140
140
  `);if(X.output_format!==void 0)process.stdout.write(`defaults.output_format: ${X.output_format}
141
141
  `);if(X.max_turns!==void 0)process.stdout.write(`defaults.max_turns: ${X.max_turns}
142
- `)}),$.command("path").description("Print the path to config.json.").action(()=>{L$("config path"),process.stdout.write(`${v()}
143
- `)}),$.command("get <key>").description(`Print a single value. Keys: ${p$.join(", ")}.`).action(async(q)=>{L$("config get");let J=await i(),X=C9(J,hq(q));process.stdout.write(X===void 0?`(unset)
142
+ `)}),$.command("path").description("Print the path to config.json.").action(()=>{D$("config path"),process.stdout.write(`${v()}
143
+ `)}),$.command("get <key>").description(`Print a single value. Keys: ${n$.join(", ")}.`).action(async(q)=>{D$("config get");let J=await i(),X=c9(J,hq(q));process.stdout.write(X===void 0?`(unset)
144
144
  `:`${X}
145
- `)}),$.command("set <key> <value>").description(`Set a value and write it to config.json. Keys: ${p$.join(", ")}.`).action(async(q,J)=>{L$("config set");let X=await i(),Z=v9(X,hq(q),J);S$(Z);let z=await Pq(Z);process.stdout.write(`Set ${q} = ${J} in ${z}
146
- `)}),$.command("unset <key>").description(`Remove a value (reverts to the built-in default). Keys: ${p$.join(", ")}.`).action(async(q)=>{L$("config unset");let J=hq(q);if(J==="defaults.runtime")throw new U("defaults.runtime cannot be unset; set it to claude-code or copilot-cli instead.");let X=await i();delete X.defaults[F3(J)];let Z=await Pq(X);process.stdout.write(`Unset ${q} in ${Z}
147
- `)}),$}function hq($){if(p$.includes($))return $;throw new U(`Unknown config key "${$}". Expected one of: ${p$.join(", ")}.`)}function F3($){return $.slice(9)}function C9($,q){return $.defaults[F3(q)]}function v9($,q,J){let X={...$.defaults};switch(q){case"defaults.runtime":X.runtime=J;break;case"defaults.model":X.model=J;break;case"defaults.permission_mode":X.permission_mode=J;break;case"defaults.output_format":X.output_format=J;break;case"defaults.max_turns":{let Z=Number(J);if(!Number.isInteger(Z))throw new U(`defaults.max_turns must be an integer, got "${J}".`);X.max_turns=Z;break}}return{defaults:X}}function N3(){return new w("chat").description("Start an interactive session with an agent.").option("--runtime <runtime>","Override the agent's default runtime for this session.").option("--model <id>","Override the agent's default model for this session.").option("--permission <level>","Permission mode (ask | auto | yolo).").option("--runtime-flag <flag>","Pass a runtime-native flag straight through (repeatable).",u9,[]).option("--cwd <path>","Working directory for the runtime process.").action(async($)=>{let q=d(),J=await h(q),X=await K0(J,{...$.runtime?{backend:$.runtime}:{},...$.model?{model:$.model}:{},...$.permission?{permission:b0($.permission)}:{},...$.cwd?{cwd:$.cwd}:{},runtimeFlags:g9($.runtimeFlag)}),Z=f0(X.backend),z=await E0(X),{exitCode:Q}=await N1(Z,z);process.exit(Q)})}function u9($,q){return[...q,$]}function g9($){let q=[];for(let J of $)if(J.includes("=")&&!J.startsWith("--")){let X=J.indexOf("="),Z=J.slice(0,X),z=J.slice(X+1);q.push(`--${Z}`,z)}else q.push(J);return q}function I3(){return new w("version").description("Print kman CLI version.").action(()=>{process.stdout.write(`kman ${M$.version}
148
- `)})}function P3(){return new w("doctor").description("Diagnose the environment and (optionally) an agent: runtime binaries, mcp.json, hooks, bin/, skills.").option("--json","Emit the report as JSON to stdout.").option("-v, --verbose","Show detail / hint lines for ok checks too.").action(async($)=>{let q=v1(),J=await w1({...q?{agent:q}:{}});if($.json)process.stdout.write(JSON.stringify(J,null,2)+`
149
- `);else process.stdout.write(d9(J,$.verbose===!0));if(Sq(J)==="error")process.exit(c9(J));process.exit(b.Success)})}function c9($){for(let q of $.sections)for(let J of q.checks){if(J.severity!=="error")continue;if(J.id.startsWith("backend.")||J.id.startsWith("agent.backend."))return b.BackendUnavailable}return b.UserError}var m9={ok:"✓",info:"·",warn:"!",error:"✗"};function d9($,q){let J=[];for(let z of $.sections){if(J.push(`== ${z.title} ==`),z.checks.length===0){J.push(" (no checks)"),J.push("");continue}for(let Q of z.checks)if(J.push(` ${m9[Q.severity]} [${Q.severity}] ${Q.label}: ${Q.message}`),Q.detail&&(q||Q.severity==="warn"||Q.severity==="error"))J.push(` ${Q.detail}`);J.push("")}let X=Sq($),Z=l9($);return J.push(`overall: ${X} (${Z})`),J.map((z)=>z+`
150
- `).join("")}function l9($){let q={ok:0,info:0,warn:0,error:0};for(let J of $.sections)for(let X of J.checks)q[X.severity]++;return["ok","info","warn","error"].map((J)=>`${J}=${q[J]}`).join(" ")}function S3($){if($ instanceof H$){if($.message)process.stderr.write(`kman: ${$.message}
145
+ `)}),$.command("set <key> <value>").description(`Set a value and write it to config.json. Keys: ${n$.join(", ")}.`).action(async(q,J)=>{D$("config set");let X=await i(),Z=m9(X,hq(q),J);L$(Z);let z=await Pq(Z);process.stdout.write(`Set ${q} = ${J} in ${z}
146
+ `)}),$.command("unset <key>").description(`Remove a value (reverts to the built-in default). Keys: ${n$.join(", ")}.`).action(async(q)=>{D$("config unset");let J=hq(q);if(J==="defaults.runtime")throw new U("defaults.runtime cannot be unset; set it to claude-code or copilot-cli instead.");let X=await i();delete X.defaults[P3(J)];let Z=await Pq(X);process.stdout.write(`Unset ${q} in ${Z}
147
+ `)}),$}function hq($){if(n$.includes($))return $;throw new U(`Unknown config key "${$}". Expected one of: ${n$.join(", ")}.`)}function P3($){return $.slice(9)}function c9($,q){return $.defaults[P3(q)]}function m9($,q,J){let X={...$.defaults};switch(q){case"defaults.runtime":X.runtime=J;break;case"defaults.model":X.model=J;break;case"defaults.permission_mode":X.permission_mode=J;break;case"defaults.output_format":X.output_format=J;break;case"defaults.max_turns":{let Z=Number(J);if(!Number.isInteger(Z))throw new U(`defaults.max_turns must be an integer, got "${J}".`);X.max_turns=Z;break}}return{defaults:X}}function S3(){return new w("chat").description("Start an interactive session with an agent.").option("--runtime <runtime>","Override the agent's default runtime for this session.").option("--model <id>","Override the agent's default model for this session.").option("--permission <level>","Permission mode (ask | auto | yolo).").option("--runtime-flag <flag>","Pass a runtime-native flag straight through (repeatable).",d9,[]).option("--cwd <path>","Working directory for the runtime process.").action(async($)=>{let q=d(),J=await h(q),X=await K0(J,{...$.runtime?{backend:$.runtime}:{},...$.model?{model:$.model}:{},...$.permission?{permission:b0($.permission)}:{},...$.cwd?{cwd:$.cwd}:{},runtimeFlags:l9($.runtimeFlag)}),Z=f0(X.backend),z=await E0(X),{exitCode:Q}=await P1(Z,z);process.exit(Q)})}function d9($,q){return[...q,$]}function l9($){let q=[];for(let J of $)if(J.includes("=")&&!J.startsWith("--")){let X=J.indexOf("="),Z=J.slice(0,X),z=J.slice(X+1);q.push(`--${Z}`,z)}else q.push(J);return q}function L3(){return new w("version").description("Print kman CLI version.").action(()=>{process.stdout.write(`kman ${M$.version}
148
+ `)})}function D3(){return new w("doctor").description("Diagnose the environment and (optionally) an agent: runtime binaries, mcp.json, hooks, bin/, skills.").option("--json","Emit the report as JSON to stdout.").option("-v, --verbose","Show detail / hint lines for ok checks too.").action(async($)=>{let q=c1(),J=await H1({...q?{agent:q}:{}});if($.json)process.stdout.write(JSON.stringify(J,null,2)+`
149
+ `);else process.stdout.write(s9(J,$.verbose===!0));if(Sq(J)==="error")process.exit(p9(J));process.exit(b.Success)})}function p9($){for(let q of $.sections)for(let J of q.checks){if(J.severity!=="error")continue;if(J.id.startsWith("backend.")||J.id.startsWith("agent.backend."))return b.BackendUnavailable}return b.UserError}var n9={ok:"✓",info:"·",warn:"!",error:"✗"};function s9($,q){let J=[];for(let z of $.sections){if(J.push(`== ${z.title} ==`),z.checks.length===0){J.push(" (no checks)"),J.push("");continue}for(let Q of z.checks)if(J.push(` ${n9[Q.severity]} [${Q.severity}] ${Q.label}: ${Q.message}`),Q.detail&&(q||Q.severity==="warn"||Q.severity==="error"))J.push(` ${Q.detail}`);J.push("")}let X=Sq($),Z=i9($);return J.push(`overall: ${X} (${Z})`),J.map((z)=>z+`
150
+ `).join("")}function i9($){let q={ok:0,info:0,warn:0,error:0};for(let J of $.sections)for(let X of J.checks)q[X.severity]++;return["ok","info","warn","error"].map((J)=>`${J}=${q[J]}`).join(" ")}function w3($){if($ instanceof j$){if($.message)process.stderr.write(`kman: ${$.message}
151
151
  `);process.exit($.code)}if($ instanceof X2){let J=$.code==="commander.help"||$.code==="commander.helpDisplayed"||$.code==="commander.version"?0:b.UserError;process.exit(J)}let q=$ instanceof Error?$.message:String($);if(process.stderr.write(`kman: unexpected error: ${q}
152
152
  `),process.env.KMAN_DEBUG&&$ instanceof Error&&$.stack)process.stderr.write($.stack+`
153
- `);process.exit(b.AgentError)}var C=new w;C.name("kman").description("Multi-agent management tool.").version(M$.version,"-v, --version","Print kman CLI version.").helpOption("-h, --help","Show help.").showHelpAfterError().exitOverride();C.option("-a, --agent <name>","Target agent name (lowercase kebab-case). Required by agent-scoped subcommands.");C.addCommand(H1());C.addCommand(g1());C.addCommand(K3());C.addCommand(U3());C.addCommand(N3());C.addCommand(I3());C.addCommand(P3());C.addCommand(V3());var Cq;try{let $=process.argv.slice(2),{rest:q,agent:J}=C1($);if(J!==void 0)process.env.KMAN_SELECTED_AGENT=J;Cq=q}catch($){S3($)}if(Cq.length===0)C.outputHelp(),process.exit(b.UserError);try{await C.parseAsync(Cq,{from:"user"})}catch($){S3($)}
153
+ `);process.exit(b.AgentError)}var C=new w;C.name("kman").description("Multi-agent management tool.").version(M$.version,"-v, --version","Print kman CLI version.").helpOption("-h, --help","Show help.").showHelpAfterError().exitOverride();C.option("-a, --agent <name>","Target agent name (lowercase kebab-case). Required by agent-scoped subcommands.");C.addCommand(T1());C.addCommand(d1());C.addCommand(I3());C.addCommand(N3());C.addCommand(S3());C.addCommand(L3());C.addCommand(D3());C.addCommand(K3());var Cq;try{let $=process.argv.slice(2),{rest:q,agent:J}=g1($);if(J!==void 0)process.env.KMAN_SELECTED_AGENT=J;Cq=q}catch($){w3($)}if(Cq.length===0)C.outputHelp(),process.exit(b.UserError);try{await C.parseAsync(Cq,{from:"user"})}catch($){w3($)}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@unliftedq/kman",
3
- "version": "0.0.4",
3
+ "version": "0.0.5",
4
4
  "description": "Multi-agent management tool — a CLI that manages a roster of named agent profiles on top of existing agent runtimes (claude-code, copilot-cli, ...).",
5
5
  "keywords": [
6
6
  "agent",