flins 0.3.0 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +65 -65
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1,106 +1,106 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import{createRequire as
|
|
3
|
-
`)}displayWidth(l){return
|
|
2
|
+
import{createRequire as fi}from"node:module";var ii=Object.create;var{getPrototypeOf:oi,defineProperty:Is,getOwnPropertyNames:ci}=Object;var ai=Object.prototype.hasOwnProperty;var p=(l,n,s)=>{s=l!=null?ii(oi(l)):{};let r=n||!l||!l.__esModule?Is(s,"default",{value:l,enumerable:!0}):s;for(let i of ci(l))if(!ai.call(r,i))Is(r,i,{get:()=>l[i],enumerable:!0});return r};var al=(l,n)=>()=>(n||l((n={exports:{}}).exports,n),n.exports);var Bl=fi(import.meta.url);var Ul=al((ki)=>{class wn extends Error{constructor(l,n,s){super(s);Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name,this.code=n,this.exitCode=l,this.nestedError=void 0}}class ws extends wn{constructor(l){super(1,"commander.invalidArgument",l);Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name}}ki.CommanderError=wn;ki.InvalidArgumentError=ws});var Ml=al((mi)=>{var{InvalidArgumentError:ui}=Ul();class ds{constructor(l,n){switch(this.description=n||"",this.variadic=!1,this.parseArg=void 0,this.defaultValue=void 0,this.defaultValueDescription=void 0,this.argChoices=void 0,l[0]){case"<":this.required=!0,this._name=l.slice(1,-1);break;case"[":this.required=!1,this._name=l.slice(1,-1);break;default:this.required=!0,this._name=l;break}if(this._name.endsWith("..."))this.variadic=!0,this._name=this._name.slice(0,-3)}name(){return this._name}_collectValue(l,n){if(n===this.defaultValue||!Array.isArray(n))return[l];return n.push(l),n}default(l,n){return this.defaultValue=l,this.defaultValueDescription=n,this}argParser(l){return this.parseArg=l,this}choices(l){return this.argChoices=l.slice(),this.parseArg=(n,s)=>{if(!this.argChoices.includes(n))throw new ui(`Allowed choices are ${this.argChoices.join(", ")}.`);if(this.variadic)return this._collectValue(n,s);return n},this}argRequired(){return this.required=!0,this}argOptional(){return this.required=!1,this}}function gi(l){let n=l.name()+(l.variadic===!0?"...":"");return l.required?"<"+n+">":"["+n+"]"}mi.Argument=ds;mi.humanReadableArgName=gi});var dn=al((Ii)=>{var{humanReadableArgName:$i}=Ml();class Ds{constructor(){this.helpWidth=void 0,this.minWidthToWrap=40,this.sortSubcommands=!1,this.sortOptions=!1,this.showGlobalOptions=!1}prepareContext(l){this.helpWidth=this.helpWidth??l.helpWidth??80}visibleCommands(l){let n=l.commands.filter((r)=>!r._hidden),s=l._getHelpCommand();if(s&&!s._hidden)n.push(s);if(this.sortSubcommands)n.sort((r,i)=>{return r.name().localeCompare(i.name())});return n}compareOptions(l,n){let s=(r)=>{return r.short?r.short.replace(/^-/,""):r.long.replace(/^--/,"")};return s(l).localeCompare(s(n))}visibleOptions(l){let n=l.options.filter((r)=>!r.hidden),s=l._getHelpOption();if(s&&!s.hidden){let r=s.short&&l._findOption(s.short),i=s.long&&l._findOption(s.long);if(!r&&!i)n.push(s);else if(s.long&&!i)n.push(l.createOption(s.long,s.description));else if(s.short&&!r)n.push(l.createOption(s.short,s.description))}if(this.sortOptions)n.sort(this.compareOptions);return n}visibleGlobalOptions(l){if(!this.showGlobalOptions)return[];let n=[];for(let s=l.parent;s;s=s.parent){let r=s.options.filter((i)=>!i.hidden);n.push(...r)}if(this.sortOptions)n.sort(this.compareOptions);return n}visibleArguments(l){if(l._argsDescription)l.registeredArguments.forEach((n)=>{n.description=n.description||l._argsDescription[n.name()]||""});if(l.registeredArguments.find((n)=>n.description))return l.registeredArguments;return[]}subcommandTerm(l){let n=l.registeredArguments.map((s)=>$i(s)).join(" ");return l._name+(l._aliases[0]?"|"+l._aliases[0]:"")+(l.options.length?" [options]":"")+(n?" "+n:"")}optionTerm(l){return l.flags}argumentTerm(l){return l.name()}longestSubcommandTermLength(l,n){return n.visibleCommands(l).reduce((s,r)=>{return Math.max(s,this.displayWidth(n.styleSubcommandTerm(n.subcommandTerm(r))))},0)}longestOptionTermLength(l,n){return n.visibleOptions(l).reduce((s,r)=>{return Math.max(s,this.displayWidth(n.styleOptionTerm(n.optionTerm(r))))},0)}longestGlobalOptionTermLength(l,n){return n.visibleGlobalOptions(l).reduce((s,r)=>{return Math.max(s,this.displayWidth(n.styleOptionTerm(n.optionTerm(r))))},0)}longestArgumentTermLength(l,n){return n.visibleArguments(l).reduce((s,r)=>{return Math.max(s,this.displayWidth(n.styleArgumentTerm(n.argumentTerm(r))))},0)}commandUsage(l){let n=l._name;if(l._aliases[0])n=n+"|"+l._aliases[0];let s="";for(let r=l.parent;r;r=r.parent)s=r.name()+" "+s;return s+n+" "+l.usage()}commandDescription(l){return l.description()}subcommandDescription(l){return l.summary()||l.description()}optionDescription(l){let n=[];if(l.argChoices)n.push(`choices: ${l.argChoices.map((s)=>JSON.stringify(s)).join(", ")}`);if(l.defaultValue!==void 0){if(l.required||l.optional||l.isBoolean()&&typeof l.defaultValue==="boolean")n.push(`default: ${l.defaultValueDescription||JSON.stringify(l.defaultValue)}`)}if(l.presetArg!==void 0&&l.optional)n.push(`preset: ${JSON.stringify(l.presetArg)}`);if(l.envVar!==void 0)n.push(`env: ${l.envVar}`);if(n.length>0){let s=`(${n.join(", ")})`;if(l.description)return`${l.description} ${s}`;return s}return l.description}argumentDescription(l){let n=[];if(l.argChoices)n.push(`choices: ${l.argChoices.map((s)=>JSON.stringify(s)).join(", ")}`);if(l.defaultValue!==void 0)n.push(`default: ${l.defaultValueDescription||JSON.stringify(l.defaultValue)}`);if(n.length>0){let s=`(${n.join(", ")})`;if(l.description)return`${l.description} ${s}`;return s}return l.description}formatItemList(l,n,s){if(n.length===0)return[];return[s.styleTitle(l),...n,""]}groupItems(l,n,s){let r=new Map;return l.forEach((i)=>{let o=s(i);if(!r.has(o))r.set(o,[])}),n.forEach((i)=>{let o=s(i);if(!r.has(o))r.set(o,[]);r.get(o).push(i)}),r}formatHelp(l,n){let s=n.padWidth(l,n),r=n.helpWidth??80;function i(b,m){return n.formatItem(b,s,m,n)}let o=[`${n.styleTitle("Usage:")} ${n.styleUsage(n.commandUsage(l))}`,""],c=n.commandDescription(l);if(c.length>0)o=o.concat([n.boxWrap(n.styleCommandDescription(c),r),""]);let a=n.visibleArguments(l).map((b)=>{return i(n.styleArgumentTerm(n.argumentTerm(b)),n.styleArgumentDescription(n.argumentDescription(b)))});if(o=o.concat(this.formatItemList("Arguments:",a,n)),this.groupItems(l.options,n.visibleOptions(l),(b)=>b.helpGroupHeading??"Options:").forEach((b,m)=>{let I=b.map((L)=>{return i(n.styleOptionTerm(n.optionTerm(L)),n.styleOptionDescription(n.optionDescription(L)))});o=o.concat(this.formatItemList(m,I,n))}),n.showGlobalOptions){let b=n.visibleGlobalOptions(l).map((m)=>{return i(n.styleOptionTerm(n.optionTerm(m)),n.styleOptionDescription(n.optionDescription(m)))});o=o.concat(this.formatItemList("Global Options:",b,n))}return this.groupItems(l.commands,n.visibleCommands(l),(b)=>b.helpGroup()||"Commands:").forEach((b,m)=>{let I=b.map((L)=>{return i(n.styleSubcommandTerm(n.subcommandTerm(L)),n.styleSubcommandDescription(n.subcommandDescription(L)))});o=o.concat(this.formatItemList(m,I,n))}),o.join(`
|
|
3
|
+
`)}displayWidth(l){return Ts(l).length}styleTitle(l){return l}styleUsage(l){return l.split(" ").map((n)=>{if(n==="[options]")return this.styleOptionText(n);if(n==="[command]")return this.styleSubcommandText(n);if(n[0]==="["||n[0]==="<")return this.styleArgumentText(n);return this.styleCommandText(n)}).join(" ")}styleCommandDescription(l){return this.styleDescriptionText(l)}styleOptionDescription(l){return this.styleDescriptionText(l)}styleSubcommandDescription(l){return this.styleDescriptionText(l)}styleArgumentDescription(l){return this.styleDescriptionText(l)}styleDescriptionText(l){return l}styleOptionTerm(l){return this.styleOptionText(l)}styleSubcommandTerm(l){return l.split(" ").map((n)=>{if(n==="[options]")return this.styleOptionText(n);if(n[0]==="["||n[0]==="<")return this.styleArgumentText(n);return this.styleSubcommandText(n)}).join(" ")}styleArgumentTerm(l){return this.styleArgumentText(l)}styleOptionText(l){return l}styleArgumentText(l){return l}styleSubcommandText(l){return l}styleCommandText(l){return l}padWidth(l,n){return Math.max(n.longestOptionTermLength(l,n),n.longestGlobalOptionTermLength(l,n),n.longestSubcommandTermLength(l,n),n.longestArgumentTermLength(l,n))}preformatted(l){return/\n[^\S\r\n]/.test(l)}formatItem(l,n,s,r){let o=" ".repeat(2);if(!s)return o+l;let c=l.padEnd(n+l.length-r.displayWidth(l)),a=2,f=(this.helpWidth??80)-n-a-2,b;if(f<this.minWidthToWrap||r.preformatted(s))b=s;else b=r.boxWrap(s,f).replace(/\n/g,`
|
|
4
4
|
`+" ".repeat(n+a));return o+c+" ".repeat(a)+b.replace(/\n/g,`
|
|
5
5
|
${o}`)}boxWrap(l,n){if(n<this.minWidthToWrap)return l;let s=l.split(/\r\n|\n/),r=/[\s]*[^\s]+/g,i=[];return s.forEach((o)=>{let c=o.match(r);if(c===null){i.push("");return}let a=[c.shift()],k=this.displayWidth(a[0]);c.forEach((f)=>{let b=this.displayWidth(f);if(k+b<=n){a.push(f),k+=b;return}i.push(a.join(""));let m=f.trimStart();a=[m],k=this.displayWidth(m)}),i.push(a.join(""))}),i.join(`
|
|
6
|
-
`)}}function
|
|
6
|
+
`)}}function Ts(l){let n=/\x1b\[\d*(;\d*)*m/g;return l.replace(n,"")}Ii.Help=Ds;Ii.stripColor=Ts});var Dn=al((Li)=>{var{InvalidArgumentError:Di}=Ul();class Rs{constructor(l,n){this.flags=l,this.description=n||"",this.required=l.includes("<"),this.optional=l.includes("["),this.variadic=/\w\.\.\.[>\]]$/.test(l),this.mandatory=!1;let s=Ti(l);if(this.short=s.shortFlag,this.long=s.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(l,n){return this.defaultValue=l,this.defaultValueDescription=n,this}preset(l){return this.presetArg=l,this}conflicts(l){return this.conflictsWith=this.conflictsWith.concat(l),this}implies(l){let n=l;if(typeof l==="string")n={[l]:!0};return this.implied=Object.assign(this.implied||{},n),this}env(l){return this.envVar=l,this}argParser(l){return this.parseArg=l,this}makeOptionMandatory(l=!0){return this.mandatory=!!l,this}hideHelp(l=!0){return this.hidden=!!l,this}_collectValue(l,n){if(n===this.defaultValue||!Array.isArray(n))return[l];return n.push(l),n}choices(l){return this.argChoices=l.slice(),this.parseArg=(n,s)=>{if(!this.argChoices.includes(n))throw new Di(`Allowed choices are ${this.argChoices.join(", ")}.`);if(this.variadic)return this._collectValue(n,s);return n},this}name(){if(this.long)return this.long.replace(/^--/,"");return this.short.replace(/^-/,"")}attributeName(){if(this.negate)return Ls(this.name().replace(/^no-/,""));return Ls(this.name())}helpGroup(l){return this.helpGroupHeading=l,this}is(l){return this.short===l||this.long===l}isBoolean(){return!this.required&&!this.optional&&!this.negate}}class Bs{constructor(l){this.positiveOptions=new Map,this.negativeOptions=new Map,this.dualOptions=new Set,l.forEach((n)=>{if(n.negate)this.negativeOptions.set(n.attributeName(),n);else this.positiveOptions.set(n.attributeName(),n)}),this.negativeOptions.forEach((n,s)=>{if(this.positiveOptions.has(s))this.dualOptions.add(s)})}valueFromOption(l,n){let s=n.attributeName();if(!this.dualOptions.has(s))return!0;let r=this.negativeOptions.get(s).presetArg,i=r!==void 0?r:!1;return n.negate===(i===l)}}function Ls(l){return l.split("-").reduce((n,s)=>{return n+s[0].toUpperCase()+s.slice(1)})}function Ti(l){let n,s,r=/^-[^-]$/,i=/^--[^-]/,o=l.split(/[ |,]+/).concat("guard");if(r.test(o[0]))n=o.shift();if(i.test(o[0]))s=o.shift();if(!n&&r.test(o[0]))n=o.shift();if(!n&&i.test(o[0]))n=s,s=o.shift();if(o[0].startsWith("-")){let c=o[0],a=`option creation failed due to '${c}' in option flags '${l}'`;if(/^-[^-][^-]/.test(c))throw Error(`${a}
|
|
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
9
|
- or use a double dash for a long option (and can have two, like '--ws, --workspace')`);if(r.test(c))throw Error(`${a}
|
|
10
10
|
- too many short flags`);if(i.test(c))throw Error(`${a}
|
|
11
11
|
- too many long flags`);throw Error(`${a}
|
|
12
|
-
- unrecognised flag format`)}if(n===void 0&&s===void 0)throw Error(`option creation failed due to no flags found in '${l}'.`);return{shortFlag:n,longFlag:s}}
|
|
12
|
+
- unrecognised flag format`)}if(n===void 0&&s===void 0)throw Error(`option creation failed due to no flags found in '${l}'.`);return{shortFlag:n,longFlag:s}}Li.Option=Rs;Li.DualOptions=Bs});var Us=al((hi)=>{function Ui(l,n){if(Math.abs(l.length-n.length)>3)return Math.max(l.length,n.length);let s=[];for(let r=0;r<=l.length;r++)s[r]=[r];for(let r=0;r<=n.length;r++)s[0][r]=r;for(let r=1;r<=n.length;r++)for(let i=1;i<=l.length;i++){let o=1;if(l[i-1]===n[r-1])o=0;else o=1;if(s[i][r]=Math.min(s[i-1][r]+1,s[i][r-1]+1,s[i-1][r-1]+o),i>1&&r>1&&l[i-1]===n[r-2]&&l[i-2]===n[r-1])s[i][r]=Math.min(s[i][r],s[i-2][r-2]+1)}return s[l.length][n.length]}function xi(l,n){if(!n||n.length===0)return"";n=Array.from(new Set(n));let s=l.startsWith("--");if(s)l=l.slice(2),n=n.map((c)=>c.slice(2));let r=[],i=3,o=0.4;if(n.forEach((c)=>{if(c.length<=1)return;let a=Ui(l,c),k=Math.max(l.length,c.length);if((k-a)/k>o){if(a<i)i=a,r=[c];else if(a===i)r.push(c)}}),r.sort((c,a)=>c.localeCompare(a)),s)r=r.map((c)=>`--${c}`);if(r.length>1)return`
|
|
13
13
|
(Did you mean one of ${r.join(", ")}?)`;if(r.length===1)return`
|
|
14
|
-
(Did you mean ${r[0]}?)`;return""}
|
|
15
|
-
- specify the name in Command constructor or using .name()`);if(n=n||{},n.isDefault)this._defaultCommandName=l._name;if(n.noHelp||n.hidden)l._hidden=!0;return this._registerCommand(l),l.parent=this,l._checkForBrokenPassThrough(),this}createArgument(l,n){return new
|
|
16
|
-
Expecting one of '${s.join("', '")}'`);if(this._lifeCycleHooks[l])this._lifeCycleHooks[l].push(n);else this._lifeCycleHooks[l]=[n];return this}exitOverride(l){if(l)this._exitCallback=l;else this._exitCallback=(n)=>{if(n.code!=="commander.executeSubCommandAsync")throw n};return this}_exit(l,n,s){if(this._exitCallback)this._exitCallback(new
|
|
17
|
-
- already used by option '${n.flags}'`)}this._initOptionGroup(l),this.options.push(l)}_registerCommand(l){let n=(r)=>{return[r.name()].concat(r.aliases())},s=n(l).find((r)=>this._findCommand(r));if(s){let r=n(this._findCommand(s)).join("|"),i=n(l).join("|");throw Error(`cannot add command '${i}' as already have command '${r}'`)}this._initCommandGroup(l),this.commands.push(l)}addOption(l){this._registerOption(l);let n=l.name(),s=l.attributeName();if(l.negate){let i=l.long.replace(/^--no-/,"--");if(!this._findOption(i))this.setOptionValueWithSource(s,l.defaultValue===void 0?!0:l.defaultValue,"default")}else if(l.defaultValue!==void 0)this.setOptionValueWithSource(s,l.defaultValue,"default");let r=(i,o,c)=>{if(i==null&&l.presetArg!==void 0)i=l.presetArg;let a=this.getOptionValue(s);if(i!==null&&l.parseArg)i=this._callParseArg(l,i,a,o);else if(i!==null&&l.variadic)i=l._collectValue(i,a);if(i==null)if(l.negate)i=!1;else if(l.isBoolean()||l.optional)i=!0;else i="";this.setOptionValueWithSource(s,i,c)};if(this.on("option:"+n,(i)=>{let o=`error: option '${l.flags}' argument '${i}' is invalid.`;r(i,o,"cli")}),l.envVar)this.on("optionEnv:"+n,(i)=>{let o=`error: option '${l.flags}' value '${i}' from env '${l.envVar}' is invalid.`;r(i,o,"env")});return this}_optionEx(l,n,s,r,i){if(typeof n==="object"&&n instanceof
|
|
14
|
+
(Did you mean ${r[0]}?)`;return""}hi.suggestSimilar=xi});var Cs=al((_i)=>{var Ci=Bl("node:events").EventEmitter,Tn=Bl("node:child_process"),fl=Bl("node:path"),Wl=Bl("node:fs"),G=Bl("node:process"),{Argument:Ni,humanReadableArgName:Gi}=Ml(),{CommanderError:Ln}=Ul(),{Help:qi,stripColor:zi}=dn(),{Option:xs,DualOptions:Ji}=Dn(),{suggestSimilar:hs}=Us();class Bn extends Ci{constructor(l){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=l||"",this._optionValues={},this._optionValueSources={},this._storeOptionsAsProperties=!1,this._actionHandler=null,this._executableHandler=!1,this._executableFile=null,this._executableDir=null,this._defaultCommandName=null,this._exitCallback=null,this._aliases=[],this._combineFlagAndOptionalValue=!0,this._description="",this._summary="",this._argsDescription=void 0,this._enablePositionalOptions=!1,this._passThroughOptions=!1,this._lifeCycleHooks={},this._showHelpAfterError=!1,this._showSuggestionAfterError=!0,this._savedState=null,this._outputConfiguration={writeOut:(n)=>G.stdout.write(n),writeErr:(n)=>G.stderr.write(n),outputError:(n,s)=>s(n),getOutHelpWidth:()=>G.stdout.isTTY?G.stdout.columns:void 0,getErrHelpWidth:()=>G.stderr.isTTY?G.stderr.columns:void 0,getOutHasColors:()=>Rn()??(G.stdout.isTTY&&G.stdout.hasColors?.()),getErrHasColors:()=>Rn()??(G.stderr.isTTY&&G.stderr.hasColors?.()),stripColor:(n)=>zi(n)},this._hidden=!1,this._helpOption=void 0,this._addImplicitHelpCommand=void 0,this._helpCommand=void 0,this._helpConfiguration={},this._helpGroupHeading=void 0,this._defaultCommandGroup=void 0,this._defaultOptionGroup=void 0}copyInheritedSettings(l){return this._outputConfiguration=l._outputConfiguration,this._helpOption=l._helpOption,this._helpCommand=l._helpCommand,this._helpConfiguration=l._helpConfiguration,this._exitCallback=l._exitCallback,this._storeOptionsAsProperties=l._storeOptionsAsProperties,this._combineFlagAndOptionalValue=l._combineFlagAndOptionalValue,this._allowExcessArguments=l._allowExcessArguments,this._enablePositionalOptions=l._enablePositionalOptions,this._showHelpAfterError=l._showHelpAfterError,this._showSuggestionAfterError=l._showSuggestionAfterError,this}_getCommandAndAncestors(){let l=[];for(let n=this;n;n=n.parent)l.push(n);return l}command(l,n,s){let r=n,i=s;if(typeof r==="object"&&r!==null)i=r,r=null;i=i||{};let[,o,c]=l.match(/([^ ]+) *(.*)/),a=this.createCommand(o);if(r)a.description(r),a._executableHandler=!0;if(i.isDefault)this._defaultCommandName=a._name;if(a._hidden=!!(i.noHelp||i.hidden),a._executableFile=i.executableFile||null,c)a.arguments(c);if(this._registerCommand(a),a.parent=this,a.copyInheritedSettings(this),r)return this;return a}createCommand(l){return new Bn(l)}createHelp(){return Object.assign(new qi,this.configureHelp())}configureHelp(l){if(l===void 0)return this._helpConfiguration;return this._helpConfiguration=l,this}configureOutput(l){if(l===void 0)return this._outputConfiguration;return this._outputConfiguration={...this._outputConfiguration,...l},this}showHelpAfterError(l=!0){if(typeof l!=="string")l=!!l;return this._showHelpAfterError=l,this}showSuggestionAfterError(l=!0){return this._showSuggestionAfterError=!!l,this}addCommand(l,n){if(!l._name)throw Error(`Command passed to .addCommand() must have a name
|
|
15
|
+
- specify the name in Command constructor or using .name()`);if(n=n||{},n.isDefault)this._defaultCommandName=l._name;if(n.noHelp||n.hidden)l._hidden=!0;return this._registerCommand(l),l.parent=this,l._checkForBrokenPassThrough(),this}createArgument(l,n){return new Ni(l,n)}argument(l,n,s,r){let i=this.createArgument(l,n);if(typeof s==="function")i.default(r).argParser(s);else i.default(s);return this.addArgument(i),this}arguments(l){return l.trim().split(/ +/).forEach((n)=>{this.argument(n)}),this}addArgument(l){let n=this.registeredArguments.slice(-1)[0];if(n?.variadic)throw Error(`only the last argument can be variadic '${n.name()}'`);if(l.required&&l.defaultValue!==void 0&&l.parseArg===void 0)throw Error(`a default value for a required argument is never used: '${l.name()}'`);return this.registeredArguments.push(l),this}helpCommand(l,n){if(typeof l==="boolean"){if(this._addImplicitHelpCommand=l,l&&this._defaultCommandGroup)this._initCommandGroup(this._getHelpCommand());return this}let s=l??"help [command]",[,r,i]=s.match(/([^ ]+) *(.*)/),o=n??"display help for command",c=this.createCommand(r);if(c.helpOption(!1),i)c.arguments(i);if(o)c.description(o);if(this._addImplicitHelpCommand=!0,this._helpCommand=c,l||n)this._initCommandGroup(c);return this}addHelpCommand(l,n){if(typeof l!=="object")return this.helpCommand(l,n),this;return this._addImplicitHelpCommand=!0,this._helpCommand=l,this._initCommandGroup(l),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(l,n){let s=["preSubcommand","preAction","postAction"];if(!s.includes(l))throw Error(`Unexpected value for event passed to hook : '${l}'.
|
|
16
|
+
Expecting one of '${s.join("', '")}'`);if(this._lifeCycleHooks[l])this._lifeCycleHooks[l].push(n);else this._lifeCycleHooks[l]=[n];return this}exitOverride(l){if(l)this._exitCallback=l;else this._exitCallback=(n)=>{if(n.code!=="commander.executeSubCommandAsync")throw n};return this}_exit(l,n,s){if(this._exitCallback)this._exitCallback(new Ln(l,n,s));G.exit(l)}action(l){let n=(s)=>{let r=this.registeredArguments.length,i=s.slice(0,r);if(this._storeOptionsAsProperties)i[r]=this;else i[r]=this.opts();return i.push(this),l.apply(this,i)};return this._actionHandler=n,this}createOption(l,n){return new xs(l,n)}_callParseArg(l,n,s,r){try{return l.parseArg(n,s)}catch(i){if(i.code==="commander.invalidArgument"){let o=`${r} ${i.message}`;this.error(o,{exitCode:i.exitCode,code:i.code})}throw i}}_registerOption(l){let n=l.short&&this._findOption(l.short)||l.long&&this._findOption(l.long);if(n){let s=l.long&&this._findOption(l.long)?l.long:l.short;throw Error(`Cannot add option '${l.flags}'${this._name&&` to command '${this._name}'`} due to conflicting flag '${s}'
|
|
17
|
+
- already used by option '${n.flags}'`)}this._initOptionGroup(l),this.options.push(l)}_registerCommand(l){let n=(r)=>{return[r.name()].concat(r.aliases())},s=n(l).find((r)=>this._findCommand(r));if(s){let r=n(this._findCommand(s)).join("|"),i=n(l).join("|");throw Error(`cannot add command '${i}' as already have command '${r}'`)}this._initCommandGroup(l),this.commands.push(l)}addOption(l){this._registerOption(l);let n=l.name(),s=l.attributeName();if(l.negate){let i=l.long.replace(/^--no-/,"--");if(!this._findOption(i))this.setOptionValueWithSource(s,l.defaultValue===void 0?!0:l.defaultValue,"default")}else if(l.defaultValue!==void 0)this.setOptionValueWithSource(s,l.defaultValue,"default");let r=(i,o,c)=>{if(i==null&&l.presetArg!==void 0)i=l.presetArg;let a=this.getOptionValue(s);if(i!==null&&l.parseArg)i=this._callParseArg(l,i,a,o);else if(i!==null&&l.variadic)i=l._collectValue(i,a);if(i==null)if(l.negate)i=!1;else if(l.isBoolean()||l.optional)i=!0;else i="";this.setOptionValueWithSource(s,i,c)};if(this.on("option:"+n,(i)=>{let o=`error: option '${l.flags}' argument '${i}' is invalid.`;r(i,o,"cli")}),l.envVar)this.on("optionEnv:"+n,(i)=>{let o=`error: option '${l.flags}' value '${i}' from env '${l.envVar}' is invalid.`;r(i,o,"env")});return this}_optionEx(l,n,s,r,i){if(typeof n==="object"&&n instanceof xs)throw Error("To add an Option object use addOption() instead of option() or requiredOption()");let o=this.createOption(n,s);if(o.makeOptionMandatory(!!l.mandatory),typeof r==="function")o.default(i).argParser(r);else if(r instanceof RegExp){let c=r;r=(a,k)=>{let f=c.exec(a);return f?f[0]:k},o.default(i).argParser(r)}else o.default(r);return this.addOption(o)}option(l,n,s,r){return this._optionEx({},l,n,s,r)}requiredOption(l,n,s,r){return this._optionEx({mandatory:!0},l,n,s,r)}combineFlagAndOptionalValue(l=!0){return this._combineFlagAndOptionalValue=!!l,this}allowUnknownOption(l=!0){return this._allowUnknownOption=!!l,this}allowExcessArguments(l=!0){return this._allowExcessArguments=!!l,this}enablePositionalOptions(l=!0){return this._enablePositionalOptions=!!l,this}passThroughOptions(l=!0){return this._passThroughOptions=!!l,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(l=!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=!!l,this}getOptionValue(l){if(this._storeOptionsAsProperties)return this[l];return this._optionValues[l]}setOptionValue(l,n){return this.setOptionValueWithSource(l,n,void 0)}setOptionValueWithSource(l,n,s){if(this._storeOptionsAsProperties)this[l]=n;else this._optionValues[l]=n;return this._optionValueSources[l]=s,this}getOptionValueSource(l){return this._optionValueSources[l]}getOptionValueSourceWithGlobals(l){let n;return this._getCommandAndAncestors().forEach((s)=>{if(s.getOptionValueSource(l)!==void 0)n=s.getOptionValueSource(l)}),n}_prepareUserArgs(l,n){if(l!==void 0&&!Array.isArray(l))throw Error("first parameter to parse must be array or undefined");if(n=n||{},l===void 0&&n.from===void 0){if(G.versions?.electron)n.from="electron";let r=G.execArgv??[];if(r.includes("-e")||r.includes("--eval")||r.includes("-p")||r.includes("--print"))n.from="eval"}if(l===void 0)l=G.argv;this.rawArgs=l.slice();let s;switch(n.from){case void 0:case"node":this._scriptPath=l[1],s=l.slice(2);break;case"electron":if(G.defaultApp)this._scriptPath=l[1],s=l.slice(2);else s=l.slice(1);break;case"user":s=l.slice(0);break;case"eval":s=l.slice(1);break;default:throw Error(`unexpected parse option { from: '${n.from}' }`)}if(!this._name&&this._scriptPath)this.nameFromFilename(this._scriptPath);return this._name=this._name||"program",s}parse(l,n){this._prepareForParse();let s=this._prepareUserArgs(l,n);return this._parseCommand([],s),this}async parseAsync(l,n){this._prepareForParse();let s=this._prepareUserArgs(l,n);return await this._parseCommand([],s),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
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(l,n,s){if(Wl.existsSync(l))return;let r=n?`searched for local subcommand relative to directory '${n}'`:"no directory for search for local subcommand, use .executableDir() to supply a custom directory",i=`'${l}' does not exist
|
|
19
19
|
- if '${s}' 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
|
-
- ${r}`;throw Error(i)}_executeSubCommand(l,n){n=n.slice();let s=!1,r=[".js",".ts",".tsx",".mjs",".cjs"];function i(f,b){let m=fl.resolve(f,b);if(Wl.existsSync(m))return m;if(r.includes(fl.extname(b)))return;let
|
|
21
|
+
- ${r}`;throw Error(i)}_executeSubCommand(l,n){n=n.slice();let s=!1,r=[".js",".ts",".tsx",".mjs",".cjs"];function i(f,b){let m=fl.resolve(f,b);if(Wl.existsSync(m))return m;if(r.includes(fl.extname(b)))return;let I=r.find((L)=>Wl.existsSync(`${m}${L}`));if(I)return`${m}${I}`;return}this._checkForMissingMandatoryOptions(),this._checkForConflictingOptions();let o=l._executableFile||`${this._name}-${l._name}`,c=this._executableDir||"";if(this._scriptPath){let f;try{f=Wl.realpathSync(this._scriptPath)}catch{f=this._scriptPath}c=fl.resolve(fl.dirname(f),c)}if(c){let f=i(c,o);if(!f&&!l._executableFile&&this._scriptPath){let b=fl.basename(this._scriptPath,fl.extname(this._scriptPath));if(b!==this._name)f=i(c,`${b}-${l._name}`)}o=f||o}s=r.includes(fl.extname(o));let a;if(G.platform!=="win32")if(s)n.unshift(o),n=js(G.execArgv).concat(n),a=Tn.spawn(G.argv[0],n,{stdio:"inherit"});else a=Tn.spawn(o,n,{stdio:"inherit"});else this._checkForMissingExecutable(o,c,l._name),n.unshift(o),n=js(G.execArgv).concat(n),a=Tn.spawn(G.execPath,n,{stdio:"inherit"});if(!a.killed)["SIGUSR1","SIGUSR2","SIGTERM","SIGINT","SIGHUP"].forEach((b)=>{G.on(b,()=>{if(a.killed===!1&&a.exitCode===null)a.kill(b)})});let k=this._exitCallback;a.on("close",(f)=>{if(f=f??1,!k)G.exit(f);else k(new Ln(f,"commander.executeSubCommandAsync","(close)"))}),a.on("error",(f)=>{if(f.code==="ENOENT")this._checkForMissingExecutable(o,c,l._name);else if(f.code==="EACCES")throw Error(`'${o}' not executable`);if(!k)G.exit(1);else{let b=new Ln(1,"commander.executeSubCommandAsync","(error)");b.nestedError=f,k(b)}}),this.runningCommand=a}_dispatchSubcommand(l,n,s){let r=this._findCommand(l);if(!r)this.help({error:!0});r._prepareForParse();let i;return i=this._chainOrCallSubCommandHook(i,r,"preSubcommand"),i=this._chainOrCall(i,()=>{if(r._executableHandler)this._executeSubCommand(r,n.concat(s));else return r._parseCommand(n,s)}),i}_dispatchHelpCommand(l){if(!l)this.help();let n=this._findCommand(l);if(n&&!n._executableHandler)n.help();return this._dispatchSubcommand(l,[],[this._getHelpOption()?.long??this._getHelpOption()?.short??"--help"])}_checkNumberOfArguments(){if(this.registeredArguments.forEach((l,n)=>{if(l.required&&this.args[n]==null)this.missingArgument(l.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 l=(s,r,i)=>{let o=r;if(r!==null&&s.parseArg){let c=`error: command-argument value '${r}' is invalid for argument '${s.name()}'.`;o=this._callParseArg(s,r,i,c)}return o};this._checkNumberOfArguments();let n=[];this.registeredArguments.forEach((s,r)=>{let i=s.defaultValue;if(s.variadic){if(r<this.args.length){if(i=this.args.slice(r),s.parseArg)i=i.reduce((o,c)=>{return l(s,c,o)},s.defaultValue)}else if(i===void 0)i=[]}else if(r<this.args.length){if(i=this.args[r],s.parseArg)i=l(s,i,s.defaultValue)}n[r]=i}),this.processedArgs=n}_chainOrCall(l,n){if(l?.then&&typeof l.then==="function")return l.then(()=>n());return n()}_chainOrCallHooks(l,n){let s=l,r=[];if(this._getCommandAndAncestors().reverse().filter((i)=>i._lifeCycleHooks[n]!==void 0).forEach((i)=>{i._lifeCycleHooks[n].forEach((o)=>{r.push({hookedCommand:i,callback:o})})}),n==="postAction")r.reverse();return r.forEach((i)=>{s=this._chainOrCall(s,()=>{return i.callback(i.hookedCommand,this)})}),s}_chainOrCallSubCommandHook(l,n,s){let r=l;if(this._lifeCycleHooks[s]!==void 0)this._lifeCycleHooks[s].forEach((i)=>{r=this._chainOrCall(r,()=>{return i(this,n)})});return r}_parseCommand(l,n){let s=this.parseOptions(n);if(this._parseOptionsEnv(),this._parseOptionsImplied(),l=l.concat(s.operands),n=s.unknown,this.args=l.concat(n),l&&this._findCommand(l[0]))return this._dispatchSubcommand(l[0],l.slice(1),n);if(this._getHelpCommand()&&l[0]===this._getHelpCommand().name())return this._dispatchHelpCommand(l[1]);if(this._defaultCommandName)return this._outputHelpIfRequested(n),this._dispatchSubcommand(this._defaultCommandName,l,n);if(this.commands.length&&this.args.length===0&&!this._actionHandler&&!this._defaultCommandName)this.help({error:!0});this._outputHelpIfRequested(s.unknown),this._checkForMissingMandatoryOptions(),this._checkForConflictingOptions();let r=()=>{if(s.unknown.length>0)this.unknownOption(s.unknown[0])},i=`command:${this.name()}`;if(this._actionHandler){r(),this._processArguments();let o;if(o=this._chainOrCallHooks(o,"preAction"),o=this._chainOrCall(o,()=>this._actionHandler(this.processedArgs)),this.parent)o=this._chainOrCall(o,()=>{this.parent.emit(i,l,n)});return o=this._chainOrCallHooks(o,"postAction"),o}if(this.parent?.listenerCount(i))r(),this._processArguments(),this.parent.emit(i,l,n);else if(l.length){if(this._findCommand("*"))return this._dispatchSubcommand("*",l,n);if(this.listenerCount("command:*"))this.emit("command:*",l,n);else if(this.commands.length)this.unknownCommand();else r(),this._processArguments()}else if(this.commands.length)r(),this.help({error:!0});else r(),this._processArguments()}_findCommand(l){if(!l)return;return this.commands.find((n)=>n._name===l||n._aliases.includes(l))}_findOption(l){return this.options.find((n)=>n.is(l))}_checkForMissingMandatoryOptions(){this._getCommandAndAncestors().forEach((l)=>{l.options.forEach((n)=>{if(n.mandatory&&l.getOptionValue(n.attributeName())===void 0)l.missingMandatoryOptionValue(n)})})}_checkForConflictingLocalOptions(){let l=this.options.filter((s)=>{let r=s.attributeName();if(this.getOptionValue(r)===void 0)return!1;return this.getOptionValueSource(r)!=="default"});l.filter((s)=>s.conflictsWith.length>0).forEach((s)=>{let r=l.find((i)=>s.conflictsWith.includes(i.attributeName()));if(r)this._conflictingOption(s,r)})}_checkForConflictingOptions(){this._getCommandAndAncestors().forEach((l)=>{l._checkForConflictingLocalOptions()})}parseOptions(l){let n=[],s=[],r=n;function i(f){return f.length>1&&f[0]==="-"}let o=(f)=>{if(!/^-(\d+|\d*\.\d+)(e[+-]?\d+)?$/.test(f))return!1;return!this._getCommandAndAncestors().some((b)=>b.options.map((m)=>m.short).some((m)=>/^-\d$/.test(m)))},c=null,a=null,k=0;while(k<l.length||a){let f=a??l[k++];if(a=null,f==="--"){if(r===s)r.push(f);r.push(...l.slice(k));break}if(c&&(!i(f)||o(f))){this.emit(`option:${c.name()}`,f);continue}if(c=null,i(f)){let b=this._findOption(f);if(b){if(b.required){let m=l[k++];if(m===void 0)this.optionMissingArgument(b);this.emit(`option:${b.name()}`,m)}else if(b.optional){let m=null;if(k<l.length&&(!i(l[k])||o(l[k])))m=l[k++];this.emit(`option:${b.name()}`,m)}else this.emit(`option:${b.name()}`);c=b.variadic?b:null;continue}}if(f.length>2&&f[0]==="-"&&f[1]!=="-"){let b=this._findOption(`-${f[1]}`);if(b){if(b.required||b.optional&&this._combineFlagAndOptionalValue)this.emit(`option:${b.name()}`,f.slice(2));else this.emit(`option:${b.name()}`),a=`-${f.slice(2)}`;continue}}if(/^--[^=]+=/.test(f)){let b=f.indexOf("="),m=this._findOption(f.slice(0,b));if(m&&(m.required||m.optional)){this.emit(`option:${m.name()}`,f.slice(b+1));continue}}if(r===n&&i(f)&&!(this.commands.length===0&&o(f)))r=s;if((this._enablePositionalOptions||this._passThroughOptions)&&n.length===0&&s.length===0){if(this._findCommand(f)){n.push(f),s.push(...l.slice(k));break}else if(this._getHelpCommand()&&f===this._getHelpCommand().name()){n.push(f,...l.slice(k));break}else if(this._defaultCommandName){s.push(f,...l.slice(k));break}}if(this._passThroughOptions){r.push(f,...l.slice(k));break}r.push(f)}return{operands:n,unknown:s}}opts(){if(this._storeOptionsAsProperties){let l={},n=this.options.length;for(let s=0;s<n;s++){let r=this.options[s].attributeName();l[r]=r===this._versionOptionName?this._version:this[r]}return l}return this._optionValues}optsWithGlobals(){return this._getCommandAndAncestors().reduce((l,n)=>Object.assign(l,n.opts()),{})}error(l,n){if(this._outputConfiguration.outputError(`${l}
|
|
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 s=n||{},r=s.exitCode||1,i=s.code||"commander.error";this._exit(r,i,l)}_parseOptionsEnv(){this.options.forEach((l)=>{if(l.envVar&&l.envVar in
|
|
25
|
-
`),this._exit(0,"commander.version",l)}),this}description(l,n){if(l===void 0&&n===void 0)return this._description;if(this._description=l,n)this._argsDescription=n;return this}summary(l){if(l===void 0)return this._summary;return this._summary=l,this}alias(l){if(l===void 0)return this._aliases[0];let n=this;if(this.commands.length!==0&&this.commands[this.commands.length-1]._executableHandler)n=this.commands[this.commands.length-1];if(l===n._name)throw Error("Command alias can't be the same as its name");let s=this.parent?._findCommand(l);if(s){let r=[s.name()].concat(s.aliases()).join("|");throw Error(`cannot add alias '${l}' to command '${this.name()}' as already have command '${r}'`)}return n._aliases.push(l),this}aliases(l){if(l===void 0)return this._aliases;return l.forEach((n)=>this.alias(n)),this}usage(l){if(l===void 0){if(this._usage)return this._usage;let n=this.registeredArguments.map((s)=>{return
|
|
24
|
+
`),this.outputHelp({error:!0});let s=n||{},r=s.exitCode||1,i=s.code||"commander.error";this._exit(r,i,l)}_parseOptionsEnv(){this.options.forEach((l)=>{if(l.envVar&&l.envVar in G.env){let n=l.attributeName();if(this.getOptionValue(n)===void 0||["default","config","env"].includes(this.getOptionValueSource(n)))if(l.required||l.optional)this.emit(`optionEnv:${l.name()}`,G.env[l.envVar]);else this.emit(`optionEnv:${l.name()}`)}})}_parseOptionsImplied(){let l=new Ji(this.options),n=(s)=>{return this.getOptionValue(s)!==void 0&&!["default","implied"].includes(this.getOptionValueSource(s))};this.options.filter((s)=>s.implied!==void 0&&n(s.attributeName())&&l.valueFromOption(this.getOptionValue(s.attributeName()),s)).forEach((s)=>{Object.keys(s.implied).filter((r)=>!n(r)).forEach((r)=>{this.setOptionValueWithSource(r,s.implied[r],"implied")})})}missingArgument(l){let n=`error: missing required argument '${l}'`;this.error(n,{code:"commander.missingArgument"})}optionMissingArgument(l){let n=`error: option '${l.flags}' argument missing`;this.error(n,{code:"commander.optionMissingArgument"})}missingMandatoryOptionValue(l){let n=`error: required option '${l.flags}' not specified`;this.error(n,{code:"commander.missingMandatoryOptionValue"})}_conflictingOption(l,n){let s=(o)=>{let c=o.attributeName(),a=this.getOptionValue(c),k=this.options.find((b)=>b.negate&&c===b.attributeName()),f=this.options.find((b)=>!b.negate&&c===b.attributeName());if(k&&(k.presetArg===void 0&&a===!1||k.presetArg!==void 0&&a===k.presetArg))return k;return f||o},r=(o)=>{let c=s(o),a=c.attributeName();if(this.getOptionValueSource(a)==="env")return`environment variable '${c.envVar}'`;return`option '${c.flags}'`},i=`error: ${r(l)} cannot be used with ${r(n)}`;this.error(i,{code:"commander.conflictingOption"})}unknownOption(l){if(this._allowUnknownOption)return;let n="";if(l.startsWith("--")&&this._showSuggestionAfterError){let r=[],i=this;do{let o=i.createHelp().visibleOptions(i).filter((c)=>c.long).map((c)=>c.long);r=r.concat(o),i=i.parent}while(i&&!i._enablePositionalOptions);n=hs(l,r)}let s=`error: unknown option '${l}'${n}`;this.error(s,{code:"commander.unknownOption"})}_excessArguments(l){if(this._allowExcessArguments)return;let n=this.registeredArguments.length,s=n===1?"":"s",i=`error: too many arguments${this.parent?` for '${this.name()}'`:""}. Expected ${n} argument${s} but got ${l.length}.`;this.error(i,{code:"commander.excessArguments"})}unknownCommand(){let l=this.args[0],n="";if(this._showSuggestionAfterError){let r=[];this.createHelp().visibleCommands(this).forEach((i)=>{if(r.push(i.name()),i.alias())r.push(i.alias())}),n=hs(l,r)}let s=`error: unknown command '${l}'${n}`;this.error(s,{code:"commander.unknownCommand"})}version(l,n,s){if(l===void 0)return this._version;this._version=l,n=n||"-V, --version",s=s||"output the version number";let r=this.createOption(n,s);return this._versionOptionName=r.attributeName(),this._registerOption(r),this.on("option:"+r.name(),()=>{this._outputConfiguration.writeOut(`${l}
|
|
25
|
+
`),this._exit(0,"commander.version",l)}),this}description(l,n){if(l===void 0&&n===void 0)return this._description;if(this._description=l,n)this._argsDescription=n;return this}summary(l){if(l===void 0)return this._summary;return this._summary=l,this}alias(l){if(l===void 0)return this._aliases[0];let n=this;if(this.commands.length!==0&&this.commands[this.commands.length-1]._executableHandler)n=this.commands[this.commands.length-1];if(l===n._name)throw Error("Command alias can't be the same as its name");let s=this.parent?._findCommand(l);if(s){let r=[s.name()].concat(s.aliases()).join("|");throw Error(`cannot add alias '${l}' to command '${this.name()}' as already have command '${r}'`)}return n._aliases.push(l),this}aliases(l){if(l===void 0)return this._aliases;return l.forEach((n)=>this.alias(n)),this}usage(l){if(l===void 0){if(this._usage)return this._usage;let n=this.registeredArguments.map((s)=>{return Gi(s)});return[].concat(this.options.length||this._helpOption!==null?"[options]":[],this.commands.length?"[command]":[],this.registeredArguments.length?n:[]).join(" ")}return this._usage=l,this}name(l){if(l===void 0)return this._name;return this._name=l,this}helpGroup(l){if(l===void 0)return this._helpGroupHeading??"";return this._helpGroupHeading=l,this}commandsGroup(l){if(l===void 0)return this._defaultCommandGroup??"";return this._defaultCommandGroup=l,this}optionsGroup(l){if(l===void 0)return this._defaultOptionGroup??"";return this._defaultOptionGroup=l,this}_initOptionGroup(l){if(this._defaultOptionGroup&&!l.helpGroupHeading)l.helpGroup(this._defaultOptionGroup)}_initCommandGroup(l){if(this._defaultCommandGroup&&!l.helpGroup())l.helpGroup(this._defaultCommandGroup)}nameFromFilename(l){return this._name=fl.basename(l,fl.extname(l)),this}executableDir(l){if(l===void 0)return this._executableDir;return this._executableDir=l,this}helpInformation(l){let n=this.createHelp(),s=this._getOutputContext(l);n.prepareContext({error:s.error,helpWidth:s.helpWidth,outputHasColors:s.hasColors});let r=n.formatHelp(this,n);if(s.hasColors)return r;return this._outputConfiguration.stripColor(r)}_getOutputContext(l){l=l||{};let n=!!l.error,s,r,i;if(n)s=(c)=>this._outputConfiguration.writeErr(c),r=this._outputConfiguration.getErrHasColors(),i=this._outputConfiguration.getErrHelpWidth();else s=(c)=>this._outputConfiguration.writeOut(c),r=this._outputConfiguration.getOutHasColors(),i=this._outputConfiguration.getOutHelpWidth();return{error:n,write:(c)=>{if(!r)c=this._outputConfiguration.stripColor(c);return s(c)},hasColors:r,helpWidth:i}}outputHelp(l){let n;if(typeof l==="function")n=l,l=void 0;let s=this._getOutputContext(l),r={error:s.error,write:s.write,command:this};this._getCommandAndAncestors().reverse().forEach((o)=>o.emit("beforeAllHelp",r)),this.emit("beforeHelp",r);let i=this.helpInformation({error:s.error});if(n){if(i=n(i),typeof i!=="string"&&!Buffer.isBuffer(i))throw Error("outputHelp callback must return a string or a Buffer")}if(s.write(i),this._getHelpOption()?.long)this.emit(this._getHelpOption().long);this.emit("afterHelp",r),this._getCommandAndAncestors().forEach((o)=>o.emit("afterAllHelp",r))}helpOption(l,n){if(typeof l==="boolean"){if(l){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(l??"-h, --help",n??"display help for command"),l||n)this._initOptionGroup(this._helpOption);return this}_getHelpOption(){if(this._helpOption===void 0)this.helpOption(void 0,void 0);return this._helpOption}addHelpOption(l){return this._helpOption=l,this._initOptionGroup(l),this}help(l){this.outputHelp(l);let n=Number(G.exitCode??0);if(n===0&&l&&typeof l!=="function"&&l.error)n=1;this._exit(n,"commander.help","(outputHelp)")}addHelpText(l,n){let s=["beforeAll","before","after","afterAll"];if(!s.includes(l))throw Error(`Unexpected value for position to addHelpText.
|
|
26
26
|
Expecting one of '${s.join("', '")}'`);let r=`${l}Help`;return this.on(r,(i)=>{let o;if(typeof n==="function")o=n({error:i.error,command:i.command});else o=n;if(o)i.write(`${o}
|
|
27
|
-
`)}),this}_outputHelpIfRequested(l){let n=this._getHelpOption();if(n&&l.find((r)=>n.is(r)))this.outputHelp(),this._exit(0,"commander.helpDisplayed","(outputHelp)")}}function xs(l){return l.map((n)=>{if(!n.startsWith("--inspect"))return n;let s,r="127.0.0.1",i="9229",o;if((o=n.match(/^(--inspect(-brk)?)$/))!==null)s=o[1];else if((o=n.match(/^(--inspect(-brk|-port)?)=([^:]+)$/))!==null)if(s=o[1],/^\d+$/.test(o[3]))i=o[3];else r=o[3];else if((o=n.match(/^(--inspect(-brk|-port)?)=([^:]+):(\d+)$/))!==null)s=o[1],r=o[3],i=o[4];if(s&&i!=="0")return`${s}=${r}:${parseInt(i)+1}`;return n})}function Ln(){if(q.env.NO_COLOR||q.env.FORCE_COLOR==="0"||q.env.FORCE_COLOR==="false")return!1;if(q.env.FORCE_COLOR||q.env.CLICOLOR_FORCE!==void 0)return!0;return}Ni.Command=Bn;Ni.useColor=Ln});var qs=al((zi)=>{var{Argument:Ns}=Pl(),{Command:Rn}=js(),{CommanderError:qi,InvalidArgumentError:Cs}=Ul(),{Help:hi}=wn(),{Option:Gs}=dn();zi.program=new Rn;zi.createCommand=(l)=>new Rn(l);zi.createOption=(l,n)=>new Gs(l,n);zi.createArgument=(l,n)=>new Ns(l,n);zi.Command=Rn;zi.Option=Gs;zi.Argument=Ns;zi.Help=hi;zi.CommanderError=qi;zi.InvalidArgumentError=Cs;zi.InvalidOptionArgumentError=Cs});var kl=al(($a,Cn)=>{var vl=process||{},Xs=vl.argv||[],Fl=vl.env||{},Fi=!(!!Fl.NO_COLOR||Xs.includes("--no-color"))&&(!!Fl.FORCE_COLOR||Xs.includes("--color")||vl.platform==="win32"||(vl.stdout||{}).isTTY&&Fl.TERM!=="dumb"||!!Fl.CI),vi=(l,n,s=l)=>(r)=>{let i=""+r,o=i.indexOf(n,l.length);return~o?l+pi(i,n,s,o)+n:l+i+n},pi=(l,n,s,r)=>{let i="",o=0;do i+=l.substring(o,r)+s,o=r+n.length,r=l.indexOf(n,o);while(~r);return i+l.substring(o)},Ys=(l=Fi)=>{let n=l?vi:()=>String;return{isColorSupported:l,reset:n("\x1B[0m","\x1B[0m"),bold:n("\x1B[1m","\x1B[22m","\x1B[22m\x1B[1m"),dim:n("\x1B[2m","\x1B[22m","\x1B[22m\x1B[2m"),italic:n("\x1B[3m","\x1B[23m"),underline:n("\x1B[4m","\x1B[24m"),inverse:n("\x1B[7m","\x1B[27m"),hidden:n("\x1B[8m","\x1B[28m"),strikethrough:n("\x1B[9m","\x1B[29m"),black:n("\x1B[30m","\x1B[39m"),red:n("\x1B[31m","\x1B[39m"),green:n("\x1B[32m","\x1B[39m"),yellow:n("\x1B[33m","\x1B[39m"),blue:n("\x1B[34m","\x1B[39m"),magenta:n("\x1B[35m","\x1B[39m"),cyan:n("\x1B[36m","\x1B[39m"),white:n("\x1B[37m","\x1B[39m"),gray:n("\x1B[90m","\x1B[39m"),bgBlack:n("\x1B[40m","\x1B[49m"),bgRed:n("\x1B[41m","\x1B[49m"),bgGreen:n("\x1B[42m","\x1B[49m"),bgYellow:n("\x1B[43m","\x1B[49m"),bgBlue:n("\x1B[44m","\x1B[49m"),bgMagenta:n("\x1B[45m","\x1B[49m"),bgCyan:n("\x1B[46m","\x1B[49m"),bgWhite:n("\x1B[47m","\x1B[49m"),blackBright:n("\x1B[90m","\x1B[39m"),redBright:n("\x1B[91m","\x1B[39m"),greenBright:n("\x1B[92m","\x1B[39m"),yellowBright:n("\x1B[93m","\x1B[39m"),blueBright:n("\x1B[94m","\x1B[39m"),magentaBright:n("\x1B[95m","\x1B[39m"),cyanBright:n("\x1B[96m","\x1B[39m"),whiteBright:n("\x1B[97m","\x1B[39m"),bgBlackBright:n("\x1B[100m","\x1B[49m"),bgRedBright:n("\x1B[101m","\x1B[49m"),bgGreenBright:n("\x1B[102m","\x1B[49m"),bgYellowBright:n("\x1B[103m","\x1B[49m"),bgBlueBright:n("\x1B[104m","\x1B[49m"),bgMagentaBright:n("\x1B[105m","\x1B[49m"),bgCyanBright:n("\x1B[106m","\x1B[49m"),bgWhiteBright:n("\x1B[107m","\x1B[49m")}};Cn.exports=Ys();Cn.exports.createColors=Ys});var qn=al((Ia,Zs)=>{var Gn={to(l,n){if(!n)return`\x1B[${l+1}G`;return`\x1B[${n+1};${l+1}H`},move(l,n){let s="";if(l<0)s+=`\x1B[${-l}D`;else if(l>0)s+=`\x1B[${l}C`;if(n<0)s+=`\x1B[${-n}A`;else if(n>0)s+=`\x1B[${n}B`;return s},up:(l=1)=>`\x1B[${l}A`,down:(l=1)=>`\x1B[${l}B`,forward:(l=1)=>`\x1B[${l}C`,backward:(l=1)=>`\x1B[${l}D`,nextLine:(l=1)=>"\x1B[E".repeat(l),prevLine:(l=1)=>"\x1B[F".repeat(l),left:"\x1B[G",hide:"\x1B[?25l",show:"\x1B[?25h",save:"\x1B7",restore:"\x1B8"},ei={up:(l=1)=>"\x1B[S".repeat(l),down:(l=1)=>"\x1B[T".repeat(l)},lo={screen:"\x1B[2J",up:(l=1)=>"\x1B[1J".repeat(l),down:(l=1)=>"\x1B[J".repeat(l),line:"\x1B[2K",lineEnd:"\x1B[K",lineStart:"\x1B[1K",lines(l){let n="";for(let s=0;s<l;s++)n+=this.line+(s<l-1?Gn.up():"");if(l)n+=Gn.left;return n}};Zs.exports={cursor:Gn,scroll:ei,erase:lo,beep:"\x07"}});var hs=p(qs(),1),{program:e,createCommand:la,createArgument:na,createOption:sa,CommanderError:ra,InvalidArgumentError:ia,InvalidOptionArgumentError:oa,Command:ca,Argument:aa,Option:fa,Help:ka}=hs.default;var El={name:"flins",version:"0.3.0",description:"Universal skill installer for AI coding agents - Claude, Cursor, Copilot, and more",keywords:["agent-skills","ai-agents","claude","cli","coding-assistant","copilot","cursor","github-copilot","skills"],homepage:"https://github.com/powroom/flins#readme",bugs:{url:"https://github.com/powroom/flins/issues"},license:"MIT",author:"flins",repository:{type:"git",url:"git+https://github.com/powroom/flins.git"},bin:{flins:"./dist/index.js"},files:["dist","README.md"],type:"module",module:"src/index.ts",scripts:{build:"bun build src/index.ts --outdir dist --target node --minify",dev:"bun src/index.ts",typecheck:"tsgo --noEmit",prepublishOnly:"bun run build",lint:"oxlint","lint:fix":"oxlint --fix",fmt:"oxfmt","fmt:check":"oxfmt --check"},dependencies:{"@clack/prompts":"^1.0.0-alpha.9",commander:"^14.0.2",picocolors:"^1.1.1"},devDependencies:{"@types/bun":"latest","@typescript/native-preview":"catalog:","bun-types":"^1.3.6",oxfmt:"^0.24.0",oxlint:"^1.39.0"}};import{existsSync as R}from"node:fs";import{homedir as Ei,platform as Vi}from"node:os";import{join as u}from"node:path";var I=Ei(),V=process.env.XDG_CONFIG_HOME?.trim()||u(I,".config"),ll=".agents/skills";function Oi(l){return l}var U=Oi({amp:{label:"Amp",skillsDir:ll,globalSkillsDir:u(V,"agents/skills"),detectInstalled:()=>R(u(V,"amp"))||R(u(I,".amp"))},antigravity:{label:"Antigravity",skillsDir:".agent/skills",globalSkillsDir:u(I,".gemini/antigravity/skills"),detectInstalled:()=>R(u(I,".gemini/antigravity"))},augment:{label:"Augment",skillsDir:".augment/skills",globalSkillsDir:u(I,".augment/skills"),detectInstalled:()=>R(u(I,".augment"))},"claude-code":{label:"Claude Code",skillsDir:".claude/skills",globalSkillsDir:u(process.env.CLAUDE_CONFIG_DIR?.trim()||u(I,".claude"),"skills"),commandsDir:".claude/commands",globalCommandsDir:u(process.env.CLAUDE_CONFIG_DIR?.trim()||u(I,".claude"),"commands"),detectInstalled:()=>R(process.env.CLAUDE_CONFIG_DIR?.trim()||u(I,".claude"))},openclaw:{label:"OpenClaw",skillsDir:"skills",globalSkillsDir:u(I,".openclaw/skills"),detectInstalled:()=>R(u(I,".openclaw"))},cline:{label:"Cline",skillsDir:ll,globalSkillsDir:u(I,".agents/skills"),detectInstalled:()=>R(u(I,".cline"))},codebuddy:{label:"CodeBuddy",skillsDir:".codebuddy/skills",globalSkillsDir:u(I,".codebuddy/skills"),detectInstalled:()=>R(u(process.cwd(),".codebuddy"))||R(u(I,".codebuddy"))},codex:{label:"Codex",skillsDir:ll,globalSkillsDir:u(process.env.CODEX_HOME?.trim()||u(I,".codex"),"skills"),detectInstalled:()=>R(process.env.CODEX_HOME?.trim()||u(I,".codex"))||R("/etc/codex")},"command-code":{label:"Command Code",skillsDir:".commandcode/skills",globalSkillsDir:u(I,".commandcode/skills"),detectInstalled:()=>R(u(I,".commandcode"))},continue:{label:"Continue",skillsDir:".continue/skills",globalSkillsDir:u(I,".continue/skills"),detectInstalled:()=>R(u(process.cwd(),".continue"))||R(u(I,".continue"))},cortex:{label:"Cortex Code",skillsDir:".cortex/skills",globalSkillsDir:u(I,".snowflake/cortex/skills"),detectInstalled:()=>R(u(I,".snowflake/cortex"))},crush:{label:"Crush",skillsDir:".crush/skills",globalSkillsDir:u(V,"crush/skills"),detectInstalled:()=>R(u(V,"crush"))},cursor:{label:"Cursor",skillsDir:ll,globalSkillsDir:u(I,".cursor/skills"),detectInstalled:()=>R(u(I,".cursor"))},droid:{label:"Droid",skillsDir:".factory/skills",globalSkillsDir:u(I,".factory/skills"),commandsDir:".factory/commands",globalCommandsDir:u(I,".factory/commands"),detectInstalled:()=>R(u(I,".factory"))},"gemini-cli":{label:"Gemini CLI",skillsDir:ll,globalSkillsDir:u(I,".gemini/skills"),detectInstalled:()=>R(u(I,".gemini"))},"github-copilot":{label:"GitHub Copilot",skillsDir:ll,globalSkillsDir:u(I,".copilot/skills"),detectInstalled:()=>R(u(I,".copilot"))},goose:{label:"Goose",skillsDir:".goose/skills",globalSkillsDir:u(V,"goose/skills"),detectInstalled:()=>R(u(V,"goose"))||R(u(I,".goose"))},junie:{label:"Junie",skillsDir:".junie/skills",globalSkillsDir:u(I,".junie/skills"),detectInstalled:()=>R(u(I,".junie"))},"iflow-cli":{label:"iFlow CLI",skillsDir:".iflow/skills",globalSkillsDir:u(I,".iflow/skills"),detectInstalled:()=>R(u(I,".iflow"))},kilo:{label:"Kilo Code",skillsDir:".kilocode/skills",globalSkillsDir:u(I,".kilocode/skills"),detectInstalled:()=>R(u(I,".kilocode"))},"kimi-cli":{label:"Kimi Code CLI",skillsDir:ll,globalSkillsDir:u(V,"agents/skills"),detectInstalled:()=>R(u(I,".kimi"))},"kiro-cli":{label:"Kiro CLI",skillsDir:".kiro/skills",globalSkillsDir:u(I,".kiro/skills"),detectInstalled:()=>R(u(I,".kiro"))},kode:{label:"Kode",skillsDir:".kode/skills",globalSkillsDir:u(I,".kode/skills"),detectInstalled:()=>R(u(I,".kode"))},letta:{label:"Letta",skillsDir:".skills",globalSkillsDir:u(I,".letta/skills"),detectInstalled:()=>R(u(I,".letta"))},mcpjam:{label:"MCPJam",skillsDir:".mcpjam/skills",globalSkillsDir:u(I,".mcpjam/skills"),detectInstalled:()=>R(u(I,".mcpjam"))},"mistral-vibe":{label:"Mistral Vibe",skillsDir:".vibe/skills",globalSkillsDir:u(I,".vibe/skills"),detectInstalled:()=>R(u(I,".vibe"))},mux:{label:"Mux",skillsDir:".mux/skills",globalSkillsDir:u(I,".mux/skills"),detectInstalled:()=>R(u(I,".mux"))},opencode:{label:"OpenCode",skillsDir:ll,globalSkillsDir:u(V,"opencode/skills"),commandsDir:".opencode/commands",globalCommandsDir:u(V,"opencode/commands"),detectInstalled:()=>R(u(V,"opencode"))},openhands:{label:"OpenHands",skillsDir:".openhands/skills",globalSkillsDir:u(I,".openhands/skills"),detectInstalled:()=>R(u(I,".openhands"))},pi:{label:"Pi",skillsDir:".pi/skills",globalSkillsDir:u(I,".pi/agent/skills"),detectInstalled:()=>R(u(I,".pi/agent"))},qoder:{label:"Qoder",skillsDir:".qoder/skills",globalSkillsDir:u(I,".qoder/skills"),detectInstalled:()=>R(u(I,".qoder"))},"qwen-code":{label:"Qwen Code",skillsDir:".qwen/skills",globalSkillsDir:u(I,".qwen/skills"),detectInstalled:()=>R(u(I,".qwen"))},replit:{label:"Replit",skillsDir:ll,globalSkillsDir:u(V,"agents/skills"),detectInstalled:()=>R(u(process.cwd(),".replit"))},roo:{label:"Roo Code",skillsDir:".roo/skills",globalSkillsDir:u(I,".roo/skills"),detectInstalled:()=>R(u(I,".roo"))},trae:{label:"Trae",skillsDir:".trae/skills",globalSkillsDir:u(I,".trae/skills"),detectInstalled:()=>R(u(I,".trae"))},"trae-cn":{label:"Trae CN",skillsDir:".trae/skills",globalSkillsDir:u(I,".trae-cn/skills"),detectInstalled:()=>R(u(I,".trae-cn"))},windsurf:{label:"Windsurf",skillsDir:".windsurf/skills",globalSkillsDir:u(I,".codeium/windsurf/skills"),detectInstalled:()=>R(u(I,".codeium/windsurf"))||R(u(I,".windsurf"))},zencoder:{label:"Zencoder",skillsDir:".zencoder/skills",globalSkillsDir:u(I,".zencoder/skills"),detectInstalled:()=>R(u(I,".zencoder"))},neovate:{label:"Neovate",skillsDir:".neovate/skills",globalSkillsDir:u(I,".neovate/skills"),detectInstalled:()=>R(u(I,".neovate"))},pochi:{label:"Pochi",skillsDir:".pochi/skills",globalSkillsDir:u(I,".pochi/skills"),detectInstalled:()=>R(u(I,".pochi"))},adal:{label:"AdaL",skillsDir:".adal/skills",globalSkillsDir:u(I,".adal/skills"),detectInstalled:()=>R(u(I,".adal"))},universal:{label:"Universal",skillsDir:ll,globalSkillsDir:u(V,"agents/skills"),detectInstalled:()=>!1}});function nl(){return Object.keys(U)}function zs(){return nl().filter((l)=>{let n=U[l];return Boolean(n.commandsDir)})}function Dl(){return nl().filter((l)=>U[l].skillsDir===ll)}function Vl(){let l=new Set(Dl());return nl().filter((n)=>!l.has(n))}function Js(){return`OpenCode, Claude Code, Codex, Cursor, and ${nl().length-4} more`}function Sl(l){return l.replace(I,"~")}function Un(l){let n=[],s=[],r=new Set;for(let i of l){let o=i.trim().toLowerCase();if(!(o in U)){s.push(i);continue}if(r.has(o))continue;r.add(o),n.push(o)}return{agents:n,invalid:s}}function Ol(l){let n=U[l];return Boolean(n.commandsDir)}function xn(){return nl().filter((l)=>U[l].detectInstalled())}function _s(l){if(l.startsWith("~"))return l.replace("~",I);if(Vi()==="win32"&&l.startsWith("%USERPROFILE%"))return l.replace("%USERPROFILE%",I);return l}function jn(l,n,s=process.cwd()){let r=n==="global"?U[l].globalSkillsDir:U[l].skillsDir;return n==="global"?_s(r):u(s,r)}function Nn(l,n,s=process.cwd()){let r=U[l],i=n==="global"?r.globalCommandsDir:r.commandsDir;if(!i)return null;return n==="global"?_s(i):u(s,i)}function Hs(l,n){let s=new Set(l),r=new Map;for(let i of nl()){let o=n==="global"?U[i].globalSkillsDir:U[i].skillsDir,c=r.get(o)??[];c.push(i),r.set(o,c)}return Array.from(r.entries()).filter(([,i])=>i.length>1&&i.some((o)=>s.has(o))).map(([i,o])=>`${Sl(i)} is shared by ${o.map((c)=>U[c].label).join(", ")}`)}var sn=p(kl(),1),Y=p(qn(),1);import{stdout as Xn,stdin as Ps}from"node:process";import*as gl from"node:readline";import no from"node:readline";import{ReadStream as As}from"node:tty";var so=(l)=>l===161||l===164||l===167||l===168||l===170||l===173||l===174||l>=176&&l<=180||l>=182&&l<=186||l>=188&&l<=191||l===198||l===208||l===215||l===216||l>=222&&l<=225||l===230||l>=232&&l<=234||l===236||l===237||l===240||l===242||l===243||l>=247&&l<=250||l===252||l===254||l===257||l===273||l===275||l===283||l===294||l===295||l===299||l>=305&&l<=307||l===312||l>=319&&l<=322||l===324||l>=328&&l<=331||l===333||l===338||l===339||l===358||l===359||l===363||l===462||l===464||l===466||l===468||l===470||l===472||l===474||l===476||l===593||l===609||l===708||l===711||l>=713&&l<=715||l===717||l===720||l>=728&&l<=731||l===733||l===735||l>=768&&l<=879||l>=913&&l<=929||l>=931&&l<=937||l>=945&&l<=961||l>=963&&l<=969||l===1025||l>=1040&&l<=1103||l===1105||l===8208||l>=8211&&l<=8214||l===8216||l===8217||l===8220||l===8221||l>=8224&&l<=8226||l>=8228&&l<=8231||l===8240||l===8242||l===8243||l===8245||l===8251||l===8254||l===8308||l===8319||l>=8321&&l<=8324||l===8364||l===8451||l===8453||l===8457||l===8467||l===8470||l===8481||l===8482||l===8486||l===8491||l===8531||l===8532||l>=8539&&l<=8542||l>=8544&&l<=8555||l>=8560&&l<=8569||l===8585||l>=8592&&l<=8601||l===8632||l===8633||l===8658||l===8660||l===8679||l===8704||l===8706||l===8707||l===8711||l===8712||l===8715||l===8719||l===8721||l===8725||l===8730||l>=8733&&l<=8736||l===8739||l===8741||l>=8743&&l<=8748||l===8750||l>=8756&&l<=8759||l===8764||l===8765||l===8776||l===8780||l===8786||l===8800||l===8801||l>=8804&&l<=8807||l===8810||l===8811||l===8814||l===8815||l===8834||l===8835||l===8838||l===8839||l===8853||l===8857||l===8869||l===8895||l===8978||l>=9312&&l<=9449||l>=9451&&l<=9547||l>=9552&&l<=9587||l>=9600&&l<=9615||l>=9618&&l<=9621||l===9632||l===9633||l>=9635&&l<=9641||l===9650||l===9651||l===9654||l===9655||l===9660||l===9661||l===9664||l===9665||l>=9670&&l<=9672||l===9675||l>=9678&&l<=9681||l>=9698&&l<=9701||l===9711||l===9733||l===9734||l===9737||l===9742||l===9743||l===9756||l===9758||l===9792||l===9794||l===9824||l===9825||l>=9827&&l<=9829||l>=9831&&l<=9834||l===9836||l===9837||l===9839||l===9886||l===9887||l===9919||l>=9926&&l<=9933||l>=9935&&l<=9939||l>=9941&&l<=9953||l===9955||l===9960||l===9961||l>=9963&&l<=9969||l===9972||l>=9974&&l<=9977||l===9979||l===9980||l===9982||l===9983||l===10045||l>=10102&&l<=10111||l>=11094&&l<=11097||l>=12872&&l<=12879||l>=57344&&l<=63743||l>=65024&&l<=65039||l===65533||l>=127232&&l<=127242||l>=127248&&l<=127277||l>=127280&&l<=127337||l>=127344&&l<=127373||l===127375||l===127376||l>=127387&&l<=127404||l>=917760&&l<=917999||l>=983040&&l<=1048573||l>=1048576&&l<=1114109,ro=(l)=>l===12288||l>=65281&&l<=65376||l>=65504&&l<=65510,io=(l)=>l>=4352&&l<=4447||l===8986||l===8987||l===9001||l===9002||l>=9193&&l<=9196||l===9200||l===9203||l===9725||l===9726||l===9748||l===9749||l>=9800&&l<=9811||l===9855||l===9875||l===9889||l===9898||l===9899||l===9917||l===9918||l===9924||l===9925||l===9934||l===9940||l===9962||l===9970||l===9971||l===9973||l===9978||l===9981||l===9989||l===9994||l===9995||l===10024||l===10060||l===10062||l>=10067&&l<=10069||l===10071||l>=10133&&l<=10135||l===10160||l===10175||l===11035||l===11036||l===11088||l===11093||l>=11904&&l<=11929||l>=11931&&l<=12019||l>=12032&&l<=12245||l>=12272&&l<=12287||l>=12289&&l<=12350||l>=12353&&l<=12438||l>=12441&&l<=12543||l>=12549&&l<=12591||l>=12593&&l<=12686||l>=12688&&l<=12771||l>=12783&&l<=12830||l>=12832&&l<=12871||l>=12880&&l<=19903||l>=19968&&l<=42124||l>=42128&&l<=42182||l>=43360&&l<=43388||l>=44032&&l<=55203||l>=63744&&l<=64255||l>=65040&&l<=65049||l>=65072&&l<=65106||l>=65108&&l<=65126||l>=65128&&l<=65131||l>=94176&&l<=94180||l===94192||l===94193||l>=94208&&l<=100343||l>=100352&&l<=101589||l>=101632&&l<=101640||l>=110576&&l<=110579||l>=110581&&l<=110587||l===110589||l===110590||l>=110592&&l<=110882||l===110898||l>=110928&&l<=110930||l===110933||l>=110948&&l<=110951||l>=110960&&l<=111355||l===126980||l===127183||l===127374||l>=127377&&l<=127386||l>=127488&&l<=127490||l>=127504&&l<=127547||l>=127552&&l<=127560||l===127568||l===127569||l>=127584&&l<=127589||l>=127744&&l<=127776||l>=127789&&l<=127797||l>=127799&&l<=127868||l>=127870&&l<=127891||l>=127904&&l<=127946||l>=127951&&l<=127955||l>=127968&&l<=127984||l===127988||l>=127992&&l<=128062||l===128064||l>=128066&&l<=128252||l>=128255&&l<=128317||l>=128331&&l<=128334||l>=128336&&l<=128359||l===128378||l===128405||l===128406||l===128420||l>=128507&&l<=128591||l>=128640&&l<=128709||l===128716||l>=128720&&l<=128722||l>=128725&&l<=128727||l>=128732&&l<=128735||l===128747||l===128748||l>=128756&&l<=128764||l>=128992&&l<=129003||l===129008||l>=129292&&l<=129338||l>=129340&&l<=129349||l>=129351&&l<=129535||l>=129648&&l<=129660||l>=129664&&l<=129672||l>=129680&&l<=129725||l>=129727&&l<=129733||l>=129742&&l<=129755||l>=129760&&l<=129768||l>=129776&&l<=129784||l>=131072&&l<=196605||l>=196608&&l<=262141,hn=/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/y,pl=/[\x00-\x08\x0A-\x1F\x7F-\x9F]{1,1000}/y,el=/\t{1,1000}/y,zn=/[\u{1F1E6}-\u{1F1FF}]{2}|\u{1F3F4}[\u{E0061}-\u{E007A}]{2}[\u{E0030}-\u{E0039}\u{E0061}-\u{E007A}]{1,3}\u{E007F}|(?:\p{Emoji}\uFE0F\u20E3?|\p{Emoji_Modifier_Base}\p{Emoji_Modifier}?|\p{Emoji_Presentation})(?:\u200D(?:\p{Emoji_Modifier_Base}\p{Emoji_Modifier}?|\p{Emoji_Presentation}|\p{Emoji}\uFE0F\u20E3?))*/yu,ln=/(?:[\x20-\x7E\xA0-\xFF](?!\uFE0F)){1,1000}/y,oo=/\p{M}+/gu,co={limit:1/0,ellipsis:""},Ws=(l,n={},s={})=>{let r=n.limit??1/0,i=n.ellipsis??"",o=n?.ellipsisWidth??(i?Ws(i,co,s).width:0),c=s.ansiWidth??0,a=s.controlWidth??0,k=s.tabWidth??8,f=s.ambiguousWidth??1,b=s.emojiWidth??2,m=s.fullWidthWidth??2,t=s.regularWidth??1,L=s.wideWidth??2,y=0,$=0,d=l.length,B=0,T=!1,N=d,h=Math.max(0,r-o),z=0,_=0,w=0,D=0;l:for(;;){if(_>z||$>=d&&$>y){let Q=l.slice(z,_)||l.slice(y,$);B=0;for(let W of Q.replaceAll(oo,"")){let K=W.codePointAt(0)||0;if(ro(K)?D=m:io(K)?D=L:f!==t&&so(K)?D=f:D=t,w+D>h&&(N=Math.min(N,Math.max(z,y)+B)),w+D>r){T=!0;break l}B+=W.length,w+=D}z=_=0}if($>=d)break;if(ln.lastIndex=$,ln.test(l)){if(B=ln.lastIndex-$,D=B*t,w+D>h&&(N=Math.min(N,$+Math.floor((h-w)/t))),w+D>r){T=!0;break}w+=D,z=y,_=$,$=y=ln.lastIndex;continue}if(hn.lastIndex=$,hn.test(l)){if(w+c>h&&(N=Math.min(N,$)),w+c>r){T=!0;break}w+=c,z=y,_=$,$=y=hn.lastIndex;continue}if(pl.lastIndex=$,pl.test(l)){if(B=pl.lastIndex-$,D=B*a,w+D>h&&(N=Math.min(N,$+Math.floor((h-w)/a))),w+D>r){T=!0;break}w+=D,z=y,_=$,$=y=pl.lastIndex;continue}if(el.lastIndex=$,el.test(l)){if(B=el.lastIndex-$,D=B*k,w+D>h&&(N=Math.min(N,$+Math.floor((h-w)/k))),w+D>r){T=!0;break}w+=D,z=y,_=$,$=y=el.lastIndex;continue}if(zn.lastIndex=$,zn.test(l)){if(w+b>h&&(N=Math.min(N,$)),w+b>r){T=!0;break}w+=b,z=y,_=$,$=y=zn.lastIndex;continue}$+=1}return{width:T?h:w,index:T?N:d,truncated:T,ellipsed:T&&r>=o}},ao={limit:1/0,ellipsis:"",ellipsisWidth:0},xl=(l,n={})=>Ws(l,ao,n).width,on="\x1B",Es="",fo=39,Yn="\x07",Vs="[",ko="]",Os="m",Zn=`${ko}8;;`,Qs=new RegExp(`(?:\\${Vs}(?<code>\\d+)m|\\${Zn}(?<uri>.*)${Yn})`,"y"),bo=(l)=>{if(l>=30&&l<=37||l>=90&&l<=97)return 39;if(l>=40&&l<=47||l>=100&&l<=107)return 49;if(l===1||l===2)return 22;if(l===3)return 23;if(l===4)return 24;if(l===7)return 27;if(l===8)return 28;if(l===9)return 29;if(l===0)return 0},Ks=(l)=>`${on}${Vs}${l}${Os}`,Ms=(l)=>`${on}${Zn}${l}${Yn}`,yo=(l)=>l.map((n)=>xl(n)),Jn=(l,n,s)=>{let r=n[Symbol.iterator](),i=!1,o=!1,c=l.at(-1),a=c===void 0?0:xl(c),k=r.next(),f=r.next(),b=0;for(;!k.done;){let m=k.value,t=xl(m);a+t<=s?l[l.length-1]+=m:(l.push(m),a=0),(m===on||m===Es)&&(i=!0,o=n.startsWith(Zn,b+1)),i?o?m===Yn&&(i=!1,o=!1):m===Os&&(i=!1):(a+=t,a===s&&!f.done&&(l.push(""),a=0)),k=f,f=r.next(),b+=m.length}c=l.at(-1),!a&&c!==void 0&&c.length>0&&l.length>1&&(l[l.length-2]+=l.pop())},go=(l)=>{let n=l.split(" "),s=n.length;for(;s>0&&!(xl(n[s-1])>0);)s--;return s===n.length?l:n.slice(0,s).join(" ")+n.slice(s).join("")},uo=(l,n,s={})=>{if(s.trim!==!1&&l.trim()==="")return"";let r="",i,o,c=l.split(" "),a=yo(c),k=[""];for(let[y,$]of c.entries()){s.trim!==!1&&(k[k.length-1]=(k.at(-1)??"").trimStart());let d=xl(k.at(-1)??"");if(y!==0&&(d>=n&&(s.wordWrap===!1||s.trim===!1)&&(k.push(""),d=0),(d>0||s.trim===!1)&&(k[k.length-1]+=" ",d++)),s.hard&&a[y]>n){let B=n-d,T=1+Math.floor((a[y]-B-1)/n);Math.floor((a[y]-1)/n)<T&&k.push(""),Jn(k,$,n);continue}if(d+a[y]>n&&d>0&&a[y]>0){if(s.wordWrap===!1&&d<n){Jn(k,$,n);continue}k.push("")}if(d+a[y]>n&&s.wordWrap===!1){Jn(k,$,n);continue}k[k.length-1]+=$}s.trim!==!1&&(k=k.map((y)=>go(y)));let f=k.join(`
|
|
28
|
-
`),b=f[Symbol.iterator](),m=b.next(),
|
|
29
|
-
`?(o&&(r+=
|
|
30
|
-
`&&(i&&d&&(r+=
|
|
27
|
+
`)}),this}_outputHelpIfRequested(l){let n=this._getHelpOption();if(n&&l.find((r)=>n.is(r)))this.outputHelp(),this._exit(0,"commander.helpDisplayed","(outputHelp)")}}function js(l){return l.map((n)=>{if(!n.startsWith("--inspect"))return n;let s,r="127.0.0.1",i="9229",o;if((o=n.match(/^(--inspect(-brk)?)$/))!==null)s=o[1];else if((o=n.match(/^(--inspect(-brk|-port)?)=([^:]+)$/))!==null)if(s=o[1],/^\d+$/.test(o[3]))i=o[3];else r=o[3];else if((o=n.match(/^(--inspect(-brk|-port)?)=([^:]+):(\d+)$/))!==null)s=o[1],r=o[3],i=o[4];if(s&&i!=="0")return`${s}=${r}:${parseInt(i)+1}`;return n})}function Rn(){if(G.env.NO_COLOR||G.env.FORCE_COLOR==="0"||G.env.FORCE_COLOR==="false")return!1;if(G.env.FORCE_COLOR||G.env.CLICOLOR_FORCE!==void 0)return!0;return}_i.Command=Bn;_i.useColor=Rn});var zs=al((Zi)=>{var{Argument:Ns}=Ml(),{Command:Un}=Cs(),{CommanderError:Xi,InvalidArgumentError:Gs}=Ul(),{Help:Yi}=dn(),{Option:qs}=Dn();Zi.program=new Un;Zi.createCommand=(l)=>new Un(l);Zi.createOption=(l,n)=>new qs(l,n);Zi.createArgument=(l,n)=>new Ns(l,n);Zi.Command=Un;Zi.Option=qs;Zi.Argument=Ns;Zi.Help=Yi;Zi.CommanderError=Xi;Zi.InvalidArgumentError=Gs;Zi.InvalidOptionArgumentError=Gs});var kl=al((Da,Nn)=>{var vl=process||{},Ys=vl.argv||[],Fl=vl.env||{},ro=!(!!Fl.NO_COLOR||Ys.includes("--no-color"))&&(!!Fl.FORCE_COLOR||Ys.includes("--color")||vl.platform==="win32"||(vl.stdout||{}).isTTY&&Fl.TERM!=="dumb"||!!Fl.CI),io=(l,n,s=l)=>(r)=>{let i=""+r,o=i.indexOf(n,l.length);return~o?l+oo(i,n,s,o)+n:l+i+n},oo=(l,n,s,r)=>{let i="",o=0;do i+=l.substring(o,r)+s,o=r+n.length,r=l.indexOf(n,o);while(~r);return i+l.substring(o)},Zs=(l=ro)=>{let n=l?io:()=>String;return{isColorSupported:l,reset:n("\x1B[0m","\x1B[0m"),bold:n("\x1B[1m","\x1B[22m","\x1B[22m\x1B[1m"),dim:n("\x1B[2m","\x1B[22m","\x1B[22m\x1B[2m"),italic:n("\x1B[3m","\x1B[23m"),underline:n("\x1B[4m","\x1B[24m"),inverse:n("\x1B[7m","\x1B[27m"),hidden:n("\x1B[8m","\x1B[28m"),strikethrough:n("\x1B[9m","\x1B[29m"),black:n("\x1B[30m","\x1B[39m"),red:n("\x1B[31m","\x1B[39m"),green:n("\x1B[32m","\x1B[39m"),yellow:n("\x1B[33m","\x1B[39m"),blue:n("\x1B[34m","\x1B[39m"),magenta:n("\x1B[35m","\x1B[39m"),cyan:n("\x1B[36m","\x1B[39m"),white:n("\x1B[37m","\x1B[39m"),gray:n("\x1B[90m","\x1B[39m"),bgBlack:n("\x1B[40m","\x1B[49m"),bgRed:n("\x1B[41m","\x1B[49m"),bgGreen:n("\x1B[42m","\x1B[49m"),bgYellow:n("\x1B[43m","\x1B[49m"),bgBlue:n("\x1B[44m","\x1B[49m"),bgMagenta:n("\x1B[45m","\x1B[49m"),bgCyan:n("\x1B[46m","\x1B[49m"),bgWhite:n("\x1B[47m","\x1B[49m"),blackBright:n("\x1B[90m","\x1B[39m"),redBright:n("\x1B[91m","\x1B[39m"),greenBright:n("\x1B[92m","\x1B[39m"),yellowBright:n("\x1B[93m","\x1B[39m"),blueBright:n("\x1B[94m","\x1B[39m"),magentaBright:n("\x1B[95m","\x1B[39m"),cyanBright:n("\x1B[96m","\x1B[39m"),whiteBright:n("\x1B[97m","\x1B[39m"),bgBlackBright:n("\x1B[100m","\x1B[49m"),bgRedBright:n("\x1B[101m","\x1B[49m"),bgGreenBright:n("\x1B[102m","\x1B[49m"),bgYellowBright:n("\x1B[103m","\x1B[49m"),bgBlueBright:n("\x1B[104m","\x1B[49m"),bgMagentaBright:n("\x1B[105m","\x1B[49m"),bgCyanBright:n("\x1B[106m","\x1B[49m"),bgWhiteBright:n("\x1B[107m","\x1B[49m")}};Nn.exports=Zs();Nn.exports.createColors=Zs});var qn=al((Ta,As)=>{var Gn={to(l,n){if(!n)return`\x1B[${l+1}G`;return`\x1B[${n+1};${l+1}H`},move(l,n){let s="";if(l<0)s+=`\x1B[${-l}D`;else if(l>0)s+=`\x1B[${l}C`;if(n<0)s+=`\x1B[${-n}A`;else if(n>0)s+=`\x1B[${n}B`;return s},up:(l=1)=>`\x1B[${l}A`,down:(l=1)=>`\x1B[${l}B`,forward:(l=1)=>`\x1B[${l}C`,backward:(l=1)=>`\x1B[${l}D`,nextLine:(l=1)=>"\x1B[E".repeat(l),prevLine:(l=1)=>"\x1B[F".repeat(l),left:"\x1B[G",hide:"\x1B[?25l",show:"\x1B[?25h",save:"\x1B7",restore:"\x1B8"},co={up:(l=1)=>"\x1B[S".repeat(l),down:(l=1)=>"\x1B[T".repeat(l)},ao={screen:"\x1B[2J",up:(l=1)=>"\x1B[1J".repeat(l),down:(l=1)=>"\x1B[J".repeat(l),line:"\x1B[2K",lineEnd:"\x1B[K",lineStart:"\x1B[1K",lines(l){let n="";for(let s=0;s<l;s++)n+=this.line+(s<l-1?Gn.up():"");if(l)n+=Gn.left;return n}};As.exports={cursor:Gn,scroll:co,erase:ao,beep:"\x07"}});var Js=p(zs(),1),{program:e,createCommand:oa,createArgument:ca,createOption:aa,CommanderError:fa,InvalidArgumentError:ka,InvalidOptionArgumentError:ba,Command:ya,Argument:ua,Option:ga,Help:ma}=Js.default;var El={name:"flins",version:"0.3.1",description:"Universal skill installer for AI coding agents - Claude, Cursor, Copilot, and more",keywords:["agent-skills","ai-agents","claude","cli","coding-assistant","copilot","cursor","github-copilot","skills"],homepage:"https://github.com/powroom/flins#readme",bugs:{url:"https://github.com/powroom/flins/issues"},license:"MIT",author:"flins",repository:{type:"git",url:"git+https://github.com/powroom/flins.git"},bin:{flins:"./dist/index.js"},files:["dist","README.md"],type:"module",module:"src/index.ts",scripts:{build:"bun build src/index.ts --outdir dist --target node --minify",dev:"bun src/index.ts",typecheck:"tsgo --noEmit",prepublishOnly:"bun run build",lint:"oxlint","lint:fix":"oxlint --fix",fmt:"oxfmt","fmt:check":"oxfmt --check"},dependencies:{"@clack/prompts":"^1.0.0-alpha.9",commander:"^14.0.2",picocolors:"^1.1.1"},devDependencies:{"@types/bun":"latest","@typescript/native-preview":"catalog:","bun-types":"^1.3.6",oxfmt:"^0.24.0",oxlint:"^1.39.0"}};import{existsSync as B}from"node:fs";import{homedir as lo,platform as no}from"node:os";import{join as g}from"node:path";var $=lo(),V=process.env.XDG_CONFIG_HOME?.trim()||g($,".config"),ll=".agents/skills";function so(l){return l}var U=so({amp:{label:"Amp",skillsDir:ll,globalSkillsDir:g(V,"agents/skills"),detectInstalled:()=>B(g(V,"amp"))||B(g($,".amp"))},antigravity:{label:"Antigravity",skillsDir:".agent/skills",globalSkillsDir:g($,".gemini/antigravity/skills"),detectInstalled:()=>B(g($,".gemini/antigravity"))},augment:{label:"Augment",skillsDir:".augment/skills",globalSkillsDir:g($,".augment/skills"),detectInstalled:()=>B(g($,".augment"))},"claude-code":{label:"Claude Code",skillsDir:".claude/skills",globalSkillsDir:g(process.env.CLAUDE_CONFIG_DIR?.trim()||g($,".claude"),"skills"),commandsDir:".claude/commands",globalCommandsDir:g(process.env.CLAUDE_CONFIG_DIR?.trim()||g($,".claude"),"commands"),detectInstalled:()=>B(process.env.CLAUDE_CONFIG_DIR?.trim()||g($,".claude"))},openclaw:{label:"OpenClaw",skillsDir:"skills",globalSkillsDir:g($,".openclaw/skills"),detectInstalled:()=>B(g($,".openclaw"))},cline:{label:"Cline",skillsDir:ll,globalSkillsDir:g($,".agents/skills"),detectInstalled:()=>B(g($,".cline"))},codebuddy:{label:"CodeBuddy",skillsDir:".codebuddy/skills",globalSkillsDir:g($,".codebuddy/skills"),detectInstalled:()=>B(g(process.cwd(),".codebuddy"))||B(g($,".codebuddy"))},codex:{label:"Codex",skillsDir:ll,globalSkillsDir:g(process.env.CODEX_HOME?.trim()||g($,".codex"),"skills"),detectInstalled:()=>B(process.env.CODEX_HOME?.trim()||g($,".codex"))||B("/etc/codex")},"command-code":{label:"Command Code",skillsDir:".commandcode/skills",globalSkillsDir:g($,".commandcode/skills"),detectInstalled:()=>B(g($,".commandcode"))},continue:{label:"Continue",skillsDir:".continue/skills",globalSkillsDir:g($,".continue/skills"),detectInstalled:()=>B(g(process.cwd(),".continue"))||B(g($,".continue"))},cortex:{label:"Cortex Code",skillsDir:".cortex/skills",globalSkillsDir:g($,".snowflake/cortex/skills"),detectInstalled:()=>B(g($,".snowflake/cortex"))},crush:{label:"Crush",skillsDir:".crush/skills",globalSkillsDir:g(V,"crush/skills"),detectInstalled:()=>B(g(V,"crush"))},cursor:{label:"Cursor",skillsDir:ll,globalSkillsDir:g($,".cursor/skills"),detectInstalled:()=>B(g($,".cursor"))},droid:{label:"Droid",skillsDir:".factory/skills",globalSkillsDir:g($,".factory/skills"),commandsDir:".factory/commands",globalCommandsDir:g($,".factory/commands"),detectInstalled:()=>B(g($,".factory"))},"gemini-cli":{label:"Gemini CLI",skillsDir:ll,globalSkillsDir:g($,".gemini/skills"),detectInstalled:()=>B(g($,".gemini"))},"github-copilot":{label:"GitHub Copilot",skillsDir:ll,globalSkillsDir:g($,".copilot/skills"),detectInstalled:()=>B(g($,".copilot"))},goose:{label:"Goose",skillsDir:".goose/skills",globalSkillsDir:g(V,"goose/skills"),detectInstalled:()=>B(g(V,"goose"))||B(g($,".goose"))},junie:{label:"Junie",skillsDir:".junie/skills",globalSkillsDir:g($,".junie/skills"),detectInstalled:()=>B(g($,".junie"))},"iflow-cli":{label:"iFlow CLI",skillsDir:".iflow/skills",globalSkillsDir:g($,".iflow/skills"),detectInstalled:()=>B(g($,".iflow"))},kilo:{label:"Kilo Code",skillsDir:".kilocode/skills",globalSkillsDir:g($,".kilocode/skills"),detectInstalled:()=>B(g($,".kilocode"))},"kimi-cli":{label:"Kimi Code CLI",skillsDir:ll,globalSkillsDir:g(V,"agents/skills"),detectInstalled:()=>B(g($,".kimi"))},"kiro-cli":{label:"Kiro CLI",skillsDir:".kiro/skills",globalSkillsDir:g($,".kiro/skills"),detectInstalled:()=>B(g($,".kiro"))},kode:{label:"Kode",skillsDir:".kode/skills",globalSkillsDir:g($,".kode/skills"),detectInstalled:()=>B(g($,".kode"))},letta:{label:"Letta",skillsDir:".skills",globalSkillsDir:g($,".letta/skills"),detectInstalled:()=>B(g($,".letta"))},mcpjam:{label:"MCPJam",skillsDir:".mcpjam/skills",globalSkillsDir:g($,".mcpjam/skills"),detectInstalled:()=>B(g($,".mcpjam"))},"mistral-vibe":{label:"Mistral Vibe",skillsDir:".vibe/skills",globalSkillsDir:g($,".vibe/skills"),detectInstalled:()=>B(g($,".vibe"))},mux:{label:"Mux",skillsDir:".mux/skills",globalSkillsDir:g($,".mux/skills"),detectInstalled:()=>B(g($,".mux"))},opencode:{label:"OpenCode",skillsDir:ll,globalSkillsDir:g(V,"opencode/skills"),commandsDir:".opencode/commands",globalCommandsDir:g(V,"opencode/commands"),detectInstalled:()=>B(g(V,"opencode"))},openhands:{label:"OpenHands",skillsDir:".openhands/skills",globalSkillsDir:g($,".openhands/skills"),detectInstalled:()=>B(g($,".openhands"))},pi:{label:"Pi",skillsDir:".pi/skills",globalSkillsDir:g($,".pi/agent/skills"),detectInstalled:()=>B(g($,".pi/agent"))},qoder:{label:"Qoder",skillsDir:".qoder/skills",globalSkillsDir:g($,".qoder/skills"),detectInstalled:()=>B(g($,".qoder"))},"qwen-code":{label:"Qwen Code",skillsDir:".qwen/skills",globalSkillsDir:g($,".qwen/skills"),detectInstalled:()=>B(g($,".qwen"))},replit:{label:"Replit",skillsDir:ll,globalSkillsDir:g(V,"agents/skills"),detectInstalled:()=>B(g(process.cwd(),".replit"))},roo:{label:"Roo Code",skillsDir:".roo/skills",globalSkillsDir:g($,".roo/skills"),detectInstalled:()=>B(g($,".roo"))},trae:{label:"Trae",skillsDir:".trae/skills",globalSkillsDir:g($,".trae/skills"),detectInstalled:()=>B(g($,".trae"))},"trae-cn":{label:"Trae CN",skillsDir:".trae/skills",globalSkillsDir:g($,".trae-cn/skills"),detectInstalled:()=>B(g($,".trae-cn"))},windsurf:{label:"Windsurf",skillsDir:".windsurf/skills",globalSkillsDir:g($,".codeium/windsurf/skills"),detectInstalled:()=>B(g($,".codeium/windsurf"))||B(g($,".windsurf"))},zencoder:{label:"Zencoder",skillsDir:".zencoder/skills",globalSkillsDir:g($,".zencoder/skills"),detectInstalled:()=>B(g($,".zencoder"))},neovate:{label:"Neovate",skillsDir:".neovate/skills",globalSkillsDir:g($,".neovate/skills"),detectInstalled:()=>B(g($,".neovate"))},pochi:{label:"Pochi",skillsDir:".pochi/skills",globalSkillsDir:g($,".pochi/skills"),detectInstalled:()=>B(g($,".pochi"))},adal:{label:"AdaL",skillsDir:".adal/skills",globalSkillsDir:g($,".adal/skills"),detectInstalled:()=>B(g($,".adal"))},universal:{label:"Universal",skillsDir:ll,globalSkillsDir:g(V,"agents/skills"),detectInstalled:()=>!1}});function nl(){return Object.keys(U)}function _s(){return nl().filter((l)=>{let n=U[l];return Boolean(n.commandsDir)})}function Dl(){return nl().filter((l)=>U[l].skillsDir===ll)}function Vl(){let l=new Set(Dl());return nl().filter((n)=>!l.has(n))}function Hs(){return`OpenCode, Claude Code, Codex, Cursor, and ${nl().length-4} more`}function tl(l){return l.replace($,"~")}function xn(l){let n=[],s=[],r=new Set;for(let i of l){let o=i.trim().toLowerCase();if(!(o in U)){s.push(i);continue}if(r.has(o))continue;r.add(o),n.push(o)}return{agents:n,invalid:s}}function Ol(l){let n=U[l];return Boolean(n.commandsDir)}function hn(){return nl().filter((l)=>U[l].detectInstalled())}function Ks(l){if(l.startsWith("~"))return l.replace("~",$);if(no()==="win32"&&l.startsWith("%USERPROFILE%"))return l.replace("%USERPROFILE%",$);return l}function jn(l,n,s=process.cwd()){let r=n==="global"?U[l].globalSkillsDir:U[l].skillsDir;return n==="global"?Ks(r):g(s,r)}function Cn(l,n,s=process.cwd()){let r=U[l],i=n==="global"?r.globalCommandsDir:r.commandsDir;if(!i)return null;return n==="global"?Ks(i):g(s,i)}function Xs(l,n){let s=new Set(l),r=new Map;for(let i of nl()){let o=n==="global"?U[i].globalSkillsDir:U[i].skillsDir,c=r.get(o)??[];c.push(i),r.set(o,c)}return Array.from(r.entries()).filter(([,i])=>i.length>1&&i.some((o)=>s.has(o))).map(([i,o])=>`${tl(i)} is shared by ${o.map((c)=>U[c].label).join(", ")}`)}var sn=p(kl(),1),X=p(qn(),1);import{stdout as Xn,stdin as Es}from"node:process";import*as ul from"node:readline";import fo from"node:readline";import{ReadStream as Qs}from"node:tty";var ko=(l)=>l===161||l===164||l===167||l===168||l===170||l===173||l===174||l>=176&&l<=180||l>=182&&l<=186||l>=188&&l<=191||l===198||l===208||l===215||l===216||l>=222&&l<=225||l===230||l>=232&&l<=234||l===236||l===237||l===240||l===242||l===243||l>=247&&l<=250||l===252||l===254||l===257||l===273||l===275||l===283||l===294||l===295||l===299||l>=305&&l<=307||l===312||l>=319&&l<=322||l===324||l>=328&&l<=331||l===333||l===338||l===339||l===358||l===359||l===363||l===462||l===464||l===466||l===468||l===470||l===472||l===474||l===476||l===593||l===609||l===708||l===711||l>=713&&l<=715||l===717||l===720||l>=728&&l<=731||l===733||l===735||l>=768&&l<=879||l>=913&&l<=929||l>=931&&l<=937||l>=945&&l<=961||l>=963&&l<=969||l===1025||l>=1040&&l<=1103||l===1105||l===8208||l>=8211&&l<=8214||l===8216||l===8217||l===8220||l===8221||l>=8224&&l<=8226||l>=8228&&l<=8231||l===8240||l===8242||l===8243||l===8245||l===8251||l===8254||l===8308||l===8319||l>=8321&&l<=8324||l===8364||l===8451||l===8453||l===8457||l===8467||l===8470||l===8481||l===8482||l===8486||l===8491||l===8531||l===8532||l>=8539&&l<=8542||l>=8544&&l<=8555||l>=8560&&l<=8569||l===8585||l>=8592&&l<=8601||l===8632||l===8633||l===8658||l===8660||l===8679||l===8704||l===8706||l===8707||l===8711||l===8712||l===8715||l===8719||l===8721||l===8725||l===8730||l>=8733&&l<=8736||l===8739||l===8741||l>=8743&&l<=8748||l===8750||l>=8756&&l<=8759||l===8764||l===8765||l===8776||l===8780||l===8786||l===8800||l===8801||l>=8804&&l<=8807||l===8810||l===8811||l===8814||l===8815||l===8834||l===8835||l===8838||l===8839||l===8853||l===8857||l===8869||l===8895||l===8978||l>=9312&&l<=9449||l>=9451&&l<=9547||l>=9552&&l<=9587||l>=9600&&l<=9615||l>=9618&&l<=9621||l===9632||l===9633||l>=9635&&l<=9641||l===9650||l===9651||l===9654||l===9655||l===9660||l===9661||l===9664||l===9665||l>=9670&&l<=9672||l===9675||l>=9678&&l<=9681||l>=9698&&l<=9701||l===9711||l===9733||l===9734||l===9737||l===9742||l===9743||l===9756||l===9758||l===9792||l===9794||l===9824||l===9825||l>=9827&&l<=9829||l>=9831&&l<=9834||l===9836||l===9837||l===9839||l===9886||l===9887||l===9919||l>=9926&&l<=9933||l>=9935&&l<=9939||l>=9941&&l<=9953||l===9955||l===9960||l===9961||l>=9963&&l<=9969||l===9972||l>=9974&&l<=9977||l===9979||l===9980||l===9982||l===9983||l===10045||l>=10102&&l<=10111||l>=11094&&l<=11097||l>=12872&&l<=12879||l>=57344&&l<=63743||l>=65024&&l<=65039||l===65533||l>=127232&&l<=127242||l>=127248&&l<=127277||l>=127280&&l<=127337||l>=127344&&l<=127373||l===127375||l===127376||l>=127387&&l<=127404||l>=917760&&l<=917999||l>=983040&&l<=1048573||l>=1048576&&l<=1114109,bo=(l)=>l===12288||l>=65281&&l<=65376||l>=65504&&l<=65510,yo=(l)=>l>=4352&&l<=4447||l===8986||l===8987||l===9001||l===9002||l>=9193&&l<=9196||l===9200||l===9203||l===9725||l===9726||l===9748||l===9749||l>=9800&&l<=9811||l===9855||l===9875||l===9889||l===9898||l===9899||l===9917||l===9918||l===9924||l===9925||l===9934||l===9940||l===9962||l===9970||l===9971||l===9973||l===9978||l===9981||l===9989||l===9994||l===9995||l===10024||l===10060||l===10062||l>=10067&&l<=10069||l===10071||l>=10133&&l<=10135||l===10160||l===10175||l===11035||l===11036||l===11088||l===11093||l>=11904&&l<=11929||l>=11931&&l<=12019||l>=12032&&l<=12245||l>=12272&&l<=12287||l>=12289&&l<=12350||l>=12353&&l<=12438||l>=12441&&l<=12543||l>=12549&&l<=12591||l>=12593&&l<=12686||l>=12688&&l<=12771||l>=12783&&l<=12830||l>=12832&&l<=12871||l>=12880&&l<=19903||l>=19968&&l<=42124||l>=42128&&l<=42182||l>=43360&&l<=43388||l>=44032&&l<=55203||l>=63744&&l<=64255||l>=65040&&l<=65049||l>=65072&&l<=65106||l>=65108&&l<=65126||l>=65128&&l<=65131||l>=94176&&l<=94180||l===94192||l===94193||l>=94208&&l<=100343||l>=100352&&l<=101589||l>=101632&&l<=101640||l>=110576&&l<=110579||l>=110581&&l<=110587||l===110589||l===110590||l>=110592&&l<=110882||l===110898||l>=110928&&l<=110930||l===110933||l>=110948&&l<=110951||l>=110960&&l<=111355||l===126980||l===127183||l===127374||l>=127377&&l<=127386||l>=127488&&l<=127490||l>=127504&&l<=127547||l>=127552&&l<=127560||l===127568||l===127569||l>=127584&&l<=127589||l>=127744&&l<=127776||l>=127789&&l<=127797||l>=127799&&l<=127868||l>=127870&&l<=127891||l>=127904&&l<=127946||l>=127951&&l<=127955||l>=127968&&l<=127984||l===127988||l>=127992&&l<=128062||l===128064||l>=128066&&l<=128252||l>=128255&&l<=128317||l>=128331&&l<=128334||l>=128336&&l<=128359||l===128378||l===128405||l===128406||l===128420||l>=128507&&l<=128591||l>=128640&&l<=128709||l===128716||l>=128720&&l<=128722||l>=128725&&l<=128727||l>=128732&&l<=128735||l===128747||l===128748||l>=128756&&l<=128764||l>=128992&&l<=129003||l===129008||l>=129292&&l<=129338||l>=129340&&l<=129349||l>=129351&&l<=129535||l>=129648&&l<=129660||l>=129664&&l<=129672||l>=129680&&l<=129725||l>=129727&&l<=129733||l>=129742&&l<=129755||l>=129760&&l<=129768||l>=129776&&l<=129784||l>=131072&&l<=196605||l>=196608&&l<=262141,zn=/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/y,pl=/[\x00-\x08\x0A-\x1F\x7F-\x9F]{1,1000}/y,el=/\t{1,1000}/y,Jn=/[\u{1F1E6}-\u{1F1FF}]{2}|\u{1F3F4}[\u{E0061}-\u{E007A}]{2}[\u{E0030}-\u{E0039}\u{E0061}-\u{E007A}]{1,3}\u{E007F}|(?:\p{Emoji}\uFE0F\u20E3?|\p{Emoji_Modifier_Base}\p{Emoji_Modifier}?|\p{Emoji_Presentation})(?:\u200D(?:\p{Emoji_Modifier_Base}\p{Emoji_Modifier}?|\p{Emoji_Presentation}|\p{Emoji}\uFE0F\u20E3?))*/yu,ln=/(?:[\x20-\x7E\xA0-\xFF](?!\uFE0F)){1,1000}/y,uo=/\p{M}+/gu,go={limit:1/0,ellipsis:""},Vs=(l,n={},s={})=>{let r=n.limit??1/0,i=n.ellipsis??"",o=n?.ellipsisWidth??(i?Vs(i,go,s).width:0),c=s.ansiWidth??0,a=s.controlWidth??0,k=s.tabWidth??8,f=s.ambiguousWidth??1,b=s.emojiWidth??2,m=s.fullWidthWidth??2,I=s.regularWidth??1,L=s.wideWidth??2,y=0,S=0,d=l.length,R=0,T=!1,j=d,q=Math.max(0,r-o),z=0,_=0,w=0,D=0;l:for(;;){if(_>z||S>=d&&S>y){let A=l.slice(z,_)||l.slice(y,S);R=0;for(let W of A.replaceAll(uo,"")){let Q=W.codePointAt(0)||0;if(bo(Q)?D=m:yo(Q)?D=L:f!==I&&ko(Q)?D=f:D=I,w+D>q&&(j=Math.min(j,Math.max(z,y)+R)),w+D>r){T=!0;break l}R+=W.length,w+=D}z=_=0}if(S>=d)break;if(ln.lastIndex=S,ln.test(l)){if(R=ln.lastIndex-S,D=R*I,w+D>q&&(j=Math.min(j,S+Math.floor((q-w)/I))),w+D>r){T=!0;break}w+=D,z=y,_=S,S=y=ln.lastIndex;continue}if(zn.lastIndex=S,zn.test(l)){if(w+c>q&&(j=Math.min(j,S)),w+c>r){T=!0;break}w+=c,z=y,_=S,S=y=zn.lastIndex;continue}if(pl.lastIndex=S,pl.test(l)){if(R=pl.lastIndex-S,D=R*a,w+D>q&&(j=Math.min(j,S+Math.floor((q-w)/a))),w+D>r){T=!0;break}w+=D,z=y,_=S,S=y=pl.lastIndex;continue}if(el.lastIndex=S,el.test(l)){if(R=el.lastIndex-S,D=R*k,w+D>q&&(j=Math.min(j,S+Math.floor((q-w)/k))),w+D>r){T=!0;break}w+=D,z=y,_=S,S=y=el.lastIndex;continue}if(Jn.lastIndex=S,Jn.test(l)){if(w+b>q&&(j=Math.min(j,S)),w+b>r){T=!0;break}w+=b,z=y,_=S,S=y=Jn.lastIndex;continue}S+=1}return{width:T?q:w,index:T?j:d,truncated:T,ellipsed:T&&r>=o}},mo={limit:1/0,ellipsis:"",ellipsisWidth:0},xl=(l,n={})=>Vs(l,mo,n).width,on="\x1B",Os="",to=39,Yn="\x07",Fs="[",So="]",vs="m",Zn=`${So}8;;`,Ps=new RegExp(`(?:\\${Fs}(?<code>\\d+)m|\\${Zn}(?<uri>.*)${Yn})`,"y"),$o=(l)=>{if(l>=30&&l<=37||l>=90&&l<=97)return 39;if(l>=40&&l<=47||l>=100&&l<=107)return 49;if(l===1||l===2)return 22;if(l===3)return 23;if(l===4)return 24;if(l===7)return 27;if(l===8)return 28;if(l===9)return 29;if(l===0)return 0},Ms=(l)=>`${on}${Fs}${l}${vs}`,Ws=(l)=>`${on}${Zn}${l}${Yn}`,Io=(l)=>l.map((n)=>xl(n)),_n=(l,n,s)=>{let r=n[Symbol.iterator](),i=!1,o=!1,c=l.at(-1),a=c===void 0?0:xl(c),k=r.next(),f=r.next(),b=0;for(;!k.done;){let m=k.value,I=xl(m);a+I<=s?l[l.length-1]+=m:(l.push(m),a=0),(m===on||m===Os)&&(i=!0,o=n.startsWith(Zn,b+1)),i?o?m===Yn&&(i=!1,o=!1):m===vs&&(i=!1):(a+=I,a===s&&!f.done&&(l.push(""),a=0)),k=f,f=r.next(),b+=m.length}c=l.at(-1),!a&&c!==void 0&&c.length>0&&l.length>1&&(l[l.length-2]+=l.pop())},wo=(l)=>{let n=l.split(" "),s=n.length;for(;s>0&&!(xl(n[s-1])>0);)s--;return s===n.length?l:n.slice(0,s).join(" ")+n.slice(s).join("")},Do=(l,n,s={})=>{if(s.trim!==!1&&l.trim()==="")return"";let r="",i,o,c=l.split(" "),a=Io(c),k=[""];for(let[y,S]of c.entries()){s.trim!==!1&&(k[k.length-1]=(k.at(-1)??"").trimStart());let d=xl(k.at(-1)??"");if(y!==0&&(d>=n&&(s.wordWrap===!1||s.trim===!1)&&(k.push(""),d=0),(d>0||s.trim===!1)&&(k[k.length-1]+=" ",d++)),s.hard&&a[y]>n){let R=n-d,T=1+Math.floor((a[y]-R-1)/n);Math.floor((a[y]-1)/n)<T&&k.push(""),_n(k,S,n);continue}if(d+a[y]>n&&d>0&&a[y]>0){if(s.wordWrap===!1&&d<n){_n(k,S,n);continue}k.push("")}if(d+a[y]>n&&s.wordWrap===!1){_n(k,S,n);continue}k[k.length-1]+=S}s.trim!==!1&&(k=k.map((y)=>wo(y)));let f=k.join(`
|
|
28
|
+
`),b=f[Symbol.iterator](),m=b.next(),I=b.next(),L=0;for(;!m.done;){let y=m.value,S=I.value;if(r+=y,y===on||y===Os){Ps.lastIndex=L+1;let R=Ps.exec(f)?.groups;if(R?.code!==void 0){let T=Number.parseFloat(R.code);i=T===to?void 0:T}else R?.uri!==void 0&&(o=R.uri.length===0?void 0:R.uri)}let d=i?$o(i):void 0;S===`
|
|
29
|
+
`?(o&&(r+=Ws("")),i&&d&&(r+=Ms(d))):y===`
|
|
30
|
+
`&&(i&&d&&(r+=Ms(i)),o&&(r+=Ws(o))),L+=y.length,m=I,I=b.next()}return r};function Hn(l,n,s){return String(l).normalize().replaceAll(`\r
|
|
31
31
|
`,`
|
|
32
32
|
`).split(`
|
|
33
|
-
`).map((r)=>
|
|
34
|
-
`)}var
|
|
33
|
+
`).map((r)=>Do(r,n,s)).join(`
|
|
34
|
+
`)}var To=["up","down","left","right","space","enter","cancel"],rl={actions:new Set(To),aliases:new Map([["k","up"],["j","down"],["h","left"],["l","right"],["\x03","cancel"],["escape","cancel"]]),messages:{cancel:"Canceled",error:"Something went wrong"},withGuide:!0};function An(l,n){if(typeof l=="string")return rl.aliases.get(l)===n;for(let s of l)if(s!==void 0&&An(s,n))return!0;return!1}function Lo(l,n){if(l===n)return;let s=l.split(`
|
|
35
35
|
`),r=n.split(`
|
|
36
|
-
`),i=Math.max(s.length,r.length),o=[];for(let c=0;c<i;c++)s[c]!==r[c]&&o.push(c);return{lines:o,numLinesBefore:s.length,numLinesAfter:r.length,numLines:i}}var
|
|
36
|
+
`),i=Math.max(s.length,r.length),o=[];for(let c=0;c<i;c++)s[c]!==r[c]&&o.push(c);return{lines:o,numLinesBefore:s.length,numLinesAfter:r.length,numLines:i}}var Ro=globalThis.process.platform.startsWith("win"),Kn=Symbol("clack:cancel");function K(l){return l===Kn}function nn(l,n){let s=l;s.isTTY&&s.setRawMode(n)}function ps({input:l=Es,output:n=Xn,overwrite:s=!0,hideCursor:r=!0}={}){let i=ul.createInterface({input:l,output:n,prompt:"",tabSize:1});ul.emitKeypressEvents(l,i),l instanceof Qs&&l.isTTY&&l.setRawMode(!0);let o=(c,{name:a,sequence:k})=>{let f=String(c);if(An([f,a,k],"cancel")){r&&n.write(X.cursor.show),process.exit(0);return}if(!s)return;ul.moveCursor(n,a==="return"?0:-1,a==="return"?-1:0,()=>{ul.clearLine(n,1,()=>{l.once("keypress",o)})})};return r&&n.write(X.cursor.hide),l.once("keypress",o),()=>{l.off("keypress",o),r&&n.write(X.cursor.show),l instanceof Qs&&l.isTTY&&!Ro&&l.setRawMode(!1),i.terminal=!1,i.close()}}var hl=(l)=>("columns"in l)&&typeof l.columns=="number"?l.columns:80,Qn=(l)=>("rows"in l)&&typeof l.rows=="number"?l.rows:20;function cn(l,n,s,r=s){let i=hl(l??Xn);return Hn(n,i-s.length,{hard:!0,trim:!1}).split(`
|
|
37
37
|
`).map((o,c)=>`${c===0?r:s}${o}`).join(`
|
|
38
|
-
`)}class
|
|
39
|
-
`),nn(this.input,!1),this.rl?.close(),this.rl=void 0,this.emit(`${this.state}`,this.value),this.unsubscribe()}restoreCursor(){let l=
|
|
40
|
-
`).length-1;this.output.write(
|
|
41
|
-
`);this.output.write(c[o]),this._prevFrame=l,this.output.write(
|
|
38
|
+
`)}class jl{input;output;_abortSignal;rl;opts;_render;_track=!1;_prevFrame="";_subscribers=new Map;_cursor=0;state="initial";error="";value;userInput="";constructor(l,n=!0){let{input:s=Es,output:r=Xn,render:i,signal:o,...c}=l;this.opts=c,this.onKeypress=this.onKeypress.bind(this),this.close=this.close.bind(this),this.render=this.render.bind(this),this._render=i.bind(this),this._track=n,this._abortSignal=o,this.input=s,this.output=r}unsubscribe(){this._subscribers.clear()}setSubscriber(l,n){let s=this._subscribers.get(l)??[];s.push(n),this._subscribers.set(l,s)}on(l,n){this.setSubscriber(l,{cb:n})}once(l,n){this.setSubscriber(l,{cb:n,once:!0})}emit(l,...n){let s=this._subscribers.get(l)??[],r=[];for(let i of s)i.cb(...n),i.once&&r.push(()=>s.splice(s.indexOf(i),1));for(let i of r)i()}prompt(){return new Promise((l)=>{if(this._abortSignal){if(this._abortSignal.aborted)return this.state="cancel",this.close(),l(Kn);this._abortSignal.addEventListener("abort",()=>{this.state="cancel",this.close()},{once:!0})}this.rl=fo.createInterface({input:this.input,tabSize:2,prompt:"",escapeCodeTimeout:50,terminal:!0}),this.rl.prompt(),this.opts.initialUserInput!==void 0&&this._setUserInput(this.opts.initialUserInput,!0),this.input.on("keypress",this.onKeypress),nn(this.input,!0),this.output.on("resize",this.render),this.render(),this.once("submit",()=>{this.output.write(X.cursor.show),this.output.off("resize",this.render),nn(this.input,!1),l(this.value)}),this.once("cancel",()=>{this.output.write(X.cursor.show),this.output.off("resize",this.render),nn(this.input,!1),l(Kn)})})}_isActionKey(l,n){return l==="\t"}_setValue(l){this.value=l,this.emit("value",this.value)}_setUserInput(l,n){this.userInput=l??"",this.emit("userInput",this.userInput),n&&this._track&&this.rl&&(this.rl.write(this.userInput),this._cursor=this.rl.cursor)}_clearUserInput(){this.rl?.write(null,{ctrl:!0,name:"u"}),this._setUserInput("")}onKeypress(l,n){if(this._track&&n.name!=="return"&&(n.name&&this._isActionKey(l,n)&&this.rl?.write(null,{ctrl:!0,name:"h"}),this._cursor=this.rl?.cursor??0,this._setUserInput(this.rl?.line)),this.state==="error"&&(this.state="active"),n?.name&&(!this._track&&rl.aliases.has(n.name)&&this.emit("cursor",rl.aliases.get(n.name)),rl.actions.has(n.name)&&this.emit("cursor",n.name)),l&&(l.toLowerCase()==="y"||l.toLowerCase()==="n")&&this.emit("confirm",l.toLowerCase()==="y"),this.emit("key",l?.toLowerCase(),n),n?.name==="return"){if(this.opts.validate){let s=this.opts.validate(this.value);s&&(this.error=s instanceof Error?s.message:s,this.state="error",this.rl?.write(this.userInput))}this.state!=="error"&&(this.state="submit")}An([l,n?.name,n?.sequence],"cancel")&&(this.state="cancel"),(this.state==="submit"||this.state==="cancel")&&this.emit("finalize"),this.render(),(this.state==="submit"||this.state==="cancel")&&this.close()}close(){this.input.unpipe(),this.input.removeListener("keypress",this.onKeypress),this.output.write(`
|
|
39
|
+
`),nn(this.input,!1),this.rl?.close(),this.rl=void 0,this.emit(`${this.state}`,this.value),this.unsubscribe()}restoreCursor(){let l=Hn(this._prevFrame,process.stdout.columns,{hard:!0,trim:!1}).split(`
|
|
40
|
+
`).length-1;this.output.write(X.cursor.move(-999,l*-1))}render(){let l=Hn(this._render(this)??"",process.stdout.columns,{hard:!0,trim:!1});if(l!==this._prevFrame){if(this.state==="initial")this.output.write(X.cursor.hide);else{let n=Lo(this._prevFrame,l),s=Qn(this.output);if(this.restoreCursor(),n){let r=Math.max(0,n.numLinesAfter-s),i=Math.max(0,n.numLinesBefore-s),o=n.lines.find((c)=>c>=r);if(o===void 0){this._prevFrame=l;return}if(n.lines.length===1){this.output.write(X.cursor.move(0,o-i)),this.output.write(X.erase.lines(1));let c=l.split(`
|
|
41
|
+
`);this.output.write(c[o]),this._prevFrame=l,this.output.write(X.cursor.move(0,c.length-o-1));return}else if(n.lines.length>1){if(r<i)o=r;else{let a=o-i;a>0&&this.output.write(X.cursor.move(0,a))}this.output.write(X.erase.down());let c=l.split(`
|
|
42
42
|
`).slice(o);this.output.write(c.join(`
|
|
43
|
-
`)),this._prevFrame=l;return}}this.output.write(Y.erase.down())}this.output.write(l),this.state==="initial"&&(this.state="active"),this._prevFrame=l}}}function Io(l,n){if(l===void 0||n.length===0)return 0;let s=n.findIndex((r)=>r.value===l);return s!==-1?s:0}function to(l,n){return(n.label??String(n.value)).toLowerCase().includes(l.toLowerCase())}function wo(l,n){if(n)return l?n:n[0]}class Kn extends Nl{filteredOptions;multiple;isNavigating=!1;selectedValues=[];focusedValue;#l=0;#s="";#r;#n;get cursor(){return this.#l}get userInputWithCursor(){if(!this.userInput)return sn.default.inverse(sn.default.hidden("_"));if(this._cursor>=this.userInput.length)return`${this.userInput}█`;let l=this.userInput.slice(0,this._cursor),[n,...s]=this.userInput.slice(this._cursor);return`${l}${sn.default.inverse(n)}${s.join("")}`}get options(){return typeof this.#n=="function"?this.#n():this.#n}constructor(l){super(l),this.#n=l.options;let n=this.options;this.filteredOptions=[...n],this.multiple=l.multiple===!0,this.#r=l.filter??to;let s;if(l.initialValue&&Array.isArray(l.initialValue)?this.multiple?s=l.initialValue:s=l.initialValue.slice(0,1):!this.multiple&&this.options.length>0&&(s=[this.options[0].value]),s)for(let r of s){let i=n.findIndex((o)=>o.value===r);i!==-1&&(this.toggleSelected(r),this.#l=i)}this.focusedValue=this.options[this.#l]?.value,this.on("key",(r,i)=>this.#i(r,i)),this.on("userInput",(r)=>this.#o(r))}_isActionKey(l,n){return l==="\t"||this.multiple&&this.isNavigating&&n.name==="space"&&l!==void 0&&l!==""}#i(l,n){let s=n.name==="up",r=n.name==="down",i=n.name==="return";s||r?(this.#l=Math.max(0,Math.min(this.#l+(s?-1:1),this.filteredOptions.length-1)),this.focusedValue=this.filteredOptions[this.#l]?.value,this.multiple||(this.selectedValues=[this.focusedValue]),this.isNavigating=!0):i?this.value=wo(this.multiple,this.selectedValues):this.multiple?this.focusedValue!==void 0&&(n.name==="tab"||this.isNavigating&&n.name==="space")?this.toggleSelected(this.focusedValue):this.isNavigating=!1:(this.focusedValue&&(this.selectedValues=[this.focusedValue]),this.isNavigating=!1)}deselectAll(){this.selectedValues=[]}toggleSelected(l){this.filteredOptions.length!==0&&(this.multiple?this.selectedValues.includes(l)?this.selectedValues=this.selectedValues.filter((n)=>n!==l):this.selectedValues=[...this.selectedValues,l]:this.selectedValues=[l])}#o(l){if(l!==this.#s){this.#s=l;let n=this.options;l?this.filteredOptions=n.filter((s)=>this.#r(l,s)):this.filteredOptions=[...n],this.#l=Io(this.focusedValue,this.filteredOptions),this.focusedValue=this.filteredOptions[this.#l]?.value,this.multiple||(this.focusedValue!==void 0?this.toggleSelected(this.focusedValue):this.deselectAll())}}}var vs=class extends Nl{get cursor(){return this.value?0:1}get _value(){return this.cursor===0}constructor(l){super(l,!1),this.value=!!l.initialValue,this.on("userInput",()=>{this.value=this._value}),this.on("confirm",(n)=>{this.output.write(Y.cursor.move(0,-1)),this.value=n,this.state="submit",this.close()}),this.on("cursor",()=>{this.value=!this.value})}};class ps extends Nl{options;cursor=0;#l;getGroupItems(l){return this.options.filter((n)=>n.group===l)}isGroupSelected(l){let n=this.getGroupItems(l),s=this.value;return s===void 0?!1:n.every((r)=>s.includes(r.value))}toggleValue(){let l=this.options[this.cursor];if(this.value===void 0&&(this.value=[]),l.group===!0){let n=l.value,s=this.getGroupItems(n);this.isGroupSelected(n)?this.value=this.value.filter((r)=>s.findIndex((i)=>i.value===r)===-1):this.value=[...this.value,...s.map((r)=>r.value)],this.value=Array.from(new Set(this.value))}else{let n=this.value.includes(l.value);this.value=n?this.value.filter((s)=>s!==l.value):[...this.value,l.value]}}constructor(l){super(l,!1);let{options:n}=l;this.#l=l.selectableGroups!==!1,this.options=Object.entries(n).flatMap(([s,r])=>[{value:s,group:!0,label:s},...r.map((i)=>({...i,group:s}))]),this.value=[...l.initialValues??[]],this.cursor=Math.max(this.options.findIndex(({value:s})=>s===l.cursorAt),this.#l?0:1),this.on("cursor",(s)=>{switch(s){case"left":case"up":{this.cursor=this.cursor===0?this.options.length-1:this.cursor-1;let r=this.options[this.cursor]?.group===!0;!this.#l&&r&&(this.cursor=this.cursor===0?this.options.length-1:this.cursor-1);break}case"down":case"right":{this.cursor=this.cursor===this.options.length-1?0:this.cursor+1;let r=this.options[this.cursor]?.group===!0;!this.#l&&r&&(this.cursor=this.cursor===this.options.length-1?0:this.cursor+1);break}case"space":this.toggleValue();break}})}}function rn(l,n,s){let r=l+n,i=Math.max(s.length-1,0),o=r<0?i:r>i?0:r;return s[o].disabled?rn(o,n<0?-1:1,s):o}class Mn extends Nl{options;cursor=0;get _value(){return this.options[this.cursor].value}get _enabledOptions(){return this.options.filter((l)=>l.disabled!==!0)}toggleAll(){let l=this._enabledOptions,n=this.value!==void 0&&this.value.length===l.length;this.value=n?[]:l.map((s)=>s.value)}toggleInvert(){let l=this.value;if(!l)return;let n=this._enabledOptions.filter((s)=>!l.includes(s.value));this.value=n.map((s)=>s.value)}toggleValue(){this.value===void 0&&(this.value=[]);let l=this.value.includes(this._value);this.value=l?this.value.filter((n)=>n!==this._value):[...this.value,this._value]}constructor(l){super(l,!1),this.options=l.options,this.value=[...l.initialValues??[]];let n=Math.max(this.options.findIndex(({value:s})=>s===l.cursorAt),0);this.cursor=this.options[n].disabled?rn(n,1,this.options):n,this.on("key",(s)=>{s==="a"&&this.toggleAll(),s==="i"&&this.toggleInvert()}),this.on("cursor",(s)=>{switch(s){case"left":case"up":this.cursor=rn(this.cursor,-1,this.options);break;case"down":case"right":this.cursor=rn(this.cursor,1,this.options);break;case"space":this.toggleValue();break}})}}var g=p(kl(),1);import O from"node:process";var Gl=p(qn(),1);function Do(){return O.platform!=="win32"?O.env.TERM!=="linux":!!O.env.CI||!!O.env.WT_SESSION||!!O.env.TERMINUS_SUBLIME||O.env.ConEmuTask==="{cmd::Cmder}"||O.env.TERM_PROGRAM==="Terminus-Sublime"||O.env.TERM_PROGRAM==="vscode"||O.env.TERM==="xterm-256color"||O.env.TERM==="alacritty"||O.env.TERMINAL_EMULATOR==="JetBrains-JediTerm"}var Vn=Do(),To=()=>process.env.CI==="true";var J=(l,n)=>Vn?l:n,Lo=J("◆","*"),or=J("■","x"),cr=J("▲","x"),bn=J("◇","o"),Bo=J("┌","T"),G=J("│","|"),Tl=J("└","—"),Ca=J("┐","T"),Ga=J("┘","—"),es=J("●",">"),lr=J("○"," "),Ro=J("◻","[•]"),On=J("◼","[+]"),Fn=J("◻","[ ]"),qa=J("▪","•"),nr=J("─","-"),Uo=J("╮","+"),xo=J("├","+"),jo=J("╯","+"),No=J("╰","+"),ha=J("╭","+"),Co=J("●","•"),Go=J("◆","*"),qo=J("▲","!"),ho=J("■","x"),pn=(l)=>{switch(l){case"initial":case"active":return g.default.cyan(Lo);case"cancel":return g.default.red(or);case"error":return g.default.yellow(cr);case"submit":return g.default.green(bn)}},zo=(l)=>{switch(l){case"initial":case"active":return g.default.cyan(G);case"cancel":return g.default.red(G);case"error":return g.default.yellow(G);case"submit":return g.default.green(G)}},Jo=(l)=>l===161||l===164||l===167||l===168||l===170||l===173||l===174||l>=176&&l<=180||l>=182&&l<=186||l>=188&&l<=191||l===198||l===208||l===215||l===216||l>=222&&l<=225||l===230||l>=232&&l<=234||l===236||l===237||l===240||l===242||l===243||l>=247&&l<=250||l===252||l===254||l===257||l===273||l===275||l===283||l===294||l===295||l===299||l>=305&&l<=307||l===312||l>=319&&l<=322||l===324||l>=328&&l<=331||l===333||l===338||l===339||l===358||l===359||l===363||l===462||l===464||l===466||l===468||l===470||l===472||l===474||l===476||l===593||l===609||l===708||l===711||l>=713&&l<=715||l===717||l===720||l>=728&&l<=731||l===733||l===735||l>=768&&l<=879||l>=913&&l<=929||l>=931&&l<=937||l>=945&&l<=961||l>=963&&l<=969||l===1025||l>=1040&&l<=1103||l===1105||l===8208||l>=8211&&l<=8214||l===8216||l===8217||l===8220||l===8221||l>=8224&&l<=8226||l>=8228&&l<=8231||l===8240||l===8242||l===8243||l===8245||l===8251||l===8254||l===8308||l===8319||l>=8321&&l<=8324||l===8364||l===8451||l===8453||l===8457||l===8467||l===8470||l===8481||l===8482||l===8486||l===8491||l===8531||l===8532||l>=8539&&l<=8542||l>=8544&&l<=8555||l>=8560&&l<=8569||l===8585||l>=8592&&l<=8601||l===8632||l===8633||l===8658||l===8660||l===8679||l===8704||l===8706||l===8707||l===8711||l===8712||l===8715||l===8719||l===8721||l===8725||l===8730||l>=8733&&l<=8736||l===8739||l===8741||l>=8743&&l<=8748||l===8750||l>=8756&&l<=8759||l===8764||l===8765||l===8776||l===8780||l===8786||l===8800||l===8801||l>=8804&&l<=8807||l===8810||l===8811||l===8814||l===8815||l===8834||l===8835||l===8838||l===8839||l===8853||l===8857||l===8869||l===8895||l===8978||l>=9312&&l<=9449||l>=9451&&l<=9547||l>=9552&&l<=9587||l>=9600&&l<=9615||l>=9618&&l<=9621||l===9632||l===9633||l>=9635&&l<=9641||l===9650||l===9651||l===9654||l===9655||l===9660||l===9661||l===9664||l===9665||l>=9670&&l<=9672||l===9675||l>=9678&&l<=9681||l>=9698&&l<=9701||l===9711||l===9733||l===9734||l===9737||l===9742||l===9743||l===9756||l===9758||l===9792||l===9794||l===9824||l===9825||l>=9827&&l<=9829||l>=9831&&l<=9834||l===9836||l===9837||l===9839||l===9886||l===9887||l===9919||l>=9926&&l<=9933||l>=9935&&l<=9939||l>=9941&&l<=9953||l===9955||l===9960||l===9961||l>=9963&&l<=9969||l===9972||l>=9974&&l<=9977||l===9979||l===9980||l===9982||l===9983||l===10045||l>=10102&&l<=10111||l>=11094&&l<=11097||l>=12872&&l<=12879||l>=57344&&l<=63743||l>=65024&&l<=65039||l===65533||l>=127232&&l<=127242||l>=127248&&l<=127277||l>=127280&&l<=127337||l>=127344&&l<=127373||l===127375||l===127376||l>=127387&&l<=127404||l>=917760&&l<=917999||l>=983040&&l<=1048573||l>=1048576&&l<=1114109,_o=(l)=>l===12288||l>=65281&&l<=65376||l>=65504&&l<=65510,Ho=(l)=>l>=4352&&l<=4447||l===8986||l===8987||l===9001||l===9002||l>=9193&&l<=9196||l===9200||l===9203||l===9725||l===9726||l===9748||l===9749||l>=9800&&l<=9811||l===9855||l===9875||l===9889||l===9898||l===9899||l===9917||l===9918||l===9924||l===9925||l===9934||l===9940||l===9962||l===9970||l===9971||l===9973||l===9978||l===9981||l===9989||l===9994||l===9995||l===10024||l===10060||l===10062||l>=10067&&l<=10069||l===10071||l>=10133&&l<=10135||l===10160||l===10175||l===11035||l===11036||l===11088||l===11093||l>=11904&&l<=11929||l>=11931&&l<=12019||l>=12032&&l<=12245||l>=12272&&l<=12287||l>=12289&&l<=12350||l>=12353&&l<=12438||l>=12441&&l<=12543||l>=12549&&l<=12591||l>=12593&&l<=12686||l>=12688&&l<=12771||l>=12783&&l<=12830||l>=12832&&l<=12871||l>=12880&&l<=19903||l>=19968&&l<=42124||l>=42128&&l<=42182||l>=43360&&l<=43388||l>=44032&&l<=55203||l>=63744&&l<=64255||l>=65040&&l<=65049||l>=65072&&l<=65106||l>=65108&&l<=65126||l>=65128&&l<=65131||l>=94176&&l<=94180||l===94192||l===94193||l>=94208&&l<=100343||l>=100352&&l<=101589||l>=101632&&l<=101640||l>=110576&&l<=110579||l>=110581&&l<=110587||l===110589||l===110590||l>=110592&&l<=110882||l===110898||l>=110928&&l<=110930||l===110933||l>=110948&&l<=110951||l>=110960&&l<=111355||l===126980||l===127183||l===127374||l>=127377&&l<=127386||l>=127488&&l<=127490||l>=127504&&l<=127547||l>=127552&&l<=127560||l===127568||l===127569||l>=127584&&l<=127589||l>=127744&&l<=127776||l>=127789&&l<=127797||l>=127799&&l<=127868||l>=127870&&l<=127891||l>=127904&&l<=127946||l>=127951&&l<=127955||l>=127968&&l<=127984||l===127988||l>=127992&&l<=128062||l===128064||l>=128066&&l<=128252||l>=128255&&l<=128317||l>=128331&&l<=128334||l>=128336&&l<=128359||l===128378||l===128405||l===128406||l===128420||l>=128507&&l<=128591||l>=128640&&l<=128709||l===128716||l>=128720&&l<=128722||l>=128725&&l<=128727||l>=128732&&l<=128735||l===128747||l===128748||l>=128756&&l<=128764||l>=128992&&l<=129003||l===129008||l>=129292&&l<=129338||l>=129340&&l<=129349||l>=129351&&l<=129535||l>=129648&&l<=129660||l>=129664&&l<=129672||l>=129680&&l<=129725||l>=129727&&l<=129733||l>=129742&&l<=129755||l>=129760&&l<=129768||l>=129776&&l<=129784||l>=131072&&l<=196605||l>=196608&&l<=262141,Pn=/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/y,an=/[\x00-\x08\x0A-\x1F\x7F-\x9F]{1,1000}/y,fn=/\t{1,1000}/y,Wn=/[\u{1F1E6}-\u{1F1FF}]{2}|\u{1F3F4}[\u{E0061}-\u{E007A}]{2}[\u{E0030}-\u{E0039}\u{E0061}-\u{E007A}]{1,3}\u{E007F}|(?:\p{Emoji}\uFE0F\u20E3?|\p{Emoji_Modifier_Base}\p{Emoji_Modifier}?|\p{Emoji_Presentation})(?:\u200D(?:\p{Emoji_Modifier_Base}\p{Emoji_Modifier}?|\p{Emoji_Presentation}|\p{Emoji}\uFE0F\u20E3?))*/yu,kn=/(?:[\x20-\x7E\xA0-\xFF](?!\uFE0F)){1,1000}/y,Xo=/\p{M}+/gu,Yo={limit:1/0,ellipsis:""},ar=(l,n={},s={})=>{let r=n.limit??1/0,i=n.ellipsis??"",o=n?.ellipsisWidth??(i?ar(i,Yo,s).width:0),c=s.ansiWidth??0,a=s.controlWidth??0,k=s.tabWidth??8,f=s.ambiguousWidth??1,b=s.emojiWidth??2,m=s.fullWidthWidth??2,t=s.regularWidth??1,L=s.wideWidth??2,y=0,$=0,d=l.length,B=0,T=!1,N=d,h=Math.max(0,r-o),z=0,_=0,w=0,D=0;l:for(;;){if(_>z||$>=d&&$>y){let Q=l.slice(z,_)||l.slice(y,$);B=0;for(let W of Q.replaceAll(Xo,"")){let K=W.codePointAt(0)||0;if(_o(K)?D=m:Ho(K)?D=L:f!==t&&Jo(K)?D=f:D=t,w+D>h&&(N=Math.min(N,Math.max(z,y)+B)),w+D>r){T=!0;break l}B+=W.length,w+=D}z=_=0}if($>=d)break;if(kn.lastIndex=$,kn.test(l)){if(B=kn.lastIndex-$,D=B*t,w+D>h&&(N=Math.min(N,$+Math.floor((h-w)/t))),w+D>r){T=!0;break}w+=D,z=y,_=$,$=y=kn.lastIndex;continue}if(Pn.lastIndex=$,Pn.test(l)){if(w+c>h&&(N=Math.min(N,$)),w+c>r){T=!0;break}w+=c,z=y,_=$,$=y=Pn.lastIndex;continue}if(an.lastIndex=$,an.test(l)){if(B=an.lastIndex-$,D=B*a,w+D>h&&(N=Math.min(N,$+Math.floor((h-w)/a))),w+D>r){T=!0;break}w+=D,z=y,_=$,$=y=an.lastIndex;continue}if(fn.lastIndex=$,fn.test(l)){if(B=fn.lastIndex-$,D=B*k,w+D>h&&(N=Math.min(N,$+Math.floor((h-w)/k))),w+D>r){T=!0;break}w+=D,z=y,_=$,$=y=fn.lastIndex;continue}if(Wn.lastIndex=$,Wn.test(l)){if(w+b>h&&(N=Math.min(N,$)),w+b>r){T=!0;break}w+=b,z=y,_=$,$=y=Wn.lastIndex;continue}$+=1}return{width:T?h:w,index:T?N:d,truncated:T,ellipsed:T&&r>=o}},Zo={limit:1/0,ellipsis:"",ellipsisWidth:0},il=(l,n={})=>ar(l,Zo,n).width,yn="\x1B",fr="",Ao=39,en="\x07",kr="[",Qo="]",br="m",ls=`${Qo}8;;`,sr=new RegExp(`(?:\\${kr}(?<code>\\d+)m|\\${ls}(?<uri>.*)${en})`,"y"),Ko=(l)=>{if(l>=30&&l<=37||l>=90&&l<=97)return 39;if(l>=40&&l<=47||l>=100&&l<=107)return 49;if(l===1||l===2)return 22;if(l===3)return 23;if(l===4)return 24;if(l===7)return 27;if(l===8)return 28;if(l===9)return 29;if(l===0)return 0},rr=(l)=>`${yn}${kr}${l}${br}`,ir=(l)=>`${yn}${ls}${l}${en}`,Mo=(l)=>l.map((n)=>il(n)),En=(l,n,s)=>{let r=n[Symbol.iterator](),i=!1,o=!1,c=l.at(-1),a=c===void 0?0:il(c),k=r.next(),f=r.next(),b=0;for(;!k.done;){let m=k.value,t=il(m);a+t<=s?l[l.length-1]+=m:(l.push(m),a=0),(m===yn||m===fr)&&(i=!0,o=n.startsWith(ls,b+1)),i?o?m===en&&(i=!1,o=!1):m===br&&(i=!1):(a+=t,a===s&&!f.done&&(l.push(""),a=0)),k=f,f=r.next(),b+=m.length}c=l.at(-1),!a&&c!==void 0&&c.length>0&&l.length>1&&(l[l.length-2]+=l.pop())},Po=(l)=>{let n=l.split(" "),s=n.length;for(;s>0&&!(il(n[s-1])>0);)s--;return s===n.length?l:n.slice(0,s).join(" ")+n.slice(s).join("")},Wo=(l,n,s={})=>{if(s.trim!==!1&&l.trim()==="")return"";let r="",i,o,c=l.split(" "),a=Mo(c),k=[""];for(let[y,$]of c.entries()){s.trim!==!1&&(k[k.length-1]=(k.at(-1)??"").trimStart());let d=il(k.at(-1)??"");if(y!==0&&(d>=n&&(s.wordWrap===!1||s.trim===!1)&&(k.push(""),d=0),(d>0||s.trim===!1)&&(k[k.length-1]+=" ",d++)),s.hard&&a[y]>n){let B=n-d,T=1+Math.floor((a[y]-B-1)/n);Math.floor((a[y]-1)/n)<T&&k.push(""),En(k,$,n);continue}if(d+a[y]>n&&d>0&&a[y]>0){if(s.wordWrap===!1&&d<n){En(k,$,n);continue}k.push("")}if(d+a[y]>n&&s.wordWrap===!1){En(k,$,n);continue}k[k.length-1]+=$}s.trim!==!1&&(k=k.map((y)=>Po(y)));let f=k.join(`
|
|
44
|
-
`),b=f[Symbol.iterator](),m=b.next(),
|
|
45
|
-
`?(o&&(r+=
|
|
46
|
-
`&&(i&&d&&(r+=
|
|
43
|
+
`)),this._prevFrame=l;return}}this.output.write(X.erase.down())}this.output.write(l),this.state==="initial"&&(this.state="active"),this._prevFrame=l}}}function Bo(l,n){if(l===void 0||n.length===0)return 0;let s=n.findIndex((r)=>r.value===l);return s!==-1?s:0}function Uo(l,n){return(n.label??String(n.value)).toLowerCase().includes(l.toLowerCase())}function xo(l,n){if(n)return l?n:n[0]}class Pn extends jl{filteredOptions;multiple;isNavigating=!1;selectedValues=[];focusedValue;#l=0;#s="";#r;#n;get cursor(){return this.#l}get userInputWithCursor(){if(!this.userInput)return sn.default.inverse(sn.default.hidden("_"));if(this._cursor>=this.userInput.length)return`${this.userInput}█`;let l=this.userInput.slice(0,this._cursor),[n,...s]=this.userInput.slice(this._cursor);return`${l}${sn.default.inverse(n)}${s.join("")}`}get options(){return typeof this.#n=="function"?this.#n():this.#n}constructor(l){super(l),this.#n=l.options;let n=this.options;this.filteredOptions=[...n],this.multiple=l.multiple===!0,this.#r=l.filter??Uo;let s;if(l.initialValue&&Array.isArray(l.initialValue)?this.multiple?s=l.initialValue:s=l.initialValue.slice(0,1):!this.multiple&&this.options.length>0&&(s=[this.options[0].value]),s)for(let r of s){let i=n.findIndex((o)=>o.value===r);i!==-1&&(this.toggleSelected(r),this.#l=i)}this.focusedValue=this.options[this.#l]?.value,this.on("key",(r,i)=>this.#i(r,i)),this.on("userInput",(r)=>this.#o(r))}_isActionKey(l,n){return l==="\t"||this.multiple&&this.isNavigating&&n.name==="space"&&l!==void 0&&l!==""}#i(l,n){let s=n.name==="up",r=n.name==="down",i=n.name==="return";s||r?(this.#l=Math.max(0,Math.min(this.#l+(s?-1:1),this.filteredOptions.length-1)),this.focusedValue=this.filteredOptions[this.#l]?.value,this.multiple||(this.selectedValues=[this.focusedValue]),this.isNavigating=!0):i?this.value=xo(this.multiple,this.selectedValues):this.multiple?this.focusedValue!==void 0&&(n.name==="tab"||this.isNavigating&&n.name==="space")?this.toggleSelected(this.focusedValue):this.isNavigating=!1:(this.focusedValue&&(this.selectedValues=[this.focusedValue]),this.isNavigating=!1)}deselectAll(){this.selectedValues=[]}toggleSelected(l){this.filteredOptions.length!==0&&(this.multiple?this.selectedValues.includes(l)?this.selectedValues=this.selectedValues.filter((n)=>n!==l):this.selectedValues=[...this.selectedValues,l]:this.selectedValues=[l])}#o(l){if(l!==this.#s){this.#s=l;let n=this.options;l?this.filteredOptions=n.filter((s)=>this.#r(l,s)):this.filteredOptions=[...n],this.#l=Bo(this.focusedValue,this.filteredOptions),this.focusedValue=this.filteredOptions[this.#l]?.value,this.multiple||(this.focusedValue!==void 0?this.toggleSelected(this.focusedValue):this.deselectAll())}}}var es=class extends jl{get cursor(){return this.value?0:1}get _value(){return this.cursor===0}constructor(l){super(l,!1),this.value=!!l.initialValue,this.on("userInput",()=>{this.value=this._value}),this.on("confirm",(n)=>{this.output.write(X.cursor.move(0,-1)),this.value=n,this.state="submit",this.close()}),this.on("cursor",()=>{this.value=!this.value})}};class lr extends jl{options;cursor=0;#l;getGroupItems(l){return this.options.filter((n)=>n.group===l)}isGroupSelected(l){let n=this.getGroupItems(l),s=this.value;return s===void 0?!1:n.every((r)=>s.includes(r.value))}toggleValue(){let l=this.options[this.cursor];if(this.value===void 0&&(this.value=[]),l.group===!0){let n=l.value,s=this.getGroupItems(n);this.isGroupSelected(n)?this.value=this.value.filter((r)=>s.findIndex((i)=>i.value===r)===-1):this.value=[...this.value,...s.map((r)=>r.value)],this.value=Array.from(new Set(this.value))}else{let n=this.value.includes(l.value);this.value=n?this.value.filter((s)=>s!==l.value):[...this.value,l.value]}}constructor(l){super(l,!1);let{options:n}=l;this.#l=l.selectableGroups!==!1,this.options=Object.entries(n).flatMap(([s,r])=>[{value:s,group:!0,label:s},...r.map((i)=>({...i,group:s}))]),this.value=[...l.initialValues??[]],this.cursor=Math.max(this.options.findIndex(({value:s})=>s===l.cursorAt),this.#l?0:1),this.on("cursor",(s)=>{switch(s){case"left":case"up":{this.cursor=this.cursor===0?this.options.length-1:this.cursor-1;let r=this.options[this.cursor]?.group===!0;!this.#l&&r&&(this.cursor=this.cursor===0?this.options.length-1:this.cursor-1);break}case"down":case"right":{this.cursor=this.cursor===this.options.length-1?0:this.cursor+1;let r=this.options[this.cursor]?.group===!0;!this.#l&&r&&(this.cursor=this.cursor===this.options.length-1?0:this.cursor+1);break}case"space":this.toggleValue();break}})}}function rn(l,n,s){let r=l+n,i=Math.max(s.length-1,0),o=r<0?i:r>i?0:r;return s[o].disabled?rn(o,n<0?-1:1,s):o}class Mn extends jl{options;cursor=0;get _value(){return this.options[this.cursor].value}get _enabledOptions(){return this.options.filter((l)=>l.disabled!==!0)}toggleAll(){let l=this._enabledOptions,n=this.value!==void 0&&this.value.length===l.length;this.value=n?[]:l.map((s)=>s.value)}toggleInvert(){let l=this.value;if(!l)return;let n=this._enabledOptions.filter((s)=>!l.includes(s.value));this.value=n.map((s)=>s.value)}toggleValue(){this.value===void 0&&(this.value=[]);let l=this.value.includes(this._value);this.value=l?this.value.filter((n)=>n!==this._value):[...this.value,this._value]}constructor(l){super(l,!1),this.options=l.options,this.value=[...l.initialValues??[]];let n=Math.max(this.options.findIndex(({value:s})=>s===l.cursorAt),0);this.cursor=this.options[n].disabled?rn(n,1,this.options):n,this.on("key",(s)=>{s==="a"&&this.toggleAll(),s==="i"&&this.toggleInvert()}),this.on("cursor",(s)=>{switch(s){case"left":case"up":this.cursor=rn(this.cursor,-1,this.options);break;case"down":case"right":this.cursor=rn(this.cursor,1,this.options);break;case"space":this.toggleValue();break}})}}var u=p(kl(),1);import O from"node:process";var Nl=p(qn(),1);function ho(){return O.platform!=="win32"?O.env.TERM!=="linux":!!O.env.CI||!!O.env.WT_SESSION||!!O.env.TERMINUS_SUBLIME||O.env.ConEmuTask==="{cmd::Cmder}"||O.env.TERM_PROGRAM==="Terminus-Sublime"||O.env.TERM_PROGRAM==="vscode"||O.env.TERM==="xterm-256color"||O.env.TERM==="alacritty"||O.env.TERMINAL_EMULATOR==="JetBrains-JediTerm"}var On=ho(),jo=()=>process.env.CI==="true";var J=(l,n)=>On?l:n,Co=J("◆","*"),ar=J("■","x"),fr=J("▲","x"),bn=J("◇","o"),No=J("┌","T"),N=J("│","|"),Tl=J("└","—"),Ja=J("┐","T"),_a=J("┘","—"),nr=J("●",">"),sr=J("○"," "),Go=J("◻","[•]"),Fn=J("◼","[+]"),vn=J("◻","[ ]"),Ha=J("▪","•"),rr=J("─","-"),qo=J("╮","+"),zo=J("├","+"),Jo=J("╯","+"),_o=J("╰","+"),Ka=J("╭","+"),Ho=J("●","•"),Ko=J("◆","*"),Xo=J("▲","!"),Yo=J("■","x"),en=(l)=>{switch(l){case"initial":case"active":return u.default.cyan(Co);case"cancel":return u.default.red(ar);case"error":return u.default.yellow(fr);case"submit":return u.default.green(bn)}},Zo=(l)=>{switch(l){case"initial":case"active":return u.default.cyan(N);case"cancel":return u.default.red(N);case"error":return u.default.yellow(N);case"submit":return u.default.green(N)}},Ao=(l)=>l===161||l===164||l===167||l===168||l===170||l===173||l===174||l>=176&&l<=180||l>=182&&l<=186||l>=188&&l<=191||l===198||l===208||l===215||l===216||l>=222&&l<=225||l===230||l>=232&&l<=234||l===236||l===237||l===240||l===242||l===243||l>=247&&l<=250||l===252||l===254||l===257||l===273||l===275||l===283||l===294||l===295||l===299||l>=305&&l<=307||l===312||l>=319&&l<=322||l===324||l>=328&&l<=331||l===333||l===338||l===339||l===358||l===359||l===363||l===462||l===464||l===466||l===468||l===470||l===472||l===474||l===476||l===593||l===609||l===708||l===711||l>=713&&l<=715||l===717||l===720||l>=728&&l<=731||l===733||l===735||l>=768&&l<=879||l>=913&&l<=929||l>=931&&l<=937||l>=945&&l<=961||l>=963&&l<=969||l===1025||l>=1040&&l<=1103||l===1105||l===8208||l>=8211&&l<=8214||l===8216||l===8217||l===8220||l===8221||l>=8224&&l<=8226||l>=8228&&l<=8231||l===8240||l===8242||l===8243||l===8245||l===8251||l===8254||l===8308||l===8319||l>=8321&&l<=8324||l===8364||l===8451||l===8453||l===8457||l===8467||l===8470||l===8481||l===8482||l===8486||l===8491||l===8531||l===8532||l>=8539&&l<=8542||l>=8544&&l<=8555||l>=8560&&l<=8569||l===8585||l>=8592&&l<=8601||l===8632||l===8633||l===8658||l===8660||l===8679||l===8704||l===8706||l===8707||l===8711||l===8712||l===8715||l===8719||l===8721||l===8725||l===8730||l>=8733&&l<=8736||l===8739||l===8741||l>=8743&&l<=8748||l===8750||l>=8756&&l<=8759||l===8764||l===8765||l===8776||l===8780||l===8786||l===8800||l===8801||l>=8804&&l<=8807||l===8810||l===8811||l===8814||l===8815||l===8834||l===8835||l===8838||l===8839||l===8853||l===8857||l===8869||l===8895||l===8978||l>=9312&&l<=9449||l>=9451&&l<=9547||l>=9552&&l<=9587||l>=9600&&l<=9615||l>=9618&&l<=9621||l===9632||l===9633||l>=9635&&l<=9641||l===9650||l===9651||l===9654||l===9655||l===9660||l===9661||l===9664||l===9665||l>=9670&&l<=9672||l===9675||l>=9678&&l<=9681||l>=9698&&l<=9701||l===9711||l===9733||l===9734||l===9737||l===9742||l===9743||l===9756||l===9758||l===9792||l===9794||l===9824||l===9825||l>=9827&&l<=9829||l>=9831&&l<=9834||l===9836||l===9837||l===9839||l===9886||l===9887||l===9919||l>=9926&&l<=9933||l>=9935&&l<=9939||l>=9941&&l<=9953||l===9955||l===9960||l===9961||l>=9963&&l<=9969||l===9972||l>=9974&&l<=9977||l===9979||l===9980||l===9982||l===9983||l===10045||l>=10102&&l<=10111||l>=11094&&l<=11097||l>=12872&&l<=12879||l>=57344&&l<=63743||l>=65024&&l<=65039||l===65533||l>=127232&&l<=127242||l>=127248&&l<=127277||l>=127280&&l<=127337||l>=127344&&l<=127373||l===127375||l===127376||l>=127387&&l<=127404||l>=917760&&l<=917999||l>=983040&&l<=1048573||l>=1048576&&l<=1114109,Qo=(l)=>l===12288||l>=65281&&l<=65376||l>=65504&&l<=65510,Po=(l)=>l>=4352&&l<=4447||l===8986||l===8987||l===9001||l===9002||l>=9193&&l<=9196||l===9200||l===9203||l===9725||l===9726||l===9748||l===9749||l>=9800&&l<=9811||l===9855||l===9875||l===9889||l===9898||l===9899||l===9917||l===9918||l===9924||l===9925||l===9934||l===9940||l===9962||l===9970||l===9971||l===9973||l===9978||l===9981||l===9989||l===9994||l===9995||l===10024||l===10060||l===10062||l>=10067&&l<=10069||l===10071||l>=10133&&l<=10135||l===10160||l===10175||l===11035||l===11036||l===11088||l===11093||l>=11904&&l<=11929||l>=11931&&l<=12019||l>=12032&&l<=12245||l>=12272&&l<=12287||l>=12289&&l<=12350||l>=12353&&l<=12438||l>=12441&&l<=12543||l>=12549&&l<=12591||l>=12593&&l<=12686||l>=12688&&l<=12771||l>=12783&&l<=12830||l>=12832&&l<=12871||l>=12880&&l<=19903||l>=19968&&l<=42124||l>=42128&&l<=42182||l>=43360&&l<=43388||l>=44032&&l<=55203||l>=63744&&l<=64255||l>=65040&&l<=65049||l>=65072&&l<=65106||l>=65108&&l<=65126||l>=65128&&l<=65131||l>=94176&&l<=94180||l===94192||l===94193||l>=94208&&l<=100343||l>=100352&&l<=101589||l>=101632&&l<=101640||l>=110576&&l<=110579||l>=110581&&l<=110587||l===110589||l===110590||l>=110592&&l<=110882||l===110898||l>=110928&&l<=110930||l===110933||l>=110948&&l<=110951||l>=110960&&l<=111355||l===126980||l===127183||l===127374||l>=127377&&l<=127386||l>=127488&&l<=127490||l>=127504&&l<=127547||l>=127552&&l<=127560||l===127568||l===127569||l>=127584&&l<=127589||l>=127744&&l<=127776||l>=127789&&l<=127797||l>=127799&&l<=127868||l>=127870&&l<=127891||l>=127904&&l<=127946||l>=127951&&l<=127955||l>=127968&&l<=127984||l===127988||l>=127992&&l<=128062||l===128064||l>=128066&&l<=128252||l>=128255&&l<=128317||l>=128331&&l<=128334||l>=128336&&l<=128359||l===128378||l===128405||l===128406||l===128420||l>=128507&&l<=128591||l>=128640&&l<=128709||l===128716||l>=128720&&l<=128722||l>=128725&&l<=128727||l>=128732&&l<=128735||l===128747||l===128748||l>=128756&&l<=128764||l>=128992&&l<=129003||l===129008||l>=129292&&l<=129338||l>=129340&&l<=129349||l>=129351&&l<=129535||l>=129648&&l<=129660||l>=129664&&l<=129672||l>=129680&&l<=129725||l>=129727&&l<=129733||l>=129742&&l<=129755||l>=129760&&l<=129768||l>=129776&&l<=129784||l>=131072&&l<=196605||l>=196608&&l<=262141,Wn=/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/y,an=/[\x00-\x08\x0A-\x1F\x7F-\x9F]{1,1000}/y,fn=/\t{1,1000}/y,En=/[\u{1F1E6}-\u{1F1FF}]{2}|\u{1F3F4}[\u{E0061}-\u{E007A}]{2}[\u{E0030}-\u{E0039}\u{E0061}-\u{E007A}]{1,3}\u{E007F}|(?:\p{Emoji}\uFE0F\u20E3?|\p{Emoji_Modifier_Base}\p{Emoji_Modifier}?|\p{Emoji_Presentation})(?:\u200D(?:\p{Emoji_Modifier_Base}\p{Emoji_Modifier}?|\p{Emoji_Presentation}|\p{Emoji}\uFE0F\u20E3?))*/yu,kn=/(?:[\x20-\x7E\xA0-\xFF](?!\uFE0F)){1,1000}/y,Mo=/\p{M}+/gu,Wo={limit:1/0,ellipsis:""},kr=(l,n={},s={})=>{let r=n.limit??1/0,i=n.ellipsis??"",o=n?.ellipsisWidth??(i?kr(i,Wo,s).width:0),c=s.ansiWidth??0,a=s.controlWidth??0,k=s.tabWidth??8,f=s.ambiguousWidth??1,b=s.emojiWidth??2,m=s.fullWidthWidth??2,I=s.regularWidth??1,L=s.wideWidth??2,y=0,S=0,d=l.length,R=0,T=!1,j=d,q=Math.max(0,r-o),z=0,_=0,w=0,D=0;l:for(;;){if(_>z||S>=d&&S>y){let A=l.slice(z,_)||l.slice(y,S);R=0;for(let W of A.replaceAll(Mo,"")){let Q=W.codePointAt(0)||0;if(Qo(Q)?D=m:Po(Q)?D=L:f!==I&&Ao(Q)?D=f:D=I,w+D>q&&(j=Math.min(j,Math.max(z,y)+R)),w+D>r){T=!0;break l}R+=W.length,w+=D}z=_=0}if(S>=d)break;if(kn.lastIndex=S,kn.test(l)){if(R=kn.lastIndex-S,D=R*I,w+D>q&&(j=Math.min(j,S+Math.floor((q-w)/I))),w+D>r){T=!0;break}w+=D,z=y,_=S,S=y=kn.lastIndex;continue}if(Wn.lastIndex=S,Wn.test(l)){if(w+c>q&&(j=Math.min(j,S)),w+c>r){T=!0;break}w+=c,z=y,_=S,S=y=Wn.lastIndex;continue}if(an.lastIndex=S,an.test(l)){if(R=an.lastIndex-S,D=R*a,w+D>q&&(j=Math.min(j,S+Math.floor((q-w)/a))),w+D>r){T=!0;break}w+=D,z=y,_=S,S=y=an.lastIndex;continue}if(fn.lastIndex=S,fn.test(l)){if(R=fn.lastIndex-S,D=R*k,w+D>q&&(j=Math.min(j,S+Math.floor((q-w)/k))),w+D>r){T=!0;break}w+=D,z=y,_=S,S=y=fn.lastIndex;continue}if(En.lastIndex=S,En.test(l)){if(w+b>q&&(j=Math.min(j,S)),w+b>r){T=!0;break}w+=b,z=y,_=S,S=y=En.lastIndex;continue}S+=1}return{width:T?q:w,index:T?j:d,truncated:T,ellipsed:T&&r>=o}},Eo={limit:1/0,ellipsis:"",ellipsisWidth:0},il=(l,n={})=>kr(l,Eo,n).width,yn="\x1B",br="",Vo=39,ls="\x07",yr="[",Oo="]",ur="m",ns=`${Oo}8;;`,ir=new RegExp(`(?:\\${yr}(?<code>\\d+)m|\\${ns}(?<uri>.*)${ls})`,"y"),Fo=(l)=>{if(l>=30&&l<=37||l>=90&&l<=97)return 39;if(l>=40&&l<=47||l>=100&&l<=107)return 49;if(l===1||l===2)return 22;if(l===3)return 23;if(l===4)return 24;if(l===7)return 27;if(l===8)return 28;if(l===9)return 29;if(l===0)return 0},or=(l)=>`${yn}${yr}${l}${ur}`,cr=(l)=>`${yn}${ns}${l}${ls}`,vo=(l)=>l.map((n)=>il(n)),Vn=(l,n,s)=>{let r=n[Symbol.iterator](),i=!1,o=!1,c=l.at(-1),a=c===void 0?0:il(c),k=r.next(),f=r.next(),b=0;for(;!k.done;){let m=k.value,I=il(m);a+I<=s?l[l.length-1]+=m:(l.push(m),a=0),(m===yn||m===br)&&(i=!0,o=n.startsWith(ns,b+1)),i?o?m===ls&&(i=!1,o=!1):m===ur&&(i=!1):(a+=I,a===s&&!f.done&&(l.push(""),a=0)),k=f,f=r.next(),b+=m.length}c=l.at(-1),!a&&c!==void 0&&c.length>0&&l.length>1&&(l[l.length-2]+=l.pop())},po=(l)=>{let n=l.split(" "),s=n.length;for(;s>0&&!(il(n[s-1])>0);)s--;return s===n.length?l:n.slice(0,s).join(" ")+n.slice(s).join("")},eo=(l,n,s={})=>{if(s.trim!==!1&&l.trim()==="")return"";let r="",i,o,c=l.split(" "),a=vo(c),k=[""];for(let[y,S]of c.entries()){s.trim!==!1&&(k[k.length-1]=(k.at(-1)??"").trimStart());let d=il(k.at(-1)??"");if(y!==0&&(d>=n&&(s.wordWrap===!1||s.trim===!1)&&(k.push(""),d=0),(d>0||s.trim===!1)&&(k[k.length-1]+=" ",d++)),s.hard&&a[y]>n){let R=n-d,T=1+Math.floor((a[y]-R-1)/n);Math.floor((a[y]-1)/n)<T&&k.push(""),Vn(k,S,n);continue}if(d+a[y]>n&&d>0&&a[y]>0){if(s.wordWrap===!1&&d<n){Vn(k,S,n);continue}k.push("")}if(d+a[y]>n&&s.wordWrap===!1){Vn(k,S,n);continue}k[k.length-1]+=S}s.trim!==!1&&(k=k.map((y)=>po(y)));let f=k.join(`
|
|
44
|
+
`),b=f[Symbol.iterator](),m=b.next(),I=b.next(),L=0;for(;!m.done;){let y=m.value,S=I.value;if(r+=y,y===yn||y===br){ir.lastIndex=L+1;let R=ir.exec(f)?.groups;if(R?.code!==void 0){let T=Number.parseFloat(R.code);i=T===Vo?void 0:T}else R?.uri!==void 0&&(o=R.uri.length===0?void 0:R.uri)}let d=i?Fo(i):void 0;S===`
|
|
45
|
+
`?(o&&(r+=cr("")),i&&d&&(r+=or(d))):y===`
|
|
46
|
+
`&&(i&&d&&(r+=or(i)),o&&(r+=cr(o))),L+=y.length,m=I,I=b.next()}return r};function Gl(l,n,s){return String(l).normalize().replaceAll(`\r
|
|
47
47
|
`,`
|
|
48
48
|
`).split(`
|
|
49
|
-
`).map((r)=>
|
|
50
|
-
`)}var
|
|
51
|
-
`);T.push(D),
|
|
52
|
-
${
|
|
53
|
-
`,i=this.userInput,o=l.placeholder,c=i===""&&o!==void 0,a=this.isNavigating||c?
|
|
54
|
-
`),`${b(
|
|
55
|
-
`)}}}});return s.prompt()};var
|
|
56
|
-
${
|
|
57
|
-
`,i=this.value?n:s;switch(this.state){case"submit":return`${r}${
|
|
58
|
-
${
|
|
59
|
-
${
|
|
60
|
-
`}}}).prompt()};var
|
|
61
|
-
`);if(m.length>0){let[
|
|
49
|
+
`).map((r)=>eo(r,n,s)).join(`
|
|
50
|
+
`)}var lc=(l,n,s,r,i)=>{let o=n,c=0;for(let a=s;a<r;a++){let k=l[a];if(o=o-k.length,c++,o<=i)break}return{lineCount:o,removals:c}},pn=(l)=>{let{cursor:n,options:s,style:r}=l,i=l.output??process.stdout,o=hl(i),c=l.columnPadding??0,a=l.rowPadding??4,k=o-c,f=Qn(i),b=u.default.dim("..."),m=l.maxItems??Number.POSITIVE_INFINITY,I=Math.max(f-a,0),L=Math.max(Math.min(m,I),5),y=0;n>=L-3&&(y=Math.max(Math.min(n-L+3,s.length-L),0));let S=L<s.length&&y>0,d=L<s.length&&y+L<s.length,R=Math.min(y+L,s.length),T=[],j=0;S&&j++,d&&j++;let q=y+(S?1:0),z=R-(d?1:0);for(let w=q;w<z;w++){let D=Gl(r(s[w],w===n),k,{hard:!0,trim:!1}).split(`
|
|
51
|
+
`);T.push(D),j+=D.length}if(j>I){let w=0,D=0,A=j,W=n-q,Q=(ml,H)=>lc(T,A,ml,H,I);S?({lineCount:A,removals:w}=Q(0,W),A>I&&({lineCount:A,removals:D}=Q(W+1,T.length))):({lineCount:A,removals:D}=Q(W+1,T.length),A>I&&({lineCount:A,removals:w}=Q(0,W))),w>0&&(S=!0,T.splice(0,w)),D>0&&(d=!0,T.splice(T.length-D,D))}let _=[];S&&_.push(b);for(let w of T)for(let D of w)_.push(D);return d&&_.push(b),_};function nc(l,n){if(!l)return!0;let s=(n.label??String(n.value??"")).toLowerCase(),r=(n.hint??"").toLowerCase(),i=String(n.value).toLowerCase(),o=l.toLowerCase();return s.includes(o)||r.includes(o)||i.includes(o)}var gr=(l)=>{let n=(r,i,o,c)=>{let a=o.includes(r.value),k=r.label??String(r.value??""),f=r.hint&&c!==void 0&&r.value===c?u.default.dim(` (${r.hint})`):"",b=a?u.default.green(Fn):u.default.dim(vn);return i?`${b} ${k}${f}`:`${b} ${u.default.dim(k)}`},s=new Pn({options:l.options,multiple:!0,filter:(r,i)=>nc(r,i),validate:()=>{if(l.required&&s.selectedValues.length===0)return"Please select at least one item"},initialValue:l.initialValues,signal:l.signal,input:l.input,output:l.output,render(){let r=`${u.default.gray(N)}
|
|
52
|
+
${en(this.state)} ${l.message}
|
|
53
|
+
`,i=this.userInput,o=l.placeholder,c=i===""&&o!==void 0,a=this.isNavigating||c?u.default.dim(c?o:i):this.userInputWithCursor,k=this.options,f=this.filteredOptions.length!==k.length?u.default.dim(` (${this.filteredOptions.length} match${this.filteredOptions.length===1?"":"es"})`):"";switch(this.state){case"submit":return`${r}${u.default.gray(N)} ${u.default.dim(`${this.selectedValues.length} items selected`)}`;case"cancel":return`${r}${u.default.gray(N)} ${u.default.strikethrough(u.default.dim(i))}`;default:{let b=this.state==="error"?u.default.yellow:u.default.cyan,m=[`${u.default.dim("↑/↓")} to navigate`,`${u.default.dim(this.isNavigating?"Space/Tab:":"Tab:")} select`,`${u.default.dim("Enter:")} confirm`,`${u.default.dim("Type:")} to search`],I=this.filteredOptions.length===0&&i?[`${b(N)} ${u.default.yellow("No matches found")}`]:[],L=this.state==="error"?[`${b(N)} ${u.default.yellow(this.error)}`]:[],y=[...`${r}${b(N)}`.split(`
|
|
54
|
+
`),`${b(N)} ${u.default.dim("Search:")} ${a}${f}`,...I,...L],S=[`${b(N)} ${u.default.dim(m.join(" • "))}`,`${b(Tl)}`],d=pn({cursor:this.cursor,options:this.filteredOptions,style:(R,T)=>n(R,T,this.selectedValues,this.focusedValue),maxItems:l.maxItems,output:l.output,rowPadding:y.length+S.length});return[...y,...d.map((R)=>`${b(N)} ${R}`),...S].join(`
|
|
55
|
+
`)}}}});return s.prompt()};var Sl=(l)=>{let n=l.active??"Yes",s=l.inactive??"No";return new es({active:n,inactive:s,signal:l.signal,input:l.input,output:l.output,initialValue:l.initialValue??!0,render(){let r=`${u.default.gray(N)}
|
|
56
|
+
${en(this.state)} ${l.message}
|
|
57
|
+
`,i=this.value?n:s;switch(this.state){case"submit":return`${r}${u.default.gray(N)} ${u.default.dim(i)}`;case"cancel":return`${r}${u.default.gray(N)} ${u.default.strikethrough(u.default.dim(i))}
|
|
58
|
+
${u.default.gray(N)}`;default:return`${r}${u.default.cyan(N)} ${this.value?`${u.default.green(nr)} ${n}`:`${u.default.dim(sr)} ${u.default.dim(n)}`} ${u.default.dim("/")} ${this.value?`${u.default.dim(sr)} ${u.default.dim(s)}`:`${u.default.green(nr)} ${s}`}
|
|
59
|
+
${u.default.cyan(Tl)}
|
|
60
|
+
`}}}).prompt()};var t={message:(l=[],{symbol:n=u.default.gray(N),secondarySymbol:s=u.default.gray(N),output:r=process.stdout,spacing:i=1,withGuide:o}={})=>{let c=[],a=(o??rl.withGuide)!==!1,k=a?s:"",f=a?`${n} `:"",b=a?`${s} `:"";for(let I=0;I<i;I++)c.push(k);let m=Array.isArray(l)?l:l.split(`
|
|
61
|
+
`);if(m.length>0){let[I,...L]=m;I.length>0?c.push(`${f}${I}`):c.push(a?n:"");for(let y of L)y.length>0?c.push(`${b}${y}`):c.push(a?s:"")}r.write(`${c.join(`
|
|
62
62
|
`)}
|
|
63
|
-
`)},info:(l,n)=>{
|
|
63
|
+
`)},info:(l,n)=>{t.message(l,{...n,symbol:u.default.blue(Ho)})},success:(l,n)=>{t.message(l,{...n,symbol:u.default.green(Ko)})},step:(l,n)=>{t.message(l,{...n,symbol:u.default.green(bn)})},warn:(l,n)=>{t.message(l,{...n,symbol:u.default.yellow(Xo)})},warning:(l,n)=>{t.warn(l,n)},error:(l,n)=>{t.message(l,{...n,symbol:u.default.red(Yo)})}},Z=(l="",n)=>{(n?.output??process.stdout).write(`${u.default.gray(Tl)} ${u.default.red(l)}
|
|
64
64
|
|
|
65
|
-
`)},
|
|
66
|
-
`)},
|
|
67
|
-
${
|
|
65
|
+
`)},mr=(l="",n)=>{(n?.output??process.stdout).write(`${u.default.gray(No)} ${l}
|
|
66
|
+
`)},tr=(l="",n)=>{(n?.output??process.stdout).write(`${u.default.gray(N)}
|
|
67
|
+
${u.default.gray(Tl)} ${l}
|
|
68
68
|
|
|
69
69
|
`)},Cl=(l,n)=>l.split(`
|
|
70
70
|
`).map((s)=>n(s)).join(`
|
|
71
|
-
`),bl=(l)=>{let n=(r,i)=>{let o=r.label??String(r.value);return i==="disabled"?`${
|
|
72
|
-
${
|
|
71
|
+
`),bl=(l)=>{let n=(r,i)=>{let o=r.label??String(r.value);return i==="disabled"?`${u.default.gray(vn)} ${Cl(o,(c)=>u.default.strikethrough(u.default.gray(c)))}${r.hint?` ${u.default.dim(`(${r.hint??"disabled"})`)}`:""}`:i==="active"?`${u.default.cyan(Go)} ${o}${r.hint?` ${u.default.dim(`(${r.hint})`)}`:""}`:i==="selected"?`${u.default.green(Fn)} ${Cl(o,u.default.dim)}${r.hint?` ${u.default.dim(`(${r.hint})`)}`:""}`:i==="cancelled"?`${Cl(o,(c)=>u.default.strikethrough(u.default.dim(c)))}`:i==="active-selected"?`${u.default.green(Fn)} ${o}${r.hint?` ${u.default.dim(`(${r.hint})`)}`:""}`:i==="submitted"?`${Cl(o,u.default.dim)}`:`${u.default.dim(vn)} ${Cl(o,u.default.dim)}`},s=l.required??!0;return new Mn({options:l.options,signal:l.signal,input:l.input,output:l.output,initialValues:l.initialValues,required:s,cursorAt:l.cursorAt,validate(r){if(s&&(r===void 0||r.length===0))return`Please select at least one option.
|
|
72
|
+
${u.default.reset(u.default.dim(`Press ${u.default.gray(u.default.bgWhite(u.default.inverse(" space ")))} to select, ${u.default.gray(u.default.bgWhite(u.default.inverse(" enter ")))} to submit`))}`},render(){let r=cn(l.output,l.message,`${Zo(this.state)} `,`${en(this.state)} `),i=`${u.default.gray(N)}
|
|
73
73
|
${r}
|
|
74
|
-
`,o=this.value??[],c=(a,k)=>{if(a.disabled)return n(a,"disabled");let f=o.includes(a.value);return k&&f?n(a,"active-selected"):f?n(a,"selected"):n(a,k?"active":"inactive")};switch(this.state){case"submit":{let a=this.options.filter(({value:f})=>o.includes(f)).map((f)=>n(f,"submitted")).join(
|
|
75
|
-
${
|
|
76
|
-
`).map((m,
|
|
74
|
+
`,o=this.value??[],c=(a,k)=>{if(a.disabled)return n(a,"disabled");let f=o.includes(a.value);return k&&f?n(a,"active-selected"):f?n(a,"selected"):n(a,k?"active":"inactive")};switch(this.state){case"submit":{let a=this.options.filter(({value:f})=>o.includes(f)).map((f)=>n(f,"submitted")).join(u.default.dim(", "))||u.default.dim("none"),k=cn(l.output,a,`${u.default.gray(N)} `);return`${i}${k}`}case"cancel":{let a=this.options.filter(({value:f})=>o.includes(f)).map((f)=>n(f,"cancelled")).join(u.default.dim(", "));if(a.trim()==="")return`${i}${u.default.gray(N)}`;let k=cn(l.output,a,`${u.default.gray(N)} `);return`${i}${k}
|
|
75
|
+
${u.default.gray(N)}`}case"error":{let a=`${u.default.yellow(N)} `,k=this.error.split(`
|
|
76
|
+
`).map((m,I)=>I===0?`${u.default.yellow(Tl)} ${u.default.yellow(m)}`:` ${m}`).join(`
|
|
77
77
|
`),f=i.split(`
|
|
78
78
|
`).length,b=k.split(`
|
|
79
|
-
`).length+1;return`${i}${a}${
|
|
79
|
+
`).length+1;return`${i}${a}${pn({output:l.output,options:this.options,cursor:this.cursor,maxItems:l.maxItems,columnPadding:a.length,rowPadding:f+b,style:c}).join(`
|
|
80
80
|
${a}`)}
|
|
81
81
|
${k}
|
|
82
|
-
`}default:{let a=`${
|
|
83
|
-
`).length;return`${i}${a}${
|
|
82
|
+
`}default:{let a=`${u.default.cyan(N)} `,k=i.split(`
|
|
83
|
+
`).length;return`${i}${a}${pn({output:l.output,options:this.options,cursor:this.cursor,maxItems:l.maxItems,columnPadding:a.length,rowPadding:k+2,style:c}).join(`
|
|
84
84
|
${a}`)}
|
|
85
|
-
${
|
|
86
|
-
`}}}}).prompt()},
|
|
87
|
-
`),o=i.reduce((k,f)=>Math.max(il(f),k),0),c=i.map(s).reduce((k,f)=>Math.max(il(f),k),0),a=n-(c-o);return
|
|
88
|
-
`).map(o),""],a=il(n),k=Math.max(c.reduce((
|
|
89
|
-
`),b=i?`${
|
|
90
|
-
`:"",m=i?
|
|
85
|
+
${u.default.cyan(Tl)}
|
|
86
|
+
`}}}}).prompt()},sc=(l)=>u.default.dim(l),rc=(l,n,s)=>{let r={hard:!0,trim:!1},i=Gl(l,n,r).split(`
|
|
87
|
+
`),o=i.reduce((k,f)=>Math.max(il(f),k),0),c=i.map(s).reduce((k,f)=>Math.max(il(f),k),0),a=n-(c-o);return Gl(l,a,r)},ss=(l="",n="",s)=>{let r=s?.output??O.stdout,i=(s?.withGuide??rl.withGuide)!==!1,o=s?.format??sc,c=["",...rc(l,hl(r)-6,o).split(`
|
|
88
|
+
`).map(o),""],a=il(n),k=Math.max(c.reduce((I,L)=>{let y=il(L);return y>I?y:I},0),a)+2,f=c.map((I)=>`${u.default.gray(N)} ${I}${" ".repeat(k-il(I))}${u.default.gray(N)}`).join(`
|
|
89
|
+
`),b=i?`${u.default.gray(N)}
|
|
90
|
+
`:"",m=i?zo:_o;r.write(`${b}${u.default.green(bn)} ${u.default.reset(n)} ${u.default.gray(rr.repeat(Math.max(k-a-1,1))+qo)}
|
|
91
91
|
${f}
|
|
92
|
-
${
|
|
93
|
-
`)};var
|
|
94
|
-
`);let H=
|
|
95
|
-
`);H.length>1&&s.write(
|
|
96
|
-
`);let E=0,ol=0;_(),m=setInterval(()=>{if(f&&y
|
|
92
|
+
${u.default.gray(m+rr.repeat(k+2)+Jo)}
|
|
93
|
+
`)};var ic=u.default.magenta,yl=({indicator:l="dots",onCancel:n,output:s=process.stdout,cancelMessage:r,errorMessage:i,frames:o=On?["◒","◐","◓","◑"]:["•","o","O","0"],delay:c=On?80:120,signal:a,...k}={})=>{let f=jo(),b,m,I=!1,L=!1,y="",S,d=performance.now(),R=hl(s),T=k?.styleFrame??ic,j=(H)=>{let E=H>1?i??rl.messages.error:r??rl.messages.cancel;L=H===1,I&&(ml(E,H),L&&typeof n=="function"&&n())},q=()=>j(2),z=()=>j(1),_=()=>{process.on("uncaughtExceptionMonitor",q),process.on("unhandledRejection",q),process.on("SIGINT",z),process.on("SIGTERM",z),process.on("exit",j),a&&a.addEventListener("abort",z)},w=()=>{process.removeListener("uncaughtExceptionMonitor",q),process.removeListener("unhandledRejection",q),process.removeListener("SIGINT",z),process.removeListener("SIGTERM",z),process.removeListener("exit",j),a&&a.removeEventListener("abort",z)},D=()=>{if(S===void 0)return;f&&s.write(`
|
|
94
|
+
`);let H=Gl(S,R,{hard:!0,trim:!1}).split(`
|
|
95
|
+
`);H.length>1&&s.write(Nl.cursor.up(H.length-1)),s.write(Nl.cursor.to(0)),s.write(Nl.erase.down())},A=(H)=>H.replace(/\.+$/,""),W=(H)=>{let E=(performance.now()-H)/1000,ol=Math.floor(E/60),cl=Math.floor(E%60);return ol>0?`[${ol}m ${cl}s]`:`[${cl}s]`},Q=(H="")=>{I=!0,b=ps({output:s}),y=A(H),d=performance.now(),s.write(`${u.default.gray(N)}
|
|
96
|
+
`);let E=0,ol=0;_(),m=setInterval(()=>{if(f&&y===S)return;D(),S=y;let cl=T(o[E]),Pl;if(f)Pl=`${cl} ${y}...`;else if(l==="timer")Pl=`${cl} ${y} ${W(d)}`;else{let ri=".".repeat(Math.floor(ol)).slice(0,3);Pl=`${cl} ${y}${ri}`}let si=Gl(Pl,R,{hard:!0,trim:!1});s.write(si),E=E+1<o.length?E+1:0,ol=ol<4?ol+0.125:0},c)},ml=(H="",E=0,ol=!1)=>{if(!I)return;I=!1,clearInterval(m),D();let cl=E===0?u.default.green(bn):E===1?u.default.red(ar):u.default.red(fr);y=H??y,ol||(l==="timer"?s.write(`${cl} ${y} ${W(d)}
|
|
97
97
|
`):s.write(`${cl} ${y}
|
|
98
|
-
`)),w(),b()};return{start:K,stop:(H="")=>ml(H,0),message:(H="")=>{y=Q(H??y)},cancel:(H="")=>ml(H,1),error:(H="")=>ml(H,2),clear:()=>ml("",0,!0),get isCancelled(){return L}}},za={light:J("─","-"),heavy:J("━","="),block:J("█","#")};var Ja=`${g.default.gray(G)} `;var x=p(kl(),1);import{basename as ss,dirname as po,extname as eo,join as gn}from"node:path";import{readdirSync as lc,readFileSync as nc}from"node:fs";var sc=new Set(["node_modules",".git","dist","build","__pycache__"]);function rc(l){try{return nc(l,"utf-8")}catch{return null}}function mr(l){try{return lc(l,{withFileTypes:!0})}catch{return[]}}function Sr(l){let n=rc(l);if(!n)return null;let s=n.match(/^---\n([\s\S]+?)\n---/)?.[1]||n;return{name:s.match(/^name:\s*(.+)$/m)?.[1]?.replace(/^['"]|['"]$/g,"").trim(),description:s.match(/^description:\s*(.+)$/m)?.[1]?.replace(/^['"]|['"]$/g,"").trim()}}function ic(l){let n=Sr(l);if(!n?.name||!n.description)return null;return{type:"skill",name:n.name,description:n.description,path:po(l)}}function oc(l){let n=Sr(l);if(!n)return null;return{type:"command",name:n.name||ss(l,".md"),description:n.description||`Command: ${ss(l,".md")}`,path:l}}function $r(l,n,s,r,i){if(n>5)return;let o=ic(gn(l,"SKILL.md"));if(o&&!r.has(o.name.toLowerCase()))r.add(o.name.toLowerCase()),s.push(o);for(let c of mr(l)){if(!c.isDirectory())continue;if(sc.has(c.name))continue;let a=gn(l,c.name);if(c.name==="commands"){for(let k of mr(a)){if(!k.isFile()||eo(k.name).toLowerCase()!==".md")continue;if(ss(k.name,".md").toLowerCase()==="readme"||k.name===".DS_Store")continue;let b=oc(gn(a,k.name));if(!b||i.has(b.name.toLowerCase()))continue;i.add(b.name.toLowerCase()),s.push(b)}continue}$r(a,n+1,s,r,i)}}function hl(l,n){let s=[],r=new Set,i=new Set;return $r(n?gn(l,n):l,0,s,r,i),s.sort((o,c)=>{if(o.type!==c.type)return o.type==="skill"?-1:1;return o.name.localeCompare(c.name)})}import{cpSync as rs,existsSync as un,lstatSync as cs,mkdirSync as Bl,readdirSync as Dr,readlinkSync as cc,rmSync as tl,symlinkSync as Ir}from"node:fs";import{homedir as ac,platform as fc}from"node:os";import{dirname as Il,join as F,relative as tr,resolve as zl}from"node:path";var kc=F(ac(),".flins"),bc=new Set(["README.md","metadata.json"]);function is(l){return l instanceof Error?l.message:"Unknown error"}function yc(l,n,s){let r=l==="global"?F(kc,".agents"):F(s,".agents");return F(r,n==="skill"?"skills":"commands")}function gc(l,n,s){try{for(let r of Dr(l,{withFileTypes:!0})){if((s==="command"?r.name.replace(/\.md$/i,""):r.name).toLowerCase()!==n.toLowerCase())continue;let o=F(l,r.name),c=cs(o);if(s==="skill"&&(c.isDirectory()||c.isSymbolicLink()))return o;if(s==="command"&&(c.isFile()||c.isSymbolicLink()))return o}}catch{return null}return null}function uc(l,n){if(!un(l))return!1;try{let s=cs(l);if(n==="skill")return(s.isDirectory()||s.isSymbolicLink())&&un(F(l,"SKILL.md"));return(s.isFile()||s.isSymbolicLink())&&l.toLowerCase().endsWith(".md")}catch{return!1}}function os(l,n){tl(n,{recursive:!0,force:!0}),Bl(n,{recursive:!0});for(let s of Dr(l,{withFileTypes:!0})){if(bc.has(s.name)||s.name.startsWith("_"))continue;let r=F(l,s.name),i=F(n,s.name);if(s.isDirectory()){os(r,i);continue}Bl(Il(i),{recursive:!0}),rs(r,i,{recursive:!0})}}function wr(l,n,s){let r=yc(n,l.type,s);return Bl(r,{recursive:!0}),l.type==="skill"?F(r,l.name):F(r,`${l.name}.md`)}function dr(l){if(fc()!=="win32")return;return l==="skill"?"junction":"file"}function Jl(l,n,s,r=process.cwd()){let i=[];for(let o of nl()){let c=n==="skill"?jn(o,s,r):Nn(o,s,r);if(!c||!un(c))continue;let a=gc(c,l,n);if(!a)continue;i.push({agent:o,scope:s,path:a})}return i}function Tr(l,n=process.cwd()){return Jl(l.name,l.type,l.scope,n).filter((s)=>uc(s.path,l.type))}function wl(l){let n=new Map;for(let s of l){let r=n.get(s.path);if(r){r.agents.push(s.agent);continue}n.set(s.path,{agent:s.agent,scope:s.scope,path:s.path,agents:[s.agent]})}return Array.from(n.values())}function mn(l,n,s,r){let i=r.cwd??process.cwd();if(l.type==="command"){let c=Nn(n,s,i);if(!c)return{success:!1,path:"",error:`Agent ${U[n].label} does not support commands`};let a=F(c,`${l.name}.md`);try{if(!r.symlink)return Bl(Il(a),{recursive:!0}),tl(a,{force:!0}),rs(l.path,a),{success:!0,path:a};let k=wr(l,s,i);if(tl(k,{force:!0}),rs(l.path,k),zl(k)===zl(a))return{success:!0,path:a};return Bl(Il(a),{recursive:!0}),tl(a,{recursive:!0,force:!0}),Ir(tr(Il(a),k),a,dr(l.type)),{success:!0,path:a}}catch(k){return{success:!1,path:a,error:is(k)}}}let o=F(jn(n,s,i),l.name);try{if(!r.symlink)return os(l.path,o),{success:!0,path:o};let c=wr(l,s,i);if(os(l.path,c),zl(c)===zl(o))return{success:!0,path:o};return Bl(Il(o),{recursive:!0}),tl(o,{recursive:!0,force:!0}),Ir(tr(Il(o),c),o,dr(l.type)),{success:!0,path:o}}catch(c){return{success:!1,path:o,error:is(c)}}}function Lr(l){try{if(un(l)&&cs(l).isSymbolicLink()){let n=zl(Il(l),cc(l));tl(n,{recursive:!0,force:!0})}return tl(l,{recursive:!0,force:!0}),{success:!0}}catch(n){return{success:!1,error:is(n)}}}var _l=p(kl(),1);function v(l=!1){if(!l)gr(_l.default.bgCyan(_l.default.black(" flins ")))}function C(l,n=!1){if(!n)ur(l)}function M(l,n,s){return l===1?n:s??`${n}s`}function P(l,n){return l instanceof Error?l.message:n}function dl(){S.warn("No skills yet. Install your first skill:"),S.message(` ${_l.default.cyan("npx flins@latest add <repo>")}`),S.message(` ${_l.default.cyan("npx flins@latest search")}`)}import{spawn as mc}from"node:child_process";import{mkdtempSync as Br,mkdirSync as Sc,rmSync as $c,writeFileSync as Ic}from"node:fs";import{tmpdir as Rr}from"node:os";import{dirname as tc,join as as}from"node:path";var wc="https://flins.tech/directory.json",Ur="/.well-known/skills";function Hl(l){return l.replace(/^https?:\/\//,"").replace(/\/$/,"")}function dc(l){return`https://${Hl(l)}${Ur}/index.json`}function Dc(l,n,s){return`https://${Hl(l)}${Ur}/${n}/${s}`}function fs(l,n){return new Promise((s,r)=>{let i="",o="",c=mc("git",l,{cwd:n,stdio:["ignore","pipe","pipe"]});c.stdout.on("data",(a)=>{i+=a.toString()}),c.stderr.on("data",(a)=>{o+=a.toString()}),c.on("error",r),c.on("close",(a)=>{if(a===0){s(i.trim());return}r(Error(o.trim()||`git ${l.join(" ")} failed`))})})}async function xr(l,n){let s=await fetch(l,{signal:AbortSignal.timeout(n),headers:{Accept:"application/json"}});if(!s.ok)throw Error(`Failed to fetch ${l}: ${s.status}`);return await s.json()}async function jr(l){let n=await xr(dc(l),1e4);if(!Array.isArray(n.skills))throw Error(`Invalid skill index format from ${Hl(l)}`);return n.skills}async function Tc(l){let n=Hl(l),s=await jr(n),r=Br(as(Rr(),"flins-wellknown-"));for(let i of s)for(let o of i.files){let c=as(r,i.name,o);Sc(tc(c),{recursive:!0});let a=await fetch(Dc(n,i.name,o),{signal:AbortSignal.timeout(30000)});if(!a.ok)throw Error(`Failed to download ${i.name}/${o}: ${a.status}`);Ic(c,await a.text(),"utf-8")}return{kind:"well-known",label:n,url:`well-known:${n}`,branch:"main",commit:"well-known",root:r}}async function Lc(l){let n=Bc(l),s=Br(as(Rr(),"flins-git-")),r=n.branch??"main",i=["clone","--depth","1"];if(n.branch)i.push("--branch",n.branch);return i.push(n.url,s),await fs(i),{kind:"git",label:n.url,url:n.url,branch:r,commit:await fs(["rev-parse","HEAD"],s),root:s,subpath:n.subpath}}function Nr(l){return/^[a-z0-9-]+$/i.test(l)&&!l.includes("/")&&!l.includes(":")}function Cr(l){if(l.includes("/")&&!l.includes("://"))return!1;if(l.includes("github.com")||l.includes("gitlab.com")||l.endsWith(".git"))return!1;return/^(?:https?:\/\/)?([a-z0-9][-a-z0-9]*\.)+[a-z]{2,}$/i.test(l)}function Bc(l){let n=l.match(/github\.com\/([^/]+)\/([^/]+)\/tree\/([^/]+)(?:\/(.+))?$/);if(n)return{url:`https://github.com/${n[1]}/${n[2]}.git`,branch:n[3],subpath:n[4]};let s=l.match(/github\.com\/([^/]+)\/([^/]+)/);if(s)return{url:`https://github.com/${s[1]}/${s[2].replace(/\.git$/,"")}.git`};let r=l.match(/gitlab\.com\/([^/]+)\/([^/]+)\/-\/tree\/([^/]+)(?:\/(.+))?$/);if(r)return{url:`https://gitlab.com/${r[1]}/${r[2]}.git`,branch:r[3],subpath:r[4]};let i=l.match(/gitlab\.com\/([^/]+)\/([^/]+)/);if(i)return{url:`https://gitlab.com/${i[1]}/${i[2].replace(/\.git$/,"")}.git`};let o=l.match(/^([^/]+)\/([^/]+)(?:\/(.+))?$/);if(o&&!l.includes(":"))return{url:`https://github.com/${o[1]}/${o[2]}.git`,subpath:o[3]};return{url:l}}async function Xl(){return xr(wc,5000)}async function Gr(l){return(await Xl()).find((s)=>s.name.toLowerCase()===l.toLowerCase())?.source??null}async function qr(l){let n=l.startsWith("well-known:")?l.slice(11):l;if(!Cr(n))return null;return{host:Hl(n),skills:await jr(n)}}async function Yl(l){let n=l.startsWith("well-known:")?l.slice(11):l;return Cr(n)?Tc(n):Lc(n)}async function hr(l,n="main"){if(l.startsWith("well-known:"))return"well-known";return(await fs(["ls-remote",l,`refs/heads/${n}`])).split(/\s+/)[0]??""}async function Zl(l){$c(l.root,{recursive:!0,force:!0})}import{homedir as Rc}from"node:os";import{dirname as Uc,join as ks}from"node:path";import{mkdirSync as xc,readFileSync as jc,rmSync as Nc,writeFileSync as Cc}from"node:fs";var Gc=ks(Rc(),".flins"),zr="skills.lock";function _r(l,n){return l==="global"?ks(Gc,zr):ks(n,zr)}function bs(l,n){return`${n}:${l.toLowerCase()}`}function Jr(l){if(l.startsWith("skill:"))return{name:l.slice(6),type:"skill"};if(l.startsWith("command:"))return{name:l.slice(8),type:"command"};return null}function Al(l,n){try{let s=JSON.parse(jc(_r(l,n),"utf-8"));return typeof s==="object"&&s&&typeof s.skills==="object"&&s.skills?s.skills:{}}catch{return{}}}function ys(l,n,s){let r=_r(l,s);if(Object.keys(n).length===0){Nc(r,{force:!0});return}xc(Uc(r),{recursive:!0}),Cc(r,JSON.stringify({skills:n},null,2))}function Hr(l=process.cwd()){let n=Al("project",l),s=Al("global",l),r=[],i=new Set;for(let[o,c]of Object.entries(n)){let a=Jr(o);if(!a)continue;r.push({name:c.name||a.name,type:a.type,scope:"project",url:c.url,subpath:c.subpath,branch:c.branch,commit:c.commit}),i.add(o)}for(let[o,c]of Object.entries(s)){if(i.has(o))continue;let a=Jr(o);if(!a)continue;r.push({name:c.name||a.name,type:a.type,scope:"global",url:c.url,subpath:c.subpath,branch:c.branch,commit:c.commit})}return r}function Xr(l,n=process.cwd()){let s=Al(l.scope,n),r=bs(l.name,l.type);s[r]={name:l.name,url:l.url,subpath:l.subpath,branch:l.branch,commit:l.commit},ys(l.scope,s,n)}function Yr(l,n,s,r,i=process.cwd()){let o=Al(l,i),c=bs(n,s);if(!o[c])return;o[c].commit=r,ys(l,o,i)}function Sn(l,n,s,r=process.cwd()){let i=Al(l,r);delete i[bs(n,s)],ys(l,i,r)}import{spawn as qc}from"node:child_process";import{arch as hc,platform as zc}from"node:os";var Jc="https://tidy-oriole-956.convex.site/telemetry",Zr=!process.env.CI&&!process.env.CONTINUOUS_INTEGRATION&&!process.env.GITHUB_ACTIONS&&!process.env.GITLAB_CI&&!process.env.TRAVIS&&!process.env.JENKINS_URL&&!process.env.BITBUCKET_BUILD_NUMBER&&!process.env.CODEBUILD_BUILD_ID&&process.env.FLINS_TELEMETRY!=="0"&&!0,$n=[];function _c(l){let n=l.match(/github\.com[/:]([^/]+\/[^/]+?)(?:\.git)?(?:\/tree\/[^/]+\/(.+?))?(?:\/)?(?:[#]|$)/i);if(n)return n[2]?`${n[1]}/${n[2]}`:n[1];let s=l.match(/gitlab\.com[/:]([^/]+\/[^/]+?)(?:\.git)?(?:\/-\/tree\/[^/]+\/(.+?))?(?:\/)?(?:[#]|$)/i);if(s)return s[2]?`${s[1]}/${s[2]}`:s[1];let r=l.match(/^([^/]+\/[^/]+?)(?:\/(.+?))?(?:\/)?$/);if(r)return r[2]?`${r[1]}/${r[2]}`:r[1];return l.replace(/\.git$/,"").replace(/\/$/,"")}function Ar(l){if(!Zr)return;$n.push({...l,repo:l.repo?_c(l.repo):void 0,timestamp:Date.now(),osPlatform:zc(),osArch:hc(),nodeVersion:process.version,cliVersion:El.version})}function gs(){if(!Zr||$n.length===0)return;let l=$n;$n=[],qc("curl",["-s","-X","POST",Jc,"-H","Content-Type: application/json","-d",JSON.stringify(l),"--max-time","10"],{detached:!0,stdio:"ignore",windowsHide:!0}).unref()}function Ql(l){return Boolean(l.yes||l.force)}async function Hc(l,n){if(!Nr(l))return l;if(!n)S.info(`Looking up ${x.default.cyan(l)} in the flins directory...`);let s=await Gr(l);if(s)return s;S.error(`Skill ${x.default.cyan(l)} was not found in the flins directory.`);let r=await Xl();if(r.length>0){S.info("Available skills:");for(let i of r)S.message(` ${x.default.cyan(i.name)} ${x.default.dim(`- ${i.description}`)}`)}process.exit(1)}function us(l,n){S.step(x.default.bold(l));for(let s of n)S.message(` ${x.default.cyan(`${s.type}:${s.name}`)}`),S.message(` ${x.default.dim(s.description)}`)}async function Xc(l,n){if(n.skill&&n.skill.length>0){let i=l.filter((o)=>n.skill.some((c)=>o.name.toLowerCase()===c.toLowerCase()));if(i.length===0)return S.error(`No matching installables found for: ${n.skill.join(", ")}`),us("Available Installables",l),null;return i}if(Ql(n))return l;let s=new Map(l.map((i)=>[`${i.type}:${i.name.toLowerCase()}`,i])),r=await bl({message:"Choose items to add",required:!1,initialValues:l.length===1?[`${l[0].type}:${l[0].name.toLowerCase()}`]:void 0,options:l.map((i)=>({value:`${i.type}:${i.name.toLowerCase()}`,label:`${i.type==="skill"?"Skill":"Command"}: ${i.name}`,hint:i.description.length>70?`${i.description.slice(0,67)}...`:i.description}))});if(X(r))return A("Installation cancelled"),null;return r.map((i)=>s.get(i)).filter(Boolean)}async function Yc(l,n){if(n.agent&&n.agent.length>0){let i=Un(n.agent);if(i.invalid.length>0)return S.error(`Invalid agents: ${i.invalid.join(", ")}`),S.info(`Supported agents: ${nl().join(", ")}`),null;if(l==="project"){let c=i.agents.some((k)=>k==="universal"||Dl().includes(k))?["universal",...Vl().filter((k)=>i.agents.includes(k))]:Vl().filter((k)=>i.agents.includes(k)),a=i.agents.filter((k)=>k!=="universal"&&Dl().includes(k));if(a.length>0)S.info(`Local installs for ${a.map((k)=>x.default.cyan(U[k].label)).join(", ")} use ${x.default.cyan("universal")} (${x.default.cyan(".agents/skills")}).`);return c}return i.agents}let s=xn();if(l==="project"){if(ns(`${x.default.cyan(".agents/skills")} is always included locally.
|
|
99
|
-
Used by: ${Dl().map((o)=>U[o].label).join(", ")}`,"Universal Folder"),Ql(n))return["universal"];let i=await bl({message:"Add skills to extra local agent folders?",required:!1,options:Vl().map((o)=>({value:o,label:U[o].label,hint:s.includes(o)?`installed • ${Sl(U[o].skillsDir)}`:Sl(U[o].skillsDir)}))});if(X(i))return A("Installation cancelled"),null;return["universal",...i]}if(Ql(n)){if(s.length===0)return S.info("No installed agents detected. Use --agent to target a global folder."),null;return s}ns("Global installs write to user-level folders. The shared local .agents/skills folder does not apply with --global.","Global Install");let r=await bl({message:"Choose global skill targets",required:!0,initialValues:s,options:Object.keys(U).map((i)=>{let o=i;return{value:o,label:U[o].label,hint:s.includes(o)?`installed • ${Sl(U[o].globalSkillsDir)}`:Sl(U[o].globalSkillsDir)}})});if(X(r))return A("Installation cancelled"),null;return r}async function Zc(l){let n=zs();if(l.agent&&l.agent.length>0){let i=Un(l.agent);if(i.invalid.length>0)return S.error(`Invalid agents: ${i.invalid.join(", ")}`),S.info(`Supported agents: ${nl().join(", ")}`),null;let o=i.agents.filter((a)=>Ol(a)),c=i.agents.filter((a)=>!Ol(a));if(c.length>0)S.warn(`Ignoring agents without command folders: ${c.map((a)=>U[a].label).join(", ")}`);if(o.length===0)return S.error(`Commands are supported by ${n.map((a)=>U[a].label).join(", ")}.`),null;return o}let s=xn().filter((i)=>Ol(i));if(Ql(l)){if(s.length===0)S.warn(`No command-capable agents detected. Commands will be skipped. Use --agent with ${n.join(", ")} to install them.`);return s}let r=await bl({message:"Choose command targets",required:!0,initialValues:s,options:n.map((i)=>{let o=U[i];return{value:i,label:U[i].label,hint:Sl(o.commandsDir||"")+(s.includes(i)?" • installed":"")}})});if(X(r))return A("Installation cancelled"),null;return r}async function Ac(l,n,s,r,i,o){S.step(x.default.bold("Install Summary")),S.message(`${x.default.bold("Source:")} ${l}`),S.message(`${x.default.bold("Scope:")} ${n==="global"?"Global":"Local"}`),S.message(`${x.default.bold("Items:")} ${s.map((f)=>`${f.type}:${f.name}`).join(", ")}`);let c=s.some((f)=>f.type==="skill"),a=s.some((f)=>f.type==="command");if(c&&r){if(n==="project"&&r.includes("universal")){S.message(`${x.default.bold("Included local folder:")} ${x.default.cyan(".agents/skills")}`),S.message(`${x.default.bold("Universal agents:")} ${Dl().map((m)=>U[m].label).join(", ")}`);let b=r.filter((m)=>m!=="universal");if(b.length>0)S.message(`${x.default.bold("Extra local folders:")} ${b.map((m)=>U[m].label).join(", ")}`)}else S.message(`${x.default.bold("Skill targets:")} ${r.map((b)=>U[b].label).join(", ")}`);let f=Hs(r,n);if(f.length>0){S.message(x.default.bold("Shared folders:"));for(let b of f)S.message(` ${x.default.dim("•")} ${b}`)}}if(a)S.message(`${x.default.bold("Command targets:")} ${i&&i.length>0?i.map((f)=>U[f].label).join(", "):x.default.yellow("none")}`);if(Ql(o))return!0;let k=await $l({message:"Ready to install?"});if(X(k)||!k)return A("Installation cancelled"),!1;return!0}async function In(l,n){v(Boolean(n.silent));try{let s=n.global?"global":"project",r=await Hc(l,Boolean(n.silent));if(n.list){let c=await qr(r);if(c){us(`Available Installables from ${c.host}`,c.skills.map((k)=>({type:"skill",name:k.name,description:k.description,path:k.name}))),C(`Use ${x.default.cyan(`flins add ${c.host} --skill <name>`)} to install`,Boolean(n.silent));return}let a=await Yl(r);try{let k=hl(a.root,a.subpath);if(k.length===0){S.warn("No installables found in this source."),C(x.default.yellow("Nothing to list"),Boolean(n.silent));return}us(`Available Installables from ${a.label}`,k),C(`Use ${x.default.cyan("--skill <name>")} to skip the picker`,Boolean(n.silent))}finally{await Zl(a)}return}let i=await Yl(r),o=[];try{let c=hl(i.root,i.subpath);if(c.length===0)S.error("No skills or commands found. The source must contain SKILL.md files or command markdown files."),C(x.default.red("Installation failed"),Boolean(n.silent)),process.exit(1);if(!n.silent){let y=c.filter((d)=>d.type==="skill").length,$=c.filter((d)=>d.type==="command").length;S.info(`Found ${x.default.green(y.toString())} ${M(y,"skill")}${$>0?` and ${x.default.yellow($.toString())} ${M($,"command")}`:""}`)}let a=await Xc(c,n);if(!a||a.length===0){S.info("Nothing selected."),C(x.default.yellow("Nothing installed"),Boolean(n.silent));return}let k=a.some((y)=>y.type==="skill")?await Yc(s,n):[],f=a.some((y)=>y.type==="command")?await Zc(n):[];if(a.some((y)=>y.type==="skill")&&!k||a.some((y)=>y.type==="command")&&f===null)process.exit(1);if(!await Ac(i.label,s,a,k,f,n))return;let b=yl();b.start("Installing...");let m=n.symlink??!0;for(let y of a){let $=y.type==="skill"?k||[]:f||[],d=0;for(let B of $){let T=mn(y,B,s,{symlink:m});if(o.push({name:y.name,type:y.type,label:`${y.type}:${y.name}`,agent:U[B].label,success:T.success,error:T.error}),T.success)d+=1}if(d>0)Xr({name:y.name,type:y.type,scope:s,url:i.url,subpath:i.subpath,branch:i.branch,commit:i.commit})}b.stop("Install complete");let t=o.filter((y)=>y.success).length,L=o.filter((y)=>!y.success).length;if(t>0)S.success(x.default.green(`Installed ${t} ${M(t,"item")}.`));if(L>0){S.error(x.default.red(`Failed to install ${L} ${M(L,"item")}.`));for(let y of o.filter(($)=>!$.success))if(S.message(` ${x.default.red("✗")} ${y.label} ${x.default.dim(`→ ${y.agent}`)}`),y.error)S.message(` ${x.default.dim(y.error)}`)}if(a.some((y)=>y.type==="command")&&(f||[]).length===0)S.warn("Commands were selected but no command-capable agents were targeted.");for(let y of o)Ar({command:"add",type:y.type,repo:r,sourceUrl:i.url,name:y.name,agent:y.agent,scope:s,success:y.success});if(L>0)C(x.default.red("Installation finished with errors"),Boolean(n.silent)),process.exit(1);C(t>0?x.default.green("Done! Skills ready to use."):x.default.yellow("Nothing installed"),Boolean(n.silent))}finally{await Zl(i)}}catch(s){S.error(P(s,"Something went wrong. Try again or check your connection.")),C(x.default.red("Installation failed"),Boolean(n.silent)),process.exit(1)}}var Z=p(kl(),1);function ul(l){let n=Hr(),s=l&&l.length>0?new Set(l.map((r)=>r.toLowerCase())):null;return n.filter((r)=>!s||s.has(r.name.toLowerCase())).map((r)=>{let i=Jl(r.name,r.type,r.scope),o=Tr(r),c=new Set(o.map((a)=>a.path));return{id:`${r.scope}:${r.type}:${r.name.toLowerCase()}`,tracked:r,validInstallations:o,missingInstallations:i.filter((a)=>!c.has(a.path)),status:o.length===0?"orphaned":"latest",latestCommit:r.commit}})}async function ms(l){let n=[];for(let s of l){if(s.validInstallations.length===0){n.push(s);continue}try{let r=await hr(s.tracked.url,s.tracked.branch);n.push({...s,latestCommit:r,status:r===s.tracked.commit?"latest":"update-available"})}catch(r){n.push({...s,status:"error",error:P(r,"Failed to check for updates")})}}return n}async function Qr(){v(!1);try{let l=ul();if(l.length===0){dl();return}let n=l.filter((r)=>r.tracked.scope==="project"),s=l.filter((r)=>r.tracked.scope==="global");if(S.step(Z.default.bold("Installed Skills and Commands")),n.length>0){S.message(Z.default.bold(Z.default.cyan("Local (./skills.lock)")));for(let r of n){let i=r.validInstallations.map((c)=>U[c.agent].label).join(", "),o=r.tracked.type==="command"?Z.default.yellow("⚡"):Z.default.green("✓");S.message(` ${o} ${Z.default.cyan(`${r.tracked.type}:${r.tracked.name}`)} ${Z.default.dim(`(${i||"missing files"})`)}`)}}if(s.length>0){S.message(Z.default.bold(Z.default.cyan("Global (~/.flins/skills.lock)")));for(let r of s){let i=r.validInstallations.map((c)=>U[c.agent].label).join(", "),o=r.tracked.type==="command"?Z.default.yellow("⚡"):Z.default.green("✓");S.message(` ${o} ${Z.default.cyan(`${r.tracked.type}:${r.tracked.name}`)} ${Z.default.dim(`(${i||"missing files"})`)}`)}}C(Z.default.green("Showing installed items"))}catch(l){S.error(P(l,"Failed to load installed items.")),C(Z.default.red("List failed")),process.exit(1)}}var sl=p(kl(),1);function Kr(l){return Boolean(l.yes||l.force)}async function Mr(l,n){v(Boolean(n.silent));try{let s=ul(l.length>0?l:void 0),r=s.filter((f)=>f.validInstallations.length>0);if(s.length===0){if(l.length>0)S.error(`No matching tracked items found for: ${l.join(", ")}`);else dl();C(sl.default.yellow("Nothing to remove"),Boolean(n.silent));return}if(r.length===0){S.warn("No valid installations found to remove."),C(sl.default.yellow("Nothing to remove"),Boolean(n.silent));return}let i=r.map((f)=>f.id);if(!Kr(n)&&l.length===0){let f=await bl({message:"Choose items to remove",required:!0,initialValues:i,options:r.map((b)=>{let m=wl(b.validInstallations).length;return{value:b.id,label:`${b.tracked.type}:${b.tracked.name}`,hint:`${m} ${M(m,"installation")} • ${b.tracked.scope}`}})});if(X(f)){A("Remove cancelled");return}i=f}let o=r.filter((f)=>i.includes(f.id));if(o.length===0){S.info("Nothing selected."),C(sl.default.yellow("Nothing removed"),Boolean(n.silent));return}S.step(sl.default.bold("Will Remove"));for(let f of o)S.message(` ${sl.default.cyan(`${f.tracked.type}:${f.tracked.name}`)} ${sl.default.dim(`(${f.validInstallations.map((b)=>U[b.agent].label).join(", ")})`)}`);if(!Kr(n)){let f=await $l({message:"Remove selected items?"});if(X(f)||!f){A("Remove cancelled");return}}let c=yl();c.start("Removing...");let a=0,k=0;for(let f of o){for(let b of wl(f.validInstallations)){let m=Lr(b.path);if(m.success)a+=1;else k+=1,S.error(`${f.tracked.type}:${f.tracked.name} → ${m.error}`)}if(Jl(f.tracked.name,f.tracked.type,f.tracked.scope).length===0)Sn(f.tracked.scope,f.tracked.name,f.tracked.type)}if(c.stop("Remove complete"),a>0)S.success(sl.default.green(`Removed ${a} ${M(a,"installation")}.`));if(k>0)C(sl.default.red("Remove finished with errors"),Boolean(n.silent)),process.exit(1);C(sl.default.green("Done! Items removed."),Boolean(n.silent))}catch(s){S.error(P(s,"Something went wrong. Try again or check your connection.")),C(sl.default.red("Remove failed"),Boolean(n.silent)),process.exit(1)}}var Kl=p(kl(),1);async function Pr(){v(!1);try{let l=yl();l.start("Loading directory...");let n=await Xl();if(l.stop("Directory loaded"),n.length===0){S.warn("The flins directory is empty."),C(Kl.default.yellow("Nothing to browse"));return}let s=await yr({message:"Choose skills from the flins directory",placeholder:"Type to search...",options:n.map((i)=>({value:i.name,label:i.name,hint:i.author?`${i.author} • ${i.description}`:i.description}))});if(X(s)){A("Search cancelled");return}let r=Array.isArray(s)?s:[s];if(r.length===0){S.info("Nothing selected."),C(Kl.default.yellow("Nothing installed"));return}for(let i of r)await In(i,{silent:!0});C(Kl.default.green(`Installed ${r.length} ${M(r.length,"directory entry")}.`))}catch(l){S.error(P(l,"Something went wrong. Try again or check your connection.")),C(Kl.default.red("Search failed")),process.exit(1)}}var j=p(kl(),1);import{lstatSync as Qc}from"node:fs";function Ss(l){return Boolean(l.yes||l.force)}function Kc(l,n){if(l.length===0){dl();return}S.step(j.default.bold("Installed Items"));for(let s of l){let r={latest:j.default.green("✓"),"update-available":j.default.yellow("↓"),error:j.default.red("✗"),orphaned:j.default.dim("○")}[s.status],i={latest:j.default.green("Up to date"),"update-available":j.default.yellow("Update available"),error:j.default.red("Check failed"),orphaned:j.default.dim("Missing files")}[s.status];if(!n){S.message(`${r} ${j.default.cyan(`${s.tracked.type}:${s.tracked.name}`)} ${j.default.dim(`- ${i}`)}`);continue}if(S.message(`${r} ${j.default.cyan(`${s.tracked.type}:${s.tracked.name}`)}`),S.message(` Status: ${i}`),s.status==="update-available")S.message(` Commit: ${j.default.yellow(s.tracked.commit.slice(0,7))} ${j.default.dim("→")} ${j.default.green(s.latestCommit.slice(0,7))}`);else if(s.tracked.commit)S.message(` Commit: ${s.tracked.commit.slice(0,7)}`);if(s.error)S.message(` ${j.default.red(s.error)}`);let o=wl(s.validInstallations),c=wl(s.missingInstallations);if(o.length>0){S.message(" Installed in:");for(let a of o)S.message(` ${a.agents.map((k)=>U[k].label).join(", ")}: ${j.default.dim(a.path)}`)}if(c.length>0){S.message(` ${j.default.yellow("Missing installations:")}`);for(let a of c)S.message(` ${a.agents.map((k)=>U[k].label).join(", ")}: ${j.default.dim(a.path)}`)}}}async function Wr(l,n={}){v(Boolean(n.silent));try{let s=yl();s.start("Checking installation status...");let r=await ms(ul(l.length>0?l:void 0));s.stop("Check complete"),Kc(r,Boolean(n.verbose||l.length>0)),C(j.default.green("Done"),Boolean(n.silent))}catch(s){S.error(P(s,"Something went wrong. Try again or check your connection.")),C(j.default.red("Failed to check status"),Boolean(n.silent)),process.exit(1)}}async function Er(l,n={}){v(Boolean(n.silent));try{let s=await ms(ul(l.length>0?l:void 0)),r=s.filter((f)=>f.status==="update-available");if(s.length===0){dl(),C(j.default.yellow("Nothing to update"),Boolean(n.silent));return}if(r.length===0){let f=s.filter((b)=>b.status==="orphaned");if(f.length>0)S.warn(`${f.length} ${M(f.length,"item")} ${f.length===1?"has":"have"} missing files.`);S.success(j.default.green("All tracked items are up to date.")),C(j.default.green("Everything is current"),Boolean(n.silent));return}let i=r.map((f)=>f.id);if(!Ss(n)){let f=await bl({message:"Choose items to update",required:!0,initialValues:i,options:r.map((b)=>({value:b.id,label:`${b.tracked.type}:${b.tracked.name}`,hint:`${b.tracked.commit.slice(0,7)} → ${b.latestCommit.slice(0,7)}`}))});if(X(f)){A("Update cancelled");return}i=f}let o=r.filter((f)=>i.includes(f.id));if(o.length===0){S.info("Nothing selected."),C(j.default.yellow("Nothing updated"),Boolean(n.silent));return}S.step(j.default.bold("Will Update"));for(let f of o)S.message(` ${j.default.cyan(`${f.tracked.type}:${f.tracked.name}`)} ${j.default.dim(`${f.tracked.commit.slice(0,7)} → ${f.latestCommit.slice(0,7)}`)}`);if(!Ss(n)){let f=await $l({message:"Ready to update?"});if(X(f)||!f){A("Update cancelled");return}}let c=yl();c.start("Updating...");let a=0,k=0;for(let f of o){let b=await Yl(f.tracked.url),m=0;try{let t=hl(b.root,f.tracked.subpath||b.subpath).find((L)=>L.type===f.tracked.type&&L.name.toLowerCase()===f.tracked.name.toLowerCase());if(!t){k+=1,S.error(`Could not find ${f.tracked.type}:${f.tracked.name} in ${f.tracked.url}`);continue}for(let L of wl(f.validInstallations)){let y=mn(t,L.agent,L.scope,{symlink:Qc(L.path).isSymbolicLink()});if(y.success)a+=1,m+=1;else k+=1,S.error(`${f.tracked.type}:${f.tracked.name} → ${y.error}`)}if(m>0)Yr(f.tracked.scope,f.tracked.name,f.tracked.type,b.commit)}finally{await Zl(b)}}if(c.stop("Update complete"),a>0)S.success(j.default.green(`Updated ${a} ${M(a,"installation")}.`));if(k>0)C(j.default.red("Update finished with errors"),Boolean(n.silent)),process.exit(1);C(j.default.green("Done! Items updated."),Boolean(n.silent))}catch(s){S.error(P(s,"Something went wrong. Try again or check your connection.")),C(j.default.red("Update failed"),Boolean(n.silent)),process.exit(1)}}async function Vr(l={}){v(Boolean(l.silent));try{let n=ul().filter((s)=>s.validInstallations.length===0);if(n.length===0){S.success(j.default.green("No orphaned state entries found.")),C(j.default.green("Nothing to clean"),Boolean(l.silent));return}S.step(j.default.bold("Orphaned State Entries"));for(let s of n)S.message(` ${j.default.cyan(`${s.tracked.type}:${s.tracked.name}`)} ${j.default.dim(`(${s.tracked.scope})`)}`);if(!Ss(l)){let s=await $l({message:`Remove ${n.length} orphaned ${M(n.length,"entry")} from skills.lock?`});if(X(s)||!s){A("Clean cancelled");return}}for(let s of n)Sn(s.tracked.scope,s.tracked.name,s.tracked.type);C(j.default.green("State cleaned up"),Boolean(l.silent))}catch(n){S.error(P(n,"Something went wrong. Try again or check your connection.")),C(j.default.red("Clean failed"),Boolean(l.silent)),process.exit(1)}}var Mc=`
|
|
98
|
+
`)),w(),b()};return{start:Q,stop:(H="")=>ml(H,0),message:(H="")=>{y=A(H??y)},cancel:(H="")=>ml(H,1),error:(H="")=>ml(H,2),clear:()=>ml("",0,!0),get isCancelled(){return L}}},Xa={light:J("─","-"),heavy:J("━","="),block:J("█","#")};var Ya=`${u.default.gray(N)} `;var x=p(kl(),1);import{basename as rs,dirname as oc,extname as cc,join as un}from"node:path";import{readdirSync as ac,readFileSync as fc}from"node:fs";var kc=new Set(["node_modules",".git","dist","build","__pycache__"]);function bc(l){try{return fc(l,"utf-8")}catch{return null}}function Sr(l){try{return ac(l,{withFileTypes:!0})}catch{return[]}}function $r(l){let n=bc(l);if(!n)return null;let s=n.match(/^---\n([\s\S]+?)\n---/)?.[1]||n;return{name:s.match(/^name:\s*(.+)$/m)?.[1]?.replace(/^['"]|['"]$/g,"").trim(),description:s.match(/^description:\s*(.+)$/m)?.[1]?.replace(/^['"]|['"]$/g,"").trim()}}function yc(l){let n=$r(l);if(!n?.name||!n.description)return null;return{type:"skill",name:n.name,description:n.description,path:oc(l)}}function uc(l){let n=$r(l);if(!n)return null;return{type:"command",name:n.name||rs(l,".md"),description:n.description||`Command: ${rs(l,".md")}`,path:l}}function Ir(l,n,s,r,i){if(n>5)return;let o=yc(un(l,"SKILL.md"));if(o&&!r.has(o.name.toLowerCase()))r.add(o.name.toLowerCase()),s.push(o);for(let c of Sr(l)){if(!c.isDirectory())continue;if(kc.has(c.name))continue;let a=un(l,c.name);if(c.name==="commands"){for(let k of Sr(a)){if(!k.isFile()||cc(k.name).toLowerCase()!==".md")continue;if(rs(k.name,".md").toLowerCase()==="readme"||k.name===".DS_Store")continue;let b=uc(un(a,k.name));if(!b||i.has(b.name.toLowerCase()))continue;i.add(b.name.toLowerCase()),s.push(b)}continue}Ir(a,n+1,s,r,i)}}function ql(l,n){let s=[],r=new Set,i=new Set;return Ir(n?un(l,n):l,0,s,r,i),s.sort((o,c)=>{if(o.type!==c.type)return o.type==="skill"?-1:1;return o.name.localeCompare(c.name)})}import{cpSync as is,existsSync as gn,lstatSync as as,mkdirSync as Rl,readdirSync as Lr,readlinkSync as gc,rmSync as Il,symlinkSync as wr}from"node:fs";import{homedir as mc,platform as tc}from"node:os";import{dirname as $l,join as F,relative as dr,resolve as zl}from"node:path";var Sc=F(mc(),".flins"),$c=new Set(["README.md","metadata.json"]);function os(l){return l instanceof Error?l.message:"Unknown error"}function Ic(l,n,s){let r=l==="global"?F(Sc,".agents"):F(s,".agents");return F(r,n==="skill"?"skills":"commands")}function wc(l,n,s){try{for(let r of Lr(l,{withFileTypes:!0})){if((s==="command"?r.name.replace(/\.md$/i,""):r.name).toLowerCase()!==n.toLowerCase())continue;let o=F(l,r.name),c=as(o);if(s==="skill"&&(c.isDirectory()||c.isSymbolicLink()))return o;if(s==="command"&&(c.isFile()||c.isSymbolicLink()))return o}}catch{return null}return null}function dc(l,n){if(!gn(l))return!1;try{let s=as(l);if(n==="skill")return(s.isDirectory()||s.isSymbolicLink())&&gn(F(l,"SKILL.md"));return(s.isFile()||s.isSymbolicLink())&&l.toLowerCase().endsWith(".md")}catch{return!1}}function cs(l,n){Il(n,{recursive:!0,force:!0}),Rl(n,{recursive:!0});for(let s of Lr(l,{withFileTypes:!0})){if($c.has(s.name)||s.name.startsWith("_"))continue;let r=F(l,s.name),i=F(n,s.name);if(s.isDirectory()){cs(r,i);continue}Rl($l(i),{recursive:!0}),is(r,i,{recursive:!0})}}function Dr(l,n,s){let r=Ic(n,l.type,s);return Rl(r,{recursive:!0}),l.type==="skill"?F(r,l.name):F(r,`${l.name}.md`)}function Tr(l){if(tc()!=="win32")return;return l==="skill"?"junction":"file"}function Jl(l,n,s,r=process.cwd()){let i=[];for(let o of nl()){let c=n==="skill"?jn(o,s,r):Cn(o,s,r);if(!c||!gn(c))continue;let a=wc(c,l,n);if(!a)continue;i.push({agent:o,scope:s,path:a})}return i}function Rr(l,n=process.cwd()){return Jl(l.name,l.type,l.scope,n).filter((s)=>dc(s.path,l.type))}function wl(l){let n=new Map;for(let s of l){let r=n.get(s.path);if(r){r.agents.push(s.agent);continue}n.set(s.path,{agent:s.agent,scope:s.scope,path:s.path,agents:[s.agent]})}return Array.from(n.values())}function mn(l,n,s,r){let i=r.cwd??process.cwd();if(l.type==="command"){let c=Cn(n,s,i);if(!c)return{success:!1,path:"",error:`Agent ${U[n].label} does not support commands`};let a=F(c,`${l.name}.md`);try{if(!r.symlink)return Rl($l(a),{recursive:!0}),Il(a,{force:!0}),is(l.path,a),{success:!0,path:a};let k=Dr(l,s,i);if(Il(k,{force:!0}),is(l.path,k),zl(k)===zl(a))return{success:!0,path:a};return Rl($l(a),{recursive:!0}),Il(a,{recursive:!0,force:!0}),wr(dr($l(a),k),a,Tr(l.type)),{success:!0,path:a}}catch(k){return{success:!1,path:a,error:os(k)}}}let o=F(jn(n,s,i),l.name);try{if(!r.symlink)return cs(l.path,o),{success:!0,path:o};let c=Dr(l,s,i);if(cs(l.path,c),zl(c)===zl(o))return{success:!0,path:o};return Rl($l(o),{recursive:!0}),Il(o,{recursive:!0,force:!0}),wr(dr($l(o),c),o,Tr(l.type)),{success:!0,path:o}}catch(c){return{success:!1,path:o,error:os(c)}}}function Br(l){try{if(gn(l)&&as(l).isSymbolicLink()){let n=zl($l(l),gc(l));Il(n,{recursive:!0,force:!0})}return Il(l,{recursive:!0,force:!0}),{success:!0}}catch(n){return{success:!1,error:os(n)}}}var _l=p(kl(),1);function v(l=!1){if(!l)mr(_l.default.bgCyan(_l.default.black(" flins ")))}function C(l,n=!1){if(!n)tr(l)}function P(l,n,s){return l===1?n:s??`${n}s`}function M(l,n){return l instanceof Error?l.message:n}function dl(){t.warn("No skills yet. Install your first skill:"),t.message(` ${_l.default.cyan("npx flins@latest add <repo>")}`),t.message(` ${_l.default.cyan("npx flins@latest search")}`)}import{spawn as Dc}from"node:child_process";import{mkdtempSync as Cr,mkdirSync as Tc,rmSync as Lc,writeFileSync as Rc}from"node:fs";import{tmpdir as Nr}from"node:os";import{dirname as Bc,join as fs}from"node:path";var Uc="https://flins.tech/directory.json",Gr="/.well-known/skills",Ur=new Set(["bitbucket.org","dev.azure.com","codeberg.org","framagit.org","gitea.com","git.sr.ht","git.disroot.org","github.com","git.launchpad.net","gitlab.com","hg.sr.ht","launchpad.net","notabug.org","pagure.io","repo.or.cz","sourcehut.org"]);function tn(l){return l.startsWith("well-known:")}function ks(l){return tn(l)?l.slice(11):l}function qr(l){try{let n=new URL(l);return n.protocol==="http:"||n.protocol==="https:"?n:null}catch{return null}}function xr(l){return/^(?:[a-z0-9][-a-z0-9]*\.)+[a-z]{2,}$/i.test(l)}function Hl(l){let n=qr(l);if(n)return n.hostname.toLowerCase();return l.split("/")[0].replace(/\/$/,"").toLowerCase()}function zr(l){let n=ks(l).trim().replace(/\/+$/,"");if(!n||n.endsWith(".git"))return null;let s=tn(l),r=qr(n);if(r){let o=r.hostname.toLowerCase();if(!xr(o))return null;if(!s&&Ur.has(o))return null;return o}let i=Hl(n);if(!xr(i))return null;if(!s&&Ur.has(i))return null;return i}function xc(l){return`https://${Hl(l)}${Gr}/index.json`}function hc(l,n,s){return`https://${Hl(l)}${Gr}/${n}/${s}`}function bs(l,n){return new Promise((s,r)=>{let i="",o="",c=Dc("git",l,{cwd:n,stdio:["ignore","pipe","pipe"]});c.stdout.on("data",(a)=>{i+=a.toString()}),c.stderr.on("data",(a)=>{o+=a.toString()}),c.on("error",r),c.on("close",(a)=>{if(a===0){s(i.trim());return}r(Error(o.trim()||`git ${l.join(" ")} failed`))})})}async function Jr(l,n){let s=await fetch(l,{signal:AbortSignal.timeout(n),headers:{Accept:"application/json"}});if(!s.ok)throw Error(`Failed to fetch ${l}: ${s.status}`);return await s.json()}async function _r(l){let n=await Jr(xc(l),1e4);if(!Array.isArray(n.skills))throw Error(`Invalid skill index format from ${Hl(l)}`);return n.skills}async function hr(l){let n=Hl(l),s=await _r(n),r=Cr(fs(Nr(),"flins-wellknown-"));for(let i of s)for(let o of i.files){let c=fs(r,i.name,o);Tc(Bc(c),{recursive:!0});let a=await fetch(hc(n,i.name,o),{signal:AbortSignal.timeout(30000)});if(!a.ok)throw Error(`Failed to download ${i.name}/${o}: ${a.status}`);Rc(c,await a.text(),"utf-8")}return{kind:"well-known",label:n,url:`well-known:${n}`,branch:"main",commit:"well-known",root:r}}async function jr(l){let n=jc(l),s=Cr(fs(Nr(),"flins-git-")),r=n.branch??"main",i=["clone","--depth","1"];if(n.branch)i.push("--branch",n.branch);return i.push(n.url,s),await bs(i),{kind:"git",label:n.url,url:n.url,branch:r,commit:await bs(["rev-parse","HEAD"],s),root:s,subpath:n.subpath}}function Hr(l){return/^[a-z0-9-]+$/i.test(l)&&!l.includes("/")&&!l.includes(":")}function jc(l){let n=l.match(/github\.com\/([^/]+)\/([^/]+)\/tree\/([^/]+)(?:\/(.+))?$/);if(n)return{url:`https://github.com/${n[1]}/${n[2]}.git`,branch:n[3],subpath:n[4]};let s=l.match(/github\.com\/([^/]+)\/([^/]+)/);if(s)return{url:`https://github.com/${s[1]}/${s[2].replace(/\.git$/,"")}.git`};let r=l.match(/gitlab\.com\/([^/]+)\/([^/]+)\/-\/tree\/([^/]+)(?:\/(.+))?$/);if(r)return{url:`https://gitlab.com/${r[1]}/${r[2]}.git`,branch:r[3],subpath:r[4]};let i=l.match(/gitlab\.com\/([^/]+)\/([^/]+)/);if(i)return{url:`https://gitlab.com/${i[1]}/${i[2].replace(/\.git$/,"")}.git`};let o=l.match(/^([^/]+)\/([^/]+)(?:\/(.+))?$/),c=o?.[1];if(c&&o[2]&&!l.includes(":")&&!c.includes("."))return{url:`https://github.com/${c}/${o[2]}.git`,subpath:o[3]};return{url:l}}async function Kl(){return Jr(Uc,5000)}async function Kr(l){return(await Kl()).find((s)=>s.name.toLowerCase()===l.toLowerCase())?.source??null}async function Xr(l){let n=zr(l);if(!n)return null;try{return{host:n,skills:await _r(n)}}catch(s){if(tn(l))throw s;return null}}async function Xl(l){let n=zr(l);if(!n)return jr(ks(l));if(tn(l))return hr(n);try{return await hr(n)}catch{return jr(ks(l))}}async function Yr(l,n="main"){if(l.startsWith("well-known:"))return"well-known";return(await bs(["ls-remote",l,`refs/heads/${n}`])).split(/\s+/)[0]??""}async function Yl(l){Lc(l.root,{recursive:!0,force:!0})}import{homedir as Cc}from"node:os";import{dirname as Nc,join as ys}from"node:path";import{mkdirSync as Gc,readFileSync as qc,rmSync as zc,writeFileSync as Jc}from"node:fs";var _c=ys(Cc(),".flins"),Zr="skills.lock";function Qr(l,n){return l==="global"?ys(_c,Zr):ys(n,Zr)}function us(l,n){return`${n}:${l.toLowerCase()}`}function Ar(l){if(l.startsWith("skill:"))return{name:l.slice(6),type:"skill"};if(l.startsWith("command:"))return{name:l.slice(8),type:"command"};return null}function Zl(l,n){try{let s=JSON.parse(qc(Qr(l,n),"utf-8"));return typeof s==="object"&&s&&typeof s.skills==="object"&&s.skills?s.skills:{}}catch{return{}}}function gs(l,n,s){let r=Qr(l,s);if(Object.keys(n).length===0){zc(r,{force:!0});return}Gc(Nc(r),{recursive:!0}),Jc(r,JSON.stringify({skills:n},null,2))}function Pr(l=process.cwd()){let n=Zl("project",l),s=Zl("global",l),r=[],i=new Set;for(let[o,c]of Object.entries(n)){let a=Ar(o);if(!a)continue;r.push({name:c.name||a.name,type:a.type,scope:"project",url:c.url,subpath:c.subpath,branch:c.branch,commit:c.commit}),i.add(o)}for(let[o,c]of Object.entries(s)){if(i.has(o))continue;let a=Ar(o);if(!a)continue;r.push({name:c.name||a.name,type:a.type,scope:"global",url:c.url,subpath:c.subpath,branch:c.branch,commit:c.commit})}return r}function Mr(l,n=process.cwd()){let s=Zl(l.scope,n),r=us(l.name,l.type);s[r]={name:l.name,url:l.url,subpath:l.subpath,branch:l.branch,commit:l.commit},gs(l.scope,s,n)}function Wr(l,n,s,r,i=process.cwd()){let o=Zl(l,i),c=us(n,s);if(!o[c])return;o[c].commit=r,gs(l,o,i)}function Sn(l,n,s,r=process.cwd()){let i=Zl(l,r);delete i[us(n,s)],gs(l,i,r)}import{spawn as Hc}from"node:child_process";import{arch as Kc,platform as Xc}from"node:os";var Yc="https://tidy-oriole-956.convex.site/telemetry",Er=!process.env.CI&&!process.env.CONTINUOUS_INTEGRATION&&!process.env.GITHUB_ACTIONS&&!process.env.GITLAB_CI&&!process.env.TRAVIS&&!process.env.JENKINS_URL&&!process.env.BITBUCKET_BUILD_NUMBER&&!process.env.CODEBUILD_BUILD_ID&&process.env.FLINS_TELEMETRY!=="0"&&!0,$n=[];function Zc(l){let n=l.match(/github\.com[/:]([^/]+\/[^/]+?)(?:\.git)?(?:\/tree\/[^/]+\/(.+?))?(?:\/)?(?:[#]|$)/i);if(n)return n[2]?`${n[1]}/${n[2]}`:n[1];let s=l.match(/gitlab\.com[/:]([^/]+\/[^/]+?)(?:\.git)?(?:\/-\/tree\/[^/]+\/(.+?))?(?:\/)?(?:[#]|$)/i);if(s)return s[2]?`${s[1]}/${s[2]}`:s[1];let r=l.match(/^([^/]+\/[^/]+?)(?:\/(.+?))?(?:\/)?$/);if(r)return r[2]?`${r[1]}/${r[2]}`:r[1];return l.replace(/\.git$/,"").replace(/\/$/,"")}function Vr(l){if(!Er)return;$n.push({...l,repo:l.repo?Zc(l.repo):void 0,timestamp:Date.now(),osPlatform:Xc(),osArch:Kc(),nodeVersion:process.version,cliVersion:El.version})}function ms(){if(!Er||$n.length===0)return;let l=$n;$n=[],Hc("curl",["-s","-X","POST",Yc,"-H","Content-Type: application/json","-d",JSON.stringify(l),"--max-time","10"],{detached:!0,stdio:"ignore",windowsHide:!0}).unref()}function Al(l){return Boolean(l.yes||l.force)}async function Ac(l,n){if(!Hr(l))return l;if(!n)t.info(`Looking up ${x.default.cyan(l)} in the flins directory...`);let s=await Kr(l);if(s)return s;t.error(`Skill ${x.default.cyan(l)} was not found in the flins directory.`);let r=await Kl();if(r.length>0){t.info("Available skills:");for(let i of r)t.message(` ${x.default.cyan(i.name)} ${x.default.dim(`- ${i.description}`)}`)}process.exit(1)}function ts(l,n){t.step(x.default.bold(l));for(let s of n)t.message(` ${x.default.cyan(`${s.type}:${s.name}`)}`),t.message(` ${x.default.dim(s.description)}`)}async function Qc(l,n){if(n.skill&&n.skill.length>0){let i=l.filter((o)=>n.skill.some((c)=>o.name.toLowerCase()===c.toLowerCase()));if(i.length===0)return t.error(`No matching installables found for: ${n.skill.join(", ")}`),ts("Available Installables",l),null;return i}if(Al(n))return l;let s=new Map(l.map((i)=>[`${i.type}:${i.name.toLowerCase()}`,i])),r=await bl({message:"Choose items to add",required:!1,initialValues:l.length===1?[`${l[0].type}:${l[0].name.toLowerCase()}`]:void 0,options:l.map((i)=>({value:`${i.type}:${i.name.toLowerCase()}`,label:`${i.type==="skill"?"Skill":"Command"}: ${i.name}`,hint:i.description.length>70?`${i.description.slice(0,67)}...`:i.description}))});if(K(r))return Z("Installation cancelled"),null;return r.map((i)=>s.get(i)).filter(Boolean)}async function Pc(l,n){if(n.agent&&n.agent.length>0){let i=xn(n.agent);if(i.invalid.length>0)return t.error(`Invalid agents: ${i.invalid.join(", ")}`),t.info(`Supported agents: ${nl().join(", ")}`),null;if(l==="project"){let c=i.agents.some((k)=>k==="universal"||Dl().includes(k))?["universal",...Vl().filter((k)=>i.agents.includes(k))]:Vl().filter((k)=>i.agents.includes(k)),a=i.agents.filter((k)=>k!=="universal"&&Dl().includes(k));if(a.length>0)t.info(`Local installs for ${a.map((k)=>x.default.cyan(U[k].label)).join(", ")} use ${x.default.cyan("universal")} (${x.default.cyan(".agents/skills")}).`);return c}return i.agents}let s=hn();if(l==="project"){if(ss(`${x.default.cyan(".agents/skills")} is always included locally.
|
|
99
|
+
Used by: ${Dl().map((o)=>U[o].label).join(", ")}`,"Universal Folder"),Al(n))return["universal"];let i=await bl({message:"Add skills to extra local agent folders?",required:!1,options:Vl().map((o)=>({value:o,label:U[o].label,hint:s.includes(o)?`installed • ${tl(U[o].skillsDir)}`:tl(U[o].skillsDir)}))});if(K(i))return Z("Installation cancelled"),null;return["universal",...i]}if(Al(n)){if(s.length===0)return t.info("No installed agents detected. Use --agent to target a global folder."),null;return s}ss("Global installs write to user-level folders. The shared local .agents/skills folder does not apply with --global.","Global Install");let r=await bl({message:"Choose global skill targets",required:!0,initialValues:s,options:Object.keys(U).map((i)=>{let o=i;return{value:o,label:U[o].label,hint:s.includes(o)?`installed • ${tl(U[o].globalSkillsDir)}`:tl(U[o].globalSkillsDir)}})});if(K(r))return Z("Installation cancelled"),null;return r}async function Mc(l){let n=_s();if(l.agent&&l.agent.length>0){let i=xn(l.agent);if(i.invalid.length>0)return t.error(`Invalid agents: ${i.invalid.join(", ")}`),t.info(`Supported agents: ${nl().join(", ")}`),null;let o=i.agents.filter((a)=>Ol(a)),c=i.agents.filter((a)=>!Ol(a));if(c.length>0)t.warn(`Ignoring agents without command folders: ${c.map((a)=>U[a].label).join(", ")}`);if(o.length===0)return t.error(`Commands are supported by ${n.map((a)=>U[a].label).join(", ")}.`),null;return o}let s=hn().filter((i)=>Ol(i));if(Al(l)){if(s.length===0)t.warn(`No command-capable agents detected. Commands will be skipped. Use --agent with ${n.join(", ")} to install them.`);return s}let r=await bl({message:"Choose command targets",required:!0,initialValues:s,options:n.map((i)=>{let o=U[i];return{value:i,label:U[i].label,hint:tl(o.commandsDir||"")+(s.includes(i)?" • installed":"")}})});if(K(r))return Z("Installation cancelled"),null;return r}async function Wc(l,n,s,r,i,o){t.step(x.default.bold("Install Summary")),t.message(`${x.default.bold("Source:")} ${l}`),t.message(`${x.default.bold("Scope:")} ${n==="global"?"Global":"Local"}`),t.message(`${x.default.bold("Items:")} ${s.map((f)=>`${f.type}:${f.name}`).join(", ")}`);let c=s.some((f)=>f.type==="skill"),a=s.some((f)=>f.type==="command");if(c&&r){if(n==="project"&&r.includes("universal")){t.message(`${x.default.bold("Included local folder:")} ${x.default.cyan(".agents/skills")}`),t.message(`${x.default.bold("Universal agents:")} ${Dl().map((m)=>U[m].label).join(", ")}`);let b=r.filter((m)=>m!=="universal");if(b.length>0)t.message(`${x.default.bold("Extra local folders:")} ${b.map((m)=>U[m].label).join(", ")}`)}else t.message(`${x.default.bold("Skill targets:")} ${r.map((b)=>U[b].label).join(", ")}`);let f=Xs(r,n);if(f.length>0){t.message(x.default.bold("Shared folders:"));for(let b of f)t.message(` ${x.default.dim("•")} ${b}`)}}if(a)t.message(`${x.default.bold("Command targets:")} ${i&&i.length>0?i.map((f)=>U[f].label).join(", "):x.default.yellow("none")}`);if(Al(o))return!0;let k=await Sl({message:"Ready to install?"});if(K(k)||!k)return Z("Installation cancelled"),!1;return!0}async function In(l,n){v(Boolean(n.silent));try{let s=n.global?"global":"project",r=await Ac(l,Boolean(n.silent));if(n.list){let c=await Xr(r);if(c){ts(`Available Installables from ${c.host}`,c.skills.map((k)=>({type:"skill",name:k.name,description:k.description,path:k.name}))),C(`Use ${x.default.cyan(`flins add ${c.host} --skill <name>`)} to install`,Boolean(n.silent));return}let a=await Xl(r);try{let k=ql(a.root,a.subpath);if(k.length===0){t.warn("No installables found in this source."),C(x.default.yellow("Nothing to list"),Boolean(n.silent));return}ts(`Available Installables from ${a.label}`,k),C(`Use ${x.default.cyan("--skill <name>")} to skip the picker`,Boolean(n.silent))}finally{await Yl(a)}return}let i=await Xl(r),o=[];try{let c=ql(i.root,i.subpath);if(c.length===0)t.error("No skills or commands found. The source must contain SKILL.md files or command markdown files."),C(x.default.red("Installation failed"),Boolean(n.silent)),process.exit(1);if(!n.silent){let y=c.filter((d)=>d.type==="skill").length,S=c.filter((d)=>d.type==="command").length;t.info(`Found ${x.default.green(y.toString())} ${P(y,"skill")}${S>0?` and ${x.default.yellow(S.toString())} ${P(S,"command")}`:""}`)}let a=await Qc(c,n);if(!a||a.length===0){t.info("Nothing selected."),C(x.default.yellow("Nothing installed"),Boolean(n.silent));return}let k=a.some((y)=>y.type==="skill")?await Pc(s,n):[],f=a.some((y)=>y.type==="command")?await Mc(n):[];if(a.some((y)=>y.type==="skill")&&!k||a.some((y)=>y.type==="command")&&f===null)process.exit(1);if(!await Wc(i.label,s,a,k,f,n))return;let b=yl();b.start("Installing...");let m=n.symlink??!0;for(let y of a){let S=y.type==="skill"?k||[]:f||[],d=0;for(let R of S){let T=mn(y,R,s,{symlink:m});if(o.push({name:y.name,type:y.type,label:`${y.type}:${y.name}`,agent:U[R].label,success:T.success,error:T.error}),T.success)d+=1}if(d>0)Mr({name:y.name,type:y.type,scope:s,url:i.url,subpath:i.subpath,branch:i.branch,commit:i.commit})}b.stop("Install complete");let I=o.filter((y)=>y.success).length,L=o.filter((y)=>!y.success).length;if(I>0)t.success(x.default.green(`Installed ${I} ${P(I,"item")}.`));if(L>0){t.error(x.default.red(`Failed to install ${L} ${P(L,"item")}.`));for(let y of o.filter((S)=>!S.success))if(t.message(` ${x.default.red("✗")} ${y.label} ${x.default.dim(`→ ${y.agent}`)}`),y.error)t.message(` ${x.default.dim(y.error)}`)}if(a.some((y)=>y.type==="command")&&(f||[]).length===0)t.warn("Commands were selected but no command-capable agents were targeted.");for(let y of o)Vr({command:"add",type:y.type,repo:r,sourceUrl:i.url,name:y.name,agent:y.agent,scope:s,success:y.success});if(L>0)C(x.default.red("Installation finished with errors"),Boolean(n.silent)),process.exit(1);C(I>0?x.default.green("Done! Skills ready to use."):x.default.yellow("Nothing installed"),Boolean(n.silent))}finally{await Yl(i)}}catch(s){t.error(M(s,"Something went wrong. Try again or check your connection.")),C(x.default.red("Installation failed"),Boolean(n.silent)),process.exit(1)}}var Y=p(kl(),1);function gl(l){let n=Pr(),s=l&&l.length>0?new Set(l.map((r)=>r.toLowerCase())):null;return n.filter((r)=>!s||s.has(r.name.toLowerCase())).map((r)=>{let i=Jl(r.name,r.type,r.scope),o=Rr(r),c=new Set(o.map((a)=>a.path));return{id:`${r.scope}:${r.type}:${r.name.toLowerCase()}`,tracked:r,validInstallations:o,missingInstallations:i.filter((a)=>!c.has(a.path)),status:o.length===0?"orphaned":"latest",latestCommit:r.commit}})}async function Ss(l){let n=[];for(let s of l){if(s.validInstallations.length===0){n.push(s);continue}try{let r=await Yr(s.tracked.url,s.tracked.branch);n.push({...s,latestCommit:r,status:r===s.tracked.commit?"latest":"update-available"})}catch(r){n.push({...s,status:"error",error:M(r,"Failed to check for updates")})}}return n}async function Or(){v(!1);try{let l=gl();if(l.length===0){dl();return}let n=l.filter((r)=>r.tracked.scope==="project"),s=l.filter((r)=>r.tracked.scope==="global");if(t.step(Y.default.bold("Installed Skills and Commands")),n.length>0){t.message(Y.default.bold(Y.default.cyan("Local (./skills.lock)")));for(let r of n){let i=r.validInstallations.map((c)=>U[c.agent].label).join(", "),o=r.tracked.type==="command"?Y.default.yellow("⚡"):Y.default.green("✓");t.message(` ${o} ${Y.default.cyan(`${r.tracked.type}:${r.tracked.name}`)} ${Y.default.dim(`(${i||"missing files"})`)}`)}}if(s.length>0){t.message(Y.default.bold(Y.default.cyan("Global (~/.flins/skills.lock)")));for(let r of s){let i=r.validInstallations.map((c)=>U[c.agent].label).join(", "),o=r.tracked.type==="command"?Y.default.yellow("⚡"):Y.default.green("✓");t.message(` ${o} ${Y.default.cyan(`${r.tracked.type}:${r.tracked.name}`)} ${Y.default.dim(`(${i||"missing files"})`)}`)}}C(Y.default.green("Showing installed items"))}catch(l){t.error(M(l,"Failed to load installed items.")),C(Y.default.red("List failed")),process.exit(1)}}var sl=p(kl(),1);function Fr(l){return Boolean(l.yes||l.force)}async function vr(l,n){v(Boolean(n.silent));try{let s=gl(l.length>0?l:void 0),r=s.filter((f)=>f.validInstallations.length>0);if(s.length===0){if(l.length>0)t.error(`No matching tracked items found for: ${l.join(", ")}`);else dl();C(sl.default.yellow("Nothing to remove"),Boolean(n.silent));return}if(r.length===0){t.warn("No valid installations found to remove."),C(sl.default.yellow("Nothing to remove"),Boolean(n.silent));return}let i=r.map((f)=>f.id);if(!Fr(n)&&l.length===0){let f=await bl({message:"Choose items to remove",required:!0,initialValues:i,options:r.map((b)=>{let m=wl(b.validInstallations).length;return{value:b.id,label:`${b.tracked.type}:${b.tracked.name}`,hint:`${m} ${P(m,"installation")} • ${b.tracked.scope}`}})});if(K(f)){Z("Remove cancelled");return}i=f}let o=r.filter((f)=>i.includes(f.id));if(o.length===0){t.info("Nothing selected."),C(sl.default.yellow("Nothing removed"),Boolean(n.silent));return}t.step(sl.default.bold("Will Remove"));for(let f of o)t.message(` ${sl.default.cyan(`${f.tracked.type}:${f.tracked.name}`)} ${sl.default.dim(`(${f.validInstallations.map((b)=>U[b.agent].label).join(", ")})`)}`);if(!Fr(n)){let f=await Sl({message:"Remove selected items?"});if(K(f)||!f){Z("Remove cancelled");return}}let c=yl();c.start("Removing...");let a=0,k=0;for(let f of o){for(let b of wl(f.validInstallations)){let m=Br(b.path);if(m.success)a+=1;else k+=1,t.error(`${f.tracked.type}:${f.tracked.name} → ${m.error}`)}if(Jl(f.tracked.name,f.tracked.type,f.tracked.scope).length===0)Sn(f.tracked.scope,f.tracked.name,f.tracked.type)}if(c.stop("Remove complete"),a>0)t.success(sl.default.green(`Removed ${a} ${P(a,"installation")}.`));if(k>0)C(sl.default.red("Remove finished with errors"),Boolean(n.silent)),process.exit(1);C(sl.default.green("Done! Items removed."),Boolean(n.silent))}catch(s){t.error(M(s,"Something went wrong. Try again or check your connection.")),C(sl.default.red("Remove failed"),Boolean(n.silent)),process.exit(1)}}var Ql=p(kl(),1);async function pr(){v(!1);try{let l=yl();l.start("Loading directory...");let n=await Kl();if(l.stop("Directory loaded"),n.length===0){t.warn("The flins directory is empty."),C(Ql.default.yellow("Nothing to browse"));return}let s=await gr({message:"Choose skills from the flins directory",placeholder:"Type to search...",options:n.map((i)=>({value:i.name,label:i.name,hint:i.author?`${i.author} • ${i.description}`:i.description}))});if(K(s)){Z("Search cancelled");return}let r=Array.isArray(s)?s:[s];if(r.length===0){t.info("Nothing selected."),C(Ql.default.yellow("Nothing installed"));return}for(let i of r)await In(i,{silent:!0});C(Ql.default.green(`Installed ${r.length} ${P(r.length,"directory entry")}.`))}catch(l){t.error(M(l,"Something went wrong. Try again or check your connection.")),C(Ql.default.red("Search failed")),process.exit(1)}}var h=p(kl(),1);import{lstatSync as Ec}from"node:fs";function $s(l){return Boolean(l.yes||l.force)}function Vc(l,n){if(l.length===0){dl();return}t.step(h.default.bold("Installed Items"));for(let s of l){let r={latest:h.default.green("✓"),"update-available":h.default.yellow("↓"),error:h.default.red("✗"),orphaned:h.default.dim("○")}[s.status],i={latest:h.default.green("Up to date"),"update-available":h.default.yellow("Update available"),error:h.default.red("Check failed"),orphaned:h.default.dim("Missing files")}[s.status];if(!n){t.message(`${r} ${h.default.cyan(`${s.tracked.type}:${s.tracked.name}`)} ${h.default.dim(`- ${i}`)}`);continue}if(t.message(`${r} ${h.default.cyan(`${s.tracked.type}:${s.tracked.name}`)}`),t.message(` Status: ${i}`),s.status==="update-available")t.message(` Commit: ${h.default.yellow(s.tracked.commit.slice(0,7))} ${h.default.dim("→")} ${h.default.green(s.latestCommit.slice(0,7))}`);else if(s.tracked.commit)t.message(` Commit: ${s.tracked.commit.slice(0,7)}`);if(s.error)t.message(` ${h.default.red(s.error)}`);let o=wl(s.validInstallations),c=wl(s.missingInstallations);if(o.length>0){t.message(" Installed in:");for(let a of o)t.message(` ${a.agents.map((k)=>U[k].label).join(", ")}: ${h.default.dim(a.path)}`)}if(c.length>0){t.message(` ${h.default.yellow("Missing installations:")}`);for(let a of c)t.message(` ${a.agents.map((k)=>U[k].label).join(", ")}: ${h.default.dim(a.path)}`)}}}async function er(l,n={}){v(Boolean(n.silent));try{let s=yl();s.start("Checking installation status...");let r=await Ss(gl(l.length>0?l:void 0));s.stop("Check complete"),Vc(r,Boolean(n.verbose||l.length>0)),C(h.default.green("Done"),Boolean(n.silent))}catch(s){t.error(M(s,"Something went wrong. Try again or check your connection.")),C(h.default.red("Failed to check status"),Boolean(n.silent)),process.exit(1)}}async function li(l,n={}){v(Boolean(n.silent));try{let s=await Ss(gl(l.length>0?l:void 0)),r=s.filter((f)=>f.status==="update-available");if(s.length===0){dl(),C(h.default.yellow("Nothing to update"),Boolean(n.silent));return}if(r.length===0){let f=s.filter((b)=>b.status==="orphaned");if(f.length>0)t.warn(`${f.length} ${P(f.length,"item")} ${f.length===1?"has":"have"} missing files.`);t.success(h.default.green("All tracked items are up to date.")),C(h.default.green("Everything is current"),Boolean(n.silent));return}let i=r.map((f)=>f.id);if(!$s(n)){let f=await bl({message:"Choose items to update",required:!0,initialValues:i,options:r.map((b)=>({value:b.id,label:`${b.tracked.type}:${b.tracked.name}`,hint:`${b.tracked.commit.slice(0,7)} → ${b.latestCommit.slice(0,7)}`}))});if(K(f)){Z("Update cancelled");return}i=f}let o=r.filter((f)=>i.includes(f.id));if(o.length===0){t.info("Nothing selected."),C(h.default.yellow("Nothing updated"),Boolean(n.silent));return}t.step(h.default.bold("Will Update"));for(let f of o)t.message(` ${h.default.cyan(`${f.tracked.type}:${f.tracked.name}`)} ${h.default.dim(`${f.tracked.commit.slice(0,7)} → ${f.latestCommit.slice(0,7)}`)}`);if(!$s(n)){let f=await Sl({message:"Ready to update?"});if(K(f)||!f){Z("Update cancelled");return}}let c=yl();c.start("Updating...");let a=0,k=0;for(let f of o){let b=await Xl(f.tracked.url),m=0;try{let I=ql(b.root,f.tracked.subpath||b.subpath).find((L)=>L.type===f.tracked.type&&L.name.toLowerCase()===f.tracked.name.toLowerCase());if(!I){k+=1,t.error(`Could not find ${f.tracked.type}:${f.tracked.name} in ${f.tracked.url}`);continue}for(let L of wl(f.validInstallations)){let y=mn(I,L.agent,L.scope,{symlink:Ec(L.path).isSymbolicLink()});if(y.success)a+=1,m+=1;else k+=1,t.error(`${f.tracked.type}:${f.tracked.name} → ${y.error}`)}if(m>0)Wr(f.tracked.scope,f.tracked.name,f.tracked.type,b.commit)}finally{await Yl(b)}}if(c.stop("Update complete"),a>0)t.success(h.default.green(`Updated ${a} ${P(a,"installation")}.`));if(k>0)C(h.default.red("Update finished with errors"),Boolean(n.silent)),process.exit(1);C(h.default.green("Done! Items updated."),Boolean(n.silent))}catch(s){t.error(M(s,"Something went wrong. Try again or check your connection.")),C(h.default.red("Update failed"),Boolean(n.silent)),process.exit(1)}}async function ni(l={}){v(Boolean(l.silent));try{let n=gl().filter((s)=>s.validInstallations.length===0);if(n.length===0){t.success(h.default.green("No orphaned state entries found.")),C(h.default.green("Nothing to clean"),Boolean(l.silent));return}t.step(h.default.bold("Orphaned State Entries"));for(let s of n)t.message(` ${h.default.cyan(`${s.tracked.type}:${s.tracked.name}`)} ${h.default.dim(`(${s.tracked.scope})`)}`);if(!$s(l)){let s=await Sl({message:`Remove ${n.length} orphaned ${P(n.length,"entry")} from skills.lock?`});if(K(s)||!s){Z("Clean cancelled");return}}for(let s of n)Sn(s.tracked.scope,s.tracked.name,s.tracked.type);C(h.default.green("State cleaned up"),Boolean(l.silent))}catch(n){t.error(M(n,"Something went wrong. Try again or check your connection.")),C(h.default.red("Clean failed"),Boolean(l.silent)),process.exit(1)}}var Oc=`
|
|
100
100
|
███████╗██╗ ██╗███╗ ██╗ ██████╗
|
|
101
101
|
██╔════╝██║ ██║████╗ ██║██╔════╝
|
|
102
102
|
█████╗ ██║ ██║██╔██╗██║╚█████╗
|
|
103
103
|
██╔══╝ ██║ ██║██║╚████║ ╚═══██╗
|
|
104
104
|
██║ ███████╗██║██║ ╚███║██████╔╝
|
|
105
105
|
╚═╝ ╚══════╝╚═╝╚═╝ ╚══╝╚═════╝
|
|
106
|
-
`;process.on("exit",
|
|
106
|
+
`;process.on("exit",ms);process.on("SIGINT",()=>{ms(),process.exit(0)});e.name("flins").description(`Universal skill package manager for AI coding agents. Install, manage, and update custom skills across ${Hs()} AI development tools from one CLI.`).version(El.version).addHelpText("beforeAll",Oc).showHelpAfterError().showSuggestionAfterError().action(()=>{e.help()});e.command("add <source>").alias("a").alias("install").alias("i").description("Install skills from a source. Local installation is the default.").option("-g, --global","Install globally into user-level folders").option("-a, --agent <agents...>","Target specific agents").option("-s, --skill <skills...>","Install specific skills or commands by name").option("-l, --list","List available installables in the source without installing").option("-y, --yes","Auto-confirm prompts").option("-f, --force","Skip confirmations").option("--silent","Suppress banner and non-error output").option("--no-symlink","Copy files directly instead of using symlinks").action(async(l,n)=>{await In(l,n)});e.command("update [skills...]").alias("u").description("Update installed skills and commands to their latest versions").option("-y, --yes","Auto-confirm prompts").option("-f, --force","Skip confirmations").option("--silent","Suppress banner and non-error output").action(async(l,n)=>{await li(l,n)});e.command("outdated [skills...]").alias("o").alias("status").description("Check installation status, updates, and missing files").option("-v, --verbose","Show detailed installation paths").option("--silent","Suppress banner and non-error output").action(async(l,n)=>{await er(l,n)});e.command("remove [skills...]").alias("r").alias("rm").alias("uninstall").description("Remove installed skills and commands").option("-y, --yes","Auto-confirm prompts").option("-f, --force","Skip confirmations").option("--silent","Suppress banner and non-error output").action(async(l,n)=>{await vr(l,n)});e.command("list").alias("l").description("List installed skills and commands").action(async()=>{await Or()});e.command("search").alias("s").description("Browse the flins directory and install from it").action(async()=>{await pr()});e.command("clean").alias("c").description("Remove orphaned entries from skills.lock").option("-y, --yes","Auto-confirm prompts").option("-f, --force","Skip confirmations").option("--silent","Suppress banner and non-error output").action(async(l)=>{await ni(l)});e.parse();
|