@scheduler-systems/gal-cli 0.1.16-beta → 0.1.17-alpha.pr502

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/index.cjs +37 -37
  2. package/package.json +2 -2
package/dist/index.cjs CHANGED
@@ -1,17 +1,17 @@
1
1
  #!/usr/bin/env node
2
- "use strict";var No=Object.create;var Ce=Object.defineProperty;var $o=Object.getOwnPropertyDescriptor;var jo=Object.getOwnPropertyNames;var Go=Object.getPrototypeOf,Uo=Object.prototype.hasOwnProperty;var x=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),Mo=(t,e)=>{for(var n in e)Ce(t,n,{get:e[n],enumerable:!0})},on=(t,e,n,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of jo(e))!Uo.call(t,s)&&s!==n&&Ce(t,s,{get:()=>e[s],enumerable:!(o=$o(e,s))||o.enumerable});return t};var b=(t,e,n)=>(n=t!=null?No(Go(t)):{},on(e||!t||!t.__esModule?Ce(n,"default",{value:t,enumerable:!0}):n,t)),Ho=t=>on(Ce({},"__esModule",{value:!0}),t);var re=x(Je=>{var Ee=class extends Error{constructor(e,n,o){super(o),Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name,this.code=n,this.exitCode=e,this.nestedError=void 0}},We=class extends Ee{constructor(e){super(1,"commander.invalidArgument",e),Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name}};Je.CommanderError=Ee;Je.InvalidArgumentError=We});var _e=x(Ye=>{var{InvalidArgumentError:Vo}=re(),ze=class{constructor(e,n){switch(this.description=n||"",this.variadic=!1,this.parseArg=void 0,this.defaultValue=void 0,this.defaultValueDescription=void 0,this.argChoices=void 0,e[0]){case"<":this.required=!0,this._name=e.slice(1,-1);break;case"[":this.required=!1,this._name=e.slice(1,-1);break;default:this.required=!0,this._name=e;break}this._name.length>3&&this._name.slice(-3)==="..."&&(this.variadic=!0,this._name=this._name.slice(0,-3))}name(){return this._name}_concatValue(e,n){return n===this.defaultValue||!Array.isArray(n)?[e]:n.concat(e)}default(e,n){return this.defaultValue=e,this.defaultValueDescription=n,this}argParser(e){return this.parseArg=e,this}choices(e){return this.argChoices=e.slice(),this.parseArg=(n,o)=>{if(!this.argChoices.includes(n))throw new Vo(`Allowed choices are ${this.argChoices.join(", ")}.`);return this.variadic?this._concatValue(n,o):n},this}argRequired(){return this.required=!0,this}argOptional(){return this.required=!1,this}};function qo(t){let e=t.name()+(t.variadic===!0?"...":"");return t.required?"<"+e+">":"["+e+"]"}Ye.Argument=ze;Ye.humanReadableArgName=qo});var Qe=x(sn=>{var{humanReadableArgName:Wo}=_e(),Ke=class{constructor(){this.helpWidth=void 0,this.sortSubcommands=!1,this.sortOptions=!1,this.showGlobalOptions=!1}visibleCommands(e){let n=e.commands.filter(s=>!s._hidden),o=e._getHelpCommand();return o&&!o._hidden&&n.push(o),this.sortSubcommands&&n.sort((s,r)=>s.name().localeCompare(r.name())),n}compareOptions(e,n){let o=s=>s.short?s.short.replace(/^-/,""):s.long.replace(/^--/,"");return o(e).localeCompare(o(n))}visibleOptions(e){let n=e.options.filter(s=>!s.hidden),o=e._getHelpOption();if(o&&!o.hidden){let s=o.short&&e._findOption(o.short),r=o.long&&e._findOption(o.long);!s&&!r?n.push(o):o.long&&!r?n.push(e.createOption(o.long,o.description)):o.short&&!s&&n.push(e.createOption(o.short,o.description))}return this.sortOptions&&n.sort(this.compareOptions),n}visibleGlobalOptions(e){if(!this.showGlobalOptions)return[];let n=[];for(let o=e.parent;o;o=o.parent){let s=o.options.filter(r=>!r.hidden);n.push(...s)}return this.sortOptions&&n.sort(this.compareOptions),n}visibleArguments(e){return e._argsDescription&&e.registeredArguments.forEach(n=>{n.description=n.description||e._argsDescription[n.name()]||""}),e.registeredArguments.find(n=>n.description)?e.registeredArguments:[]}subcommandTerm(e){let n=e.registeredArguments.map(o=>Wo(o)).join(" ");return e._name+(e._aliases[0]?"|"+e._aliases[0]:"")+(e.options.length?" [options]":"")+(n?" "+n:"")}optionTerm(e){return e.flags}argumentTerm(e){return e.name()}longestSubcommandTermLength(e,n){return n.visibleCommands(e).reduce((o,s)=>Math.max(o,n.subcommandTerm(s).length),0)}longestOptionTermLength(e,n){return n.visibleOptions(e).reduce((o,s)=>Math.max(o,n.optionTerm(s).length),0)}longestGlobalOptionTermLength(e,n){return n.visibleGlobalOptions(e).reduce((o,s)=>Math.max(o,n.optionTerm(s).length),0)}longestArgumentTermLength(e,n){return n.visibleArguments(e).reduce((o,s)=>Math.max(o,n.argumentTerm(s).length),0)}commandUsage(e){let n=e._name;e._aliases[0]&&(n=n+"|"+e._aliases[0]);let o="";for(let s=e.parent;s;s=s.parent)o=s.name()+" "+o;return o+n+" "+e.usage()}commandDescription(e){return e.description()}subcommandDescription(e){return e.summary()||e.description()}optionDescription(e){let n=[];return e.argChoices&&n.push(`choices: ${e.argChoices.map(o=>JSON.stringify(o)).join(", ")}`),e.defaultValue!==void 0&&(e.required||e.optional||e.isBoolean()&&typeof e.defaultValue=="boolean")&&n.push(`default: ${e.defaultValueDescription||JSON.stringify(e.defaultValue)}`),e.presetArg!==void 0&&e.optional&&n.push(`preset: ${JSON.stringify(e.presetArg)}`),e.envVar!==void 0&&n.push(`env: ${e.envVar}`),n.length>0?`${e.description} (${n.join(", ")})`:e.description}argumentDescription(e){let n=[];if(e.argChoices&&n.push(`choices: ${e.argChoices.map(o=>JSON.stringify(o)).join(", ")}`),e.defaultValue!==void 0&&n.push(`default: ${e.defaultValueDescription||JSON.stringify(e.defaultValue)}`),n.length>0){let o=`(${n.join(", ")})`;return e.description?`${e.description} ${o}`:o}return e.description}formatHelp(e,n){let o=n.padWidth(e,n),s=n.helpWidth||80,r=2,a=2;function u(m,k){if(k){let v=`${m.padEnd(o+a)}${k}`;return n.wrap(v,s-r,o+a)}return m}function l(m){return m.join(`
3
- `).replace(/^/gm," ".repeat(r))}let d=[`Usage: ${n.commandUsage(e)}`,""],c=n.commandDescription(e);c.length>0&&(d=d.concat([n.wrap(c,s,0),""]));let f=n.visibleArguments(e).map(m=>u(n.argumentTerm(m),n.argumentDescription(m)));f.length>0&&(d=d.concat(["Arguments:",l(f),""]));let h=n.visibleOptions(e).map(m=>u(n.optionTerm(m),n.optionDescription(m)));if(h.length>0&&(d=d.concat(["Options:",l(h),""])),this.showGlobalOptions){let m=n.visibleGlobalOptions(e).map(k=>u(n.optionTerm(k),n.optionDescription(k)));m.length>0&&(d=d.concat(["Global Options:",l(m),""]))}let p=n.visibleCommands(e).map(m=>u(n.subcommandTerm(m),n.subcommandDescription(m)));return p.length>0&&(d=d.concat(["Commands:",l(p),""])),d.join(`
2
+ "use strict";var No=Object.create;var Ce=Object.defineProperty;var $o=Object.getOwnPropertyDescriptor;var jo=Object.getOwnPropertyNames;var Go=Object.getPrototypeOf,Uo=Object.prototype.hasOwnProperty;var x=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),Mo=(t,e)=>{for(var n in e)Ce(t,n,{get:e[n],enumerable:!0})},on=(t,e,n,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of jo(e))!Uo.call(t,s)&&s!==n&&Ce(t,s,{get:()=>e[s],enumerable:!(o=$o(e,s))||o.enumerable});return t};var b=(t,e,n)=>(n=t!=null?No(Go(t)):{},on(e||!t||!t.__esModule?Ce(n,"default",{value:t,enumerable:!0}):n,t)),Ho=t=>on(Ce({},"__esModule",{value:!0}),t);var re=x(Je=>{var Ee=class extends Error{constructor(e,n,o){super(o),Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name,this.code=n,this.exitCode=e,this.nestedError=void 0}},We=class extends Ee{constructor(e){super(1,"commander.invalidArgument",e),Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name}};Je.CommanderError=Ee;Je.InvalidArgumentError=We});var _e=x(Ye=>{var{InvalidArgumentError:Vo}=re(),ze=class{constructor(e,n){switch(this.description=n||"",this.variadic=!1,this.parseArg=void 0,this.defaultValue=void 0,this.defaultValueDescription=void 0,this.argChoices=void 0,e[0]){case"<":this.required=!0,this._name=e.slice(1,-1);break;case"[":this.required=!1,this._name=e.slice(1,-1);break;default:this.required=!0,this._name=e;break}this._name.length>3&&this._name.slice(-3)==="..."&&(this.variadic=!0,this._name=this._name.slice(0,-3))}name(){return this._name}_concatValue(e,n){return n===this.defaultValue||!Array.isArray(n)?[e]:n.concat(e)}default(e,n){return this.defaultValue=e,this.defaultValueDescription=n,this}argParser(e){return this.parseArg=e,this}choices(e){return this.argChoices=e.slice(),this.parseArg=(n,o)=>{if(!this.argChoices.includes(n))throw new Vo(`Allowed choices are ${this.argChoices.join(", ")}.`);return this.variadic?this._concatValue(n,o):n},this}argRequired(){return this.required=!0,this}argOptional(){return this.required=!1,this}};function qo(t){let e=t.name()+(t.variadic===!0?"...":"");return t.required?"<"+e+">":"["+e+"]"}Ye.Argument=ze;Ye.humanReadableArgName=qo});var Qe=x(sn=>{var{humanReadableArgName:Wo}=_e(),Ke=class{constructor(){this.helpWidth=void 0,this.sortSubcommands=!1,this.sortOptions=!1,this.showGlobalOptions=!1}visibleCommands(e){let n=e.commands.filter(s=>!s._hidden),o=e._getHelpCommand();return o&&!o._hidden&&n.push(o),this.sortSubcommands&&n.sort((s,r)=>s.name().localeCompare(r.name())),n}compareOptions(e,n){let o=s=>s.short?s.short.replace(/^-/,""):s.long.replace(/^--/,"");return o(e).localeCompare(o(n))}visibleOptions(e){let n=e.options.filter(s=>!s.hidden),o=e._getHelpOption();if(o&&!o.hidden){let s=o.short&&e._findOption(o.short),r=o.long&&e._findOption(o.long);!s&&!r?n.push(o):o.long&&!r?n.push(e.createOption(o.long,o.description)):o.short&&!s&&n.push(e.createOption(o.short,o.description))}return this.sortOptions&&n.sort(this.compareOptions),n}visibleGlobalOptions(e){if(!this.showGlobalOptions)return[];let n=[];for(let o=e.parent;o;o=o.parent){let s=o.options.filter(r=>!r.hidden);n.push(...s)}return this.sortOptions&&n.sort(this.compareOptions),n}visibleArguments(e){return e._argsDescription&&e.registeredArguments.forEach(n=>{n.description=n.description||e._argsDescription[n.name()]||""}),e.registeredArguments.find(n=>n.description)?e.registeredArguments:[]}subcommandTerm(e){let n=e.registeredArguments.map(o=>Wo(o)).join(" ");return e._name+(e._aliases[0]?"|"+e._aliases[0]:"")+(e.options.length?" [options]":"")+(n?" "+n:"")}optionTerm(e){return e.flags}argumentTerm(e){return e.name()}longestSubcommandTermLength(e,n){return n.visibleCommands(e).reduce((o,s)=>Math.max(o,n.subcommandTerm(s).length),0)}longestOptionTermLength(e,n){return n.visibleOptions(e).reduce((o,s)=>Math.max(o,n.optionTerm(s).length),0)}longestGlobalOptionTermLength(e,n){return n.visibleGlobalOptions(e).reduce((o,s)=>Math.max(o,n.optionTerm(s).length),0)}longestArgumentTermLength(e,n){return n.visibleArguments(e).reduce((o,s)=>Math.max(o,n.argumentTerm(s).length),0)}commandUsage(e){let n=e._name;e._aliases[0]&&(n=n+"|"+e._aliases[0]);let o="";for(let s=e.parent;s;s=s.parent)o=s.name()+" "+o;return o+n+" "+e.usage()}commandDescription(e){return e.description()}subcommandDescription(e){return e.summary()||e.description()}optionDescription(e){let n=[];return e.argChoices&&n.push(`choices: ${e.argChoices.map(o=>JSON.stringify(o)).join(", ")}`),e.defaultValue!==void 0&&(e.required||e.optional||e.isBoolean()&&typeof e.defaultValue=="boolean")&&n.push(`default: ${e.defaultValueDescription||JSON.stringify(e.defaultValue)}`),e.presetArg!==void 0&&e.optional&&n.push(`preset: ${JSON.stringify(e.presetArg)}`),e.envVar!==void 0&&n.push(`env: ${e.envVar}`),n.length>0?`${e.description} (${n.join(", ")})`:e.description}argumentDescription(e){let n=[];if(e.argChoices&&n.push(`choices: ${e.argChoices.map(o=>JSON.stringify(o)).join(", ")}`),e.defaultValue!==void 0&&n.push(`default: ${e.defaultValueDescription||JSON.stringify(e.defaultValue)}`),n.length>0){let o=`(${n.join(", ")})`;return e.description?`${e.description} ${o}`:o}return e.description}formatHelp(e,n){let o=n.padWidth(e,n),s=n.helpWidth||80,r=2,a=2;function u(p,k){if(k){let v=`${p.padEnd(o+a)}${k}`;return n.wrap(v,s-r,o+a)}return p}function l(p){return p.join(`
3
+ `).replace(/^/gm," ".repeat(r))}let d=[`Usage: ${n.commandUsage(e)}`,""],c=n.commandDescription(e);c.length>0&&(d=d.concat([n.wrap(c,s,0),""]));let f=n.visibleArguments(e).map(p=>u(n.argumentTerm(p),n.argumentDescription(p)));f.length>0&&(d=d.concat(["Arguments:",l(f),""]));let h=n.visibleOptions(e).map(p=>u(n.optionTerm(p),n.optionDescription(p)));if(h.length>0&&(d=d.concat(["Options:",l(h),""])),this.showGlobalOptions){let p=n.visibleGlobalOptions(e).map(k=>u(n.optionTerm(k),n.optionDescription(k)));p.length>0&&(d=d.concat(["Global Options:",l(p),""]))}let m=n.visibleCommands(e).map(p=>u(n.subcommandTerm(p),n.subcommandDescription(p)));return m.length>0&&(d=d.concat(["Commands:",l(m),""])),d.join(`
4
4
  `)}padWidth(e,n){return Math.max(n.longestOptionTermLength(e,n),n.longestGlobalOptionTermLength(e,n),n.longestSubcommandTermLength(e,n),n.longestArgumentTermLength(e,n))}wrap(e,n,o,s=40){let r=" \\f\\t\\v\xA0\u1680\u2000-\u200A\u202F\u205F\u3000\uFEFF",a=new RegExp(`[\\n][${r}]+`);if(e.match(a))return e;let u=n-o;if(u<s)return e;let l=e.slice(0,o),d=e.slice(o).replace(`\r
5
5
  `,`
6
- `),c=" ".repeat(o),h="\\s\u200B",p=new RegExp(`
7
- |.{1,${u-1}}([${h}]|$)|[^${h}]+?([${h}]|$)`,"g"),m=d.match(p)||[];return l+m.map((k,v)=>k===`
6
+ `),c=" ".repeat(o),h="\\s\u200B",m=new RegExp(`
7
+ |.{1,${u-1}}([${h}]|$)|[^${h}]+?([${h}]|$)`,"g"),p=d.match(m)||[];return l+p.map((k,v)=>k===`
8
8
  `?"":(v>0?c:"")+k.trimEnd()).join(`
9
9
  `)}};sn.Help=Ke});var tt=x(et=>{var{InvalidArgumentError:Jo}=re(),Xe=class{constructor(e,n){this.flags=e,this.description=n||"",this.required=e.includes("<"),this.optional=e.includes("["),this.variadic=/\w\.\.\.[>\]]$/.test(e),this.mandatory=!1;let o=Yo(e);this.short=o.shortFlag,this.long=o.longFlag,this.negate=!1,this.long&&(this.negate=this.long.startsWith("--no-")),this.defaultValue=void 0,this.defaultValueDescription=void 0,this.presetArg=void 0,this.envVar=void 0,this.parseArg=void 0,this.hidden=!1,this.argChoices=void 0,this.conflictsWith=[],this.implied=void 0}default(e,n){return this.defaultValue=e,this.defaultValueDescription=n,this}preset(e){return this.presetArg=e,this}conflicts(e){return this.conflictsWith=this.conflictsWith.concat(e),this}implies(e){let n=e;return typeof e=="string"&&(n={[e]:!0}),this.implied=Object.assign(this.implied||{},n),this}env(e){return this.envVar=e,this}argParser(e){return this.parseArg=e,this}makeOptionMandatory(e=!0){return this.mandatory=!!e,this}hideHelp(e=!0){return this.hidden=!!e,this}_concatValue(e,n){return n===this.defaultValue||!Array.isArray(n)?[e]:n.concat(e)}choices(e){return this.argChoices=e.slice(),this.parseArg=(n,o)=>{if(!this.argChoices.includes(n))throw new Jo(`Allowed choices are ${this.argChoices.join(", ")}.`);return this.variadic?this._concatValue(n,o):n},this}name(){return this.long?this.long.replace(/^--/,""):this.short.replace(/^-/,"")}attributeName(){return zo(this.name().replace(/^no-/,""))}is(e){return this.short===e||this.long===e}isBoolean(){return!this.required&&!this.optional&&!this.negate}},Ze=class{constructor(e){this.positiveOptions=new Map,this.negativeOptions=new Map,this.dualOptions=new Set,e.forEach(n=>{n.negate?this.negativeOptions.set(n.attributeName(),n):this.positiveOptions.set(n.attributeName(),n)}),this.negativeOptions.forEach((n,o)=>{this.positiveOptions.has(o)&&this.dualOptions.add(o)})}valueFromOption(e,n){let o=n.attributeName();if(!this.dualOptions.has(o))return!0;let s=this.negativeOptions.get(o).presetArg,r=s!==void 0?s:!1;return n.negate===(r===e)}};function zo(t){return t.split("-").reduce((e,n)=>e+n[0].toUpperCase()+n.slice(1))}function Yo(t){let e,n,o=t.split(/[ |,]+/);return o.length>1&&!/^[[<]/.test(o[1])&&(e=o.shift()),n=o.shift(),!e&&/^-[^-]$/.test(n)&&(e=n,n=void 0),{shortFlag:e,longFlag:n}}et.Option=Xe;et.DualOptions=Ze});var an=x(rn=>{function Ko(t,e){if(Math.abs(t.length-e.length)>3)return Math.max(t.length,e.length);let n=[];for(let o=0;o<=t.length;o++)n[o]=[o];for(let o=0;o<=e.length;o++)n[0][o]=o;for(let o=1;o<=e.length;o++)for(let s=1;s<=t.length;s++){let r=1;t[s-1]===e[o-1]?r=0:r=1,n[s][o]=Math.min(n[s-1][o]+1,n[s][o-1]+1,n[s-1][o-1]+r),s>1&&o>1&&t[s-1]===e[o-2]&&t[s-2]===e[o-1]&&(n[s][o]=Math.min(n[s][o],n[s-2][o-2]+1))}return n[t.length][e.length]}function Qo(t,e){if(!e||e.length===0)return"";e=Array.from(new Set(e));let n=t.startsWith("--");n&&(t=t.slice(2),e=e.map(a=>a.slice(2)));let o=[],s=3,r=.4;return e.forEach(a=>{if(a.length<=1)return;let u=Ko(t,a),l=Math.max(t.length,a.length);(l-u)/l>r&&(u<s?(s=u,o=[a]):u===s&&o.push(a))}),o.sort((a,u)=>a.localeCompare(u)),n&&(o=o.map(a=>`--${a}`)),o.length>1?`
10
10
  (Did you mean one of ${o.join(", ")}?)`:o.length===1?`
11
11
  (Did you mean ${o[0]}?)`:""}rn.suggestSimilar=Qo});var fn=x(dn=>{var Xo=require("node:events").EventEmitter,nt=require("node:child_process"),U=require("node:path"),ot=require("node:fs"),A=require("node:process"),{Argument:Zo,humanReadableArgName:es}=_e(),{CommanderError:st}=re(),{Help:ts}=Qe(),{Option:un,DualOptions:ns}=tt(),{suggestSimilar:ln}=an(),rt=class t extends Xo{constructor(e){super(),this.commands=[],this.options=[],this.parent=null,this._allowUnknownOption=!1,this._allowExcessArguments=!0,this.registeredArguments=[],this._args=this.registeredArguments,this.args=[],this.rawArgs=[],this.processedArgs=[],this._scriptPath=null,this._name=e||"",this._optionValues={},this._optionValueSources={},this._storeOptionsAsProperties=!1,this._actionHandler=null,this._executableHandler=!1,this._executableFile=null,this._executableDir=null,this._defaultCommandName=null,this._exitCallback=null,this._aliases=[],this._combineFlagAndOptionalValue=!0,this._description="",this._summary="",this._argsDescription=void 0,this._enablePositionalOptions=!1,this._passThroughOptions=!1,this._lifeCycleHooks={},this._showHelpAfterError=!1,this._showSuggestionAfterError=!0,this._outputConfiguration={writeOut:n=>A.stdout.write(n),writeErr:n=>A.stderr.write(n),getOutHelpWidth:()=>A.stdout.isTTY?A.stdout.columns:void 0,getErrHelpWidth:()=>A.stderr.isTTY?A.stderr.columns:void 0,outputError:(n,o)=>o(n)},this._hidden=!1,this._helpOption=void 0,this._addImplicitHelpCommand=void 0,this._helpCommand=void 0,this._helpConfiguration={}}copyInheritedSettings(e){return this._outputConfiguration=e._outputConfiguration,this._helpOption=e._helpOption,this._helpCommand=e._helpCommand,this._helpConfiguration=e._helpConfiguration,this._exitCallback=e._exitCallback,this._storeOptionsAsProperties=e._storeOptionsAsProperties,this._combineFlagAndOptionalValue=e._combineFlagAndOptionalValue,this._allowExcessArguments=e._allowExcessArguments,this._enablePositionalOptions=e._enablePositionalOptions,this._showHelpAfterError=e._showHelpAfterError,this._showSuggestionAfterError=e._showSuggestionAfterError,this}_getCommandAndAncestors(){let e=[];for(let n=this;n;n=n.parent)e.push(n);return e}command(e,n,o){let s=n,r=o;typeof s=="object"&&s!==null&&(r=s,s=null),r=r||{};let[,a,u]=e.match(/([^ ]+) *(.*)/),l=this.createCommand(a);return s&&(l.description(s),l._executableHandler=!0),r.isDefault&&(this._defaultCommandName=l._name),l._hidden=!!(r.noHelp||r.hidden),l._executableFile=r.executableFile||null,u&&l.arguments(u),this._registerCommand(l),l.parent=this,l.copyInheritedSettings(this),s?this:l}createCommand(e){return new t(e)}createHelp(){return Object.assign(new ts,this.configureHelp())}configureHelp(e){return e===void 0?this._helpConfiguration:(this._helpConfiguration=e,this)}configureOutput(e){return e===void 0?this._outputConfiguration:(Object.assign(this._outputConfiguration,e),this)}showHelpAfterError(e=!0){return typeof e!="string"&&(e=!!e),this._showHelpAfterError=e,this}showSuggestionAfterError(e=!0){return this._showSuggestionAfterError=!!e,this}addCommand(e,n){if(!e._name)throw new Error(`Command passed to .addCommand() must have a name
12
12
  - specify the name in Command constructor or using .name()`);return n=n||{},n.isDefault&&(this._defaultCommandName=e._name),(n.noHelp||n.hidden)&&(e._hidden=!0),this._registerCommand(e),e.parent=this,e._checkForBrokenPassThrough(),this}createArgument(e,n){return new Zo(e,n)}argument(e,n,o,s){let r=this.createArgument(e,n);return typeof o=="function"?r.default(s).argParser(o):r.default(o),this.addArgument(r),this}arguments(e){return e.trim().split(/ +/).forEach(n=>{this.argument(n)}),this}addArgument(e){let n=this.registeredArguments.slice(-1)[0];if(n&&n.variadic)throw new Error(`only the last argument can be variadic '${n.name()}'`);if(e.required&&e.defaultValue!==void 0&&e.parseArg===void 0)throw new Error(`a default value for a required argument is never used: '${e.name()}'`);return this.registeredArguments.push(e),this}helpCommand(e,n){if(typeof e=="boolean")return this._addImplicitHelpCommand=e,this;e=e??"help [command]";let[,o,s]=e.match(/([^ ]+) *(.*)/),r=n??"display help for command",a=this.createCommand(o);return a.helpOption(!1),s&&a.arguments(s),r&&a.description(r),this._addImplicitHelpCommand=!0,this._helpCommand=a,this}addHelpCommand(e,n){return typeof e!="object"?(this.helpCommand(e,n),this):(this._addImplicitHelpCommand=!0,this._helpCommand=e,this)}_getHelpCommand(){return this._addImplicitHelpCommand??(this.commands.length&&!this._actionHandler&&!this._findCommand("help"))?(this._helpCommand===void 0&&this.helpCommand(void 0,void 0),this._helpCommand):null}hook(e,n){let o=["preSubcommand","preAction","postAction"];if(!o.includes(e))throw new Error(`Unexpected value for event passed to hook : '${e}'.
13
13
  Expecting one of '${o.join("', '")}'`);return this._lifeCycleHooks[e]?this._lifeCycleHooks[e].push(n):this._lifeCycleHooks[e]=[n],this}exitOverride(e){return e?this._exitCallback=e:this._exitCallback=n=>{if(n.code!=="commander.executeSubCommandAsync")throw n},this}_exit(e,n,o){this._exitCallback&&this._exitCallback(new st(e,n,o)),A.exit(e)}action(e){let n=o=>{let s=this.registeredArguments.length,r=o.slice(0,s);return this._storeOptionsAsProperties?r[s]=this:r[s]=this.opts(),r.push(this),e.apply(this,r)};return this._actionHandler=n,this}createOption(e,n){return new un(e,n)}_callParseArg(e,n,o,s){try{return e.parseArg(n,o)}catch(r){if(r.code==="commander.invalidArgument"){let a=`${s} ${r.message}`;this.error(a,{exitCode:r.exitCode,code:r.code})}throw r}}_registerOption(e){let n=e.short&&this._findOption(e.short)||e.long&&this._findOption(e.long);if(n){let o=e.long&&this._findOption(e.long)?e.long:e.short;throw new Error(`Cannot add option '${e.flags}'${this._name&&` to command '${this._name}'`} due to conflicting flag '${o}'
14
- - already used by option '${n.flags}'`)}this.options.push(e)}_registerCommand(e){let n=s=>[s.name()].concat(s.aliases()),o=n(e).find(s=>this._findCommand(s));if(o){let s=n(this._findCommand(o)).join("|"),r=n(e).join("|");throw new Error(`cannot add command '${r}' as already have command '${s}'`)}this.commands.push(e)}addOption(e){this._registerOption(e);let n=e.name(),o=e.attributeName();if(e.negate){let r=e.long.replace(/^--no-/,"--");this._findOption(r)||this.setOptionValueWithSource(o,e.defaultValue===void 0?!0:e.defaultValue,"default")}else e.defaultValue!==void 0&&this.setOptionValueWithSource(o,e.defaultValue,"default");let s=(r,a,u)=>{r==null&&e.presetArg!==void 0&&(r=e.presetArg);let l=this.getOptionValue(o);r!==null&&e.parseArg?r=this._callParseArg(e,r,l,a):r!==null&&e.variadic&&(r=e._concatValue(r,l)),r==null&&(e.negate?r=!1:e.isBoolean()||e.optional?r=!0:r=""),this.setOptionValueWithSource(o,r,u)};return this.on("option:"+n,r=>{let a=`error: option '${e.flags}' argument '${r}' is invalid.`;s(r,a,"cli")}),e.envVar&&this.on("optionEnv:"+n,r=>{let a=`error: option '${e.flags}' value '${r}' from env '${e.envVar}' is invalid.`;s(r,a,"env")}),this}_optionEx(e,n,o,s,r){if(typeof n=="object"&&n instanceof un)throw new Error("To add an Option object use addOption() instead of option() or requiredOption()");let a=this.createOption(n,o);if(a.makeOptionMandatory(!!e.mandatory),typeof s=="function")a.default(r).argParser(s);else if(s instanceof RegExp){let u=s;s=(l,d)=>{let c=u.exec(l);return c?c[0]:d},a.default(r).argParser(s)}else a.default(s);return this.addOption(a)}option(e,n,o,s){return this._optionEx({},e,n,o,s)}requiredOption(e,n,o,s){return this._optionEx({mandatory:!0},e,n,o,s)}combineFlagAndOptionalValue(e=!0){return this._combineFlagAndOptionalValue=!!e,this}allowUnknownOption(e=!0){return this._allowUnknownOption=!!e,this}allowExcessArguments(e=!0){return this._allowExcessArguments=!!e,this}enablePositionalOptions(e=!0){return this._enablePositionalOptions=!!e,this}passThroughOptions(e=!0){return this._passThroughOptions=!!e,this._checkForBrokenPassThrough(),this}_checkForBrokenPassThrough(){if(this.parent&&this._passThroughOptions&&!this.parent._enablePositionalOptions)throw new Error(`passThroughOptions cannot be used for '${this._name}' without turning on enablePositionalOptions for parent command(s)`)}storeOptionsAsProperties(e=!0){if(this.options.length)throw new Error("call .storeOptionsAsProperties() before adding options");if(Object.keys(this._optionValues).length)throw new Error("call .storeOptionsAsProperties() before setting option values");return this._storeOptionsAsProperties=!!e,this}getOptionValue(e){return this._storeOptionsAsProperties?this[e]:this._optionValues[e]}setOptionValue(e,n){return this.setOptionValueWithSource(e,n,void 0)}setOptionValueWithSource(e,n,o){return this._storeOptionsAsProperties?this[e]=n:this._optionValues[e]=n,this._optionValueSources[e]=o,this}getOptionValueSource(e){return this._optionValueSources[e]}getOptionValueSourceWithGlobals(e){let n;return this._getCommandAndAncestors().forEach(o=>{o.getOptionValueSource(e)!==void 0&&(n=o.getOptionValueSource(e))}),n}_prepareUserArgs(e,n){if(e!==void 0&&!Array.isArray(e))throw new Error("first parameter to parse must be array or undefined");if(n=n||{},e===void 0&&n.from===void 0){A.versions?.electron&&(n.from="electron");let s=A.execArgv??[];(s.includes("-e")||s.includes("--eval")||s.includes("-p")||s.includes("--print"))&&(n.from="eval")}e===void 0&&(e=A.argv),this.rawArgs=e.slice();let o;switch(n.from){case void 0:case"node":this._scriptPath=e[1],o=e.slice(2);break;case"electron":A.defaultApp?(this._scriptPath=e[1],o=e.slice(2)):o=e.slice(1);break;case"user":o=e.slice(0);break;case"eval":o=e.slice(1);break;default:throw new Error(`unexpected parse option { from: '${n.from}' }`)}return!this._name&&this._scriptPath&&this.nameFromFilename(this._scriptPath),this._name=this._name||"program",o}parse(e,n){let o=this._prepareUserArgs(e,n);return this._parseCommand([],o),this}async parseAsync(e,n){let o=this._prepareUserArgs(e,n);return await this._parseCommand([],o),this}_executeSubCommand(e,n){n=n.slice();let o=!1,s=[".js",".ts",".tsx",".mjs",".cjs"];function r(c,f){let h=U.resolve(c,f);if(ot.existsSync(h))return h;if(s.includes(U.extname(f)))return;let p=s.find(m=>ot.existsSync(`${h}${m}`));if(p)return`${h}${p}`}this._checkForMissingMandatoryOptions(),this._checkForConflictingOptions();let a=e._executableFile||`${this._name}-${e._name}`,u=this._executableDir||"";if(this._scriptPath){let c;try{c=ot.realpathSync(this._scriptPath)}catch{c=this._scriptPath}u=U.resolve(U.dirname(c),u)}if(u){let c=r(u,a);if(!c&&!e._executableFile&&this._scriptPath){let f=U.basename(this._scriptPath,U.extname(this._scriptPath));f!==this._name&&(c=r(u,`${f}-${e._name}`))}a=c||a}o=s.includes(U.extname(a));let l;A.platform!=="win32"?o?(n.unshift(a),n=cn(A.execArgv).concat(n),l=nt.spawn(A.argv[0],n,{stdio:"inherit"})):l=nt.spawn(a,n,{stdio:"inherit"}):(n.unshift(a),n=cn(A.execArgv).concat(n),l=nt.spawn(A.execPath,n,{stdio:"inherit"})),l.killed||["SIGUSR1","SIGUSR2","SIGTERM","SIGINT","SIGHUP"].forEach(f=>{A.on(f,()=>{l.killed===!1&&l.exitCode===null&&l.kill(f)})});let d=this._exitCallback;l.on("close",c=>{c=c??1,d?d(new st(c,"commander.executeSubCommandAsync","(close)")):A.exit(c)}),l.on("error",c=>{if(c.code==="ENOENT"){let f=u?`searched for local subcommand relative to directory '${u}'`:"no directory for search for local subcommand, use .executableDir() to supply a custom directory",h=`'${a}' does not exist
14
+ - already used by option '${n.flags}'`)}this.options.push(e)}_registerCommand(e){let n=s=>[s.name()].concat(s.aliases()),o=n(e).find(s=>this._findCommand(s));if(o){let s=n(this._findCommand(o)).join("|"),r=n(e).join("|");throw new Error(`cannot add command '${r}' as already have command '${s}'`)}this.commands.push(e)}addOption(e){this._registerOption(e);let n=e.name(),o=e.attributeName();if(e.negate){let r=e.long.replace(/^--no-/,"--");this._findOption(r)||this.setOptionValueWithSource(o,e.defaultValue===void 0?!0:e.defaultValue,"default")}else e.defaultValue!==void 0&&this.setOptionValueWithSource(o,e.defaultValue,"default");let s=(r,a,u)=>{r==null&&e.presetArg!==void 0&&(r=e.presetArg);let l=this.getOptionValue(o);r!==null&&e.parseArg?r=this._callParseArg(e,r,l,a):r!==null&&e.variadic&&(r=e._concatValue(r,l)),r==null&&(e.negate?r=!1:e.isBoolean()||e.optional?r=!0:r=""),this.setOptionValueWithSource(o,r,u)};return this.on("option:"+n,r=>{let a=`error: option '${e.flags}' argument '${r}' is invalid.`;s(r,a,"cli")}),e.envVar&&this.on("optionEnv:"+n,r=>{let a=`error: option '${e.flags}' value '${r}' from env '${e.envVar}' is invalid.`;s(r,a,"env")}),this}_optionEx(e,n,o,s,r){if(typeof n=="object"&&n instanceof un)throw new Error("To add an Option object use addOption() instead of option() or requiredOption()");let a=this.createOption(n,o);if(a.makeOptionMandatory(!!e.mandatory),typeof s=="function")a.default(r).argParser(s);else if(s instanceof RegExp){let u=s;s=(l,d)=>{let c=u.exec(l);return c?c[0]:d},a.default(r).argParser(s)}else a.default(s);return this.addOption(a)}option(e,n,o,s){return this._optionEx({},e,n,o,s)}requiredOption(e,n,o,s){return this._optionEx({mandatory:!0},e,n,o,s)}combineFlagAndOptionalValue(e=!0){return this._combineFlagAndOptionalValue=!!e,this}allowUnknownOption(e=!0){return this._allowUnknownOption=!!e,this}allowExcessArguments(e=!0){return this._allowExcessArguments=!!e,this}enablePositionalOptions(e=!0){return this._enablePositionalOptions=!!e,this}passThroughOptions(e=!0){return this._passThroughOptions=!!e,this._checkForBrokenPassThrough(),this}_checkForBrokenPassThrough(){if(this.parent&&this._passThroughOptions&&!this.parent._enablePositionalOptions)throw new Error(`passThroughOptions cannot be used for '${this._name}' without turning on enablePositionalOptions for parent command(s)`)}storeOptionsAsProperties(e=!0){if(this.options.length)throw new Error("call .storeOptionsAsProperties() before adding options");if(Object.keys(this._optionValues).length)throw new Error("call .storeOptionsAsProperties() before setting option values");return this._storeOptionsAsProperties=!!e,this}getOptionValue(e){return this._storeOptionsAsProperties?this[e]:this._optionValues[e]}setOptionValue(e,n){return this.setOptionValueWithSource(e,n,void 0)}setOptionValueWithSource(e,n,o){return this._storeOptionsAsProperties?this[e]=n:this._optionValues[e]=n,this._optionValueSources[e]=o,this}getOptionValueSource(e){return this._optionValueSources[e]}getOptionValueSourceWithGlobals(e){let n;return this._getCommandAndAncestors().forEach(o=>{o.getOptionValueSource(e)!==void 0&&(n=o.getOptionValueSource(e))}),n}_prepareUserArgs(e,n){if(e!==void 0&&!Array.isArray(e))throw new Error("first parameter to parse must be array or undefined");if(n=n||{},e===void 0&&n.from===void 0){A.versions?.electron&&(n.from="electron");let s=A.execArgv??[];(s.includes("-e")||s.includes("--eval")||s.includes("-p")||s.includes("--print"))&&(n.from="eval")}e===void 0&&(e=A.argv),this.rawArgs=e.slice();let o;switch(n.from){case void 0:case"node":this._scriptPath=e[1],o=e.slice(2);break;case"electron":A.defaultApp?(this._scriptPath=e[1],o=e.slice(2)):o=e.slice(1);break;case"user":o=e.slice(0);break;case"eval":o=e.slice(1);break;default:throw new Error(`unexpected parse option { from: '${n.from}' }`)}return!this._name&&this._scriptPath&&this.nameFromFilename(this._scriptPath),this._name=this._name||"program",o}parse(e,n){let o=this._prepareUserArgs(e,n);return this._parseCommand([],o),this}async parseAsync(e,n){let o=this._prepareUserArgs(e,n);return await this._parseCommand([],o),this}_executeSubCommand(e,n){n=n.slice();let o=!1,s=[".js",".ts",".tsx",".mjs",".cjs"];function r(c,f){let h=U.resolve(c,f);if(ot.existsSync(h))return h;if(s.includes(U.extname(f)))return;let m=s.find(p=>ot.existsSync(`${h}${p}`));if(m)return`${h}${m}`}this._checkForMissingMandatoryOptions(),this._checkForConflictingOptions();let a=e._executableFile||`${this._name}-${e._name}`,u=this._executableDir||"";if(this._scriptPath){let c;try{c=ot.realpathSync(this._scriptPath)}catch{c=this._scriptPath}u=U.resolve(U.dirname(c),u)}if(u){let c=r(u,a);if(!c&&!e._executableFile&&this._scriptPath){let f=U.basename(this._scriptPath,U.extname(this._scriptPath));f!==this._name&&(c=r(u,`${f}-${e._name}`))}a=c||a}o=s.includes(U.extname(a));let l;A.platform!=="win32"?o?(n.unshift(a),n=cn(A.execArgv).concat(n),l=nt.spawn(A.argv[0],n,{stdio:"inherit"})):l=nt.spawn(a,n,{stdio:"inherit"}):(n.unshift(a),n=cn(A.execArgv).concat(n),l=nt.spawn(A.execPath,n,{stdio:"inherit"})),l.killed||["SIGUSR1","SIGUSR2","SIGTERM","SIGINT","SIGHUP"].forEach(f=>{A.on(f,()=>{l.killed===!1&&l.exitCode===null&&l.kill(f)})});let d=this._exitCallback;l.on("close",c=>{c=c??1,d?d(new st(c,"commander.executeSubCommandAsync","(close)")):A.exit(c)}),l.on("error",c=>{if(c.code==="ENOENT"){let f=u?`searched for local subcommand relative to directory '${u}'`:"no directory for search for local subcommand, use .executableDir() to supply a custom directory",h=`'${a}' does not exist
15
15
  - if '${e._name}' is not meant to be an executable command, remove description parameter from '.command()' and use '.description()' instead
16
16
  - if the default executable name is not suitable, use the executableFile option to supply a custom name or path
17
17
  - ${f}`;throw new Error(h)}else if(c.code==="EACCES")throw new Error(`'${a}' not executable`);if(!d)A.exit(1);else{let f=new st(1,"commander.executeSubCommandAsync","(error)");f.nestedError=c,d(f)}}),this.runningCommand=l}_dispatchSubcommand(e,n,o){let s=this._findCommand(e);s||this.help({error:!0});let r;return r=this._chainOrCallSubCommandHook(r,s,"preSubcommand"),r=this._chainOrCall(r,()=>{if(s._executableHandler)this._executeSubCommand(s,n.concat(o));else return s._parseCommand(n,o)}),r}_dispatchHelpCommand(e){e||this.help();let n=this._findCommand(e);return n&&!n._executableHandler&&n.help(),this._dispatchSubcommand(e,[],[this._getHelpOption()?.long??this._getHelpOption()?.short??"--help"])}_checkNumberOfArguments(){this.registeredArguments.forEach((e,n)=>{e.required&&this.args[n]==null&&this.missingArgument(e.name())}),!(this.registeredArguments.length>0&&this.registeredArguments[this.registeredArguments.length-1].variadic)&&this.args.length>this.registeredArguments.length&&this._excessArguments(this.args)}_processArguments(){let e=(o,s,r)=>{let a=s;if(s!==null&&o.parseArg){let u=`error: command-argument value '${s}' is invalid for argument '${o.name()}'.`;a=this._callParseArg(o,s,r,u)}return a};this._checkNumberOfArguments();let n=[];this.registeredArguments.forEach((o,s)=>{let r=o.defaultValue;o.variadic?s<this.args.length?(r=this.args.slice(s),o.parseArg&&(r=r.reduce((a,u)=>e(o,u,a),o.defaultValue))):r===void 0&&(r=[]):s<this.args.length&&(r=this.args[s],o.parseArg&&(r=e(o,r,o.defaultValue))),n[s]=r}),this.processedArgs=n}_chainOrCall(e,n){return e&&e.then&&typeof e.then=="function"?e.then(()=>n()):n()}_chainOrCallHooks(e,n){let o=e,s=[];return this._getCommandAndAncestors().reverse().filter(r=>r._lifeCycleHooks[n]!==void 0).forEach(r=>{r._lifeCycleHooks[n].forEach(a=>{s.push({hookedCommand:r,callback:a})})}),n==="postAction"&&s.reverse(),s.forEach(r=>{o=this._chainOrCall(o,()=>r.callback(r.hookedCommand,this))}),o}_chainOrCallSubCommandHook(e,n,o){let s=e;return this._lifeCycleHooks[o]!==void 0&&this._lifeCycleHooks[o].forEach(r=>{s=this._chainOrCall(s,()=>r(this,n))}),s}_parseCommand(e,n){let o=this.parseOptions(n);if(this._parseOptionsEnv(),this._parseOptionsImplied(),e=e.concat(o.operands),n=o.unknown,this.args=e.concat(n),e&&this._findCommand(e[0]))return this._dispatchSubcommand(e[0],e.slice(1),n);if(this._getHelpCommand()&&e[0]===this._getHelpCommand().name())return this._dispatchHelpCommand(e[1]);if(this._defaultCommandName)return this._outputHelpIfRequested(n),this._dispatchSubcommand(this._defaultCommandName,e,n);this.commands.length&&this.args.length===0&&!this._actionHandler&&!this._defaultCommandName&&this.help({error:!0}),this._outputHelpIfRequested(o.unknown),this._checkForMissingMandatoryOptions(),this._checkForConflictingOptions();let s=()=>{o.unknown.length>0&&this.unknownOption(o.unknown[0])},r=`command:${this.name()}`;if(this._actionHandler){s(),this._processArguments();let a;return a=this._chainOrCallHooks(a,"preAction"),a=this._chainOrCall(a,()=>this._actionHandler(this.processedArgs)),this.parent&&(a=this._chainOrCall(a,()=>{this.parent.emit(r,e,n)})),a=this._chainOrCallHooks(a,"postAction"),a}if(this.parent&&this.parent.listenerCount(r))s(),this._processArguments(),this.parent.emit(r,e,n);else if(e.length){if(this._findCommand("*"))return this._dispatchSubcommand("*",e,n);this.listenerCount("command:*")?this.emit("command:*",e,n):this.commands.length?this.unknownCommand():(s(),this._processArguments())}else this.commands.length?(s(),this.help({error:!0})):(s(),this._processArguments())}_findCommand(e){if(e)return this.commands.find(n=>n._name===e||n._aliases.includes(e))}_findOption(e){return this.options.find(n=>n.is(e))}_checkForMissingMandatoryOptions(){this._getCommandAndAncestors().forEach(e=>{e.options.forEach(n=>{n.mandatory&&e.getOptionValue(n.attributeName())===void 0&&e.missingMandatoryOptionValue(n)})})}_checkForConflictingLocalOptions(){let e=this.options.filter(o=>{let s=o.attributeName();return this.getOptionValue(s)===void 0?!1:this.getOptionValueSource(s)!=="default"});e.filter(o=>o.conflictsWith.length>0).forEach(o=>{let s=e.find(r=>o.conflictsWith.includes(r.attributeName()));s&&this._conflictingOption(o,s)})}_checkForConflictingOptions(){this._getCommandAndAncestors().forEach(e=>{e._checkForConflictingLocalOptions()})}parseOptions(e){let n=[],o=[],s=n,r=e.slice();function a(l){return l.length>1&&l[0]==="-"}let u=null;for(;r.length;){let l=r.shift();if(l==="--"){s===o&&s.push(l),s.push(...r);break}if(u&&!a(l)){this.emit(`option:${u.name()}`,l);continue}if(u=null,a(l)){let d=this._findOption(l);if(d){if(d.required){let c=r.shift();c===void 0&&this.optionMissingArgument(d),this.emit(`option:${d.name()}`,c)}else if(d.optional){let c=null;r.length>0&&!a(r[0])&&(c=r.shift()),this.emit(`option:${d.name()}`,c)}else this.emit(`option:${d.name()}`);u=d.variadic?d:null;continue}}if(l.length>2&&l[0]==="-"&&l[1]!=="-"){let d=this._findOption(`-${l[1]}`);if(d){d.required||d.optional&&this._combineFlagAndOptionalValue?this.emit(`option:${d.name()}`,l.slice(2)):(this.emit(`option:${d.name()}`),r.unshift(`-${l.slice(2)}`));continue}}if(/^--[^=]+=/.test(l)){let d=l.indexOf("="),c=this._findOption(l.slice(0,d));if(c&&(c.required||c.optional)){this.emit(`option:${c.name()}`,l.slice(d+1));continue}}if(a(l)&&(s=o),(this._enablePositionalOptions||this._passThroughOptions)&&n.length===0&&o.length===0){if(this._findCommand(l)){n.push(l),r.length>0&&o.push(...r);break}else if(this._getHelpCommand()&&l===this._getHelpCommand().name()){n.push(l),r.length>0&&n.push(...r);break}else if(this._defaultCommandName){o.push(l),r.length>0&&o.push(...r);break}}if(this._passThroughOptions){s.push(l),r.length>0&&s.push(...r);break}s.push(l)}return{operands:n,unknown:o}}opts(){if(this._storeOptionsAsProperties){let e={},n=this.options.length;for(let o=0;o<n;o++){let s=this.options[o].attributeName();e[s]=s===this._versionOptionName?this._version:this[s]}return e}return this._optionValues}optsWithGlobals(){return this._getCommandAndAncestors().reduce((e,n)=>Object.assign(e,n.opts()),{})}error(e,n){this._outputConfiguration.outputError(`${e}
@@ -20,17 +20,17 @@ Expecting one of '${o.join("', '")}'`);return this._lifeCycleHooks[e]?this._life
20
20
  `),this.outputHelp({error:!0}));let o=n||{},s=o.exitCode||1,r=o.code||"commander.error";this._exit(s,r,e)}_parseOptionsEnv(){this.options.forEach(e=>{if(e.envVar&&e.envVar in A.env){let n=e.attributeName();(this.getOptionValue(n)===void 0||["default","config","env"].includes(this.getOptionValueSource(n)))&&(e.required||e.optional?this.emit(`optionEnv:${e.name()}`,A.env[e.envVar]):this.emit(`optionEnv:${e.name()}`))}})}_parseOptionsImplied(){let e=new ns(this.options),n=o=>this.getOptionValue(o)!==void 0&&!["default","implied"].includes(this.getOptionValueSource(o));this.options.filter(o=>o.implied!==void 0&&n(o.attributeName())&&e.valueFromOption(this.getOptionValue(o.attributeName()),o)).forEach(o=>{Object.keys(o.implied).filter(s=>!n(s)).forEach(s=>{this.setOptionValueWithSource(s,o.implied[s],"implied")})})}missingArgument(e){let n=`error: missing required argument '${e}'`;this.error(n,{code:"commander.missingArgument"})}optionMissingArgument(e){let n=`error: option '${e.flags}' argument missing`;this.error(n,{code:"commander.optionMissingArgument"})}missingMandatoryOptionValue(e){let n=`error: required option '${e.flags}' not specified`;this.error(n,{code:"commander.missingMandatoryOptionValue"})}_conflictingOption(e,n){let o=a=>{let u=a.attributeName(),l=this.getOptionValue(u),d=this.options.find(f=>f.negate&&u===f.attributeName()),c=this.options.find(f=>!f.negate&&u===f.attributeName());return d&&(d.presetArg===void 0&&l===!1||d.presetArg!==void 0&&l===d.presetArg)?d:c||a},s=a=>{let u=o(a),l=u.attributeName();return this.getOptionValueSource(l)==="env"?`environment variable '${u.envVar}'`:`option '${u.flags}'`},r=`error: ${s(e)} cannot be used with ${s(n)}`;this.error(r,{code:"commander.conflictingOption"})}unknownOption(e){if(this._allowUnknownOption)return;let n="";if(e.startsWith("--")&&this._showSuggestionAfterError){let s=[],r=this;do{let a=r.createHelp().visibleOptions(r).filter(u=>u.long).map(u=>u.long);s=s.concat(a),r=r.parent}while(r&&!r._enablePositionalOptions);n=ln(e,s)}let o=`error: unknown option '${e}'${n}`;this.error(o,{code:"commander.unknownOption"})}_excessArguments(e){if(this._allowExcessArguments)return;let n=this.registeredArguments.length,o=n===1?"":"s",r=`error: too many arguments${this.parent?` for '${this.name()}'`:""}. Expected ${n} argument${o} but got ${e.length}.`;this.error(r,{code:"commander.excessArguments"})}unknownCommand(){let e=this.args[0],n="";if(this._showSuggestionAfterError){let s=[];this.createHelp().visibleCommands(this).forEach(r=>{s.push(r.name()),r.alias()&&s.push(r.alias())}),n=ln(e,s)}let o=`error: unknown command '${e}'${n}`;this.error(o,{code:"commander.unknownCommand"})}version(e,n,o){if(e===void 0)return this._version;this._version=e,n=n||"-V, --version",o=o||"output the version number";let s=this.createOption(n,o);return this._versionOptionName=s.attributeName(),this._registerOption(s),this.on("option:"+s.name(),()=>{this._outputConfiguration.writeOut(`${e}
21
21
  `),this._exit(0,"commander.version",e)}),this}description(e,n){return e===void 0&&n===void 0?this._description:(this._description=e,n&&(this._argsDescription=n),this)}summary(e){return e===void 0?this._summary:(this._summary=e,this)}alias(e){if(e===void 0)return this._aliases[0];let n=this;if(this.commands.length!==0&&this.commands[this.commands.length-1]._executableHandler&&(n=this.commands[this.commands.length-1]),e===n._name)throw new Error("Command alias can't be the same as its name");let o=this.parent?._findCommand(e);if(o){let s=[o.name()].concat(o.aliases()).join("|");throw new Error(`cannot add alias '${e}' to command '${this.name()}' as already have command '${s}'`)}return n._aliases.push(e),this}aliases(e){return e===void 0?this._aliases:(e.forEach(n=>this.alias(n)),this)}usage(e){if(e===void 0){if(this._usage)return this._usage;let n=this.registeredArguments.map(o=>es(o));return[].concat(this.options.length||this._helpOption!==null?"[options]":[],this.commands.length?"[command]":[],this.registeredArguments.length?n:[]).join(" ")}return this._usage=e,this}name(e){return e===void 0?this._name:(this._name=e,this)}nameFromFilename(e){return this._name=U.basename(e,U.extname(e)),this}executableDir(e){return e===void 0?this._executableDir:(this._executableDir=e,this)}helpInformation(e){let n=this.createHelp();return n.helpWidth===void 0&&(n.helpWidth=e&&e.error?this._outputConfiguration.getErrHelpWidth():this._outputConfiguration.getOutHelpWidth()),n.formatHelp(this,n)}_getHelpContext(e){e=e||{};let n={error:!!e.error},o;return n.error?o=s=>this._outputConfiguration.writeErr(s):o=s=>this._outputConfiguration.writeOut(s),n.write=e.write||o,n.command=this,n}outputHelp(e){let n;typeof e=="function"&&(n=e,e=void 0);let o=this._getHelpContext(e);this._getCommandAndAncestors().reverse().forEach(r=>r.emit("beforeAllHelp",o)),this.emit("beforeHelp",o);let s=this.helpInformation(o);if(n&&(s=n(s),typeof s!="string"&&!Buffer.isBuffer(s)))throw new Error("outputHelp callback must return a string or a Buffer");o.write(s),this._getHelpOption()?.long&&this.emit(this._getHelpOption().long),this.emit("afterHelp",o),this._getCommandAndAncestors().forEach(r=>r.emit("afterAllHelp",o))}helpOption(e,n){return typeof e=="boolean"?(e?this._helpOption=this._helpOption??void 0:this._helpOption=null,this):(e=e??"-h, --help",n=n??"display help for command",this._helpOption=this.createOption(e,n),this)}_getHelpOption(){return this._helpOption===void 0&&this.helpOption(void 0,void 0),this._helpOption}addHelpOption(e){return this._helpOption=e,this}help(e){this.outputHelp(e);let n=A.exitCode||0;n===0&&e&&typeof e!="function"&&e.error&&(n=1),this._exit(n,"commander.help","(outputHelp)")}addHelpText(e,n){let o=["beforeAll","before","after","afterAll"];if(!o.includes(e))throw new Error(`Unexpected value for position to addHelpText.
22
22
  Expecting one of '${o.join("', '")}'`);let s=`${e}Help`;return this.on(s,r=>{let a;typeof n=="function"?a=n({error:r.error,command:r.command}):a=n,a&&r.write(`${a}
23
- `)}),this}_outputHelpIfRequested(e){let n=this._getHelpOption();n&&e.find(s=>n.is(s))&&(this.outputHelp(),this._exit(0,"commander.helpDisplayed","(outputHelp)"))}};function cn(t){return t.map(e=>{if(!e.startsWith("--inspect"))return e;let n,o="127.0.0.1",s="9229",r;return(r=e.match(/^(--inspect(-brk)?)$/))!==null?n=r[1]:(r=e.match(/^(--inspect(-brk|-port)?)=([^:]+)$/))!==null?(n=r[1],/^\d+$/.test(r[3])?s=r[3]:o=r[3]):(r=e.match(/^(--inspect(-brk|-port)?)=([^:]+):(\d+)$/))!==null&&(n=r[1],o=r[3],s=r[4]),n&&s!=="0"?`${n}=${o}:${parseInt(s)+1}`:e})}dn.Command=rt});var Dn=x(I=>{var{Argument:hn}=_e(),{Command:it}=fn(),{CommanderError:os,InvalidArgumentError:mn}=re(),{Help:ss}=Qe(),{Option:pn}=tt();I.program=new it;I.createCommand=t=>new it(t);I.createOption=(t,e)=>new pn(t,e);I.createArgument=(t,e)=>new hn(t,e);I.Command=it;I.Option=pn;I.Argument=hn;I.Help=ss;I.CommanderError=os;I.InvalidArgumentError=mn;I.InvalidOptionArgumentError=mn});var Fn=x((li,rs)=>{rs.exports={name:"dotenv",version:"16.6.1",description:"Loads environment variables from .env file",main:"lib/main.js",types:"lib/main.d.ts",exports:{".":{types:"./lib/main.d.ts",require:"./lib/main.js",default:"./lib/main.js"},"./config":"./config.js","./config.js":"./config.js","./lib/env-options":"./lib/env-options.js","./lib/env-options.js":"./lib/env-options.js","./lib/cli-options":"./lib/cli-options.js","./lib/cli-options.js":"./lib/cli-options.js","./package.json":"./package.json"},scripts:{"dts-check":"tsc --project tests/types/tsconfig.json",lint:"standard",pretest:"npm run lint && npm run dts-check",test:"tap run --allow-empty-coverage --disable-coverage --timeout=60000","test:coverage":"tap run --show-full-coverage --timeout=60000 --coverage-report=text --coverage-report=lcov",prerelease:"npm test",release:"standard-version"},repository:{type:"git",url:"git://github.com/motdotla/dotenv.git"},homepage:"https://github.com/motdotla/dotenv#readme",funding:"https://dotenvx.com",keywords:["dotenv","env",".env","environment","variables","config","settings"],readmeFilename:"README.md",license:"BSD-2-Clause",devDependencies:{"@types/node":"^18.11.3",decache:"^4.6.2",sinon:"^14.0.1",standard:"^17.0.0","standard-version":"^9.5.0",tap:"^19.2.0",typescript:"^4.8.4"},engines:{node:">=12"},browser:{fs:!1}}});var vn=x((ci,M)=>{var at=require("fs"),ve=require("path"),is=require("os"),as=require("crypto"),us=Fn(),ut=us.version,ls=/(?:^|^)\s*(?:export\s+)?([\w.-]+)(?:\s*=\s*?|:\s+?)(\s*'(?:\\'|[^'])*'|\s*"(?:\\"|[^"])*"|\s*`(?:\\`|[^`])*`|[^#\r\n]+)?\s*(?:#.*)?(?:$|$)/mg;function cs(t){let e={},n=t.toString();n=n.replace(/\r\n?/mg,`
23
+ `)}),this}_outputHelpIfRequested(e){let n=this._getHelpOption();n&&e.find(s=>n.is(s))&&(this.outputHelp(),this._exit(0,"commander.helpDisplayed","(outputHelp)"))}};function cn(t){return t.map(e=>{if(!e.startsWith("--inspect"))return e;let n,o="127.0.0.1",s="9229",r;return(r=e.match(/^(--inspect(-brk)?)$/))!==null?n=r[1]:(r=e.match(/^(--inspect(-brk|-port)?)=([^:]+)$/))!==null?(n=r[1],/^\d+$/.test(r[3])?s=r[3]:o=r[3]):(r=e.match(/^(--inspect(-brk|-port)?)=([^:]+):(\d+)$/))!==null&&(n=r[1],o=r[3],s=r[4]),n&&s!=="0"?`${n}=${o}:${parseInt(s)+1}`:e})}dn.Command=rt});var Dn=x(I=>{var{Argument:hn}=_e(),{Command:it}=fn(),{CommanderError:os,InvalidArgumentError:pn}=re(),{Help:ss}=Qe(),{Option:mn}=tt();I.program=new it;I.createCommand=t=>new it(t);I.createOption=(t,e)=>new mn(t,e);I.createArgument=(t,e)=>new hn(t,e);I.Command=it;I.Option=mn;I.Argument=hn;I.Help=ss;I.CommanderError=os;I.InvalidArgumentError=pn;I.InvalidOptionArgumentError=pn});var Fn=x((li,rs)=>{rs.exports={name:"dotenv",version:"16.6.1",description:"Loads environment variables from .env file",main:"lib/main.js",types:"lib/main.d.ts",exports:{".":{types:"./lib/main.d.ts",require:"./lib/main.js",default:"./lib/main.js"},"./config":"./config.js","./config.js":"./config.js","./lib/env-options":"./lib/env-options.js","./lib/env-options.js":"./lib/env-options.js","./lib/cli-options":"./lib/cli-options.js","./lib/cli-options.js":"./lib/cli-options.js","./package.json":"./package.json"},scripts:{"dts-check":"tsc --project tests/types/tsconfig.json",lint:"standard",pretest:"npm run lint && npm run dts-check",test:"tap run --allow-empty-coverage --disable-coverage --timeout=60000","test:coverage":"tap run --show-full-coverage --timeout=60000 --coverage-report=text --coverage-report=lcov",prerelease:"npm test",release:"standard-version"},repository:{type:"git",url:"git://github.com/motdotla/dotenv.git"},homepage:"https://github.com/motdotla/dotenv#readme",funding:"https://dotenvx.com",keywords:["dotenv","env",".env","environment","variables","config","settings"],readmeFilename:"README.md",license:"BSD-2-Clause",devDependencies:{"@types/node":"^18.11.3",decache:"^4.6.2",sinon:"^14.0.1",standard:"^17.0.0","standard-version":"^9.5.0",tap:"^19.2.0",typescript:"^4.8.4"},engines:{node:">=12"},browser:{fs:!1}}});var vn=x((ci,M)=>{var at=require("fs"),ve=require("path"),is=require("os"),as=require("crypto"),us=Fn(),ut=us.version,ls=/(?:^|^)\s*(?:export\s+)?([\w.-]+)(?:\s*=\s*?|:\s+?)(\s*'(?:\\'|[^'])*'|\s*"(?:\\"|[^"])*"|\s*`(?:\\`|[^`])*`|[^#\r\n]+)?\s*(?:#.*)?(?:$|$)/mg;function cs(t){let e={},n=t.toString();n=n.replace(/\r\n?/mg,`
24
24
  `);let o;for(;(o=ls.exec(n))!=null;){let s=o[1],r=o[2]||"";r=r.trim();let a=r[0];r=r.replace(/^(['"`])([\s\S]*)\1$/mg,"$2"),a==='"'&&(r=r.replace(/\\n/g,`
25
- `),r=r.replace(/\\r/g,"\r")),e[s]=r}return e}function ds(t){t=t||{};let e=_n(t);t.path=e;let n=w.configDotenv(t);if(!n.parsed){let a=new Error(`MISSING_DATA: Cannot parse ${e} for an unknown reason`);throw a.code="MISSING_DATA",a}let o=En(t).split(","),s=o.length,r;for(let a=0;a<s;a++)try{let u=o[a].trim(),l=hs(n,u);r=w.decrypt(l.ciphertext,l.key);break}catch(u){if(a+1>=s)throw u}return w.parse(r)}function fs(t){console.log(`[dotenv@${ut}][WARN] ${t}`)}function ie(t){console.log(`[dotenv@${ut}][DEBUG] ${t}`)}function Cn(t){console.log(`[dotenv@${ut}] ${t}`)}function En(t){return t&&t.DOTENV_KEY&&t.DOTENV_KEY.length>0?t.DOTENV_KEY:process.env.DOTENV_KEY&&process.env.DOTENV_KEY.length>0?process.env.DOTENV_KEY:""}function hs(t,e){let n;try{n=new URL(e)}catch(u){if(u.code==="ERR_INVALID_URL"){let l=new Error("INVALID_DOTENV_KEY: Wrong format. Must be in valid uri format like dotenv://:key_1234@dotenvx.com/vault/.env.vault?environment=development");throw l.code="INVALID_DOTENV_KEY",l}throw u}let o=n.password;if(!o){let u=new Error("INVALID_DOTENV_KEY: Missing key part");throw u.code="INVALID_DOTENV_KEY",u}let s=n.searchParams.get("environment");if(!s){let u=new Error("INVALID_DOTENV_KEY: Missing environment part");throw u.code="INVALID_DOTENV_KEY",u}let r=`DOTENV_VAULT_${s.toUpperCase()}`,a=t.parsed[r];if(!a){let u=new Error(`NOT_FOUND_DOTENV_ENVIRONMENT: Cannot locate environment ${r} in your .env.vault file.`);throw u.code="NOT_FOUND_DOTENV_ENVIRONMENT",u}return{ciphertext:a,key:o}}function _n(t){let e=null;if(t&&t.path&&t.path.length>0)if(Array.isArray(t.path))for(let n of t.path)at.existsSync(n)&&(e=n.endsWith(".vault")?n:`${n}.vault`);else e=t.path.endsWith(".vault")?t.path:`${t.path}.vault`;else e=ve.resolve(process.cwd(),".env.vault");return at.existsSync(e)?e:null}function yn(t){return t[0]==="~"?ve.join(is.homedir(),t.slice(1)):t}function ms(t){let e=!!(t&&t.debug),n=t&&"quiet"in t?t.quiet:!0;(e||!n)&&Cn("Loading env from encrypted .env.vault");let o=w._parseVault(t),s=process.env;return t&&t.processEnv!=null&&(s=t.processEnv),w.populate(s,o,t),{parsed:o}}function ps(t){let e=ve.resolve(process.cwd(),".env"),n="utf8",o=!!(t&&t.debug),s=t&&"quiet"in t?t.quiet:!0;t&&t.encoding?n=t.encoding:o&&ie("No encoding is specified. UTF-8 is used by default");let r=[e];if(t&&t.path)if(!Array.isArray(t.path))r=[yn(t.path)];else{r=[];for(let d of t.path)r.push(yn(d))}let a,u={};for(let d of r)try{let c=w.parse(at.readFileSync(d,{encoding:n}));w.populate(u,c,t)}catch(c){o&&ie(`Failed to load ${d} ${c.message}`),a=c}let l=process.env;if(t&&t.processEnv!=null&&(l=t.processEnv),w.populate(l,u,t),o||!s){let d=Object.keys(u).length,c=[];for(let f of r)try{let h=ve.relative(process.cwd(),f);c.push(h)}catch(h){o&&ie(`Failed to load ${f} ${h.message}`),a=h}Cn(`injecting env (${d}) from ${c.join(",")}`)}return a?{parsed:u,error:a}:{parsed:u}}function Ds(t){if(En(t).length===0)return w.configDotenv(t);let e=_n(t);return e?w._configVault(t):(fs(`You set DOTENV_KEY but you are missing a .env.vault file at ${e}. Did you forget to build it?`),w.configDotenv(t))}function gs(t,e){let n=Buffer.from(e.slice(-64),"hex"),o=Buffer.from(t,"base64"),s=o.subarray(0,12),r=o.subarray(-16);o=o.subarray(12,-16);try{let a=as.createDecipheriv("aes-256-gcm",n,s);return a.setAuthTag(r),`${a.update(o)}${a.final()}`}catch(a){let u=a instanceof RangeError,l=a.message==="Invalid key length",d=a.message==="Unsupported state or unable to authenticate data";if(u||l){let c=new Error("INVALID_DOTENV_KEY: It must be 64 characters long (or more)");throw c.code="INVALID_DOTENV_KEY",c}else if(d){let c=new Error("DECRYPTION_FAILED: Please check your DOTENV_KEY");throw c.code="DECRYPTION_FAILED",c}else throw a}}function Fs(t,e,n={}){let o=!!(n&&n.debug),s=!!(n&&n.override);if(typeof e!="object"){let r=new Error("OBJECT_REQUIRED: Please check the processEnv argument being passed to populate");throw r.code="OBJECT_REQUIRED",r}for(let r of Object.keys(e))Object.prototype.hasOwnProperty.call(t,r)?(s===!0&&(t[r]=e[r]),o&&ie(s===!0?`"${r}" is already defined and WAS overwritten`:`"${r}" is already defined and was NOT overwritten`)):t[r]=e[r]}var w={configDotenv:ps,_configVault:ms,_parseVault:ds,config:Ds,decrypt:gs,parse:cs,populate:Fs};M.exports.configDotenv=w.configDotenv;M.exports._configVault=w._configVault;M.exports._parseVault=w._parseVault;M.exports.config=w.config;M.exports.decrypt=w.decrypt;M.exports.parse=w.parse;M.exports.populate=w.populate;M.exports=w});var so=x((Ki,Ys)=>{Ys.exports={dots:{interval:80,frames:["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"]},dots2:{interval:80,frames:["\u28FE","\u28FD","\u28FB","\u28BF","\u287F","\u28DF","\u28EF","\u28F7"]},dots3:{interval:80,frames:["\u280B","\u2819","\u281A","\u281E","\u2816","\u2826","\u2834","\u2832","\u2833","\u2813"]},dots4:{interval:80,frames:["\u2804","\u2806","\u2807","\u280B","\u2819","\u2838","\u2830","\u2820","\u2830","\u2838","\u2819","\u280B","\u2807","\u2806"]},dots5:{interval:80,frames:["\u280B","\u2819","\u281A","\u2812","\u2802","\u2802","\u2812","\u2832","\u2834","\u2826","\u2816","\u2812","\u2810","\u2810","\u2812","\u2813","\u280B"]},dots6:{interval:80,frames:["\u2801","\u2809","\u2819","\u281A","\u2812","\u2802","\u2802","\u2812","\u2832","\u2834","\u2824","\u2804","\u2804","\u2824","\u2834","\u2832","\u2812","\u2802","\u2802","\u2812","\u281A","\u2819","\u2809","\u2801"]},dots7:{interval:80,frames:["\u2808","\u2809","\u280B","\u2813","\u2812","\u2810","\u2810","\u2812","\u2816","\u2826","\u2824","\u2820","\u2820","\u2824","\u2826","\u2816","\u2812","\u2810","\u2810","\u2812","\u2813","\u280B","\u2809","\u2808"]},dots8:{interval:80,frames:["\u2801","\u2801","\u2809","\u2819","\u281A","\u2812","\u2802","\u2802","\u2812","\u2832","\u2834","\u2824","\u2804","\u2804","\u2824","\u2820","\u2820","\u2824","\u2826","\u2816","\u2812","\u2810","\u2810","\u2812","\u2813","\u280B","\u2809","\u2808","\u2808"]},dots9:{interval:80,frames:["\u28B9","\u28BA","\u28BC","\u28F8","\u28C7","\u2867","\u2857","\u284F"]},dots10:{interval:80,frames:["\u2884","\u2882","\u2881","\u2841","\u2848","\u2850","\u2860"]},dots11:{interval:100,frames:["\u2801","\u2802","\u2804","\u2840","\u2880","\u2820","\u2810","\u2808"]},dots12:{interval:80,frames:["\u2880\u2800","\u2840\u2800","\u2804\u2800","\u2882\u2800","\u2842\u2800","\u2805\u2800","\u2883\u2800","\u2843\u2800","\u280D\u2800","\u288B\u2800","\u284B\u2800","\u280D\u2801","\u288B\u2801","\u284B\u2801","\u280D\u2809","\u280B\u2809","\u280B\u2809","\u2809\u2819","\u2809\u2819","\u2809\u2829","\u2808\u2899","\u2808\u2859","\u2888\u2829","\u2840\u2899","\u2804\u2859","\u2882\u2829","\u2842\u2898","\u2805\u2858","\u2883\u2828","\u2843\u2890","\u280D\u2850","\u288B\u2820","\u284B\u2880","\u280D\u2841","\u288B\u2801","\u284B\u2801","\u280D\u2809","\u280B\u2809","\u280B\u2809","\u2809\u2819","\u2809\u2819","\u2809\u2829","\u2808\u2899","\u2808\u2859","\u2808\u2829","\u2800\u2899","\u2800\u2859","\u2800\u2829","\u2800\u2898","\u2800\u2858","\u2800\u2828","\u2800\u2890","\u2800\u2850","\u2800\u2820","\u2800\u2880","\u2800\u2840"]},dots13:{interval:80,frames:["\u28FC","\u28F9","\u28BB","\u283F","\u285F","\u28CF","\u28E7","\u28F6"]},dots8Bit:{interval:80,frames:["\u2800","\u2801","\u2802","\u2803","\u2804","\u2805","\u2806","\u2807","\u2840","\u2841","\u2842","\u2843","\u2844","\u2845","\u2846","\u2847","\u2808","\u2809","\u280A","\u280B","\u280C","\u280D","\u280E","\u280F","\u2848","\u2849","\u284A","\u284B","\u284C","\u284D","\u284E","\u284F","\u2810","\u2811","\u2812","\u2813","\u2814","\u2815","\u2816","\u2817","\u2850","\u2851","\u2852","\u2853","\u2854","\u2855","\u2856","\u2857","\u2818","\u2819","\u281A","\u281B","\u281C","\u281D","\u281E","\u281F","\u2858","\u2859","\u285A","\u285B","\u285C","\u285D","\u285E","\u285F","\u2820","\u2821","\u2822","\u2823","\u2824","\u2825","\u2826","\u2827","\u2860","\u2861","\u2862","\u2863","\u2864","\u2865","\u2866","\u2867","\u2828","\u2829","\u282A","\u282B","\u282C","\u282D","\u282E","\u282F","\u2868","\u2869","\u286A","\u286B","\u286C","\u286D","\u286E","\u286F","\u2830","\u2831","\u2832","\u2833","\u2834","\u2835","\u2836","\u2837","\u2870","\u2871","\u2872","\u2873","\u2874","\u2875","\u2876","\u2877","\u2838","\u2839","\u283A","\u283B","\u283C","\u283D","\u283E","\u283F","\u2878","\u2879","\u287A","\u287B","\u287C","\u287D","\u287E","\u287F","\u2880","\u2881","\u2882","\u2883","\u2884","\u2885","\u2886","\u2887","\u28C0","\u28C1","\u28C2","\u28C3","\u28C4","\u28C5","\u28C6","\u28C7","\u2888","\u2889","\u288A","\u288B","\u288C","\u288D","\u288E","\u288F","\u28C8","\u28C9","\u28CA","\u28CB","\u28CC","\u28CD","\u28CE","\u28CF","\u2890","\u2891","\u2892","\u2893","\u2894","\u2895","\u2896","\u2897","\u28D0","\u28D1","\u28D2","\u28D3","\u28D4","\u28D5","\u28D6","\u28D7","\u2898","\u2899","\u289A","\u289B","\u289C","\u289D","\u289E","\u289F","\u28D8","\u28D9","\u28DA","\u28DB","\u28DC","\u28DD","\u28DE","\u28DF","\u28A0","\u28A1","\u28A2","\u28A3","\u28A4","\u28A5","\u28A6","\u28A7","\u28E0","\u28E1","\u28E2","\u28E3","\u28E4","\u28E5","\u28E6","\u28E7","\u28A8","\u28A9","\u28AA","\u28AB","\u28AC","\u28AD","\u28AE","\u28AF","\u28E8","\u28E9","\u28EA","\u28EB","\u28EC","\u28ED","\u28EE","\u28EF","\u28B0","\u28B1","\u28B2","\u28B3","\u28B4","\u28B5","\u28B6","\u28B7","\u28F0","\u28F1","\u28F2","\u28F3","\u28F4","\u28F5","\u28F6","\u28F7","\u28B8","\u28B9","\u28BA","\u28BB","\u28BC","\u28BD","\u28BE","\u28BF","\u28F8","\u28F9","\u28FA","\u28FB","\u28FC","\u28FD","\u28FE","\u28FF"]},sand:{interval:80,frames:["\u2801","\u2802","\u2804","\u2840","\u2848","\u2850","\u2860","\u28C0","\u28C1","\u28C2","\u28C4","\u28CC","\u28D4","\u28E4","\u28E5","\u28E6","\u28EE","\u28F6","\u28F7","\u28FF","\u287F","\u283F","\u289F","\u281F","\u285B","\u281B","\u282B","\u288B","\u280B","\u280D","\u2849","\u2809","\u2811","\u2821","\u2881"]},line:{interval:130,frames:["-","\\","|","/"]},line2:{interval:100,frames:["\u2802","-","\u2013","\u2014","\u2013","-"]},pipe:{interval:100,frames:["\u2524","\u2518","\u2534","\u2514","\u251C","\u250C","\u252C","\u2510"]},simpleDots:{interval:400,frames:[". ",".. ","..."," "]},simpleDotsScrolling:{interval:200,frames:[". ",".. ","..."," .."," ."," "]},star:{interval:70,frames:["\u2736","\u2738","\u2739","\u273A","\u2739","\u2737"]},star2:{interval:80,frames:["+","x","*"]},flip:{interval:70,frames:["_","_","_","-","`","`","'","\xB4","-","_","_","_"]},hamburger:{interval:100,frames:["\u2631","\u2632","\u2634"]},growVertical:{interval:120,frames:["\u2581","\u2583","\u2584","\u2585","\u2586","\u2587","\u2586","\u2585","\u2584","\u2583"]},growHorizontal:{interval:120,frames:["\u258F","\u258E","\u258D","\u258C","\u258B","\u258A","\u2589","\u258A","\u258B","\u258C","\u258D","\u258E"]},balloon:{interval:140,frames:[" ",".","o","O","@","*"," "]},balloon2:{interval:120,frames:[".","o","O","\xB0","O","o","."]},noise:{interval:100,frames:["\u2593","\u2592","\u2591"]},bounce:{interval:120,frames:["\u2801","\u2802","\u2804","\u2802"]},boxBounce:{interval:120,frames:["\u2596","\u2598","\u259D","\u2597"]},boxBounce2:{interval:100,frames:["\u258C","\u2580","\u2590","\u2584"]},triangle:{interval:50,frames:["\u25E2","\u25E3","\u25E4","\u25E5"]},binary:{interval:80,frames:["010010","001100","100101","111010","111101","010111","101011","111000","110011","110101"]},arc:{interval:100,frames:["\u25DC","\u25E0","\u25DD","\u25DE","\u25E1","\u25DF"]},circle:{interval:120,frames:["\u25E1","\u2299","\u25E0"]},squareCorners:{interval:180,frames:["\u25F0","\u25F3","\u25F2","\u25F1"]},circleQuarters:{interval:120,frames:["\u25F4","\u25F7","\u25F6","\u25F5"]},circleHalves:{interval:50,frames:["\u25D0","\u25D3","\u25D1","\u25D2"]},squish:{interval:100,frames:["\u256B","\u256A"]},toggle:{interval:250,frames:["\u22B6","\u22B7"]},toggle2:{interval:80,frames:["\u25AB","\u25AA"]},toggle3:{interval:120,frames:["\u25A1","\u25A0"]},toggle4:{interval:100,frames:["\u25A0","\u25A1","\u25AA","\u25AB"]},toggle5:{interval:100,frames:["\u25AE","\u25AF"]},toggle6:{interval:300,frames:["\u101D","\u1040"]},toggle7:{interval:80,frames:["\u29BE","\u29BF"]},toggle8:{interval:100,frames:["\u25CD","\u25CC"]},toggle9:{interval:100,frames:["\u25C9","\u25CE"]},toggle10:{interval:100,frames:["\u3282","\u3280","\u3281"]},toggle11:{interval:50,frames:["\u29C7","\u29C6"]},toggle12:{interval:120,frames:["\u2617","\u2616"]},toggle13:{interval:80,frames:["=","*","-"]},arrow:{interval:100,frames:["\u2190","\u2196","\u2191","\u2197","\u2192","\u2198","\u2193","\u2199"]},arrow2:{interval:80,frames:["\u2B06\uFE0F ","\u2197\uFE0F ","\u27A1\uFE0F ","\u2198\uFE0F ","\u2B07\uFE0F ","\u2199\uFE0F ","\u2B05\uFE0F ","\u2196\uFE0F "]},arrow3:{interval:120,frames:["\u25B9\u25B9\u25B9\u25B9\u25B9","\u25B8\u25B9\u25B9\u25B9\u25B9","\u25B9\u25B8\u25B9\u25B9\u25B9","\u25B9\u25B9\u25B8\u25B9\u25B9","\u25B9\u25B9\u25B9\u25B8\u25B9","\u25B9\u25B9\u25B9\u25B9\u25B8"]},bouncingBar:{interval:80,frames:["[ ]","[= ]","[== ]","[=== ]","[====]","[ ===]","[ ==]","[ =]","[ ]","[ =]","[ ==]","[ ===]","[====]","[=== ]","[== ]","[= ]"]},bouncingBall:{interval:80,frames:["( \u25CF )","( \u25CF )","( \u25CF )","( \u25CF )","( \u25CF)","( \u25CF )","( \u25CF )","( \u25CF )","( \u25CF )","(\u25CF )"]},smiley:{interval:200,frames:["\u{1F604} ","\u{1F61D} "]},monkey:{interval:300,frames:["\u{1F648} ","\u{1F648} ","\u{1F649} ","\u{1F64A} "]},hearts:{interval:100,frames:["\u{1F49B} ","\u{1F499} ","\u{1F49C} ","\u{1F49A} ","\u2764\uFE0F "]},clock:{interval:100,frames:["\u{1F55B} ","\u{1F550} ","\u{1F551} ","\u{1F552} ","\u{1F553} ","\u{1F554} ","\u{1F555} ","\u{1F556} ","\u{1F557} ","\u{1F558} ","\u{1F559} ","\u{1F55A} "]},earth:{interval:180,frames:["\u{1F30D} ","\u{1F30E} ","\u{1F30F} "]},material:{interval:17,frames:["\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581","\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581","\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581","\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581","\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581","\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581","\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581","\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581","\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581","\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581","\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581","\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581","\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588","\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588","\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588","\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588","\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588","\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588","\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588","\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588","\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581","\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581","\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581","\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581","\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581","\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581","\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581"]},moon:{interval:80,frames:["\u{1F311} ","\u{1F312} ","\u{1F313} ","\u{1F314} ","\u{1F315} ","\u{1F316} ","\u{1F317} ","\u{1F318} "]},runner:{interval:140,frames:["\u{1F6B6} ","\u{1F3C3} "]},pong:{interval:80,frames:["\u2590\u2802 \u258C","\u2590\u2808 \u258C","\u2590 \u2802 \u258C","\u2590 \u2820 \u258C","\u2590 \u2840 \u258C","\u2590 \u2820 \u258C","\u2590 \u2802 \u258C","\u2590 \u2808 \u258C","\u2590 \u2802 \u258C","\u2590 \u2820 \u258C","\u2590 \u2840 \u258C","\u2590 \u2820 \u258C","\u2590 \u2802 \u258C","\u2590 \u2808 \u258C","\u2590 \u2802\u258C","\u2590 \u2820\u258C","\u2590 \u2840\u258C","\u2590 \u2820 \u258C","\u2590 \u2802 \u258C","\u2590 \u2808 \u258C","\u2590 \u2802 \u258C","\u2590 \u2820 \u258C","\u2590 \u2840 \u258C","\u2590 \u2820 \u258C","\u2590 \u2802 \u258C","\u2590 \u2808 \u258C","\u2590 \u2802 \u258C","\u2590 \u2820 \u258C","\u2590 \u2840 \u258C","\u2590\u2820 \u258C"]},shark:{interval:120,frames:["\u2590|\\____________\u258C","\u2590_|\\___________\u258C","\u2590__|\\__________\u258C","\u2590___|\\_________\u258C","\u2590____|\\________\u258C","\u2590_____|\\_______\u258C","\u2590______|\\______\u258C","\u2590_______|\\_____\u258C","\u2590________|\\____\u258C","\u2590_________|\\___\u258C","\u2590__________|\\__\u258C","\u2590___________|\\_\u258C","\u2590____________|\\\u258C","\u2590____________/|\u258C","\u2590___________/|_\u258C","\u2590__________/|__\u258C","\u2590_________/|___\u258C","\u2590________/|____\u258C","\u2590_______/|_____\u258C","\u2590______/|______\u258C","\u2590_____/|_______\u258C","\u2590____/|________\u258C","\u2590___/|_________\u258C","\u2590__/|__________\u258C","\u2590_/|___________\u258C","\u2590/|____________\u258C"]},dqpb:{interval:100,frames:["d","q","p","b"]},weather:{interval:100,frames:["\u2600\uFE0F ","\u2600\uFE0F ","\u2600\uFE0F ","\u{1F324} ","\u26C5\uFE0F ","\u{1F325} ","\u2601\uFE0F ","\u{1F327} ","\u{1F328} ","\u{1F327} ","\u{1F328} ","\u{1F327} ","\u{1F328} ","\u26C8 ","\u{1F328} ","\u{1F327} ","\u{1F328} ","\u2601\uFE0F ","\u{1F325} ","\u26C5\uFE0F ","\u{1F324} ","\u2600\uFE0F ","\u2600\uFE0F "]},christmas:{interval:400,frames:["\u{1F332}","\u{1F384}"]},grenade:{interval:80,frames:["\u060C ","\u2032 "," \xB4 "," \u203E "," \u2E0C"," \u2E0A"," |"," \u204E"," \u2055"," \u0DF4 "," \u2053"," "," "," "]},point:{interval:125,frames:["\u2219\u2219\u2219","\u25CF\u2219\u2219","\u2219\u25CF\u2219","\u2219\u2219\u25CF","\u2219\u2219\u2219"]},layer:{interval:150,frames:["-","=","\u2261"]},betaWave:{interval:80,frames:["\u03C1\u03B2\u03B2\u03B2\u03B2\u03B2\u03B2","\u03B2\u03C1\u03B2\u03B2\u03B2\u03B2\u03B2","\u03B2\u03B2\u03C1\u03B2\u03B2\u03B2\u03B2","\u03B2\u03B2\u03B2\u03C1\u03B2\u03B2\u03B2","\u03B2\u03B2\u03B2\u03B2\u03C1\u03B2\u03B2","\u03B2\u03B2\u03B2\u03B2\u03B2\u03C1\u03B2","\u03B2\u03B2\u03B2\u03B2\u03B2\u03B2\u03C1"]},fingerDance:{interval:160,frames:["\u{1F918} ","\u{1F91F} ","\u{1F596} ","\u270B ","\u{1F91A} ","\u{1F446} "]},fistBump:{interval:80,frames:["\u{1F91C}\u3000\u3000\u3000\u3000\u{1F91B} ","\u{1F91C}\u3000\u3000\u3000\u3000\u{1F91B} ","\u{1F91C}\u3000\u3000\u3000\u3000\u{1F91B} ","\u3000\u{1F91C}\u3000\u3000\u{1F91B}\u3000 ","\u3000\u3000\u{1F91C}\u{1F91B}\u3000\u3000 ","\u3000\u{1F91C}\u2728\u{1F91B}\u3000\u3000 ","\u{1F91C}\u3000\u2728\u3000\u{1F91B}\u3000 "]},soccerHeader:{interval:80,frames:[" \u{1F9D1}\u26BD\uFE0F \u{1F9D1} ","\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ","\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ","\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ","\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ","\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ","\u{1F9D1} \u26BD\uFE0F\u{1F9D1} ","\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ","\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ","\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ","\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ","\u{1F9D1} \u26BD\uFE0F \u{1F9D1} "]},mindblown:{interval:160,frames:["\u{1F610} ","\u{1F610} ","\u{1F62E} ","\u{1F62E} ","\u{1F626} ","\u{1F626} ","\u{1F627} ","\u{1F627} ","\u{1F92F} ","\u{1F4A5} ","\u2728 ","\u3000 ","\u3000 ","\u3000 "]},speaker:{interval:160,frames:["\u{1F508} ","\u{1F509} ","\u{1F50A} ","\u{1F509} "]},orangePulse:{interval:100,frames:["\u{1F538} ","\u{1F536} ","\u{1F7E0} ","\u{1F7E0} ","\u{1F536} "]},bluePulse:{interval:100,frames:["\u{1F539} ","\u{1F537} ","\u{1F535} ","\u{1F535} ","\u{1F537} "]},orangeBluePulse:{interval:100,frames:["\u{1F538} ","\u{1F536} ","\u{1F7E0} ","\u{1F7E0} ","\u{1F536} ","\u{1F539} ","\u{1F537} ","\u{1F535} ","\u{1F535} ","\u{1F537} "]},timeTravel:{interval:100,frames:["\u{1F55B} ","\u{1F55A} ","\u{1F559} ","\u{1F558} ","\u{1F557} ","\u{1F556} ","\u{1F555} ","\u{1F554} ","\u{1F553} ","\u{1F552} ","\u{1F551} ","\u{1F550} "]},aesthetic:{interval:80,frames:["\u25B0\u25B1\u25B1\u25B1\u25B1\u25B1\u25B1","\u25B0\u25B0\u25B1\u25B1\u25B1\u25B1\u25B1","\u25B0\u25B0\u25B0\u25B1\u25B1\u25B1\u25B1","\u25B0\u25B0\u25B0\u25B0\u25B1\u25B1\u25B1","\u25B0\u25B0\u25B0\u25B0\u25B0\u25B1\u25B1","\u25B0\u25B0\u25B0\u25B0\u25B0\u25B0\u25B1","\u25B0\u25B0\u25B0\u25B0\u25B0\u25B0\u25B0","\u25B0\u25B1\u25B1\u25B1\u25B1\u25B1\u25B1"]},dwarfFortress:{interval:80,frames:[" \u2588\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ","\u263A\u2588\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ","\u263A\u2588\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ","\u263A\u2593\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ","\u263A\u2593\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ","\u263A\u2592\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ","\u263A\u2592\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ","\u263A\u2591\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ","\u263A\u2591\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ","\u263A \u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2593\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2593\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2592\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2592\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2591\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2591\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A \u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2593\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2593\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2592\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2592\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2591\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2591\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A \u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2593\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2593\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2592\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2592\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2591\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2591\u2588\u2588\xA3\xA3\xA3 "," \u263A \u2588\u2588\xA3\xA3\xA3 "," \u263A\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2593\u2588\xA3\xA3\xA3 "," \u263A\u2593\u2588\xA3\xA3\xA3 "," \u263A\u2592\u2588\xA3\xA3\xA3 "," \u263A\u2592\u2588\xA3\xA3\xA3 "," \u263A\u2591\u2588\xA3\xA3\xA3 "," \u263A\u2591\u2588\xA3\xA3\xA3 "," \u263A \u2588\xA3\xA3\xA3 "," \u263A\u2588\xA3\xA3\xA3 "," \u263A\u2588\xA3\xA3\xA3 "," \u263A\u2593\xA3\xA3\xA3 "," \u263A\u2593\xA3\xA3\xA3 "," \u263A\u2592\xA3\xA3\xA3 "," \u263A\u2592\xA3\xA3\xA3 "," \u263A\u2591\xA3\xA3\xA3 "," \u263A\u2591\xA3\xA3\xA3 "," \u263A \xA3\xA3\xA3 "," \u263A\xA3\xA3\xA3 "," \u263A\xA3\xA3\xA3 "," \u263A\u2593\xA3\xA3 "," \u263A\u2593\xA3\xA3 "," \u263A\u2592\xA3\xA3 "," \u263A\u2592\xA3\xA3 "," \u263A\u2591\xA3\xA3 "," \u263A\u2591\xA3\xA3 "," \u263A \xA3\xA3 "," \u263A\xA3\xA3 "," \u263A\xA3\xA3 "," \u263A\u2593\xA3 "," \u263A\u2593\xA3 "," \u263A\u2592\xA3 "," \u263A\u2592\xA3 "," \u263A\u2591\xA3 "," \u263A\u2591\xA3 "," \u263A \xA3 "," \u263A\xA3 "," \u263A\xA3 "," \u263A\u2593 "," \u263A\u2593 "," \u263A\u2592 "," \u263A\u2592 "," \u263A\u2591 "," \u263A\u2591 "," \u263A "," \u263A &"," \u263A \u263C&"," \u263A \u263C &"," \u263A\u263C &"," \u263A\u263C & "," \u203C & "," \u263A & "," \u203C & "," \u263A & "," \u203C & "," \u263A & ","\u203C & "," & "," & "," & \u2591 "," & \u2592 "," & \u2593 "," & \xA3 "," & \u2591\xA3 "," & \u2592\xA3 "," & \u2593\xA3 "," & \xA3\xA3 "," & \u2591\xA3\xA3 "," & \u2592\xA3\xA3 ","& \u2593\xA3\xA3 ","& \xA3\xA3\xA3 "," \u2591\xA3\xA3\xA3 "," \u2592\xA3\xA3\xA3 "," \u2593\xA3\xA3\xA3 "," \u2588\xA3\xA3\xA3 "," \u2591\u2588\xA3\xA3\xA3 "," \u2592\u2588\xA3\xA3\xA3 "," \u2593\u2588\xA3\xA3\xA3 "," \u2588\u2588\xA3\xA3\xA3 "," \u2591\u2588\u2588\xA3\xA3\xA3 "," \u2592\u2588\u2588\xA3\xA3\xA3 "," \u2593\u2588\u2588\xA3\xA3\xA3 "," \u2588\u2588\u2588\xA3\xA3\xA3 "," \u2591\u2588\u2588\u2588\xA3\xA3\xA3 "," \u2592\u2588\u2588\u2588\xA3\xA3\xA3 "," \u2593\u2588\u2588\u2588\xA3\xA3\xA3 "," \u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u2591\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u2592\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u2593\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u2591\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u2592\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u2593\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u2588\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u2588\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "]}}});var Lt=x((Qi,io)=>{"use strict";var Ne=Object.assign({},so()),ro=Object.keys(Ne);Object.defineProperty(Ne,"random",{get(){let t=Math.floor(Math.random()*ro.length),e=ro[t];return Ne[e]}});io.exports=Ne});var ho=x((la,fo)=>{fo.exports=()=>/[#*0-9]\uFE0F?\u20E3|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26AA\u26B0\u26B1\u26BD\u26BE\u26C4\u26C8\u26CF\u26D1\u26E9\u26F0-\u26F5\u26F7\u26F8\u26FA\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2757\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B55\u3030\u303D\u3297\u3299]\uFE0F?|[\u261D\u270C\u270D](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?|[\u270A\u270B](?:\uD83C[\uDFFB-\uDFFF])?|[\u23E9-\u23EC\u23F0\u23F3\u25FD\u2693\u26A1\u26AB\u26C5\u26CE\u26D4\u26EA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2795-\u2797\u27B0\u27BF\u2B50]|\u26D3\uFE0F?(?:\u200D\uD83D\uDCA5)?|\u26F9(?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|\u2764\uFE0F?(?:\u200D(?:\uD83D\uDD25|\uD83E\uDE79))?|\uD83C(?:[\uDC04\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]\uFE0F?|[\uDF85\uDFC2\uDFC7](?:\uD83C[\uDFFB-\uDFFF])?|[\uDFC4\uDFCA](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDFCB\uDFCC](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF43\uDF45-\uDF4A\uDF4C-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uDDE6\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF]|\uDDE7\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF]|\uDDE8\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF7\uDDFA-\uDDFF]|\uDDE9\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF]|\uDDEA\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA]|\uDDEB\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7]|\uDDEC\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE]|\uDDED\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA]|\uDDEE\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9]|\uDDEF\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5]|\uDDF0\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF]|\uDDF1\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE]|\uDDF2\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF]|\uDDF3\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF]|\uDDF4\uD83C\uDDF2|\uDDF5\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE]|\uDDF6\uD83C\uDDE6|\uDDF7\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC]|\uDDF8\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF]|\uDDF9\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF]|\uDDFA\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF]|\uDDFB\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA]|\uDDFC\uD83C[\uDDEB\uDDF8]|\uDDFD\uD83C\uDDF0|\uDDFE\uD83C[\uDDEA\uDDF9]|\uDDFF\uD83C[\uDDE6\uDDF2\uDDFC]|\uDF44(?:\u200D\uD83D\uDFEB)?|\uDF4B(?:\u200D\uD83D\uDFE9)?|\uDFC3(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?|\uDFF3\uFE0F?(?:\u200D(?:\u26A7\uFE0F?|\uD83C\uDF08))?|\uDFF4(?:\u200D\u2620\uFE0F?|\uDB40\uDC67\uDB40\uDC62\uDB40(?:\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDC73\uDB40\uDC63\uDB40\uDC74|\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F)?)|\uD83D(?:[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3]\uFE0F?|[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC](?:\uD83C[\uDFFB-\uDFFF])?|[\uDC6E-\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4\uDEB5](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD74\uDD90](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?|[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC25\uDC27-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE41\uDE43\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED8\uDEDC-\uDEDF\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB\uDFF0]|\uDC08(?:\u200D\u2B1B)?|\uDC15(?:\u200D\uD83E\uDDBA)?|\uDC26(?:\u200D(?:\u2B1B|\uD83D\uDD25))?|\uDC3B(?:\u200D\u2744\uFE0F?)?|\uDC41\uFE0F?(?:\u200D\uD83D\uDDE8\uFE0F?)?|\uDC68(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDC68\uDC69]\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFC-\uDFFF])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFC-\uDFFF]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFD-\uDFFF]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFD\uDFFF]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFE])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFE]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?))?|\uDC69(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?[\uDC68\uDC69]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?|\uDC69\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?))|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFC-\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFC-\uDFFF]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFD-\uDFFF]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFD\uDFFF]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFB-\uDFFE])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFE]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFB-\uDFFE])))?))?|\uDD75(?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|\uDE2E(?:\u200D\uD83D\uDCA8)?|\uDE35(?:\u200D\uD83D\uDCAB)?|\uDE36(?:\u200D\uD83C\uDF2B\uFE0F?)?|\uDE42(?:\u200D[\u2194\u2195]\uFE0F?)?|\uDEB6(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?)|\uD83E(?:[\uDD0C\uDD0F\uDD18-\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5\uDEC3-\uDEC5\uDEF0\uDEF2-\uDEF8](?:\uD83C[\uDFFB-\uDFFF])?|[\uDD26\uDD35\uDD37-\uDD39\uDD3C-\uDD3E\uDDB8\uDDB9\uDDCD\uDDCF\uDDD4\uDDD6-\uDDDD](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDDDE\uDDDF](?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD0D\uDD0E\uDD10-\uDD17\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCC\uDDD0\uDDE0-\uDDFF\uDE70-\uDE7C\uDE80-\uDE8A\uDE8E-\uDEC2\uDEC6\uDEC8\uDECD-\uDEDC\uDEDF-\uDEEA\uDEEF]|\uDDCE(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?|\uDDD1(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1|\uDDD1\u200D\uD83E\uDDD2(?:\u200D\uD83E\uDDD2)?|\uDDD2(?:\u200D\uD83E\uDDD2)?))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFC-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFC-\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE])))?))?|\uDEF1(?:\uD83C(?:\uDFFB(?:\u200D\uD83E\uDEF2\uD83C[\uDFFC-\uDFFF])?|\uDFFC(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFD-\uDFFF])?|\uDFFD(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])?|\uDFFE(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFD\uDFFF])?|\uDFFF(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFE])?))?)/g});var go=x((ka,ar)=>{ar.exports={name:"@scheduler-systems/gal-cli",version:"0.1.16-beta",description:"GAL CLI - Command-line tool for managing AI agent configurations across your organization",license:"UNLICENSED",private:!1,type:"module",main:"./dist/index.cjs",bin:{gal:"./dist/index.cjs"},files:["dist/index.cjs","scripts/postinstall.cjs","scripts/preuninstall.cjs","README.md","LICENSE"],scripts:{postinstall:"node scripts/postinstall.cjs",preuninstall:"node scripts/preuninstall.cjs",dev:"tsx watch src/index.ts",build:`rm -rf dist && esbuild src/index.ts --bundle --platform=node --target=node18 --outfile=dist/index.cjs --format=cjs --define:__CLI_VERSION__=\\"$(node -p "require('./package.json').version")-local+$(git rev-parse --short HEAD)\\" --define:__DEFAULT_API_URL__=\\"http://localhost:3000\\" && chmod +x dist/index.cjs`,"build:publish":`rm -rf dist && esbuild src/index.ts --bundle --platform=node --target=node18 --minify --outfile=dist/index.cjs --format=cjs --define:__CLI_VERSION__=\\"$(node -p "require('./package.json').version")\\" --define:__DEFAULT_API_URL__=\\"\${DEFAULT_API_URL:-https://api.gal.run}\\" && { printf '%s\\n' '#!/usr/bin/env node'; cat dist/index.cjs; } > dist/temp.cjs && mv dist/temp.cjs dist/index.cjs && chmod +x dist/index.cjs`,start:"node dist/index.js",test:"vitest run --pool=forks","test:watch":"vitest","test:unit":"vitest run --pool=forks tests/unit/","test:e2e":"vitest run --pool=forks tests/e2e/","test:mutation":"stryker run","test:mutation:incremental":"stryker run --incremental","test:coverage":"vitest run --coverage","type-check":"tsc --noEmit",prepublishOnly:"npm run build:publish",clean:"rm -rf dist"},keywords:["gal","governance","ai","agent","cli","configuration","claude","cursor","windsurf","gemini","codex"],author:"Scheduler Systems",repository:{type:"git",url:"https://github.com/Scheduler-Systems/gal.git",directory:"apps/cli"},bugs:{url:"https://github.com/Scheduler-Systems/gal/issues"},homepage:"https://github.com/Scheduler-Systems/gal#readme",engines:{node:">=18.0.0"},dependencies:{"@anthropic-ai/sdk":"^0.32.1","@e2b/code-interpreter":"^1.0.4","@octokit/rest":"^21.0.2",chalk:"^5.4.1",commander:"^12.1.0",dotenv:"^16.4.7",openai:"^4.77.3",ora:"^8.1.1"},devDependencies:{"@eslint/js":"^9.39.1","@gal/types":"workspace:*","@stryker-mutator/core":"^9.4.0","@stryker-mutator/typescript-checker":"^9.4.0","@stryker-mutator/vitest-runner":"^9.4.0","@types/node":"^22.10.2","@vitest/coverage-v8":"^4.0.16",esbuild:"^0.24.0",eslint:"^9.39.2","eslint-plugin-security":"^3.0.1","eslint-plugin-sonarjs":"^3.0.5","fast-check":"^4.5.3",globals:"^16.5.0","node-pty":"^1.0.0",tsx:"^4.19.2",typescript:"^5.7.2","typescript-eslint":"^8.46.4",vitest:"^4.0.16"}}});var Hr={};Mo(Hr,{DEFAULT_API_URL:()=>ee});module.exports=Ho(Hr);var gn=b(Dn(),1),{program:Xr,createCommand:Zr,createArgument:ei,createOption:ti,CommanderError:ni,InvalidArgumentError:oi,InvalidOptionArgumentError:si,Command:B,Argument:ri,Option:ii,Help:ai}=gn.default;var To=b(vn(),1),Io=b(require("https"),1),V=require("fs"),Xt=require("path"),Bo=require("os");var An=(t=0)=>e=>`\x1B[${e+t}m`,bn=(t=0)=>e=>`\x1B[${38+t};5;${e}m`,wn=(t=0)=>(e,n,o)=>`\x1B[${38+t};2;${e};${n};${o}m`,C={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],gray:[90,39],grey:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgGray:[100,49],bgGrey:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}},di=Object.keys(C.modifier),ys=Object.keys(C.color),Cs=Object.keys(C.bgColor),fi=[...ys,...Cs];function Es(){let t=new Map;for(let[e,n]of Object.entries(C)){for(let[o,s]of Object.entries(n))C[o]={open:`\x1B[${s[0]}m`,close:`\x1B[${s[1]}m`},n[o]=C[o],t.set(s[0],s[1]);Object.defineProperty(C,e,{value:n,enumerable:!1})}return Object.defineProperty(C,"codes",{value:t,enumerable:!1}),C.color.close="\x1B[39m",C.bgColor.close="\x1B[49m",C.color.ansi=An(),C.color.ansi256=bn(),C.color.ansi16m=wn(),C.bgColor.ansi=An(10),C.bgColor.ansi256=bn(10),C.bgColor.ansi16m=wn(10),Object.defineProperties(C,{rgbToAnsi256:{value(e,n,o){return e===n&&n===o?e<8?16:e>248?231:Math.round((e-8)/247*24)+232:16+36*Math.round(e/255*5)+6*Math.round(n/255*5)+Math.round(o/255*5)},enumerable:!1},hexToRgb:{value(e){let n=/[a-f\d]{6}|[a-f\d]{3}/i.exec(e.toString(16));if(!n)return[0,0,0];let[o]=n;o.length===3&&(o=[...o].map(r=>r+r).join(""));let s=Number.parseInt(o,16);return[s>>16&255,s>>8&255,s&255]},enumerable:!1},hexToAnsi256:{value:e=>C.rgbToAnsi256(...C.hexToRgb(e)),enumerable:!1},ansi256ToAnsi:{value(e){if(e<8)return 30+e;if(e<16)return 90+(e-8);let n,o,s;if(e>=232)n=((e-232)*10+8)/255,o=n,s=n;else{e-=16;let u=e%36;n=Math.floor(e/36)/5,o=Math.floor(u/6)/5,s=u%6/5}let r=Math.max(n,o,s)*2;if(r===0)return 30;let a=30+(Math.round(s)<<2|Math.round(o)<<1|Math.round(n));return r===2&&(a+=60),a},enumerable:!1},rgbToAnsi:{value:(e,n,o)=>C.ansi256ToAnsi(C.rgbToAnsi256(e,n,o)),enumerable:!1},hexToAnsi:{value:e=>C.ansi256ToAnsi(C.hexToAnsi256(e)),enumerable:!1}}),C}var _s=Es(),P=_s;var be=b(require("node:process"),1),kn=b(require("node:os"),1),lt=b(require("node:tty"),1);function R(t,e=globalThis.Deno?globalThis.Deno.args:be.default.argv){let n=t.startsWith("-")?"":t.length===1?"-":"--",o=e.indexOf(n+t),s=e.indexOf("--");return o!==-1&&(s===-1||o<s)}var{env:E}=be.default,Ae;R("no-color")||R("no-colors")||R("color=false")||R("color=never")?Ae=0:(R("color")||R("colors")||R("color=true")||R("color=always"))&&(Ae=1);function vs(){if("FORCE_COLOR"in E)return E.FORCE_COLOR==="true"?1:E.FORCE_COLOR==="false"?0:E.FORCE_COLOR.length===0?1:Math.min(Number.parseInt(E.FORCE_COLOR,10),3)}function As(t){return t===0?!1:{level:t,hasBasic:!0,has256:t>=2,has16m:t>=3}}function bs(t,{streamIsTTY:e,sniffFlags:n=!0}={}){let o=vs();o!==void 0&&(Ae=o);let s=n?Ae:o;if(s===0)return 0;if(n){if(R("color=16m")||R("color=full")||R("color=truecolor"))return 3;if(R("color=256"))return 2}if("TF_BUILD"in E&&"AGENT_NAME"in E)return 1;if(t&&!e&&s===void 0)return 0;let r=s||0;if(E.TERM==="dumb")return r;if(be.default.platform==="win32"){let a=kn.default.release().split(".");return Number(a[0])>=10&&Number(a[2])>=10586?Number(a[2])>=14931?3:2:1}if("CI"in E)return["GITHUB_ACTIONS","GITEA_ACTIONS","CIRCLECI"].some(a=>a in E)?3:["TRAVIS","APPVEYOR","GITLAB_CI","BUILDKITE","DRONE"].some(a=>a in E)||E.CI_NAME==="codeship"?1:r;if("TEAMCITY_VERSION"in E)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(E.TEAMCITY_VERSION)?1:0;if(E.COLORTERM==="truecolor"||E.TERM==="xterm-kitty"||E.TERM==="xterm-ghostty"||E.TERM==="wezterm")return 3;if("TERM_PROGRAM"in E){let a=Number.parseInt((E.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(E.TERM_PROGRAM){case"iTerm.app":return a>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(E.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(E.TERM)||"COLORTERM"in E?1:r}function Sn(t,e={}){let n=bs(t,{streamIsTTY:t&&t.isTTY,...e});return As(n)}var ws={stdout:Sn({isTTY:lt.default.isatty(1)}),stderr:Sn({isTTY:lt.default.isatty(2)})},On=ws;function xn(t,e,n){let o=t.indexOf(e);if(o===-1)return t;let s=e.length,r=0,a="";do a+=t.slice(r,o)+e+n,r=o+s,o=t.indexOf(e,r);while(o!==-1);return a+=t.slice(r),a}function Tn(t,e,n,o){let s=0,r="";do{let a=t[o-1]==="\r";r+=t.slice(s,a?o-1:o)+e+(a?`\r
25
+ `),r=r.replace(/\\r/g,"\r")),e[s]=r}return e}function ds(t){t=t||{};let e=_n(t);t.path=e;let n=w.configDotenv(t);if(!n.parsed){let a=new Error(`MISSING_DATA: Cannot parse ${e} for an unknown reason`);throw a.code="MISSING_DATA",a}let o=En(t).split(","),s=o.length,r;for(let a=0;a<s;a++)try{let u=o[a].trim(),l=hs(n,u);r=w.decrypt(l.ciphertext,l.key);break}catch(u){if(a+1>=s)throw u}return w.parse(r)}function fs(t){console.log(`[dotenv@${ut}][WARN] ${t}`)}function ie(t){console.log(`[dotenv@${ut}][DEBUG] ${t}`)}function Cn(t){console.log(`[dotenv@${ut}] ${t}`)}function En(t){return t&&t.DOTENV_KEY&&t.DOTENV_KEY.length>0?t.DOTENV_KEY:process.env.DOTENV_KEY&&process.env.DOTENV_KEY.length>0?process.env.DOTENV_KEY:""}function hs(t,e){let n;try{n=new URL(e)}catch(u){if(u.code==="ERR_INVALID_URL"){let l=new Error("INVALID_DOTENV_KEY: Wrong format. Must be in valid uri format like dotenv://:key_1234@dotenvx.com/vault/.env.vault?environment=development");throw l.code="INVALID_DOTENV_KEY",l}throw u}let o=n.password;if(!o){let u=new Error("INVALID_DOTENV_KEY: Missing key part");throw u.code="INVALID_DOTENV_KEY",u}let s=n.searchParams.get("environment");if(!s){let u=new Error("INVALID_DOTENV_KEY: Missing environment part");throw u.code="INVALID_DOTENV_KEY",u}let r=`DOTENV_VAULT_${s.toUpperCase()}`,a=t.parsed[r];if(!a){let u=new Error(`NOT_FOUND_DOTENV_ENVIRONMENT: Cannot locate environment ${r} in your .env.vault file.`);throw u.code="NOT_FOUND_DOTENV_ENVIRONMENT",u}return{ciphertext:a,key:o}}function _n(t){let e=null;if(t&&t.path&&t.path.length>0)if(Array.isArray(t.path))for(let n of t.path)at.existsSync(n)&&(e=n.endsWith(".vault")?n:`${n}.vault`);else e=t.path.endsWith(".vault")?t.path:`${t.path}.vault`;else e=ve.resolve(process.cwd(),".env.vault");return at.existsSync(e)?e:null}function yn(t){return t[0]==="~"?ve.join(is.homedir(),t.slice(1)):t}function ps(t){let e=!!(t&&t.debug),n=t&&"quiet"in t?t.quiet:!0;(e||!n)&&Cn("Loading env from encrypted .env.vault");let o=w._parseVault(t),s=process.env;return t&&t.processEnv!=null&&(s=t.processEnv),w.populate(s,o,t),{parsed:o}}function ms(t){let e=ve.resolve(process.cwd(),".env"),n="utf8",o=!!(t&&t.debug),s=t&&"quiet"in t?t.quiet:!0;t&&t.encoding?n=t.encoding:o&&ie("No encoding is specified. UTF-8 is used by default");let r=[e];if(t&&t.path)if(!Array.isArray(t.path))r=[yn(t.path)];else{r=[];for(let d of t.path)r.push(yn(d))}let a,u={};for(let d of r)try{let c=w.parse(at.readFileSync(d,{encoding:n}));w.populate(u,c,t)}catch(c){o&&ie(`Failed to load ${d} ${c.message}`),a=c}let l=process.env;if(t&&t.processEnv!=null&&(l=t.processEnv),w.populate(l,u,t),o||!s){let d=Object.keys(u).length,c=[];for(let f of r)try{let h=ve.relative(process.cwd(),f);c.push(h)}catch(h){o&&ie(`Failed to load ${f} ${h.message}`),a=h}Cn(`injecting env (${d}) from ${c.join(",")}`)}return a?{parsed:u,error:a}:{parsed:u}}function Ds(t){if(En(t).length===0)return w.configDotenv(t);let e=_n(t);return e?w._configVault(t):(fs(`You set DOTENV_KEY but you are missing a .env.vault file at ${e}. Did you forget to build it?`),w.configDotenv(t))}function gs(t,e){let n=Buffer.from(e.slice(-64),"hex"),o=Buffer.from(t,"base64"),s=o.subarray(0,12),r=o.subarray(-16);o=o.subarray(12,-16);try{let a=as.createDecipheriv("aes-256-gcm",n,s);return a.setAuthTag(r),`${a.update(o)}${a.final()}`}catch(a){let u=a instanceof RangeError,l=a.message==="Invalid key length",d=a.message==="Unsupported state or unable to authenticate data";if(u||l){let c=new Error("INVALID_DOTENV_KEY: It must be 64 characters long (or more)");throw c.code="INVALID_DOTENV_KEY",c}else if(d){let c=new Error("DECRYPTION_FAILED: Please check your DOTENV_KEY");throw c.code="DECRYPTION_FAILED",c}else throw a}}function Fs(t,e,n={}){let o=!!(n&&n.debug),s=!!(n&&n.override);if(typeof e!="object"){let r=new Error("OBJECT_REQUIRED: Please check the processEnv argument being passed to populate");throw r.code="OBJECT_REQUIRED",r}for(let r of Object.keys(e))Object.prototype.hasOwnProperty.call(t,r)?(s===!0&&(t[r]=e[r]),o&&ie(s===!0?`"${r}" is already defined and WAS overwritten`:`"${r}" is already defined and was NOT overwritten`)):t[r]=e[r]}var w={configDotenv:ms,_configVault:ps,_parseVault:ds,config:Ds,decrypt:gs,parse:cs,populate:Fs};M.exports.configDotenv=w.configDotenv;M.exports._configVault=w._configVault;M.exports._parseVault=w._parseVault;M.exports.config=w.config;M.exports.decrypt=w.decrypt;M.exports.parse=w.parse;M.exports.populate=w.populate;M.exports=w});var so=x((Ki,Ys)=>{Ys.exports={dots:{interval:80,frames:["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"]},dots2:{interval:80,frames:["\u28FE","\u28FD","\u28FB","\u28BF","\u287F","\u28DF","\u28EF","\u28F7"]},dots3:{interval:80,frames:["\u280B","\u2819","\u281A","\u281E","\u2816","\u2826","\u2834","\u2832","\u2833","\u2813"]},dots4:{interval:80,frames:["\u2804","\u2806","\u2807","\u280B","\u2819","\u2838","\u2830","\u2820","\u2830","\u2838","\u2819","\u280B","\u2807","\u2806"]},dots5:{interval:80,frames:["\u280B","\u2819","\u281A","\u2812","\u2802","\u2802","\u2812","\u2832","\u2834","\u2826","\u2816","\u2812","\u2810","\u2810","\u2812","\u2813","\u280B"]},dots6:{interval:80,frames:["\u2801","\u2809","\u2819","\u281A","\u2812","\u2802","\u2802","\u2812","\u2832","\u2834","\u2824","\u2804","\u2804","\u2824","\u2834","\u2832","\u2812","\u2802","\u2802","\u2812","\u281A","\u2819","\u2809","\u2801"]},dots7:{interval:80,frames:["\u2808","\u2809","\u280B","\u2813","\u2812","\u2810","\u2810","\u2812","\u2816","\u2826","\u2824","\u2820","\u2820","\u2824","\u2826","\u2816","\u2812","\u2810","\u2810","\u2812","\u2813","\u280B","\u2809","\u2808"]},dots8:{interval:80,frames:["\u2801","\u2801","\u2809","\u2819","\u281A","\u2812","\u2802","\u2802","\u2812","\u2832","\u2834","\u2824","\u2804","\u2804","\u2824","\u2820","\u2820","\u2824","\u2826","\u2816","\u2812","\u2810","\u2810","\u2812","\u2813","\u280B","\u2809","\u2808","\u2808"]},dots9:{interval:80,frames:["\u28B9","\u28BA","\u28BC","\u28F8","\u28C7","\u2867","\u2857","\u284F"]},dots10:{interval:80,frames:["\u2884","\u2882","\u2881","\u2841","\u2848","\u2850","\u2860"]},dots11:{interval:100,frames:["\u2801","\u2802","\u2804","\u2840","\u2880","\u2820","\u2810","\u2808"]},dots12:{interval:80,frames:["\u2880\u2800","\u2840\u2800","\u2804\u2800","\u2882\u2800","\u2842\u2800","\u2805\u2800","\u2883\u2800","\u2843\u2800","\u280D\u2800","\u288B\u2800","\u284B\u2800","\u280D\u2801","\u288B\u2801","\u284B\u2801","\u280D\u2809","\u280B\u2809","\u280B\u2809","\u2809\u2819","\u2809\u2819","\u2809\u2829","\u2808\u2899","\u2808\u2859","\u2888\u2829","\u2840\u2899","\u2804\u2859","\u2882\u2829","\u2842\u2898","\u2805\u2858","\u2883\u2828","\u2843\u2890","\u280D\u2850","\u288B\u2820","\u284B\u2880","\u280D\u2841","\u288B\u2801","\u284B\u2801","\u280D\u2809","\u280B\u2809","\u280B\u2809","\u2809\u2819","\u2809\u2819","\u2809\u2829","\u2808\u2899","\u2808\u2859","\u2808\u2829","\u2800\u2899","\u2800\u2859","\u2800\u2829","\u2800\u2898","\u2800\u2858","\u2800\u2828","\u2800\u2890","\u2800\u2850","\u2800\u2820","\u2800\u2880","\u2800\u2840"]},dots13:{interval:80,frames:["\u28FC","\u28F9","\u28BB","\u283F","\u285F","\u28CF","\u28E7","\u28F6"]},dots8Bit:{interval:80,frames:["\u2800","\u2801","\u2802","\u2803","\u2804","\u2805","\u2806","\u2807","\u2840","\u2841","\u2842","\u2843","\u2844","\u2845","\u2846","\u2847","\u2808","\u2809","\u280A","\u280B","\u280C","\u280D","\u280E","\u280F","\u2848","\u2849","\u284A","\u284B","\u284C","\u284D","\u284E","\u284F","\u2810","\u2811","\u2812","\u2813","\u2814","\u2815","\u2816","\u2817","\u2850","\u2851","\u2852","\u2853","\u2854","\u2855","\u2856","\u2857","\u2818","\u2819","\u281A","\u281B","\u281C","\u281D","\u281E","\u281F","\u2858","\u2859","\u285A","\u285B","\u285C","\u285D","\u285E","\u285F","\u2820","\u2821","\u2822","\u2823","\u2824","\u2825","\u2826","\u2827","\u2860","\u2861","\u2862","\u2863","\u2864","\u2865","\u2866","\u2867","\u2828","\u2829","\u282A","\u282B","\u282C","\u282D","\u282E","\u282F","\u2868","\u2869","\u286A","\u286B","\u286C","\u286D","\u286E","\u286F","\u2830","\u2831","\u2832","\u2833","\u2834","\u2835","\u2836","\u2837","\u2870","\u2871","\u2872","\u2873","\u2874","\u2875","\u2876","\u2877","\u2838","\u2839","\u283A","\u283B","\u283C","\u283D","\u283E","\u283F","\u2878","\u2879","\u287A","\u287B","\u287C","\u287D","\u287E","\u287F","\u2880","\u2881","\u2882","\u2883","\u2884","\u2885","\u2886","\u2887","\u28C0","\u28C1","\u28C2","\u28C3","\u28C4","\u28C5","\u28C6","\u28C7","\u2888","\u2889","\u288A","\u288B","\u288C","\u288D","\u288E","\u288F","\u28C8","\u28C9","\u28CA","\u28CB","\u28CC","\u28CD","\u28CE","\u28CF","\u2890","\u2891","\u2892","\u2893","\u2894","\u2895","\u2896","\u2897","\u28D0","\u28D1","\u28D2","\u28D3","\u28D4","\u28D5","\u28D6","\u28D7","\u2898","\u2899","\u289A","\u289B","\u289C","\u289D","\u289E","\u289F","\u28D8","\u28D9","\u28DA","\u28DB","\u28DC","\u28DD","\u28DE","\u28DF","\u28A0","\u28A1","\u28A2","\u28A3","\u28A4","\u28A5","\u28A6","\u28A7","\u28E0","\u28E1","\u28E2","\u28E3","\u28E4","\u28E5","\u28E6","\u28E7","\u28A8","\u28A9","\u28AA","\u28AB","\u28AC","\u28AD","\u28AE","\u28AF","\u28E8","\u28E9","\u28EA","\u28EB","\u28EC","\u28ED","\u28EE","\u28EF","\u28B0","\u28B1","\u28B2","\u28B3","\u28B4","\u28B5","\u28B6","\u28B7","\u28F0","\u28F1","\u28F2","\u28F3","\u28F4","\u28F5","\u28F6","\u28F7","\u28B8","\u28B9","\u28BA","\u28BB","\u28BC","\u28BD","\u28BE","\u28BF","\u28F8","\u28F9","\u28FA","\u28FB","\u28FC","\u28FD","\u28FE","\u28FF"]},sand:{interval:80,frames:["\u2801","\u2802","\u2804","\u2840","\u2848","\u2850","\u2860","\u28C0","\u28C1","\u28C2","\u28C4","\u28CC","\u28D4","\u28E4","\u28E5","\u28E6","\u28EE","\u28F6","\u28F7","\u28FF","\u287F","\u283F","\u289F","\u281F","\u285B","\u281B","\u282B","\u288B","\u280B","\u280D","\u2849","\u2809","\u2811","\u2821","\u2881"]},line:{interval:130,frames:["-","\\","|","/"]},line2:{interval:100,frames:["\u2802","-","\u2013","\u2014","\u2013","-"]},pipe:{interval:100,frames:["\u2524","\u2518","\u2534","\u2514","\u251C","\u250C","\u252C","\u2510"]},simpleDots:{interval:400,frames:[". ",".. ","..."," "]},simpleDotsScrolling:{interval:200,frames:[". ",".. ","..."," .."," ."," "]},star:{interval:70,frames:["\u2736","\u2738","\u2739","\u273A","\u2739","\u2737"]},star2:{interval:80,frames:["+","x","*"]},flip:{interval:70,frames:["_","_","_","-","`","`","'","\xB4","-","_","_","_"]},hamburger:{interval:100,frames:["\u2631","\u2632","\u2634"]},growVertical:{interval:120,frames:["\u2581","\u2583","\u2584","\u2585","\u2586","\u2587","\u2586","\u2585","\u2584","\u2583"]},growHorizontal:{interval:120,frames:["\u258F","\u258E","\u258D","\u258C","\u258B","\u258A","\u2589","\u258A","\u258B","\u258C","\u258D","\u258E"]},balloon:{interval:140,frames:[" ",".","o","O","@","*"," "]},balloon2:{interval:120,frames:[".","o","O","\xB0","O","o","."]},noise:{interval:100,frames:["\u2593","\u2592","\u2591"]},bounce:{interval:120,frames:["\u2801","\u2802","\u2804","\u2802"]},boxBounce:{interval:120,frames:["\u2596","\u2598","\u259D","\u2597"]},boxBounce2:{interval:100,frames:["\u258C","\u2580","\u2590","\u2584"]},triangle:{interval:50,frames:["\u25E2","\u25E3","\u25E4","\u25E5"]},binary:{interval:80,frames:["010010","001100","100101","111010","111101","010111","101011","111000","110011","110101"]},arc:{interval:100,frames:["\u25DC","\u25E0","\u25DD","\u25DE","\u25E1","\u25DF"]},circle:{interval:120,frames:["\u25E1","\u2299","\u25E0"]},squareCorners:{interval:180,frames:["\u25F0","\u25F3","\u25F2","\u25F1"]},circleQuarters:{interval:120,frames:["\u25F4","\u25F7","\u25F6","\u25F5"]},circleHalves:{interval:50,frames:["\u25D0","\u25D3","\u25D1","\u25D2"]},squish:{interval:100,frames:["\u256B","\u256A"]},toggle:{interval:250,frames:["\u22B6","\u22B7"]},toggle2:{interval:80,frames:["\u25AB","\u25AA"]},toggle3:{interval:120,frames:["\u25A1","\u25A0"]},toggle4:{interval:100,frames:["\u25A0","\u25A1","\u25AA","\u25AB"]},toggle5:{interval:100,frames:["\u25AE","\u25AF"]},toggle6:{interval:300,frames:["\u101D","\u1040"]},toggle7:{interval:80,frames:["\u29BE","\u29BF"]},toggle8:{interval:100,frames:["\u25CD","\u25CC"]},toggle9:{interval:100,frames:["\u25C9","\u25CE"]},toggle10:{interval:100,frames:["\u3282","\u3280","\u3281"]},toggle11:{interval:50,frames:["\u29C7","\u29C6"]},toggle12:{interval:120,frames:["\u2617","\u2616"]},toggle13:{interval:80,frames:["=","*","-"]},arrow:{interval:100,frames:["\u2190","\u2196","\u2191","\u2197","\u2192","\u2198","\u2193","\u2199"]},arrow2:{interval:80,frames:["\u2B06\uFE0F ","\u2197\uFE0F ","\u27A1\uFE0F ","\u2198\uFE0F ","\u2B07\uFE0F ","\u2199\uFE0F ","\u2B05\uFE0F ","\u2196\uFE0F "]},arrow3:{interval:120,frames:["\u25B9\u25B9\u25B9\u25B9\u25B9","\u25B8\u25B9\u25B9\u25B9\u25B9","\u25B9\u25B8\u25B9\u25B9\u25B9","\u25B9\u25B9\u25B8\u25B9\u25B9","\u25B9\u25B9\u25B9\u25B8\u25B9","\u25B9\u25B9\u25B9\u25B9\u25B8"]},bouncingBar:{interval:80,frames:["[ ]","[= ]","[== ]","[=== ]","[====]","[ ===]","[ ==]","[ =]","[ ]","[ =]","[ ==]","[ ===]","[====]","[=== ]","[== ]","[= ]"]},bouncingBall:{interval:80,frames:["( \u25CF )","( \u25CF )","( \u25CF )","( \u25CF )","( \u25CF)","( \u25CF )","( \u25CF )","( \u25CF )","( \u25CF )","(\u25CF )"]},smiley:{interval:200,frames:["\u{1F604} ","\u{1F61D} "]},monkey:{interval:300,frames:["\u{1F648} ","\u{1F648} ","\u{1F649} ","\u{1F64A} "]},hearts:{interval:100,frames:["\u{1F49B} ","\u{1F499} ","\u{1F49C} ","\u{1F49A} ","\u2764\uFE0F "]},clock:{interval:100,frames:["\u{1F55B} ","\u{1F550} ","\u{1F551} ","\u{1F552} ","\u{1F553} ","\u{1F554} ","\u{1F555} ","\u{1F556} ","\u{1F557} ","\u{1F558} ","\u{1F559} ","\u{1F55A} "]},earth:{interval:180,frames:["\u{1F30D} ","\u{1F30E} ","\u{1F30F} "]},material:{interval:17,frames:["\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581","\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581","\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581","\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581","\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581","\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581","\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581","\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581","\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581","\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581","\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581","\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581","\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588","\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588","\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588","\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588","\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588","\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588","\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588","\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588","\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581","\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581\u2581","\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581","\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581\u2581","\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581\u2581","\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581","\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581","\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581\u2581","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581\u2581","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2581","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2588","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581","\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581\u2581"]},moon:{interval:80,frames:["\u{1F311} ","\u{1F312} ","\u{1F313} ","\u{1F314} ","\u{1F315} ","\u{1F316} ","\u{1F317} ","\u{1F318} "]},runner:{interval:140,frames:["\u{1F6B6} ","\u{1F3C3} "]},pong:{interval:80,frames:["\u2590\u2802 \u258C","\u2590\u2808 \u258C","\u2590 \u2802 \u258C","\u2590 \u2820 \u258C","\u2590 \u2840 \u258C","\u2590 \u2820 \u258C","\u2590 \u2802 \u258C","\u2590 \u2808 \u258C","\u2590 \u2802 \u258C","\u2590 \u2820 \u258C","\u2590 \u2840 \u258C","\u2590 \u2820 \u258C","\u2590 \u2802 \u258C","\u2590 \u2808 \u258C","\u2590 \u2802\u258C","\u2590 \u2820\u258C","\u2590 \u2840\u258C","\u2590 \u2820 \u258C","\u2590 \u2802 \u258C","\u2590 \u2808 \u258C","\u2590 \u2802 \u258C","\u2590 \u2820 \u258C","\u2590 \u2840 \u258C","\u2590 \u2820 \u258C","\u2590 \u2802 \u258C","\u2590 \u2808 \u258C","\u2590 \u2802 \u258C","\u2590 \u2820 \u258C","\u2590 \u2840 \u258C","\u2590\u2820 \u258C"]},shark:{interval:120,frames:["\u2590|\\____________\u258C","\u2590_|\\___________\u258C","\u2590__|\\__________\u258C","\u2590___|\\_________\u258C","\u2590____|\\________\u258C","\u2590_____|\\_______\u258C","\u2590______|\\______\u258C","\u2590_______|\\_____\u258C","\u2590________|\\____\u258C","\u2590_________|\\___\u258C","\u2590__________|\\__\u258C","\u2590___________|\\_\u258C","\u2590____________|\\\u258C","\u2590____________/|\u258C","\u2590___________/|_\u258C","\u2590__________/|__\u258C","\u2590_________/|___\u258C","\u2590________/|____\u258C","\u2590_______/|_____\u258C","\u2590______/|______\u258C","\u2590_____/|_______\u258C","\u2590____/|________\u258C","\u2590___/|_________\u258C","\u2590__/|__________\u258C","\u2590_/|___________\u258C","\u2590/|____________\u258C"]},dqpb:{interval:100,frames:["d","q","p","b"]},weather:{interval:100,frames:["\u2600\uFE0F ","\u2600\uFE0F ","\u2600\uFE0F ","\u{1F324} ","\u26C5\uFE0F ","\u{1F325} ","\u2601\uFE0F ","\u{1F327} ","\u{1F328} ","\u{1F327} ","\u{1F328} ","\u{1F327} ","\u{1F328} ","\u26C8 ","\u{1F328} ","\u{1F327} ","\u{1F328} ","\u2601\uFE0F ","\u{1F325} ","\u26C5\uFE0F ","\u{1F324} ","\u2600\uFE0F ","\u2600\uFE0F "]},christmas:{interval:400,frames:["\u{1F332}","\u{1F384}"]},grenade:{interval:80,frames:["\u060C ","\u2032 "," \xB4 "," \u203E "," \u2E0C"," \u2E0A"," |"," \u204E"," \u2055"," \u0DF4 "," \u2053"," "," "," "]},point:{interval:125,frames:["\u2219\u2219\u2219","\u25CF\u2219\u2219","\u2219\u25CF\u2219","\u2219\u2219\u25CF","\u2219\u2219\u2219"]},layer:{interval:150,frames:["-","=","\u2261"]},betaWave:{interval:80,frames:["\u03C1\u03B2\u03B2\u03B2\u03B2\u03B2\u03B2","\u03B2\u03C1\u03B2\u03B2\u03B2\u03B2\u03B2","\u03B2\u03B2\u03C1\u03B2\u03B2\u03B2\u03B2","\u03B2\u03B2\u03B2\u03C1\u03B2\u03B2\u03B2","\u03B2\u03B2\u03B2\u03B2\u03C1\u03B2\u03B2","\u03B2\u03B2\u03B2\u03B2\u03B2\u03C1\u03B2","\u03B2\u03B2\u03B2\u03B2\u03B2\u03B2\u03C1"]},fingerDance:{interval:160,frames:["\u{1F918} ","\u{1F91F} ","\u{1F596} ","\u270B ","\u{1F91A} ","\u{1F446} "]},fistBump:{interval:80,frames:["\u{1F91C}\u3000\u3000\u3000\u3000\u{1F91B} ","\u{1F91C}\u3000\u3000\u3000\u3000\u{1F91B} ","\u{1F91C}\u3000\u3000\u3000\u3000\u{1F91B} ","\u3000\u{1F91C}\u3000\u3000\u{1F91B}\u3000 ","\u3000\u3000\u{1F91C}\u{1F91B}\u3000\u3000 ","\u3000\u{1F91C}\u2728\u{1F91B}\u3000\u3000 ","\u{1F91C}\u3000\u2728\u3000\u{1F91B}\u3000 "]},soccerHeader:{interval:80,frames:[" \u{1F9D1}\u26BD\uFE0F \u{1F9D1} ","\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ","\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ","\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ","\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ","\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ","\u{1F9D1} \u26BD\uFE0F\u{1F9D1} ","\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ","\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ","\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ","\u{1F9D1} \u26BD\uFE0F \u{1F9D1} ","\u{1F9D1} \u26BD\uFE0F \u{1F9D1} "]},mindblown:{interval:160,frames:["\u{1F610} ","\u{1F610} ","\u{1F62E} ","\u{1F62E} ","\u{1F626} ","\u{1F626} ","\u{1F627} ","\u{1F627} ","\u{1F92F} ","\u{1F4A5} ","\u2728 ","\u3000 ","\u3000 ","\u3000 "]},speaker:{interval:160,frames:["\u{1F508} ","\u{1F509} ","\u{1F50A} ","\u{1F509} "]},orangePulse:{interval:100,frames:["\u{1F538} ","\u{1F536} ","\u{1F7E0} ","\u{1F7E0} ","\u{1F536} "]},bluePulse:{interval:100,frames:["\u{1F539} ","\u{1F537} ","\u{1F535} ","\u{1F535} ","\u{1F537} "]},orangeBluePulse:{interval:100,frames:["\u{1F538} ","\u{1F536} ","\u{1F7E0} ","\u{1F7E0} ","\u{1F536} ","\u{1F539} ","\u{1F537} ","\u{1F535} ","\u{1F535} ","\u{1F537} "]},timeTravel:{interval:100,frames:["\u{1F55B} ","\u{1F55A} ","\u{1F559} ","\u{1F558} ","\u{1F557} ","\u{1F556} ","\u{1F555} ","\u{1F554} ","\u{1F553} ","\u{1F552} ","\u{1F551} ","\u{1F550} "]},aesthetic:{interval:80,frames:["\u25B0\u25B1\u25B1\u25B1\u25B1\u25B1\u25B1","\u25B0\u25B0\u25B1\u25B1\u25B1\u25B1\u25B1","\u25B0\u25B0\u25B0\u25B1\u25B1\u25B1\u25B1","\u25B0\u25B0\u25B0\u25B0\u25B1\u25B1\u25B1","\u25B0\u25B0\u25B0\u25B0\u25B0\u25B1\u25B1","\u25B0\u25B0\u25B0\u25B0\u25B0\u25B0\u25B1","\u25B0\u25B0\u25B0\u25B0\u25B0\u25B0\u25B0","\u25B0\u25B1\u25B1\u25B1\u25B1\u25B1\u25B1"]},dwarfFortress:{interval:80,frames:[" \u2588\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ","\u263A\u2588\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ","\u263A\u2588\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ","\u263A\u2593\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ","\u263A\u2593\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ","\u263A\u2592\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ","\u263A\u2592\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ","\u263A\u2591\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ","\u263A\u2591\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 ","\u263A \u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2593\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2593\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2592\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2592\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2591\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2591\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A \u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2593\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2593\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2592\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2592\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2591\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2591\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A \u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2588\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2593\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2593\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2592\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2592\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2591\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2591\u2588\u2588\xA3\xA3\xA3 "," \u263A \u2588\u2588\xA3\xA3\xA3 "," \u263A\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2588\u2588\xA3\xA3\xA3 "," \u263A\u2593\u2588\xA3\xA3\xA3 "," \u263A\u2593\u2588\xA3\xA3\xA3 "," \u263A\u2592\u2588\xA3\xA3\xA3 "," \u263A\u2592\u2588\xA3\xA3\xA3 "," \u263A\u2591\u2588\xA3\xA3\xA3 "," \u263A\u2591\u2588\xA3\xA3\xA3 "," \u263A \u2588\xA3\xA3\xA3 "," \u263A\u2588\xA3\xA3\xA3 "," \u263A\u2588\xA3\xA3\xA3 "," \u263A\u2593\xA3\xA3\xA3 "," \u263A\u2593\xA3\xA3\xA3 "," \u263A\u2592\xA3\xA3\xA3 "," \u263A\u2592\xA3\xA3\xA3 "," \u263A\u2591\xA3\xA3\xA3 "," \u263A\u2591\xA3\xA3\xA3 "," \u263A \xA3\xA3\xA3 "," \u263A\xA3\xA3\xA3 "," \u263A\xA3\xA3\xA3 "," \u263A\u2593\xA3\xA3 "," \u263A\u2593\xA3\xA3 "," \u263A\u2592\xA3\xA3 "," \u263A\u2592\xA3\xA3 "," \u263A\u2591\xA3\xA3 "," \u263A\u2591\xA3\xA3 "," \u263A \xA3\xA3 "," \u263A\xA3\xA3 "," \u263A\xA3\xA3 "," \u263A\u2593\xA3 "," \u263A\u2593\xA3 "," \u263A\u2592\xA3 "," \u263A\u2592\xA3 "," \u263A\u2591\xA3 "," \u263A\u2591\xA3 "," \u263A \xA3 "," \u263A\xA3 "," \u263A\xA3 "," \u263A\u2593 "," \u263A\u2593 "," \u263A\u2592 "," \u263A\u2592 "," \u263A\u2591 "," \u263A\u2591 "," \u263A "," \u263A &"," \u263A \u263C&"," \u263A \u263C &"," \u263A\u263C &"," \u263A\u263C & "," \u203C & "," \u263A & "," \u203C & "," \u263A & "," \u203C & "," \u263A & ","\u203C & "," & "," & "," & \u2591 "," & \u2592 "," & \u2593 "," & \xA3 "," & \u2591\xA3 "," & \u2592\xA3 "," & \u2593\xA3 "," & \xA3\xA3 "," & \u2591\xA3\xA3 "," & \u2592\xA3\xA3 ","& \u2593\xA3\xA3 ","& \xA3\xA3\xA3 "," \u2591\xA3\xA3\xA3 "," \u2592\xA3\xA3\xA3 "," \u2593\xA3\xA3\xA3 "," \u2588\xA3\xA3\xA3 "," \u2591\u2588\xA3\xA3\xA3 "," \u2592\u2588\xA3\xA3\xA3 "," \u2593\u2588\xA3\xA3\xA3 "," \u2588\u2588\xA3\xA3\xA3 "," \u2591\u2588\u2588\xA3\xA3\xA3 "," \u2592\u2588\u2588\xA3\xA3\xA3 "," \u2593\u2588\u2588\xA3\xA3\xA3 "," \u2588\u2588\u2588\xA3\xA3\xA3 "," \u2591\u2588\u2588\u2588\xA3\xA3\xA3 "," \u2592\u2588\u2588\u2588\xA3\xA3\xA3 "," \u2593\u2588\u2588\u2588\xA3\xA3\xA3 "," \u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u2591\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u2592\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u2593\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u2591\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u2592\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u2593\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u2588\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "," \u2588\u2588\u2588\u2588\u2588\u2588\xA3\xA3\xA3 "]}}});var Lt=x((Qi,io)=>{"use strict";var Ne=Object.assign({},so()),ro=Object.keys(Ne);Object.defineProperty(Ne,"random",{get(){let t=Math.floor(Math.random()*ro.length),e=ro[t];return Ne[e]}});io.exports=Ne});var ho=x((la,fo)=>{fo.exports=()=>/[#*0-9]\uFE0F?\u20E3|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26AA\u26B0\u26B1\u26BD\u26BE\u26C4\u26C8\u26CF\u26D1\u26E9\u26F0-\u26F5\u26F7\u26F8\u26FA\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2757\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B55\u3030\u303D\u3297\u3299]\uFE0F?|[\u261D\u270C\u270D](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?|[\u270A\u270B](?:\uD83C[\uDFFB-\uDFFF])?|[\u23E9-\u23EC\u23F0\u23F3\u25FD\u2693\u26A1\u26AB\u26C5\u26CE\u26D4\u26EA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2795-\u2797\u27B0\u27BF\u2B50]|\u26D3\uFE0F?(?:\u200D\uD83D\uDCA5)?|\u26F9(?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|\u2764\uFE0F?(?:\u200D(?:\uD83D\uDD25|\uD83E\uDE79))?|\uD83C(?:[\uDC04\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]\uFE0F?|[\uDF85\uDFC2\uDFC7](?:\uD83C[\uDFFB-\uDFFF])?|[\uDFC4\uDFCA](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDFCB\uDFCC](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF43\uDF45-\uDF4A\uDF4C-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uDDE6\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF]|\uDDE7\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF]|\uDDE8\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF7\uDDFA-\uDDFF]|\uDDE9\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF]|\uDDEA\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA]|\uDDEB\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7]|\uDDEC\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE]|\uDDED\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA]|\uDDEE\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9]|\uDDEF\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5]|\uDDF0\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF]|\uDDF1\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE]|\uDDF2\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF]|\uDDF3\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF]|\uDDF4\uD83C\uDDF2|\uDDF5\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE]|\uDDF6\uD83C\uDDE6|\uDDF7\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC]|\uDDF8\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF]|\uDDF9\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF]|\uDDFA\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF]|\uDDFB\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA]|\uDDFC\uD83C[\uDDEB\uDDF8]|\uDDFD\uD83C\uDDF0|\uDDFE\uD83C[\uDDEA\uDDF9]|\uDDFF\uD83C[\uDDE6\uDDF2\uDDFC]|\uDF44(?:\u200D\uD83D\uDFEB)?|\uDF4B(?:\u200D\uD83D\uDFE9)?|\uDFC3(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?|\uDFF3\uFE0F?(?:\u200D(?:\u26A7\uFE0F?|\uD83C\uDF08))?|\uDFF4(?:\u200D\u2620\uFE0F?|\uDB40\uDC67\uDB40\uDC62\uDB40(?:\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDC73\uDB40\uDC63\uDB40\uDC74|\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F)?)|\uD83D(?:[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3]\uFE0F?|[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC](?:\uD83C[\uDFFB-\uDFFF])?|[\uDC6E-\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4\uDEB5](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD74\uDD90](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?|[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC25\uDC27-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE41\uDE43\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED8\uDEDC-\uDEDF\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB\uDFF0]|\uDC08(?:\u200D\u2B1B)?|\uDC15(?:\u200D\uD83E\uDDBA)?|\uDC26(?:\u200D(?:\u2B1B|\uD83D\uDD25))?|\uDC3B(?:\u200D\u2744\uFE0F?)?|\uDC41\uFE0F?(?:\u200D\uD83D\uDDE8\uFE0F?)?|\uDC68(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDC68\uDC69]\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFC-\uDFFF])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFC-\uDFFF]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFD-\uDFFF]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFD\uDFFF]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFE])|\uD83E(?:[\uDD1D\uDEEF]\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFE]|[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3])))?))?|\uDC69(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?[\uDC68\uDC69]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?|\uDC69\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?))|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFC-\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFC-\uDFFF]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFD-\uDFFF]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFD\uDFFF]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83D\uDC69\uD83C[\uDFFB-\uDFFE])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFE]|\uDEEF\u200D\uD83D\uDC69\uD83C[\uDFFB-\uDFFE])))?))?|\uDD75(?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|\uDE2E(?:\u200D\uD83D\uDCA8)?|\uDE35(?:\u200D\uD83D\uDCAB)?|\uDE36(?:\u200D\uD83C\uDF2B\uFE0F?)?|\uDE42(?:\u200D[\u2194\u2195]\uFE0F?)?|\uDEB6(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?)|\uD83E(?:[\uDD0C\uDD0F\uDD18-\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5\uDEC3-\uDEC5\uDEF0\uDEF2-\uDEF8](?:\uD83C[\uDFFB-\uDFFF])?|[\uDD26\uDD35\uDD37-\uDD39\uDD3C-\uDD3E\uDDB8\uDDB9\uDDCD\uDDCF\uDDD4\uDDD6-\uDDDD](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDDDE\uDDDF](?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD0D\uDD0E\uDD10-\uDD17\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCC\uDDD0\uDDE0-\uDDFF\uDE70-\uDE7C\uDE80-\uDE8A\uDE8E-\uDEC2\uDEC6\uDEC8\uDECD-\uDEDC\uDEDF-\uDEEA\uDEEF]|\uDDCE(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?|\uDDD1(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1|\uDDD1\u200D\uD83E\uDDD2(?:\u200D\uD83E\uDDD2)?|\uDDD2(?:\u200D\uD83E\uDDD2)?))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFC-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFC-\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC30\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE])|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3\uDE70]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF]|\uDEEF\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE])))?))?|\uDEF1(?:\uD83C(?:\uDFFB(?:\u200D\uD83E\uDEF2\uD83C[\uDFFC-\uDFFF])?|\uDFFC(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFD-\uDFFF])?|\uDFFD(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])?|\uDFFE(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFD\uDFFF])?|\uDFFF(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFE])?))?)/g});var go=x((ka,ar)=>{ar.exports={name:"@scheduler-systems/gal-cli",version:"0.1.17-alpha.pr502",description:"GAL CLI - Command-line tool for managing AI agent configurations across your organization",license:"UNLICENSED",private:!1,type:"module",main:"./dist/index.cjs",bin:{gal:"./dist/index.cjs"},files:["dist/index.cjs","scripts/postinstall.cjs","scripts/preuninstall.cjs","README.md","LICENSE"],scripts:{postinstall:"node scripts/postinstall.cjs",preuninstall:"node scripts/preuninstall.cjs",dev:"tsx watch src/index.ts",build:`rm -rf dist && esbuild src/index.ts --bundle --platform=node --target=node18 --outfile=dist/index.cjs --format=cjs --define:__CLI_VERSION__=\\"$(node -p "require('./package.json').version")-local+$(git rev-parse --short HEAD)\\" --define:__DEFAULT_API_URL__=\\"http://localhost:3000\\" && { printf '%s\\n' '#!/usr/bin/env node'; cat dist/index.cjs; } > dist/temp.cjs && mv dist/temp.cjs dist/index.cjs && chmod +x dist/index.cjs`,"build:publish":`rm -rf dist && esbuild src/index.ts --bundle --platform=node --target=node18 --minify --outfile=dist/index.cjs --format=cjs --define:__CLI_VERSION__=\\"$(node -p "require('./package.json').version")\\" --define:__DEFAULT_API_URL__=\\"\${DEFAULT_API_URL:-https://api.gal.run}\\" && { printf '%s\\n' '#!/usr/bin/env node'; cat dist/index.cjs; } > dist/temp.cjs && mv dist/temp.cjs dist/index.cjs && chmod +x dist/index.cjs`,start:"node dist/index.js",test:"vitest run --pool=forks","test:watch":"vitest","test:unit":"vitest run --pool=forks tests/unit/","test:e2e":"vitest run --pool=forks tests/e2e/","test:mutation":"stryker run","test:mutation:incremental":"stryker run --incremental","test:coverage":"vitest run --coverage","type-check":"tsc --noEmit",prepublishOnly:"npm run build:publish",clean:"rm -rf dist"},keywords:["gal","governance","ai","agent","cli","configuration","claude","cursor","windsurf","gemini","codex"],author:"Scheduler Systems",repository:{type:"git",url:"https://github.com/Scheduler-Systems/gal.git",directory:"apps/cli"},bugs:{url:"https://github.com/Scheduler-Systems/gal/issues"},homepage:"https://github.com/Scheduler-Systems/gal#readme",engines:{node:">=18.0.0"},dependencies:{"@anthropic-ai/sdk":"^0.32.1","@e2b/code-interpreter":"^1.0.4","@octokit/rest":"^21.0.2",chalk:"^5.4.1",commander:"^12.1.0",dotenv:"^16.4.7",openai:"^4.77.3",ora:"^8.1.1"},devDependencies:{"@eslint/js":"^9.39.1","@gal/types":"workspace:*","@stryker-mutator/core":"^9.4.0","@stryker-mutator/typescript-checker":"^9.4.0","@stryker-mutator/vitest-runner":"^9.4.0","@types/node":"^22.10.2","@vitest/coverage-v8":"^4.0.16",esbuild:"^0.24.0",eslint:"^9.39.2","eslint-plugin-security":"^3.0.1","eslint-plugin-sonarjs":"^3.0.5","fast-check":"^4.5.3",globals:"^16.5.0","node-pty":"^1.0.0",tsx:"^4.19.2",typescript:"^5.7.2","typescript-eslint":"^8.46.4",vitest:"^4.0.16"}}});var Hr={};Mo(Hr,{DEFAULT_API_URL:()=>ee});module.exports=Ho(Hr);var gn=b(Dn(),1),{program:Xr,createCommand:Zr,createArgument:ei,createOption:ti,CommanderError:ni,InvalidArgumentError:oi,InvalidOptionArgumentError:si,Command:B,Argument:ri,Option:ii,Help:ai}=gn.default;var To=b(vn(),1),Io=b(require("https"),1),V=require("fs"),Xt=require("path"),Bo=require("os");var An=(t=0)=>e=>`\x1B[${e+t}m`,bn=(t=0)=>e=>`\x1B[${38+t};5;${e}m`,wn=(t=0)=>(e,n,o)=>`\x1B[${38+t};2;${e};${n};${o}m`,C={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],gray:[90,39],grey:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgGray:[100,49],bgGrey:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}},di=Object.keys(C.modifier),ys=Object.keys(C.color),Cs=Object.keys(C.bgColor),fi=[...ys,...Cs];function Es(){let t=new Map;for(let[e,n]of Object.entries(C)){for(let[o,s]of Object.entries(n))C[o]={open:`\x1B[${s[0]}m`,close:`\x1B[${s[1]}m`},n[o]=C[o],t.set(s[0],s[1]);Object.defineProperty(C,e,{value:n,enumerable:!1})}return Object.defineProperty(C,"codes",{value:t,enumerable:!1}),C.color.close="\x1B[39m",C.bgColor.close="\x1B[49m",C.color.ansi=An(),C.color.ansi256=bn(),C.color.ansi16m=wn(),C.bgColor.ansi=An(10),C.bgColor.ansi256=bn(10),C.bgColor.ansi16m=wn(10),Object.defineProperties(C,{rgbToAnsi256:{value(e,n,o){return e===n&&n===o?e<8?16:e>248?231:Math.round((e-8)/247*24)+232:16+36*Math.round(e/255*5)+6*Math.round(n/255*5)+Math.round(o/255*5)},enumerable:!1},hexToRgb:{value(e){let n=/[a-f\d]{6}|[a-f\d]{3}/i.exec(e.toString(16));if(!n)return[0,0,0];let[o]=n;o.length===3&&(o=[...o].map(r=>r+r).join(""));let s=Number.parseInt(o,16);return[s>>16&255,s>>8&255,s&255]},enumerable:!1},hexToAnsi256:{value:e=>C.rgbToAnsi256(...C.hexToRgb(e)),enumerable:!1},ansi256ToAnsi:{value(e){if(e<8)return 30+e;if(e<16)return 90+(e-8);let n,o,s;if(e>=232)n=((e-232)*10+8)/255,o=n,s=n;else{e-=16;let u=e%36;n=Math.floor(e/36)/5,o=Math.floor(u/6)/5,s=u%6/5}let r=Math.max(n,o,s)*2;if(r===0)return 30;let a=30+(Math.round(s)<<2|Math.round(o)<<1|Math.round(n));return r===2&&(a+=60),a},enumerable:!1},rgbToAnsi:{value:(e,n,o)=>C.ansi256ToAnsi(C.rgbToAnsi256(e,n,o)),enumerable:!1},hexToAnsi:{value:e=>C.ansi256ToAnsi(C.hexToAnsi256(e)),enumerable:!1}}),C}var _s=Es(),P=_s;var be=b(require("node:process"),1),kn=b(require("node:os"),1),lt=b(require("node:tty"),1);function R(t,e=globalThis.Deno?globalThis.Deno.args:be.default.argv){let n=t.startsWith("-")?"":t.length===1?"-":"--",o=e.indexOf(n+t),s=e.indexOf("--");return o!==-1&&(s===-1||o<s)}var{env:E}=be.default,Ae;R("no-color")||R("no-colors")||R("color=false")||R("color=never")?Ae=0:(R("color")||R("colors")||R("color=true")||R("color=always"))&&(Ae=1);function vs(){if("FORCE_COLOR"in E)return E.FORCE_COLOR==="true"?1:E.FORCE_COLOR==="false"?0:E.FORCE_COLOR.length===0?1:Math.min(Number.parseInt(E.FORCE_COLOR,10),3)}function As(t){return t===0?!1:{level:t,hasBasic:!0,has256:t>=2,has16m:t>=3}}function bs(t,{streamIsTTY:e,sniffFlags:n=!0}={}){let o=vs();o!==void 0&&(Ae=o);let s=n?Ae:o;if(s===0)return 0;if(n){if(R("color=16m")||R("color=full")||R("color=truecolor"))return 3;if(R("color=256"))return 2}if("TF_BUILD"in E&&"AGENT_NAME"in E)return 1;if(t&&!e&&s===void 0)return 0;let r=s||0;if(E.TERM==="dumb")return r;if(be.default.platform==="win32"){let a=kn.default.release().split(".");return Number(a[0])>=10&&Number(a[2])>=10586?Number(a[2])>=14931?3:2:1}if("CI"in E)return["GITHUB_ACTIONS","GITEA_ACTIONS","CIRCLECI"].some(a=>a in E)?3:["TRAVIS","APPVEYOR","GITLAB_CI","BUILDKITE","DRONE"].some(a=>a in E)||E.CI_NAME==="codeship"?1:r;if("TEAMCITY_VERSION"in E)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(E.TEAMCITY_VERSION)?1:0;if(E.COLORTERM==="truecolor"||E.TERM==="xterm-kitty"||E.TERM==="xterm-ghostty"||E.TERM==="wezterm")return 3;if("TERM_PROGRAM"in E){let a=Number.parseInt((E.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(E.TERM_PROGRAM){case"iTerm.app":return a>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(E.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(E.TERM)||"COLORTERM"in E?1:r}function Sn(t,e={}){let n=bs(t,{streamIsTTY:t&&t.isTTY,...e});return As(n)}var ws={stdout:Sn({isTTY:lt.default.isatty(1)}),stderr:Sn({isTTY:lt.default.isatty(2)})},On=ws;function xn(t,e,n){let o=t.indexOf(e);if(o===-1)return t;let s=e.length,r=0,a="";do a+=t.slice(r,o)+e+n,r=o+s,o=t.indexOf(e,r);while(o!==-1);return a+=t.slice(r),a}function Tn(t,e,n,o){let s=0,r="";do{let a=t[o-1]==="\r";r+=t.slice(s,a?o-1:o)+e+(a?`\r
26
26
  `:`
27
27
  `)+n,s=o+1,o=t.indexOf(`
28
28
  `,s)}while(o!==-1);return r+=t.slice(s),r}var{stdout:In,stderr:Bn}=On,ct=Symbol("GENERATOR"),K=Symbol("STYLER"),ae=Symbol("IS_EMPTY"),Rn=["ansi","ansi","ansi256","ansi16m"],Q=Object.create(null),Ss=(t,e={})=>{if(e.level&&!(Number.isInteger(e.level)&&e.level>=0&&e.level<=3))throw new Error("The `level` option should be an integer from 0 to 3");let n=In?In.level:0;t.level=e.level===void 0?n:e.level};var ks=t=>{let e=(...n)=>n.join(" ");return Ss(e,t),Object.setPrototypeOf(e,ue.prototype),e};function ue(t){return ks(t)}Object.setPrototypeOf(ue.prototype,Function.prototype);for(let[t,e]of Object.entries(P))Q[t]={get(){let n=we(this,ft(e.open,e.close,this[K]),this[ae]);return Object.defineProperty(this,t,{value:n}),n}};Q.visible={get(){let t=we(this,this[K],!0);return Object.defineProperty(this,"visible",{value:t}),t}};var dt=(t,e,n,...o)=>t==="rgb"?e==="ansi16m"?P[n].ansi16m(...o):e==="ansi256"?P[n].ansi256(P.rgbToAnsi256(...o)):P[n].ansi(P.rgbToAnsi(...o)):t==="hex"?dt("rgb",e,n,...P.hexToRgb(...o)):P[n][t](...o),Os=["rgb","hex","ansi256"];for(let t of Os){Q[t]={get(){let{level:n}=this;return function(...o){let s=ft(dt(t,Rn[n],"color",...o),P.color.close,this[K]);return we(this,s,this[ae])}}};let e="bg"+t[0].toUpperCase()+t.slice(1);Q[e]={get(){let{level:n}=this;return function(...o){let s=ft(dt(t,Rn[n],"bgColor",...o),P.bgColor.close,this[K]);return we(this,s,this[ae])}}}}var xs=Object.defineProperties(()=>{},{...Q,level:{enumerable:!0,get(){return this[ct].level},set(t){this[ct].level=t}}}),ft=(t,e,n)=>{let o,s;return n===void 0?(o=t,s=e):(o=n.openAll+t,s=e+n.closeAll),{open:t,close:e,openAll:o,closeAll:s,parent:n}},we=(t,e,n)=>{let o=(...s)=>Ts(o,s.length===1?""+s[0]:s.join(" "));return Object.setPrototypeOf(o,xs),o[ct]=t,o[K]=e,o[ae]=n,o},Ts=(t,e)=>{if(t.level<=0||!e)return t[ae]?"":e;let n=t[K];if(n===void 0)return e;let{openAll:o,closeAll:s}=n;if(e.includes("\x1B"))for(;n!==void 0;)e=xn(e,n.close,n.open),n=n.parent;let r=e.indexOf(`
29
- `);return r!==-1&&(e=Tn(e,s,o,r)),o+e+s};Object.defineProperties(ue.prototype,Q);var Is=ue(),yi=ue({level:Bn?Bn.level:0});var i=Is;var zn=require("crypto"),Yn=b(require("os"),1);var N=require("fs"),Pn=require("os"),X=require("path"),Nn=require("url"),Rs={},ht=(0,X.join)((0,Pn.homedir)(),".gal"),Se=(0,X.join)(ht,"config.json"),Bs={development:"http://localhost:3000",staging:"https://gal-api-wug5dzqj2a-uc.a.run.app",production:"https://api.gal.run"};function Ln(){let t=process.env.GAL_ENV?.toLowerCase();if(t==="development"||t==="dev"||t==="local")return"development";if(t==="staging"||t==="stg"||t==="beta")return"staging";if(t==="production"||t==="prod")return"production";if(process.argv[1]?.includes("tsx")||process.argv[1]?.includes("ts-node")||process.argv[1]?.endsWith(".ts")||process.env.npm_lifecycle_event==="dev"||process.env.NODE_ENV==="development")return"development";try{let n="0.1.16-beta";if(n&&(n.includes("-beta")||n.includes("-rc")||n.includes("-alpha")))return"staging";if(!n||n==="0.0.0-dev"){let o=(0,Nn.fileURLToPath)(Rs.url),s=(0,X.dirname)(o),r=(0,X.join)(s,"..","package.json");if((0,N.existsSync)(r)){let u=JSON.parse((0,N.readFileSync)(r,"utf-8")).version||"";if(u.includes("-beta")||u.includes("-rc")||u.includes("-alpha"))return"staging"}}}catch{}return"production"}var y=class{static getEnvironment(){return Ln()}static load(){let e=Ln(),n=Bs[e];if(!(0,N.existsSync)(Se))return{apiUrl:n};try{let o=(0,N.readFileSync)(Se,"utf-8"),s=JSON.parse(o);return s.apiUrl||(s.apiUrl=n),e!=="development"&&s.apiUrl.includes("localhost")&&(s.apiUrl=n),s}catch(o){return console.error("Error loading config:",o),{apiUrl:n}}}static save(e){(0,N.existsSync)(ht)||(0,N.mkdirSync)(ht,{recursive:!0}),(0,N.writeFileSync)(Se,JSON.stringify(e,null,2),"utf-8")}static set(e,n){let o=this.load();o[e]=n,this.save(o)}static get(e){return this.load()[e]}static getConfigPath(){return Se}};var G=require("fs"),pt=require("path"),$n=require("os"),jn=require("crypto"),mt=(0,pt.join)((0,$n.homedir)(),".gal"),ke=(0,pt.join)(mt,"installation-id");function Gn(){try{if((0,G.existsSync)(ke)){let e=(0,G.readFileSync)(ke,"utf-8").trim();if(e&&/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(e))return e}}catch{}let t=(0,jn.randomUUID)();try{(0,G.existsSync)(mt)||(0,G.mkdirSync)(mt,{recursive:!0}),(0,G.writeFileSync)(ke,t,"utf-8")}catch{}return t}function Un(){return!(0,G.existsSync)(ke)}var O=require("fs"),Te=require("path"),Hn=require("os"),Oe=(0,Te.join)((0,Hn.homedir)(),".gal"),le=(0,Te.join)(Oe,"telemetry-queue.json"),Dt=(0,Te.join)(Oe,"telemetry-pending-events.json"),Mn=100,Ls=7,Ps=Ls*24*60*60*1e3,xe=class{queue=[];flushCallback=null;constructor(){this.loadOfflineQueue(),this.loadPendingEvents()}setFlushCallback(e){this.flushCallback=e}async addEvent(e){let n={event:e,queuedAt:Date.now()};this.queue.push(n),this.queue.length>=Mn&&await this.flush()}async flush(){if(this.queue.length===0)return;if(!this.flushCallback){this.saveOfflineQueue();return}if(this.pruneExpiredEvents(),this.queue.length===0)return;let e=this.queue.slice(0,Mn),n=e.map(o=>o.event);try{await this.flushCallback(n)?(this.queue=this.queue.slice(e.length),this.queue.length>0?this.saveOfflineQueue():this.clearOfflineQueue()):this.saveOfflineQueue()}catch{this.saveOfflineQueue()}}getQueueLength(){return this.queue.length}loadOfflineQueue(){try{if((0,O.existsSync)(le)){let e=(0,O.readFileSync)(le,"utf-8"),n=JSON.parse(e);Array.isArray(n)&&(this.queue=n.map(o=>"event"in o&&"queuedAt"in o?o:{event:this.upgradeOldEvent(o),queuedAt:o.queuedAt||Date.now()}),this.pruneExpiredEvents())}}catch{}}upgradeOldEvent(e){let n=e.payload||{};return{id:e.id||"",timestamp:e.timestamp||new Date().toISOString(),severity:n.success===!1?"ERROR":"INFO",resource:{"service.name":"gal-cli","service.version":n.cliVersion||"unknown","host.os":n.platform||"linux","host.arch":"x64","process.runtime.version":n.nodeVersion},eventType:e.eventType||"cli_command",attributes:{command:n.command??null,success:n.success??null,error_type:n.errorType??null,duration_ms:n.durationMs??null,notification_type:n.notificationType??null,rate_limit_hit:n.rateLimitHit??null,sync_age_hours:n.syncAgeHours??null,files_synced:n.filesTracked??null},installationId:e.installationId||""}}loadPendingEvents(){try{if((0,O.existsSync)(Dt)){let e=(0,O.readFileSync)(Dt,"utf-8"),n=JSON.parse(e);if(Array.isArray(n))for(let o of n){let s,r;"event"in o?(s=o.event,r=o.queuedAt||Date.now()):(s=this.upgradeOldEvent(o),r=o.queuedAt||Date.now()),this.queue.push({event:s,queuedAt:r})}(0,O.writeFileSync)(Dt,"[]","utf-8")}}catch{}}saveOfflineQueue(){try{(0,O.existsSync)(Oe)||(0,O.mkdirSync)(Oe,{recursive:!0}),(0,O.writeFileSync)(le,JSON.stringify(this.queue),"utf-8")}catch{}}clearOfflineQueue(){try{(0,O.existsSync)(le)&&(0,O.writeFileSync)(le,"[]","utf-8")}catch{}}pruneExpiredEvents(){let e=Date.now();this.queue=this.queue.filter(n=>e-n.queuedAt<Ps)}};var Ns="v2",Ie=class{baseUrl;constructor(e){this.baseUrl=e}async sendEvents(e){if(e.length===0)return!0;try{let n=new AbortController,o=setTimeout(()=>n.abort(),5e3),s=await fetch(`${this.baseUrl}/telemetry/events`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({events:e,schemaVersion:Ns}),signal:n.signal});return clearTimeout(o),s.ok?(await s.json()).accepted===!0:s.status===202}catch{return!1}}async sendFeedback(e,n){try{let o=new AbortController,s=setTimeout(()=>o.abort(),5e3),r={"Content-Type":"application/json"};n&&(r.Authorization=`Bearer ${n}`);let a=await fetch(`${this.baseUrl}/telemetry/feedback`,{method:"POST",headers:r,body:JSON.stringify(e),signal:o.signal});return clearTimeout(s),a.ok?(await a.json()).accepted===!0:a.status===202}catch{return!1}}setBaseUrl(e){this.baseUrl=e}};var gt=b(require("readline"),1);var Vn=0;function Ft(){Vn++}async function ce(t,e){if(!Et()||!process.stdin.isTTY||!process.stdout.isTTY||!qn("error"))return;let n=gt.createInterface({input:process.stdin,output:process.stdout}),o=s=>new Promise(r=>{n.question(s,r)});try{console.log(),console.log(i.yellow("\u2501".repeat(50))),console.log(i.yellow(" Help us improve GAL CLI")),console.log(i.yellow("\u2501".repeat(50))),console.log();let s=await o(i.dim("Would you like to report this error? (y/N): "));if(s.toLowerCase()!=="y"&&s.toLowerCase()!=="yes"){n.close();return}let r=await o(i.dim("Any additional context? (press Enter to skip): "));n.close(),await Ct(1,r||`Error in ${t}: ${e.message}`,{command:t,errorType:e.name,errorMessage:e.message.substring(0,200)})&&console.log(i.green("\u2713 Thanks for your feedback!")),Wn("error")}catch{n.close()}}async function yt(){if(!Et()||!process.stdin.isTTY||!process.stdout.isTTY||Vn<10||!qn("session"))return;let t=gt.createInterface({input:process.stdin,output:process.stdout}),e=n=>new Promise(o=>{t.question(n,o)});try{console.log(),console.log(i.blue("\u2501".repeat(50))),console.log(i.blue(" Quick feedback (1 question)")),console.log(i.blue("\u2501".repeat(50))),console.log();let n=await e(i.dim("How would you rate GAL CLI? (1-5, or press Enter to skip): "));if(!n){t.close();return}let o=parseInt(n,10);if(isNaN(o)||o<1||o>5){console.log(i.dim("Invalid rating, skipping...")),t.close();return}let s;o<=3&&(s=await e(i.dim("What could we improve? (press Enter to skip): "))),t.close(),await Ct(o,s||void 0,{command:"session_feedback"})&&console.log(i.green("\u2713 Thanks for your feedback!")),Wn("session")}catch{t.close()}}function qn(t){try{let e=y.load(),n=Date.now(),o=24*60*60*1e3,s=7*o;if(t==="error"){let r=e.lastErrorFeedback||0;return n-r>o}else{let r=e.lastSessionFeedback||0;return n-r>s}}catch{return!0}}function Wn(t){try{let e=t==="error"?"lastErrorFeedback":"lastSessionFeedback";y.set(e,Date.now())}catch{}}var Kn="0.1.16-beta",q=null,Jn=!1;function vt(){let t=process.env.GAL_TELEMETRY?.toLowerCase();if(t==="false"||t==="0"||t==="no"||t==="off")return!0;try{if(y.load().telemetry===!1)return!0}catch{}return!1}function $s(){return{"service.name":"gal-cli","service.version":Kn,"host.os":process.platform,"host.arch":Yn.default.arch(),"process.runtime.version":process.version}}var _t=class{queue;client;installationId;resource;exitHandlersRegistered=!1;constructor(e){this.installationId=Gn(),this.resource=$s(),this.queue=new xe,this.client=new Ie(e),this.queue.setFlushCallback(n=>this.client.sendEvents(n)),this.registerExitHandlers()}async trackEvent(e,n,o="INFO"){let s={id:(0,zn.randomUUID)(),timestamp:new Date().toISOString(),severity:o,resource:this.resource,eventType:e,attributes:n,installationId:this.installationId};await this.queue.addEvent(s)}async flush(){await this.queue.flush()}async sendFeedback(e,n,o){let s={installationId:this.installationId,rating:e,comment:n,context:{...o,cliVersion:Kn,platform:process.platform}},r=y.load();return this.client.sendFeedback(s,r.authToken)}registerExitHandlers(){if(this.exitHandlersRegistered)return;let e=async()=>{await this.flush()};process.on("beforeExit",e),process.on("SIGINT",async()=>{await e(),process.exit(130)}),process.on("SIGTERM",async()=>{await e(),process.exit(143)}),this.exitHandlersRegistered=!0}};function Qn(){if(Jn||(Jn=!0,vt()))return;let e=y.load().apiUrl||"https://api.gal.run";q=new _t(e)}function Xn(){if(!(vt()||y.load().telemetryNoticeShown)){if(!Un()){y.set("telemetryNoticeShown","true");return}console.log(i.blue("\u2501".repeat(60))),console.log(i.blue.bold(" GAL CLI Telemetry")),console.log(i.blue("\u2501".repeat(60))),console.log(),console.log(" GAL collects anonymous usage data to improve the CLI."),console.log(" This helps us diagnose issues and understand which"),console.log(" features are most valuable to developers."),console.log(),console.log(i.dim(" No personal information or code is collected.")),console.log(),console.log(" To opt out:"),console.log(i.cyan(" gal config set telemetry false")),console.log(" Or set environment variable:"),console.log(i.cyan(" export GAL_TELEMETRY=false")),console.log(),console.log(i.blue("\u2501".repeat(60))),console.log(),y.set("telemetryNoticeShown","true")}}function At(t,e){q&&q.trackEvent("auth_login",{success:t,error_type:e?e.name:null,auth_method:"github_oauth"},t?"INFO":"ERROR")}function bt(t,e,n,o){q&&q.trackEvent("sync_pull",{files_synced:t,success:e,sync_age_hours:n??null,config_version:o??null},e?"INFO":"ERROR")}async function Ct(t,e,n){return q?q.sendFeedback(t,e,n):!1}function Et(){return!vt()&&q!==null}var me=b(require("node:process"),1);var Bt=b(require("node:process"),1);var de=b(require("node:process"),1);var js=(t,e,n,o)=>{if(n==="length"||n==="prototype"||n==="arguments"||n==="caller")return;let s=Object.getOwnPropertyDescriptor(t,n),r=Object.getOwnPropertyDescriptor(e,n);!Gs(s,r)&&o||Object.defineProperty(t,n,r)},Gs=function(t,e){return t===void 0||t.configurable||t.writable===e.writable&&t.enumerable===e.enumerable&&t.configurable===e.configurable&&(t.writable||t.value===e.value)},Us=(t,e)=>{let n=Object.getPrototypeOf(e);n!==Object.getPrototypeOf(t)&&Object.setPrototypeOf(t,n)},Ms=(t,e)=>`/* Wrapped ${t}*/
30
- ${e}`,Hs=Object.getOwnPropertyDescriptor(Function.prototype,"toString"),Vs=Object.getOwnPropertyDescriptor(Function.prototype.toString,"name"),qs=(t,e,n)=>{let o=n===""?"":`with ${n.trim()}() `,s=Ms.bind(null,o,e.toString());Object.defineProperty(s,"name",Vs);let{writable:r,enumerable:a,configurable:u}=Hs;Object.defineProperty(t,"toString",{value:s,writable:r,enumerable:a,configurable:u})};function wt(t,e,{ignoreNonConfigurable:n=!1}={}){let{name:o}=t;for(let s of Reflect.ownKeys(e))js(t,e,s,n);return Us(t,e),qs(t,e,o),t}var Be=new WeakMap,Zn=(t,e={})=>{if(typeof t!="function")throw new TypeError("Expected a function");let n,o=0,s=t.displayName||t.name||"<anonymous>",r=function(...a){if(Be.set(r,++o),o===1)n=t.apply(this,a),t=void 0;else if(e.throw===!0)throw new Error(`Function \`${s}\` can only be called once`);return n};return wt(r,t),Be.set(r,o),r};Zn.callCount=t=>{if(!Be.has(t))throw new Error(`The given function \`${t.name}\` is not wrapped by the \`onetime\` package`);return Be.get(t)};var eo=Zn;var W=[];W.push("SIGHUP","SIGINT","SIGTERM");process.platform!=="win32"&&W.push("SIGALRM","SIGABRT","SIGVTALRM","SIGXCPU","SIGXFSZ","SIGUSR2","SIGTRAP","SIGSYS","SIGQUIT","SIGIOT");process.platform==="linux"&&W.push("SIGIO","SIGPOLL","SIGPWR","SIGSTKFLT");var Re=t=>!!t&&typeof t=="object"&&typeof t.removeListener=="function"&&typeof t.emit=="function"&&typeof t.reallyExit=="function"&&typeof t.listeners=="function"&&typeof t.kill=="function"&&typeof t.pid=="number"&&typeof t.on=="function",St=Symbol.for("signal-exit emitter"),kt=globalThis,Ws=Object.defineProperty.bind(Object),Ot=class{emitted={afterExit:!1,exit:!1};listeners={afterExit:[],exit:[]};count=0;id=Math.random();constructor(){if(kt[St])return kt[St];Ws(kt,St,{value:this,writable:!1,enumerable:!1,configurable:!1})}on(e,n){this.listeners[e].push(n)}removeListener(e,n){let o=this.listeners[e],s=o.indexOf(n);s!==-1&&(s===0&&o.length===1?o.length=0:o.splice(s,1))}emit(e,n,o){if(this.emitted[e])return!1;this.emitted[e]=!0;let s=!1;for(let r of this.listeners[e])s=r(n,o)===!0||s;return e==="exit"&&(s=this.emit("afterExit",n,o)||s),s}},Le=class{},Js=t=>({onExit(e,n){return t.onExit(e,n)},load(){return t.load()},unload(){return t.unload()}}),xt=class extends Le{onExit(){return()=>{}}load(){}unload(){}},Tt=class extends Le{#i=It.platform==="win32"?"SIGINT":"SIGHUP";#n=new Ot;#e;#s;#f;#t={};#r=!1;constructor(e){super(),this.#e=e,this.#t={};for(let n of W)this.#t[n]=()=>{let o=this.#e.listeners(n),{count:s}=this.#n,r=e;if(typeof r.__signal_exit_emitter__=="object"&&typeof r.__signal_exit_emitter__.count=="number"&&(s+=r.__signal_exit_emitter__.count),o.length===s){this.unload();let a=this.#n.emit("exit",null,n),u=n==="SIGHUP"?this.#i:n;a||e.kill(e.pid,u)}};this.#f=e.reallyExit,this.#s=e.emit}onExit(e,n){if(!Re(this.#e))return()=>{};this.#r===!1&&this.load();let o=n?.alwaysLast?"afterExit":"exit";return this.#n.on(o,e),()=>{this.#n.removeListener(o,e),this.#n.listeners.exit.length===0&&this.#n.listeners.afterExit.length===0&&this.unload()}}load(){if(!this.#r){this.#r=!0,this.#n.count+=1;for(let e of W)try{let n=this.#t[e];n&&this.#e.on(e,n)}catch{}this.#e.emit=(e,...n)=>this.#h(e,...n),this.#e.reallyExit=e=>this.#o(e)}}unload(){this.#r&&(this.#r=!1,W.forEach(e=>{let n=this.#t[e];if(!n)throw new Error("Listener not defined for signal: "+e);try{this.#e.removeListener(e,n)}catch{}}),this.#e.emit=this.#s,this.#e.reallyExit=this.#f,this.#n.count-=1)}#o(e){return Re(this.#e)?(this.#e.exitCode=e||0,this.#n.emit("exit",this.#e.exitCode,null),this.#f.call(this.#e,this.#e.exitCode)):0}#h(e,...n){let o=this.#s;if(e==="exit"&&Re(this.#e)){typeof n[0]=="number"&&(this.#e.exitCode=n[0]);let s=o.call(this.#e,e,...n);return this.#n.emit("exit",this.#e.exitCode,null),s}else return o.call(this.#e,e,...n)}},It=globalThis.process,{onExit:to,load:Mi,unload:Hi}=Js(Re(It)?new Tt(It):new xt);var no=de.default.stderr.isTTY?de.default.stderr:de.default.stdout.isTTY?de.default.stdout:void 0,zs=no?eo(()=>{to(()=>{no.write("\x1B[?25h")},{alwaysLast:!0})}):()=>{},oo=zs;var Pe=!1,Z={};Z.show=(t=Bt.default.stderr)=>{t.isTTY&&(Pe=!1,t.write("\x1B[?25h"))};Z.hide=(t=Bt.default.stderr)=>{t.isTTY&&(oo(),Pe=!0,t.write("\x1B[?25l"))};Z.toggle=(t,e)=>{t!==void 0&&(Pe=t),Pe?Z.show(e):Z.hide(e)};var Rt=Z;var pe=b(Lt(),1);var L=b(require("node:process"),1);function Pt(){return L.default.platform!=="win32"?L.default.env.TERM!=="linux":!!L.default.env.CI||!!L.default.env.WT_SESSION||!!L.default.env.TERMINUS_SUBLIME||L.default.env.ConEmuTask==="{cmd::Cmder}"||L.default.env.TERM_PROGRAM==="Terminus-Sublime"||L.default.env.TERM_PROGRAM==="vscode"||L.default.env.TERM==="xterm-256color"||L.default.env.TERM==="alacritty"||L.default.env.TERMINAL_EMULATOR==="JetBrains-JediTerm"}var Ks={info:i.blue("\u2139"),success:i.green("\u2714"),warning:i.yellow("\u26A0"),error:i.red("\u2716")},Qs={info:i.blue("i"),success:i.green("\u221A"),warning:i.yellow("\u203C"),error:i.red("\xD7")},Xs=Pt()?Ks:Qs,fe=Xs;function Nt({onlyFirst:t=!1}={}){let s="(?:\\u001B\\][\\s\\S]*?(?:\\u0007|\\u001B\\u005C|\\u009C))|[\\u001B\\u009B][[\\]()#;?]*(?:\\d{1,4}(?:[;:]\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]";return new RegExp(s,t?void 0:"g")}var Zs=Nt();function he(t){if(typeof t!="string")throw new TypeError(`Expected a \`string\`, got \`${typeof t}\``);return t.replace(Zs,"")}function ao(t){return t===161||t===164||t===167||t===168||t===170||t===173||t===174||t>=176&&t<=180||t>=182&&t<=186||t>=188&&t<=191||t===198||t===208||t===215||t===216||t>=222&&t<=225||t===230||t>=232&&t<=234||t===236||t===237||t===240||t===242||t===243||t>=247&&t<=250||t===252||t===254||t===257||t===273||t===275||t===283||t===294||t===295||t===299||t>=305&&t<=307||t===312||t>=319&&t<=322||t===324||t>=328&&t<=331||t===333||t===338||t===339||t===358||t===359||t===363||t===462||t===464||t===466||t===468||t===470||t===472||t===474||t===476||t===593||t===609||t===708||t===711||t>=713&&t<=715||t===717||t===720||t>=728&&t<=731||t===733||t===735||t>=768&&t<=879||t>=913&&t<=929||t>=931&&t<=937||t>=945&&t<=961||t>=963&&t<=969||t===1025||t>=1040&&t<=1103||t===1105||t===8208||t>=8211&&t<=8214||t===8216||t===8217||t===8220||t===8221||t>=8224&&t<=8226||t>=8228&&t<=8231||t===8240||t===8242||t===8243||t===8245||t===8251||t===8254||t===8308||t===8319||t>=8321&&t<=8324||t===8364||t===8451||t===8453||t===8457||t===8467||t===8470||t===8481||t===8482||t===8486||t===8491||t===8531||t===8532||t>=8539&&t<=8542||t>=8544&&t<=8555||t>=8560&&t<=8569||t===8585||t>=8592&&t<=8601||t===8632||t===8633||t===8658||t===8660||t===8679||t===8704||t===8706||t===8707||t===8711||t===8712||t===8715||t===8719||t===8721||t===8725||t===8730||t>=8733&&t<=8736||t===8739||t===8741||t>=8743&&t<=8748||t===8750||t>=8756&&t<=8759||t===8764||t===8765||t===8776||t===8780||t===8786||t===8800||t===8801||t>=8804&&t<=8807||t===8810||t===8811||t===8814||t===8815||t===8834||t===8835||t===8838||t===8839||t===8853||t===8857||t===8869||t===8895||t===8978||t>=9312&&t<=9449||t>=9451&&t<=9547||t>=9552&&t<=9587||t>=9600&&t<=9615||t>=9618&&t<=9621||t===9632||t===9633||t>=9635&&t<=9641||t===9650||t===9651||t===9654||t===9655||t===9660||t===9661||t===9664||t===9665||t>=9670&&t<=9672||t===9675||t>=9678&&t<=9681||t>=9698&&t<=9701||t===9711||t===9733||t===9734||t===9737||t===9742||t===9743||t===9756||t===9758||t===9792||t===9794||t===9824||t===9825||t>=9827&&t<=9829||t>=9831&&t<=9834||t===9836||t===9837||t===9839||t===9886||t===9887||t===9919||t>=9926&&t<=9933||t>=9935&&t<=9939||t>=9941&&t<=9953||t===9955||t===9960||t===9961||t>=9963&&t<=9969||t===9972||t>=9974&&t<=9977||t===9979||t===9980||t===9982||t===9983||t===10045||t>=10102&&t<=10111||t>=11094&&t<=11097||t>=12872&&t<=12879||t>=57344&&t<=63743||t>=65024&&t<=65039||t===65533||t>=127232&&t<=127242||t>=127248&&t<=127277||t>=127280&&t<=127337||t>=127344&&t<=127373||t===127375||t===127376||t>=127387&&t<=127404||t>=917760&&t<=917999||t>=983040&&t<=1048573||t>=1048576&&t<=1114109}function uo(t){return t===12288||t>=65281&&t<=65376||t>=65504&&t<=65510}function lo(t){return t>=4352&&t<=4447||t===8986||t===8987||t===9001||t===9002||t>=9193&&t<=9196||t===9200||t===9203||t===9725||t===9726||t===9748||t===9749||t>=9776&&t<=9783||t>=9800&&t<=9811||t===9855||t>=9866&&t<=9871||t===9875||t===9889||t===9898||t===9899||t===9917||t===9918||t===9924||t===9925||t===9934||t===9940||t===9962||t===9970||t===9971||t===9973||t===9978||t===9981||t===9989||t===9994||t===9995||t===10024||t===10060||t===10062||t>=10067&&t<=10069||t===10071||t>=10133&&t<=10135||t===10160||t===10175||t===11035||t===11036||t===11088||t===11093||t>=11904&&t<=11929||t>=11931&&t<=12019||t>=12032&&t<=12245||t>=12272&&t<=12287||t>=12289&&t<=12350||t>=12353&&t<=12438||t>=12441&&t<=12543||t>=12549&&t<=12591||t>=12593&&t<=12686||t>=12688&&t<=12773||t>=12783&&t<=12830||t>=12832&&t<=12871||t>=12880&&t<=42124||t>=42128&&t<=42182||t>=43360&&t<=43388||t>=44032&&t<=55203||t>=63744&&t<=64255||t>=65040&&t<=65049||t>=65072&&t<=65106||t>=65108&&t<=65126||t>=65128&&t<=65131||t>=94176&&t<=94180||t>=94192&&t<=94198||t>=94208&&t<=101589||t>=101631&&t<=101662||t>=101760&&t<=101874||t>=110576&&t<=110579||t>=110581&&t<=110587||t===110589||t===110590||t>=110592&&t<=110882||t===110898||t>=110928&&t<=110930||t===110933||t>=110948&&t<=110951||t>=110960&&t<=111355||t>=119552&&t<=119638||t>=119648&&t<=119670||t===126980||t===127183||t===127374||t>=127377&&t<=127386||t>=127488&&t<=127490||t>=127504&&t<=127547||t>=127552&&t<=127560||t===127568||t===127569||t>=127584&&t<=127589||t>=127744&&t<=127776||t>=127789&&t<=127797||t>=127799&&t<=127868||t>=127870&&t<=127891||t>=127904&&t<=127946||t>=127951&&t<=127955||t>=127968&&t<=127984||t===127988||t>=127992&&t<=128062||t===128064||t>=128066&&t<=128252||t>=128255&&t<=128317||t>=128331&&t<=128334||t>=128336&&t<=128359||t===128378||t===128405||t===128406||t===128420||t>=128507&&t<=128591||t>=128640&&t<=128709||t===128716||t>=128720&&t<=128722||t>=128725&&t<=128728||t>=128732&&t<=128735||t===128747||t===128748||t>=128756&&t<=128764||t>=128992&&t<=129003||t===129008||t>=129292&&t<=129338||t>=129340&&t<=129349||t>=129351&&t<=129535||t>=129648&&t<=129660||t>=129664&&t<=129674||t>=129678&&t<=129734||t===129736||t>=129741&&t<=129756||t>=129759&&t<=129770||t>=129775&&t<=129784||t>=131072&&t<=196605||t>=196608&&t<=262141}function er(t){if(!Number.isSafeInteger(t))throw new TypeError(`Expected a code point, got \`${typeof t}\`.`)}function co(t,{ambiguousAsWide:e=!1}={}){return er(t),uo(t)||lo(t)||e&&ao(t)?2:1}var mo=b(ho(),1),tr=new Intl.Segmenter,nr=new RegExp("^\\p{Default_Ignorable_Code_Point}$","u");function $t(t,e={}){if(typeof t!="string"||t.length===0)return 0;let{ambiguousIsNarrow:n=!0,countAnsiEscapeCodes:o=!1}=e;if(o||(t=he(t)),t.length===0)return 0;let s=0,r={ambiguousAsWide:!n};for(let{segment:a}of tr.segment(t)){let u=a.codePointAt(0);if(!(u<=31||u>=127&&u<=159)&&!(u>=8203&&u<=8207||u===65279)&&!(u>=768&&u<=879||u>=6832&&u<=6911||u>=7616&&u<=7679||u>=8400&&u<=8447||u>=65056&&u<=65071)&&!(u>=55296&&u<=57343)&&!(u>=65024&&u<=65039)&&!nr.test(a)){if((0,mo.default)().test(a)){s+=2;continue}s+=co(u,r)}}return s}function jt({stream:t=process.stdout}={}){return!!(t&&t.isTTY&&process.env.TERM!=="dumb"&&!("CI"in process.env))}var Gt=b(require("node:process"),1);function Ut(){let{env:t}=Gt.default,{TERM:e,TERM_PROGRAM:n}=t;return Gt.default.platform!=="win32"?e!=="linux":!!t.WT_SESSION||!!t.TERMINUS_SUBLIME||t.ConEmuTask==="{cmd::Cmder}"||n==="Terminus-Sublime"||n==="vscode"||e==="xterm-256color"||e==="alacritty"||e==="rxvt-unicode"||e==="rxvt-unicode-256color"||t.TERMINAL_EMULATOR==="JetBrains-JediTerm"}var $=b(require("node:process"),1),or=3,Mt=class{#i=0;start(){this.#i++,this.#i===1&&this.#n()}stop(){if(this.#i<=0)throw new Error("`stop` called more times than `start`");this.#i--,this.#i===0&&this.#e()}#n(){$.default.platform==="win32"||!$.default.stdin.isTTY||($.default.stdin.setRawMode(!0),$.default.stdin.on("data",this.#s),$.default.stdin.resume())}#e(){$.default.stdin.isTTY&&($.default.stdin.off("data",this.#s),$.default.stdin.pause(),$.default.stdin.setRawMode(!1))}#s(e){e[0]===or&&$.default.emit("SIGINT")}},sr=new Mt,Ht=sr;var rr=b(Lt(),1),Vt=class{#i=0;#n=!1;#e=0;#s=-1;#f=0;#t;#r;#o;#h;#p;#l;#c;#d;#D;#a;#u;color;constructor(e){typeof e=="string"&&(e={text:e}),this.#t={color:"cyan",stream:me.default.stderr,discardStdin:!0,hideCursor:!0,...e},this.color=this.#t.color,this.spinner=this.#t.spinner,this.#p=this.#t.interval,this.#o=this.#t.stream,this.#l=typeof this.#t.isEnabled=="boolean"?this.#t.isEnabled:jt({stream:this.#o}),this.#c=typeof this.#t.isSilent=="boolean"?this.#t.isSilent:!1,this.text=this.#t.text,this.prefixText=this.#t.prefixText,this.suffixText=this.#t.suffixText,this.indent=this.#t.indent,me.default.env.NODE_ENV==="test"&&(this._stream=this.#o,this._isEnabled=this.#l,Object.defineProperty(this,"_linesToClear",{get(){return this.#i},set(n){this.#i=n}}),Object.defineProperty(this,"_frameIndex",{get(){return this.#s}}),Object.defineProperty(this,"_lineCount",{get(){return this.#e}}))}get indent(){return this.#d}set indent(e=0){if(!(e>=0&&Number.isInteger(e)))throw new Error("The `indent` option must be an integer from 0 and up");this.#d=e,this.#m()}get interval(){return this.#p??this.#r.interval??100}get spinner(){return this.#r}set spinner(e){if(this.#s=-1,this.#p=void 0,typeof e=="object"){if(e.frames===void 0)throw new Error("The given spinner must have a `frames` property");this.#r=e}else if(!Ut())this.#r=pe.default.line;else if(e===void 0)this.#r=pe.default.dots;else if(e!=="default"&&pe.default[e])this.#r=pe.default[e];else throw new Error(`There is no built-in spinner named '${e}'. See https://github.com/sindresorhus/cli-spinners/blob/main/spinners.json for a full list.`)}get text(){return this.#D}set text(e=""){this.#D=e,this.#m()}get prefixText(){return this.#a}set prefixText(e=""){this.#a=e,this.#m()}get suffixText(){return this.#u}set suffixText(e=""){this.#u=e,this.#m()}get isSpinning(){return this.#h!==void 0}#g(e=this.#a,n=" "){return typeof e=="string"&&e!==""?e+n:typeof e=="function"?e()+n:""}#F(e=this.#u,n=" "){return typeof e=="string"&&e!==""?n+e:typeof e=="function"?n+e():""}#m(){let e=this.#o.columns??80,n=this.#g(this.#a,"-"),o=this.#F(this.#u,"-"),s=" ".repeat(this.#d)+n+"--"+this.#D+"--"+o;this.#e=0;for(let r of he(s).split(`
31
- `))this.#e+=Math.max(1,Math.ceil($t(r,{countAnsiEscapeCodes:!0})/e))}get isEnabled(){return this.#l&&!this.#c}set isEnabled(e){if(typeof e!="boolean")throw new TypeError("The `isEnabled` option must be a boolean");this.#l=e}get isSilent(){return this.#c}set isSilent(e){if(typeof e!="boolean")throw new TypeError("The `isSilent` option must be a boolean");this.#c=e}frame(){let e=Date.now();(this.#s===-1||e-this.#f>=this.interval)&&(this.#s=++this.#s%this.#r.frames.length,this.#f=e);let{frames:n}=this.#r,o=n[this.#s];this.color&&(o=i[this.color](o));let s=typeof this.#a=="string"&&this.#a!==""?this.#a+" ":"",r=typeof this.text=="string"?" "+this.text:"",a=typeof this.#u=="string"&&this.#u!==""?" "+this.#u:"";return s+o+r+a}clear(){if(!this.#l||!this.#o.isTTY)return this;this.#o.cursorTo(0);for(let e=0;e<this.#i;e++)e>0&&this.#o.moveCursor(0,-1),this.#o.clearLine(1);return(this.#d||this.lastIndent!==this.#d)&&this.#o.cursorTo(this.#d),this.lastIndent=this.#d,this.#i=0,this}render(){return this.#c?this:(this.clear(),this.#o.write(this.frame()),this.#i=this.#e,this)}start(e){return e&&(this.text=e),this.#c?this:this.#l?this.isSpinning?this:(this.#t.hideCursor&&Rt.hide(this.#o),this.#t.discardStdin&&me.default.stdin.isTTY&&(this.#n=!0,Ht.start()),this.render(),this.#h=setInterval(this.render.bind(this),this.interval),this):(this.text&&this.#o.write(`- ${this.text}
32
- `),this)}stop(){return this.#l?(clearInterval(this.#h),this.#h=void 0,this.#s=0,this.clear(),this.#t.hideCursor&&Rt.show(this.#o),this.#t.discardStdin&&me.default.stdin.isTTY&&this.#n&&(Ht.stop(),this.#n=!1),this):this}succeed(e){return this.stopAndPersist({symbol:fe.success,text:e})}fail(e){return this.stopAndPersist({symbol:fe.error,text:e})}warn(e){return this.stopAndPersist({symbol:fe.warning,text:e})}info(e){return this.stopAndPersist({symbol:fe.info,text:e})}stopAndPersist(e={}){if(this.#c)return this;let n=e.prefixText??this.#a,o=this.#g(n," "),s=e.symbol??" ",r=e.text??this.text,u=typeof r=="string"?(s?" ":"")+r:"",l=e.suffixText??this.#u,d=this.#F(l," "),c=o+s+u+d+`
33
- `;return this.stop(),this.#o.write(c),this}};function T(t){return new Vt(t)}var Fo=require("http"),$e=require("child_process");var j=class{config;constructor(e){this.config=e}async getCurrentUser(){return(await(await this.fetch("/auth/me")).json()).user}async listOrganizations(){return(await(await this.fetch("/organizations")).json()).organizations}async getOrganization(e){return(await(await this.fetch(`/organizations/${e}`)).json()).organization}async scanOrganization(e){return await(await this.fetch(`/scan/${e}`,{method:"POST"})).json()}async downloadConfigs(e,n){let o=new URLSearchParams;n&&o.set("platform",n);let s=`/organizations/${e}/configs${o.toString()?"?"+o.toString():""}`;return(await(await this.fetch(s)).json()).configs.map(u=>({fileName:u.fileName,content:u.content,platform:u.platform,type:u.category,repoName:u.repoName}))}async testConnection(){try{let n=await(await this.fetch("/health")).json();return n.status==="ok"&&n.service==="gal-api"}catch{return!1}}async getPolicy(e){try{return(await(await this.fetch(`/policies/${e}`)).json()).policy}catch{return null}}async getOrgPolicy(e){try{return(await(await this.fetch(`/organizations/${e}/policy`)).json()).policy}catch{return null}}async fleetRegister(e,n){return await(await this.fetch(`/organizations/${e}/fleet/register`,{method:"POST",body:JSON.stringify(n)})).json()}async fleetHeartbeat(e){return await(await this.fetch("/fleet/heartbeat",{method:"POST",body:JSON.stringify(e)})).json()}async fleetStatus(e){return await(await this.fetch(`/fleet/developers/${e}/status`)).json()}async fleetList(e,n="all"){let o=new URLSearchParams;n!=="all"&&o.set("status",n);let s=`/organizations/${e}/fleet${o.toString()?"?"+o.toString():""}`;return await(await this.fetch(s)).json()}async fleetReport(e){return await(await this.fetch(`/organizations/${e}/fleet/report`)).json()}async fleetUnenroll(e){await this.fetch(`/fleet/developers/${e}`,{method:"DELETE"})}async getApprovedConfig(e,n){try{return await(await this.fetch(`/organizations/${e}/approved-config?platform=${n}`)).json()}catch(o){if(o.message?.includes("404"))return{approved:!1};throw o}}async getHookSettings(e){try{return await(await this.fetch(`/organizations/${e}/hook-settings`)).json()}catch{return{globalIntervalMinutes:10,intervals:{}}}}async validateInvite(e){return await(await this.fetch(`/invites/${encodeURIComponent(e)}/validate`)).json()}async useInvite(e,n){return await(await this.fetch(`/invites/${encodeURIComponent(e)}/use`,{method:"POST",body:JSON.stringify(n)})).json()}async reportDeveloperStatus(e,n){return await(await this.fetch(`/organizations/${encodeURIComponent(e)}/developer-status`,{method:"POST",body:JSON.stringify(n)})).json()}async fetch(e,n={}){if(!this.config.apiUrl)throw new Error("API URL not configured. Run: gal config set apiUrl <url>");let o=`${this.config.apiUrl}${e}`,s={"Content-Type":"application/json",...n.headers};this.config.authToken?s.Authorization=`Bearer ${this.config.authToken}`:this.config.apiKey&&(s.Authorization=`Bearer ${this.config.apiKey}`);let r=await fetch(o,{...n,headers:s});if(!r.ok){let a=`API request failed: ${r.status} ${r.statusText}`;try{let u=await r.json();u&&u.error&&(a=u.error)}catch{}throw new Error(a)}return r}};var qt=require("os"),S=require("fs"),H=require("path");var ir=process.env.GAL_API_URL||"http://localhost:3000";var wa=60*60*1e3;function po(t,e){return`#!/usr/bin/env node
29
+ `);return r!==-1&&(e=Tn(e,s,o,r)),o+e+s};Object.defineProperties(ue.prototype,Q);var Is=ue(),yi=ue({level:Bn?Bn.level:0});var i=Is;var zn=require("crypto"),Yn=b(require("os"),1);var N=require("fs"),Pn=require("os"),X=require("path"),Nn=require("url"),Rs={},ht=(0,X.join)((0,Pn.homedir)(),".gal"),Se=(0,X.join)(ht,"config.json"),Bs={development:"http://localhost:3000",staging:"https://gal-api-wug5dzqj2a-uc.a.run.app",production:"https://api.gal.run"};function Ln(){let t=process.env.GAL_ENV?.toLowerCase();if(t==="development"||t==="dev"||t==="local")return"development";if(t==="staging"||t==="stg"||t==="beta")return"staging";if(t==="production"||t==="prod")return"production";if(process.argv[1]?.includes("tsx")||process.argv[1]?.includes("ts-node")||process.argv[1]?.endsWith(".ts")||process.env.npm_lifecycle_event==="dev"||process.env.NODE_ENV==="development")return"development";try{let n="0.1.17-alpha.pr502";if(n&&(n.includes("-beta")||n.includes("-rc")||n.includes("-alpha")))return"staging";if(!n||n==="0.0.0-dev"){let o=(0,Nn.fileURLToPath)(Rs.url),s=(0,X.dirname)(o),r=(0,X.join)(s,"..","package.json");if((0,N.existsSync)(r)){let u=JSON.parse((0,N.readFileSync)(r,"utf-8")).version||"";if(u.includes("-beta")||u.includes("-rc")||u.includes("-alpha"))return"staging"}}}catch{}return"production"}var y=class{static getEnvironment(){return Ln()}static load(){let e=Ln(),n=Bs[e];if(!(0,N.existsSync)(Se))return{apiUrl:n};try{let o=(0,N.readFileSync)(Se,"utf-8"),s=JSON.parse(o);return s.apiUrl||(s.apiUrl=n),e!=="development"&&s.apiUrl.includes("localhost")&&(s.apiUrl=n),s}catch(o){return console.error("Error loading config:",o),{apiUrl:n}}}static save(e){(0,N.existsSync)(ht)||(0,N.mkdirSync)(ht,{recursive:!0}),(0,N.writeFileSync)(Se,JSON.stringify(e,null,2),"utf-8")}static set(e,n){let o=this.load();o[e]=n,this.save(o)}static get(e){return this.load()[e]}static getConfigPath(){return Se}};var G=require("fs"),mt=require("path"),$n=require("os"),jn=require("crypto"),pt=(0,mt.join)((0,$n.homedir)(),".gal"),ke=(0,mt.join)(pt,"installation-id");function Gn(){try{if((0,G.existsSync)(ke)){let e=(0,G.readFileSync)(ke,"utf-8").trim();if(e&&/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(e))return e}}catch{}let t=(0,jn.randomUUID)();try{(0,G.existsSync)(pt)||(0,G.mkdirSync)(pt,{recursive:!0}),(0,G.writeFileSync)(ke,t,"utf-8")}catch{}return t}function Un(){return!(0,G.existsSync)(ke)}var O=require("fs"),Te=require("path"),Hn=require("os"),Oe=(0,Te.join)((0,Hn.homedir)(),".gal"),le=(0,Te.join)(Oe,"telemetry-queue.json"),Dt=(0,Te.join)(Oe,"telemetry-pending-events.json"),Mn=100,Ls=7,Ps=Ls*24*60*60*1e3,xe=class{queue=[];flushCallback=null;constructor(){this.loadOfflineQueue(),this.loadPendingEvents()}setFlushCallback(e){this.flushCallback=e}async addEvent(e){let n={event:e,queuedAt:Date.now()};this.queue.push(n),this.queue.length>=Mn&&await this.flush()}async flush(){if(this.queue.length===0)return;if(!this.flushCallback){this.saveOfflineQueue();return}if(this.pruneExpiredEvents(),this.queue.length===0)return;let e=this.queue.slice(0,Mn),n=e.map(o=>o.event);try{await this.flushCallback(n)?(this.queue=this.queue.slice(e.length),this.queue.length>0?this.saveOfflineQueue():this.clearOfflineQueue()):this.saveOfflineQueue()}catch{this.saveOfflineQueue()}}getQueueLength(){return this.queue.length}loadOfflineQueue(){try{if((0,O.existsSync)(le)){let e=(0,O.readFileSync)(le,"utf-8"),n=JSON.parse(e);Array.isArray(n)&&(this.queue=n.map(o=>"event"in o&&"queuedAt"in o?o:{event:this.upgradeOldEvent(o),queuedAt:o.queuedAt||Date.now()}),this.pruneExpiredEvents())}}catch{}}upgradeOldEvent(e){let n=e.payload||{};return{id:e.id||"",timestamp:e.timestamp||new Date().toISOString(),severity:n.success===!1?"ERROR":"INFO",resource:{"service.name":"gal-cli","service.version":n.cliVersion||"unknown","host.os":n.platform||"linux","host.arch":"x64","process.runtime.version":n.nodeVersion},eventType:e.eventType||"cli_command",attributes:{command:n.command??null,success:n.success??null,error_type:n.errorType??null,duration_ms:n.durationMs??null,notification_type:n.notificationType??null,rate_limit_hit:n.rateLimitHit??null,sync_age_hours:n.syncAgeHours??null,files_synced:n.filesTracked??null},installationId:e.installationId||""}}loadPendingEvents(){try{if((0,O.existsSync)(Dt)){let e=(0,O.readFileSync)(Dt,"utf-8"),n=JSON.parse(e);if(Array.isArray(n))for(let o of n){let s,r;"event"in o?(s=o.event,r=o.queuedAt||Date.now()):(s=this.upgradeOldEvent(o),r=o.queuedAt||Date.now()),this.queue.push({event:s,queuedAt:r})}(0,O.writeFileSync)(Dt,"[]","utf-8")}}catch{}}saveOfflineQueue(){try{(0,O.existsSync)(Oe)||(0,O.mkdirSync)(Oe,{recursive:!0}),(0,O.writeFileSync)(le,JSON.stringify(this.queue),"utf-8")}catch{}}clearOfflineQueue(){try{(0,O.existsSync)(le)&&(0,O.writeFileSync)(le,"[]","utf-8")}catch{}}pruneExpiredEvents(){let e=Date.now();this.queue=this.queue.filter(n=>e-n.queuedAt<Ps)}};var Ns="v2",Ie=class{baseUrl;constructor(e){this.baseUrl=e}async sendEvents(e){if(e.length===0)return!0;try{let n=new AbortController,o=setTimeout(()=>n.abort(),5e3),s=await fetch(`${this.baseUrl}/telemetry/events`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({events:e,schemaVersion:Ns}),signal:n.signal});return clearTimeout(o),s.ok?(await s.json()).accepted===!0:s.status===202}catch{return!1}}async sendFeedback(e,n){try{let o=new AbortController,s=setTimeout(()=>o.abort(),5e3),r={"Content-Type":"application/json"};n&&(r.Authorization=`Bearer ${n}`);let a=await fetch(`${this.baseUrl}/telemetry/feedback`,{method:"POST",headers:r,body:JSON.stringify(e),signal:o.signal});return clearTimeout(s),a.ok?(await a.json()).accepted===!0:a.status===202}catch{return!1}}setBaseUrl(e){this.baseUrl=e}};var gt=b(require("readline"),1);var Vn=0;function Ft(){Vn++}async function ce(t,e){if(!Et()||!process.stdin.isTTY||!process.stdout.isTTY||!qn("error"))return;let n=gt.createInterface({input:process.stdin,output:process.stdout}),o=s=>new Promise(r=>{n.question(s,r)});try{console.log(),console.log(i.yellow("\u2501".repeat(50))),console.log(i.yellow(" Help us improve GAL CLI")),console.log(i.yellow("\u2501".repeat(50))),console.log();let s=await o(i.dim("Would you like to report this error? (y/N): "));if(s.toLowerCase()!=="y"&&s.toLowerCase()!=="yes"){n.close();return}let r=await o(i.dim("Any additional context? (press Enter to skip): "));n.close(),await Ct(1,r||`Error in ${t}: ${e.message}`,{command:t,errorType:e.name,errorMessage:e.message.substring(0,200)})&&console.log(i.green("\u2713 Thanks for your feedback!")),Wn("error")}catch{n.close()}}async function yt(){if(!Et()||!process.stdin.isTTY||!process.stdout.isTTY||Vn<10||!qn("session"))return;let t=gt.createInterface({input:process.stdin,output:process.stdout}),e=n=>new Promise(o=>{t.question(n,o)});try{console.log(),console.log(i.blue("\u2501".repeat(50))),console.log(i.blue(" Quick feedback (1 question)")),console.log(i.blue("\u2501".repeat(50))),console.log();let n=await e(i.dim("How would you rate GAL CLI? (1-5, or press Enter to skip): "));if(!n){t.close();return}let o=parseInt(n,10);if(isNaN(o)||o<1||o>5){console.log(i.dim("Invalid rating, skipping...")),t.close();return}let s;o<=3&&(s=await e(i.dim("What could we improve? (press Enter to skip): "))),t.close(),await Ct(o,s||void 0,{command:"session_feedback"})&&console.log(i.green("\u2713 Thanks for your feedback!")),Wn("session")}catch{t.close()}}function qn(t){try{let e=y.load(),n=Date.now(),o=24*60*60*1e3,s=7*o;if(t==="error"){let r=e.lastErrorFeedback||0;return n-r>o}else{let r=e.lastSessionFeedback||0;return n-r>s}}catch{return!0}}function Wn(t){try{let e=t==="error"?"lastErrorFeedback":"lastSessionFeedback";y.set(e,Date.now())}catch{}}var Kn="0.1.17-alpha.pr502",q=null,Jn=!1;function vt(){let t=process.env.GAL_TELEMETRY?.toLowerCase();if(t==="false"||t==="0"||t==="no"||t==="off")return!0;try{if(y.load().telemetry===!1)return!0}catch{}return!1}function $s(){return{"service.name":"gal-cli","service.version":Kn,"host.os":process.platform,"host.arch":Yn.default.arch(),"process.runtime.version":process.version}}var _t=class{queue;client;installationId;resource;exitHandlersRegistered=!1;constructor(e){this.installationId=Gn(),this.resource=$s(),this.queue=new xe,this.client=new Ie(e),this.queue.setFlushCallback(n=>this.client.sendEvents(n)),this.registerExitHandlers()}async trackEvent(e,n,o="INFO"){let s={id:(0,zn.randomUUID)(),timestamp:new Date().toISOString(),severity:o,resource:this.resource,eventType:e,attributes:n,installationId:this.installationId};await this.queue.addEvent(s)}async flush(){await this.queue.flush()}async sendFeedback(e,n,o){let s={installationId:this.installationId,rating:e,comment:n,context:{...o,cliVersion:Kn,platform:process.platform}},r=y.load();return this.client.sendFeedback(s,r.authToken)}registerExitHandlers(){if(this.exitHandlersRegistered)return;let e=async()=>{await this.flush()};process.on("beforeExit",e),process.on("SIGINT",async()=>{await e(),process.exit(130)}),process.on("SIGTERM",async()=>{await e(),process.exit(143)}),this.exitHandlersRegistered=!0}};function Qn(){if(Jn||(Jn=!0,vt()))return;let e=y.load().apiUrl||"https://api.gal.run";q=new _t(e)}function Xn(){if(!(vt()||y.load().telemetryNoticeShown)){if(!Un()){y.set("telemetryNoticeShown","true");return}console.log(i.blue("\u2501".repeat(60))),console.log(i.blue.bold(" GAL CLI Telemetry")),console.log(i.blue("\u2501".repeat(60))),console.log(),console.log(" GAL collects anonymous usage data to improve the CLI."),console.log(" This helps us diagnose issues and understand which"),console.log(" features are most valuable to developers."),console.log(),console.log(i.dim(" No personal information or code is collected.")),console.log(),console.log(" To opt out:"),console.log(i.cyan(" gal config set telemetry false")),console.log(" Or set environment variable:"),console.log(i.cyan(" export GAL_TELEMETRY=false")),console.log(),console.log(i.blue("\u2501".repeat(60))),console.log(),y.set("telemetryNoticeShown","true")}}function At(t,e){q&&q.trackEvent("auth_login",{success:t,error_type:e?e.name:null,auth_method:"github_oauth"},t?"INFO":"ERROR")}function bt(t,e,n,o){q&&q.trackEvent("sync_pull",{files_synced:t,success:e,sync_age_hours:n??null,config_version:o??null},e?"INFO":"ERROR")}async function Ct(t,e,n){return q?q.sendFeedback(t,e,n):!1}function Et(){return!vt()&&q!==null}var pe=b(require("node:process"),1);var Bt=b(require("node:process"),1);var de=b(require("node:process"),1);var js=(t,e,n,o)=>{if(n==="length"||n==="prototype"||n==="arguments"||n==="caller")return;let s=Object.getOwnPropertyDescriptor(t,n),r=Object.getOwnPropertyDescriptor(e,n);!Gs(s,r)&&o||Object.defineProperty(t,n,r)},Gs=function(t,e){return t===void 0||t.configurable||t.writable===e.writable&&t.enumerable===e.enumerable&&t.configurable===e.configurable&&(t.writable||t.value===e.value)},Us=(t,e)=>{let n=Object.getPrototypeOf(e);n!==Object.getPrototypeOf(t)&&Object.setPrototypeOf(t,n)},Ms=(t,e)=>`/* Wrapped ${t}*/
30
+ ${e}`,Hs=Object.getOwnPropertyDescriptor(Function.prototype,"toString"),Vs=Object.getOwnPropertyDescriptor(Function.prototype.toString,"name"),qs=(t,e,n)=>{let o=n===""?"":`with ${n.trim()}() `,s=Ms.bind(null,o,e.toString());Object.defineProperty(s,"name",Vs);let{writable:r,enumerable:a,configurable:u}=Hs;Object.defineProperty(t,"toString",{value:s,writable:r,enumerable:a,configurable:u})};function wt(t,e,{ignoreNonConfigurable:n=!1}={}){let{name:o}=t;for(let s of Reflect.ownKeys(e))js(t,e,s,n);return Us(t,e),qs(t,e,o),t}var Be=new WeakMap,Zn=(t,e={})=>{if(typeof t!="function")throw new TypeError("Expected a function");let n,o=0,s=t.displayName||t.name||"<anonymous>",r=function(...a){if(Be.set(r,++o),o===1)n=t.apply(this,a),t=void 0;else if(e.throw===!0)throw new Error(`Function \`${s}\` can only be called once`);return n};return wt(r,t),Be.set(r,o),r};Zn.callCount=t=>{if(!Be.has(t))throw new Error(`The given function \`${t.name}\` is not wrapped by the \`onetime\` package`);return Be.get(t)};var eo=Zn;var W=[];W.push("SIGHUP","SIGINT","SIGTERM");process.platform!=="win32"&&W.push("SIGALRM","SIGABRT","SIGVTALRM","SIGXCPU","SIGXFSZ","SIGUSR2","SIGTRAP","SIGSYS","SIGQUIT","SIGIOT");process.platform==="linux"&&W.push("SIGIO","SIGPOLL","SIGPWR","SIGSTKFLT");var Re=t=>!!t&&typeof t=="object"&&typeof t.removeListener=="function"&&typeof t.emit=="function"&&typeof t.reallyExit=="function"&&typeof t.listeners=="function"&&typeof t.kill=="function"&&typeof t.pid=="number"&&typeof t.on=="function",St=Symbol.for("signal-exit emitter"),kt=globalThis,Ws=Object.defineProperty.bind(Object),Ot=class{emitted={afterExit:!1,exit:!1};listeners={afterExit:[],exit:[]};count=0;id=Math.random();constructor(){if(kt[St])return kt[St];Ws(kt,St,{value:this,writable:!1,enumerable:!1,configurable:!1})}on(e,n){this.listeners[e].push(n)}removeListener(e,n){let o=this.listeners[e],s=o.indexOf(n);s!==-1&&(s===0&&o.length===1?o.length=0:o.splice(s,1))}emit(e,n,o){if(this.emitted[e])return!1;this.emitted[e]=!0;let s=!1;for(let r of this.listeners[e])s=r(n,o)===!0||s;return e==="exit"&&(s=this.emit("afterExit",n,o)||s),s}},Le=class{},Js=t=>({onExit(e,n){return t.onExit(e,n)},load(){return t.load()},unload(){return t.unload()}}),xt=class extends Le{onExit(){return()=>{}}load(){}unload(){}},Tt=class extends Le{#i=It.platform==="win32"?"SIGINT":"SIGHUP";#n=new Ot;#e;#s;#f;#t={};#r=!1;constructor(e){super(),this.#e=e,this.#t={};for(let n of W)this.#t[n]=()=>{let o=this.#e.listeners(n),{count:s}=this.#n,r=e;if(typeof r.__signal_exit_emitter__=="object"&&typeof r.__signal_exit_emitter__.count=="number"&&(s+=r.__signal_exit_emitter__.count),o.length===s){this.unload();let a=this.#n.emit("exit",null,n),u=n==="SIGHUP"?this.#i:n;a||e.kill(e.pid,u)}};this.#f=e.reallyExit,this.#s=e.emit}onExit(e,n){if(!Re(this.#e))return()=>{};this.#r===!1&&this.load();let o=n?.alwaysLast?"afterExit":"exit";return this.#n.on(o,e),()=>{this.#n.removeListener(o,e),this.#n.listeners.exit.length===0&&this.#n.listeners.afterExit.length===0&&this.unload()}}load(){if(!this.#r){this.#r=!0,this.#n.count+=1;for(let e of W)try{let n=this.#t[e];n&&this.#e.on(e,n)}catch{}this.#e.emit=(e,...n)=>this.#h(e,...n),this.#e.reallyExit=e=>this.#o(e)}}unload(){this.#r&&(this.#r=!1,W.forEach(e=>{let n=this.#t[e];if(!n)throw new Error("Listener not defined for signal: "+e);try{this.#e.removeListener(e,n)}catch{}}),this.#e.emit=this.#s,this.#e.reallyExit=this.#f,this.#n.count-=1)}#o(e){return Re(this.#e)?(this.#e.exitCode=e||0,this.#n.emit("exit",this.#e.exitCode,null),this.#f.call(this.#e,this.#e.exitCode)):0}#h(e,...n){let o=this.#s;if(e==="exit"&&Re(this.#e)){typeof n[0]=="number"&&(this.#e.exitCode=n[0]);let s=o.call(this.#e,e,...n);return this.#n.emit("exit",this.#e.exitCode,null),s}else return o.call(this.#e,e,...n)}},It=globalThis.process,{onExit:to,load:Mi,unload:Hi}=Js(Re(It)?new Tt(It):new xt);var no=de.default.stderr.isTTY?de.default.stderr:de.default.stdout.isTTY?de.default.stdout:void 0,zs=no?eo(()=>{to(()=>{no.write("\x1B[?25h")},{alwaysLast:!0})}):()=>{},oo=zs;var Pe=!1,Z={};Z.show=(t=Bt.default.stderr)=>{t.isTTY&&(Pe=!1,t.write("\x1B[?25h"))};Z.hide=(t=Bt.default.stderr)=>{t.isTTY&&(oo(),Pe=!0,t.write("\x1B[?25l"))};Z.toggle=(t,e)=>{t!==void 0&&(Pe=t),Pe?Z.show(e):Z.hide(e)};var Rt=Z;var me=b(Lt(),1);var L=b(require("node:process"),1);function Pt(){return L.default.platform!=="win32"?L.default.env.TERM!=="linux":!!L.default.env.CI||!!L.default.env.WT_SESSION||!!L.default.env.TERMINUS_SUBLIME||L.default.env.ConEmuTask==="{cmd::Cmder}"||L.default.env.TERM_PROGRAM==="Terminus-Sublime"||L.default.env.TERM_PROGRAM==="vscode"||L.default.env.TERM==="xterm-256color"||L.default.env.TERM==="alacritty"||L.default.env.TERMINAL_EMULATOR==="JetBrains-JediTerm"}var Ks={info:i.blue("\u2139"),success:i.green("\u2714"),warning:i.yellow("\u26A0"),error:i.red("\u2716")},Qs={info:i.blue("i"),success:i.green("\u221A"),warning:i.yellow("\u203C"),error:i.red("\xD7")},Xs=Pt()?Ks:Qs,fe=Xs;function Nt({onlyFirst:t=!1}={}){let s="(?:\\u001B\\][\\s\\S]*?(?:\\u0007|\\u001B\\u005C|\\u009C))|[\\u001B\\u009B][[\\]()#;?]*(?:\\d{1,4}(?:[;:]\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]";return new RegExp(s,t?void 0:"g")}var Zs=Nt();function he(t){if(typeof t!="string")throw new TypeError(`Expected a \`string\`, got \`${typeof t}\``);return t.replace(Zs,"")}function ao(t){return t===161||t===164||t===167||t===168||t===170||t===173||t===174||t>=176&&t<=180||t>=182&&t<=186||t>=188&&t<=191||t===198||t===208||t===215||t===216||t>=222&&t<=225||t===230||t>=232&&t<=234||t===236||t===237||t===240||t===242||t===243||t>=247&&t<=250||t===252||t===254||t===257||t===273||t===275||t===283||t===294||t===295||t===299||t>=305&&t<=307||t===312||t>=319&&t<=322||t===324||t>=328&&t<=331||t===333||t===338||t===339||t===358||t===359||t===363||t===462||t===464||t===466||t===468||t===470||t===472||t===474||t===476||t===593||t===609||t===708||t===711||t>=713&&t<=715||t===717||t===720||t>=728&&t<=731||t===733||t===735||t>=768&&t<=879||t>=913&&t<=929||t>=931&&t<=937||t>=945&&t<=961||t>=963&&t<=969||t===1025||t>=1040&&t<=1103||t===1105||t===8208||t>=8211&&t<=8214||t===8216||t===8217||t===8220||t===8221||t>=8224&&t<=8226||t>=8228&&t<=8231||t===8240||t===8242||t===8243||t===8245||t===8251||t===8254||t===8308||t===8319||t>=8321&&t<=8324||t===8364||t===8451||t===8453||t===8457||t===8467||t===8470||t===8481||t===8482||t===8486||t===8491||t===8531||t===8532||t>=8539&&t<=8542||t>=8544&&t<=8555||t>=8560&&t<=8569||t===8585||t>=8592&&t<=8601||t===8632||t===8633||t===8658||t===8660||t===8679||t===8704||t===8706||t===8707||t===8711||t===8712||t===8715||t===8719||t===8721||t===8725||t===8730||t>=8733&&t<=8736||t===8739||t===8741||t>=8743&&t<=8748||t===8750||t>=8756&&t<=8759||t===8764||t===8765||t===8776||t===8780||t===8786||t===8800||t===8801||t>=8804&&t<=8807||t===8810||t===8811||t===8814||t===8815||t===8834||t===8835||t===8838||t===8839||t===8853||t===8857||t===8869||t===8895||t===8978||t>=9312&&t<=9449||t>=9451&&t<=9547||t>=9552&&t<=9587||t>=9600&&t<=9615||t>=9618&&t<=9621||t===9632||t===9633||t>=9635&&t<=9641||t===9650||t===9651||t===9654||t===9655||t===9660||t===9661||t===9664||t===9665||t>=9670&&t<=9672||t===9675||t>=9678&&t<=9681||t>=9698&&t<=9701||t===9711||t===9733||t===9734||t===9737||t===9742||t===9743||t===9756||t===9758||t===9792||t===9794||t===9824||t===9825||t>=9827&&t<=9829||t>=9831&&t<=9834||t===9836||t===9837||t===9839||t===9886||t===9887||t===9919||t>=9926&&t<=9933||t>=9935&&t<=9939||t>=9941&&t<=9953||t===9955||t===9960||t===9961||t>=9963&&t<=9969||t===9972||t>=9974&&t<=9977||t===9979||t===9980||t===9982||t===9983||t===10045||t>=10102&&t<=10111||t>=11094&&t<=11097||t>=12872&&t<=12879||t>=57344&&t<=63743||t>=65024&&t<=65039||t===65533||t>=127232&&t<=127242||t>=127248&&t<=127277||t>=127280&&t<=127337||t>=127344&&t<=127373||t===127375||t===127376||t>=127387&&t<=127404||t>=917760&&t<=917999||t>=983040&&t<=1048573||t>=1048576&&t<=1114109}function uo(t){return t===12288||t>=65281&&t<=65376||t>=65504&&t<=65510}function lo(t){return t>=4352&&t<=4447||t===8986||t===8987||t===9001||t===9002||t>=9193&&t<=9196||t===9200||t===9203||t===9725||t===9726||t===9748||t===9749||t>=9776&&t<=9783||t>=9800&&t<=9811||t===9855||t>=9866&&t<=9871||t===9875||t===9889||t===9898||t===9899||t===9917||t===9918||t===9924||t===9925||t===9934||t===9940||t===9962||t===9970||t===9971||t===9973||t===9978||t===9981||t===9989||t===9994||t===9995||t===10024||t===10060||t===10062||t>=10067&&t<=10069||t===10071||t>=10133&&t<=10135||t===10160||t===10175||t===11035||t===11036||t===11088||t===11093||t>=11904&&t<=11929||t>=11931&&t<=12019||t>=12032&&t<=12245||t>=12272&&t<=12287||t>=12289&&t<=12350||t>=12353&&t<=12438||t>=12441&&t<=12543||t>=12549&&t<=12591||t>=12593&&t<=12686||t>=12688&&t<=12773||t>=12783&&t<=12830||t>=12832&&t<=12871||t>=12880&&t<=42124||t>=42128&&t<=42182||t>=43360&&t<=43388||t>=44032&&t<=55203||t>=63744&&t<=64255||t>=65040&&t<=65049||t>=65072&&t<=65106||t>=65108&&t<=65126||t>=65128&&t<=65131||t>=94176&&t<=94180||t>=94192&&t<=94198||t>=94208&&t<=101589||t>=101631&&t<=101662||t>=101760&&t<=101874||t>=110576&&t<=110579||t>=110581&&t<=110587||t===110589||t===110590||t>=110592&&t<=110882||t===110898||t>=110928&&t<=110930||t===110933||t>=110948&&t<=110951||t>=110960&&t<=111355||t>=119552&&t<=119638||t>=119648&&t<=119670||t===126980||t===127183||t===127374||t>=127377&&t<=127386||t>=127488&&t<=127490||t>=127504&&t<=127547||t>=127552&&t<=127560||t===127568||t===127569||t>=127584&&t<=127589||t>=127744&&t<=127776||t>=127789&&t<=127797||t>=127799&&t<=127868||t>=127870&&t<=127891||t>=127904&&t<=127946||t>=127951&&t<=127955||t>=127968&&t<=127984||t===127988||t>=127992&&t<=128062||t===128064||t>=128066&&t<=128252||t>=128255&&t<=128317||t>=128331&&t<=128334||t>=128336&&t<=128359||t===128378||t===128405||t===128406||t===128420||t>=128507&&t<=128591||t>=128640&&t<=128709||t===128716||t>=128720&&t<=128722||t>=128725&&t<=128728||t>=128732&&t<=128735||t===128747||t===128748||t>=128756&&t<=128764||t>=128992&&t<=129003||t===129008||t>=129292&&t<=129338||t>=129340&&t<=129349||t>=129351&&t<=129535||t>=129648&&t<=129660||t>=129664&&t<=129674||t>=129678&&t<=129734||t===129736||t>=129741&&t<=129756||t>=129759&&t<=129770||t>=129775&&t<=129784||t>=131072&&t<=196605||t>=196608&&t<=262141}function er(t){if(!Number.isSafeInteger(t))throw new TypeError(`Expected a code point, got \`${typeof t}\`.`)}function co(t,{ambiguousAsWide:e=!1}={}){return er(t),uo(t)||lo(t)||e&&ao(t)?2:1}var po=b(ho(),1),tr=new Intl.Segmenter,nr=new RegExp("^\\p{Default_Ignorable_Code_Point}$","u");function $t(t,e={}){if(typeof t!="string"||t.length===0)return 0;let{ambiguousIsNarrow:n=!0,countAnsiEscapeCodes:o=!1}=e;if(o||(t=he(t)),t.length===0)return 0;let s=0,r={ambiguousAsWide:!n};for(let{segment:a}of tr.segment(t)){let u=a.codePointAt(0);if(!(u<=31||u>=127&&u<=159)&&!(u>=8203&&u<=8207||u===65279)&&!(u>=768&&u<=879||u>=6832&&u<=6911||u>=7616&&u<=7679||u>=8400&&u<=8447||u>=65056&&u<=65071)&&!(u>=55296&&u<=57343)&&!(u>=65024&&u<=65039)&&!nr.test(a)){if((0,po.default)().test(a)){s+=2;continue}s+=co(u,r)}}return s}function jt({stream:t=process.stdout}={}){return!!(t&&t.isTTY&&process.env.TERM!=="dumb"&&!("CI"in process.env))}var Gt=b(require("node:process"),1);function Ut(){let{env:t}=Gt.default,{TERM:e,TERM_PROGRAM:n}=t;return Gt.default.platform!=="win32"?e!=="linux":!!t.WT_SESSION||!!t.TERMINUS_SUBLIME||t.ConEmuTask==="{cmd::Cmder}"||n==="Terminus-Sublime"||n==="vscode"||e==="xterm-256color"||e==="alacritty"||e==="rxvt-unicode"||e==="rxvt-unicode-256color"||t.TERMINAL_EMULATOR==="JetBrains-JediTerm"}var $=b(require("node:process"),1),or=3,Mt=class{#i=0;start(){this.#i++,this.#i===1&&this.#n()}stop(){if(this.#i<=0)throw new Error("`stop` called more times than `start`");this.#i--,this.#i===0&&this.#e()}#n(){$.default.platform==="win32"||!$.default.stdin.isTTY||($.default.stdin.setRawMode(!0),$.default.stdin.on("data",this.#s),$.default.stdin.resume())}#e(){$.default.stdin.isTTY&&($.default.stdin.off("data",this.#s),$.default.stdin.pause(),$.default.stdin.setRawMode(!1))}#s(e){e[0]===or&&$.default.emit("SIGINT")}},sr=new Mt,Ht=sr;var rr=b(Lt(),1),Vt=class{#i=0;#n=!1;#e=0;#s=-1;#f=0;#t;#r;#o;#h;#m;#l;#c;#d;#D;#a;#u;color;constructor(e){typeof e=="string"&&(e={text:e}),this.#t={color:"cyan",stream:pe.default.stderr,discardStdin:!0,hideCursor:!0,...e},this.color=this.#t.color,this.spinner=this.#t.spinner,this.#m=this.#t.interval,this.#o=this.#t.stream,this.#l=typeof this.#t.isEnabled=="boolean"?this.#t.isEnabled:jt({stream:this.#o}),this.#c=typeof this.#t.isSilent=="boolean"?this.#t.isSilent:!1,this.text=this.#t.text,this.prefixText=this.#t.prefixText,this.suffixText=this.#t.suffixText,this.indent=this.#t.indent,pe.default.env.NODE_ENV==="test"&&(this._stream=this.#o,this._isEnabled=this.#l,Object.defineProperty(this,"_linesToClear",{get(){return this.#i},set(n){this.#i=n}}),Object.defineProperty(this,"_frameIndex",{get(){return this.#s}}),Object.defineProperty(this,"_lineCount",{get(){return this.#e}}))}get indent(){return this.#d}set indent(e=0){if(!(e>=0&&Number.isInteger(e)))throw new Error("The `indent` option must be an integer from 0 and up");this.#d=e,this.#p()}get interval(){return this.#m??this.#r.interval??100}get spinner(){return this.#r}set spinner(e){if(this.#s=-1,this.#m=void 0,typeof e=="object"){if(e.frames===void 0)throw new Error("The given spinner must have a `frames` property");this.#r=e}else if(!Ut())this.#r=me.default.line;else if(e===void 0)this.#r=me.default.dots;else if(e!=="default"&&me.default[e])this.#r=me.default[e];else throw new Error(`There is no built-in spinner named '${e}'. See https://github.com/sindresorhus/cli-spinners/blob/main/spinners.json for a full list.`)}get text(){return this.#D}set text(e=""){this.#D=e,this.#p()}get prefixText(){return this.#a}set prefixText(e=""){this.#a=e,this.#p()}get suffixText(){return this.#u}set suffixText(e=""){this.#u=e,this.#p()}get isSpinning(){return this.#h!==void 0}#g(e=this.#a,n=" "){return typeof e=="string"&&e!==""?e+n:typeof e=="function"?e()+n:""}#F(e=this.#u,n=" "){return typeof e=="string"&&e!==""?n+e:typeof e=="function"?n+e():""}#p(){let e=this.#o.columns??80,n=this.#g(this.#a,"-"),o=this.#F(this.#u,"-"),s=" ".repeat(this.#d)+n+"--"+this.#D+"--"+o;this.#e=0;for(let r of he(s).split(`
31
+ `))this.#e+=Math.max(1,Math.ceil($t(r,{countAnsiEscapeCodes:!0})/e))}get isEnabled(){return this.#l&&!this.#c}set isEnabled(e){if(typeof e!="boolean")throw new TypeError("The `isEnabled` option must be a boolean");this.#l=e}get isSilent(){return this.#c}set isSilent(e){if(typeof e!="boolean")throw new TypeError("The `isSilent` option must be a boolean");this.#c=e}frame(){let e=Date.now();(this.#s===-1||e-this.#f>=this.interval)&&(this.#s=++this.#s%this.#r.frames.length,this.#f=e);let{frames:n}=this.#r,o=n[this.#s];this.color&&(o=i[this.color](o));let s=typeof this.#a=="string"&&this.#a!==""?this.#a+" ":"",r=typeof this.text=="string"?" "+this.text:"",a=typeof this.#u=="string"&&this.#u!==""?" "+this.#u:"";return s+o+r+a}clear(){if(!this.#l||!this.#o.isTTY)return this;this.#o.cursorTo(0);for(let e=0;e<this.#i;e++)e>0&&this.#o.moveCursor(0,-1),this.#o.clearLine(1);return(this.#d||this.lastIndent!==this.#d)&&this.#o.cursorTo(this.#d),this.lastIndent=this.#d,this.#i=0,this}render(){return this.#c?this:(this.clear(),this.#o.write(this.frame()),this.#i=this.#e,this)}start(e){return e&&(this.text=e),this.#c?this:this.#l?this.isSpinning?this:(this.#t.hideCursor&&Rt.hide(this.#o),this.#t.discardStdin&&pe.default.stdin.isTTY&&(this.#n=!0,Ht.start()),this.render(),this.#h=setInterval(this.render.bind(this),this.interval),this):(this.text&&this.#o.write(`- ${this.text}
32
+ `),this)}stop(){return this.#l?(clearInterval(this.#h),this.#h=void 0,this.#s=0,this.clear(),this.#t.hideCursor&&Rt.show(this.#o),this.#t.discardStdin&&pe.default.stdin.isTTY&&this.#n&&(Ht.stop(),this.#n=!1),this):this}succeed(e){return this.stopAndPersist({symbol:fe.success,text:e})}fail(e){return this.stopAndPersist({symbol:fe.error,text:e})}warn(e){return this.stopAndPersist({symbol:fe.warning,text:e})}info(e){return this.stopAndPersist({symbol:fe.info,text:e})}stopAndPersist(e={}){if(this.#c)return this;let n=e.prefixText??this.#a,o=this.#g(n," "),s=e.symbol??" ",r=e.text??this.text,u=typeof r=="string"?(s?" ":"")+r:"",l=e.suffixText??this.#u,d=this.#F(l," "),c=o+s+u+d+`
33
+ `;return this.stop(),this.#o.write(c),this}};function T(t){return new Vt(t)}var Fo=require("http"),$e=require("child_process");var j=class{config;constructor(e){this.config=e}async getCurrentUser(){return(await(await this.fetch("/auth/me")).json()).user}async listOrganizations(){return(await(await this.fetch("/organizations")).json()).organizations}async getOrganization(e){return(await(await this.fetch(`/organizations/${e}`)).json()).organization}async scanOrganization(e){return await(await this.fetch(`/scan/${e}`,{method:"POST"})).json()}async downloadConfigs(e,n){let o=new URLSearchParams;n&&o.set("platform",n);let s=`/organizations/${e}/configs${o.toString()?"?"+o.toString():""}`;return(await(await this.fetch(s)).json()).configs.map(u=>({fileName:u.fileName,content:u.content,platform:u.platform,type:u.category,repoName:u.repoName}))}async testConnection(){try{let n=await(await this.fetch("/health")).json();return n.status==="ok"&&n.service==="gal-api"}catch{return!1}}async getPolicy(e){try{return(await(await this.fetch(`/policies/${e}`)).json()).policy}catch{return null}}async getOrgPolicy(e){try{return(await(await this.fetch(`/organizations/${e}/policy`)).json()).policy}catch{return null}}async fleetRegister(e,n){return await(await this.fetch(`/organizations/${e}/fleet/register`,{method:"POST",body:JSON.stringify(n)})).json()}async fleetHeartbeat(e){return await(await this.fetch("/fleet/heartbeat",{method:"POST",body:JSON.stringify(e)})).json()}async fleetStatus(e){return await(await this.fetch(`/fleet/developers/${e}/status`)).json()}async fleetList(e,n="all"){let o=new URLSearchParams;n!=="all"&&o.set("status",n);let s=`/organizations/${e}/fleet${o.toString()?"?"+o.toString():""}`;return await(await this.fetch(s)).json()}async fleetReport(e){return await(await this.fetch(`/organizations/${e}/fleet/report`)).json()}async fleetUnenroll(e){await this.fetch(`/fleet/developers/${e}`,{method:"DELETE"})}async getApprovedConfig(e,n){try{return await(await this.fetch(`/organizations/${e}/approved-config?platform=${n}`)).json()}catch(o){if(o.message?.includes("404"))return{approved:!1};throw o}}async getHookSettings(e){try{return await(await this.fetch(`/organizations/${e}/hook-settings`)).json()}catch{return{globalIntervalMinutes:10,intervals:{}}}}async validateInvite(e){return await(await this.fetch(`/invites/${encodeURIComponent(e)}/validate`)).json()}async useInvite(e,n){return await(await this.fetch(`/invites/${encodeURIComponent(e)}/use`,{method:"POST",body:JSON.stringify(n)})).json()}async reportDeveloperStatus(e,n){return await(await this.fetch(`/organizations/${encodeURIComponent(e)}/developer-status`,{method:"POST",body:JSON.stringify(n)})).json()}async fetch(e,n={}){if(!this.config.apiUrl)throw new Error("API URL not configured. Run: gal config set apiUrl <url>");let o=`${this.config.apiUrl}${e}`,s={"Content-Type":"application/json",...n.headers};this.config.authToken?s.Authorization=`Bearer ${this.config.authToken}`:this.config.apiKey&&(s.Authorization=`Bearer ${this.config.apiKey}`);let r=await fetch(o,{...n,headers:s});if(!r.ok){let a=`API request failed: ${r.status} ${r.statusText}`;try{let u=await r.json();u&&u.error&&(a=u.error)}catch{}throw new Error(a)}return r}};var qt=require("os"),S=require("fs"),H=require("path");var ir=process.env.GAL_API_URL||"http://localhost:3000";var wa=60*60*1e3;function mo(t,e){return`#!/usr/bin/env node
34
34
  /**
35
35
  * GAL Config Sync Hook for Claude Code (SessionStart only)
36
36
  *
@@ -385,7 +385,7 @@ function main(hookInput) {
385
385
  `}var je=9876,yo="/callback";function ur(t){let e=process.platform;try{e==="darwin"?(0,$e.execSync)(`open "${t}"`):e==="win32"?(0,$e.execSync)(`start "" "${t}"`):(0,$e.execSync)(`xdg-open "${t}"`)}catch{console.log(i.yellow(`
386
386
  Could not open browser. Please visit:
387
387
  ${t}
388
- `))}}function lr(t,e){let n=(0,H.join)((0,qt.homedir)(),".claude"),o=(0,H.join)(n,"hooks"),s=(0,H.join)(o,"gal-sync-reminder.js"),r=(0,H.join)(n,"settings.json");try{(0,S.existsSync)(o)||(0,S.mkdirSync)(o,{recursive:!0});let a=po(t,e);(0,S.writeFileSync)(s,a,"utf-8"),(0,S.chmodSync)(s,"755");let u={};if((0,S.existsSync)(r))try{u=JSON.parse((0,S.readFileSync)(r,"utf-8"))}catch{}u.hooks||(u.hooks={}),u.hooks.SessionStart||(u.hooks.SessionStart=[]),u.hooks.UserPromptSubmit&&(u.hooks.UserPromptSubmit=u.hooks.UserPromptSubmit.filter(c=>c.hooks?(c.hooks=c.hooks.filter(f=>!f.command?.includes("gal-")&&!f.command?.includes("/gal/")),c.hooks.length>0):!0),u.hooks.UserPromptSubmit.length===0&&delete u.hooks.UserPromptSubmit);let l=`node ${s}`;return u.hooks.SessionStart.some(c=>c.hooks?.some(f=>f.command===l))||(u.hooks.SessionStart.push({hooks:[{type:"command",command:l}]}),(0,S.writeFileSync)(r,JSON.stringify(u,null,2),"utf-8")),!0}catch{return!1}}function cr(t,e){let n=(0,H.join)((0,qt.homedir)(),".cursor"),o=(0,H.join)(n,"hooks"),s=(0,H.join)(o,"gal-shell-enforcement.js"),r=(0,H.join)(n,"hooks.json");try{(0,S.existsSync)(o)||(0,S.mkdirSync)(o,{recursive:!0});let a=Do(t,e);(0,S.writeFileSync)(s,a,"utf-8"),(0,S.chmodSync)(s,"755");let u={version:1,hooks:{}};if((0,S.existsSync)(r))try{u=JSON.parse((0,S.readFileSync)(r,"utf-8")),u.hooks||(u.hooks={})}catch{u={version:1,hooks:{}}}u.hooks.beforeShellExecution||(u.hooks.beforeShellExecution=[]);let l=`node ${s}`;return u.hooks.beforeShellExecution.some(c=>c.command===l)||(u.hooks.beforeShellExecution.push({command:l}),(0,S.writeFileSync)(r,JSON.stringify(u,null,2),"utf-8")),!0}catch{return!1}}function dr(t=12e4){return new Promise((e,n)=>{let o=(0,Fo.createServer)((r,a)=>{let u=new URL(r.url||"",`http://localhost:${je}`);if(u.pathname===yo){let l=u.searchParams.get("token"),d=u.searchParams.get("error"),c=u.searchParams.get("user");if(d){a.writeHead(200,{"Content-Type":"text/html"}),a.end(`
388
+ `))}}function lr(t,e){let n=(0,H.join)((0,qt.homedir)(),".claude"),o=(0,H.join)(n,"hooks"),s=(0,H.join)(o,"gal-sync-reminder.js"),r=(0,H.join)(n,"settings.json");try{(0,S.existsSync)(o)||(0,S.mkdirSync)(o,{recursive:!0});let a=mo(t,e);(0,S.writeFileSync)(s,a,"utf-8"),(0,S.chmodSync)(s,"755");let u={};if((0,S.existsSync)(r))try{u=JSON.parse((0,S.readFileSync)(r,"utf-8"))}catch{}u.hooks||(u.hooks={}),u.hooks.SessionStart||(u.hooks.SessionStart=[]),u.hooks.UserPromptSubmit&&(u.hooks.UserPromptSubmit=u.hooks.UserPromptSubmit.filter(c=>c.hooks?(c.hooks=c.hooks.filter(f=>!f.command?.includes("gal-")&&!f.command?.includes("/gal/")),c.hooks.length>0):!0),u.hooks.UserPromptSubmit.length===0&&delete u.hooks.UserPromptSubmit);let l=`node ${s}`;return u.hooks.SessionStart.some(c=>c.hooks?.some(f=>f.command===l))||(u.hooks.SessionStart.push({hooks:[{type:"command",command:l}]}),(0,S.writeFileSync)(r,JSON.stringify(u,null,2),"utf-8")),!0}catch{return!1}}function cr(t,e){let n=(0,H.join)((0,qt.homedir)(),".cursor"),o=(0,H.join)(n,"hooks"),s=(0,H.join)(o,"gal-shell-enforcement.js"),r=(0,H.join)(n,"hooks.json");try{(0,S.existsSync)(o)||(0,S.mkdirSync)(o,{recursive:!0});let a=Do(t,e);(0,S.writeFileSync)(s,a,"utf-8"),(0,S.chmodSync)(s,"755");let u={version:1,hooks:{}};if((0,S.existsSync)(r))try{u=JSON.parse((0,S.readFileSync)(r,"utf-8")),u.hooks||(u.hooks={})}catch{u={version:1,hooks:{}}}u.hooks.beforeShellExecution||(u.hooks.beforeShellExecution=[]);let l=`node ${s}`;return u.hooks.beforeShellExecution.some(c=>c.command===l)||(u.hooks.beforeShellExecution.push({command:l}),(0,S.writeFileSync)(r,JSON.stringify(u,null,2),"utf-8")),!0}catch{return!1}}function dr(t=12e4){return new Promise((e,n)=>{let o=(0,Fo.createServer)((r,a)=>{let u=new URL(r.url||"",`http://localhost:${je}`);if(u.pathname===yo){let l=u.searchParams.get("token"),d=u.searchParams.get("error"),c=u.searchParams.get("user");if(d){a.writeHead(200,{"Content-Type":"text/html"}),a.end(`
389
389
  <html>
390
390
  <body style="font-family: system-ui; padding: 40px; text-align: center;">
391
391
  <h1 style="color: #dc2626;">\u274C Authentication Failed</h1>
@@ -404,21 +404,21 @@ ${t}
404
404
  `),o.close();let f=null;if(c)try{f=JSON.parse(decodeURIComponent(c))}catch{}e({token:l,user:f});return}a.writeHead(400,{"Content-Type":"text/plain"}),a.end("Missing token");return}a.writeHead(404,{"Content-Type":"text/plain"}),a.end("Not found")});o.listen(je,()=>{});let s=setTimeout(()=>{o.close(),n(new Error("Authentication timed out. Please try again."))},t);o.on("close",()=>{clearTimeout(s)}),o.on("error",r=>{r.code==="EADDRINUSE"?n(new Error(`Port ${je} is in use. Close other GAL auth processes and try again.`)):n(r)})})}function Co(){let t=new B("auth").description("Manage GitHub authentication");return t.command("login").description("Authenticate with GitHub OAuth").action(async()=>{console.log(i.blue(`
405
405
  \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550`)),console.log(i.blue(" GAL CLI - GitHub Authentication")),console.log(i.blue(`\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550
406
406
  `));let e=y.load(),n=e.apiUrl||process.env.GAL_API_URL||(()=>{throw new Error("API URL not configured. This should never happen.")})();if(e.authToken){let s=new j(e);try{let r=await s.getCurrentUser();console.log(i.yellow(`Already logged in as ${i.bold(r.login)}`)),console.log(i.dim(`Use "gal auth logout" first to switch accounts.
407
- `));return}catch{}}let o=T("Starting authentication...").start();try{let s=`http://localhost:${je}${yo}`,r=`${n}/auth/github?redirect=${encodeURIComponent(s)}&source=cli&force_select=true`;o.text="Opening browser for GitHub authentication...";let a=dr();ur(r),o.text="Waiting for authentication (check your browser)...";let{token:u,user:l}=await a;o.succeed(i.green("Authentication successful!")),At(!0),e.authToken=u,l?(e.defaultOrg=l.organizations?.[0]||void 0,console.log(i.blue(`
407
+ `)),process.exit(0)}catch{}}let o=T("Starting authentication...").start();try{let s=`http://localhost:${je}${yo}`,r=`${n}/auth/github?redirect=${encodeURIComponent(s)}&source=cli&force_select=true`;o.text="Opening browser for GitHub authentication...";let a=dr();ur(r),o.text="Waiting for authentication (check your browser)...";let{token:u,user:l}=await a;o.succeed(i.green("Authentication successful!")),At(!0),e.authToken=u,l?(e.defaultOrg=l.organizations?.[0]||void 0,console.log(i.blue(`
408
408
  Logged in as:`)),console.log(` User: ${i.bold(l.login)}`),console.log(` Name: ${l.name||i.dim("(not set)")}`),console.log(` Email: ${l.email||i.dim("(not set)")}`),l.organizations?.length&&(console.log(` Organizations: ${l.organizations.join(", ")}`),console.log(` Default org: ${i.bold(e.defaultOrg)}`))):console.log(i.dim(`
409
- User details not available.`));let d=e.defaultOrg||"your-organization",c=lr(d,n),f=cr(d,n);if((c||f)&&(console.log(i.dim(" \u2713 Sync reminder hooks installed:")),c&&console.log(i.dim(" - Claude Code (~/.claude/hooks/)")),f&&console.log(i.dim(" - Cursor IDE (~/.cursor/hooks/)"))),y.save(e),e.defaultOrg)try{let h=new j(e),p=await Promise.resolve().then(()=>b(go(),1));await h.reportDeveloperStatus(e.defaultOrg,{cliInstalled:!0,cliVersion:p.version,authenticated:!0,authExpiresAt:new Date(Date.now()+7*24*60*60*1e3).toISOString()})}catch{console.log(i.dim(" \u26A0 Could not report status to dashboard"))}console.log(i.green(`
409
+ User details not available.`));let d=e.defaultOrg||"your-organization",c=lr(d,n),f=cr(d,n);if((c||f)&&(console.log(i.dim(" \u2713 Sync reminder hooks installed:")),c&&console.log(i.dim(" - Claude Code (~/.claude/hooks/)")),f&&console.log(i.dim(" - Cursor IDE (~/.cursor/hooks/)"))),y.save(e),e.defaultOrg)try{let h=new j(e),m=await Promise.resolve().then(()=>b(go(),1));await h.reportDeveloperStatus(e.defaultOrg,{cliInstalled:!0,cliVersion:m.version,authenticated:!0,authExpiresAt:new Date(Date.now()+7*24*60*60*1e3).toISOString()})}catch{console.log(i.dim(" \u26A0 Could not report status to dashboard"))}console.log(i.green(`
410
410
  \u2713 Credentials saved!
411
411
  `)),console.log("Next steps:"),console.log(` ${i.cyan("gal sync --pull")} - Pull org-approved config`),console.log(` ${i.cyan("gal auth status")} - Check auth status
412
- `)}catch(s){o.fail(i.red("Authentication failed"));let r=s instanceof Error?s:new Error(String(s));At(!1,r),console.error(i.red(r.message)),await ce("auth login",r),process.exit(1)}}),t.command("status").description("Show current authentication status").option("--json","Output as JSON (for extension/script integration)").action(async e=>{let n=y.load();if(e.json){if(!n.authToken){console.log(JSON.stringify({authenticated:!1,expired:!1,user:null,organizations:[]}));return}try{let r=await new j(n).getCurrentUser();console.log(JSON.stringify({authenticated:!0,expired:!1,user:r.login,email:r.email,name:r.name,organizations:r.organizations||[],defaultOrg:n.defaultOrg,apiUrl:n.apiUrl||ee}))}catch{console.log(JSON.stringify({authenticated:!1,expired:!0,user:null,organizations:[]}))}return}if(!n.authToken){console.log(i.yellow(`
412
+ `),process.exit(0)}catch(s){o.fail(i.red("Authentication failed"));let r=s instanceof Error?s:new Error(String(s));At(!1,r),console.error(i.red(r.message)),await ce("auth login",r),process.exit(1)}}),t.command("status").description("Show current authentication status").option("--json","Output as JSON (for extension/script integration)").action(async e=>{let n=y.load();if(e.json){n.authToken||(console.log(JSON.stringify({authenticated:!1,expired:!1,user:null,organizations:[]})),process.exit(0));try{let r=await new j(n).getCurrentUser();console.log(JSON.stringify({authenticated:!0,expired:!1,user:r.login,email:r.email,name:r.name,organizations:r.organizations||[],defaultOrg:n.defaultOrg,apiUrl:n.apiUrl||ee})),process.exit(0)}catch{console.log(JSON.stringify({authenticated:!1,expired:!0,user:null,organizations:[]})),process.exit(0)}}n.authToken||(console.log(i.yellow(`
413
413
  Not authenticated.`)),console.log(i.dim(`Run: gal auth login
414
- `));return}let o=T("Checking authentication...").start();try{let r=await new j(n).getCurrentUser();o.stop(),console.log(i.green(`
414
+ `)),process.exit(0));let o=T("Checking authentication...").start();try{let r=await new j(n).getCurrentUser();o.stop(),console.log(i.green(`
415
415
  \u2713 Authenticated
416
- `)),console.log(` User: ${i.bold(r.login)}`),console.log(` Name: ${r.name||i.dim("(not set)")}`),console.log(` Email: ${r.email||i.dim("(not set)")}`),r.organizations?.length&&console.log(` Organizations: ${r.organizations.join(", ")}`),n.defaultOrg&&console.log(` Default org: ${i.bold(n.defaultOrg)}`),console.log(` API: ${n.apiUrl}`),console.log()}catch{o.fail(i.red("Token invalid or expired")),console.log(i.dim(`Run: gal auth login
417
- `))}}),t.command("logout").description("Clear saved credentials").action(()=>{let e=y.load();if(!e.authToken){console.log(i.yellow(`
416
+ `)),console.log(` User: ${i.bold(r.login)}`),console.log(` Name: ${r.name||i.dim("(not set)")}`),console.log(` Email: ${r.email||i.dim("(not set)")}`),r.organizations?.length&&console.log(` Organizations: ${r.organizations.join(", ")}`),n.defaultOrg&&console.log(` Default org: ${i.bold(n.defaultOrg)}`),console.log(` API: ${n.apiUrl}`),console.log(),process.exit(0)}catch{o.fail(i.red("Token invalid or expired")),console.log(i.dim(`Run: gal auth login
417
+ `)),process.exit(0)}}),t.command("logout").description("Clear saved credentials").action(()=>{let e=y.load();e.authToken||(console.log(i.yellow(`
418
418
  Not logged in.
419
- `));return}delete e.authToken,delete e.defaultOrg,y.save(e),console.log(i.green(`
419
+ `)),process.exit(0)),delete e.authToken,delete e.defaultOrg,y.save(e),console.log(i.green(`
420
420
  \u2713 Logged out successfully.
421
- `))}),t}var D=require("fs"),g=require("path");var Wt=require("fs"),J=require("path"),te=null,Ge=null,fr=process.env.GAL_DEBUG==="true"||process.env.GAL_DEBUG==="1";function ne(t){fr&&console.log(`[GAL:project-detection] ${t}`)}function Ue(t=process.cwd()){if(ne(`Finding project root from: ${t}`),Ge===t&&te!==null)return ne(`Using cached project root: ${te}`),te;let e=t,n=(0,J.parse)(e).root;for(;e!==n;){let s=(0,J.join)(e,".git");if((0,Wt.existsSync)(s))return ne(`Found .git at: ${e}`),Ge=t,te=e,e;ne(`No .git in: ${e}, checking parent...`),e=(0,J.dirname)(e)}let o=(0,J.join)(n,".git");return(0,Wt.existsSync)(o)?(ne(`Found .git at filesystem root: ${n}`),Ge=t,te=n,n):(ne(`Not in git repo, using start path: ${t}`),Ge=t,te=t,t)}var _o=require("crypto"),vo="1.0.0",hr=`---
421
+ `)),process.exit(0)}),t}var D=require("fs"),g=require("path");var Wt=require("fs"),J=require("path"),te=null,Ge=null,fr=process.env.GAL_DEBUG==="true"||process.env.GAL_DEBUG==="1";function ne(t){fr&&console.log(`[GAL:project-detection] ${t}`)}function Ue(t=process.cwd()){if(ne(`Finding project root from: ${t}`),Ge===t&&te!==null)return ne(`Using cached project root: ${te}`),te;let e=t,n=(0,J.parse)(e).root;for(;e!==n;){let s=(0,J.join)(e,".git");if((0,Wt.existsSync)(s))return ne(`Found .git at: ${e}`),Ge=t,te=e,e;ne(`No .git in: ${e}, checking parent...`),e=(0,J.dirname)(e)}let o=(0,J.join)(n,".git");return(0,Wt.existsSync)(o)?(ne(`Found .git at filesystem root: ${n}`),Ge=t,te=n,n):(ne(`Not in git repo, using start path: ${t}`),Ge=t,te=t,t)}var _o=require("crypto"),vo="1.0.0",hr=`---
422
422
  description: "GAL CLI awareness for syncing org-approved configs"
423
423
  alwaysApply: true
424
424
  ---
@@ -751,25 +751,25 @@ Use the approved deployment workflow:
751
751
 
752
752
  // Allow the operation
753
753
  console.log(JSON.stringify({ decision: 'allow' }));
754
- `}]};function mr(t){let e=(0,g.join)(t,".cursor","rules","gal-cli"),n=(0,g.join)(e,"RULE.md");try{if((0,D.existsSync)(n)){let s=(0,D.readFileSync)(n,"utf-8").match(/GAL_CURSOR_RULES_VERSION = "([^"]+)"/);if(s&&s[1]===vo)return!0}return(0,D.existsSync)(e)||(0,D.mkdirSync)(e,{recursive:!0}),(0,D.writeFileSync)(n,hr,"utf-8"),!0}catch{return!1}}function pr(t,e,n,o,s=[],r,a){let u=Ue(),l=(0,g.join)(u,".gal"),d=(0,g.join)(l,"sync-state.json");(0,D.existsSync)(l)||(0,D.mkdirSync)(l,{recursive:!0});let c={lastSyncTimestamp:new Date().toISOString(),lastSyncHash:e,approvedConfigHash:n,lastCheckTimestamp:new Date().toISOString(),organization:t,version:o,syncedFiles:s.length>0?s:void 0,policyName:r||void 0,hookSettings:a};(0,D.writeFileSync)(d,JSON.stringify(c,null,2),"utf-8")}function Dr(t){return(0,_o.createHash)("sha256").update(t).digest("hex").substring(0,16)}function gr(){let t=Ue(),e=(0,g.join)(t,".gal","sync-state.json");if(!(0,D.existsSync)(e))return null;try{let n=(0,D.readFileSync)(e,"utf-8");return JSON.parse(n)}catch{return null}}function Eo(t){let e=t.match(/^---\s*\n([\s\S]*?)\n---/);if(!e)return{};let n=e[1],o={},s=n.match(/description:\s*(.+)/);s&&(o.description=s[1].trim().replace(/^["']|["']$/g,""));let r=n.match(/allowed-tools:\s*\[([^\]]+)\]/);return r&&(o.allowedTools=r[1].split(",").map(a=>a.trim())),o}function Fr(t){return t==="settings.json"||t.endsWith("/settings.json")?"settings":t.startsWith("rules/")||t.includes("/rules/")?"rules":t.startsWith("commands/")||t.includes("/commands/")?"commands":t.startsWith("hooks/")||t.includes("/hooks/")?"hooks":t.startsWith("agents/")||t.includes("/agents/")?"agents":t===".mcp.json"||t.endsWith(".mcp.json")?"mcp":"unknown"}function yr(t){let e=t.split("/");return e[e.length-1].replace(/\.(md|json|js|py|sh)$/,"")}function Cr(t,e,n,o){let s={};for(let f of t)s[f.type]||(s[f.type]=[]),s[f.type].push(f);let r={commands:{label:"Slash Commands",icon:"/"},settings:{label:"Settings",icon:"\u2699"},rules:{label:"Rules",icon:"\u{1F4CB}"},hooks:{label:"Hooks",icon:"\u{1FA9D}"},agents:{label:"Agents",icon:"\u{1F916}"},mcp:{label:"MCP Config",icon:"\u{1F50C}"},unknown:{label:"Other",icon:"\u{1F4C4}"}};console.log(i.dim(`
754
+ `}]};function pr(t){let e=(0,g.join)(t,".cursor","rules","gal-cli"),n=(0,g.join)(e,"RULE.md");try{if((0,D.existsSync)(n)){let s=(0,D.readFileSync)(n,"utf-8").match(/GAL_CURSOR_RULES_VERSION = "([^"]+)"/);if(s&&s[1]===vo)return!0}return(0,D.existsSync)(e)||(0,D.mkdirSync)(e,{recursive:!0}),(0,D.writeFileSync)(n,hr,"utf-8"),!0}catch{return!1}}function mr(t,e,n,o,s=[],r,a){let u=Ue(),l=(0,g.join)(u,".gal"),d=(0,g.join)(l,"sync-state.json");(0,D.existsSync)(l)||(0,D.mkdirSync)(l,{recursive:!0});let c={lastSyncTimestamp:new Date().toISOString(),lastSyncHash:e,approvedConfigHash:n,lastCheckTimestamp:new Date().toISOString(),organization:t,version:o,syncedFiles:s.length>0?s:void 0,policyName:r||void 0,hookSettings:a};(0,D.writeFileSync)(d,JSON.stringify(c,null,2),"utf-8")}function Dr(t){return(0,_o.createHash)("sha256").update(t).digest("hex").substring(0,16)}function gr(){let t=Ue(),e=(0,g.join)(t,".gal","sync-state.json");if(!(0,D.existsSync)(e))return null;try{let n=(0,D.readFileSync)(e,"utf-8");return JSON.parse(n)}catch{return null}}function Eo(t){let e=t.match(/^---\s*\n([\s\S]*?)\n---/);if(!e)return{};let n=e[1],o={},s=n.match(/description:\s*(.+)/);s&&(o.description=s[1].trim().replace(/^["']|["']$/g,""));let r=n.match(/allowed-tools:\s*\[([^\]]+)\]/);return r&&(o.allowedTools=r[1].split(",").map(a=>a.trim())),o}function Fr(t){return t==="settings.json"||t.endsWith("/settings.json")?"settings":t.startsWith("rules/")||t.includes("/rules/")?"rules":t.startsWith("commands/")||t.includes("/commands/")?"commands":t.startsWith("hooks/")||t.includes("/hooks/")?"hooks":t.startsWith("agents/")||t.includes("/agents/")?"agents":t===".mcp.json"||t.endsWith(".mcp.json")?"mcp":"unknown"}function yr(t){let e=t.split("/");return e[e.length-1].replace(/\.(md|json|js|py|sh)$/,"")}function Cr(t,e,n,o){let s={};for(let f of t)s[f.type]||(s[f.type]=[]),s[f.type].push(f);let r={commands:{label:"Slash Commands",icon:"/"},settings:{label:"Settings",icon:"\u2699"},rules:{label:"Rules",icon:"\u{1F4CB}"},hooks:{label:"Hooks",icon:"\u{1FA9D}"},agents:{label:"Agents",icon:"\u{1F916}"},mcp:{label:"MCP Config",icon:"\u{1F50C}"},unknown:{label:"Other",icon:"\u{1F4C4}"}};console.log(i.dim(`
755
755
  // Synced from org approved config:
756
- `));for(let[f,h]of Object.entries(s)){let{label:p}=r[f]||{label:f,icon:"\u{1F4C4}"};if(f==="commands")for(let m of h)console.log(i.green(` /${m.name}`)),m.description&&console.log(i.white(` ${m.description}`)),m.allowedTools&&m.allowedTools.length>0&&console.log(i.dim(" Allowed tools: ")+i.cyan(m.allowedTools.join(", "))),console.log();else if(f==="settings")console.log(i.green(" \u2699 Settings")),console.log(i.white(" Organization-approved configuration")),console.log();else if(f==="agents")for(let m of h)console.log(i.green(` \u{1F916} ${m.name}`)),m.description&&console.log(i.white(` ${m.description}`)),console.log();else if(f==="rules"){console.log(i.green(` \u{1F4CB} Rules (${h.length})`));for(let m of h)console.log(i.dim(` \u2192 ${m.name}.md`));console.log()}else if(f==="hooks"){console.log(i.green(` \u{1FA9D} Hooks (${h.length})`));for(let m of h)console.log(i.dim(` \u2192 ${m.path}`));console.log()}else if(f==="mcp")console.log(i.green(" \u{1F50C} MCP Configuration")),console.log(i.white(" Model Context Protocol servers")),console.log();else{console.log(i.green(` \u{1F4C4} ${p} (${h.length})`));for(let m of h)console.log(i.dim(` \u2192 ${m.path}`));console.log()}}console.log(i.dim("\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500"));let a=t.length,u=s.commands?.length||0,l=o?` \u2022 Policy: ${i.cyan(o)}`:"",d=[];u>0&&d.push(`${u} command${u>1?"s":""}`),s.rules?.length&&d.push(`${s.rules.length} rule${s.rules.length>1?"s":""}`),s.settings?.length&&d.push("settings"),s.agents?.length&&d.push(`${s.agents.length} agent${s.agents.length>1?"s":""}`),s.hooks?.length&&d.push(`${s.hooks.length} hook${s.hooks.length>1?"s":""}`),s.mcp?.length&&d.push("MCP config");let c=d.length>0?d.join(", "):`${a} file${a>1?"s":""}`;console.log(i.green("[GAL] ")+i.white(`${c} synced from ${e} v${n}`)+l)}function Ao(){let t=new B("sync").description("Sync local configs with CISO-approved organization standard");return t.command("status").description("Check current sync status (for extension integration)").option("--json","Output as JSON").action(async n=>{let o=gr();if(n.json){if(!o){console.log(JSON.stringify({synced:!1,neverSynced:!0,upToDate:!1,lastSync:null,organization:null,hash:null}));return}let r=o.lastSyncHash===o.approvedConfigHash;console.log(JSON.stringify({synced:!0,neverSynced:!1,upToDate:r,outdated:!r,lastSync:o.lastSyncTimestamp,lastCheck:o.lastCheckTimestamp,organization:o.organization,version:o.version,hash:o.lastSyncHash,approvedHash:o.approvedConfigHash,syncedFiles:o.syncedFiles||[]}));return}if(!o){console.log(i.yellow(`
756
+ `));for(let[f,h]of Object.entries(s)){let{label:m}=r[f]||{label:f,icon:"\u{1F4C4}"};if(f==="commands")for(let p of h)console.log(i.green(` /${p.name}`)),p.description&&console.log(i.white(` ${p.description}`)),p.allowedTools&&p.allowedTools.length>0&&console.log(i.dim(" Allowed tools: ")+i.cyan(p.allowedTools.join(", "))),console.log();else if(f==="settings")console.log(i.green(" \u2699 Settings")),console.log(i.white(" Organization-approved configuration")),console.log();else if(f==="agents")for(let p of h)console.log(i.green(` \u{1F916} ${p.name}`)),p.description&&console.log(i.white(` ${p.description}`)),console.log();else if(f==="rules"){console.log(i.green(` \u{1F4CB} Rules (${h.length})`));for(let p of h)console.log(i.dim(` \u2192 ${p.name}.md`));console.log()}else if(f==="hooks"){console.log(i.green(` \u{1FA9D} Hooks (${h.length})`));for(let p of h)console.log(i.dim(` \u2192 ${p.path}`));console.log()}else if(f==="mcp")console.log(i.green(" \u{1F50C} MCP Configuration")),console.log(i.white(" Model Context Protocol servers")),console.log();else{console.log(i.green(` \u{1F4C4} ${m} (${h.length})`));for(let p of h)console.log(i.dim(` \u2192 ${p.path}`));console.log()}}console.log(i.dim("\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500"));let a=t.length,u=s.commands?.length||0,l=o?` \u2022 Policy: ${i.cyan(o)}`:"",d=[];u>0&&d.push(`${u} command${u>1?"s":""}`),s.rules?.length&&d.push(`${s.rules.length} rule${s.rules.length>1?"s":""}`),s.settings?.length&&d.push("settings"),s.agents?.length&&d.push(`${s.agents.length} agent${s.agents.length>1?"s":""}`),s.hooks?.length&&d.push(`${s.hooks.length} hook${s.hooks.length>1?"s":""}`),s.mcp?.length&&d.push("MCP config");let c=d.length>0?d.join(", "):`${a} file${a>1?"s":""}`;console.log(i.green("[GAL] ")+i.white(`${c} synced from ${e} v${n}`)+l)}function Ao(){let t=new B("sync").description("Sync local configs with CISO-approved organization standard");return t.command("status").description("Check current sync status (for extension integration)").option("--json","Output as JSON").action(async n=>{let o=gr();if(n.json){o||(console.log(JSON.stringify({synced:!1,neverSynced:!0,upToDate:!1,lastSync:null,organization:null,hash:null})),process.exit(0));let r=o.lastSyncHash===o.approvedConfigHash;console.log(JSON.stringify({synced:!0,neverSynced:!1,upToDate:r,outdated:!r,lastSync:o.lastSyncTimestamp,lastCheck:o.lastCheckTimestamp,organization:o.organization,version:o.version,hash:o.lastSyncHash,approvedHash:o.approvedConfigHash,syncedFiles:o.syncedFiles||[]})),process.exit(0)}o||(console.log(i.yellow(`
757
757
  Never synced.`)),console.log(i.dim(`Run: gal sync --pull
758
- `));return}o.lastSyncHash===o.approvedConfigHash?console.log(i.green(`
758
+ `)),process.exit(0)),o.lastSyncHash===o.approvedConfigHash?console.log(i.green(`
759
759
  \u2713 Config is up to date
760
760
  `)):(console.log(i.yellow(`
761
761
  \u26A0 Config may be outdated
762
762
  `)),console.log(i.dim(`Run: gal sync --pull to update
763
- `))),console.log(` Organization: ${i.bold(o.organization)}`),console.log(` Version: ${o.version}`),console.log(` Last sync: ${new Date(o.lastSyncTimestamp).toLocaleString()}`),o.syncedFiles&&o.syncedFiles.length>0&&console.log(` Synced files: ${o.syncedFiles.length}`),console.log()}),t.argument("[orgName]","Organization name (uses default if not specified)").option("-d, --directory <path>","Local config directory (auto-detects project root)",process.cwd()).option("-p, --platform <platform>","Filter by platform (claude, cursor, etc.)").option("--pull","Download CISO-approved config to local directory").option("--check","Check if local files match approved config (for hooks)").option("--output-json","Output as JSON").action(async(n,o)=>{try{let s=Ue(o.directory);if(o.demo||process.env.GAL_DEMO_MODE==="true"){let m=n||"Scheduler-Systems";o.pull?await wr(m,s):(console.log(i.green(`
764
- [DEMO MODE] Would sync with Scheduler-Systems Ltd approved config`)),console.log(i.dim("Use --pull to write demo config files")));return}let a=y.load();!a.authToken&&!a.apiKey&&(console.error(i.red("\u2716 Not authenticated. Run: gal auth login")),process.exit(1));let u=n||a.defaultOrg;u||(console.error(i.red("Error: No organization specified and no default set")),console.log(i.dim("Usage: gal sync <orgName>")),console.log(i.dim(" or: gal config set defaultOrg <orgName>")),process.exit(1));let l=a.apiUrl||process.env.GAL_API_URL;l||(console.error(i.red("Error: API URL not configured")),process.exit(1));let d=new j({...a,apiUrl:l});if(o.pull){await Ar(d,u,s,o.platform,l);return}if(o.check){await br(d,u,s,o.platform);return}let c=T(`Comparing configs for ${u}...`).start(),f;try{f=await d.getOrganization(u)}catch(m){c.fail(i.red(`Failed to fetch organization ${u}`)),console.error(i.dim(m.message)),process.exit(1)}let h=Er(s,o.platform);c.stop();let p=_r(h,f);if(o.outputJson){console.log(JSON.stringify(p,null,2));return}vr(u,p)}catch(s){let r=s instanceof Error?s:new Error(String(s));console.error(i.red("Error:"),r.message),await ce("sync",r),process.exit(1)}}),t}function Er(t,e){let n=["claude","cursor","gemini","codex","windsurf"],o=[];for(let s of n){if(e&&s!==e)continue;let r=Jt(s),a=(0,g.join)(t,r);if(!(0,D.existsSync)(a))continue;let u=[],l=(0,g.join)(a,"settings.json");(0,D.existsSync)(l)&&u.push({path:l,type:"settings",content:(0,D.readFileSync)(l,"utf-8")});let d=(0,g.join)(a,"rules");if((0,D.existsSync)(d)){let c=(0,D.readdirSync)(d).filter(f=>f.endsWith(".md")||f.endsWith(".mdc"));for(let f of c){let h=(0,g.join)(d,f);u.push({path:h,type:"rule",content:(0,D.readFileSync)(h,"utf-8")})}}if(s==="cursor"){let c=(0,g.join)(t,".cursorrules");(0,D.existsSync)(c)&&u.push({path:c,type:"rule",content:(0,D.readFileSync)(c,"utf-8")})}if(s==="claude"){let c=(0,g.join)(a,"commands");if((0,D.existsSync)(c)){let h=(0,D.readdirSync)(c).filter(p=>p.endsWith(".md"));for(let p of h){let m=(0,g.join)(c,p);u.push({path:m,type:"command",content:(0,D.readFileSync)(m,"utf-8")})}}let f=(0,g.join)(a,"hooks");if((0,D.existsSync)(f)){let h=(0,D.readdirSync)(f).filter(p=>p.endsWith(".py")||p.endsWith(".sh"));for(let p of h){let m=(0,g.join)(f,p);u.push({path:m,type:"hook",content:(0,D.readFileSync)(m,"utf-8")})}}}u.length>0&&o.push({platform:s,directory:a,files:u})}return o}function Jt(t){return{claude:".claude",cursor:".cursor",gemini:".gemini",codex:".codex",windsurf:".windsurf"}[t]}function _r(t,e){let n={platforms:{},summary:{localOnly:0,remoteOnly:0,inSync:0,total:0}},o=t.find(a=>a.platform==="claude"),s=e.totalCommands+e.totalHooks+(e.settings.versions>0?1:0),r={hasLocal:!!o,hasRemote:s>0,localCount:o?.files.length||0,remoteCount:s};return o&&s===0?(r.status="local-only",n.summary.localOnly+=o.files.length):!o&&s>0?(r.status="remote-only",n.summary.remoteOnly+=s):o&&s>0&&(r.status="exists-both",n.summary.inSync+=o.files.length),n.platforms.claude=r,n.summary.total=Math.max(r.localCount,r.remoteCount),n}function vr(t,e){console.log(i.blue(`
763
+ `))),console.log(` Organization: ${i.bold(o.organization)}`),console.log(` Version: ${o.version}`),console.log(` Last sync: ${new Date(o.lastSyncTimestamp).toLocaleString()}`),o.syncedFiles&&o.syncedFiles.length>0&&console.log(` Synced files: ${o.syncedFiles.length}`),console.log(),process.exit(0)}),t.argument("[orgName]","Organization name (uses default if not specified)").option("-d, --directory <path>","Local config directory (auto-detects project root)",process.cwd()).option("-p, --platform <platform>","Filter by platform (claude, cursor, etc.)").option("--pull","Download CISO-approved config to local directory").option("--check","Check if local files match approved config (for hooks)").option("--output-json","Output as JSON").action(async(n,o)=>{try{let s=Ue(o.directory);if(o.demo||process.env.GAL_DEMO_MODE==="true"){let p=n||"Scheduler-Systems";o.pull?await wr(p,s):(console.log(i.green(`
764
+ [DEMO MODE] Would sync with Scheduler-Systems Ltd approved config`)),console.log(i.dim("Use --pull to write demo config files"))),process.exit(0)}let a=y.load();!a.authToken&&!a.apiKey&&(console.error(i.red("\u2716 Not authenticated. Run: gal auth login")),process.exit(1));let u=n||a.defaultOrg;u||(console.error(i.red("Error: No organization specified and no default set")),console.log(i.dim("Usage: gal sync <orgName>")),console.log(i.dim(" or: gal config set defaultOrg <orgName>")),process.exit(1));let l=a.apiUrl||process.env.GAL_API_URL;l||(console.error(i.red("Error: API URL not configured")),process.exit(1));let d=new j({...a,apiUrl:l});o.pull&&(await Ar(d,u,s,o.platform,l),process.exit(0)),o.check&&(await br(d,u,s,o.platform),process.exit(0));let c=T(`Comparing configs for ${u}...`).start(),f;try{f=await d.getOrganization(u)}catch(p){c.fail(i.red(`Failed to fetch organization ${u}`)),console.error(i.dim(p.message)),process.exit(1)}let h=Er(s,o.platform);c.stop();let m=_r(h,f);o.outputJson&&(console.log(JSON.stringify(m,null,2)),process.exit(0)),vr(u,m),process.exit(0)}catch(s){let r=s instanceof Error?s:new Error(String(s));console.error(i.red("Error:"),r.message),await ce("sync",r),process.exit(1)}}),t}function Er(t,e){let n=["claude","cursor","gemini","codex","windsurf"],o=[];for(let s of n){if(e&&s!==e)continue;let r=Jt(s),a=(0,g.join)(t,r);if(!(0,D.existsSync)(a))continue;let u=[],l=(0,g.join)(a,"settings.json");(0,D.existsSync)(l)&&u.push({path:l,type:"settings",content:(0,D.readFileSync)(l,"utf-8")});let d=(0,g.join)(a,"rules");if((0,D.existsSync)(d)){let c=(0,D.readdirSync)(d).filter(f=>f.endsWith(".md")||f.endsWith(".mdc"));for(let f of c){let h=(0,g.join)(d,f);u.push({path:h,type:"rule",content:(0,D.readFileSync)(h,"utf-8")})}}if(s==="cursor"){let c=(0,g.join)(t,".cursorrules");(0,D.existsSync)(c)&&u.push({path:c,type:"rule",content:(0,D.readFileSync)(c,"utf-8")})}if(s==="claude"){let c=(0,g.join)(a,"commands");if((0,D.existsSync)(c)){let h=(0,D.readdirSync)(c).filter(m=>m.endsWith(".md"));for(let m of h){let p=(0,g.join)(c,m);u.push({path:p,type:"command",content:(0,D.readFileSync)(p,"utf-8")})}}let f=(0,g.join)(a,"hooks");if((0,D.existsSync)(f)){let h=(0,D.readdirSync)(f).filter(m=>m.endsWith(".py")||m.endsWith(".sh"));for(let m of h){let p=(0,g.join)(f,m);u.push({path:p,type:"hook",content:(0,D.readFileSync)(p,"utf-8")})}}}u.length>0&&o.push({platform:s,directory:a,files:u})}return o}function Jt(t){return{claude:".claude",cursor:".cursor",gemini:".gemini",codex:".codex",windsurf:".windsurf"}[t]}function _r(t,e){let n={platforms:{},summary:{localOnly:0,remoteOnly:0,inSync:0,total:0}},o=t.find(a=>a.platform==="claude"),s=e.totalCommands+e.totalHooks+(e.settings.versions>0?1:0),r={hasLocal:!!o,hasRemote:s>0,localCount:o?.files.length||0,remoteCount:s};return o&&s===0?(r.status="local-only",n.summary.localOnly+=o.files.length):!o&&s>0?(r.status="remote-only",n.summary.remoteOnly+=s):o&&s>0&&(r.status="exists-both",n.summary.inSync+=o.files.length),n.platforms.claude=r,n.summary.total=Math.max(r.localCount,r.remoteCount),n}function vr(t,e){console.log(i.blue(`
765
765
  Sync Status for ${t}:
766
766
  `));for(let[n,o]of Object.entries(e.platforms)){let s=o;console.log(i.bold(n.toUpperCase())),s.status==="local-only"?(console.log(i.yellow(" \u26A0 Local only:"),`${s.localCount} configs`),console.log(i.dim(" These configs exist locally but not in GAL"))):s.status==="remote-only"?(console.log(i.cyan(" \u2193 Remote only:"),`${s.remoteCount} configs`),console.log(i.dim(" These configs exist in GAL but not locally"))):s.status==="exists-both"&&(console.log(i.green(" \u2713 Exists in both:"),`Local: ${s.localCount}, Remote: ${s.remoteCount}`),s.localCount!==s.remoteCount&&console.log(i.dim(" File counts differ - manual review needed"))),console.log()}console.log(i.bold("Summary:")),console.log(i.gray(" Total configs:"),e.summary.total),console.log(i.yellow(" Local only:"),e.summary.localOnly),console.log(i.cyan(" Remote only:"),e.summary.remoteOnly),e.summary.localOnly>0&&console.log(i.dim(`
767
767
  \u{1F4A1} Tip: Local-only configs are not tracked by GAL. Consider pushing them to your repo.`)),e.summary.remoteOnly>0&&console.log(i.dim(`
768
768
  \u{1F4A1} Tip: Use "gal sync --pull" to download CISO-approved configs.`))}async function Ar(t,e,n,o,s){let r=o?[o]:["claude","cursor","gemini","codex","windsurf"];console.log(i.blue(`
769
769
  \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550`)),console.log(i.blue(" GAL Config Sync - Convenience Package")),console.log(i.blue(`\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550
770
- `));let a;try{a=await t.getHookSettings(e),console.log(i.dim(` Fetched hook settings (interval: ${a.globalIntervalMinutes||10} min)`))}catch{a={globalIntervalMinutes:10,intervals:{}}}let u=!1,l="",d="",c="",f="",h=[],p=[];for(let m of r){let k=T(`Checking ${m} approved config...`).start();try{let v=await t.getApprovedConfig(e,m);if(!v.approved){k.info(i.dim(`${m}: No approved config set by CISO`));continue}if(u=!0,k.succeed(i.green(`${m}: Found approved config v${v.version}`)),v.configContent){let Zt=Jt(m),Fe=(0,g.join)(n,Zt);(0,D.existsSync)(Fe)||(0,D.mkdirSync)(Fe,{recursive:!0});let en=Dr(v.configContent);l=en,d=en,c=v.version||"1",f=v.policyName||"";try{let He=JSON.parse(v.configContent);for(let[oe,se]of Object.entries(He)){let tn=(0,g.join)(Fe,oe),nn=(0,g.dirname)(tn);(0,D.existsSync)(nn)||(0,D.mkdirSync)(nn,{recursive:!0}),(0,D.writeFileSync)(tn,se);let Ro=(0,g.join)(Zt,oe);h.push(Ro);let Ve=Fr(oe),Lo=yr(oe),ye={path:oe,type:Ve,name:Lo};if(Ve==="commands"&&typeof se=="string"){let{description:qe,allowedTools:Po}=Eo(se);ye.description=qe,ye.allowedTools=Po}if(Ve==="agents"&&typeof se=="string"){let{description:qe}=Eo(se);ye.description=qe}p.push(ye)}}catch{let He=(0,g.join)(Fe,"approved-config.json");(0,D.writeFileSync)(He,v.configContent),p.push({path:"approved-config.json",type:"unknown",name:"approved-config"})}}else console.log(i.yellow(" \u26A0 Config approved but content not stored")),console.log(i.dim(` Hash: ${v.hash}`)),console.log(i.dim(` Approved by: ${v.approvedBy} on ${v.approvedAt}`)),d=v.hash||"",c=v.version||"1",f=v.policyName||""}catch(v){k.fail(i.red(`${m}: Failed to fetch - ${v.message}`))}}if(u){pr(e,l,d,c,h,f,a),p.length>0?Cr(p,e,c,f):h.length>0&&(console.log(i.dim(" Sync state saved to .gal/sync-state.json")),console.log(i.dim(` Tracking ${h.length} synced file(s)`))),a&&console.log(i.dim(` Hook reminder interval: ${a.globalIntervalMinutes||10} minutes`)),(!o||o==="cursor")&&mr(n)&&(console.log(i.dim(" GAL CLI rules installed to .cursor/rules/gal-cli/")),h.push(".cursor/rules/gal-cli/RULE.md")),bt(h.length,!0);try{await t.reportDeveloperStatus(e,{lastSyncAt:new Date().toISOString(),syncedConfigVersion:c,syncStatus:"synced"})}catch{}console.log(i.green(`
771
- \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550`)),console.log(i.green(" \u2713 Sync complete! Your configs match org standard.")),console.log(i.green("\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550"));let m=f?` \u2022 Policy: ${i.cyan(f)}`:"";console.log(i.blue(`
772
- [GAL] ${h.length} org configs loaded${m}
770
+ `));let a;try{a=await t.getHookSettings(e),console.log(i.dim(` Fetched hook settings (interval: ${a.globalIntervalMinutes||10} min)`))}catch{a={globalIntervalMinutes:10,intervals:{}}}let u=!1,l="",d="",c="",f="",h=[],m=[];for(let p of r){let k=T(`Checking ${p} approved config...`).start();try{let v=await t.getApprovedConfig(e,p);if(!v.approved){k.info(i.dim(`${p}: No approved config set by CISO`));continue}if(u=!0,k.succeed(i.green(`${p}: Found approved config v${v.version}`)),v.configContent){let Zt=Jt(p),Fe=(0,g.join)(n,Zt);(0,D.existsSync)(Fe)||(0,D.mkdirSync)(Fe,{recursive:!0});let en=Dr(v.configContent);l=en,d=en,c=v.version||"1",f=v.policyName||"";try{let He=JSON.parse(v.configContent);for(let[oe,se]of Object.entries(He)){let tn=(0,g.join)(Fe,oe),nn=(0,g.dirname)(tn);(0,D.existsSync)(nn)||(0,D.mkdirSync)(nn,{recursive:!0}),(0,D.writeFileSync)(tn,se);let Ro=(0,g.join)(Zt,oe);h.push(Ro);let Ve=Fr(oe),Lo=yr(oe),ye={path:oe,type:Ve,name:Lo};if(Ve==="commands"&&typeof se=="string"){let{description:qe,allowedTools:Po}=Eo(se);ye.description=qe,ye.allowedTools=Po}if(Ve==="agents"&&typeof se=="string"){let{description:qe}=Eo(se);ye.description=qe}m.push(ye)}}catch{let He=(0,g.join)(Fe,"approved-config.json");(0,D.writeFileSync)(He,v.configContent),m.push({path:"approved-config.json",type:"unknown",name:"approved-config"})}}else console.log(i.yellow(" \u26A0 Config approved but content not stored")),console.log(i.dim(` Hash: ${v.hash}`)),console.log(i.dim(` Approved by: ${v.approvedBy} on ${v.approvedAt}`)),d=v.hash||"",c=v.version||"1",f=v.policyName||""}catch(v){k.fail(i.red(`${p}: Failed to fetch - ${v.message}`))}}if(u){mr(e,l,d,c,h,f,a),m.length>0?Cr(m,e,c,f):h.length>0&&(console.log(i.dim(" Sync state saved to .gal/sync-state.json")),console.log(i.dim(` Tracking ${h.length} synced file(s)`))),a&&console.log(i.dim(` Hook reminder interval: ${a.globalIntervalMinutes||10} minutes`)),(!o||o==="cursor")&&pr(n)&&(console.log(i.dim(" GAL CLI rules installed to .cursor/rules/gal-cli/")),h.push(".cursor/rules/gal-cli/RULE.md")),bt(h.length,!0);try{await t.reportDeveloperStatus(e,{lastSyncAt:new Date().toISOString(),syncedConfigVersion:c,syncStatus:"synced"})}catch{}console.log(i.green(`
771
+ \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550`)),console.log(i.green(" \u2713 Sync complete! Your configs match org standard.")),console.log(i.green("\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550"));let p=f?` \u2022 Policy: ${i.cyan(f)}`:"";console.log(i.blue(`
772
+ [GAL] ${h.length} org configs loaded${p}
773
773
  `)),console.log(i.yellow(`\u26A0\uFE0F RESTART Claude Code/Cursor for changes to take effect.
774
774
  `))}else{console.log(i.yellow(`
775
775
  \u26A0 No CISO-approved configs found for this organization.`)),console.log(i.dim(" Ask your admin to approve configs on the GAL dashboard.")),console.log(i.dim(` Dashboard: https://app.gal.run/approved-config
@@ -780,21 +780,21 @@ Sync Status for ${t}:
780
780
  \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550`)),console.log(i.green(" \u2713 Demo sync complete!")),console.log(i.green("\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550")),console.log(i.cyan(`
781
781
  Synced files:`));for(let f of o)console.log(i.dim(` \u2022 ${f}`));console.log(i.yellow(`
782
782
  \u26A0\uFE0F RESTART Claude Code for new slash commands and hooks to work.
783
- `))}function bo(){let t=new B("config");return t.description("Manage GAL CLI configuration").action(()=>{let e=y.load(),n=y.getEnvironment(),s={development:i.yellow,staging:i.cyan,production:i.green}[n]||i.white;console.log(i.blue("Current Configuration:")),console.log(i.gray(" Environment:"),s(n)),console.log(i.gray(" Config file:"),y.getConfigPath()),console.log(i.gray(" API URL:"),e.apiUrl||i.dim("(not set)")),console.log(i.gray(" API Key:"),e.apiKey?i.green("(set)"):i.dim("(not set)")),console.log(i.gray(" Default Org:"),e.defaultOrg||i.dim("(not set)")),console.log(i.gray(" Telemetry:"),e.telemetry===!1?i.red("disabled"):i.green("enabled")),console.log(""),console.log(i.dim(" Tip: Set GAL_ENV=dev|staging|prod to override environment")),console.log(i.dim(" Tip: gal config set telemetry false to disable telemetry"))}),t.command("set").description("Set a configuration value").argument("<key>","Configuration key (apiUrl, apiKey, defaultOrg, telemetry)").argument("<value>","Configuration value").action((e,n)=>{let o=["apiUrl","apiKey","defaultOrg","telemetry"];o.includes(e)||(console.error(i.red(`Invalid key: ${e}. Valid keys: ${o.join(", ")}`)),process.exit(1));let s=n;if(e==="telemetry"){let a=n.toLowerCase();a==="true"||a==="1"||a==="yes"||a==="on"?s=!0:a==="false"||a==="0"||a==="no"||a==="off"?s=!1:(console.error(i.red("Invalid value for telemetry. Use: true/false, yes/no, 1/0, on/off")),process.exit(1))}y.set(e,s);let r=e==="apiKey"?"***":String(s);console.log(i.green(`\u2713 Set ${e} = ${r}`))}),t.command("get").description("Get a configuration value").argument("<key>","Configuration key").action(e=>{let n=y.get(e);console.log(n===void 0?i.dim(`${e} is not set`):e==="apiKey"?"***":n)}),t.command("test").description("Test connection to GAL API").action(async()=>{let e=T("Testing API connection...").start();try{let n=y.load();n.apiUrl||(e.fail(i.red("API URL not configured")),console.log(i.dim("Run: gal config set apiUrl <url>")),process.exit(1)),await new j(n).testConnection()?e.succeed(i.green(`Connected to GAL API at ${n.apiUrl}`)):(e.fail(i.red(`Failed to connect to ${n.apiUrl}`)),process.exit(1))}catch(n){e.fail(i.red("Connection test failed")),console.error(i.dim(n.message)),process.exit(1)}}),t.command("path").description("Show config file path").action(()=>{console.log(y.getConfigPath())}),t}var F=require("fs"),_=require("path"),zt=require("os"),So=require("readline");async function Sr(t){let e=(0,So.createInterface)({input:process.stdin,output:process.stdout});return new Promise(n=>{e.question(`${t} (y/N): `,o=>{e.close(),n(o.toLowerCase()==="y"||o.toLowerCase()==="yes")})})}function Yt(t){if(!(0,F.existsSync)(t))return!1;try{let e=(0,F.readFileSync)(t,"utf-8");return["GAL Config","GAL CLI","GAL Governance","Generated by GAL","gal sync","gal check","Governance Agentic Layer","CISO-approved","gal-sync-reminder","gal-config-hook","gal-safety-hook"].some(o=>e.includes(o))}catch{return!1}}function kr(t){if(!(0,F.existsSync)(t))return!1;try{let e=(0,F.readFileSync)(t,"utf-8");return e.includes("CURRENT_VERSION =")||e.includes("const CURRENT_VERSION")}catch{return!1}}function wo(t){return kr(t)?"npm":Yt(t)?"org-sync":"unknown"}function Or(t){let e=[],n=(0,_.join)((0,zt.homedir)(),".claude"),o=(0,_.join)(n,"hooks"),s=(0,_.join)(n,"status_lines"),r=t?.includeNpmInstalled??!0;if((0,F.existsSync)(o)){let c=(0,F.readdirSync)(o);for(let f of c)if(f.startsWith("gal-")){let h=(0,_.join)(o,f),p=wo(h);if(!r&&p==="npm")continue;e.push({path:h,type:"file",reason:`GAL hook file (${p==="npm"?"npm-installed":p==="org-sync"?"org-synced":"unknown source"})`,isGalOwned:!0,source:p})}}if((0,F.existsSync)(s)){let c=(0,F.readdirSync)(s);for(let f of c)if(f.startsWith("gal-")){let h=(0,_.join)(s,f),p=wo(h);if(!r&&p==="npm")continue;e.push({path:h,type:"file",reason:`GAL status line script (${p==="npm"?"npm-installed":p==="org-sync"?"org-synced":"unknown source"})`,isGalOwned:!0,source:p})}}let a=(0,_.join)(n,"settings.json");if((0,F.existsSync)(a))try{let c=JSON.parse((0,F.readFileSync)(a,"utf-8"));c.hooks?.SessionStart&&c.hooks.SessionStart.some(h=>h.hooks?.some(p=>p.command?.includes("gal-")||p.command?.includes("/gal/")))&&e.push({path:a,type:"hook-entry",reason:"GAL hook entries in SessionStart",isGalOwned:!1}),c.hooks?.UserPromptSubmit&&c.hooks.UserPromptSubmit.some(h=>h.hooks?.some(p=>p.command?.includes("gal-")||p.command?.includes("/gal/")))&&e.push({path:a,type:"hook-entry",reason:"GAL hook entries in UserPromptSubmit",isGalOwned:!1,source:"unknown"}),c.statusLine?.command?.includes("gal-")&&e.push({path:a,type:"statusline-entry",reason:"GAL status line entry in settings",isGalOwned:!1})}catch{}let u=(0,_.join)((0,zt.homedir)(),".cursor"),l=(0,_.join)(u,"hooks");if((0,F.existsSync)(l)){let c=(0,F.readdirSync)(l);for(let f of c)f.startsWith("gal-")&&e.push({path:(0,_.join)(l,f),type:"file",reason:"GAL hook file for Cursor IDE",isGalOwned:!0})}let d=(0,_.join)(u,"hooks.json");if((0,F.existsSync)(d))try{let c=JSON.parse((0,F.readFileSync)(d,"utf-8")),f=["beforeShellExecution","beforeSubmitPrompt"];for(let h of f)if(c.hooks?.[h]&&c.hooks[h].some(m=>m.command?.includes("gal-")||m.command?.includes("/gal/"))){e.push({path:d,type:"hook-entry",reason:`GAL hook entries in Cursor hooks.json (${h})`,isGalOwned:!1});break}}catch{}return e}function xr(t){let e=[],n=(0,_.join)(t,".gal");(0,F.existsSync)(n)&&e.push({path:n,type:"directory",reason:"GAL state directory",isGalOwned:!0});let o=(0,_.join)(t,"gal.config.json");(0,F.existsSync)(o)&&e.push({path:o,type:"file",reason:"GAL configuration file",isGalOwned:!0});let s=[(0,_.join)(t,".git","hooks","pre-commit"),(0,_.join)(t,".husky","pre-commit")];for(let a of s)(0,F.existsSync)(a)&&Yt(a)&&e.push({path:a,type:"file",reason:"GAL-generated git hook",isGalOwned:!0});let r=[{path:(0,_.join)(t,"CLAUDE.md"),reason:"GAL-generated CLAUDE.md"},{path:(0,_.join)(t,".claude","settings.json"),reason:"GAL-generated settings"},{path:(0,_.join)(t,".claude","commands","review.md"),reason:"GAL-generated command"},{path:(0,_.join)(t,".claude","commands","check.md"),reason:"GAL-generated command"},{path:(0,_.join)(t,".github","workflows","ci.yml"),reason:"GAL-generated workflow"},{path:(0,_.join)(t,".github","workflows","pr-governance.yml"),reason:"GAL-generated workflow"},{path:(0,_.join)(t,".gitleaks.toml"),reason:"GAL-generated security config"},{path:(0,_.join)(t,"SECURITY.md"),reason:"GAL-generated security docs"},{path:(0,_.join)(t,".env.example"),reason:"GAL-generated env template"}];for(let{path:a,reason:u}of r)(0,F.existsSync)(a)&&Yt(a)&&e.push({path:a,type:"file",reason:u,isGalOwned:!0});return e}function Tr(t){try{let e=JSON.parse((0,F.readFileSync)(t,"utf-8"));return e.statusLine?.command?.includes("gal-")?(delete e.statusLine,(0,F.writeFileSync)(t,JSON.stringify(e,null,2)),!0):!1}catch{return!1}}function Ir(t){try{let e=JSON.parse((0,F.readFileSync)(t,"utf-8")),n=!1;for(let o of["SessionStart","UserPromptSubmit"]){if(!e.hooks?.[o])continue;let s=e.hooks[o].length;e.hooks[o]=e.hooks[o].filter(r=>r.hooks?(r.hooks=r.hooks.filter(a=>!a.command?.includes("gal-")&&!a.command?.includes("/gal/")),r.hooks.length>0):!0),e.hooks[o].length===0&&delete e.hooks[o],e.hooks[o]?.length!==s&&(n=!0)}return Object.keys(e.hooks||{}).length===0&&delete e.hooks,n?((0,F.writeFileSync)(t,JSON.stringify(e,null,2)),!0):!1}catch{return!1}}function Br(t){try{let e=JSON.parse((0,F.readFileSync)(t,"utf-8"));if(!e.hooks)return!1;let n=!1,o=["beforeShellExecution","beforeSubmitPrompt"];for(let s of o)if(e.hooks[s]){let r=e.hooks[s].length;e.hooks[s]=e.hooks[s].filter(a=>!a.command?.includes("gal-")&&!a.command?.includes("/gal/")),e.hooks[s].length===0&&delete e.hooks[s],e.hooks[s]?.length!==r&&(n=!0)}return Object.keys(e.hooks).length===0&&delete e.hooks,n?((0,F.writeFileSync)(t,JSON.stringify(e,null,2)),!0):!1}catch{return!1}}function Rr(t,e){let n={removed:[],skipped:[],errors:[]};for(let o of t){if(e){n.removed.push(o.path);continue}try{o.type==="hook-entry"?(o.path.includes(".cursor")&&o.path.endsWith("hooks.json")?Br(o.path):Ir(o.path))?n.removed.push(`${o.path} (GAL hooks removed)`):n.skipped.push(`${o.path} (no GAL hooks found)`):o.type==="statusline-entry"?Tr(o.path)?n.removed.push(`${o.path} (GAL statusLine removed)`):n.skipped.push(`${o.path} (no GAL statusLine found)`):o.type==="directory"?((0,F.rmSync)(o.path,{recursive:!0,force:!0}),n.removed.push(o.path)):((0,F.unlinkSync)(o.path),n.removed.push(o.path))}catch(s){n.errors.push(`${o.path}: ${s instanceof Error?s.message:String(s)}`)}}return n}function ko(){let t=new B("uninstall");return t.description("Remove GAL-installed files and configurations").option("-d, --directory <path>","Project directory",process.cwd()).option("--user-only","Only remove org-synced configs from ~/.claude/ (preserves npm-installed CLI hooks)").option("--project-only","Only remove project-level configs").option("--dry-run","Show what would be removed without actually removing").option("-y, --yes","Skip confirmation prompt").action(async e=>{console.log(i.blue(`
783
+ `))}function bo(){let t=new B("config");return t.description("Manage GAL CLI configuration").action(()=>{let e=y.load(),n=y.getEnvironment(),s={development:i.yellow,staging:i.cyan,production:i.green}[n]||i.white;console.log(i.blue("Current Configuration:")),console.log(i.gray(" Environment:"),s(n)),console.log(i.gray(" Config file:"),y.getConfigPath()),console.log(i.gray(" API URL:"),e.apiUrl||i.dim("(not set)")),console.log(i.gray(" API Key:"),e.apiKey?i.green("(set)"):i.dim("(not set)")),console.log(i.gray(" Default Org:"),e.defaultOrg||i.dim("(not set)")),console.log(i.gray(" Telemetry:"),e.telemetry===!1?i.red("disabled"):i.green("enabled")),console.log(""),console.log(i.dim(" Tip: Set GAL_ENV=dev|staging|prod to override environment")),console.log(i.dim(" Tip: gal config set telemetry false to disable telemetry"))}),t.command("set").description("Set a configuration value").argument("<key>","Configuration key (apiUrl, apiKey, defaultOrg, telemetry)").argument("<value>","Configuration value").action((e,n)=>{let o=["apiUrl","apiKey","defaultOrg","telemetry"];o.includes(e)||(console.error(i.red(`Invalid key: ${e}. Valid keys: ${o.join(", ")}`)),process.exit(1));let s=n;if(e==="telemetry"){let a=n.toLowerCase();a==="true"||a==="1"||a==="yes"||a==="on"?s=!0:a==="false"||a==="0"||a==="no"||a==="off"?s=!1:(console.error(i.red("Invalid value for telemetry. Use: true/false, yes/no, 1/0, on/off")),process.exit(1))}y.set(e,s);let r=e==="apiKey"?"***":String(s);console.log(i.green(`\u2713 Set ${e} = ${r}`))}),t.command("get").description("Get a configuration value").argument("<key>","Configuration key").action(e=>{let n=y.get(e);console.log(n===void 0?i.dim(`${e} is not set`):e==="apiKey"?"***":n)}),t.command("test").description("Test connection to GAL API").action(async()=>{let e=T("Testing API connection...").start();try{let n=y.load();n.apiUrl||(e.fail(i.red("API URL not configured")),console.log(i.dim("Run: gal config set apiUrl <url>")),process.exit(1)),await new j(n).testConnection()?e.succeed(i.green(`Connected to GAL API at ${n.apiUrl}`)):(e.fail(i.red(`Failed to connect to ${n.apiUrl}`)),process.exit(1))}catch(n){e.fail(i.red("Connection test failed")),console.error(i.dim(n.message)),process.exit(1)}}),t.command("path").description("Show config file path").action(()=>{console.log(y.getConfigPath())}),t}var F=require("fs"),_=require("path"),zt=require("os"),So=require("readline");async function Sr(t){let e=(0,So.createInterface)({input:process.stdin,output:process.stdout});return new Promise(n=>{e.question(`${t} (y/N): `,o=>{e.close(),n(o.toLowerCase()==="y"||o.toLowerCase()==="yes")})})}function Yt(t){if(!(0,F.existsSync)(t))return!1;try{let e=(0,F.readFileSync)(t,"utf-8");return["GAL Config","GAL CLI","GAL Governance","Generated by GAL","gal sync","gal check","Governance Agentic Layer","CISO-approved","gal-sync-reminder","gal-config-hook","gal-safety-hook"].some(o=>e.includes(o))}catch{return!1}}function kr(t){if(!(0,F.existsSync)(t))return!1;try{let e=(0,F.readFileSync)(t,"utf-8");return e.includes("CURRENT_VERSION =")||e.includes("const CURRENT_VERSION")}catch{return!1}}function wo(t){return kr(t)?"npm":Yt(t)?"org-sync":"unknown"}function Or(t){let e=[],n=(0,_.join)((0,zt.homedir)(),".claude"),o=(0,_.join)(n,"hooks"),s=(0,_.join)(n,"status_lines"),r=t?.includeNpmInstalled??!0;if((0,F.existsSync)(o)){let c=(0,F.readdirSync)(o);for(let f of c)if(f.startsWith("gal-")){let h=(0,_.join)(o,f),m=wo(h);if(!r&&m==="npm")continue;e.push({path:h,type:"file",reason:`GAL hook file (${m==="npm"?"npm-installed":m==="org-sync"?"org-synced":"unknown source"})`,isGalOwned:!0,source:m})}}if((0,F.existsSync)(s)){let c=(0,F.readdirSync)(s);for(let f of c)if(f.startsWith("gal-")){let h=(0,_.join)(s,f),m=wo(h);if(!r&&m==="npm")continue;e.push({path:h,type:"file",reason:`GAL status line script (${m==="npm"?"npm-installed":m==="org-sync"?"org-synced":"unknown source"})`,isGalOwned:!0,source:m})}}let a=(0,_.join)(n,"settings.json");if((0,F.existsSync)(a))try{let c=JSON.parse((0,F.readFileSync)(a,"utf-8"));c.hooks?.SessionStart&&c.hooks.SessionStart.some(h=>h.hooks?.some(m=>m.command?.includes("gal-")||m.command?.includes("/gal/")))&&e.push({path:a,type:"hook-entry",reason:"GAL hook entries in SessionStart",isGalOwned:!1}),c.hooks?.UserPromptSubmit&&c.hooks.UserPromptSubmit.some(h=>h.hooks?.some(m=>m.command?.includes("gal-")||m.command?.includes("/gal/")))&&e.push({path:a,type:"hook-entry",reason:"GAL hook entries in UserPromptSubmit",isGalOwned:!1,source:"unknown"}),c.statusLine?.command?.includes("gal-")&&e.push({path:a,type:"statusline-entry",reason:"GAL status line entry in settings",isGalOwned:!1})}catch{}let u=(0,_.join)((0,zt.homedir)(),".cursor"),l=(0,_.join)(u,"hooks");if((0,F.existsSync)(l)){let c=(0,F.readdirSync)(l);for(let f of c)f.startsWith("gal-")&&e.push({path:(0,_.join)(l,f),type:"file",reason:"GAL hook file for Cursor IDE",isGalOwned:!0})}let d=(0,_.join)(u,"hooks.json");if((0,F.existsSync)(d))try{let c=JSON.parse((0,F.readFileSync)(d,"utf-8")),f=["beforeShellExecution","beforeSubmitPrompt"];for(let h of f)if(c.hooks?.[h]&&c.hooks[h].some(p=>p.command?.includes("gal-")||p.command?.includes("/gal/"))){e.push({path:d,type:"hook-entry",reason:`GAL hook entries in Cursor hooks.json (${h})`,isGalOwned:!1});break}}catch{}return e}function xr(t){let e=[],n=(0,_.join)(t,".gal");(0,F.existsSync)(n)&&e.push({path:n,type:"directory",reason:"GAL state directory",isGalOwned:!0});let o=(0,_.join)(t,"gal.config.json");(0,F.existsSync)(o)&&e.push({path:o,type:"file",reason:"GAL configuration file",isGalOwned:!0});let s=[(0,_.join)(t,".git","hooks","pre-commit"),(0,_.join)(t,".husky","pre-commit")];for(let a of s)(0,F.existsSync)(a)&&Yt(a)&&e.push({path:a,type:"file",reason:"GAL-generated git hook",isGalOwned:!0});let r=[{path:(0,_.join)(t,"CLAUDE.md"),reason:"GAL-generated CLAUDE.md"},{path:(0,_.join)(t,".claude","settings.json"),reason:"GAL-generated settings"},{path:(0,_.join)(t,".claude","commands","review.md"),reason:"GAL-generated command"},{path:(0,_.join)(t,".claude","commands","check.md"),reason:"GAL-generated command"},{path:(0,_.join)(t,".github","workflows","ci.yml"),reason:"GAL-generated workflow"},{path:(0,_.join)(t,".github","workflows","pr-governance.yml"),reason:"GAL-generated workflow"},{path:(0,_.join)(t,".gitleaks.toml"),reason:"GAL-generated security config"},{path:(0,_.join)(t,"SECURITY.md"),reason:"GAL-generated security docs"},{path:(0,_.join)(t,".env.example"),reason:"GAL-generated env template"}];for(let{path:a,reason:u}of r)(0,F.existsSync)(a)&&Yt(a)&&e.push({path:a,type:"file",reason:u,isGalOwned:!0});return e}function Tr(t){try{let e=JSON.parse((0,F.readFileSync)(t,"utf-8"));return e.statusLine?.command?.includes("gal-")?(delete e.statusLine,(0,F.writeFileSync)(t,JSON.stringify(e,null,2)),!0):!1}catch{return!1}}function Ir(t){try{let e=JSON.parse((0,F.readFileSync)(t,"utf-8")),n=!1;for(let o of["SessionStart","UserPromptSubmit"]){if(!e.hooks?.[o])continue;let s=e.hooks[o].length;e.hooks[o]=e.hooks[o].filter(r=>r.hooks?(r.hooks=r.hooks.filter(a=>!a.command?.includes("gal-")&&!a.command?.includes("/gal/")),r.hooks.length>0):!0),e.hooks[o].length===0&&delete e.hooks[o],e.hooks[o]?.length!==s&&(n=!0)}return Object.keys(e.hooks||{}).length===0&&delete e.hooks,n?((0,F.writeFileSync)(t,JSON.stringify(e,null,2)),!0):!1}catch{return!1}}function Br(t){try{let e=JSON.parse((0,F.readFileSync)(t,"utf-8"));if(!e.hooks)return!1;let n=!1,o=["beforeShellExecution","beforeSubmitPrompt"];for(let s of o)if(e.hooks[s]){let r=e.hooks[s].length;e.hooks[s]=e.hooks[s].filter(a=>!a.command?.includes("gal-")&&!a.command?.includes("/gal/")),e.hooks[s].length===0&&delete e.hooks[s],e.hooks[s]?.length!==r&&(n=!0)}return Object.keys(e.hooks).length===0&&delete e.hooks,n?((0,F.writeFileSync)(t,JSON.stringify(e,null,2)),!0):!1}catch{return!1}}function Rr(t,e){let n={removed:[],skipped:[],errors:[]};for(let o of t){if(e){n.removed.push(o.path);continue}try{o.type==="hook-entry"?(o.path.includes(".cursor")&&o.path.endsWith("hooks.json")?Br(o.path):Ir(o.path))?n.removed.push(`${o.path} (GAL hooks removed)`):n.skipped.push(`${o.path} (no GAL hooks found)`):o.type==="statusline-entry"?Tr(o.path)?n.removed.push(`${o.path} (GAL statusLine removed)`):n.skipped.push(`${o.path} (no GAL statusLine found)`):o.type==="directory"?((0,F.rmSync)(o.path,{recursive:!0,force:!0}),n.removed.push(o.path)):((0,F.unlinkSync)(o.path),n.removed.push(o.path))}catch(s){n.errors.push(`${o.path}: ${s instanceof Error?s.message:String(s)}`)}}return n}function ko(){let t=new B("uninstall");return t.description("Remove GAL-installed files and configurations").option("-d, --directory <path>","Project directory",process.cwd()).option("--user-only","Only remove org-synced configs from ~/.claude/ (preserves npm-installed CLI hooks)").option("--project-only","Only remove project-level configs").option("--dry-run","Show what would be removed without actually removing").option("-y, --yes","Skip confirmation prompt").action(async e=>{console.log(i.blue(`
784
784
  \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550`)),console.log(i.blue(" GAL Uninstall")),console.log(i.blue(`\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550
785
- `));let n=e.projectOnly?[]:Or({includeNpmInstalled:!e.userOnly}),o=e.userOnly?[]:xr(e.directory),s=[...n,...o];if(s.length===0){console.log(i.yellow("No GAL-installed files found.")),e.userOnly&&(console.log(i.dim(`
785
+ `));let n=e.projectOnly?[]:Or({includeNpmInstalled:!e.userOnly}),o=e.userOnly?[]:xr(e.directory),s=[...n,...o];if(s.length===0&&(console.log(i.yellow("No GAL-installed files found.")),e.userOnly&&(console.log(i.dim(`
786
786
  Note: --user-only preserves npm-installed CLI hooks (e.g., gal-sync-reminder.js)`)),console.log(i.dim("To remove CLI hooks, uninstall the npm package: npm uninstall -g @scheduler-systems/gal-cli"))),console.log(i.dim(`
787
- Nothing to uninstall.`));return}if(console.log(i.bold(`The following GAL-installed items were detected:
787
+ Nothing to uninstall.`)),process.exit(0)),console.log(i.bold(`The following GAL-installed items were detected:
788
788
  `)),e.userOnly&&(console.log(i.cyan("Mode: User-level org-synced configs only")),console.log(i.dim(` (npm-installed CLI hooks will be preserved)
789
- `))),n.length>0){console.log(i.cyan("User-level (Claude Code & Cursor IDE):"));for(let a of n){let u=a.type==="directory"?"\u{1F4C1}":a.type==="hook-entry"?"\u{1F527}":a.type==="statusline-entry"?"\u{1F4CA}":"\u{1F4C4}";console.log(` ${u} ${i.dim(a.path)}`),console.log(` ${i.dim(a.reason)}`)}console.log()}if(o.length>0){console.log(i.cyan("Project-level:"));for(let a of o){let u=a.type==="directory"?"\u{1F4C1}":"\u{1F4C4}",l=a.path.replace(e.directory,".");console.log(` ${u} ${i.dim(l)}`),console.log(` ${i.dim(a.reason)}`)}console.log()}if(e.dryRun){console.log(i.yellow("DRY RUN - No files were removed."));return}if(!e.yes&&(console.log(i.yellow("\u26A0\uFE0F This action cannot be undone.")),!await Sr(`
790
- Proceed with uninstallation?`))){console.log(i.dim(`
791
- Uninstall cancelled.`));return}console.log(i.dim(`
789
+ `))),n.length>0){console.log(i.cyan("User-level (Claude Code & Cursor IDE):"));for(let a of n){let u=a.type==="directory"?"\u{1F4C1}":a.type==="hook-entry"?"\u{1F527}":a.type==="statusline-entry"?"\u{1F4CA}":"\u{1F4C4}";console.log(` ${u} ${i.dim(a.path)}`),console.log(` ${i.dim(a.reason)}`)}console.log()}if(o.length>0){console.log(i.cyan("Project-level:"));for(let a of o){let u=a.type==="directory"?"\u{1F4C1}":"\u{1F4C4}",l=a.path.replace(e.directory,".");console.log(` ${u} ${i.dim(l)}`),console.log(` ${i.dim(a.reason)}`)}console.log()}e.dryRun&&(console.log(i.yellow("DRY RUN - No files were removed.")),process.exit(0)),e.yes||(console.log(i.yellow("\u26A0\uFE0F This action cannot be undone.")),await Sr(`
790
+ Proceed with uninstallation?`)||(console.log(i.dim(`
791
+ Uninstall cancelled.`)),process.exit(0))),console.log(i.dim(`
792
792
  Removing files...`));let r=Rr(s,!1);if(console.log(),r.removed.length>0){console.log(i.green(`\u2713 Removed ${r.removed.length} item(s):`));for(let a of r.removed)console.log(i.dim(` - ${a}`))}if(r.skipped.length>0){console.log(i.yellow(`
793
793
  \u26A0 Skipped ${r.skipped.length} item(s):`));for(let a of r.skipped)console.log(i.dim(` - ${a}`))}if(r.errors.length>0){console.log(i.red(`
794
794
  \u2717 Failed to remove ${r.errors.length} item(s):`));for(let a of r.errors)console.log(i.dim(` - ${a}`))}console.log(i.blue(`
795
795
  \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550`)),console.log(i.blue(" GAL has been uninstalled.")),console.log(i.blue(`\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550
796
796
  `)),console.log(i.dim("To reinstall, run: gal sync --pull")),console.log(i.dim(`To completely remove the CLI: npm uninstall -g @scheduler-systems/gal-cli
797
- `))}),t}var De=b(require("fs/promises"),1),ge=b(require("path"),1);function xo(){let t=new B("workflow").description("Test workflow configurations (commands and hooks) in E2B sandbox");return t.command("test").description("Test a workflow file in sandbox before deployment").argument("<file>","Path to command (.md) or hook (.json) file").option("-p, --platform <platform>","Platform: claude, cursor, gemini, codex, windsurf","claude").option("--type <type>","Type: command or hook (auto-detected if not specified)").option("--test-cases <cases>","Comma-separated test cases to run").option("--max-iterations <n>","Maximum improvement iterations (default: 3)","3").option("-o, --org <org>","Organization name").option("--json","Output results as JSON",!1).action(async(e,n)=>{let o=process.env.GAL_API_URL||ee;try{let s=T(`Reading ${e}...`).start(),r=ge.default.resolve(e),a=await De.default.readFile(r,"utf-8"),u=ge.default.basename(e),l=n.type;l||(u.endsWith(".md")?l="command":u.includes("hook")||u.endsWith(".json")||u.endsWith(".py")||u.endsWith(".js")?l="hook":(s.fail(i.red("Could not auto-detect type. Please specify --type (command or hook)")),process.exit(1))),s.text="Uploading to sandbox...";let d=n.org||await Oo(o);d||(s.fail(i.red("No organization found. Please connect GitHub via dashboard or use --org flag")),process.exit(1));let c=n.testCases?.split(",").map(m=>m.trim()).filter(m=>m)||[];s.text=`Testing ${u} in sandbox...`;let f=await fetch(`${o}/organizations/${d}/workflow-test`,{method:"POST",credentials:"include",headers:{"Content-Type":"application/json"},body:JSON.stringify({fileName:u,type:l,platform:n.platform,content:a,testCases:c,maxIterations:parseInt(n.maxIterations,10)})});if(!f.ok){let m=await f.text();s.fail(i.red("Test failed")),console.error(i.red(m)),process.exit(1)}let p=(await f.json()).result;s.stop(),n.json?console.log(JSON.stringify(p,null,2)):Lr(p),p.recommendation==="reject"&&process.exit(1)}catch(s){console.error(i.red(`Error: ${s instanceof Error?s.message:String(s)}`)),process.exit(1)}}),t.command("test-batch").description("Test multiple workflow files in batch").argument("<directory>","Directory containing workflow files").option("-p, --platform <platform>","Platform: claude, cursor, gemini, codex, windsurf","claude").option("-o, --org <org>","Organization name").option("--report <path>","Save detailed report to file").action(async(e,n)=>{let o=process.env.GAL_API_URL||ee,s=T("Scanning directory...").start();try{let r=n.org||await Oo(o);r||(s.fail(i.red("No organization found. Please connect GitHub via dashboard or use --org flag")),process.exit(1));let a=ge.default.resolve(e),l=(await De.default.readdir(a)).filter(p=>p.endsWith(".md")||p.includes("hook")&&(p.endsWith(".json")||p.endsWith(".py")||p.endsWith(".js")));l.length===0&&(s.fail(i.yellow("No workflow files found")),process.exit(0)),s.text=`Found ${l.length} workflow files. Preparing batch test...`;let d=[];for(let p of l){let m=ge.default.join(a,p),k=await De.default.readFile(m,"utf-8"),v=p.endsWith(".md")?"command":"hook";d.push({fileName:p,type:v,platform:n.platform,content:k,testCases:[],maxIterations:3})}s.text=`Testing ${d.length} workflows in sandbox...`;let c=await fetch(`${o}/organizations/${r}/workflow-test/batch`,{method:"POST",credentials:"include",headers:{"Content-Type":"application/json"},body:JSON.stringify({requests:d})});if(!c.ok){let p=await c.text();s.fail(i.red("Batch test failed")),console.error(i.red(p)),process.exit(1)}let h=(await c.json()).report;s.stop(),console.log(i.green(`
797
+ `)),process.exit(0)}),t}var De=b(require("fs/promises"),1),ge=b(require("path"),1);function xo(){let t=new B("workflow").description("Test workflow configurations (commands and hooks) in E2B sandbox");return t.command("test").description("Test a workflow file in sandbox before deployment").argument("<file>","Path to command (.md) or hook (.json) file").option("-p, --platform <platform>","Platform: claude, cursor, gemini, codex, windsurf","claude").option("--type <type>","Type: command or hook (auto-detected if not specified)").option("--test-cases <cases>","Comma-separated test cases to run").option("--max-iterations <n>","Maximum improvement iterations (default: 3)","3").option("-o, --org <org>","Organization name").option("--json","Output results as JSON",!1).action(async(e,n)=>{let o=process.env.GAL_API_URL||ee;try{let s=T(`Reading ${e}...`).start(),r=ge.default.resolve(e),a=await De.default.readFile(r,"utf-8"),u=ge.default.basename(e),l=n.type;l||(u.endsWith(".md")?l="command":u.includes("hook")||u.endsWith(".json")||u.endsWith(".py")||u.endsWith(".js")?l="hook":(s.fail(i.red("Could not auto-detect type. Please specify --type (command or hook)")),process.exit(1))),s.text="Uploading to sandbox...";let d=n.org||await Oo(o);d||(s.fail(i.red("No organization found. Please connect GitHub via dashboard or use --org flag")),process.exit(1));let c=n.testCases?.split(",").map(p=>p.trim()).filter(p=>p)||[];s.text=`Testing ${u} in sandbox...`;let f=await fetch(`${o}/organizations/${d}/workflow-test`,{method:"POST",credentials:"include",headers:{"Content-Type":"application/json"},body:JSON.stringify({fileName:u,type:l,platform:n.platform,content:a,testCases:c,maxIterations:parseInt(n.maxIterations,10)})});if(!f.ok){let p=await f.text();s.fail(i.red("Test failed")),console.error(i.red(p)),process.exit(1)}let m=(await f.json()).result;s.stop(),n.json?console.log(JSON.stringify(m,null,2)):Lr(m),m.recommendation==="reject"&&process.exit(1)}catch(s){console.error(i.red(`Error: ${s instanceof Error?s.message:String(s)}`)),process.exit(1)}}),t.command("test-batch").description("Test multiple workflow files in batch").argument("<directory>","Directory containing workflow files").option("-p, --platform <platform>","Platform: claude, cursor, gemini, codex, windsurf","claude").option("-o, --org <org>","Organization name").option("--report <path>","Save detailed report to file").action(async(e,n)=>{let o=process.env.GAL_API_URL||ee,s=T("Scanning directory...").start();try{let r=n.org||await Oo(o);r||(s.fail(i.red("No organization found. Please connect GitHub via dashboard or use --org flag")),process.exit(1));let a=ge.default.resolve(e),l=(await De.default.readdir(a)).filter(m=>m.endsWith(".md")||m.includes("hook")&&(m.endsWith(".json")||m.endsWith(".py")||m.endsWith(".js")));l.length===0&&(s.fail(i.yellow("No workflow files found")),process.exit(0)),s.text=`Found ${l.length} workflow files. Preparing batch test...`;let d=[];for(let m of l){let p=ge.default.join(a,m),k=await De.default.readFile(p,"utf-8"),v=m.endsWith(".md")?"command":"hook";d.push({fileName:m,type:v,platform:n.platform,content:k,testCases:[],maxIterations:3})}s.text=`Testing ${d.length} workflows in sandbox...`;let c=await fetch(`${o}/organizations/${r}/workflow-test/batch`,{method:"POST",credentials:"include",headers:{"Content-Type":"application/json"},body:JSON.stringify({requests:d})});if(!c.ok){let m=await c.text();s.fail(i.red("Batch test failed")),console.error(i.red(m)),process.exit(1)}let h=(await c.json()).report;s.stop(),console.log(i.green(`
798
798
  === Batch Test Results ===
799
799
  `)),console.log(`Total Tests: ${i.bold(h.totalTests)}`),console.log(`Passed: ${i.green(h.passedTests)}`),console.log(`Average Score: ${i.yellow(h.averageScore+"%")}`),console.log(`
800
800
  Recommendations:`),console.log(` Approve: ${i.green(h.summary.byRecommendation.approve)}`),console.log(` Needs Revision: ${i.yellow(h.summary.byRecommendation.revise)}`),console.log(` Reject: ${i.red(h.summary.byRecommendation.reject)}`),n.report&&(await De.default.writeFile(n.report,JSON.stringify(h,null,2)),console.log(i.gray(`
@@ -803,7 +803,7 @@ Detailed report saved to: ${n.report}`))),h.passedTests<h.totalTests&&process.ex
803
803
  `)),console.log(`File: ${i.bold(t.fileName)}`),console.log(`Type: ${i.cyan(t.type)}`),console.log(`Platform: ${i.cyan(t.platform)}`),console.log(`Iterations: ${t.iterations.length}`),console.log(`Execution: ${t.executionTimeMs}ms`),console.log();let e=t.finalScore>=80?i.green:t.finalScore>=60?i.yellow:i.red;console.log(`Final Score: ${e(t.finalScore+"/100")}`);let n=t.recommendation==="approve"?i.green:t.recommendation==="revise"?i.yellow:i.red;console.log(`Recommendation: ${n(t.recommendation.toUpperCase())}`),console.log(),t.error&&(console.log(i.red("Error:")),console.log(i.red(" "+t.error)),console.log());let o=t.iterations[t.iterations.length-1];o&&(console.log(i.blue(`=== LLM Evaluation ===
804
804
  `)),console.log(o.evaluation.reasoning),console.log(),o.evaluation.issues.length>0&&(console.log(i.yellow(`Issues Found:
805
805
  `)),o.evaluation.issues.forEach((s,r)=>{let a=s.severity==="critical"||s.severity==="high"?i.red:s.severity==="medium"?i.yellow:i.blue;console.log(` ${r+1}. [${a(s.severity.toUpperCase())}] ${s.message}`)}),console.log()),o.evaluation.suggestedImprovements.length>0&&(console.log(i.cyan(`Suggested Improvements:
806
- `)),o.evaluation.suggestedImprovements.forEach((s,r)=>{console.log(` ${r+1}. ${s}`)}),console.log())),t.recommendation==="approve"?console.log(i.green("\u2713 This workflow is ready for deployment!")):t.recommendation==="revise"?console.log(i.yellow("\u26A0 This workflow needs improvements before deployment.")):console.log(i.red("\u2717 This workflow should be rejected. See issues above.")),console.log()}var Me="0.1.16-beta",ee="https://api.gal.run",Kt=(0,Xt.join)((0,Bo.homedir)(),".gal"),Qt=(0,Xt.join)(Kt,"update-cache.json"),Pr=24*60*60*1e3;function Nr(t,e){let n=t.replace(/^v/,"").split(".").map(Number),o=e.replace(/^v/,"").split(".").map(Number);for(let s=0;s<3;s++){if((n[s]||0)<(o[s]||0))return-1;if((n[s]||0)>(o[s]||0))return 1}return 0}function $r(){try{if((0,V.existsSync)(Qt))return JSON.parse((0,V.readFileSync)(Qt,"utf-8"))}catch{}return null}function jr(t){try{(0,V.existsSync)(Kt)||(0,V.mkdirSync)(Kt,{recursive:!0}),(0,V.writeFileSync)(Qt,JSON.stringify(t))}catch{}}function Gr(t,e){let n=["",i.bgYellow.black(" UPDATE AVAILABLE "),"",` ${i.dim(t)} \u2192 ${i.green(e)}`,"",` Run: ${i.cyan("npm update -g @scheduler-systems/gal-cli")}`,""].join(`
806
+ `)),o.evaluation.suggestedImprovements.forEach((s,r)=>{console.log(` ${r+1}. ${s}`)}),console.log())),t.recommendation==="approve"?console.log(i.green("\u2713 This workflow is ready for deployment!")):t.recommendation==="revise"?console.log(i.yellow("\u26A0 This workflow needs improvements before deployment.")):console.log(i.red("\u2717 This workflow should be rejected. See issues above.")),console.log()}var Me="0.1.17-alpha.pr502",ee="https://api.gal.run",Kt=(0,Xt.join)((0,Bo.homedir)(),".gal"),Qt=(0,Xt.join)(Kt,"update-cache.json"),Pr=24*60*60*1e3;function Nr(t,e){let n=t.replace(/^v/,"").split(".").map(Number),o=e.replace(/^v/,"").split(".").map(Number);for(let s=0;s<3;s++){if((n[s]||0)<(o[s]||0))return-1;if((n[s]||0)>(o[s]||0))return 1}return 0}function $r(){try{if((0,V.existsSync)(Qt))return JSON.parse((0,V.readFileSync)(Qt,"utf-8"))}catch{}return null}function jr(t){try{(0,V.existsSync)(Kt)||(0,V.mkdirSync)(Kt,{recursive:!0}),(0,V.writeFileSync)(Qt,JSON.stringify(t))}catch{}}function Gr(t,e){let n=["",i.bgYellow.black(" UPDATE AVAILABLE "),"",` ${i.dim(t)} \u2192 ${i.green(e)}`,"",` Run: ${i.cyan("npm update -g @scheduler-systems/gal-cli")}`,""].join(`
807
807
  `),s=i.yellow("\u2500".repeat(50));console.log(`
808
808
  `+s),console.log(n),console.log(s+`
809
809
  `)}function Ur(t){return/-(alpha|beta|pr|rc|dev)/i.test(t)}function Mr(){if(Ur(Me))return;let t=$r(),e=!t||Date.now()-t.lastCheck>Pr;if(t?.latestVersion&&Nr(Me,t.latestVersion)<0&&process.on("exit",()=>{Gr(Me,t.latestVersion)}),e){let n=Io.default.get("https://registry.npmjs.org/@scheduler-systems/gal-cli/latest",{timeout:3e3},o=>{let s="";o.on("data",r=>s+=r),o.on("end",()=>{try{let r=JSON.parse(s);jr({lastCheck:Date.now(),latestVersion:r.version})}catch{}})});n.on("error",()=>{}),n.on("timeout",()=>n.destroy());try{typeof n.unref=="function"&&n.unref()}catch{}}}Mr();Xn();Qn();Ft();process.on("beforeExit",async()=>{await yt()});To.default.config();var Y=new B;Y.name("gal").description("GAL - Governance Agentic Layer CLI").version(Me);Y.addCommand(Co());Y.addCommand(Ao());Y.addCommand(bo());Y.addCommand(ko());Y.addCommand(xo());Y.parse();0&&(module.exports={DEFAULT_API_URL});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@scheduler-systems/gal-cli",
3
- "version": "0.1.16-beta",
3
+ "version": "0.1.17-alpha.pr502",
4
4
  "description": "GAL CLI - Command-line tool for managing AI agent configurations across your organization",
5
5
  "license": "UNLICENSED",
6
6
  "private": false,
@@ -20,7 +20,7 @@
20
20
  "postinstall": "node scripts/postinstall.cjs",
21
21
  "preuninstall": "node scripts/preuninstall.cjs",
22
22
  "dev": "tsx watch src/index.ts",
23
- "build": "rm -rf dist && esbuild src/index.ts --bundle --platform=node --target=node18 --outfile=dist/index.cjs --format=cjs --define:__CLI_VERSION__=\\\"$(node -p \"require('./package.json').version\")-local+$(git rev-parse --short HEAD)\\\" --define:__DEFAULT_API_URL__=\\\"http://localhost:3000\\\" && chmod +x dist/index.cjs",
23
+ "build": "rm -rf dist && esbuild src/index.ts --bundle --platform=node --target=node18 --outfile=dist/index.cjs --format=cjs --define:__CLI_VERSION__=\\\"$(node -p \"require('./package.json').version\")-local+$(git rev-parse --short HEAD)\\\" --define:__DEFAULT_API_URL__=\\\"http://localhost:3000\\\" && { printf '%s\\n' '#!/usr/bin/env node'; cat dist/index.cjs; } > dist/temp.cjs && mv dist/temp.cjs dist/index.cjs && chmod +x dist/index.cjs",
24
24
  "build:publish": "rm -rf dist && esbuild src/index.ts --bundle --platform=node --target=node18 --minify --outfile=dist/index.cjs --format=cjs --define:__CLI_VERSION__=\\\"$(node -p \"require('./package.json').version\")\\\" --define:__DEFAULT_API_URL__=\\\"${DEFAULT_API_URL:-https://api.gal.run}\\\" && { printf '%s\\n' '#!/usr/bin/env node'; cat dist/index.cjs; } > dist/temp.cjs && mv dist/temp.cjs dist/index.cjs && chmod +x dist/index.cjs",
25
25
  "start": "node dist/index.js",
26
26
  "test": "vitest run --pool=forks",