aide-memory 0.5.16 → 0.5.17

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.
@@ -1,64 +1,64 @@
1
1
  #!/usr/bin/env node
2
- "use strict";var ii=Object.create;var ut=Object.defineProperty;var ai=Object.getOwnPropertyDescriptor;var ci=Object.getOwnPropertyNames;var li=Object.getPrototypeOf,ui=Object.prototype.hasOwnProperty;var $=(n,e)=>()=>(n&&(e=n(n=0)),e);var F=(n,e)=>()=>(e||n((e={exports:{}}).exports,e),e.exports),Zt=(n,e)=>{for(var t in e)ut(n,t,{get:e[t],enumerable:!0})},un=(n,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of ci(e))!ui.call(n,o)&&o!==t&&ut(n,o,{get:()=>e[o],enumerable:!(r=ai(e,o))||r.enumerable});return n};var h=(n,e,t)=>(t=n!=null?ii(li(n)):{},un(e||!n||!n.__esModule?ut(t,"default",{value:n,enumerable:!0}):t,n)),er=n=>un(ut({},"__esModule",{value:!0}),n);var Je=F(rr=>{var dt=class extends Error{constructor(e,t,r){super(r),Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name,this.code=t,this.exitCode=e,this.nestedError=void 0}},tr=class extends dt{constructor(e){super(1,"commander.invalidArgument",e),Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name}};rr.CommanderError=dt;rr.InvalidArgumentError=tr});var pt=F(or=>{var{InvalidArgumentError:di}=Je(),nr=class{constructor(e,t){switch(this.description=t||"",this.variadic=!1,this.parseArg=void 0,this.defaultValue=void 0,this.defaultValueDescription=void 0,this.argChoices=void 0,e[0]){case"<":this.required=!0,this._name=e.slice(1,-1);break;case"[":this.required=!1,this._name=e.slice(1,-1);break;default:this.required=!0,this._name=e;break}this._name.length>3&&this._name.slice(-3)==="..."&&(this.variadic=!0,this._name=this._name.slice(0,-3))}name(){return this._name}_concatValue(e,t){return t===this.defaultValue||!Array.isArray(t)?[e]:t.concat(e)}default(e,t){return this.defaultValue=e,this.defaultValueDescription=t,this}argParser(e){return this.parseArg=e,this}choices(e){return this.argChoices=e.slice(),this.parseArg=(t,r)=>{if(!this.argChoices.includes(t))throw new di(`Allowed choices are ${this.argChoices.join(", ")}.`);return this.variadic?this._concatValue(t,r):t},this}argRequired(){return this.required=!0,this}argOptional(){return this.required=!1,this}};function pi(n){let e=n.name()+(n.variadic===!0?"...":"");return n.required?"<"+e+">":"["+e+"]"}or.Argument=nr;or.humanReadableArgName=pi});var ir=F(dn=>{var{humanReadableArgName:mi}=pt(),sr=class{constructor(){this.helpWidth=void 0,this.sortSubcommands=!1,this.sortOptions=!1,this.showGlobalOptions=!1}visibleCommands(e){let t=e.commands.filter(o=>!o._hidden),r=e._getHelpCommand();return r&&!r._hidden&&t.push(r),this.sortSubcommands&&t.sort((o,s)=>o.name().localeCompare(s.name())),t}compareOptions(e,t){let r=o=>o.short?o.short.replace(/^-/,""):o.long.replace(/^--/,"");return r(e).localeCompare(r(t))}visibleOptions(e){let t=e.options.filter(o=>!o.hidden),r=e._getHelpOption();if(r&&!r.hidden){let o=r.short&&e._findOption(r.short),s=r.long&&e._findOption(r.long);!o&&!s?t.push(r):r.long&&!s?t.push(e.createOption(r.long,r.description)):r.short&&!o&&t.push(e.createOption(r.short,r.description))}return this.sortOptions&&t.sort(this.compareOptions),t}visibleGlobalOptions(e){if(!this.showGlobalOptions)return[];let t=[];for(let r=e.parent;r;r=r.parent){let o=r.options.filter(s=>!s.hidden);t.push(...o)}return this.sortOptions&&t.sort(this.compareOptions),t}visibleArguments(e){return e._argsDescription&&e.registeredArguments.forEach(t=>{t.description=t.description||e._argsDescription[t.name()]||""}),e.registeredArguments.find(t=>t.description)?e.registeredArguments:[]}subcommandTerm(e){let t=e.registeredArguments.map(r=>mi(r)).join(" ");return e._name+(e._aliases[0]?"|"+e._aliases[0]:"")+(e.options.length?" [options]":"")+(t?" "+t:"")}optionTerm(e){return e.flags}argumentTerm(e){return e.name()}longestSubcommandTermLength(e,t){return t.visibleCommands(e).reduce((r,o)=>Math.max(r,t.subcommandTerm(o).length),0)}longestOptionTermLength(e,t){return t.visibleOptions(e).reduce((r,o)=>Math.max(r,t.optionTerm(o).length),0)}longestGlobalOptionTermLength(e,t){return t.visibleGlobalOptions(e).reduce((r,o)=>Math.max(r,t.optionTerm(o).length),0)}longestArgumentTermLength(e,t){return t.visibleArguments(e).reduce((r,o)=>Math.max(r,t.argumentTerm(o).length),0)}commandUsage(e){let t=e._name;e._aliases[0]&&(t=t+"|"+e._aliases[0]);let r="";for(let o=e.parent;o;o=o.parent)r=o.name()+" "+r;return r+t+" "+e.usage()}commandDescription(e){return e.description()}subcommandDescription(e){return e.summary()||e.description()}optionDescription(e){let t=[];return e.argChoices&&t.push(`choices: ${e.argChoices.map(r=>JSON.stringify(r)).join(", ")}`),e.defaultValue!==void 0&&(e.required||e.optional||e.isBoolean()&&typeof e.defaultValue=="boolean")&&t.push(`default: ${e.defaultValueDescription||JSON.stringify(e.defaultValue)}`),e.presetArg!==void 0&&e.optional&&t.push(`preset: ${JSON.stringify(e.presetArg)}`),e.envVar!==void 0&&t.push(`env: ${e.envVar}`),t.length>0?`${e.description} (${t.join(", ")})`:e.description}argumentDescription(e){let t=[];if(e.argChoices&&t.push(`choices: ${e.argChoices.map(r=>JSON.stringify(r)).join(", ")}`),e.defaultValue!==void 0&&t.push(`default: ${e.defaultValueDescription||JSON.stringify(e.defaultValue)}`),t.length>0){let r=`(${t.join(", ")})`;return e.description?`${e.description} ${r}`:r}return e.description}formatHelp(e,t){let r=t.padWidth(e,t),o=t.helpWidth||80,s=2,i=2;function a(b,w){if(w){let S=`${b.padEnd(r+i)}${w}`;return t.wrap(S,o-s,r+i)}return b}function c(b){return b.join(`
3
- `).replace(/^/gm," ".repeat(s))}let l=[`Usage: ${t.commandUsage(e)}`,""],u=t.commandDescription(e);u.length>0&&(l=l.concat([t.wrap(u,o,0),""]));let d=t.visibleArguments(e).map(b=>a(t.argumentTerm(b),t.argumentDescription(b)));d.length>0&&(l=l.concat(["Arguments:",c(d),""]));let f=t.visibleOptions(e).map(b=>a(t.optionTerm(b),t.optionDescription(b)));if(f.length>0&&(l=l.concat(["Options:",c(f),""])),this.showGlobalOptions){let b=t.visibleGlobalOptions(e).map(w=>a(t.optionTerm(w),t.optionDescription(w)));b.length>0&&(l=l.concat(["Global Options:",c(b),""]))}let _=t.visibleCommands(e).map(b=>a(t.subcommandTerm(b),t.subcommandDescription(b)));return _.length>0&&(l=l.concat(["Commands:",c(_),""])),l.join(`
2
+ "use strict";var si=Object.create;var ut=Object.defineProperty;var ii=Object.getOwnPropertyDescriptor;var ai=Object.getOwnPropertyNames;var ci=Object.getPrototypeOf,li=Object.prototype.hasOwnProperty;var $=(n,e)=>()=>(n&&(e=n(n=0)),e);var F=(n,e)=>()=>(e||n((e={exports:{}}).exports,e),e.exports),Qt=(n,e)=>{for(var t in e)ut(n,t,{get:e[t],enumerable:!0})},cn=(n,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of ai(e))!li.call(n,o)&&o!==t&&ut(n,o,{get:()=>e[o],enumerable:!(r=ii(e,o))||r.enumerable});return n};var h=(n,e,t)=>(t=n!=null?si(ci(n)):{},cn(e||!n||!n.__esModule?ut(t,"default",{value:n,enumerable:!0}):t,n)),Zt=n=>cn(ut({},"__esModule",{value:!0}),n);var Je=F(tr=>{var dt=class extends Error{constructor(e,t,r){super(r),Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name,this.code=t,this.exitCode=e,this.nestedError=void 0}},er=class extends dt{constructor(e){super(1,"commander.invalidArgument",e),Error.captureStackTrace(this,this.constructor),this.name=this.constructor.name}};tr.CommanderError=dt;tr.InvalidArgumentError=er});var pt=F(nr=>{var{InvalidArgumentError:ui}=Je(),rr=class{constructor(e,t){switch(this.description=t||"",this.variadic=!1,this.parseArg=void 0,this.defaultValue=void 0,this.defaultValueDescription=void 0,this.argChoices=void 0,e[0]){case"<":this.required=!0,this._name=e.slice(1,-1);break;case"[":this.required=!1,this._name=e.slice(1,-1);break;default:this.required=!0,this._name=e;break}this._name.length>3&&this._name.slice(-3)==="..."&&(this.variadic=!0,this._name=this._name.slice(0,-3))}name(){return this._name}_concatValue(e,t){return t===this.defaultValue||!Array.isArray(t)?[e]:t.concat(e)}default(e,t){return this.defaultValue=e,this.defaultValueDescription=t,this}argParser(e){return this.parseArg=e,this}choices(e){return this.argChoices=e.slice(),this.parseArg=(t,r)=>{if(!this.argChoices.includes(t))throw new ui(`Allowed choices are ${this.argChoices.join(", ")}.`);return this.variadic?this._concatValue(t,r):t},this}argRequired(){return this.required=!0,this}argOptional(){return this.required=!1,this}};function di(n){let e=n.name()+(n.variadic===!0?"...":"");return n.required?"<"+e+">":"["+e+"]"}nr.Argument=rr;nr.humanReadableArgName=di});var sr=F(ln=>{var{humanReadableArgName:pi}=pt(),or=class{constructor(){this.helpWidth=void 0,this.sortSubcommands=!1,this.sortOptions=!1,this.showGlobalOptions=!1}visibleCommands(e){let t=e.commands.filter(o=>!o._hidden),r=e._getHelpCommand();return r&&!r._hidden&&t.push(r),this.sortSubcommands&&t.sort((o,s)=>o.name().localeCompare(s.name())),t}compareOptions(e,t){let r=o=>o.short?o.short.replace(/^-/,""):o.long.replace(/^--/,"");return r(e).localeCompare(r(t))}visibleOptions(e){let t=e.options.filter(o=>!o.hidden),r=e._getHelpOption();if(r&&!r.hidden){let o=r.short&&e._findOption(r.short),s=r.long&&e._findOption(r.long);!o&&!s?t.push(r):r.long&&!s?t.push(e.createOption(r.long,r.description)):r.short&&!o&&t.push(e.createOption(r.short,r.description))}return this.sortOptions&&t.sort(this.compareOptions),t}visibleGlobalOptions(e){if(!this.showGlobalOptions)return[];let t=[];for(let r=e.parent;r;r=r.parent){let o=r.options.filter(s=>!s.hidden);t.push(...o)}return this.sortOptions&&t.sort(this.compareOptions),t}visibleArguments(e){return e._argsDescription&&e.registeredArguments.forEach(t=>{t.description=t.description||e._argsDescription[t.name()]||""}),e.registeredArguments.find(t=>t.description)?e.registeredArguments:[]}subcommandTerm(e){let t=e.registeredArguments.map(r=>pi(r)).join(" ");return e._name+(e._aliases[0]?"|"+e._aliases[0]:"")+(e.options.length?" [options]":"")+(t?" "+t:"")}optionTerm(e){return e.flags}argumentTerm(e){return e.name()}longestSubcommandTermLength(e,t){return t.visibleCommands(e).reduce((r,o)=>Math.max(r,t.subcommandTerm(o).length),0)}longestOptionTermLength(e,t){return t.visibleOptions(e).reduce((r,o)=>Math.max(r,t.optionTerm(o).length),0)}longestGlobalOptionTermLength(e,t){return t.visibleGlobalOptions(e).reduce((r,o)=>Math.max(r,t.optionTerm(o).length),0)}longestArgumentTermLength(e,t){return t.visibleArguments(e).reduce((r,o)=>Math.max(r,t.argumentTerm(o).length),0)}commandUsage(e){let t=e._name;e._aliases[0]&&(t=t+"|"+e._aliases[0]);let r="";for(let o=e.parent;o;o=o.parent)r=o.name()+" "+r;return r+t+" "+e.usage()}commandDescription(e){return e.description()}subcommandDescription(e){return e.summary()||e.description()}optionDescription(e){let t=[];return e.argChoices&&t.push(`choices: ${e.argChoices.map(r=>JSON.stringify(r)).join(", ")}`),e.defaultValue!==void 0&&(e.required||e.optional||e.isBoolean()&&typeof e.defaultValue=="boolean")&&t.push(`default: ${e.defaultValueDescription||JSON.stringify(e.defaultValue)}`),e.presetArg!==void 0&&e.optional&&t.push(`preset: ${JSON.stringify(e.presetArg)}`),e.envVar!==void 0&&t.push(`env: ${e.envVar}`),t.length>0?`${e.description} (${t.join(", ")})`:e.description}argumentDescription(e){let t=[];if(e.argChoices&&t.push(`choices: ${e.argChoices.map(r=>JSON.stringify(r)).join(", ")}`),e.defaultValue!==void 0&&t.push(`default: ${e.defaultValueDescription||JSON.stringify(e.defaultValue)}`),t.length>0){let r=`(${t.join(", ")})`;return e.description?`${e.description} ${r}`:r}return e.description}formatHelp(e,t){let r=t.padWidth(e,t),o=t.helpWidth||80,s=2,i=2;function a(w,_){if(_){let S=`${w.padEnd(r+i)}${_}`;return t.wrap(S,o-s,r+i)}return w}function c(w){return w.join(`
3
+ `).replace(/^/gm," ".repeat(s))}let l=[`Usage: ${t.commandUsage(e)}`,""],u=t.commandDescription(e);u.length>0&&(l=l.concat([t.wrap(u,o,0),""]));let d=t.visibleArguments(e).map(w=>a(t.argumentTerm(w),t.argumentDescription(w)));d.length>0&&(l=l.concat(["Arguments:",c(d),""]));let m=t.visibleOptions(e).map(w=>a(t.optionTerm(w),t.optionDescription(w)));if(m.length>0&&(l=l.concat(["Options:",c(m),""])),this.showGlobalOptions){let w=t.visibleGlobalOptions(e).map(_=>a(t.optionTerm(_),t.optionDescription(_)));w.length>0&&(l=l.concat(["Global Options:",c(w),""]))}let g=t.visibleCommands(e).map(w=>a(t.subcommandTerm(w),t.subcommandDescription(w)));return g.length>0&&(l=l.concat(["Commands:",c(g),""])),l.join(`
4
4
  `)}padWidth(e,t){return Math.max(t.longestOptionTermLength(e,t),t.longestGlobalOptionTermLength(e,t),t.longestSubcommandTermLength(e,t),t.longestArgumentTermLength(e,t))}wrap(e,t,r,o=40){let s=" \\f\\t\\v\xA0\u1680\u2000-\u200A\u202F\u205F\u3000\uFEFF",i=new RegExp(`[\\n][${s}]+`);if(e.match(i))return e;let a=t-r;if(a<o)return e;let c=e.slice(0,r),l=e.slice(r).replace(`\r
5
5
  `,`
6
- `),u=" ".repeat(r),f="\\s\u200B",_=new RegExp(`
7
- |.{1,${a-1}}([${f}]|$)|[^${f}]+?([${f}]|$)`,"g"),b=l.match(_)||[];return c+b.map((w,S)=>w===`
8
- `?"":(S>0?u:"")+w.trimEnd()).join(`
9
- `)}};dn.Help=sr});var ur=F(lr=>{var{InvalidArgumentError:fi}=Je(),ar=class{constructor(e,t){this.flags=e,this.description=t||"",this.required=e.includes("<"),this.optional=e.includes("["),this.variadic=/\w\.\.\.[>\]]$/.test(e),this.mandatory=!1;let r=gi(e);this.short=r.shortFlag,this.long=r.longFlag,this.negate=!1,this.long&&(this.negate=this.long.startsWith("--no-")),this.defaultValue=void 0,this.defaultValueDescription=void 0,this.presetArg=void 0,this.envVar=void 0,this.parseArg=void 0,this.hidden=!1,this.argChoices=void 0,this.conflictsWith=[],this.implied=void 0}default(e,t){return this.defaultValue=e,this.defaultValueDescription=t,this}preset(e){return this.presetArg=e,this}conflicts(e){return this.conflictsWith=this.conflictsWith.concat(e),this}implies(e){let t=e;return typeof e=="string"&&(t={[e]:!0}),this.implied=Object.assign(this.implied||{},t),this}env(e){return this.envVar=e,this}argParser(e){return this.parseArg=e,this}makeOptionMandatory(e=!0){return this.mandatory=!!e,this}hideHelp(e=!0){return this.hidden=!!e,this}_concatValue(e,t){return t===this.defaultValue||!Array.isArray(t)?[e]:t.concat(e)}choices(e){return this.argChoices=e.slice(),this.parseArg=(t,r)=>{if(!this.argChoices.includes(t))throw new fi(`Allowed choices are ${this.argChoices.join(", ")}.`);return this.variadic?this._concatValue(t,r):t},this}name(){return this.long?this.long.replace(/^--/,""):this.short.replace(/^-/,"")}attributeName(){return hi(this.name().replace(/^no-/,""))}is(e){return this.short===e||this.long===e}isBoolean(){return!this.required&&!this.optional&&!this.negate}},cr=class{constructor(e){this.positiveOptions=new Map,this.negativeOptions=new Map,this.dualOptions=new Set,e.forEach(t=>{t.negate?this.negativeOptions.set(t.attributeName(),t):this.positiveOptions.set(t.attributeName(),t)}),this.negativeOptions.forEach((t,r)=>{this.positiveOptions.has(r)&&this.dualOptions.add(r)})}valueFromOption(e,t){let r=t.attributeName();if(!this.dualOptions.has(r))return!0;let o=this.negativeOptions.get(r).presetArg,s=o!==void 0?o:!1;return t.negate===(s===e)}};function hi(n){return n.split("-").reduce((e,t)=>e+t[0].toUpperCase()+t.slice(1))}function gi(n){let e,t,r=n.split(/[ |,]+/);return r.length>1&&!/^[[<]/.test(r[1])&&(e=r.shift()),t=r.shift(),!e&&/^-[^-]$/.test(t)&&(e=t,t=void 0),{shortFlag:e,longFlag:t}}lr.Option=ar;lr.DualOptions=cr});var mn=F(pn=>{function yi(n,e){if(Math.abs(n.length-e.length)>3)return Math.max(n.length,e.length);let t=[];for(let r=0;r<=n.length;r++)t[r]=[r];for(let r=0;r<=e.length;r++)t[0][r]=r;for(let r=1;r<=e.length;r++)for(let o=1;o<=n.length;o++){let s=1;n[o-1]===e[r-1]?s=0:s=1,t[o][r]=Math.min(t[o-1][r]+1,t[o][r-1]+1,t[o-1][r-1]+s),o>1&&r>1&&n[o-1]===e[r-2]&&n[o-2]===e[r-1]&&(t[o][r]=Math.min(t[o][r],t[o-2][r-2]+1))}return t[n.length][e.length]}function bi(n,e){if(!e||e.length===0)return"";e=Array.from(new Set(e));let t=n.startsWith("--");t&&(n=n.slice(2),e=e.map(i=>i.slice(2)));let r=[],o=3,s=.4;return e.forEach(i=>{if(i.length<=1)return;let a=yi(n,i),c=Math.max(n.length,i.length);(c-a)/c>s&&(a<o?(o=a,r=[i]):a===o&&r.push(i))}),r.sort((i,a)=>i.localeCompare(a)),t&&(r=r.map(i=>`--${i}`)),r.length>1?`
6
+ `),u=" ".repeat(r),m="\\s\u200B",g=new RegExp(`
7
+ |.{1,${a-1}}([${m}]|$)|[^${m}]+?([${m}]|$)`,"g"),w=l.match(g)||[];return c+w.map((_,S)=>_===`
8
+ `?"":(S>0?u:"")+_.trimEnd()).join(`
9
+ `)}};ln.Help=or});var lr=F(cr=>{var{InvalidArgumentError:fi}=Je(),ir=class{constructor(e,t){this.flags=e,this.description=t||"",this.required=e.includes("<"),this.optional=e.includes("["),this.variadic=/\w\.\.\.[>\]]$/.test(e),this.mandatory=!1;let r=hi(e);this.short=r.shortFlag,this.long=r.longFlag,this.negate=!1,this.long&&(this.negate=this.long.startsWith("--no-")),this.defaultValue=void 0,this.defaultValueDescription=void 0,this.presetArg=void 0,this.envVar=void 0,this.parseArg=void 0,this.hidden=!1,this.argChoices=void 0,this.conflictsWith=[],this.implied=void 0}default(e,t){return this.defaultValue=e,this.defaultValueDescription=t,this}preset(e){return this.presetArg=e,this}conflicts(e){return this.conflictsWith=this.conflictsWith.concat(e),this}implies(e){let t=e;return typeof e=="string"&&(t={[e]:!0}),this.implied=Object.assign(this.implied||{},t),this}env(e){return this.envVar=e,this}argParser(e){return this.parseArg=e,this}makeOptionMandatory(e=!0){return this.mandatory=!!e,this}hideHelp(e=!0){return this.hidden=!!e,this}_concatValue(e,t){return t===this.defaultValue||!Array.isArray(t)?[e]:t.concat(e)}choices(e){return this.argChoices=e.slice(),this.parseArg=(t,r)=>{if(!this.argChoices.includes(t))throw new fi(`Allowed choices are ${this.argChoices.join(", ")}.`);return this.variadic?this._concatValue(t,r):t},this}name(){return this.long?this.long.replace(/^--/,""):this.short.replace(/^-/,"")}attributeName(){return mi(this.name().replace(/^no-/,""))}is(e){return this.short===e||this.long===e}isBoolean(){return!this.required&&!this.optional&&!this.negate}},ar=class{constructor(e){this.positiveOptions=new Map,this.negativeOptions=new Map,this.dualOptions=new Set,e.forEach(t=>{t.negate?this.negativeOptions.set(t.attributeName(),t):this.positiveOptions.set(t.attributeName(),t)}),this.negativeOptions.forEach((t,r)=>{this.positiveOptions.has(r)&&this.dualOptions.add(r)})}valueFromOption(e,t){let r=t.attributeName();if(!this.dualOptions.has(r))return!0;let o=this.negativeOptions.get(r).presetArg,s=o!==void 0?o:!1;return t.negate===(s===e)}};function mi(n){return n.split("-").reduce((e,t)=>e+t[0].toUpperCase()+t.slice(1))}function hi(n){let e,t,r=n.split(/[ |,]+/);return r.length>1&&!/^[[<]/.test(r[1])&&(e=r.shift()),t=r.shift(),!e&&/^-[^-]$/.test(t)&&(e=t,t=void 0),{shortFlag:e,longFlag:t}}cr.Option=ir;cr.DualOptions=ar});var dn=F(un=>{function gi(n,e){if(Math.abs(n.length-e.length)>3)return Math.max(n.length,e.length);let t=[];for(let r=0;r<=n.length;r++)t[r]=[r];for(let r=0;r<=e.length;r++)t[0][r]=r;for(let r=1;r<=e.length;r++)for(let o=1;o<=n.length;o++){let s=1;n[o-1]===e[r-1]?s=0:s=1,t[o][r]=Math.min(t[o-1][r]+1,t[o][r-1]+1,t[o-1][r-1]+s),o>1&&r>1&&n[o-1]===e[r-2]&&n[o-2]===e[r-1]&&(t[o][r]=Math.min(t[o][r],t[o-2][r-2]+1))}return t[n.length][e.length]}function yi(n,e){if(!e||e.length===0)return"";e=Array.from(new Set(e));let t=n.startsWith("--");t&&(n=n.slice(2),e=e.map(i=>i.slice(2)));let r=[],o=3,s=.4;return e.forEach(i=>{if(i.length<=1)return;let a=gi(n,i),c=Math.max(n.length,i.length);(c-a)/c>s&&(a<o?(o=a,r=[i]):a===o&&r.push(i))}),r.sort((i,a)=>i.localeCompare(a)),t&&(r=r.map(i=>`--${i}`)),r.length>1?`
10
10
  (Did you mean one of ${r.join(", ")}?)`:r.length===1?`
11
- (Did you mean ${r[0]}?)`:""}pn.suggestSimilar=bi});var bn=F(yn=>{var _i=require("node:events").EventEmitter,dr=require("node:child_process"),ae=require("node:path"),pr=require("node:fs"),j=require("node:process"),{Argument:wi,humanReadableArgName:Si}=pt(),{CommanderError:mr}=Je(),{Help:Ei}=ir(),{Option:fn,DualOptions:vi}=ur(),{suggestSimilar:hn}=mn(),fr=class n extends _i{constructor(e){super(),this.commands=[],this.options=[],this.parent=null,this._allowUnknownOption=!1,this._allowExcessArguments=!0,this.registeredArguments=[],this._args=this.registeredArguments,this.args=[],this.rawArgs=[],this.processedArgs=[],this._scriptPath=null,this._name=e||"",this._optionValues={},this._optionValueSources={},this._storeOptionsAsProperties=!1,this._actionHandler=null,this._executableHandler=!1,this._executableFile=null,this._executableDir=null,this._defaultCommandName=null,this._exitCallback=null,this._aliases=[],this._combineFlagAndOptionalValue=!0,this._description="",this._summary="",this._argsDescription=void 0,this._enablePositionalOptions=!1,this._passThroughOptions=!1,this._lifeCycleHooks={},this._showHelpAfterError=!1,this._showSuggestionAfterError=!0,this._outputConfiguration={writeOut:t=>j.stdout.write(t),writeErr:t=>j.stderr.write(t),getOutHelpWidth:()=>j.stdout.isTTY?j.stdout.columns:void 0,getErrHelpWidth:()=>j.stderr.isTTY?j.stderr.columns:void 0,outputError:(t,r)=>r(t)},this._hidden=!1,this._helpOption=void 0,this._addImplicitHelpCommand=void 0,this._helpCommand=void 0,this._helpConfiguration={}}copyInheritedSettings(e){return this._outputConfiguration=e._outputConfiguration,this._helpOption=e._helpOption,this._helpCommand=e._helpCommand,this._helpConfiguration=e._helpConfiguration,this._exitCallback=e._exitCallback,this._storeOptionsAsProperties=e._storeOptionsAsProperties,this._combineFlagAndOptionalValue=e._combineFlagAndOptionalValue,this._allowExcessArguments=e._allowExcessArguments,this._enablePositionalOptions=e._enablePositionalOptions,this._showHelpAfterError=e._showHelpAfterError,this._showSuggestionAfterError=e._showSuggestionAfterError,this}_getCommandAndAncestors(){let e=[];for(let t=this;t;t=t.parent)e.push(t);return e}command(e,t,r){let o=t,s=r;typeof o=="object"&&o!==null&&(s=o,o=null),s=s||{};let[,i,a]=e.match(/([^ ]+) *(.*)/),c=this.createCommand(i);return o&&(c.description(o),c._executableHandler=!0),s.isDefault&&(this._defaultCommandName=c._name),c._hidden=!!(s.noHelp||s.hidden),c._executableFile=s.executableFile||null,a&&c.arguments(a),this._registerCommand(c),c.parent=this,c.copyInheritedSettings(this),o?this:c}createCommand(e){return new n(e)}createHelp(){return Object.assign(new Ei,this.configureHelp())}configureHelp(e){return e===void 0?this._helpConfiguration:(this._helpConfiguration=e,this)}configureOutput(e){return e===void 0?this._outputConfiguration:(Object.assign(this._outputConfiguration,e),this)}showHelpAfterError(e=!0){return typeof e!="string"&&(e=!!e),this._showHelpAfterError=e,this}showSuggestionAfterError(e=!0){return this._showSuggestionAfterError=!!e,this}addCommand(e,t){if(!e._name)throw new Error(`Command passed to .addCommand() must have a name
11
+ (Did you mean ${r[0]}?)`:""}un.suggestSimilar=yi});var gn=F(hn=>{var bi=require("node:events").EventEmitter,ur=require("node:child_process"),ae=require("node:path"),dr=require("node:fs"),I=require("node:process"),{Argument:wi,humanReadableArgName:_i}=pt(),{CommanderError:pr}=Je(),{Help:Si}=sr(),{Option:pn,DualOptions:Ei}=lr(),{suggestSimilar:fn}=dn(),fr=class n extends bi{constructor(e){super(),this.commands=[],this.options=[],this.parent=null,this._allowUnknownOption=!1,this._allowExcessArguments=!0,this.registeredArguments=[],this._args=this.registeredArguments,this.args=[],this.rawArgs=[],this.processedArgs=[],this._scriptPath=null,this._name=e||"",this._optionValues={},this._optionValueSources={},this._storeOptionsAsProperties=!1,this._actionHandler=null,this._executableHandler=!1,this._executableFile=null,this._executableDir=null,this._defaultCommandName=null,this._exitCallback=null,this._aliases=[],this._combineFlagAndOptionalValue=!0,this._description="",this._summary="",this._argsDescription=void 0,this._enablePositionalOptions=!1,this._passThroughOptions=!1,this._lifeCycleHooks={},this._showHelpAfterError=!1,this._showSuggestionAfterError=!0,this._outputConfiguration={writeOut:t=>I.stdout.write(t),writeErr:t=>I.stderr.write(t),getOutHelpWidth:()=>I.stdout.isTTY?I.stdout.columns:void 0,getErrHelpWidth:()=>I.stderr.isTTY?I.stderr.columns:void 0,outputError:(t,r)=>r(t)},this._hidden=!1,this._helpOption=void 0,this._addImplicitHelpCommand=void 0,this._helpCommand=void 0,this._helpConfiguration={}}copyInheritedSettings(e){return this._outputConfiguration=e._outputConfiguration,this._helpOption=e._helpOption,this._helpCommand=e._helpCommand,this._helpConfiguration=e._helpConfiguration,this._exitCallback=e._exitCallback,this._storeOptionsAsProperties=e._storeOptionsAsProperties,this._combineFlagAndOptionalValue=e._combineFlagAndOptionalValue,this._allowExcessArguments=e._allowExcessArguments,this._enablePositionalOptions=e._enablePositionalOptions,this._showHelpAfterError=e._showHelpAfterError,this._showSuggestionAfterError=e._showSuggestionAfterError,this}_getCommandAndAncestors(){let e=[];for(let t=this;t;t=t.parent)e.push(t);return e}command(e,t,r){let o=t,s=r;typeof o=="object"&&o!==null&&(s=o,o=null),s=s||{};let[,i,a]=e.match(/([^ ]+) *(.*)/),c=this.createCommand(i);return o&&(c.description(o),c._executableHandler=!0),s.isDefault&&(this._defaultCommandName=c._name),c._hidden=!!(s.noHelp||s.hidden),c._executableFile=s.executableFile||null,a&&c.arguments(a),this._registerCommand(c),c.parent=this,c.copyInheritedSettings(this),o?this:c}createCommand(e){return new n(e)}createHelp(){return Object.assign(new Si,this.configureHelp())}configureHelp(e){return e===void 0?this._helpConfiguration:(this._helpConfiguration=e,this)}configureOutput(e){return e===void 0?this._outputConfiguration:(Object.assign(this._outputConfiguration,e),this)}showHelpAfterError(e=!0){return typeof e!="string"&&(e=!!e),this._showHelpAfterError=e,this}showSuggestionAfterError(e=!0){return this._showSuggestionAfterError=!!e,this}addCommand(e,t){if(!e._name)throw new Error(`Command passed to .addCommand() must have a name
12
12
  - specify the name in Command constructor or using .name()`);return t=t||{},t.isDefault&&(this._defaultCommandName=e._name),(t.noHelp||t.hidden)&&(e._hidden=!0),this._registerCommand(e),e.parent=this,e._checkForBrokenPassThrough(),this}createArgument(e,t){return new wi(e,t)}argument(e,t,r,o){let s=this.createArgument(e,t);return typeof r=="function"?s.default(o).argParser(r):s.default(r),this.addArgument(s),this}arguments(e){return e.trim().split(/ +/).forEach(t=>{this.argument(t)}),this}addArgument(e){let t=this.registeredArguments.slice(-1)[0];if(t&&t.variadic)throw new Error(`only the last argument can be variadic '${t.name()}'`);if(e.required&&e.defaultValue!==void 0&&e.parseArg===void 0)throw new Error(`a default value for a required argument is never used: '${e.name()}'`);return this.registeredArguments.push(e),this}helpCommand(e,t){if(typeof e=="boolean")return this._addImplicitHelpCommand=e,this;e=e??"help [command]";let[,r,o]=e.match(/([^ ]+) *(.*)/),s=t??"display help for command",i=this.createCommand(r);return i.helpOption(!1),o&&i.arguments(o),s&&i.description(s),this._addImplicitHelpCommand=!0,this._helpCommand=i,this}addHelpCommand(e,t){return typeof e!="object"?(this.helpCommand(e,t),this):(this._addImplicitHelpCommand=!0,this._helpCommand=e,this)}_getHelpCommand(){return this._addImplicitHelpCommand??(this.commands.length&&!this._actionHandler&&!this._findCommand("help"))?(this._helpCommand===void 0&&this.helpCommand(void 0,void 0),this._helpCommand):null}hook(e,t){let r=["preSubcommand","preAction","postAction"];if(!r.includes(e))throw new Error(`Unexpected value for event passed to hook : '${e}'.
13
- Expecting one of '${r.join("', '")}'`);return this._lifeCycleHooks[e]?this._lifeCycleHooks[e].push(t):this._lifeCycleHooks[e]=[t],this}exitOverride(e){return e?this._exitCallback=e:this._exitCallback=t=>{if(t.code!=="commander.executeSubCommandAsync")throw t},this}_exit(e,t,r){this._exitCallback&&this._exitCallback(new mr(e,t,r)),j.exit(e)}action(e){let t=r=>{let o=this.registeredArguments.length,s=r.slice(0,o);return this._storeOptionsAsProperties?s[o]=this:s[o]=this.opts(),s.push(this),e.apply(this,s)};return this._actionHandler=t,this}createOption(e,t){return new fn(e,t)}_callParseArg(e,t,r,o){try{return e.parseArg(t,r)}catch(s){if(s.code==="commander.invalidArgument"){let i=`${o} ${s.message}`;this.error(i,{exitCode:s.exitCode,code:s.code})}throw s}}_registerOption(e){let t=e.short&&this._findOption(e.short)||e.long&&this._findOption(e.long);if(t){let r=e.long&&this._findOption(e.long)?e.long:e.short;throw new Error(`Cannot add option '${e.flags}'${this._name&&` to command '${this._name}'`} due to conflicting flag '${r}'
14
- - already used by option '${t.flags}'`)}this.options.push(e)}_registerCommand(e){let t=o=>[o.name()].concat(o.aliases()),r=t(e).find(o=>this._findCommand(o));if(r){let o=t(this._findCommand(r)).join("|"),s=t(e).join("|");throw new Error(`cannot add command '${s}' as already have command '${o}'`)}this.commands.push(e)}addOption(e){this._registerOption(e);let t=e.name(),r=e.attributeName();if(e.negate){let s=e.long.replace(/^--no-/,"--");this._findOption(s)||this.setOptionValueWithSource(r,e.defaultValue===void 0?!0:e.defaultValue,"default")}else e.defaultValue!==void 0&&this.setOptionValueWithSource(r,e.defaultValue,"default");let o=(s,i,a)=>{s==null&&e.presetArg!==void 0&&(s=e.presetArg);let c=this.getOptionValue(r);s!==null&&e.parseArg?s=this._callParseArg(e,s,c,i):s!==null&&e.variadic&&(s=e._concatValue(s,c)),s==null&&(e.negate?s=!1:e.isBoolean()||e.optional?s=!0:s=""),this.setOptionValueWithSource(r,s,a)};return this.on("option:"+t,s=>{let i=`error: option '${e.flags}' argument '${s}' is invalid.`;o(s,i,"cli")}),e.envVar&&this.on("optionEnv:"+t,s=>{let i=`error: option '${e.flags}' value '${s}' from env '${e.envVar}' is invalid.`;o(s,i,"env")}),this}_optionEx(e,t,r,o,s){if(typeof t=="object"&&t instanceof fn)throw new Error("To add an Option object use addOption() instead of option() or requiredOption()");let i=this.createOption(t,r);if(i.makeOptionMandatory(!!e.mandatory),typeof o=="function")i.default(s).argParser(o);else if(o instanceof RegExp){let a=o;o=(c,l)=>{let u=a.exec(c);return u?u[0]:l},i.default(s).argParser(o)}else i.default(o);return this.addOption(i)}option(e,t,r,o){return this._optionEx({},e,t,r,o)}requiredOption(e,t,r,o){return this._optionEx({mandatory:!0},e,t,r,o)}combineFlagAndOptionalValue(e=!0){return this._combineFlagAndOptionalValue=!!e,this}allowUnknownOption(e=!0){return this._allowUnknownOption=!!e,this}allowExcessArguments(e=!0){return this._allowExcessArguments=!!e,this}enablePositionalOptions(e=!0){return this._enablePositionalOptions=!!e,this}passThroughOptions(e=!0){return this._passThroughOptions=!!e,this._checkForBrokenPassThrough(),this}_checkForBrokenPassThrough(){if(this.parent&&this._passThroughOptions&&!this.parent._enablePositionalOptions)throw new Error(`passThroughOptions cannot be used for '${this._name}' without turning on enablePositionalOptions for parent command(s)`)}storeOptionsAsProperties(e=!0){if(this.options.length)throw new Error("call .storeOptionsAsProperties() before adding options");if(Object.keys(this._optionValues).length)throw new Error("call .storeOptionsAsProperties() before setting option values");return this._storeOptionsAsProperties=!!e,this}getOptionValue(e){return this._storeOptionsAsProperties?this[e]:this._optionValues[e]}setOptionValue(e,t){return this.setOptionValueWithSource(e,t,void 0)}setOptionValueWithSource(e,t,r){return this._storeOptionsAsProperties?this[e]=t:this._optionValues[e]=t,this._optionValueSources[e]=r,this}getOptionValueSource(e){return this._optionValueSources[e]}getOptionValueSourceWithGlobals(e){let t;return this._getCommandAndAncestors().forEach(r=>{r.getOptionValueSource(e)!==void 0&&(t=r.getOptionValueSource(e))}),t}_prepareUserArgs(e,t){if(e!==void 0&&!Array.isArray(e))throw new Error("first parameter to parse must be array or undefined");if(t=t||{},e===void 0&&t.from===void 0){j.versions?.electron&&(t.from="electron");let o=j.execArgv??[];(o.includes("-e")||o.includes("--eval")||o.includes("-p")||o.includes("--print"))&&(t.from="eval")}e===void 0&&(e=j.argv),this.rawArgs=e.slice();let r;switch(t.from){case void 0:case"node":this._scriptPath=e[1],r=e.slice(2);break;case"electron":j.defaultApp?(this._scriptPath=e[1],r=e.slice(2)):r=e.slice(1);break;case"user":r=e.slice(0);break;case"eval":r=e.slice(1);break;default:throw new Error(`unexpected parse option { from: '${t.from}' }`)}return!this._name&&this._scriptPath&&this.nameFromFilename(this._scriptPath),this._name=this._name||"program",r}parse(e,t){let r=this._prepareUserArgs(e,t);return this._parseCommand([],r),this}async parseAsync(e,t){let r=this._prepareUserArgs(e,t);return await this._parseCommand([],r),this}_executeSubCommand(e,t){t=t.slice();let r=!1,o=[".js",".ts",".tsx",".mjs",".cjs"];function s(u,d){let f=ae.resolve(u,d);if(pr.existsSync(f))return f;if(o.includes(ae.extname(d)))return;let _=o.find(b=>pr.existsSync(`${f}${b}`));if(_)return`${f}${_}`}this._checkForMissingMandatoryOptions(),this._checkForConflictingOptions();let i=e._executableFile||`${this._name}-${e._name}`,a=this._executableDir||"";if(this._scriptPath){let u;try{u=pr.realpathSync(this._scriptPath)}catch{u=this._scriptPath}a=ae.resolve(ae.dirname(u),a)}if(a){let u=s(a,i);if(!u&&!e._executableFile&&this._scriptPath){let d=ae.basename(this._scriptPath,ae.extname(this._scriptPath));d!==this._name&&(u=s(a,`${d}-${e._name}`))}i=u||i}r=o.includes(ae.extname(i));let c;j.platform!=="win32"?r?(t.unshift(i),t=gn(j.execArgv).concat(t),c=dr.spawn(j.argv[0],t,{stdio:"inherit"})):c=dr.spawn(i,t,{stdio:"inherit"}):(t.unshift(i),t=gn(j.execArgv).concat(t),c=dr.spawn(j.execPath,t,{stdio:"inherit"})),c.killed||["SIGUSR1","SIGUSR2","SIGTERM","SIGINT","SIGHUP"].forEach(d=>{j.on(d,()=>{c.killed===!1&&c.exitCode===null&&c.kill(d)})});let l=this._exitCallback;c.on("close",u=>{u=u??1,l?l(new mr(u,"commander.executeSubCommandAsync","(close)")):j.exit(u)}),c.on("error",u=>{if(u.code==="ENOENT"){let d=a?`searched for local subcommand relative to directory '${a}'`:"no directory for search for local subcommand, use .executableDir() to supply a custom directory",f=`'${i}' does not exist
13
+ Expecting one of '${r.join("', '")}'`);return this._lifeCycleHooks[e]?this._lifeCycleHooks[e].push(t):this._lifeCycleHooks[e]=[t],this}exitOverride(e){return e?this._exitCallback=e:this._exitCallback=t=>{if(t.code!=="commander.executeSubCommandAsync")throw t},this}_exit(e,t,r){this._exitCallback&&this._exitCallback(new pr(e,t,r)),I.exit(e)}action(e){let t=r=>{let o=this.registeredArguments.length,s=r.slice(0,o);return this._storeOptionsAsProperties?s[o]=this:s[o]=this.opts(),s.push(this),e.apply(this,s)};return this._actionHandler=t,this}createOption(e,t){return new pn(e,t)}_callParseArg(e,t,r,o){try{return e.parseArg(t,r)}catch(s){if(s.code==="commander.invalidArgument"){let i=`${o} ${s.message}`;this.error(i,{exitCode:s.exitCode,code:s.code})}throw s}}_registerOption(e){let t=e.short&&this._findOption(e.short)||e.long&&this._findOption(e.long);if(t){let r=e.long&&this._findOption(e.long)?e.long:e.short;throw new Error(`Cannot add option '${e.flags}'${this._name&&` to command '${this._name}'`} due to conflicting flag '${r}'
14
+ - already used by option '${t.flags}'`)}this.options.push(e)}_registerCommand(e){let t=o=>[o.name()].concat(o.aliases()),r=t(e).find(o=>this._findCommand(o));if(r){let o=t(this._findCommand(r)).join("|"),s=t(e).join("|");throw new Error(`cannot add command '${s}' as already have command '${o}'`)}this.commands.push(e)}addOption(e){this._registerOption(e);let t=e.name(),r=e.attributeName();if(e.negate){let s=e.long.replace(/^--no-/,"--");this._findOption(s)||this.setOptionValueWithSource(r,e.defaultValue===void 0?!0:e.defaultValue,"default")}else e.defaultValue!==void 0&&this.setOptionValueWithSource(r,e.defaultValue,"default");let o=(s,i,a)=>{s==null&&e.presetArg!==void 0&&(s=e.presetArg);let c=this.getOptionValue(r);s!==null&&e.parseArg?s=this._callParseArg(e,s,c,i):s!==null&&e.variadic&&(s=e._concatValue(s,c)),s==null&&(e.negate?s=!1:e.isBoolean()||e.optional?s=!0:s=""),this.setOptionValueWithSource(r,s,a)};return this.on("option:"+t,s=>{let i=`error: option '${e.flags}' argument '${s}' is invalid.`;o(s,i,"cli")}),e.envVar&&this.on("optionEnv:"+t,s=>{let i=`error: option '${e.flags}' value '${s}' from env '${e.envVar}' is invalid.`;o(s,i,"env")}),this}_optionEx(e,t,r,o,s){if(typeof t=="object"&&t instanceof pn)throw new Error("To add an Option object use addOption() instead of option() or requiredOption()");let i=this.createOption(t,r);if(i.makeOptionMandatory(!!e.mandatory),typeof o=="function")i.default(s).argParser(o);else if(o instanceof RegExp){let a=o;o=(c,l)=>{let u=a.exec(c);return u?u[0]:l},i.default(s).argParser(o)}else i.default(o);return this.addOption(i)}option(e,t,r,o){return this._optionEx({},e,t,r,o)}requiredOption(e,t,r,o){return this._optionEx({mandatory:!0},e,t,r,o)}combineFlagAndOptionalValue(e=!0){return this._combineFlagAndOptionalValue=!!e,this}allowUnknownOption(e=!0){return this._allowUnknownOption=!!e,this}allowExcessArguments(e=!0){return this._allowExcessArguments=!!e,this}enablePositionalOptions(e=!0){return this._enablePositionalOptions=!!e,this}passThroughOptions(e=!0){return this._passThroughOptions=!!e,this._checkForBrokenPassThrough(),this}_checkForBrokenPassThrough(){if(this.parent&&this._passThroughOptions&&!this.parent._enablePositionalOptions)throw new Error(`passThroughOptions cannot be used for '${this._name}' without turning on enablePositionalOptions for parent command(s)`)}storeOptionsAsProperties(e=!0){if(this.options.length)throw new Error("call .storeOptionsAsProperties() before adding options");if(Object.keys(this._optionValues).length)throw new Error("call .storeOptionsAsProperties() before setting option values");return this._storeOptionsAsProperties=!!e,this}getOptionValue(e){return this._storeOptionsAsProperties?this[e]:this._optionValues[e]}setOptionValue(e,t){return this.setOptionValueWithSource(e,t,void 0)}setOptionValueWithSource(e,t,r){return this._storeOptionsAsProperties?this[e]=t:this._optionValues[e]=t,this._optionValueSources[e]=r,this}getOptionValueSource(e){return this._optionValueSources[e]}getOptionValueSourceWithGlobals(e){let t;return this._getCommandAndAncestors().forEach(r=>{r.getOptionValueSource(e)!==void 0&&(t=r.getOptionValueSource(e))}),t}_prepareUserArgs(e,t){if(e!==void 0&&!Array.isArray(e))throw new Error("first parameter to parse must be array or undefined");if(t=t||{},e===void 0&&t.from===void 0){I.versions?.electron&&(t.from="electron");let o=I.execArgv??[];(o.includes("-e")||o.includes("--eval")||o.includes("-p")||o.includes("--print"))&&(t.from="eval")}e===void 0&&(e=I.argv),this.rawArgs=e.slice();let r;switch(t.from){case void 0:case"node":this._scriptPath=e[1],r=e.slice(2);break;case"electron":I.defaultApp?(this._scriptPath=e[1],r=e.slice(2)):r=e.slice(1);break;case"user":r=e.slice(0);break;case"eval":r=e.slice(1);break;default:throw new Error(`unexpected parse option { from: '${t.from}' }`)}return!this._name&&this._scriptPath&&this.nameFromFilename(this._scriptPath),this._name=this._name||"program",r}parse(e,t){let r=this._prepareUserArgs(e,t);return this._parseCommand([],r),this}async parseAsync(e,t){let r=this._prepareUserArgs(e,t);return await this._parseCommand([],r),this}_executeSubCommand(e,t){t=t.slice();let r=!1,o=[".js",".ts",".tsx",".mjs",".cjs"];function s(u,d){let m=ae.resolve(u,d);if(dr.existsSync(m))return m;if(o.includes(ae.extname(d)))return;let g=o.find(w=>dr.existsSync(`${m}${w}`));if(g)return`${m}${g}`}this._checkForMissingMandatoryOptions(),this._checkForConflictingOptions();let i=e._executableFile||`${this._name}-${e._name}`,a=this._executableDir||"";if(this._scriptPath){let u;try{u=dr.realpathSync(this._scriptPath)}catch{u=this._scriptPath}a=ae.resolve(ae.dirname(u),a)}if(a){let u=s(a,i);if(!u&&!e._executableFile&&this._scriptPath){let d=ae.basename(this._scriptPath,ae.extname(this._scriptPath));d!==this._name&&(u=s(a,`${d}-${e._name}`))}i=u||i}r=o.includes(ae.extname(i));let c;I.platform!=="win32"?r?(t.unshift(i),t=mn(I.execArgv).concat(t),c=ur.spawn(I.argv[0],t,{stdio:"inherit"})):c=ur.spawn(i,t,{stdio:"inherit"}):(t.unshift(i),t=mn(I.execArgv).concat(t),c=ur.spawn(I.execPath,t,{stdio:"inherit"})),c.killed||["SIGUSR1","SIGUSR2","SIGTERM","SIGINT","SIGHUP"].forEach(d=>{I.on(d,()=>{c.killed===!1&&c.exitCode===null&&c.kill(d)})});let l=this._exitCallback;c.on("close",u=>{u=u??1,l?l(new pr(u,"commander.executeSubCommandAsync","(close)")):I.exit(u)}),c.on("error",u=>{if(u.code==="ENOENT"){let d=a?`searched for local subcommand relative to directory '${a}'`:"no directory for search for local subcommand, use .executableDir() to supply a custom directory",m=`'${i}' 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
- - ${d}`;throw new Error(f)}else if(u.code==="EACCES")throw new Error(`'${i}' not executable`);if(!l)j.exit(1);else{let d=new mr(1,"commander.executeSubCommandAsync","(error)");d.nestedError=u,l(d)}}),this.runningCommand=c}_dispatchSubcommand(e,t,r){let o=this._findCommand(e);o||this.help({error:!0});let s;return s=this._chainOrCallSubCommandHook(s,o,"preSubcommand"),s=this._chainOrCall(s,()=>{if(o._executableHandler)this._executeSubCommand(o,t.concat(r));else return o._parseCommand(t,r)}),s}_dispatchHelpCommand(e){e||this.help();let t=this._findCommand(e);return t&&!t._executableHandler&&t.help(),this._dispatchSubcommand(e,[],[this._getHelpOption()?.long??this._getHelpOption()?.short??"--help"])}_checkNumberOfArguments(){this.registeredArguments.forEach((e,t)=>{e.required&&this.args[t]==null&&this.missingArgument(e.name())}),!(this.registeredArguments.length>0&&this.registeredArguments[this.registeredArguments.length-1].variadic)&&this.args.length>this.registeredArguments.length&&this._excessArguments(this.args)}_processArguments(){let e=(r,o,s)=>{let i=o;if(o!==null&&r.parseArg){let a=`error: command-argument value '${o}' is invalid for argument '${r.name()}'.`;i=this._callParseArg(r,o,s,a)}return i};this._checkNumberOfArguments();let t=[];this.registeredArguments.forEach((r,o)=>{let s=r.defaultValue;r.variadic?o<this.args.length?(s=this.args.slice(o),r.parseArg&&(s=s.reduce((i,a)=>e(r,a,i),r.defaultValue))):s===void 0&&(s=[]):o<this.args.length&&(s=this.args[o],r.parseArg&&(s=e(r,s,r.defaultValue))),t[o]=s}),this.processedArgs=t}_chainOrCall(e,t){return e&&e.then&&typeof e.then=="function"?e.then(()=>t()):t()}_chainOrCallHooks(e,t){let r=e,o=[];return this._getCommandAndAncestors().reverse().filter(s=>s._lifeCycleHooks[t]!==void 0).forEach(s=>{s._lifeCycleHooks[t].forEach(i=>{o.push({hookedCommand:s,callback:i})})}),t==="postAction"&&o.reverse(),o.forEach(s=>{r=this._chainOrCall(r,()=>s.callback(s.hookedCommand,this))}),r}_chainOrCallSubCommandHook(e,t,r){let o=e;return this._lifeCycleHooks[r]!==void 0&&this._lifeCycleHooks[r].forEach(s=>{o=this._chainOrCall(o,()=>s(this,t))}),o}_parseCommand(e,t){let r=this.parseOptions(t);if(this._parseOptionsEnv(),this._parseOptionsImplied(),e=e.concat(r.operands),t=r.unknown,this.args=e.concat(t),e&&this._findCommand(e[0]))return this._dispatchSubcommand(e[0],e.slice(1),t);if(this._getHelpCommand()&&e[0]===this._getHelpCommand().name())return this._dispatchHelpCommand(e[1]);if(this._defaultCommandName)return this._outputHelpIfRequested(t),this._dispatchSubcommand(this._defaultCommandName,e,t);this.commands.length&&this.args.length===0&&!this._actionHandler&&!this._defaultCommandName&&this.help({error:!0}),this._outputHelpIfRequested(r.unknown),this._checkForMissingMandatoryOptions(),this._checkForConflictingOptions();let o=()=>{r.unknown.length>0&&this.unknownOption(r.unknown[0])},s=`command:${this.name()}`;if(this._actionHandler){o(),this._processArguments();let i;return i=this._chainOrCallHooks(i,"preAction"),i=this._chainOrCall(i,()=>this._actionHandler(this.processedArgs)),this.parent&&(i=this._chainOrCall(i,()=>{this.parent.emit(s,e,t)})),i=this._chainOrCallHooks(i,"postAction"),i}if(this.parent&&this.parent.listenerCount(s))o(),this._processArguments(),this.parent.emit(s,e,t);else if(e.length){if(this._findCommand("*"))return this._dispatchSubcommand("*",e,t);this.listenerCount("command:*")?this.emit("command:*",e,t):this.commands.length?this.unknownCommand():(o(),this._processArguments())}else this.commands.length?(o(),this.help({error:!0})):(o(),this._processArguments())}_findCommand(e){if(e)return this.commands.find(t=>t._name===e||t._aliases.includes(e))}_findOption(e){return this.options.find(t=>t.is(e))}_checkForMissingMandatoryOptions(){this._getCommandAndAncestors().forEach(e=>{e.options.forEach(t=>{t.mandatory&&e.getOptionValue(t.attributeName())===void 0&&e.missingMandatoryOptionValue(t)})})}_checkForConflictingLocalOptions(){let e=this.options.filter(r=>{let o=r.attributeName();return this.getOptionValue(o)===void 0?!1:this.getOptionValueSource(o)!=="default"});e.filter(r=>r.conflictsWith.length>0).forEach(r=>{let o=e.find(s=>r.conflictsWith.includes(s.attributeName()));o&&this._conflictingOption(r,o)})}_checkForConflictingOptions(){this._getCommandAndAncestors().forEach(e=>{e._checkForConflictingLocalOptions()})}parseOptions(e){let t=[],r=[],o=t,s=e.slice();function i(c){return c.length>1&&c[0]==="-"}let a=null;for(;s.length;){let c=s.shift();if(c==="--"){o===r&&o.push(c),o.push(...s);break}if(a&&!i(c)){this.emit(`option:${a.name()}`,c);continue}if(a=null,i(c)){let l=this._findOption(c);if(l){if(l.required){let u=s.shift();u===void 0&&this.optionMissingArgument(l),this.emit(`option:${l.name()}`,u)}else if(l.optional){let u=null;s.length>0&&!i(s[0])&&(u=s.shift()),this.emit(`option:${l.name()}`,u)}else this.emit(`option:${l.name()}`);a=l.variadic?l:null;continue}}if(c.length>2&&c[0]==="-"&&c[1]!=="-"){let l=this._findOption(`-${c[1]}`);if(l){l.required||l.optional&&this._combineFlagAndOptionalValue?this.emit(`option:${l.name()}`,c.slice(2)):(this.emit(`option:${l.name()}`),s.unshift(`-${c.slice(2)}`));continue}}if(/^--[^=]+=/.test(c)){let l=c.indexOf("="),u=this._findOption(c.slice(0,l));if(u&&(u.required||u.optional)){this.emit(`option:${u.name()}`,c.slice(l+1));continue}}if(i(c)&&(o=r),(this._enablePositionalOptions||this._passThroughOptions)&&t.length===0&&r.length===0){if(this._findCommand(c)){t.push(c),s.length>0&&r.push(...s);break}else if(this._getHelpCommand()&&c===this._getHelpCommand().name()){t.push(c),s.length>0&&t.push(...s);break}else if(this._defaultCommandName){r.push(c),s.length>0&&r.push(...s);break}}if(this._passThroughOptions){o.push(c),s.length>0&&o.push(...s);break}o.push(c)}return{operands:t,unknown:r}}opts(){if(this._storeOptionsAsProperties){let e={},t=this.options.length;for(let r=0;r<t;r++){let o=this.options[r].attributeName();e[o]=o===this._versionOptionName?this._version:this[o]}return e}return this._optionValues}optsWithGlobals(){return this._getCommandAndAncestors().reduce((e,t)=>Object.assign(e,t.opts()),{})}error(e,t){this._outputConfiguration.outputError(`${e}
17
+ - ${d}`;throw new Error(m)}else if(u.code==="EACCES")throw new Error(`'${i}' not executable`);if(!l)I.exit(1);else{let d=new pr(1,"commander.executeSubCommandAsync","(error)");d.nestedError=u,l(d)}}),this.runningCommand=c}_dispatchSubcommand(e,t,r){let o=this._findCommand(e);o||this.help({error:!0});let s;return s=this._chainOrCallSubCommandHook(s,o,"preSubcommand"),s=this._chainOrCall(s,()=>{if(o._executableHandler)this._executeSubCommand(o,t.concat(r));else return o._parseCommand(t,r)}),s}_dispatchHelpCommand(e){e||this.help();let t=this._findCommand(e);return t&&!t._executableHandler&&t.help(),this._dispatchSubcommand(e,[],[this._getHelpOption()?.long??this._getHelpOption()?.short??"--help"])}_checkNumberOfArguments(){this.registeredArguments.forEach((e,t)=>{e.required&&this.args[t]==null&&this.missingArgument(e.name())}),!(this.registeredArguments.length>0&&this.registeredArguments[this.registeredArguments.length-1].variadic)&&this.args.length>this.registeredArguments.length&&this._excessArguments(this.args)}_processArguments(){let e=(r,o,s)=>{let i=o;if(o!==null&&r.parseArg){let a=`error: command-argument value '${o}' is invalid for argument '${r.name()}'.`;i=this._callParseArg(r,o,s,a)}return i};this._checkNumberOfArguments();let t=[];this.registeredArguments.forEach((r,o)=>{let s=r.defaultValue;r.variadic?o<this.args.length?(s=this.args.slice(o),r.parseArg&&(s=s.reduce((i,a)=>e(r,a,i),r.defaultValue))):s===void 0&&(s=[]):o<this.args.length&&(s=this.args[o],r.parseArg&&(s=e(r,s,r.defaultValue))),t[o]=s}),this.processedArgs=t}_chainOrCall(e,t){return e&&e.then&&typeof e.then=="function"?e.then(()=>t()):t()}_chainOrCallHooks(e,t){let r=e,o=[];return this._getCommandAndAncestors().reverse().filter(s=>s._lifeCycleHooks[t]!==void 0).forEach(s=>{s._lifeCycleHooks[t].forEach(i=>{o.push({hookedCommand:s,callback:i})})}),t==="postAction"&&o.reverse(),o.forEach(s=>{r=this._chainOrCall(r,()=>s.callback(s.hookedCommand,this))}),r}_chainOrCallSubCommandHook(e,t,r){let o=e;return this._lifeCycleHooks[r]!==void 0&&this._lifeCycleHooks[r].forEach(s=>{o=this._chainOrCall(o,()=>s(this,t))}),o}_parseCommand(e,t){let r=this.parseOptions(t);if(this._parseOptionsEnv(),this._parseOptionsImplied(),e=e.concat(r.operands),t=r.unknown,this.args=e.concat(t),e&&this._findCommand(e[0]))return this._dispatchSubcommand(e[0],e.slice(1),t);if(this._getHelpCommand()&&e[0]===this._getHelpCommand().name())return this._dispatchHelpCommand(e[1]);if(this._defaultCommandName)return this._outputHelpIfRequested(t),this._dispatchSubcommand(this._defaultCommandName,e,t);this.commands.length&&this.args.length===0&&!this._actionHandler&&!this._defaultCommandName&&this.help({error:!0}),this._outputHelpIfRequested(r.unknown),this._checkForMissingMandatoryOptions(),this._checkForConflictingOptions();let o=()=>{r.unknown.length>0&&this.unknownOption(r.unknown[0])},s=`command:${this.name()}`;if(this._actionHandler){o(),this._processArguments();let i;return i=this._chainOrCallHooks(i,"preAction"),i=this._chainOrCall(i,()=>this._actionHandler(this.processedArgs)),this.parent&&(i=this._chainOrCall(i,()=>{this.parent.emit(s,e,t)})),i=this._chainOrCallHooks(i,"postAction"),i}if(this.parent&&this.parent.listenerCount(s))o(),this._processArguments(),this.parent.emit(s,e,t);else if(e.length){if(this._findCommand("*"))return this._dispatchSubcommand("*",e,t);this.listenerCount("command:*")?this.emit("command:*",e,t):this.commands.length?this.unknownCommand():(o(),this._processArguments())}else this.commands.length?(o(),this.help({error:!0})):(o(),this._processArguments())}_findCommand(e){if(e)return this.commands.find(t=>t._name===e||t._aliases.includes(e))}_findOption(e){return this.options.find(t=>t.is(e))}_checkForMissingMandatoryOptions(){this._getCommandAndAncestors().forEach(e=>{e.options.forEach(t=>{t.mandatory&&e.getOptionValue(t.attributeName())===void 0&&e.missingMandatoryOptionValue(t)})})}_checkForConflictingLocalOptions(){let e=this.options.filter(r=>{let o=r.attributeName();return this.getOptionValue(o)===void 0?!1:this.getOptionValueSource(o)!=="default"});e.filter(r=>r.conflictsWith.length>0).forEach(r=>{let o=e.find(s=>r.conflictsWith.includes(s.attributeName()));o&&this._conflictingOption(r,o)})}_checkForConflictingOptions(){this._getCommandAndAncestors().forEach(e=>{e._checkForConflictingLocalOptions()})}parseOptions(e){let t=[],r=[],o=t,s=e.slice();function i(c){return c.length>1&&c[0]==="-"}let a=null;for(;s.length;){let c=s.shift();if(c==="--"){o===r&&o.push(c),o.push(...s);break}if(a&&!i(c)){this.emit(`option:${a.name()}`,c);continue}if(a=null,i(c)){let l=this._findOption(c);if(l){if(l.required){let u=s.shift();u===void 0&&this.optionMissingArgument(l),this.emit(`option:${l.name()}`,u)}else if(l.optional){let u=null;s.length>0&&!i(s[0])&&(u=s.shift()),this.emit(`option:${l.name()}`,u)}else this.emit(`option:${l.name()}`);a=l.variadic?l:null;continue}}if(c.length>2&&c[0]==="-"&&c[1]!=="-"){let l=this._findOption(`-${c[1]}`);if(l){l.required||l.optional&&this._combineFlagAndOptionalValue?this.emit(`option:${l.name()}`,c.slice(2)):(this.emit(`option:${l.name()}`),s.unshift(`-${c.slice(2)}`));continue}}if(/^--[^=]+=/.test(c)){let l=c.indexOf("="),u=this._findOption(c.slice(0,l));if(u&&(u.required||u.optional)){this.emit(`option:${u.name()}`,c.slice(l+1));continue}}if(i(c)&&(o=r),(this._enablePositionalOptions||this._passThroughOptions)&&t.length===0&&r.length===0){if(this._findCommand(c)){t.push(c),s.length>0&&r.push(...s);break}else if(this._getHelpCommand()&&c===this._getHelpCommand().name()){t.push(c),s.length>0&&t.push(...s);break}else if(this._defaultCommandName){r.push(c),s.length>0&&r.push(...s);break}}if(this._passThroughOptions){o.push(c),s.length>0&&o.push(...s);break}o.push(c)}return{operands:t,unknown:r}}opts(){if(this._storeOptionsAsProperties){let e={},t=this.options.length;for(let r=0;r<t;r++){let o=this.options[r].attributeName();e[o]=o===this._versionOptionName?this._version:this[o]}return e}return this._optionValues}optsWithGlobals(){return this._getCommandAndAncestors().reduce((e,t)=>Object.assign(e,t.opts()),{})}error(e,t){this._outputConfiguration.outputError(`${e}
18
18
  `,this._outputConfiguration.writeErr),typeof this._showHelpAfterError=="string"?this._outputConfiguration.writeErr(`${this._showHelpAfterError}
19
19
  `):this._showHelpAfterError&&(this._outputConfiguration.writeErr(`
20
- `),this.outputHelp({error:!0}));let r=t||{},o=r.exitCode||1,s=r.code||"commander.error";this._exit(o,s,e)}_parseOptionsEnv(){this.options.forEach(e=>{if(e.envVar&&e.envVar in j.env){let t=e.attributeName();(this.getOptionValue(t)===void 0||["default","config","env"].includes(this.getOptionValueSource(t)))&&(e.required||e.optional?this.emit(`optionEnv:${e.name()}`,j.env[e.envVar]):this.emit(`optionEnv:${e.name()}`))}})}_parseOptionsImplied(){let e=new vi(this.options),t=r=>this.getOptionValue(r)!==void 0&&!["default","implied"].includes(this.getOptionValueSource(r));this.options.filter(r=>r.implied!==void 0&&t(r.attributeName())&&e.valueFromOption(this.getOptionValue(r.attributeName()),r)).forEach(r=>{Object.keys(r.implied).filter(o=>!t(o)).forEach(o=>{this.setOptionValueWithSource(o,r.implied[o],"implied")})})}missingArgument(e){let t=`error: missing required argument '${e}'`;this.error(t,{code:"commander.missingArgument"})}optionMissingArgument(e){let t=`error: option '${e.flags}' argument missing`;this.error(t,{code:"commander.optionMissingArgument"})}missingMandatoryOptionValue(e){let t=`error: required option '${e.flags}' not specified`;this.error(t,{code:"commander.missingMandatoryOptionValue"})}_conflictingOption(e,t){let r=i=>{let a=i.attributeName(),c=this.getOptionValue(a),l=this.options.find(d=>d.negate&&a===d.attributeName()),u=this.options.find(d=>!d.negate&&a===d.attributeName());return l&&(l.presetArg===void 0&&c===!1||l.presetArg!==void 0&&c===l.presetArg)?l:u||i},o=i=>{let a=r(i),c=a.attributeName();return this.getOptionValueSource(c)==="env"?`environment variable '${a.envVar}'`:`option '${a.flags}'`},s=`error: ${o(e)} cannot be used with ${o(t)}`;this.error(s,{code:"commander.conflictingOption"})}unknownOption(e){if(this._allowUnknownOption)return;let t="";if(e.startsWith("--")&&this._showSuggestionAfterError){let o=[],s=this;do{let i=s.createHelp().visibleOptions(s).filter(a=>a.long).map(a=>a.long);o=o.concat(i),s=s.parent}while(s&&!s._enablePositionalOptions);t=hn(e,o)}let r=`error: unknown option '${e}'${t}`;this.error(r,{code:"commander.unknownOption"})}_excessArguments(e){if(this._allowExcessArguments)return;let t=this.registeredArguments.length,r=t===1?"":"s",s=`error: too many arguments${this.parent?` for '${this.name()}'`:""}. Expected ${t} argument${r} but got ${e.length}.`;this.error(s,{code:"commander.excessArguments"})}unknownCommand(){let e=this.args[0],t="";if(this._showSuggestionAfterError){let o=[];this.createHelp().visibleCommands(this).forEach(s=>{o.push(s.name()),s.alias()&&o.push(s.alias())}),t=hn(e,o)}let r=`error: unknown command '${e}'${t}`;this.error(r,{code:"commander.unknownCommand"})}version(e,t,r){if(e===void 0)return this._version;this._version=e,t=t||"-V, --version",r=r||"output the version number";let o=this.createOption(t,r);return this._versionOptionName=o.attributeName(),this._registerOption(o),this.on("option:"+o.name(),()=>{this._outputConfiguration.writeOut(`${e}
21
- `),this._exit(0,"commander.version",e)}),this}description(e,t){return e===void 0&&t===void 0?this._description:(this._description=e,t&&(this._argsDescription=t),this)}summary(e){return e===void 0?this._summary:(this._summary=e,this)}alias(e){if(e===void 0)return this._aliases[0];let t=this;if(this.commands.length!==0&&this.commands[this.commands.length-1]._executableHandler&&(t=this.commands[this.commands.length-1]),e===t._name)throw new Error("Command alias can't be the same as its name");let r=this.parent?._findCommand(e);if(r){let o=[r.name()].concat(r.aliases()).join("|");throw new Error(`cannot add alias '${e}' to command '${this.name()}' as already have command '${o}'`)}return t._aliases.push(e),this}aliases(e){return e===void 0?this._aliases:(e.forEach(t=>this.alias(t)),this)}usage(e){if(e===void 0){if(this._usage)return this._usage;let t=this.registeredArguments.map(r=>Si(r));return[].concat(this.options.length||this._helpOption!==null?"[options]":[],this.commands.length?"[command]":[],this.registeredArguments.length?t:[]).join(" ")}return this._usage=e,this}name(e){return e===void 0?this._name:(this._name=e,this)}nameFromFilename(e){return this._name=ae.basename(e,ae.extname(e)),this}executableDir(e){return e===void 0?this._executableDir:(this._executableDir=e,this)}helpInformation(e){let t=this.createHelp();return t.helpWidth===void 0&&(t.helpWidth=e&&e.error?this._outputConfiguration.getErrHelpWidth():this._outputConfiguration.getOutHelpWidth()),t.formatHelp(this,t)}_getHelpContext(e){e=e||{};let t={error:!!e.error},r;return t.error?r=o=>this._outputConfiguration.writeErr(o):r=o=>this._outputConfiguration.writeOut(o),t.write=e.write||r,t.command=this,t}outputHelp(e){let t;typeof e=="function"&&(t=e,e=void 0);let r=this._getHelpContext(e);this._getCommandAndAncestors().reverse().forEach(s=>s.emit("beforeAllHelp",r)),this.emit("beforeHelp",r);let o=this.helpInformation(r);if(t&&(o=t(o),typeof o!="string"&&!Buffer.isBuffer(o)))throw new Error("outputHelp callback must return a string or a Buffer");r.write(o),this._getHelpOption()?.long&&this.emit(this._getHelpOption().long),this.emit("afterHelp",r),this._getCommandAndAncestors().forEach(s=>s.emit("afterAllHelp",r))}helpOption(e,t){return typeof e=="boolean"?(e?this._helpOption=this._helpOption??void 0:this._helpOption=null,this):(e=e??"-h, --help",t=t??"display help for command",this._helpOption=this.createOption(e,t),this)}_getHelpOption(){return this._helpOption===void 0&&this.helpOption(void 0,void 0),this._helpOption}addHelpOption(e){return this._helpOption=e,this}help(e){this.outputHelp(e);let t=j.exitCode||0;t===0&&e&&typeof e!="function"&&e.error&&(t=1),this._exit(t,"commander.help","(outputHelp)")}addHelpText(e,t){let r=["beforeAll","before","after","afterAll"];if(!r.includes(e))throw new Error(`Unexpected value for position to addHelpText.
20
+ `),this.outputHelp({error:!0}));let r=t||{},o=r.exitCode||1,s=r.code||"commander.error";this._exit(o,s,e)}_parseOptionsEnv(){this.options.forEach(e=>{if(e.envVar&&e.envVar in I.env){let t=e.attributeName();(this.getOptionValue(t)===void 0||["default","config","env"].includes(this.getOptionValueSource(t)))&&(e.required||e.optional?this.emit(`optionEnv:${e.name()}`,I.env[e.envVar]):this.emit(`optionEnv:${e.name()}`))}})}_parseOptionsImplied(){let e=new Ei(this.options),t=r=>this.getOptionValue(r)!==void 0&&!["default","implied"].includes(this.getOptionValueSource(r));this.options.filter(r=>r.implied!==void 0&&t(r.attributeName())&&e.valueFromOption(this.getOptionValue(r.attributeName()),r)).forEach(r=>{Object.keys(r.implied).filter(o=>!t(o)).forEach(o=>{this.setOptionValueWithSource(o,r.implied[o],"implied")})})}missingArgument(e){let t=`error: missing required argument '${e}'`;this.error(t,{code:"commander.missingArgument"})}optionMissingArgument(e){let t=`error: option '${e.flags}' argument missing`;this.error(t,{code:"commander.optionMissingArgument"})}missingMandatoryOptionValue(e){let t=`error: required option '${e.flags}' not specified`;this.error(t,{code:"commander.missingMandatoryOptionValue"})}_conflictingOption(e,t){let r=i=>{let a=i.attributeName(),c=this.getOptionValue(a),l=this.options.find(d=>d.negate&&a===d.attributeName()),u=this.options.find(d=>!d.negate&&a===d.attributeName());return l&&(l.presetArg===void 0&&c===!1||l.presetArg!==void 0&&c===l.presetArg)?l:u||i},o=i=>{let a=r(i),c=a.attributeName();return this.getOptionValueSource(c)==="env"?`environment variable '${a.envVar}'`:`option '${a.flags}'`},s=`error: ${o(e)} cannot be used with ${o(t)}`;this.error(s,{code:"commander.conflictingOption"})}unknownOption(e){if(this._allowUnknownOption)return;let t="";if(e.startsWith("--")&&this._showSuggestionAfterError){let o=[],s=this;do{let i=s.createHelp().visibleOptions(s).filter(a=>a.long).map(a=>a.long);o=o.concat(i),s=s.parent}while(s&&!s._enablePositionalOptions);t=fn(e,o)}let r=`error: unknown option '${e}'${t}`;this.error(r,{code:"commander.unknownOption"})}_excessArguments(e){if(this._allowExcessArguments)return;let t=this.registeredArguments.length,r=t===1?"":"s",s=`error: too many arguments${this.parent?` for '${this.name()}'`:""}. Expected ${t} argument${r} but got ${e.length}.`;this.error(s,{code:"commander.excessArguments"})}unknownCommand(){let e=this.args[0],t="";if(this._showSuggestionAfterError){let o=[];this.createHelp().visibleCommands(this).forEach(s=>{o.push(s.name()),s.alias()&&o.push(s.alias())}),t=fn(e,o)}let r=`error: unknown command '${e}'${t}`;this.error(r,{code:"commander.unknownCommand"})}version(e,t,r){if(e===void 0)return this._version;this._version=e,t=t||"-V, --version",r=r||"output the version number";let o=this.createOption(t,r);return this._versionOptionName=o.attributeName(),this._registerOption(o),this.on("option:"+o.name(),()=>{this._outputConfiguration.writeOut(`${e}
21
+ `),this._exit(0,"commander.version",e)}),this}description(e,t){return e===void 0&&t===void 0?this._description:(this._description=e,t&&(this._argsDescription=t),this)}summary(e){return e===void 0?this._summary:(this._summary=e,this)}alias(e){if(e===void 0)return this._aliases[0];let t=this;if(this.commands.length!==0&&this.commands[this.commands.length-1]._executableHandler&&(t=this.commands[this.commands.length-1]),e===t._name)throw new Error("Command alias can't be the same as its name");let r=this.parent?._findCommand(e);if(r){let o=[r.name()].concat(r.aliases()).join("|");throw new Error(`cannot add alias '${e}' to command '${this.name()}' as already have command '${o}'`)}return t._aliases.push(e),this}aliases(e){return e===void 0?this._aliases:(e.forEach(t=>this.alias(t)),this)}usage(e){if(e===void 0){if(this._usage)return this._usage;let t=this.registeredArguments.map(r=>_i(r));return[].concat(this.options.length||this._helpOption!==null?"[options]":[],this.commands.length?"[command]":[],this.registeredArguments.length?t:[]).join(" ")}return this._usage=e,this}name(e){return e===void 0?this._name:(this._name=e,this)}nameFromFilename(e){return this._name=ae.basename(e,ae.extname(e)),this}executableDir(e){return e===void 0?this._executableDir:(this._executableDir=e,this)}helpInformation(e){let t=this.createHelp();return t.helpWidth===void 0&&(t.helpWidth=e&&e.error?this._outputConfiguration.getErrHelpWidth():this._outputConfiguration.getOutHelpWidth()),t.formatHelp(this,t)}_getHelpContext(e){e=e||{};let t={error:!!e.error},r;return t.error?r=o=>this._outputConfiguration.writeErr(o):r=o=>this._outputConfiguration.writeOut(o),t.write=e.write||r,t.command=this,t}outputHelp(e){let t;typeof e=="function"&&(t=e,e=void 0);let r=this._getHelpContext(e);this._getCommandAndAncestors().reverse().forEach(s=>s.emit("beforeAllHelp",r)),this.emit("beforeHelp",r);let o=this.helpInformation(r);if(t&&(o=t(o),typeof o!="string"&&!Buffer.isBuffer(o)))throw new Error("outputHelp callback must return a string or a Buffer");r.write(o),this._getHelpOption()?.long&&this.emit(this._getHelpOption().long),this.emit("afterHelp",r),this._getCommandAndAncestors().forEach(s=>s.emit("afterAllHelp",r))}helpOption(e,t){return typeof e=="boolean"?(e?this._helpOption=this._helpOption??void 0:this._helpOption=null,this):(e=e??"-h, --help",t=t??"display help for command",this._helpOption=this.createOption(e,t),this)}_getHelpOption(){return this._helpOption===void 0&&this.helpOption(void 0,void 0),this._helpOption}addHelpOption(e){return this._helpOption=e,this}help(e){this.outputHelp(e);let t=I.exitCode||0;t===0&&e&&typeof e!="function"&&e.error&&(t=1),this._exit(t,"commander.help","(outputHelp)")}addHelpText(e,t){let r=["beforeAll","before","after","afterAll"];if(!r.includes(e))throw new Error(`Unexpected value for position to addHelpText.
22
22
  Expecting one of '${r.join("', '")}'`);let o=`${e}Help`;return this.on(o,s=>{let i;typeof t=="function"?i=t({error:s.error,command:s.command}):i=t,i&&s.write(`${i}
23
- `)}),this}_outputHelpIfRequested(e){let t=this._getHelpOption();t&&e.find(o=>t.is(o))&&(this.outputHelp(),this._exit(0,"commander.helpDisplayed","(outputHelp)"))}};function gn(n){return n.map(e=>{if(!e.startsWith("--inspect"))return e;let t,r="127.0.0.1",o="9229",s;return(s=e.match(/^(--inspect(-brk)?)$/))!==null?t=s[1]:(s=e.match(/^(--inspect(-brk|-port)?)=([^:]+)$/))!==null?(t=s[1],/^\d+$/.test(s[3])?o=s[3]:r=s[3]):(s=e.match(/^(--inspect(-brk|-port)?)=([^:]+):(\d+)$/))!==null&&(t=s[1],r=s[3],o=s[4]),t&&o!=="0"?`${t}=${r}:${parseInt(o)+1}`:e})}yn.Command=fr});var En=F(G=>{var{Argument:_n}=pt(),{Command:hr}=bn(),{CommanderError:ki,InvalidArgumentError:wn}=Je(),{Help:xi}=ir(),{Option:Sn}=ur();G.program=new hr;G.createCommand=n=>new hr(n);G.createOption=(n,e)=>new Sn(n,e);G.createArgument=(n,e)=>new _n(n,e);G.Command=hr;G.Option=Sn;G.Argument=_n;G.Help=xi;G.CommanderError=ki;G.InvalidArgumentError=wn;G.InvalidOptionArgumentError=wn});var On=F((Uc,xn)=>{"use strict";xn.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}});var gr=F((Bc,Cn)=>{var qe=On(),Rn={};for(let n of Object.keys(qe))Rn[qe[n]]=n;var g={rgb:{channels:3,labels:"rgb"},hsl:{channels:3,labels:"hsl"},hsv:{channels:3,labels:"hsv"},hwb:{channels:3,labels:"hwb"},cmyk:{channels:4,labels:"cmyk"},xyz:{channels:3,labels:"xyz"},lab:{channels:3,labels:"lab"},lch:{channels:3,labels:"lch"},hex:{channels:1,labels:["hex"]},keyword:{channels:1,labels:["keyword"]},ansi16:{channels:1,labels:["ansi16"]},ansi256:{channels:1,labels:["ansi256"]},hcg:{channels:3,labels:["h","c","g"]},apple:{channels:3,labels:["r16","g16","b16"]},gray:{channels:1,labels:["gray"]}};Cn.exports=g;for(let n of Object.keys(g)){if(!("channels"in g[n]))throw new Error("missing channels property: "+n);if(!("labels"in g[n]))throw new Error("missing channel labels property: "+n);if(g[n].labels.length!==g[n].channels)throw new Error("channel and label counts mismatch: "+n);let{channels:e,labels:t}=g[n];delete g[n].channels,delete g[n].labels,Object.defineProperty(g[n],"channels",{value:e}),Object.defineProperty(g[n],"labels",{value:t})}g.rgb.hsl=function(n){let e=n[0]/255,t=n[1]/255,r=n[2]/255,o=Math.min(e,t,r),s=Math.max(e,t,r),i=s-o,a,c;s===o?a=0:e===s?a=(t-r)/i:t===s?a=2+(r-e)/i:r===s&&(a=4+(e-t)/i),a=Math.min(a*60,360),a<0&&(a+=360);let l=(o+s)/2;return s===o?c=0:l<=.5?c=i/(s+o):c=i/(2-s-o),[a,c*100,l*100]};g.rgb.hsv=function(n){let e,t,r,o,s,i=n[0]/255,a=n[1]/255,c=n[2]/255,l=Math.max(i,a,c),u=l-Math.min(i,a,c),d=function(f){return(l-f)/6/u+1/2};return u===0?(o=0,s=0):(s=u/l,e=d(i),t=d(a),r=d(c),i===l?o=r-t:a===l?o=1/3+e-r:c===l&&(o=2/3+t-e),o<0?o+=1:o>1&&(o-=1)),[o*360,s*100,l*100]};g.rgb.hwb=function(n){let e=n[0],t=n[1],r=n[2],o=g.rgb.hsl(n)[0],s=1/255*Math.min(e,Math.min(t,r));return r=1-1/255*Math.max(e,Math.max(t,r)),[o,s*100,r*100]};g.rgb.cmyk=function(n){let e=n[0]/255,t=n[1]/255,r=n[2]/255,o=Math.min(1-e,1-t,1-r),s=(1-e-o)/(1-o)||0,i=(1-t-o)/(1-o)||0,a=(1-r-o)/(1-o)||0;return[s*100,i*100,a*100,o*100]};function Oi(n,e){return(n[0]-e[0])**2+(n[1]-e[1])**2+(n[2]-e[2])**2}g.rgb.keyword=function(n){let e=Rn[n];if(e)return e;let t=1/0,r;for(let o of Object.keys(qe)){let s=qe[o],i=Oi(n,s);i<t&&(t=i,r=o)}return r};g.keyword.rgb=function(n){return qe[n]};g.rgb.xyz=function(n){let e=n[0]/255,t=n[1]/255,r=n[2]/255;e=e>.04045?((e+.055)/1.055)**2.4:e/12.92,t=t>.04045?((t+.055)/1.055)**2.4:t/12.92,r=r>.04045?((r+.055)/1.055)**2.4:r/12.92;let o=e*.4124+t*.3576+r*.1805,s=e*.2126+t*.7152+r*.0722,i=e*.0193+t*.1192+r*.9505;return[o*100,s*100,i*100]};g.rgb.lab=function(n){let e=g.rgb.xyz(n),t=e[0],r=e[1],o=e[2];t/=95.047,r/=100,o/=108.883,t=t>.008856?t**(1/3):7.787*t+16/116,r=r>.008856?r**(1/3):7.787*r+16/116,o=o>.008856?o**(1/3):7.787*o+16/116;let s=116*r-16,i=500*(t-r),a=200*(r-o);return[s,i,a]};g.hsl.rgb=function(n){let e=n[0]/360,t=n[1]/100,r=n[2]/100,o,s,i;if(t===0)return i=r*255,[i,i,i];r<.5?o=r*(1+t):o=r+t-r*t;let a=2*r-o,c=[0,0,0];for(let l=0;l<3;l++)s=e+1/3*-(l-1),s<0&&s++,s>1&&s--,6*s<1?i=a+(o-a)*6*s:2*s<1?i=o:3*s<2?i=a+(o-a)*(2/3-s)*6:i=a,c[l]=i*255;return c};g.hsl.hsv=function(n){let e=n[0],t=n[1]/100,r=n[2]/100,o=t,s=Math.max(r,.01);r*=2,t*=r<=1?r:2-r,o*=s<=1?s:2-s;let i=(r+t)/2,a=r===0?2*o/(s+o):2*t/(r+t);return[e,a*100,i*100]};g.hsv.rgb=function(n){let e=n[0]/60,t=n[1]/100,r=n[2]/100,o=Math.floor(e)%6,s=e-Math.floor(e),i=255*r*(1-t),a=255*r*(1-t*s),c=255*r*(1-t*(1-s));switch(r*=255,o){case 0:return[r,c,i];case 1:return[a,r,i];case 2:return[i,r,c];case 3:return[i,a,r];case 4:return[c,i,r];case 5:return[r,i,a]}};g.hsv.hsl=function(n){let e=n[0],t=n[1]/100,r=n[2]/100,o=Math.max(r,.01),s,i;i=(2-t)*r;let a=(2-t)*o;return s=t*o,s/=a<=1?a:2-a,s=s||0,i/=2,[e,s*100,i*100]};g.hwb.rgb=function(n){let e=n[0]/360,t=n[1]/100,r=n[2]/100,o=t+r,s;o>1&&(t/=o,r/=o);let i=Math.floor(6*e),a=1-r;s=6*e-i,(i&1)!==0&&(s=1-s);let c=t+s*(a-t),l,u,d;switch(i){default:case 6:case 0:l=a,u=c,d=t;break;case 1:l=c,u=a,d=t;break;case 2:l=t,u=a,d=c;break;case 3:l=t,u=c,d=a;break;case 4:l=c,u=t,d=a;break;case 5:l=a,u=t,d=c;break}return[l*255,u*255,d*255]};g.cmyk.rgb=function(n){let e=n[0]/100,t=n[1]/100,r=n[2]/100,o=n[3]/100,s=1-Math.min(1,e*(1-o)+o),i=1-Math.min(1,t*(1-o)+o),a=1-Math.min(1,r*(1-o)+o);return[s*255,i*255,a*255]};g.xyz.rgb=function(n){let e=n[0]/100,t=n[1]/100,r=n[2]/100,o,s,i;return o=e*3.2406+t*-1.5372+r*-.4986,s=e*-.9689+t*1.8758+r*.0415,i=e*.0557+t*-.204+r*1.057,o=o>.0031308?1.055*o**(1/2.4)-.055:o*12.92,s=s>.0031308?1.055*s**(1/2.4)-.055:s*12.92,i=i>.0031308?1.055*i**(1/2.4)-.055:i*12.92,o=Math.min(Math.max(0,o),1),s=Math.min(Math.max(0,s),1),i=Math.min(Math.max(0,i),1),[o*255,s*255,i*255]};g.xyz.lab=function(n){let e=n[0],t=n[1],r=n[2];e/=95.047,t/=100,r/=108.883,e=e>.008856?e**(1/3):7.787*e+16/116,t=t>.008856?t**(1/3):7.787*t+16/116,r=r>.008856?r**(1/3):7.787*r+16/116;let o=116*t-16,s=500*(e-t),i=200*(t-r);return[o,s,i]};g.lab.xyz=function(n){let e=n[0],t=n[1],r=n[2],o,s,i;s=(e+16)/116,o=t/500+s,i=s-r/200;let a=s**3,c=o**3,l=i**3;return s=a>.008856?a:(s-16/116)/7.787,o=c>.008856?c:(o-16/116)/7.787,i=l>.008856?l:(i-16/116)/7.787,o*=95.047,s*=100,i*=108.883,[o,s,i]};g.lab.lch=function(n){let e=n[0],t=n[1],r=n[2],o;o=Math.atan2(r,t)*360/2/Math.PI,o<0&&(o+=360);let i=Math.sqrt(t*t+r*r);return[e,i,o]};g.lch.lab=function(n){let e=n[0],t=n[1],o=n[2]/360*2*Math.PI,s=t*Math.cos(o),i=t*Math.sin(o);return[e,s,i]};g.rgb.ansi16=function(n,e=null){let[t,r,o]=n,s=e===null?g.rgb.hsv(n)[2]:e;if(s=Math.round(s/50),s===0)return 30;let i=30+(Math.round(o/255)<<2|Math.round(r/255)<<1|Math.round(t/255));return s===2&&(i+=60),i};g.hsv.ansi16=function(n){return g.rgb.ansi16(g.hsv.rgb(n),n[2])};g.rgb.ansi256=function(n){let e=n[0],t=n[1],r=n[2];return e===t&&t===r?e<8?16:e>248?231:Math.round((e-8)/247*24)+232:16+36*Math.round(e/255*5)+6*Math.round(t/255*5)+Math.round(r/255*5)};g.ansi16.rgb=function(n){let e=n%10;if(e===0||e===7)return n>50&&(e+=3.5),e=e/10.5*255,[e,e,e];let t=(~~(n>50)+1)*.5,r=(e&1)*t*255,o=(e>>1&1)*t*255,s=(e>>2&1)*t*255;return[r,o,s]};g.ansi256.rgb=function(n){if(n>=232){let s=(n-232)*10+8;return[s,s,s]}n-=16;let e,t=Math.floor(n/36)/5*255,r=Math.floor((e=n%36)/6)/5*255,o=e%6/5*255;return[t,r,o]};g.rgb.hex=function(n){let t=(((Math.round(n[0])&255)<<16)+((Math.round(n[1])&255)<<8)+(Math.round(n[2])&255)).toString(16).toUpperCase();return"000000".substring(t.length)+t};g.hex.rgb=function(n){let e=n.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);if(!e)return[0,0,0];let t=e[0];e[0].length===3&&(t=t.split("").map(a=>a+a).join(""));let r=parseInt(t,16),o=r>>16&255,s=r>>8&255,i=r&255;return[o,s,i]};g.rgb.hcg=function(n){let e=n[0]/255,t=n[1]/255,r=n[2]/255,o=Math.max(Math.max(e,t),r),s=Math.min(Math.min(e,t),r),i=o-s,a,c;return i<1?a=s/(1-i):a=0,i<=0?c=0:o===e?c=(t-r)/i%6:o===t?c=2+(r-e)/i:c=4+(e-t)/i,c/=6,c%=1,[c*360,i*100,a*100]};g.hsl.hcg=function(n){let e=n[1]/100,t=n[2]/100,r=t<.5?2*e*t:2*e*(1-t),o=0;return r<1&&(o=(t-.5*r)/(1-r)),[n[0],r*100,o*100]};g.hsv.hcg=function(n){let e=n[1]/100,t=n[2]/100,r=e*t,o=0;return r<1&&(o=(t-r)/(1-r)),[n[0],r*100,o*100]};g.hcg.rgb=function(n){let e=n[0]/360,t=n[1]/100,r=n[2]/100;if(t===0)return[r*255,r*255,r*255];let o=[0,0,0],s=e%1*6,i=s%1,a=1-i,c=0;switch(Math.floor(s)){case 0:o[0]=1,o[1]=i,o[2]=0;break;case 1:o[0]=a,o[1]=1,o[2]=0;break;case 2:o[0]=0,o[1]=1,o[2]=i;break;case 3:o[0]=0,o[1]=a,o[2]=1;break;case 4:o[0]=i,o[1]=0,o[2]=1;break;default:o[0]=1,o[1]=0,o[2]=a}return c=(1-t)*r,[(t*o[0]+c)*255,(t*o[1]+c)*255,(t*o[2]+c)*255]};g.hcg.hsv=function(n){let e=n[1]/100,t=n[2]/100,r=e+t*(1-e),o=0;return r>0&&(o=e/r),[n[0],o*100,r*100]};g.hcg.hsl=function(n){let e=n[1]/100,r=n[2]/100*(1-e)+.5*e,o=0;return r>0&&r<.5?o=e/(2*r):r>=.5&&r<1&&(o=e/(2*(1-r))),[n[0],o*100,r*100]};g.hcg.hwb=function(n){let e=n[1]/100,t=n[2]/100,r=e+t*(1-e);return[n[0],(r-e)*100,(1-r)*100]};g.hwb.hcg=function(n){let e=n[1]/100,r=1-n[2]/100,o=r-e,s=0;return o<1&&(s=(r-o)/(1-o)),[n[0],o*100,s*100]};g.apple.rgb=function(n){return[n[0]/65535*255,n[1]/65535*255,n[2]/65535*255]};g.rgb.apple=function(n){return[n[0]/255*65535,n[1]/255*65535,n[2]/255*65535]};g.gray.rgb=function(n){return[n[0]/100*255,n[0]/100*255,n[0]/100*255]};g.gray.hsl=function(n){return[0,0,n[0]]};g.gray.hsv=g.gray.hsl;g.gray.hwb=function(n){return[0,100,n[0]]};g.gray.cmyk=function(n){return[0,0,0,n[0]]};g.gray.lab=function(n){return[n[0],0,0]};g.gray.hex=function(n){let e=Math.round(n[0]/100*255)&255,r=((e<<16)+(e<<8)+e).toString(16).toUpperCase();return"000000".substring(r.length)+r};g.rgb.gray=function(n){return[(n[0]+n[1]+n[2])/3/255*100]}});var Tn=F((Vc,An)=>{var mt=gr();function Ri(){let n={},e=Object.keys(mt);for(let t=e.length,r=0;r<t;r++)n[e[r]]={distance:-1,parent:null};return n}function Ci(n){let e=Ri(),t=[n];for(e[n].distance=0;t.length;){let r=t.pop(),o=Object.keys(mt[r]);for(let s=o.length,i=0;i<s;i++){let a=o[i],c=e[a];c.distance===-1&&(c.distance=e[r].distance+1,c.parent=r,t.unshift(a))}}return e}function Ai(n,e){return function(t){return e(n(t))}}function Ti(n,e){let t=[e[n].parent,n],r=mt[e[n].parent][n],o=e[n].parent;for(;e[o].parent;)t.unshift(e[o].parent),r=Ai(mt[e[o].parent][o],r),o=e[o].parent;return r.conversion=t,r}An.exports=function(n){let e=Ci(n),t={},r=Object.keys(e);for(let o=r.length,s=0;s<o;s++){let i=r[s];e[i].parent!==null&&(t[i]=Ti(i,e))}return t}});var Nn=F((Wc,Mn)=>{var yr=gr(),Mi=Tn(),Me={},Ni=Object.keys(yr);function $i(n){let e=function(...t){let r=t[0];return r==null?r:(r.length>1&&(t=r),n(t))};return"conversion"in n&&(e.conversion=n.conversion),e}function ji(n){let e=function(...t){let r=t[0];if(r==null)return r;r.length>1&&(t=r);let o=n(t);if(typeof o=="object")for(let s=o.length,i=0;i<s;i++)o[i]=Math.round(o[i]);return o};return"conversion"in n&&(e.conversion=n.conversion),e}Ni.forEach(n=>{Me[n]={},Object.defineProperty(Me[n],"channels",{value:yr[n].channels}),Object.defineProperty(Me[n],"labels",{value:yr[n].labels});let e=Mi(n);Object.keys(e).forEach(r=>{let o=e[r];Me[n][r]=ji(o),Me[n][r].raw=$i(o)})});Mn.exports=Me});var Pn=F((Jc,Fn)=>{"use strict";var $n=(n,e)=>(...t)=>`\x1B[${n(...t)+e}m`,jn=(n,e)=>(...t)=>{let r=n(...t);return`\x1B[${38+e};5;${r}m`},In=(n,e)=>(...t)=>{let r=n(...t);return`\x1B[${38+e};2;${r[0]};${r[1]};${r[2]}m`},ft=n=>n,Dn=(n,e,t)=>[n,e,t],Ne=(n,e,t)=>{Object.defineProperty(n,e,{get:()=>{let r=t();return Object.defineProperty(n,e,{value:r,enumerable:!0,configurable:!0}),r},enumerable:!0,configurable:!0})},br,$e=(n,e,t,r)=>{br===void 0&&(br=Nn());let o=r?10:0,s={};for(let[i,a]of Object.entries(br)){let c=i==="ansi16"?"ansi":i;i===e?s[c]=n(t,o):typeof a=="object"&&(s[c]=n(a[e],o))}return s};function Ii(){let n=new Map,e={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],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],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],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}};e.color.gray=e.color.blackBright,e.bgColor.bgGray=e.bgColor.bgBlackBright,e.color.grey=e.color.blackBright,e.bgColor.bgGrey=e.bgColor.bgBlackBright;for(let[t,r]of Object.entries(e)){for(let[o,s]of Object.entries(r))e[o]={open:`\x1B[${s[0]}m`,close:`\x1B[${s[1]}m`},r[o]=e[o],n.set(s[0],s[1]);Object.defineProperty(e,t,{value:r,enumerable:!1})}return Object.defineProperty(e,"codes",{value:n,enumerable:!1}),e.color.close="\x1B[39m",e.bgColor.close="\x1B[49m",Ne(e.color,"ansi",()=>$e($n,"ansi16",ft,!1)),Ne(e.color,"ansi256",()=>$e(jn,"ansi256",ft,!1)),Ne(e.color,"ansi16m",()=>$e(In,"rgb",Dn,!1)),Ne(e.bgColor,"ansi",()=>$e($n,"ansi16",ft,!0)),Ne(e.bgColor,"ansi256",()=>$e(jn,"ansi256",ft,!0)),Ne(e.bgColor,"ansi16m",()=>$e(In,"rgb",Dn,!0)),e}Object.defineProperty(Fn,"exports",{enumerable:!0,get:Ii})});var Hn=F((qc,Ln)=>{"use strict";Ln.exports=(n,e=process.argv)=>{let t=n.startsWith("-")?"":n.length===1?"-":"--",r=e.indexOf(t+n),o=e.indexOf("--");return r!==-1&&(o===-1||r<o)}});var Vn=F((Gc,Bn)=>{"use strict";var Di=require("os"),Un=require("tty"),X=Hn(),{env:I}=process,me;X("no-color")||X("no-colors")||X("color=false")||X("color=never")?me=0:(X("color")||X("colors")||X("color=true")||X("color=always"))&&(me=1);"FORCE_COLOR"in I&&(I.FORCE_COLOR==="true"?me=1:I.FORCE_COLOR==="false"?me=0:me=I.FORCE_COLOR.length===0?1:Math.min(parseInt(I.FORCE_COLOR,10),3));function _r(n){return n===0?!1:{level:n,hasBasic:!0,has256:n>=2,has16m:n>=3}}function wr(n,e){if(me===0)return 0;if(X("color=16m")||X("color=full")||X("color=truecolor"))return 3;if(X("color=256"))return 2;if(n&&!e&&me===void 0)return 0;let t=me||0;if(I.TERM==="dumb")return t;if(process.platform==="win32"){let r=Di.release().split(".");return Number(r[0])>=10&&Number(r[2])>=10586?Number(r[2])>=14931?3:2:1}if("CI"in I)return["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI","GITHUB_ACTIONS","BUILDKITE"].some(r=>r in I)||I.CI_NAME==="codeship"?1:t;if("TEAMCITY_VERSION"in I)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(I.TEAMCITY_VERSION)?1:0;if(I.COLORTERM==="truecolor")return 3;if("TERM_PROGRAM"in I){let r=parseInt((I.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(I.TERM_PROGRAM){case"iTerm.app":return r>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(I.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(I.TERM)||"COLORTERM"in I?1:t}function Fi(n){let e=wr(n,n&&n.isTTY);return _r(e)}Bn.exports={supportsColor:Fi,stdout:_r(wr(!0,Un.isatty(1))),stderr:_r(wr(!0,Un.isatty(2)))}});var Jn=F((Xc,Wn)=>{"use strict";var Pi=(n,e,t)=>{let r=n.indexOf(e);if(r===-1)return n;let o=e.length,s=0,i="";do i+=n.substr(s,r-s)+e+t,s=r+o,r=n.indexOf(e,s);while(r!==-1);return i+=n.substr(s),i},Li=(n,e,t,r)=>{let o=0,s="";do{let i=n[r-1]==="\r";s+=n.substr(o,(i?r-1:r)-o)+e+(i?`\r
23
+ `)}),this}_outputHelpIfRequested(e){let t=this._getHelpOption();t&&e.find(o=>t.is(o))&&(this.outputHelp(),this._exit(0,"commander.helpDisplayed","(outputHelp)"))}};function mn(n){return n.map(e=>{if(!e.startsWith("--inspect"))return e;let t,r="127.0.0.1",o="9229",s;return(s=e.match(/^(--inspect(-brk)?)$/))!==null?t=s[1]:(s=e.match(/^(--inspect(-brk|-port)?)=([^:]+)$/))!==null?(t=s[1],/^\d+$/.test(s[3])?o=s[3]:r=s[3]):(s=e.match(/^(--inspect(-brk|-port)?)=([^:]+):(\d+)$/))!==null&&(t=s[1],r=s[3],o=s[4]),t&&o!=="0"?`${t}=${r}:${parseInt(o)+1}`:e})}hn.Command=fr});var _n=F(G=>{var{Argument:yn}=pt(),{Command:mr}=gn(),{CommanderError:vi,InvalidArgumentError:bn}=Je(),{Help:ki}=sr(),{Option:wn}=lr();G.program=new mr;G.createCommand=n=>new mr(n);G.createOption=(n,e)=>new wn(n,e);G.createArgument=(n,e)=>new yn(n,e);G.Command=mr;G.Option=wn;G.Argument=yn;G.Help=ki;G.CommanderError=vi;G.InvalidArgumentError=bn;G.InvalidOptionArgumentError=bn});var kn=F((Vc,vn)=>{"use strict";vn.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}});var hr=F((Wc,On)=>{var qe=kn(),xn={};for(let n of Object.keys(qe))xn[qe[n]]=n;var y={rgb:{channels:3,labels:"rgb"},hsl:{channels:3,labels:"hsl"},hsv:{channels:3,labels:"hsv"},hwb:{channels:3,labels:"hwb"},cmyk:{channels:4,labels:"cmyk"},xyz:{channels:3,labels:"xyz"},lab:{channels:3,labels:"lab"},lch:{channels:3,labels:"lch"},hex:{channels:1,labels:["hex"]},keyword:{channels:1,labels:["keyword"]},ansi16:{channels:1,labels:["ansi16"]},ansi256:{channels:1,labels:["ansi256"]},hcg:{channels:3,labels:["h","c","g"]},apple:{channels:3,labels:["r16","g16","b16"]},gray:{channels:1,labels:["gray"]}};On.exports=y;for(let n of Object.keys(y)){if(!("channels"in y[n]))throw new Error("missing channels property: "+n);if(!("labels"in y[n]))throw new Error("missing channel labels property: "+n);if(y[n].labels.length!==y[n].channels)throw new Error("channel and label counts mismatch: "+n);let{channels:e,labels:t}=y[n];delete y[n].channels,delete y[n].labels,Object.defineProperty(y[n],"channels",{value:e}),Object.defineProperty(y[n],"labels",{value:t})}y.rgb.hsl=function(n){let e=n[0]/255,t=n[1]/255,r=n[2]/255,o=Math.min(e,t,r),s=Math.max(e,t,r),i=s-o,a,c;s===o?a=0:e===s?a=(t-r)/i:t===s?a=2+(r-e)/i:r===s&&(a=4+(e-t)/i),a=Math.min(a*60,360),a<0&&(a+=360);let l=(o+s)/2;return s===o?c=0:l<=.5?c=i/(s+o):c=i/(2-s-o),[a,c*100,l*100]};y.rgb.hsv=function(n){let e,t,r,o,s,i=n[0]/255,a=n[1]/255,c=n[2]/255,l=Math.max(i,a,c),u=l-Math.min(i,a,c),d=function(m){return(l-m)/6/u+1/2};return u===0?(o=0,s=0):(s=u/l,e=d(i),t=d(a),r=d(c),i===l?o=r-t:a===l?o=1/3+e-r:c===l&&(o=2/3+t-e),o<0?o+=1:o>1&&(o-=1)),[o*360,s*100,l*100]};y.rgb.hwb=function(n){let e=n[0],t=n[1],r=n[2],o=y.rgb.hsl(n)[0],s=1/255*Math.min(e,Math.min(t,r));return r=1-1/255*Math.max(e,Math.max(t,r)),[o,s*100,r*100]};y.rgb.cmyk=function(n){let e=n[0]/255,t=n[1]/255,r=n[2]/255,o=Math.min(1-e,1-t,1-r),s=(1-e-o)/(1-o)||0,i=(1-t-o)/(1-o)||0,a=(1-r-o)/(1-o)||0;return[s*100,i*100,a*100,o*100]};function xi(n,e){return(n[0]-e[0])**2+(n[1]-e[1])**2+(n[2]-e[2])**2}y.rgb.keyword=function(n){let e=xn[n];if(e)return e;let t=1/0,r;for(let o of Object.keys(qe)){let s=qe[o],i=xi(n,s);i<t&&(t=i,r=o)}return r};y.keyword.rgb=function(n){return qe[n]};y.rgb.xyz=function(n){let e=n[0]/255,t=n[1]/255,r=n[2]/255;e=e>.04045?((e+.055)/1.055)**2.4:e/12.92,t=t>.04045?((t+.055)/1.055)**2.4:t/12.92,r=r>.04045?((r+.055)/1.055)**2.4:r/12.92;let o=e*.4124+t*.3576+r*.1805,s=e*.2126+t*.7152+r*.0722,i=e*.0193+t*.1192+r*.9505;return[o*100,s*100,i*100]};y.rgb.lab=function(n){let e=y.rgb.xyz(n),t=e[0],r=e[1],o=e[2];t/=95.047,r/=100,o/=108.883,t=t>.008856?t**(1/3):7.787*t+16/116,r=r>.008856?r**(1/3):7.787*r+16/116,o=o>.008856?o**(1/3):7.787*o+16/116;let s=116*r-16,i=500*(t-r),a=200*(r-o);return[s,i,a]};y.hsl.rgb=function(n){let e=n[0]/360,t=n[1]/100,r=n[2]/100,o,s,i;if(t===0)return i=r*255,[i,i,i];r<.5?o=r*(1+t):o=r+t-r*t;let a=2*r-o,c=[0,0,0];for(let l=0;l<3;l++)s=e+1/3*-(l-1),s<0&&s++,s>1&&s--,6*s<1?i=a+(o-a)*6*s:2*s<1?i=o:3*s<2?i=a+(o-a)*(2/3-s)*6:i=a,c[l]=i*255;return c};y.hsl.hsv=function(n){let e=n[0],t=n[1]/100,r=n[2]/100,o=t,s=Math.max(r,.01);r*=2,t*=r<=1?r:2-r,o*=s<=1?s:2-s;let i=(r+t)/2,a=r===0?2*o/(s+o):2*t/(r+t);return[e,a*100,i*100]};y.hsv.rgb=function(n){let e=n[0]/60,t=n[1]/100,r=n[2]/100,o=Math.floor(e)%6,s=e-Math.floor(e),i=255*r*(1-t),a=255*r*(1-t*s),c=255*r*(1-t*(1-s));switch(r*=255,o){case 0:return[r,c,i];case 1:return[a,r,i];case 2:return[i,r,c];case 3:return[i,a,r];case 4:return[c,i,r];case 5:return[r,i,a]}};y.hsv.hsl=function(n){let e=n[0],t=n[1]/100,r=n[2]/100,o=Math.max(r,.01),s,i;i=(2-t)*r;let a=(2-t)*o;return s=t*o,s/=a<=1?a:2-a,s=s||0,i/=2,[e,s*100,i*100]};y.hwb.rgb=function(n){let e=n[0]/360,t=n[1]/100,r=n[2]/100,o=t+r,s;o>1&&(t/=o,r/=o);let i=Math.floor(6*e),a=1-r;s=6*e-i,(i&1)!==0&&(s=1-s);let c=t+s*(a-t),l,u,d;switch(i){default:case 6:case 0:l=a,u=c,d=t;break;case 1:l=c,u=a,d=t;break;case 2:l=t,u=a,d=c;break;case 3:l=t,u=c,d=a;break;case 4:l=c,u=t,d=a;break;case 5:l=a,u=t,d=c;break}return[l*255,u*255,d*255]};y.cmyk.rgb=function(n){let e=n[0]/100,t=n[1]/100,r=n[2]/100,o=n[3]/100,s=1-Math.min(1,e*(1-o)+o),i=1-Math.min(1,t*(1-o)+o),a=1-Math.min(1,r*(1-o)+o);return[s*255,i*255,a*255]};y.xyz.rgb=function(n){let e=n[0]/100,t=n[1]/100,r=n[2]/100,o,s,i;return o=e*3.2406+t*-1.5372+r*-.4986,s=e*-.9689+t*1.8758+r*.0415,i=e*.0557+t*-.204+r*1.057,o=o>.0031308?1.055*o**(1/2.4)-.055:o*12.92,s=s>.0031308?1.055*s**(1/2.4)-.055:s*12.92,i=i>.0031308?1.055*i**(1/2.4)-.055:i*12.92,o=Math.min(Math.max(0,o),1),s=Math.min(Math.max(0,s),1),i=Math.min(Math.max(0,i),1),[o*255,s*255,i*255]};y.xyz.lab=function(n){let e=n[0],t=n[1],r=n[2];e/=95.047,t/=100,r/=108.883,e=e>.008856?e**(1/3):7.787*e+16/116,t=t>.008856?t**(1/3):7.787*t+16/116,r=r>.008856?r**(1/3):7.787*r+16/116;let o=116*t-16,s=500*(e-t),i=200*(t-r);return[o,s,i]};y.lab.xyz=function(n){let e=n[0],t=n[1],r=n[2],o,s,i;s=(e+16)/116,o=t/500+s,i=s-r/200;let a=s**3,c=o**3,l=i**3;return s=a>.008856?a:(s-16/116)/7.787,o=c>.008856?c:(o-16/116)/7.787,i=l>.008856?l:(i-16/116)/7.787,o*=95.047,s*=100,i*=108.883,[o,s,i]};y.lab.lch=function(n){let e=n[0],t=n[1],r=n[2],o;o=Math.atan2(r,t)*360/2/Math.PI,o<0&&(o+=360);let i=Math.sqrt(t*t+r*r);return[e,i,o]};y.lch.lab=function(n){let e=n[0],t=n[1],o=n[2]/360*2*Math.PI,s=t*Math.cos(o),i=t*Math.sin(o);return[e,s,i]};y.rgb.ansi16=function(n,e=null){let[t,r,o]=n,s=e===null?y.rgb.hsv(n)[2]:e;if(s=Math.round(s/50),s===0)return 30;let i=30+(Math.round(o/255)<<2|Math.round(r/255)<<1|Math.round(t/255));return s===2&&(i+=60),i};y.hsv.ansi16=function(n){return y.rgb.ansi16(y.hsv.rgb(n),n[2])};y.rgb.ansi256=function(n){let e=n[0],t=n[1],r=n[2];return e===t&&t===r?e<8?16:e>248?231:Math.round((e-8)/247*24)+232:16+36*Math.round(e/255*5)+6*Math.round(t/255*5)+Math.round(r/255*5)};y.ansi16.rgb=function(n){let e=n%10;if(e===0||e===7)return n>50&&(e+=3.5),e=e/10.5*255,[e,e,e];let t=(~~(n>50)+1)*.5,r=(e&1)*t*255,o=(e>>1&1)*t*255,s=(e>>2&1)*t*255;return[r,o,s]};y.ansi256.rgb=function(n){if(n>=232){let s=(n-232)*10+8;return[s,s,s]}n-=16;let e,t=Math.floor(n/36)/5*255,r=Math.floor((e=n%36)/6)/5*255,o=e%6/5*255;return[t,r,o]};y.rgb.hex=function(n){let t=(((Math.round(n[0])&255)<<16)+((Math.round(n[1])&255)<<8)+(Math.round(n[2])&255)).toString(16).toUpperCase();return"000000".substring(t.length)+t};y.hex.rgb=function(n){let e=n.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);if(!e)return[0,0,0];let t=e[0];e[0].length===3&&(t=t.split("").map(a=>a+a).join(""));let r=parseInt(t,16),o=r>>16&255,s=r>>8&255,i=r&255;return[o,s,i]};y.rgb.hcg=function(n){let e=n[0]/255,t=n[1]/255,r=n[2]/255,o=Math.max(Math.max(e,t),r),s=Math.min(Math.min(e,t),r),i=o-s,a,c;return i<1?a=s/(1-i):a=0,i<=0?c=0:o===e?c=(t-r)/i%6:o===t?c=2+(r-e)/i:c=4+(e-t)/i,c/=6,c%=1,[c*360,i*100,a*100]};y.hsl.hcg=function(n){let e=n[1]/100,t=n[2]/100,r=t<.5?2*e*t:2*e*(1-t),o=0;return r<1&&(o=(t-.5*r)/(1-r)),[n[0],r*100,o*100]};y.hsv.hcg=function(n){let e=n[1]/100,t=n[2]/100,r=e*t,o=0;return r<1&&(o=(t-r)/(1-r)),[n[0],r*100,o*100]};y.hcg.rgb=function(n){let e=n[0]/360,t=n[1]/100,r=n[2]/100;if(t===0)return[r*255,r*255,r*255];let o=[0,0,0],s=e%1*6,i=s%1,a=1-i,c=0;switch(Math.floor(s)){case 0:o[0]=1,o[1]=i,o[2]=0;break;case 1:o[0]=a,o[1]=1,o[2]=0;break;case 2:o[0]=0,o[1]=1,o[2]=i;break;case 3:o[0]=0,o[1]=a,o[2]=1;break;case 4:o[0]=i,o[1]=0,o[2]=1;break;default:o[0]=1,o[1]=0,o[2]=a}return c=(1-t)*r,[(t*o[0]+c)*255,(t*o[1]+c)*255,(t*o[2]+c)*255]};y.hcg.hsv=function(n){let e=n[1]/100,t=n[2]/100,r=e+t*(1-e),o=0;return r>0&&(o=e/r),[n[0],o*100,r*100]};y.hcg.hsl=function(n){let e=n[1]/100,r=n[2]/100*(1-e)+.5*e,o=0;return r>0&&r<.5?o=e/(2*r):r>=.5&&r<1&&(o=e/(2*(1-r))),[n[0],o*100,r*100]};y.hcg.hwb=function(n){let e=n[1]/100,t=n[2]/100,r=e+t*(1-e);return[n[0],(r-e)*100,(1-r)*100]};y.hwb.hcg=function(n){let e=n[1]/100,r=1-n[2]/100,o=r-e,s=0;return o<1&&(s=(r-o)/(1-o)),[n[0],o*100,s*100]};y.apple.rgb=function(n){return[n[0]/65535*255,n[1]/65535*255,n[2]/65535*255]};y.rgb.apple=function(n){return[n[0]/255*65535,n[1]/255*65535,n[2]/255*65535]};y.gray.rgb=function(n){return[n[0]/100*255,n[0]/100*255,n[0]/100*255]};y.gray.hsl=function(n){return[0,0,n[0]]};y.gray.hsv=y.gray.hsl;y.gray.hwb=function(n){return[0,100,n[0]]};y.gray.cmyk=function(n){return[0,0,0,n[0]]};y.gray.lab=function(n){return[n[0],0,0]};y.gray.hex=function(n){let e=Math.round(n[0]/100*255)&255,r=((e<<16)+(e<<8)+e).toString(16).toUpperCase();return"000000".substring(r.length)+r};y.rgb.gray=function(n){return[(n[0]+n[1]+n[2])/3/255*100]}});var Cn=F((Jc,Rn)=>{var ft=hr();function Oi(){let n={},e=Object.keys(ft);for(let t=e.length,r=0;r<t;r++)n[e[r]]={distance:-1,parent:null};return n}function Ri(n){let e=Oi(),t=[n];for(e[n].distance=0;t.length;){let r=t.pop(),o=Object.keys(ft[r]);for(let s=o.length,i=0;i<s;i++){let a=o[i],c=e[a];c.distance===-1&&(c.distance=e[r].distance+1,c.parent=r,t.unshift(a))}}return e}function Ci(n,e){return function(t){return e(n(t))}}function Ai(n,e){let t=[e[n].parent,n],r=ft[e[n].parent][n],o=e[n].parent;for(;e[o].parent;)t.unshift(e[o].parent),r=Ci(ft[e[o].parent][o],r),o=e[o].parent;return r.conversion=t,r}Rn.exports=function(n){let e=Ri(n),t={},r=Object.keys(e);for(let o=r.length,s=0;s<o;s++){let i=r[s];e[i].parent!==null&&(t[i]=Ai(i,e))}return t}});var Tn=F((qc,An)=>{var gr=hr(),Ti=Cn(),Me={},Mi=Object.keys(gr);function Ni(n){let e=function(...t){let r=t[0];return r==null?r:(r.length>1&&(t=r),n(t))};return"conversion"in n&&(e.conversion=n.conversion),e}function $i(n){let e=function(...t){let r=t[0];if(r==null)return r;r.length>1&&(t=r);let o=n(t);if(typeof o=="object")for(let s=o.length,i=0;i<s;i++)o[i]=Math.round(o[i]);return o};return"conversion"in n&&(e.conversion=n.conversion),e}Mi.forEach(n=>{Me[n]={},Object.defineProperty(Me[n],"channels",{value:gr[n].channels}),Object.defineProperty(Me[n],"labels",{value:gr[n].labels});let e=Ti(n);Object.keys(e).forEach(r=>{let o=e[r];Me[n][r]=$i(o),Me[n][r].raw=Ni(o)})});An.exports=Me});var Dn=F((Gc,jn)=>{"use strict";var Mn=(n,e)=>(...t)=>`\x1B[${n(...t)+e}m`,Nn=(n,e)=>(...t)=>{let r=n(...t);return`\x1B[${38+e};5;${r}m`},$n=(n,e)=>(...t)=>{let r=n(...t);return`\x1B[${38+e};2;${r[0]};${r[1]};${r[2]}m`},mt=n=>n,In=(n,e,t)=>[n,e,t],Ne=(n,e,t)=>{Object.defineProperty(n,e,{get:()=>{let r=t();return Object.defineProperty(n,e,{value:r,enumerable:!0,configurable:!0}),r},enumerable:!0,configurable:!0})},yr,$e=(n,e,t,r)=>{yr===void 0&&(yr=Tn());let o=r?10:0,s={};for(let[i,a]of Object.entries(yr)){let c=i==="ansi16"?"ansi":i;i===e?s[c]=n(t,o):typeof a=="object"&&(s[c]=n(a[e],o))}return s};function Ii(){let n=new Map,e={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],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],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],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}};e.color.gray=e.color.blackBright,e.bgColor.bgGray=e.bgColor.bgBlackBright,e.color.grey=e.color.blackBright,e.bgColor.bgGrey=e.bgColor.bgBlackBright;for(let[t,r]of Object.entries(e)){for(let[o,s]of Object.entries(r))e[o]={open:`\x1B[${s[0]}m`,close:`\x1B[${s[1]}m`},r[o]=e[o],n.set(s[0],s[1]);Object.defineProperty(e,t,{value:r,enumerable:!1})}return Object.defineProperty(e,"codes",{value:n,enumerable:!1}),e.color.close="\x1B[39m",e.bgColor.close="\x1B[49m",Ne(e.color,"ansi",()=>$e(Mn,"ansi16",mt,!1)),Ne(e.color,"ansi256",()=>$e(Nn,"ansi256",mt,!1)),Ne(e.color,"ansi16m",()=>$e($n,"rgb",In,!1)),Ne(e.bgColor,"ansi",()=>$e(Mn,"ansi16",mt,!0)),Ne(e.bgColor,"ansi256",()=>$e(Nn,"ansi256",mt,!0)),Ne(e.bgColor,"ansi16m",()=>$e($n,"rgb",In,!0)),e}Object.defineProperty(jn,"exports",{enumerable:!0,get:Ii})});var Pn=F((Xc,Fn)=>{"use strict";Fn.exports=(n,e=process.argv)=>{let t=n.startsWith("-")?"":n.length===1?"-":"--",r=e.indexOf(t+n),o=e.indexOf("--");return r!==-1&&(o===-1||r<o)}});var Un=F((Yc,Hn)=>{"use strict";var ji=require("os"),Ln=require("tty"),X=Pn(),{env:j}=process,fe;X("no-color")||X("no-colors")||X("color=false")||X("color=never")?fe=0:(X("color")||X("colors")||X("color=true")||X("color=always"))&&(fe=1);"FORCE_COLOR"in j&&(j.FORCE_COLOR==="true"?fe=1:j.FORCE_COLOR==="false"?fe=0:fe=j.FORCE_COLOR.length===0?1:Math.min(parseInt(j.FORCE_COLOR,10),3));function br(n){return n===0?!1:{level:n,hasBasic:!0,has256:n>=2,has16m:n>=3}}function wr(n,e){if(fe===0)return 0;if(X("color=16m")||X("color=full")||X("color=truecolor"))return 3;if(X("color=256"))return 2;if(n&&!e&&fe===void 0)return 0;let t=fe||0;if(j.TERM==="dumb")return t;if(process.platform==="win32"){let r=ji.release().split(".");return Number(r[0])>=10&&Number(r[2])>=10586?Number(r[2])>=14931?3:2:1}if("CI"in j)return["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI","GITHUB_ACTIONS","BUILDKITE"].some(r=>r in j)||j.CI_NAME==="codeship"?1:t;if("TEAMCITY_VERSION"in j)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(j.TEAMCITY_VERSION)?1:0;if(j.COLORTERM==="truecolor")return 3;if("TERM_PROGRAM"in j){let r=parseInt((j.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(j.TERM_PROGRAM){case"iTerm.app":return r>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(j.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(j.TERM)||"COLORTERM"in j?1:t}function Di(n){let e=wr(n,n&&n.isTTY);return br(e)}Hn.exports={supportsColor:Di,stdout:br(wr(!0,Ln.isatty(1))),stderr:br(wr(!0,Ln.isatty(2)))}});var Vn=F((Kc,Bn)=>{"use strict";var Fi=(n,e,t)=>{let r=n.indexOf(e);if(r===-1)return n;let o=e.length,s=0,i="";do i+=n.substr(s,r-s)+e+t,s=r+o,r=n.indexOf(e,s);while(r!==-1);return i+=n.substr(s),i},Pi=(n,e,t,r)=>{let o=0,s="";do{let i=n[r-1]==="\r";s+=n.substr(o,(i?r-1:r)-o)+e+(i?`\r
24
24
  `:`
25
25
  `)+t,o=r+1,r=n.indexOf(`
26
- `,o)}while(r!==-1);return s+=n.substr(o),s};Wn.exports={stringReplaceAll:Pi,stringEncaseCRLFWithFirstIndex:Li}});var Kn=F((Yc,Yn)=>{"use strict";var Hi=/(?:\\(u(?:[a-f\d]{4}|\{[a-f\d]{1,6}\})|x[a-f\d]{2}|.))|(?:\{(~)?(\w+(?:\([^)]*\))?(?:\.\w+(?:\([^)]*\))?)*)(?:[ \t]|(?=\r?\n)))|(\})|((?:.|[\r\n\f])+?)/gi,qn=/(?:^|\.)(\w+)(?:\(([^)]*)\))?/g,Ui=/^(['"])((?:\\.|(?!\1)[^\\])*)\1$/,Bi=/\\(u(?:[a-f\d]{4}|{[a-f\d]{1,6}})|x[a-f\d]{2}|.)|([^\\])/gi,Vi=new Map([["n",`
27
- `],["r","\r"],["t"," "],["b","\b"],["f","\f"],["v","\v"],["0","\0"],["\\","\\"],["e","\x1B"],["a","\x07"]]);function Xn(n){let e=n[0]==="u",t=n[1]==="{";return e&&!t&&n.length===5||n[0]==="x"&&n.length===3?String.fromCharCode(parseInt(n.slice(1),16)):e&&t?String.fromCodePoint(parseInt(n.slice(2,-1),16)):Vi.get(n)||n}function Wi(n,e){let t=[],r=e.trim().split(/\s*,\s*/g),o;for(let s of r){let i=Number(s);if(!Number.isNaN(i))t.push(i);else if(o=s.match(Ui))t.push(o[2].replace(Bi,(a,c,l)=>c?Xn(c):l));else throw new Error(`Invalid Chalk template style argument: ${s} (in style '${n}')`)}return t}function Ji(n){qn.lastIndex=0;let e=[],t;for(;(t=qn.exec(n))!==null;){let r=t[1];if(t[2]){let o=Wi(r,t[2]);e.push([r].concat(o))}else e.push([r])}return e}function Gn(n,e){let t={};for(let o of e)for(let s of o.styles)t[s[0]]=o.inverse?null:s.slice(1);let r=n;for(let[o,s]of Object.entries(t))if(Array.isArray(s)){if(!(o in r))throw new Error(`Unknown Chalk style: ${o}`);r=s.length>0?r[o](...s):r[o]}return r}Yn.exports=(n,e)=>{let t=[],r=[],o=[];if(e.replace(Hi,(s,i,a,c,l,u)=>{if(i)o.push(Xn(i));else if(c){let d=o.join("");o=[],r.push(t.length===0?d:Gn(n,t)(d)),t.push({inverse:a,styles:Ji(c)})}else if(l){if(t.length===0)throw new Error("Found extraneous } in Chalk template literal");r.push(Gn(n,t)(o.join(""))),o=[],t.pop()}else o.push(u)}),r.push(o.join("")),t.length>0){let s=`Chalk template literal is missing ${t.length} closing bracket${t.length===1?"":"s"} (\`}\`)`;throw new Error(s)}return r.join("")}});var V=F((Kc,ro)=>{"use strict";var Ge=Pn(),{stdout:Er,stderr:vr}=Vn(),{stringReplaceAll:qi,stringEncaseCRLFWithFirstIndex:Gi}=Jn(),{isArray:ht}=Array,Qn=["ansi","ansi","ansi256","ansi16m"],je=Object.create(null),Xi=(n,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 t=Er?Er.level:0;n.level=e.level===void 0?t:e.level},kr=class{constructor(e){return Zn(e)}},Zn=n=>{let e={};return Xi(e,n),e.template=(...t)=>to(e.template,...t),Object.setPrototypeOf(e,gt.prototype),Object.setPrototypeOf(e.template,e),e.template.constructor=()=>{throw new Error("`chalk.constructor()` is deprecated. Use `new chalk.Instance()` instead.")},e.template.Instance=kr,e.template};function gt(n){return Zn(n)}for(let[n,e]of Object.entries(Ge))je[n]={get(){let t=yt(this,xr(e.open,e.close,this._styler),this._isEmpty);return Object.defineProperty(this,n,{value:t}),t}};je.visible={get(){let n=yt(this,this._styler,!0);return Object.defineProperty(this,"visible",{value:n}),n}};var eo=["rgb","hex","keyword","hsl","hsv","hwb","ansi","ansi256"];for(let n of eo)je[n]={get(){let{level:e}=this;return function(...t){let r=xr(Ge.color[Qn[e]][n](...t),Ge.color.close,this._styler);return yt(this,r,this._isEmpty)}}};for(let n of eo){let e="bg"+n[0].toUpperCase()+n.slice(1);je[e]={get(){let{level:t}=this;return function(...r){let o=xr(Ge.bgColor[Qn[t]][n](...r),Ge.bgColor.close,this._styler);return yt(this,o,this._isEmpty)}}}}var Yi=Object.defineProperties(()=>{},{...je,level:{enumerable:!0,get(){return this._generator.level},set(n){this._generator.level=n}}}),xr=(n,e,t)=>{let r,o;return t===void 0?(r=n,o=e):(r=t.openAll+n,o=e+t.closeAll),{open:n,close:e,openAll:r,closeAll:o,parent:t}},yt=(n,e,t)=>{let r=(...o)=>ht(o[0])&&ht(o[0].raw)?zn(r,to(r,...o)):zn(r,o.length===1?""+o[0]:o.join(" "));return Object.setPrototypeOf(r,Yi),r._generator=n,r._styler=e,r._isEmpty=t,r},zn=(n,e)=>{if(n.level<=0||!e)return n._isEmpty?"":e;let t=n._styler;if(t===void 0)return e;let{openAll:r,closeAll:o}=t;if(e.indexOf("\x1B")!==-1)for(;t!==void 0;)e=qi(e,t.close,t.open),t=t.parent;let s=e.indexOf(`
28
- `);return s!==-1&&(e=Gi(e,o,r,s)),r+e+o},Sr,to=(n,...e)=>{let[t]=e;if(!ht(t)||!ht(t.raw))return e.join(" ");let r=e.slice(1),o=[t.raw[0]];for(let s=1;s<t.length;s++)o.push(String(r[s-1]).replace(/[{}\\]/g,"\\$&"),String(t.raw[s]));return Sr===void 0&&(Sr=Kn()),Sr(n,o.join(""))};Object.defineProperties(gt.prototype,je);var bt=gt();bt.supportsColor=Er;bt.stderr=gt({level:vr?vr.level:0});bt.stderr.supportsColor=vr;ro.exports=bt});function oo(){let n=new Set;process.env.AIDE_DEBUG_HOOK==="1"&&n.add("hooks");let e=process.env.AIDE_DEBUG;if(!e)return n;let t=e.split(",").map(r=>r.trim()).filter(Boolean);for(let r of t){if(r==="all"||r==="1"){for(let o of no)n.add(o);return n}no.includes(r)&&n.add(r)}return n}function Q(n,e){oo().has(n)&&process.stderr.write(`[AIDE_DEBUG/${n}] ${e}
29
- `)}function _e(n,e){let t=e?` \u2014 ${e}`:"";process.stderr.write(`[AIDE_ERROR] ${n}${t}
30
- `)}function so(n){return oo().has(n)}var no,_t=$(()=>{"use strict";no=["hooks","mcp","binding","recall"]});function Ki(n){let e=n?.message??String(n);return/NODE_MODULE_VERSION/i.test(e)?{class:"abi-mismatch",hint:"reinstall aide-memory or run `npm rebuild libsql` in the install dir"}:/Cannot find module|MODULE_NOT_FOUND/i.test(e)?{class:"missing-module",hint:"reinstall aide-memory \u2014 the libsql platform package may be missing"}:/dlopen|wrong ELF class|invalid ELF header|image not found|symbol not found/i.test(e)?{class:"binary-incompatible",hint:"reinstall aide-memory \u2014 prebuilt binary may be wrong for this platform/arch"}:{class:"unknown",hint:"reinstall aide-memory; if the issue persists, file an issue with this stderr line"}}function zi(){if(Or)return Or;try{let n=require("libsql");return Or=n,Q("binding",`loaded lib=libsql node=${process.versions.node} abi=${process.versions.modules} platform=${process.platform}-${process.arch}`),n}catch(n){let{class:e,hint:t}=Ki(n),r=n?.message??String(n);throw _e(`aide-memory: failed to load native binding (libsql, ${e}): ${r}`,t),Q("binding",`load-failed lib=libsql class=${e} msg=${JSON.stringify(r)}`),n}}function io(n,e){let t=zi();return new t(n,e)}var Or,ao=$(()=>{"use strict";_t();Or=null});function na(n){try{return n.exec("CREATE VIRTUAL TABLE IF NOT EXISTS _fts5_probe USING fts5(x)"),n.exec("DROP TABLE IF EXISTS _fts5_probe"),!0}catch{return!1}}function co(n){return na(n)?(n.exec(Qi),n.exec(Zi),n.exec(ea),n.exec(ta),!0):!1}function lo(n){n.prepare("SELECT COUNT(*) as c FROM memories").get().c===0||n.prepare("SELECT COUNT(*) as c FROM memories_fts").get().c>0||n.exec(`
26
+ `,o)}while(r!==-1);return s+=n.substr(o),s};Bn.exports={stringReplaceAll:Fi,stringEncaseCRLFWithFirstIndex:Pi}});var Xn=F((zc,Gn)=>{"use strict";var Li=/(?:\\(u(?:[a-f\d]{4}|\{[a-f\d]{1,6}\})|x[a-f\d]{2}|.))|(?:\{(~)?(\w+(?:\([^)]*\))?(?:\.\w+(?:\([^)]*\))?)*)(?:[ \t]|(?=\r?\n)))|(\})|((?:.|[\r\n\f])+?)/gi,Wn=/(?:^|\.)(\w+)(?:\(([^)]*)\))?/g,Hi=/^(['"])((?:\\.|(?!\1)[^\\])*)\1$/,Ui=/\\(u(?:[a-f\d]{4}|{[a-f\d]{1,6}})|x[a-f\d]{2}|.)|([^\\])/gi,Bi=new Map([["n",`
27
+ `],["r","\r"],["t"," "],["b","\b"],["f","\f"],["v","\v"],["0","\0"],["\\","\\"],["e","\x1B"],["a","\x07"]]);function qn(n){let e=n[0]==="u",t=n[1]==="{";return e&&!t&&n.length===5||n[0]==="x"&&n.length===3?String.fromCharCode(parseInt(n.slice(1),16)):e&&t?String.fromCodePoint(parseInt(n.slice(2,-1),16)):Bi.get(n)||n}function Vi(n,e){let t=[],r=e.trim().split(/\s*,\s*/g),o;for(let s of r){let i=Number(s);if(!Number.isNaN(i))t.push(i);else if(o=s.match(Hi))t.push(o[2].replace(Ui,(a,c,l)=>c?qn(c):l));else throw new Error(`Invalid Chalk template style argument: ${s} (in style '${n}')`)}return t}function Wi(n){Wn.lastIndex=0;let e=[],t;for(;(t=Wn.exec(n))!==null;){let r=t[1];if(t[2]){let o=Vi(r,t[2]);e.push([r].concat(o))}else e.push([r])}return e}function Jn(n,e){let t={};for(let o of e)for(let s of o.styles)t[s[0]]=o.inverse?null:s.slice(1);let r=n;for(let[o,s]of Object.entries(t))if(Array.isArray(s)){if(!(o in r))throw new Error(`Unknown Chalk style: ${o}`);r=s.length>0?r[o](...s):r[o]}return r}Gn.exports=(n,e)=>{let t=[],r=[],o=[];if(e.replace(Li,(s,i,a,c,l,u)=>{if(i)o.push(qn(i));else if(c){let d=o.join("");o=[],r.push(t.length===0?d:Jn(n,t)(d)),t.push({inverse:a,styles:Wi(c)})}else if(l){if(t.length===0)throw new Error("Found extraneous } in Chalk template literal");r.push(Jn(n,t)(o.join(""))),o=[],t.pop()}else o.push(u)}),r.push(o.join("")),t.length>0){let s=`Chalk template literal is missing ${t.length} closing bracket${t.length===1?"":"s"} (\`}\`)`;throw new Error(s)}return r.join("")}});var V=F((Qc,eo)=>{"use strict";var Ge=Dn(),{stdout:Sr,stderr:Er}=Un(),{stringReplaceAll:Ji,stringEncaseCRLFWithFirstIndex:qi}=Vn(),{isArray:ht}=Array,Kn=["ansi","ansi","ansi256","ansi16m"],Ie=Object.create(null),Gi=(n,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 t=Sr?Sr.level:0;n.level=e.level===void 0?t:e.level},vr=class{constructor(e){return zn(e)}},zn=n=>{let e={};return Gi(e,n),e.template=(...t)=>Zn(e.template,...t),Object.setPrototypeOf(e,gt.prototype),Object.setPrototypeOf(e.template,e),e.template.constructor=()=>{throw new Error("`chalk.constructor()` is deprecated. Use `new chalk.Instance()` instead.")},e.template.Instance=vr,e.template};function gt(n){return zn(n)}for(let[n,e]of Object.entries(Ge))Ie[n]={get(){let t=yt(this,kr(e.open,e.close,this._styler),this._isEmpty);return Object.defineProperty(this,n,{value:t}),t}};Ie.visible={get(){let n=yt(this,this._styler,!0);return Object.defineProperty(this,"visible",{value:n}),n}};var Qn=["rgb","hex","keyword","hsl","hsv","hwb","ansi","ansi256"];for(let n of Qn)Ie[n]={get(){let{level:e}=this;return function(...t){let r=kr(Ge.color[Kn[e]][n](...t),Ge.color.close,this._styler);return yt(this,r,this._isEmpty)}}};for(let n of Qn){let e="bg"+n[0].toUpperCase()+n.slice(1);Ie[e]={get(){let{level:t}=this;return function(...r){let o=kr(Ge.bgColor[Kn[t]][n](...r),Ge.bgColor.close,this._styler);return yt(this,o,this._isEmpty)}}}}var Xi=Object.defineProperties(()=>{},{...Ie,level:{enumerable:!0,get(){return this._generator.level},set(n){this._generator.level=n}}}),kr=(n,e,t)=>{let r,o;return t===void 0?(r=n,o=e):(r=t.openAll+n,o=e+t.closeAll),{open:n,close:e,openAll:r,closeAll:o,parent:t}},yt=(n,e,t)=>{let r=(...o)=>ht(o[0])&&ht(o[0].raw)?Yn(r,Zn(r,...o)):Yn(r,o.length===1?""+o[0]:o.join(" "));return Object.setPrototypeOf(r,Xi),r._generator=n,r._styler=e,r._isEmpty=t,r},Yn=(n,e)=>{if(n.level<=0||!e)return n._isEmpty?"":e;let t=n._styler;if(t===void 0)return e;let{openAll:r,closeAll:o}=t;if(e.indexOf("\x1B")!==-1)for(;t!==void 0;)e=Ji(e,t.close,t.open),t=t.parent;let s=e.indexOf(`
28
+ `);return s!==-1&&(e=qi(e,o,r,s)),r+e+o},_r,Zn=(n,...e)=>{let[t]=e;if(!ht(t)||!ht(t.raw))return e.join(" ");let r=e.slice(1),o=[t.raw[0]];for(let s=1;s<t.length;s++)o.push(String(r[s-1]).replace(/[{}\\]/g,"\\$&"),String(t.raw[s]));return _r===void 0&&(_r=Xn()),_r(n,o.join(""))};Object.defineProperties(gt.prototype,Ie);var bt=gt();bt.supportsColor=Sr;bt.stderr=gt({level:Er?Er.level:0});bt.stderr.supportsColor=Er;eo.exports=bt});function ro(){let n=new Set;process.env.AIDE_DEBUG_HOOK==="1"&&n.add("hooks");let e=process.env.AIDE_DEBUG;if(!e)return n;let t=e.split(",").map(r=>r.trim()).filter(Boolean);for(let r of t){if(r==="all"||r==="1"){for(let o of to)n.add(o);return n}to.includes(r)&&n.add(r)}return n}function Q(n,e){ro().has(n)&&process.stderr.write(`[AIDE_DEBUG/${n}] ${e}
29
+ `)}function we(n,e){let t=e?` \u2014 ${e}`:"";process.stderr.write(`[AIDE_ERROR] ${n}${t}
30
+ `)}function no(n){return ro().has(n)}var to,wt=$(()=>{"use strict";to=["hooks","mcp","binding","recall"]});function Yi(n){let e=n?.message??String(n);return/NODE_MODULE_VERSION/i.test(e)?{class:"abi-mismatch",hint:"reinstall aide-memory or run `npm rebuild libsql` in the install dir"}:/Cannot find module|MODULE_NOT_FOUND/i.test(e)?{class:"missing-module",hint:"reinstall aide-memory \u2014 the libsql platform package may be missing"}:/dlopen|wrong ELF class|invalid ELF header|image not found|symbol not found/i.test(e)?{class:"binary-incompatible",hint:"reinstall aide-memory \u2014 prebuilt binary may be wrong for this platform/arch"}:{class:"unknown",hint:"reinstall aide-memory; if the issue persists, file an issue with this stderr line"}}function Ki(){if(xr)return xr;try{let n=require("libsql");return xr=n,Q("binding",`loaded lib=libsql node=${process.versions.node} abi=${process.versions.modules} platform=${process.platform}-${process.arch}`),n}catch(n){let{class:e,hint:t}=Yi(n),r=n?.message??String(n);throw we(`aide-memory: failed to load native binding (libsql, ${e}): ${r}`,t),Q("binding",`load-failed lib=libsql class=${e} msg=${JSON.stringify(r)}`),n}}function oo(n,e){let t=Ki();return new t(n,e)}var xr,so=$(()=>{"use strict";wt();xr=null});function ra(n){try{return n.exec("CREATE VIRTUAL TABLE IF NOT EXISTS _fts5_probe USING fts5(x)"),n.exec("DROP TABLE IF EXISTS _fts5_probe"),!0}catch{return!1}}function io(n){return ra(n)?(n.exec(zi),n.exec(Qi),n.exec(Zi),n.exec(ea),!0):!1}function ao(n){n.prepare("SELECT COUNT(*) as c FROM memories").get().c===0||n.prepare("SELECT COUNT(*) as c FROM memories_fts").get().c>0||n.exec(`
31
31
  INSERT INTO memories_fts(rowid, what, why, context_label)
32
32
  SELECT id, what, why, context_label FROM memories
33
- `)}function uo(n){if(!n||!n.trim())return null;let e=n.slice(0,500);if(e=e.replace(ra," "),e=e.replace(/\s+/g," ").trim(),!e)return null;let t=e.split(" ").filter(r=>r.length>0);return t.length===0?null:t.map(r=>`"${r}"`).join(" ")}var Qi,Zi,ea,ta,ra,po=$(()=>{"use strict";Qi=`
33
+ `)}function co(n){if(!n||!n.trim())return null;let e=n.slice(0,500);if(e=e.replace(ta," "),e=e.replace(/\s+/g," ").trim(),!e)return null;let t=e.split(" ").filter(r=>r.length>0);return t.length===0?null:t.map(r=>`"${r}"`).join(" ")}var zi,Qi,Zi,ea,ta,lo=$(()=>{"use strict";zi=`
34
34
  CREATE VIRTUAL TABLE IF NOT EXISTS memories_fts USING fts5(
35
35
  what, why, context_label,
36
36
  content=memories, content_rowid=id
37
37
  );
38
- `,Zi=`
38
+ `,Qi=`
39
39
  CREATE TRIGGER IF NOT EXISTS memories_ai AFTER INSERT ON memories BEGIN
40
40
  INSERT INTO memories_fts(rowid, what, why, context_label)
41
41
  VALUES (new.id, new.what, new.why, new.context_label);
42
42
  END;
43
- `,ea=`
43
+ `,Zi=`
44
44
  CREATE TRIGGER IF NOT EXISTS memories_ad AFTER DELETE ON memories BEGIN
45
45
  INSERT INTO memories_fts(memories_fts, rowid, what, why, context_label)
46
46
  VALUES ('delete', old.id, old.what, old.why, old.context_label);
47
47
  END;
48
- `,ta=`
48
+ `,ea=`
49
49
  CREATE TRIGGER IF NOT EXISTS memories_au AFTER UPDATE ON memories BEGIN
50
50
  INSERT INTO memories_fts(memories_fts, rowid, what, why, context_label)
51
51
  VALUES ('delete', old.id, old.what, old.why, old.context_label);
52
52
  INSERT INTO memories_fts(rowid, what, why, context_label)
53
53
  VALUES (new.id, new.what, new.why, new.context_label);
54
54
  END;
55
- `,ra=/["*(){}[\]:^~!@#$%&+\\|<>=,;]/g});function sa(n,e){if(n.length!==e.length||n.length===0)return 0;let t=0,r=0,o=0;for(let i=0;i<n.length;i++)t+=n[i]*e[i],r+=n[i]*n[i],o+=e[i]*e[i];let s=Math.sqrt(r)*Math.sqrt(o);return s===0?0:t/s}function ia(n){return Buffer.from(n.buffer,n.byteOffset,n.byteLength)}function mo(n){if(n instanceof ArrayBuffer)return new Float32Array(n.slice(0));let e=n.buffer.slice(n.byteOffset,n.byteOffset+n.byteLength);return new Float32Array(e)}function wt(n){n.exec(oa)}var oa,Xe,Ye,St,fo=$(()=>{"use strict";oa=`
55
+ `,ta=/["*(){}[\]:^~!@#$%&+\\|<>=,;]/g});function oa(n,e){if(n.length!==e.length||n.length===0)return 0;let t=0,r=0,o=0;for(let i=0;i<n.length;i++)t+=n[i]*e[i],r+=n[i]*n[i],o+=e[i]*e[i];let s=Math.sqrt(r)*Math.sqrt(o);return s===0?0:t/s}function sa(n){return Buffer.from(n.buffer,n.byteOffset,n.byteLength)}function uo(n){if(n instanceof ArrayBuffer)return new Float32Array(n.slice(0));let e=n.buffer.slice(n.byteOffset,n.byteOffset+n.byteLength);return new Float32Array(e)}function _t(n){n.exec(na)}var na,Xe,Ye,St,po=$(()=>{"use strict";na=`
56
56
  CREATE TABLE IF NOT EXISTS embeddings (
57
57
  uuid TEXT PRIMARY KEY,
58
58
  vector BLOB NOT NULL,
59
59
  dimensions INTEGER NOT NULL
60
60
  );
61
- `;Xe=class{constructor(e="Xenova/bge-small-en-v1.5"){this.modelName=e;this.pipeline=null;this.ready=!1}async initialize(){try{let{pipeline:e,env:t}=await import("@huggingface/transformers"),r=await import("os"),o=await import("path");return t.cacheDir=o.join(r.homedir(),".cache","aide-memory","models"),this.pipeline=await e("feature-extraction",this.modelName,{dtype:"fp32"}),this.ready=!0,!0}catch{return this.ready=!1,!1}}isReady(){return this.ready}async generateEmbedding(e){if(!this.ready||!this.pipeline)return null;try{let t=await this.pipeline(e,{pooling:"mean",normalize:!0});return new Float32Array(t.data)}catch{return null}}},Ye=class{constructor(e="nomic-embed-text",t="http://localhost:11434"){this.model=e;this.baseUrl=t;this.ready=!1}async initialize(){try{return(await fetch(`${this.baseUrl}/api/tags`)).ok?(this.ready=!0,!0):(this.ready=!1,!1)}catch{return this.ready=!1,!1}}isReady(){return this.ready}async generateEmbedding(e){if(!this.ready)return null;try{let t=await fetch(`${this.baseUrl}/api/embeddings`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:this.model,prompt:e})});if(!t.ok)return null;let r=await t.json();return!r.embedding||!Array.isArray(r.embedding)?null:new Float32Array(r.embedding)}catch{return null}}},St=class{constructor(e){this.preferredBackend=e;this.backend=null;this._ready=!1}async initialize(){if(this.preferredBackend)return await this.preferredBackend.initialize()?(this.backend=this.preferredBackend,this._ready=!0,!0):(this._ready=!1,!1);let e=new Xe;if(await e.initialize())return this.backend=e,this._ready=!0,!0;let r=new Ye;return await r.initialize()?(this.backend=r,this._ready=!0,!0):(this._ready=!1,!1)}isReady(){return this._ready}async generateEmbedding(e){return!this._ready||!this.backend?null:this.backend.generateEmbedding(e)}storeEmbedding(e,t,r){wt(e);let o=ia(r);e.prepare("INSERT OR REPLACE INTO embeddings (uuid, vector, dimensions) VALUES (?, ?, ?)").run(t,o,r.length)}getEmbedding(e,t){wt(e);let r=e.prepare("SELECT vector FROM embeddings WHERE uuid = ?").get(t);return r?mo(r.vector):null}removeEmbedding(e,t){return wt(e),e.prepare("DELETE FROM embeddings WHERE uuid = ?").run(t).changes>0}async semanticSearch(e,t,r=10){if(!this._ready||!this.backend)return[];let o=await this.backend.generateEmbedding(t);return o?this.semanticSearchWithVector(e,o,r):[]}semanticSearchWithVector(e,t,r=10){wt(e);let o=e.prepare("SELECT uuid, vector FROM embeddings").all(),s=[];for(let i of o){let a=mo(i.vector);if(a.length!==t.length)continue;let c=sa(t,a);s.push({uuid:i.uuid,score:c})}return s.sort((i,a)=>a.score-i.score),s.slice(0,r)}}});var go,Ke,ho,aa,ca,Et,yo=$(()=>{"use strict";go=h(require("crypto")),Ke=h(require("os")),ho=process.env.AIDE_TELEMETRY==="off"?"":"phc_ztrzpvbZQTa4ymkGxVdYZnFKiFFLyJMcf5zYUXVAqPzS",aa="https://us.i.posthog.com",ca=`
61
+ `;Xe=class{constructor(e="Xenova/bge-small-en-v1.5"){this.modelName=e;this.pipeline=null;this.ready=!1}async initialize(){try{let{pipeline:e,env:t}=await import("@huggingface/transformers"),r=await import("os"),o=await import("path");return t.cacheDir=o.join(r.homedir(),".cache","aide-memory","models"),this.pipeline=await e("feature-extraction",this.modelName,{dtype:"fp32"}),this.ready=!0,!0}catch{return this.ready=!1,!1}}isReady(){return this.ready}async generateEmbedding(e){if(!this.ready||!this.pipeline)return null;try{let t=await this.pipeline(e,{pooling:"mean",normalize:!0});return new Float32Array(t.data)}catch{return null}}},Ye=class{constructor(e="nomic-embed-text",t="http://localhost:11434"){this.model=e;this.baseUrl=t;this.ready=!1}async initialize(){try{return(await fetch(`${this.baseUrl}/api/tags`)).ok?(this.ready=!0,!0):(this.ready=!1,!1)}catch{return this.ready=!1,!1}}isReady(){return this.ready}async generateEmbedding(e){if(!this.ready)return null;try{let t=await fetch(`${this.baseUrl}/api/embeddings`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:this.model,prompt:e})});if(!t.ok)return null;let r=await t.json();return!r.embedding||!Array.isArray(r.embedding)?null:new Float32Array(r.embedding)}catch{return null}}},St=class{constructor(e){this.preferredBackend=e;this.backend=null;this._ready=!1}async initialize(){if(this.preferredBackend)return await this.preferredBackend.initialize()?(this.backend=this.preferredBackend,this._ready=!0,!0):(this._ready=!1,!1);let e=new Xe;if(await e.initialize())return this.backend=e,this._ready=!0,!0;let r=new Ye;return await r.initialize()?(this.backend=r,this._ready=!0,!0):(this._ready=!1,!1)}isReady(){return this._ready}async generateEmbedding(e){return!this._ready||!this.backend?null:this.backend.generateEmbedding(e)}storeEmbedding(e,t,r){_t(e);let o=sa(r);e.prepare("INSERT OR REPLACE INTO embeddings (uuid, vector, dimensions) VALUES (?, ?, ?)").run(t,o,r.length)}getEmbedding(e,t){_t(e);let r=e.prepare("SELECT vector FROM embeddings WHERE uuid = ?").get(t);return r?uo(r.vector):null}removeEmbedding(e,t){return _t(e),e.prepare("DELETE FROM embeddings WHERE uuid = ?").run(t).changes>0}async semanticSearch(e,t,r=10){if(!this._ready||!this.backend)return[];let o=await this.backend.generateEmbedding(t);return o?this.semanticSearchWithVector(e,o,r):[]}semanticSearchWithVector(e,t,r=10){_t(e);let o=e.prepare("SELECT uuid, vector FROM embeddings").all(),s=[];for(let i of o){let a=uo(i.vector);if(a.length!==t.length)continue;let c=oa(t,a);s.push({uuid:i.uuid,score:c})}return s.sort((i,a)=>a.score-i.score),s.slice(0,r)}}});var mo,Ke,fo,ia,aa,Et,ho=$(()=>{"use strict";mo=h(require("crypto")),Ke=h(require("os")),fo=process.env.AIDE_TELEMETRY==="off"?"":"phc_ztrzpvbZQTa4ymkGxVdYZnFKiFFLyJMcf5zYUXVAqPzS",ia="https://us.i.posthog.com",aa=`
62
62
  CREATE TABLE IF NOT EXISTS analytics (
63
63
  id INTEGER PRIMARY KEY AUTOINCREMENT,
64
64
  event TEXT NOT NULL,
@@ -68,7 +68,7 @@ CREATE TABLE IF NOT EXISTS analytics (
68
68
  );
69
69
  CREATE INDEX IF NOT EXISTS idx_analytics_event ON analytics(event);
70
70
  CREATE INDEX IF NOT EXISTS idx_analytics_timestamp ON analytics(timestamp);
71
- `,Et=class{constructor(e){this.eventBuffer=[];this.flushTimer=null;this.remoteDisabled=!1;this.db=e,this.init(),this.distinctId=go.default.createHash("sha256").update(`${Ke.default.hostname()}:${Ke.default.userInfo().username}`).digest("hex").slice(0,16)}init(){this.db.exec(ca)}disableRemote(){this.remoteDisabled=!0}logEvent(e,t,r){let o=new Date().toISOString();this.db.prepare("INSERT INTO analytics (event, value, tool, timestamp) VALUES (?, ?, ?, ?)").run(e,t??null,r??null,o),ho&&!this.remoteDisabled&&(this.eventBuffer.push({event:e,properties:{value:t??void 0,tool:r??void 0,platform:Ke.default.platform(),arch:Ke.default.arch(),node_version:process.version},timestamp:o}),this.eventBuffer.length>=10?this.flush():this.flushTimer||(this.flushTimer=setTimeout(()=>this.flush(),3e4)))}flush(){if(this.flushTimer&&(clearTimeout(this.flushTimer),this.flushTimer=null),this.eventBuffer.length===0)return;let e=this.eventBuffer.splice(0),t=JSON.stringify({api_key:ho,batch:e.map(r=>({event:r.event,properties:{...r.properties,distinct_id:this.distinctId,$ip:null,$geoip_disable:!0},timestamp:r.timestamp}))});fetch(`${aa}/batch`,{method:"POST",headers:{"Content-Type":"application/json"},body:t}).catch(()=>{})}shutdown(){this.flush()}getEvents(e){let t=[],r=[];e?.event&&(t.push("event = ?"),r.push(e.event)),e?.since&&(t.push("timestamp >= ?"),r.push(e.since));let o="SELECT * FROM analytics";return t.length>0&&(o+=" WHERE "+t.join(" AND ")),o+=" ORDER BY timestamp DESC, id DESC",e?.limit&&(o+=" LIMIT ?",r.push(e.limit)),this.db.prepare(o).all(...r)}countEvents(e,t){let r=["event = ?"],o=[e];t&&(r.push("timestamp >= ?"),o.push(t));let s="SELECT COUNT(*) as count FROM analytics WHERE "+r.join(" AND ");return this.db.prepare(s).get(...o).count}getStats(){let t=this.db.prepare("SELECT COUNT(*) as count FROM memories WHERE 1=1").get().count,r=this.db.prepare("SELECT layer, COUNT(*) as count FROM memories WHERE 1=1 GROUP BY layer").all(),o={};for(let f of r)o[f.layer]=f.count;let i=this.db.prepare("SELECT what, layer, recalled_count FROM memories WHERE 1=1 AND recalled_count > 0 ORDER BY recalled_count DESC LIMIT 5").all().map(f=>({what:f.what,layer:f.layer,recalled_count:f.recalled_count})),a=this.db.prepare("SELECT source, COUNT(*) as count FROM memories WHERE 1=1 GROUP BY source").all(),c={};for(let f of a)c[f.source]=f.count;let l=new Date(Date.now()-30*864e5).toISOString(),d=this.db.prepare("SELECT COUNT(*) as count FROM memories WHERE 1=1 AND recalled_count = 0 AND created_at < ?").get(l).count;return{totalMemories:t,byLayer:o,mostRecalled:i,captureSourceBreakdown:c,staleCount:d}}prune(e){let t=new Date(Date.now()-e*864e5).toISOString();return this.db.prepare("DELETE FROM analytics WHERE timestamp < ?").run(t).changes}}});function So(n){let e=H.default.resolve(n);return vt.default.createHash("sha1").update(e).digest("hex").slice(0,12)}function da(n){let e=So(n);return H.default.join(Rr.default.homedir(),".aide","projects",e,"memory.db")}function pa(){try{return(0,wo.execSync)("git config user.name",{encoding:"utf-8"}).trim()}catch{return"unknown"}}var H,Rr,L,vt,wo,bo,_o,la,ua,C,Y=$(()=>{"use strict";ao();H=h(require("path")),Rr=h(require("os")),L=h(require("fs")),vt=h(require("crypto")),wo=require("child_process");po();fo();yo();bo=3,_o=`
71
+ `,Et=class{constructor(e){this.eventBuffer=[];this.flushTimer=null;this.remoteDisabled=!1;this.db=e,this.init(),this.distinctId=mo.default.createHash("sha256").update(`${Ke.default.hostname()}:${Ke.default.userInfo().username}`).digest("hex").slice(0,16)}init(){this.db.exec(aa)}disableRemote(){this.remoteDisabled=!0}logEvent(e,t,r){let o=new Date().toISOString();this.db.prepare("INSERT INTO analytics (event, value, tool, timestamp) VALUES (?, ?, ?, ?)").run(e,t??null,r??null,o),fo&&!this.remoteDisabled&&(this.eventBuffer.push({event:e,properties:{value:t??void 0,tool:r??void 0,platform:Ke.default.platform(),arch:Ke.default.arch(),node_version:process.version},timestamp:o}),this.eventBuffer.length>=10?this.flush():this.flushTimer||(this.flushTimer=setTimeout(()=>this.flush(),3e4)))}flush(){if(this.flushTimer&&(clearTimeout(this.flushTimer),this.flushTimer=null),this.eventBuffer.length===0)return;let e=this.eventBuffer.splice(0),t=JSON.stringify({api_key:fo,batch:e.map(r=>({event:r.event,properties:{...r.properties,distinct_id:this.distinctId,$ip:null,$geoip_disable:!0},timestamp:r.timestamp}))});fetch(`${ia}/batch`,{method:"POST",headers:{"Content-Type":"application/json"},body:t}).catch(()=>{})}shutdown(){this.flush()}getEvents(e){let t=[],r=[];e?.event&&(t.push("event = ?"),r.push(e.event)),e?.since&&(t.push("timestamp >= ?"),r.push(e.since));let o="SELECT * FROM analytics";return t.length>0&&(o+=" WHERE "+t.join(" AND ")),o+=" ORDER BY timestamp DESC, id DESC",e?.limit&&(o+=" LIMIT ?",r.push(e.limit)),this.db.prepare(o).all(...r)}countEvents(e,t){let r=["event = ?"],o=[e];t&&(r.push("timestamp >= ?"),o.push(t));let s="SELECT COUNT(*) as count FROM analytics WHERE "+r.join(" AND ");return this.db.prepare(s).get(...o).count}getStats(){let t=this.db.prepare("SELECT COUNT(*) as count FROM memories WHERE 1=1").get().count,r=this.db.prepare("SELECT layer, COUNT(*) as count FROM memories WHERE 1=1 GROUP BY layer").all(),o={};for(let m of r)o[m.layer]=m.count;let i=this.db.prepare("SELECT what, layer, recalled_count FROM memories WHERE 1=1 AND recalled_count > 0 ORDER BY recalled_count DESC LIMIT 5").all().map(m=>({what:m.what,layer:m.layer,recalled_count:m.recalled_count})),a=this.db.prepare("SELECT source, COUNT(*) as count FROM memories WHERE 1=1 GROUP BY source").all(),c={};for(let m of a)c[m.source]=m.count;let l=new Date(Date.now()-30*864e5).toISOString(),d=this.db.prepare("SELECT COUNT(*) as count FROM memories WHERE 1=1 AND recalled_count = 0 AND created_at < ?").get(l).count;return{totalMemories:t,byLayer:o,mostRecalled:i,captureSourceBreakdown:c,staleCount:d}}prune(e){let t=new Date(Date.now()-e*864e5).toISOString();return this.db.prepare("DELETE FROM analytics WHERE timestamp < ?").run(t).changes}}});function wo(n){let e=H.default.resolve(n);return vt.default.createHash("sha1").update(e).digest("hex").slice(0,12)}function ua(n){let e=wo(n);return H.default.join(Or.default.homedir(),".aide","projects",e,"memory.db")}function da(){try{return(0,bo.execSync)("git config user.name",{encoding:"utf-8"}).trim()}catch{return"unknown"}}var H,Or,L,vt,bo,go,yo,ca,la,C,Y=$(()=>{"use strict";so();H=h(require("path")),Or=h(require("os")),L=h(require("fs")),vt=h(require("crypto")),bo=require("child_process");lo();po();ho();go=3,yo=`
72
72
  CREATE TABLE IF NOT EXISTS memories (
73
73
  id INTEGER PRIMARY KEY AUTOINCREMENT,
74
74
  uuid TEXT NOT NULL UNIQUE,
@@ -94,12 +94,12 @@ CREATE UNIQUE INDEX IF NOT EXISTS idx_memories_uuid ON memories(uuid);
94
94
  CREATE INDEX IF NOT EXISTS idx_memories_scope ON memories(scope);
95
95
  CREATE INDEX IF NOT EXISTS idx_memories_layer ON memories(layer);
96
96
  CREATE INDEX IF NOT EXISTS idx_memories_contributor ON memories(contributor);
97
- `,la=`
97
+ `,ca=`
98
98
  CREATE TABLE IF NOT EXISTS meta (
99
99
  key TEXT PRIMARY KEY,
100
100
  value TEXT NOT NULL
101
101
  );
102
- `,ua={preferences:"preferences",technical:"technical",area_context:"area_context",guidelines:"guidelines"};C=class{constructor(e){this._fts5Available=!1;this.embeddingService=null;this.analytics=null;this.telemetryEnabled=!0;this.memoriesDir=null;this.projectRoot=null;this.defaultShared=!0;if(this.defaultContributor=pa(),typeof e=="string")this.dbPath=da(e);else if("projectRoot"in e){let r=e.projectRoot;this.projectRoot=r,this.memoriesDir=H.default.join(r,".aide","memories");let o=So(r);this.dbPath=H.default.join(Rr.default.homedir(),".aide","projects",o,"memory.db"),this.ensureMemoryDirs()}else this.dbPath=e.dbPath;let t=H.default.dirname(this.dbPath);if(L.default.existsSync(t)||L.default.mkdirSync(t,{recursive:!0}),this.db=io(this.dbPath),this.db.pragma("journal_mode = WAL"),this.db.pragma("foreign_keys = ON"),this.init(),this.analytics=new Et(this.db),typeof e!="string"&&"projectRoot"in e)try{let r=H.default.join(e.projectRoot,".aide","config.json");if(L.default.existsSync(r)){let o=JSON.parse(L.default.readFileSync(r,"utf-8"));o.telemetry?.enabled===!1&&(this.telemetryEnabled=!1,this.analytics?.disableRemote()),o.memories?.defaultShared===!1&&(this.defaultShared=!1);let s=o.contributor;typeof s=="string"&&s!=="auto"&&s.trim()!==""&&(this.defaultContributor=s);let i=o.embeddings?.backend??"auto",a=o.embeddings?.model??"auto";if(i==="none")this.embeddingService=null;else if(i==="transformers"||i==="ollama"){let c=a!=="auto"?a:void 0,l=i==="transformers"?new Xe(c):new Ye(c);this.embeddingService=new St(l)}}}catch{}this.memoriesDir&&this.rebuildCacheIfNeeded()}get fts5Available(){return this._fts5Available}getDatabase(){return this.db}ensureMemoryDirs(){if(!this.memoriesDir)return;let e=[H.default.join(this.memoriesDir,"preferences","personal"),H.default.join(this.memoriesDir,"preferences","shared"),H.default.join(this.memoriesDir,"technical"),H.default.join(this.memoriesDir,"area_context"),H.default.join(this.memoriesDir,"guidelines")];for(let t of e)L.default.existsSync(t)||L.default.mkdirSync(t,{recursive:!0})}setEmbeddingService(e){this.embeddingService=e}getEmbeddingService(){return this.embeddingService}getAnalytics(){return this.analytics}logEvent(e,t,r){this.telemetryEnabled&&this.analytics&&this.analytics.logEvent(e,t,r)}init(){this.db.exec(la);let e=this.db.prepare("SELECT value FROM meta WHERE key = ?").get("schema_version");(e?parseInt(e.value,10):0)<bo?(this.db.exec("DROP TABLE IF EXISTS memories"),this.db.exec(_o),this.db.prepare("INSERT OR REPLACE INTO meta (key, value) VALUES (?, ?)").run("schema_version",String(bo))):this.db.exec(_o),this._fts5Available=co(this.db),this._fts5Available&&lo(this.db)}getMemoryDir(e,t){if(!this.memoriesDir)throw new Error("File I/O not available in dbPath-only mode");return e==="preferences"?H.default.join(this.memoriesDir,"preferences",t?"shared":"personal"):H.default.join(this.memoriesDir,ua[e])}getMemoryFilePath(e,t,r){return H.default.join(this.getMemoryDir(t,r),`${e}.json`)}toMemoryFile(e){return{id:e.id,uuid:e.uuid,layer:e.layer,what:e.what,why:e.why,scope:e.scope,context_label:e.context_label,contributor:e.contributor,tags:e.tags,source:e.source,shared:e.shared,priority:e.priority,generated_by:e.generated_by,derived_from:e.derived_from,created_at:e.created_at,updated_at:e.updated_at}}writeMemoryFile(e){if(!this.memoriesDir)return;let t=this.getMemoryFilePath(e.uuid,e.layer,e.shared),r=t+".tmp",o=JSON.stringify(this.toMemoryFile(e),null,2)+`
102
+ `,la={preferences:"preferences",technical:"technical",area_context:"area_context",guidelines:"guidelines"};C=class{constructor(e){this._fts5Available=!1;this.embeddingService=null;this.analytics=null;this.telemetryEnabled=!0;this.memoriesDir=null;this.projectRoot=null;this.defaultShared=!0;if(this.defaultContributor=da(),typeof e=="string")this.dbPath=ua(e);else if("projectRoot"in e){let r=e.projectRoot;this.projectRoot=r,this.memoriesDir=H.default.join(r,".aide","memories");let o=wo(r);this.dbPath=H.default.join(Or.default.homedir(),".aide","projects",o,"memory.db"),this.ensureMemoryDirs()}else this.dbPath=e.dbPath;let t=H.default.dirname(this.dbPath);if(L.default.existsSync(t)||L.default.mkdirSync(t,{recursive:!0}),this.db=oo(this.dbPath),this.db.pragma("journal_mode = WAL"),this.db.pragma("foreign_keys = ON"),this.init(),this.analytics=new Et(this.db),typeof e!="string"&&"projectRoot"in e)try{let r=H.default.join(e.projectRoot,".aide","config.json");if(L.default.existsSync(r)){let o=JSON.parse(L.default.readFileSync(r,"utf-8"));o.telemetry?.enabled===!1&&(this.telemetryEnabled=!1,this.analytics?.disableRemote()),o.memories?.defaultShared===!1&&(this.defaultShared=!1);let s=o.contributor;typeof s=="string"&&s!=="auto"&&s.trim()!==""&&(this.defaultContributor=s);let i=o.embeddings?.backend??"auto",a=o.embeddings?.model??"auto";if(i==="none")this.embeddingService=null;else if(i==="transformers"||i==="ollama"){let c=a!=="auto"?a:void 0,l=i==="transformers"?new Xe(c):new Ye(c);this.embeddingService=new St(l)}}}catch{}this.memoriesDir&&this.rebuildCacheIfNeeded()}get fts5Available(){return this._fts5Available}getDatabase(){return this.db}ensureMemoryDirs(){if(!this.memoriesDir)return;let e=[H.default.join(this.memoriesDir,"preferences","personal"),H.default.join(this.memoriesDir,"preferences","shared"),H.default.join(this.memoriesDir,"technical"),H.default.join(this.memoriesDir,"area_context"),H.default.join(this.memoriesDir,"guidelines")];for(let t of e)L.default.existsSync(t)||L.default.mkdirSync(t,{recursive:!0})}setEmbeddingService(e){this.embeddingService=e}getEmbeddingService(){return this.embeddingService}getAnalytics(){return this.analytics}logEvent(e,t,r){this.telemetryEnabled&&this.analytics&&this.analytics.logEvent(e,t,r)}init(){this.db.exec(ca);let e=this.db.prepare("SELECT value FROM meta WHERE key = ?").get("schema_version");(e?parseInt(e.value,10):0)<go?(this.db.exec("DROP TABLE IF EXISTS memories"),this.db.exec(yo),this.db.prepare("INSERT OR REPLACE INTO meta (key, value) VALUES (?, ?)").run("schema_version",String(go))):this.db.exec(yo),this._fts5Available=io(this.db),this._fts5Available&&ao(this.db)}getMemoryDir(e,t){if(!this.memoriesDir)throw new Error("File I/O not available in dbPath-only mode");return e==="preferences"?H.default.join(this.memoriesDir,"preferences",t?"shared":"personal"):H.default.join(this.memoriesDir,la[e])}getMemoryFilePath(e,t,r){return H.default.join(this.getMemoryDir(t,r),`${e}.json`)}toMemoryFile(e){return{id:e.id,uuid:e.uuid,layer:e.layer,what:e.what,why:e.why,scope:e.scope,context_label:e.context_label,contributor:e.contributor,tags:e.tags,source:e.source,shared:e.shared,priority:e.priority,generated_by:e.generated_by,derived_from:e.derived_from,created_at:e.created_at,updated_at:e.updated_at}}writeMemoryFile(e){if(!this.memoriesDir)return;let t=this.getMemoryFilePath(e.uuid,e.layer,e.shared),r=t+".tmp",o=JSON.stringify(this.toMemoryFile(e),null,2)+`
103
103
  `;L.default.writeFileSync(r,o,"utf-8"),L.default.renameSync(r,t)}deleteMemoryFile(e,t,r){if(!this.memoriesDir)return;let o=this.getMemoryFilePath(e,t,r);L.default.existsSync(o)&&L.default.unlinkSync(o)}hashMemoriesDir(){if(!this.memoriesDir)return"";let e=vt.default.createHash("sha1"),t=this.collectJsonFiles();for(let r of t.sort()){let o=L.default.statSync(r);e.update(r+":"+o.mtimeMs+":"+o.size)}return e.digest("hex")}collectJsonFiles(){if(!this.memoriesDir||!L.default.existsSync(this.memoriesDir))return[];let e=[],t=r=>{if(!L.default.existsSync(r))return;let o=L.default.readdirSync(r,{withFileTypes:!0});for(let s of o){let i=H.default.join(r,s.name);s.isDirectory()?t(i):s.name.endsWith(".json")&&!s.name.endsWith(".tmp")&&e.push(i)}};return t(this.memoriesDir),e}rebuildCacheIfNeeded(){if(!this.memoriesDir)return;let e=this.hashMemoriesDir();this.db.prepare("SELECT value FROM meta WHERE key = ?").get("dir_hash")?.value!==e&&(this.rebuildCache(),this.db.prepare("INSERT OR REPLACE INTO meta (key, value) VALUES (?, ?)").run("dir_hash",e))}rebuildCache(){if(!this.memoriesDir)return;let e=this.collectJsonFiles(),t=new Set;this.db.transaction(()=>{for(let s of e)try{let i=L.default.readFileSync(s,"utf-8"),a=JSON.parse(i);if(!a.uuid||!a.layer||!a.what)continue;if(t.add(a.uuid),this.db.prepare("SELECT id, recalled_count, last_recalled_at FROM memories WHERE uuid = ?").get(a.uuid))this.db.prepare(`
104
104
  UPDATE memories SET layer = ?, what = ?, why = ?, scope = ?, context_label = ?,
105
105
  contributor = ?, tags = ?, source = ?, shared = ?, priority = ?, generated_by = ?,
@@ -117,90 +117,90 @@ CREATE TABLE IF NOT EXISTS meta (
117
117
  INSERT INTO memories (uuid, layer, what, why, scope, context_label, contributor,
118
118
  tags, source, shared, priority, generated_by, derived_from, created_at, updated_at)
119
119
  VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
120
- `).run(r,e.layer,e.what,e.why??null,e.scope??null,e.context_label??null,o,JSON.stringify(s),e.source??"conversation",i?1:0,l,c,a,t,t),d=this.get(Number(u.lastInsertRowid));if(this.logEvent("memory_stored",e.layer),this.memoriesDir&&(this.writeMemoryFile(d),this.updateDirHash()),this.embeddingService?.isReady()){let f=[d.what,d.why,d.context_label].filter(Boolean).join(" ");this.embeddingService.generateEmbedding(f).then(_=>{_&&this.embeddingService&&this.embeddingService.storeEmbedding(this.db,d.uuid,_)}).catch(()=>{})}return d}get(e){let t=this.db.prepare("SELECT * FROM memories WHERE id = ?").get(e);return t?this.rowToMemory(t):null}getByUuid(e){let t=this.db.prepare("SELECT * FROM memories WHERE uuid = ?").get(e);return t?this.rowToMemory(t):null}list(e){let t=[],r=[];e?.layer&&(t.push("layer = ?"),r.push(e.layer)),e?.scope&&(t.push("scope = ?"),r.push(e.scope)),e?.contributor&&(t.push("contributor = ?"),r.push(e.contributor)),e?.priority&&(t.push("priority = ?"),r.push(e.priority));let o="SELECT * FROM memories";return t.length>0&&(o+=" WHERE "+t.join(" AND ")),o+=" ORDER BY created_at DESC, id DESC",e?.limit&&(o+=" LIMIT ?",r.push(e.limit)),this.db.prepare(o).all(...r).map(i=>this.rowToMemory(i))}update(e,t){let r=this.get(e);if(!r)return null;let o=[],s=[];for(let[c,l]of Object.entries(t))l!==void 0&&(c==="tags"?(o.push("tags = ?"),s.push(JSON.stringify(l))):c==="generated_by"?(o.push("generated_by = ?"),s.push(l?JSON.stringify(l):null)):c==="shared"?(o.push("shared = ?"),s.push(l?1:0)):(o.push(`${c} = ?`),s.push(l)));if(o.length===0)return r;let i=new Date().toISOString();o.push("updated_at = ?"),s.push(i),s.push(e),this.db.prepare(`UPDATE memories SET ${o.join(", ")} WHERE id = ?`).run(...s);let a=this.get(e);if(this.logEvent("memory_updated",a.layer),this.memoriesDir&&(t.shared!==void 0&&t.shared!==r.shared&&this.deleteMemoryFile(r.uuid,r.layer,r.shared),this.writeMemoryFile(a),this.updateDirHash()),this.embeddingService?.isReady()&&(t.what!==void 0||t.why!==void 0||t.context_label!==void 0)){let c=[a.what,a.why,a.context_label].filter(Boolean).join(" ");this.embeddingService.generateEmbedding(c).then(l=>{l&&this.embeddingService&&this.embeddingService.storeEmbedding(this.db,a.uuid,l)}).catch(()=>{})}return a}remove(e){let t=this.get(e);if(!t)return!1;this.logEvent("memory_deleted",t.layer);let r=this.db.prepare("DELETE FROM memories WHERE id = ?").run(e);if(r.changes>0&&this.memoriesDir&&(this.deleteMemoryFile(t.uuid,t.layer,t.shared),this.updateDirHash()),r.changes>0&&this.embeddingService)try{this.embeddingService.removeEmbedding(this.db,t.uuid)}catch{}return r.changes>0}removeByUuid(e){let t=this.getByUuid(e);return t?this.remove(t.id):!1}recordRecall(e){if(e.length===0)return;let t=new Date().toISOString(),r=this.db.prepare("UPDATE memories SET recalled_count = recalled_count + 1, last_recalled_at = ? WHERE id = ?");this.db.transaction(()=>{for(let s of e)r.run(t,s)})(),this.logEvent("memory_recalled",String(e.length))}count(e){let t=[],r=[];e?.layer&&(t.push("layer = ?"),r.push(e.layer)),e?.contributor&&(t.push("contributor = ?"),r.push(e.contributor));let o="SELECT COUNT(*) as count FROM memories";return t.length>0&&(o+=" WHERE "+t.join(" AND ")),this.db.prepare(o).get(...r).count}search(e,t){let r=t?.mode??"auto",o,s;if(r==="semantic")o=[],s="semantic";else if(r==="keyword")if(this._fts5Available){let i=this.searchFts5(e,t);o=i.length>0?i:this.searchLike(e,t),s=i.length>0?"fts5":"like"}else o=this.searchLike(e,t),s="like";else if(this._fts5Available){let i=this.searchFts5(e,t);i.length>0?(o=i,s="fts5"):(o=this.searchLike(e,t),s="like")}else o=this.searchLike(e,t),s="like";return this.logEvent("search_performed",s),o}searchFts5(e,t){let r=uo(e);if(r===null)return[];let o=t?.limit??50,s=`
120
+ `).run(r,e.layer,e.what,e.why??null,e.scope??null,e.context_label??null,o,JSON.stringify(s),e.source??"conversation",i?1:0,l,c,a,t,t),d=this.get(Number(u.lastInsertRowid));if(this.logEvent("memory_stored",e.layer),this.memoriesDir&&(this.writeMemoryFile(d),this.updateDirHash()),this.embeddingService?.isReady()){let m=[d.what,d.why,d.context_label].filter(Boolean).join(" ");this.embeddingService.generateEmbedding(m).then(g=>{g&&this.embeddingService&&this.embeddingService.storeEmbedding(this.db,d.uuid,g)}).catch(()=>{})}return d}get(e){let t=this.db.prepare("SELECT * FROM memories WHERE id = ?").get(e);return t?this.rowToMemory(t):null}getByUuid(e){let t=this.db.prepare("SELECT * FROM memories WHERE uuid = ?").get(e);return t?this.rowToMemory(t):null}list(e){let t=[],r=[];e?.layer&&(t.push("layer = ?"),r.push(e.layer)),e?.scope&&(t.push("scope = ?"),r.push(e.scope)),e?.contributor&&(t.push("contributor = ?"),r.push(e.contributor)),e?.priority&&(t.push("priority = ?"),r.push(e.priority));let o="SELECT * FROM memories";return t.length>0&&(o+=" WHERE "+t.join(" AND ")),o+=" ORDER BY created_at DESC, id DESC",e?.limit&&(o+=" LIMIT ?",r.push(e.limit)),this.db.prepare(o).all(...r).map(i=>this.rowToMemory(i))}update(e,t){let r=this.get(e);if(!r)return null;let o=[],s=[];for(let[c,l]of Object.entries(t))l!==void 0&&(c==="tags"?(o.push("tags = ?"),s.push(JSON.stringify(l))):c==="generated_by"?(o.push("generated_by = ?"),s.push(l?JSON.stringify(l):null)):c==="shared"?(o.push("shared = ?"),s.push(l?1:0)):(o.push(`${c} = ?`),s.push(l)));if(o.length===0)return r;let i=new Date().toISOString();o.push("updated_at = ?"),s.push(i),s.push(e),this.db.prepare(`UPDATE memories SET ${o.join(", ")} WHERE id = ?`).run(...s);let a=this.get(e);if(this.logEvent("memory_updated",a.layer),this.memoriesDir&&(t.shared!==void 0&&t.shared!==r.shared&&this.deleteMemoryFile(r.uuid,r.layer,r.shared),this.writeMemoryFile(a),this.updateDirHash()),this.embeddingService?.isReady()&&(t.what!==void 0||t.why!==void 0||t.context_label!==void 0)){let c=[a.what,a.why,a.context_label].filter(Boolean).join(" ");this.embeddingService.generateEmbedding(c).then(l=>{l&&this.embeddingService&&this.embeddingService.storeEmbedding(this.db,a.uuid,l)}).catch(()=>{})}return a}remove(e){let t=this.get(e);if(!t)return!1;this.logEvent("memory_deleted",t.layer);let r=this.db.prepare("DELETE FROM memories WHERE id = ?").run(e);if(r.changes>0&&this.memoriesDir&&(this.deleteMemoryFile(t.uuid,t.layer,t.shared),this.updateDirHash()),r.changes>0&&this.embeddingService)try{this.embeddingService.removeEmbedding(this.db,t.uuid)}catch{}return r.changes>0}removeByUuid(e){let t=this.getByUuid(e);return t?this.remove(t.id):!1}recordRecall(e){if(e.length===0)return;let t=new Date().toISOString(),r=this.db.prepare("UPDATE memories SET recalled_count = recalled_count + 1, last_recalled_at = ? WHERE id = ?");this.db.transaction(()=>{for(let s of e)r.run(t,s)})(),this.logEvent("memory_recalled",String(e.length))}count(e){let t=[],r=[];e?.layer&&(t.push("layer = ?"),r.push(e.layer)),e?.contributor&&(t.push("contributor = ?"),r.push(e.contributor));let o="SELECT COUNT(*) as count FROM memories";return t.length>0&&(o+=" WHERE "+t.join(" AND ")),this.db.prepare(o).get(...r).count}search(e,t){let r=t?.mode??"auto",o,s;if(r==="semantic")o=[],s="semantic";else if(r==="keyword")if(this._fts5Available){let i=this.searchFts5(e,t);o=i.length>0?i:this.searchLike(e,t),s=i.length>0?"fts5":"like"}else o=this.searchLike(e,t),s="like";else if(this._fts5Available){let i=this.searchFts5(e,t);i.length>0?(o=i,s="fts5"):(o=this.searchLike(e,t),s="like")}else o=this.searchLike(e,t),s="like";return this.logEvent("search_performed",s),o}searchFts5(e,t){let r=co(e);if(r===null)return[];let o=t?.limit??50,s=`
121
121
  SELECT m.* FROM memories m
122
122
  INNER JOIN (
123
123
  SELECT rowid, rank FROM memories_fts WHERE memories_fts MATCH ?
124
124
  ORDER BY rank
125
125
  ) fts ON m.id = fts.rowid
126
- `,i=[r],a=[];return t?.layer&&(a.push("m.layer = ?"),i.push(t.layer)),a.length>0&&(s+=" WHERE "+a.join(" AND ")),s+=" ORDER BY fts.rank",s+=" LIMIT ?",i.push(o),this.db.prepare(s).all(...i).map(l=>this.rowToMemory(l))}searchLike(e,t){if(!e||!e.trim())return[];let r=["(what LIKE ? OR why LIKE ?)"],o=`%${e}%`,s=[o,o];t?.layer&&(r.push("layer = ?"),s.push(t.layer));let i="SELECT * FROM memories WHERE "+r.join(" AND ");i+=" ORDER BY created_at DESC, id DESC";let a=t?.limit??50;i+=" LIMIT ?",s.push(a);let l=this.db.prepare(i).all(...s).map(u=>this.rowToMemory(u));return l.length<3&&this.embeddingService?.isReady(),l}async searchWithEmbeddings(e,t){let r=t?.limit??50,o=t?.mode??"auto";if(o==="semantic"){if(!this.embeddingService?.isReady())return[];try{let i=await this.embeddingService.semanticSearch(this.db,e,r),a=[];for(let c of i){if(c.score<.3)continue;let l=this.getByUuid(c.uuid);if(l&&!(t?.layer&&l.layer!==t.layer)&&(a.push(l),a.length>=r))break}return this.logEvent("search_performed","semantic"),a}catch{return[]}}if(o==="keyword")return this.search(e,t);let s=this.search(e,t);if(s.length<3&&this.embeddingService?.isReady())try{let i=await this.embeddingService.semanticSearch(this.db,e,r),a=new Set(s.map(c=>c.id));for(let c of i){if(c.score<.3)continue;let l=this.getByUuid(c.uuid);if(l&&!a.has(l.id)&&!(t?.layer&&l.layer!==t.layer)&&(s.push(l),a.add(l.id),s.length>=r))break}}catch{}return s}pruneOld(e){let t=new Date(Date.now()-e*864e5).toISOString();if(this.memoriesDir){let o=this.db.prepare("SELECT uuid, layer, shared FROM memories WHERE created_at < ?").all(t);for(let s of o)this.deleteMemoryFile(s.uuid,s.layer,s.shared===1)}let r=this.db.prepare("DELETE FROM memories WHERE created_at < ?").run(t);return this.memoriesDir&&this.updateDirHash(),r.changes}close(){this.analytics&&this.analytics.shutdown(),this.db.close()}getProjectRoot(){return this.projectRoot}get hasFileStorage(){return this.memoriesDir!==null}get memoriesPath(){return this.memoriesDir}rowToMemory(e){return{id:e.id,uuid:e.uuid,layer:e.layer,what:e.what,why:e.why,scope:e.scope,context_label:e.context_label,contributor:e.contributor,tags:e.tags?JSON.parse(e.tags):[],source:e.source,shared:e.shared===1,priority:e.priority==="always"?"always":"normal",generated_by:e.generated_by?JSON.parse(e.generated_by):null,derived_from:e.derived_from?JSON.parse(e.derived_from):null,created_at:e.created_at,updated_at:e.updated_at,recalled_count:e.recalled_count,last_recalled_at:e.last_recalled_at}}}});var kt,Cr=$(()=>{kt={"hooks.read.maxBlocks":{value:1,public:!0,pro:!1,description:"Max pre-read hard-blocks per file path per session. 0 disables the pre-read hook entirely. 1 is the default and fires a block on the first read of each file that has scoped memories."},"hooks.edit.maxBlocks":{value:1,public:!0,pro:!1,description:"Max pre-edit hard-blocks per file path per session. 0 disables the pre-edit hook entirely. 1 is the default."},"hooks.stop.schedule":{value:[{until:9,every:3},{until:29,every:5},{every:10}],public:!0,pro:!1,description:"Phased interval schedule for the Stop hook's 'worth remembering?' nudge. Each entry = {until, every}. Default ramps from every-3-turns for first 9 turns \u2192 every-5 for turns 10-29 \u2192 every-10 afterwards."},"hooks.search.mode":{value:"soft",public:!0,pro:!1,description:"Pre-search hook mode: 'off' (no nudge), 'soft' (additionalContext only, default), 'block' (hard decision:block envelope)."},"hooks.correction.enabled":{value:!0,public:!0,pro:!1,description:"Enable UserPromptSubmit correction detection. When true, messages like 'no, use X instead' trigger a nudge to call aide_remember."},"hooks.precompact.mode":{value:"cleanup",public:!0,pro:!1,description:"PreCompact hook behavior: 'off' preserves tracking files across compaction; 'cleanup' (default) clears recalled-paths/stop-count/correction-pending so the post-compact turn re-blocks cleanly."},"hooks.visible":{value:!0,public:!0,pro:!1,description:"Surface user-facing systemMessage lines when hooks fire (soft recalls, correction detected, session-start injection, Stop checkpoints, etc). Default true so users can see what aide-memory is doing. Set to false to hide all aide-memory systemMessages \u2014 hooks still function (context injection + block enforcement unchanged). Does not affect what Claude sees."},"recall.limit":{value:20,public:!0,pro:!1,description:"Max memories returned per aide_recall call before layer-diversity balancing applies."},"recall.ensureLayerDiversity":{value:!0,public:!0,pro:!1,description:"If true, recall results are swapped to surface under-represented layers up to recall.layerDiversityMinLimit. Ensures each enabled layer gets at least some representation instead of the top-scoring one dominating."},"recall.layerDiversityMinLimit":{value:5,public:!0,pro:!1,description:"Minimum total results below which layer diversity swap kicks in. Above this threshold, natural ranking wins."},"recall.minScopeDepth":{value:1,public:!0,pro:!1,description:"Minimum fixed-prefix segment count a scope needs to surface via per-file path-recall. Scopes below this threshold surface only at SessionStart injection instead. Think of it as 'how specific must a scope be to show up when I open a file?' Default 1 is permissive \u2014 any scope with \u22651 segment (e.g. 'src/**', 'pages/**', 'packages/**') counts. Works across project shapes (src-wrapped, flat Next.js, deep monorepos). Bump to 2 if you have many broad scopes and want per-file recall quieter (broad scopes still surface at SessionStart). Bump to 3+ for very strict per-file recall."},"injection.enabled":{value:!0,public:!0,pro:!1,description:"Master switch for SessionStart dynamic injection. When true (default), the sessionStart handler loads + injects preferences / guidelines / priority:always memories into the agent's starting context; when false, the handler short-circuits before any SQLite read or template render \u2014 zero per-turn overhead from dynamic injection. The rules file still ships (static content) but carries no memory-derived content. Granular per-layer knobs (injection.preferences, injection.guidelines, etc.) only apply when this master switch is true. Flip to false if you want aide-memory's hooks + MCP tools without any session-start context injection."},"injection.preferences":{value:15,public:!0,pro:!1,description:"Max preferences injected at SessionStart. 0/false disables; number = hard cap; 'all' = every preference. Default 15 matches spec memory #297 ('top 15 most-recalled preferences'). Only honored when injection.enabled is true."},"injection.excludeScopedPreferences":{value:!1,public:!0,pro:!1,description:"If true, SessionStart injection skips preferences with a non-null scope \u2014 they surface via Read/Edit path hooks when the agent touches matching paths. Default false preserves current 'inject all preferences regardless of scope' behavior. Set to true for tighter SessionStart token usage when you have many scoped preferences. (NB: renamed from `injection.preferences.excludeScoped` to avoid key collision with `injection.preferences` which is a scalar limit, not an object.)"},"injection.technical":{value:!1,public:!0,pro:!1,description:"Inject technical-layer memories at SessionStart? Default false \u2014 technical context should surface via path hooks when relevant. Set to a number to cap, 'all' for unlimited, true for enabled-with-no-cap."},"injection.area_context":{value:!1,public:!0,pro:!1,description:"Inject area_context-layer memories at SessionStart? Default false \u2014 area context by definition is area-specific and should surface via path hooks."},"injection.guidelines":{value:"all",public:!0,pro:!1,description:"Inject guidelines at SessionStart. 'all' (default) injects every guideline regardless of scope \u2014 guidelines apply broadly so early visibility matters. Set to a number for a cap, or false to disable."},"injection.priorityAlwaysOverride":{value:!0,public:!0,pro:!1,description:"When true (default), any memory with priority='always' is injected at SessionStart regardless of layer-specific injection settings. User-marked 'always' memories surface in the ## Always section (rendered first since 0.4.3 so they survive char-cap truncation)."},"injection.maxChars":{value:1200,public:!0,pro:!1,description:"Overall character cap for the combined SessionStart injection (preferences + technical + area_context + guidelines + always). Applied after all layer sections are concatenated; truncates with '...truncated' suffix. Bump to 2000+ for richer context, drop to 600 for token-conscious sessions. Default 1200 matches the pre-0.4.3 hard-coded MAX_INJECT_CHARS constant."},"memories.hideFromGrep":{value:!0,public:!0,pro:!1,description:"Add an aide-memory-managed block to .ignore so grep/ripgrep/etc skip .aide/memories/ by default. Flipping this live triggers drift-repair on the next hook fire."},"memories.softening.threshold":{value:10,public:!0,pro:!1,description:"Total-memory count below which pre-read/pre-edit hard blocks become soft additionalContext nudges. Keeps small projects from feeling hostile. Default 10 \u2014 once you have 10+ total memories, hard blocking resumes on first-touch."},"memories.defaultShared":{value:!0,public:!0,pro:!1,description:"Default `shared` flag for new memories when the caller doesn't pass one. When true (default), aide_remember without an explicit shared param writes to `.aide/memories/preferences/shared/` (committed to repo). When false, defaults to `personal/` (gitignored). Per-call `shared: true|false` always overrides this default. Flip to false if you want personal-by-default and explicit opt-in for shared memories."}}});function we(){return fa}function ha(n,e){let t=n;for(let r of e){if(t==null||typeof t!="object"||Array.isArray(t)||!Object.prototype.hasOwnProperty.call(t,r))return!1;t=t[r]}return!0}function ga(n,e){let t=n;for(let r of e)t=t[r];return t}function W(n,e){let r=we()[e];if(!r)return;let o=r.value;if(r.public!==!0||!n)return o;let s=Eo.default.join(n,".aide","config.json");if(!Ar.default.existsSync(s))return o;let i;try{i=JSON.parse(Ar.default.readFileSync(s,"utf8"))}catch{return o}let a=e.split(".");return ha(i,a)?ga(i,a):o}function vo(){let n=we(),e={};for(let[t,r]of Object.entries(n))r.public===!0&&(e[t]=r.value);return e}function ko(n){let e={};for(let[t,r]of Object.entries(n)){let o=t.split("."),s=e;for(let i=0;i<o.length-1;i++){let a=o[i],c=s[a];(!c||typeof c!="object"||Array.isArray(c))&&(s[a]={}),s=s[a]}s[o[o.length-1]]=r}return e}var Ar,Eo,fa,ze=$(()=>{"use strict";Ar=h(require("fs")),Eo=h(require("path"));Cr();fa=kt});function At(n,e,t,r){if(t===!1||t===0)return[];let o=n.list({layer:e});return e==="preferences"?(W(r,"injection.excludeScopedPreferences")===!0&&(o=o.filter(i=>!i.scope||i.scope==="project")),o.sort((i,a)=>{let c=i.recalled_count??0,l=a.recalled_count??0;return l!==c?l-c:(a.updated_at||"").localeCompare(i.updated_at||"")})):o.sort((s,i)=>(i.updated_at||"").localeCompare(s.updated_at||"")),t==="all"?o:typeof t=="number"&&t>0?o.slice(0,t):o}function Tt(n,e){if(!(W(n,"injection.enabled")??!0))return{content:"",injectedIds:[],truncated:!1};let r=W(n,"injection.preferences")??15,o=W(n,"injection.technical")??!1,s=W(n,"injection.area_context")??!1,i=W(n,"injection.guidelines")??"all",a=W(n,"injection.priorityAlwaysOverride")??!0,c=Number(W(n,"injection.maxChars")??1200),l=At(e,"preferences",r,n),u=At(e,"technical",o,n),d=At(e,"area_context",s,n),f=At(e,"guidelines",i,n),_=a?e.list({priority:"always"}):[],b=[],w=new Set,S=(k,ne)=>{for(let J of k){let de=J.uuid||String(J.id);w.has(de)||(w.add(de),ne.push(J.what),b.push(J.id))}},p={preferences:[],technical:[],area_context:[],guidelines:[],always:[]};if(S(l,p.preferences),S(u,p.technical),S(d,p.area_context),S(f,p.guidelines),S(_,p.always),p.preferences.length+p.technical.length+p.area_context.length+p.guidelines.length+p.always.length===0)return{content:"",injectedIds:[],truncated:!1};let m=[];if(p.always.length>0){m.push("## Always");for(let k of p.always)m.push(`- ${k}`)}if(p.preferences.length>0){m.push("## Session Preferences");for(let k of p.preferences)m.push(`- ${k}`)}if(p.technical.length>0){m.push("## Technical Context");for(let k of p.technical)m.push(`- ${k}`)}if(p.area_context.length>0){m.push("## Area Context");for(let k of p.area_context)m.push(`- ${k}`)}if(p.guidelines.length>0){m.push("## Guidelines");for(let k of p.guidelines)m.push(`- ${k}`)}let E=m.join(`
126
+ `,i=[r],a=[];return t?.layer&&(a.push("m.layer = ?"),i.push(t.layer)),a.length>0&&(s+=" WHERE "+a.join(" AND ")),s+=" ORDER BY fts.rank",s+=" LIMIT ?",i.push(o),this.db.prepare(s).all(...i).map(l=>this.rowToMemory(l))}searchLike(e,t){if(!e||!e.trim())return[];let r=["(what LIKE ? OR why LIKE ?)"],o=`%${e}%`,s=[o,o];t?.layer&&(r.push("layer = ?"),s.push(t.layer));let i="SELECT * FROM memories WHERE "+r.join(" AND ");i+=" ORDER BY created_at DESC, id DESC";let a=t?.limit??50;i+=" LIMIT ?",s.push(a);let l=this.db.prepare(i).all(...s).map(u=>this.rowToMemory(u));return l.length<3&&this.embeddingService?.isReady(),l}async searchWithEmbeddings(e,t){let r=t?.limit??50,o=t?.mode??"auto";if(o==="semantic"){if(!this.embeddingService?.isReady())return[];try{let i=await this.embeddingService.semanticSearch(this.db,e,r),a=[];for(let c of i){if(c.score<.3)continue;let l=this.getByUuid(c.uuid);if(l&&!(t?.layer&&l.layer!==t.layer)&&(a.push(l),a.length>=r))break}return this.logEvent("search_performed","semantic"),a}catch{return[]}}if(o==="keyword")return this.search(e,t);let s=this.search(e,t);if(s.length<3&&this.embeddingService?.isReady())try{let i=await this.embeddingService.semanticSearch(this.db,e,r),a=new Set(s.map(c=>c.id));for(let c of i){if(c.score<.3)continue;let l=this.getByUuid(c.uuid);if(l&&!a.has(l.id)&&!(t?.layer&&l.layer!==t.layer)&&(s.push(l),a.add(l.id),s.length>=r))break}}catch{}return s}pruneOld(e){let t=new Date(Date.now()-e*864e5).toISOString();if(this.memoriesDir){let o=this.db.prepare("SELECT uuid, layer, shared FROM memories WHERE created_at < ?").all(t);for(let s of o)this.deleteMemoryFile(s.uuid,s.layer,s.shared===1)}let r=this.db.prepare("DELETE FROM memories WHERE created_at < ?").run(t);return this.memoriesDir&&this.updateDirHash(),r.changes}close(){this.analytics&&this.analytics.shutdown(),this.db.close()}getProjectRoot(){return this.projectRoot}get hasFileStorage(){return this.memoriesDir!==null}get memoriesPath(){return this.memoriesDir}rowToMemory(e){return{id:e.id,uuid:e.uuid,layer:e.layer,what:e.what,why:e.why,scope:e.scope,context_label:e.context_label,contributor:e.contributor,tags:e.tags?JSON.parse(e.tags):[],source:e.source,shared:e.shared===1,priority:e.priority==="always"?"always":"normal",generated_by:e.generated_by?JSON.parse(e.generated_by):null,derived_from:e.derived_from?JSON.parse(e.derived_from):null,created_at:e.created_at,updated_at:e.updated_at,recalled_count:e.recalled_count,last_recalled_at:e.last_recalled_at}}}});var kt,Rr=$(()=>{kt={"hooks.read.maxBlocks":{value:1,public:!0,pro:!1,description:"Max pre-read hard-blocks per file path per session. 0 disables the pre-read hook entirely. 1 is the default and fires a block on the first read of each file that has scoped memories."},"hooks.edit.maxBlocks":{value:1,public:!0,pro:!1,description:"Max pre-edit hard-blocks per file path per session. 0 disables the pre-edit hook entirely. 1 is the default."},"hooks.stop.schedule":{value:[{until:9,every:3},{until:29,every:5},{every:10}],public:!0,pro:!1,description:"Phased interval schedule for the Stop hook's 'worth remembering?' nudge. Each entry = {until, every}. Default ramps from every-3-turns for first 9 turns \u2192 every-5 for turns 10-29 \u2192 every-10 afterwards."},"hooks.search.mode":{value:"soft",public:!0,pro:!1,description:"Pre-search hook mode: 'off' (no nudge), 'soft' (additionalContext only, default), 'block' (hard decision:block envelope)."},"hooks.correction.enabled":{value:!0,public:!0,pro:!1,description:"Enable UserPromptSubmit correction detection. When true, messages like 'no, use X instead' trigger a nudge to call aide_remember."},"hooks.correction.escalate":{value:"off",public:!0,pro:!1,description:"When a correction is detected, optionally write a correction-pending flag so the next Stop fire reminds the agent if the correction wasn't stored. 'off' (default) \u2014 never reminds; correction surfaces only as the soft UserPromptSubmit hint at detection time. 'block' \u2014 flag is written and the next Stop fires decision:block with the reminder, regardless of hooks.stop.mode. Master switch: hooks.correction.enabled=false disables the entire correction system including this. (A 'soft' value existed in spec drafts but was dropped \u2014 Claude Code's Stop hook protocol doesn't accept hookSpecificOutput.additionalContext, so a soft Stop emit is impossible. Use the always-on UserPromptSubmit soft hint as the soft channel; escalate to 'block' only when you want an explicit follow-up reminder.)"},"hooks.stop.mode":{value:"block",public:!0,pro:!1,description:"How the scheduled Stop checkpoint surfaces. 'block' (default) uses decision:block + a softened reason prompt + chrome systemMessage. The Claude Code TUI collapses the 'Stop hook error:' label behind ctrl+o when systemMessage is present, so the brand chrome is the primary visible line. 'off' skips the scheduled checkpoint entirely (zero Stop noise). Frequency is still controlled by hooks.stop.schedule. (A 'soft' mode existed in spec drafts but was dropped \u2014 Claude Code's Stop hook protocol doesn't accept hookSpecificOutput.additionalContext, so 'block' is the only way to deliver text to the agent on Stop.) When a correction-pending flag is set and hooks.correction.escalate='block', that branch wins and the scheduled checkpoint is skipped that turn."},"hooks.precompact.mode":{value:"cleanup",public:!0,pro:!1,description:"PreCompact hook behavior: 'off' preserves tracking files across compaction; 'cleanup' (default) clears recalled-paths/stop-count/correction-pending so the post-compact turn re-blocks cleanly."},"hooks.visible":{value:!0,public:!0,pro:!1,description:"Surface user-facing systemMessage lines when hooks fire (soft recalls, correction detected, session-start injection, Stop checkpoints, etc). Default true so users can see what aide-memory is doing. Set to false to hide all aide-memory systemMessages \u2014 hooks still function (context injection + block enforcement unchanged). Does not affect what Claude sees."},"recall.limit":{value:20,public:!0,pro:!1,description:"Max memories returned per aide_recall call before layer-diversity balancing applies."},"recall.ensureLayerDiversity":{value:!0,public:!0,pro:!1,description:"If true, recall results are swapped to surface under-represented layers up to recall.layerDiversityMinLimit. Ensures each enabled layer gets at least some representation instead of the top-scoring one dominating."},"recall.layerDiversityMinLimit":{value:5,public:!0,pro:!1,description:"Minimum total results below which layer diversity swap kicks in. Above this threshold, natural ranking wins."},"recall.minScopeDepth":{value:1,public:!0,pro:!1,description:"Minimum fixed-prefix segment count a scope needs to surface via per-file path-recall. Scopes below this threshold surface only at SessionStart injection instead. Think of it as 'how specific must a scope be to show up when I open a file?' Default 1 is permissive \u2014 any scope with \u22651 segment (e.g. 'src/**', 'pages/**', 'packages/**') counts. Works across project shapes (src-wrapped, flat Next.js, deep monorepos). Bump to 2 if you have many broad scopes and want per-file recall quieter (broad scopes still surface at SessionStart). Bump to 3+ for very strict per-file recall."},"injection.enabled":{value:!0,public:!0,pro:!1,description:"Master switch for SessionStart dynamic injection. When true (default), the sessionStart handler loads + injects preferences / guidelines / priority:always memories into the agent's starting context; when false, the handler short-circuits before any SQLite read or template render \u2014 zero per-turn overhead from dynamic injection. The rules file still ships (static content) but carries no memory-derived content. Granular per-layer knobs (injection.preferences, injection.guidelines, etc.) only apply when this master switch is true. Flip to false if you want aide-memory's hooks + MCP tools without any session-start context injection."},"injection.preferences":{value:15,public:!0,pro:!1,description:"Max preferences injected at SessionStart. 0/false disables; number = hard cap; 'all' = every preference. Default 15 matches spec memory #297 ('top 15 most-recalled preferences'). Only honored when injection.enabled is true."},"injection.excludeScopedPreferences":{value:!1,public:!0,pro:!1,description:"If true, SessionStart injection skips preferences with a non-null scope \u2014 they surface via Read/Edit path hooks when the agent touches matching paths. Default false preserves current 'inject all preferences regardless of scope' behavior. Set to true for tighter SessionStart token usage when you have many scoped preferences. (NB: renamed from `injection.preferences.excludeScoped` to avoid key collision with `injection.preferences` which is a scalar limit, not an object.)"},"injection.technical":{value:!1,public:!0,pro:!1,description:"Inject technical-layer memories at SessionStart? Default false \u2014 technical context should surface via path hooks when relevant. Set to a number to cap, 'all' for unlimited, true for enabled-with-no-cap."},"injection.area_context":{value:!1,public:!0,pro:!1,description:"Inject area_context-layer memories at SessionStart? Default false \u2014 area context by definition is area-specific and should surface via path hooks."},"injection.guidelines":{value:"all",public:!0,pro:!1,description:"Inject guidelines at SessionStart. 'all' (default) injects every guideline regardless of scope \u2014 guidelines apply broadly so early visibility matters. Set to a number for a cap, or false to disable."},"injection.priorityAlwaysOverride":{value:!0,public:!0,pro:!1,description:"When true (default), any memory with priority='always' is injected at SessionStart regardless of layer-specific injection settings. User-marked 'always' memories surface in the ## Always section (rendered first since 0.4.3 so they survive char-cap truncation)."},"injection.maxChars":{value:1200,public:!0,pro:!1,description:"Overall character cap for the combined SessionStart injection (preferences + technical + area_context + guidelines + always). Applied after all layer sections are concatenated; truncates with '...truncated' suffix. Bump to 2000+ for richer context, drop to 600 for token-conscious sessions. Default 1200 matches the pre-0.4.3 hard-coded MAX_INJECT_CHARS constant."},"memories.hideFromGrep":{value:!0,public:!0,pro:!1,description:"Add an aide-memory-managed block to .ignore so grep/ripgrep/etc skip .aide/memories/ by default. Flipping this live triggers drift-repair on the next hook fire."},"memories.softening.threshold":{value:10,public:!0,pro:!1,description:"Total-memory count below which pre-read/pre-edit hard blocks become soft additionalContext nudges. Keeps small projects from feeling hostile. Default 10 \u2014 once you have 10+ total memories, hard blocking resumes on first-touch."},"memories.defaultShared":{value:!0,public:!0,pro:!1,description:"Default `shared` flag for new memories when the caller doesn't pass one. When true (default), aide_remember without an explicit shared param writes to `.aide/memories/preferences/shared/` (committed to repo). When false, defaults to `personal/` (gitignored). Per-call `shared: true|false` always overrides this default. Flip to false if you want personal-by-default and explicit opt-in for shared memories."}}});function _e(){return fa}function ma(n,e){let t=n;for(let r of e){if(t==null||typeof t!="object"||Array.isArray(t)||!Object.prototype.hasOwnProperty.call(t,r))return!1;t=t[r]}return!0}function ha(n,e){let t=n;for(let r of e)t=t[r];return t}function W(n,e){let r=_e()[e];if(!r)return;let o=r.value;if(r.public!==!0||!n)return o;let s=_o.default.join(n,".aide","config.json");if(!Cr.default.existsSync(s))return o;let i;try{i=JSON.parse(Cr.default.readFileSync(s,"utf8"))}catch{return o}let a=e.split(".");return ma(i,a)?ha(i,a):o}function So(){let n=_e(),e={};for(let[t,r]of Object.entries(n))r.public===!0&&(e[t]=r.value);return e}function Eo(n){let e={};for(let[t,r]of Object.entries(n)){let o=t.split("."),s=e;for(let i=0;i<o.length-1;i++){let a=o[i],c=s[a];(!c||typeof c!="object"||Array.isArray(c))&&(s[a]={}),s=s[a]}s[o[o.length-1]]=r}return e}var Cr,_o,fa,ze=$(()=>{"use strict";Cr=h(require("fs")),_o=h(require("path"));Rr();fa=kt});function At(n,e,t,r){if(t===!1||t===0)return[];let o=n.list({layer:e});return e==="preferences"?(W(r,"injection.excludeScopedPreferences")===!0&&(o=o.filter(i=>!i.scope||i.scope==="project")),o.sort((i,a)=>{let c=i.recalled_count??0,l=a.recalled_count??0;return l!==c?l-c:(a.updated_at||"").localeCompare(i.updated_at||"")})):o.sort((s,i)=>(i.updated_at||"").localeCompare(s.updated_at||"")),t==="all"?o:typeof t=="number"&&t>0?o.slice(0,t):o}function Tt(n,e){if(!(W(n,"injection.enabled")??!0))return{content:"",injectedIds:[],truncated:!1};let r=W(n,"injection.preferences")??15,o=W(n,"injection.technical")??!1,s=W(n,"injection.area_context")??!1,i=W(n,"injection.guidelines")??"all",a=W(n,"injection.priorityAlwaysOverride")??!0,c=Number(W(n,"injection.maxChars")??1200),l=At(e,"preferences",r,n),u=At(e,"technical",o,n),d=At(e,"area_context",s,n),m=At(e,"guidelines",i,n),g=a?e.list({priority:"always"}):[],w=[],_=new Set,S=(k,re)=>{for(let J of k){let de=J.uuid||String(J.id);_.has(de)||(_.add(de),re.push(J.what),w.push(J.id))}},p={preferences:[],technical:[],area_context:[],guidelines:[],always:[]};if(S(l,p.preferences),S(u,p.technical),S(d,p.area_context),S(m,p.guidelines),S(g,p.always),p.preferences.length+p.technical.length+p.area_context.length+p.guidelines.length+p.always.length===0)return{content:"",injectedIds:[],truncated:!1};let f=[];if(p.always.length>0){f.push("## Always");for(let k of p.always)f.push(`- ${k}`)}if(p.preferences.length>0){f.push("## Session Preferences");for(let k of p.preferences)f.push(`- ${k}`)}if(p.technical.length>0){f.push("## Technical Context");for(let k of p.technical)f.push(`- ${k}`)}if(p.area_context.length>0){f.push("## Area Context");for(let k of p.area_context)f.push(`- ${k}`)}if(p.guidelines.length>0){f.push("## Guidelines");for(let k of p.guidelines)f.push(`- ${k}`)}let E=f.join(`
127
127
  `),T=!1;return E.length>c&&(E=E.slice(0,c)+`
128
- ...truncated`,T=!0),{content:E,injectedIds:b,truncated:T}}var Mr=$(()=>{"use strict";ze()});var $o={};Zt($o,{_resetPackageRootCache:()=>Ea,findPackageRoot:()=>Ze,getTemplatesDir:()=>Nr});function Ze(){if(Mt)return Mt;let n=__dirname;for(let e=0;e<32&&n!==Se.parse(n).root;e++){let t=Se.join(n,"package.json");if(Qe.existsSync(t))try{let r=JSON.parse(Qe.readFileSync(t,"utf8"));if(typeof r.name=="string"&&Sa.has(r.name))return Mt=n,n}catch{}n=Se.dirname(n)}throw new Error(`aide-memory: could not find package.json walking up from ${__dirname}. This indicates a broken install \u2014 reinstall aide-memory.`)}function Nr(){let n=Ze(),e=Se.join(n,"src","templates","rules");if(!Qe.existsSync(e))throw new Error(`aide-memory: templates directory not found at ${e}. This indicates a broken install \u2014 reinstall aide-memory.`);return e}function Ea(){Mt=null}var Qe,Se,_a,wa,Sa,Mt,Nt=$(()=>{"use strict";Qe=h(require("fs")),Se=h(require("path")),_a="aide-memory",wa=["aide","v0"].join("-"),Sa=new Set([wa,_a]),Mt=null});function va(){if($t!==null)return $t;let n=Io.join(Nr(),"shared","body.md");return $t=jo.readFileSync(n,"utf8"),$t}function ka(n,e){let t=n;for(let[r,o]of Object.entries(e))t=t.replace(new RegExp(`\\{\\{${r}\\}\\}`,"g"),o);return t}function jt(n,e){let t=va(),r=n.ruleFrontmatter+t;return ka(r,{contributor:e.contributor,tools_list:e.tools_list,tool_id:n.ruleToolId,editor_notes:n.ruleNotes})}var jo,Io,$t,$r=$(()=>{"use strict";jo=h(require("fs")),Io=h(require("path"));Nt();$t=null});function Do(n,e=""){let t=new Map;for(let[r,o]of Object.entries(n)){let s=e?`${e}.${r}`:r;if(Array.isArray(o))t.set(s,{type:"array"});else if(o!==null&&typeof o=="object"){t.set(s,{type:"object"});let i=Do(o,s);for(let[a,c]of i)t.set(a,c)}else t.set(s,{type:typeof o})}return t}function xa(n,e){let t=e.split("."),r=n;for(let o of t){if(r==null||typeof r!="object")return;r=r[o]}return r}function Oa(n,e,t){let r=e.split("."),o=n;for(let s=0;s<r.length-1;s++){let i=r[s];(o[i]===void 0||o[i]===null||typeof o[i]!="object")&&(o[i]={}),o=o[i]}o[r[r.length-1]]=t}function Ee(n){return JSON.parse(JSON.stringify(n))}var Fe,jr,ve,It,he,Dt=$(()=>{"use strict";Fe=h(require("fs")),jr=h(require("path")),ve={version:1,tags:{presets:["architecture","testing","security","style","integration","config","migration","performance","api-contract"]},telemetry:{enabled:!0},contributor:"auto",embeddings:{model:"auto",backend:"auto"},updates:{check:!0}};It=Do(ve);he=class{constructor(e){this.projectRoot=e,this.configPath=jr.default.join(e,".aide","config.json"),this.config=this.load()}get(e){return xa(this.config,e)}set(e,t){this.validateKey(e),this.validateValue(e,t),Oa(this.config,e,t),this.save()}addTag(e){let t=this.config.tags.presets;t.includes(e)||(t.push(e),this.save())}removeTag(e){let t=this.config.tags.presets,r=t.indexOf(e);r!==-1&&(t.splice(r,1),this.save())}reset(){this.config=Ee(ve),this.save()}list(){return Ee(this.config)}static defaults(){return Ee(ve)}load(){if(!Fe.default.existsSync(this.configPath))return Ee(ve);let e;try{e=Fe.default.readFileSync(this.configPath,"utf-8")}catch{return console.warn(`[aide-config] Could not read ${this.configPath}, using defaults`),Ee(ve)}try{let t=JSON.parse(e);return this.mergeWithDefaults(t)}catch{return console.warn(`[aide-config] Malformed JSON in ${this.configPath}, using defaults. Call config.reset() to overwrite the file with valid defaults.`),Ee(ve)}}mergeWithDefaults(e){let t=Ee(ve);return this.deepMerge(t,e)}deepMerge(e,t){if(t==null)return e;if(typeof t!="object"||Array.isArray(t)||typeof e!="object"||Array.isArray(e))return t;let r={...e};for(let o of Object.keys(t))o in r&&typeof r[o]=="object"&&!Array.isArray(r[o])&&typeof t[o]=="object"&&!Array.isArray(t[o])?r[o]=this.deepMerge(r[o],t[o]):r[o]=t[o];return r}save(){let e=jr.default.dirname(this.configPath);Fe.default.existsSync(e)||Fe.default.mkdirSync(e,{recursive:!0}),Fe.default.writeFileSync(this.configPath,JSON.stringify(this.config,null,2)+`
129
- `,"utf-8")}validateKey(e){if(!It.has(e)){let t=Array.from(It.keys()).filter(r=>!It.get(r).type.startsWith("object")).sort();throw new Error(`Unknown config key: "${e}". Valid keys: ${t.join(", ")}`)}}validateValue(e,t){let r=It.get(e);if(!r)return;let o=Array.isArray(t)?"array":typeof t;if(r.type!==o)throw new Error(`Invalid value type for "${e}": expected ${r.type}, got ${o}`)}}});function Dr(n,e){let t=Ir.default.join(n,".ignore"),r=ke.default.existsSync(t),o=r?ke.default.readFileSync(t,"utf8"):"",{withoutManaged:s,withoutLegacy:i}=Ca(o),a;if(e){let c=Ra();a=Aa(i,c)}else a=s===i?s:i;return a===o?{ignorePath:t,changed:!1}:!e&&a.trim().length===0?r?(ke.default.unlinkSync(t),{ignorePath:t,changed:!0,message:".ignore removed (memories.hideFromGrep disabled, no other entries)"}):{ignorePath:t,changed:!1}:(ke.default.writeFileSync(t,a,"utf8"),{ignorePath:t,changed:!0,message:e?r?".ignore (aide-memory section updated)":".ignore (created with .aide/memories/ hidden from grep)":".ignore (aide-memory section removed)"})}function Fr(n){let e=Ir.default.join(n,".aide","config.json");if(!ke.default.existsSync(e))return!0;try{return JSON.parse(ke.default.readFileSync(e,"utf8"))?.memories?.hideFromGrep!==!1}catch{return!0}}function Ra(){return`${Po}
130
- ${Ho}
131
- ${Lo}
132
- `}function Ca(n){let e=new RegExp(`(?:^|\\n)[ \\t]*${Fo(Po)}[^\\n]*\\n[\\s\\S]*?${Fo(Lo)}[^\\n]*(?:\\n|$)`,"g"),t=n.replace(e,o=>o.startsWith(`
128
+ ...truncated`,T=!0),{content:E,injectedIds:w,truncated:T}}var Tr=$(()=>{"use strict";ze()});var Mo={};Qt(Mo,{_resetPackageRootCache:()=>Sa,findPackageRoot:()=>Ze,getTemplatesDir:()=>Mr});function Ze(){if(Mt)return Mt;let n=__dirname;for(let e=0;e<32&&n!==Se.parse(n).root;e++){let t=Se.join(n,"package.json");if(Qe.existsSync(t))try{let r=JSON.parse(Qe.readFileSync(t,"utf8"));if(typeof r.name=="string"&&_a.has(r.name))return Mt=n,n}catch{}n=Se.dirname(n)}throw new Error(`aide-memory: could not find package.json walking up from ${__dirname}. This indicates a broken install \u2014 reinstall aide-memory.`)}function Mr(){let n=Ze(),e=Se.join(n,"src","templates","rules");if(!Qe.existsSync(e))throw new Error(`aide-memory: templates directory not found at ${e}. This indicates a broken install \u2014 reinstall aide-memory.`);return e}function Sa(){Mt=null}var Qe,Se,ba,wa,_a,Mt,Nt=$(()=>{"use strict";Qe=h(require("fs")),Se=h(require("path")),ba="aide-memory",wa=["aide","v0"].join("-"),_a=new Set([wa,ba]),Mt=null});function Ea(){if($t!==null)return $t;let n=$o.join(Mr(),"shared","body.md");return $t=No.readFileSync(n,"utf8"),$t}function va(n,e){let t=n;for(let[r,o]of Object.entries(e))t=t.replace(new RegExp(`\\{\\{${r}\\}\\}`,"g"),o);return t}function It(n,e){let t=Ea(),r=n.ruleFrontmatter+t;return va(r,{contributor:e.contributor,tools_list:e.tools_list,tool_id:n.ruleToolId,editor_notes:n.ruleNotes})}var No,$o,$t,Nr=$(()=>{"use strict";No=h(require("fs")),$o=h(require("path"));Nt();$t=null});function Io(n,e=""){let t=new Map;for(let[r,o]of Object.entries(n)){let s=e?`${e}.${r}`:r;if(Array.isArray(o))t.set(s,{type:"array"});else if(o!==null&&typeof o=="object"){t.set(s,{type:"object"});let i=Io(o,s);for(let[a,c]of i)t.set(a,c)}else t.set(s,{type:typeof o})}return t}function ka(n,e){let t=e.split("."),r=n;for(let o of t){if(r==null||typeof r!="object")return;r=r[o]}return r}function xa(n,e,t){let r=e.split("."),o=n;for(let s=0;s<r.length-1;s++){let i=r[s];(o[i]===void 0||o[i]===null||typeof o[i]!="object")&&(o[i]={}),o=o[i]}o[r[r.length-1]]=t}function Ee(n){return JSON.parse(JSON.stringify(n))}var Fe,$r,ve,jt,he,Dt=$(()=>{"use strict";Fe=h(require("fs")),$r=h(require("path")),ve={version:1,tags:{presets:["architecture","testing","security","style","integration","config","migration","performance","api-contract"]},telemetry:{enabled:!0},contributor:"auto",embeddings:{model:"auto",backend:"auto"},updates:{check:!0}};jt=Io(ve);he=class{constructor(e){this.projectRoot=e,this.configPath=$r.default.join(e,".aide","config.json"),this.config=this.load()}get(e){return ka(this.config,e)}set(e,t){this.validateKey(e),this.validateValue(e,t),xa(this.config,e,t),this.save()}addTag(e){let t=this.config.tags.presets;t.includes(e)||(t.push(e),this.save())}removeTag(e){let t=this.config.tags.presets,r=t.indexOf(e);r!==-1&&(t.splice(r,1),this.save())}reset(){this.config=Ee(ve),this.save()}list(){return Ee(this.config)}static defaults(){return Ee(ve)}load(){if(!Fe.default.existsSync(this.configPath))return Ee(ve);let e;try{e=Fe.default.readFileSync(this.configPath,"utf-8")}catch{return console.warn(`[aide-config] Could not read ${this.configPath}, using defaults`),Ee(ve)}try{let t=JSON.parse(e);return this.mergeWithDefaults(t)}catch{return console.warn(`[aide-config] Malformed JSON in ${this.configPath}, using defaults. Call config.reset() to overwrite the file with valid defaults.`),Ee(ve)}}mergeWithDefaults(e){let t=Ee(ve);return this.deepMerge(t,e)}deepMerge(e,t){if(t==null)return e;if(typeof t!="object"||Array.isArray(t)||typeof e!="object"||Array.isArray(e))return t;let r={...e};for(let o of Object.keys(t))o in r&&typeof r[o]=="object"&&!Array.isArray(r[o])&&typeof t[o]=="object"&&!Array.isArray(t[o])?r[o]=this.deepMerge(r[o],t[o]):r[o]=t[o];return r}save(){let e=$r.default.dirname(this.configPath);Fe.default.existsSync(e)||Fe.default.mkdirSync(e,{recursive:!0}),Fe.default.writeFileSync(this.configPath,JSON.stringify(this.config,null,2)+`
129
+ `,"utf-8")}validateKey(e){if(!jt.has(e)){let t=Array.from(jt.keys()).filter(r=>!jt.get(r).type.startsWith("object")).sort();throw new Error(`Unknown config key: "${e}". Valid keys: ${t.join(", ")}`)}}validateValue(e,t){let r=jt.get(e);if(!r)return;let o=Array.isArray(t)?"array":typeof t;if(r.type!==o)throw new Error(`Invalid value type for "${e}": expected ${r.type}, got ${o}`)}}});function jr(n,e){let t=Ir.default.join(n,".ignore"),r=ke.default.existsSync(t),o=r?ke.default.readFileSync(t,"utf8"):"",{withoutManaged:s,withoutLegacy:i}=Ra(o),a;if(e){let c=Oa();a=Ca(i,c)}else a=s===i?s:i;return a===o?{ignorePath:t,changed:!1}:!e&&a.trim().length===0?r?(ke.default.unlinkSync(t),{ignorePath:t,changed:!0,message:".ignore removed (memories.hideFromGrep disabled, no other entries)"}):{ignorePath:t,changed:!1}:(ke.default.writeFileSync(t,a,"utf8"),{ignorePath:t,changed:!0,message:e?r?".ignore (aide-memory section updated)":".ignore (created with .aide/memories/ hidden from grep)":".ignore (aide-memory section removed)"})}function Dr(n){let e=Ir.default.join(n,".aide","config.json");if(!ke.default.existsSync(e))return!0;try{return JSON.parse(ke.default.readFileSync(e,"utf8"))?.memories?.hideFromGrep!==!1}catch{return!0}}function Oa(){return`${Do}
130
+ ${Po}
131
+ ${Fo}
132
+ `}function Ra(n){let e=new RegExp(`(?:^|\\n)[ \\t]*${jo(Do)}[^\\n]*\\n[\\s\\S]*?${jo(Fo)}[^\\n]*(?:\\n|$)`,"g"),t=n.replace(e,o=>o.startsWith(`
133
133
  `)?`
134
134
  `:""),r=t.split(`
135
- `).filter(o=>o.trim()!==Ho).join(`
136
- `);return{withoutManaged:t,withoutLegacy:r}}function Aa(n,e){if(n.length===0)return e;let t=n.replace(/\n+$/,"");return t.length===0?e:`${t}
135
+ `).filter(o=>o.trim()!==Po).join(`
136
+ `);return{withoutManaged:t,withoutLegacy:r}}function Ca(n,e){if(n.length===0)return e;let t=n.replace(/\n+$/,"");return t.length===0?e:`${t}
137
137
 
138
- ${e}`}function Fo(n){return n.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}var ke,Ir,Po,Lo,Ho,Uo=$(()=>{"use strict";ke=h(require("fs")),Ir=h(require("path")),Po="# BEGIN aide-memory-managed",Lo="# END aide-memory-managed",Ho=".aide/memories/"});function Bo(n=et){let e=[];for(let t of n){if(!t.hasMatcher||!t.matchers||t.matchers.length===0){e.push({event:t,matcher:null});continue}for(let r of t.matchers)e.push({event:t,matcher:r})}return e}var et,Pr=$(()=>{"use strict";et=[{id:"session-start",script:"session-start-clear.sh",purpose:"Inject top-N preferences + guidelines + priority:always at session start",timeout:10,hasMatcher:!1},{id:"pre-compact",script:"pre-compact-save.sh",purpose:"Clear session tracking before compaction",timeout:30,hasMatcher:!1},{id:"stop",script:"stop-remember.sh",purpose:"Reflection nudge on schedule + correction-pending flag",timeout:30,hasMatcher:!1},{id:"pre-prompt",script:"detect-correction.sh",purpose:"Detect correction/decision/preference in user prompt",timeout:5,hasMatcher:!1},{id:"pre-read",script:"pre-read-recall.sh",purpose:"Block/soft on file read with scoped memories",timeout:10,hasMatcher:!0,matchers:["read"]},{id:"pre-edit",script:"pre-edit-recall.sh",purpose:"Block/soft on file edit with scoped memories",timeout:10,hasMatcher:!0,matchers:["edit","write"]},{id:"pre-search",script:"pre-search-nudge.sh",purpose:"Nudge aide_search when matching memories exist",timeout:10,hasMatcher:!0,matchers:["search","glob"]},{id:"pre-recall",script:"track-recall.sh",purpose:"Track paths on aide_recall pre-tool-use",timeout:5,hasMatcher:!0,matchers:["mcp-aide-recall"]},{id:"post-tool-use-recall",script:"track-recall-post.sh",purpose:"Record recalled ids post-tool-use",timeout:5,hasMatcher:!0,matchers:["mcp-aide-recall"]},{id:"post-remember",script:"track-remember.sh",purpose:"Clear correction-pending flag on aide_remember/update/forget",timeout:5,hasMatcher:!0,matchers:["mcp-aide-remember","mcp-aide-update","mcp-aide-forget"]},{id:"post-search",script:"track-search.sh",purpose:"Mark query as searched post aide_search",timeout:5,hasMatcher:!0,matchers:["mcp-aide-search"]}]});function Ft(n,e){let t=[],r=new Set;for(let{event:o,matcher:s}of Bo(et)){let i=n.eventNameMap[o.id];if(i===null)continue;let a=null;if(s!==null){let u=n.matcherMap[s];if(u===null)continue;a=u}let c=Ta(e.packageRoot,o.script),l=`${i}|${a??""}|${c}`;r.has(l)||(r.add(l),t.push({eventName:i,matcher:a,command:c,timeout:o.timeout}))}return t}function Ta(n,e){return`bash ${Vo.join(n,"scripts","hooks",e)}`}function Pt(n){let e=new Map;for(let t of n){let r=e.get(t.eventName)??[];r.push(t),e.set(t.eventName,r)}return e}var Vo,Lr=$(()=>{"use strict";Vo=h(require("path"));Pr()});var Lt,Wo=$(()=>{"use strict";Lr();Lt={id:"claude-code",displayName:"Claude Code",hookConfigPath:".claude/settings.json",mcpConfigPath:".mcp.json",rules:[{template:"claude-code.md",dest:".claude/rules/aide-memory.md"}],ruleFrontmatter:"",ruleNotes:"",ruleToolId:"claude-code",supportsHooks:!0,supportsMcp:!0,supportsRules:!0,eventNameMap:{"session-start":"SessionStart","pre-compact":"PreCompact",stop:"Stop","pre-prompt":"UserPromptSubmit","pre-read":"PreToolUse","pre-edit":"PreToolUse","pre-search":"PreToolUse","pre-recall":"PreToolUse","post-tool-use-recall":"PostToolUse","post-remember":"PostToolUse","post-search":"PostToolUse"},matcherMap:{read:"Read",edit:"Edit",write:"Write",search:"Grep",glob:"Glob","mcp-aide-recall":"mcp__aide-memory__aide_recall","mcp-aide-remember":"mcp__aide-memory__aide_remember","mcp-aide-update":"mcp__aide-memory__aide_update","mcp-aide-forget":"mcp__aide-memory__aide_forget","mcp-aide-search":"mcp__aide-memory__aide_search"},buildHookConfig(n){let e=Ft(Lt,n),t=Pt(e),r={};for(let[o,s]of t){let i=s.some(a=>a.matcher!==null);r[o]=s.map(a=>{let c={type:"command",command:a.command,timeout:a.timeout};return i?{matcher:a.matcher,hooks:[c]}:{hooks:[c]}})}return{hooks:r}},buildMcpConfig({serverEntry:n,projectRoot:e}){return{mcpServers:{"aide-memory":{command:"node",args:[n,e]}}}},detectRuntime(n){return n.CURSOR_VERSION||n.CURSOR_PROJECT_DIR?!1:!!n.CLAUDECODE},translateInput(n){return n},translateOutput(n){switch(n.kind){case"block":{let e={decision:"block",reason:n.reason};return n.systemMessage&&(e.systemMessage=n.systemMessage),JSON.stringify(e,null,2)}case"additionalContext":{let e={hookSpecificOutput:{hookEventName:n.event,additionalContext:n.context}};return n.systemMessage&&(e.systemMessage=n.systemMessage),JSON.stringify(e,null,2)}case"systemMessage":return JSON.stringify({systemMessage:n.text},null,2);case"silent":return""}}}});function xe(n){return n.replace(Ma,"")}var Ma,Hr,Jo=$(()=>{"use strict";Lr();Ma=/\[[0-9;]*m/g;Hr={id:"cursor",displayName:"Cursor",hookConfigPath:".cursor/hooks.json",mcpConfigPath:".cursor/mcp.json",rules:[{template:"cursor.mdc",dest:".cursor/rules/aide-memory.mdc"}],ruleFrontmatter:`---
138
+ ${e}`}function jo(n){return n.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}var ke,Ir,Do,Fo,Po,Lo=$(()=>{"use strict";ke=h(require("fs")),Ir=h(require("path")),Do="# BEGIN aide-memory-managed",Fo="# END aide-memory-managed",Po=".aide/memories/"});function Ho(n=et){let e=[];for(let t of n){if(!t.hasMatcher||!t.matchers||t.matchers.length===0){e.push({event:t,matcher:null});continue}for(let r of t.matchers)e.push({event:t,matcher:r})}return e}var et,Fr=$(()=>{"use strict";et=[{id:"session-start",script:"session-start-clear.sh",purpose:"Inject top-N preferences + guidelines + priority:always at session start",timeout:10,hasMatcher:!1},{id:"pre-compact",script:"pre-compact-save.sh",purpose:"Clear session tracking before compaction",timeout:30,hasMatcher:!1},{id:"stop",script:"stop-remember.sh",purpose:"Reflection nudge on schedule + correction-pending flag",timeout:30,hasMatcher:!1},{id:"pre-prompt",script:"detect-correction.sh",purpose:"Detect correction/decision/preference in user prompt",timeout:5,hasMatcher:!1},{id:"pre-read",script:"pre-read-recall.sh",purpose:"Block/soft on file read with scoped memories",timeout:10,hasMatcher:!0,matchers:["read"]},{id:"pre-edit",script:"pre-edit-recall.sh",purpose:"Block/soft on file edit with scoped memories",timeout:10,hasMatcher:!0,matchers:["edit","write"]},{id:"pre-search",script:"pre-search-nudge.sh",purpose:"Nudge aide_search when matching memories exist",timeout:10,hasMatcher:!0,matchers:["search","glob"]},{id:"pre-recall",script:"track-recall.sh",purpose:"Track paths on aide_recall pre-tool-use",timeout:5,hasMatcher:!0,matchers:["mcp-aide-recall"]},{id:"post-tool-use-recall",script:"track-recall-post.sh",purpose:"Record recalled ids post-tool-use",timeout:5,hasMatcher:!0,matchers:["mcp-aide-recall"]},{id:"post-remember",script:"track-remember.sh",purpose:"Clear correction-pending flag on aide_remember/update/forget",timeout:5,hasMatcher:!0,matchers:["mcp-aide-remember","mcp-aide-update","mcp-aide-forget"]},{id:"post-search",script:"track-search.sh",purpose:"Mark query as searched post aide_search",timeout:5,hasMatcher:!0,matchers:["mcp-aide-search"]}]});function Ft(n,e){let t=[],r=new Set;for(let{event:o,matcher:s}of Ho(et)){let i=n.eventNameMap[o.id];if(i===null)continue;let a=null;if(s!==null){let u=n.matcherMap[s];if(u===null)continue;a=u}let c=Aa(e.packageRoot,o.script),l=`${i}|${a??""}|${c}`;r.has(l)||(r.add(l),t.push({eventName:i,matcher:a,command:c,timeout:o.timeout}))}return t}function Aa(n,e){return`bash ${Uo.join(n,"scripts","hooks",e)}`}function Pt(n){let e=new Map;for(let t of n){let r=e.get(t.eventName)??[];r.push(t),e.set(t.eventName,r)}return e}var Uo,Pr=$(()=>{"use strict";Uo=h(require("path"));Fr()});var Lt,Bo=$(()=>{"use strict";Pr();Lt={id:"claude-code",displayName:"Claude Code",hookConfigPath:".claude/settings.json",mcpConfigPath:".mcp.json",rules:[{template:"claude-code.md",dest:".claude/rules/aide-memory.md"}],ruleFrontmatter:"",ruleNotes:"",ruleToolId:"claude-code",supportsHooks:!0,supportsMcp:!0,supportsRules:!0,eventNameMap:{"session-start":"SessionStart","pre-compact":"PreCompact",stop:"Stop","pre-prompt":"UserPromptSubmit","pre-read":"PreToolUse","pre-edit":"PreToolUse","pre-search":"PreToolUse","pre-recall":"PreToolUse","post-tool-use-recall":"PostToolUse","post-remember":"PostToolUse","post-search":"PostToolUse"},matcherMap:{read:"Read",edit:"Edit",write:"Write",search:"Grep",glob:"Glob","mcp-aide-recall":"mcp__aide-memory__aide_recall","mcp-aide-remember":"mcp__aide-memory__aide_remember","mcp-aide-update":"mcp__aide-memory__aide_update","mcp-aide-forget":"mcp__aide-memory__aide_forget","mcp-aide-search":"mcp__aide-memory__aide_search"},buildHookConfig(n){let e=Ft(Lt,n),t=Pt(e),r={};for(let[o,s]of t){let i=s.some(a=>a.matcher!==null);r[o]=s.map(a=>{let c={type:"command",command:a.command,timeout:a.timeout};return i?{matcher:a.matcher,hooks:[c]}:{hooks:[c]}})}return{hooks:r}},buildMcpConfig({serverEntry:n,projectRoot:e}){return{mcpServers:{"aide-memory":{command:"node",args:[n,e]}}}},detectRuntime(n){return n.CURSOR_VERSION||n.CURSOR_PROJECT_DIR?!1:!!n.CLAUDECODE},translateInput(n){return n},translateOutput(n){switch(n.kind){case"block":{let e={decision:"block",reason:n.reason};return n.systemMessage&&(e.systemMessage=n.systemMessage),JSON.stringify(e,null,2)}case"additionalContext":{let e={hookSpecificOutput:{hookEventName:n.event,additionalContext:n.context}};return n.systemMessage&&(e.systemMessage=n.systemMessage),JSON.stringify(e,null,2)}case"systemMessage":return JSON.stringify({systemMessage:n.text},null,2);case"silent":return""}}}});function xe(n){return n.replace(Ta,"")}var Ta,Lr,Vo=$(()=>{"use strict";Pr();Ta=/\[[0-9;]*m/g;Lr={id:"cursor",displayName:"Cursor",hookConfigPath:".cursor/hooks.json",mcpConfigPath:".cursor/mcp.json",rules:[{template:"cursor.mdc",dest:".cursor/rules/aide-memory.mdc"}],ruleFrontmatter:`---
139
139
  description: AIDE Memory - persistent context for AI coding agents
140
140
  globs: **/*
141
141
  alwaysApply: true
142
142
  ---
143
143
 
144
- `,ruleNotes:"\nNote: Cursor uses `agent_message` for hook responses rather than `additionalContext`. The nudge content appears directly in the agent message flow.\n",ruleToolId:"cursor",supportsHooks:!0,supportsMcp:!0,supportsRules:!0,needsDynamicRules:!0,eventNameMap:{"session-start":"sessionStart","pre-compact":"preCompact",stop:"stop","pre-prompt":"beforeSubmitPrompt","pre-read":"preToolUse","pre-edit":"preToolUse","pre-search":"preToolUse","pre-recall":"preToolUse","post-tool-use-recall":"postToolUse","post-remember":"postToolUse","post-search":"postToolUse"},matcherMap:{read:"Read",edit:"Write",write:"Write",search:"Grep",glob:null,"mcp-aide-recall":"MCP:aide_recall","mcp-aide-remember":"MCP:aide_remember","mcp-aide-update":"MCP:aide_update","mcp-aide-forget":"MCP:aide_forget","mcp-aide-search":"MCP:aide_search"},buildHookConfig(n){let e=Ft(Hr,n),t=Pt(e),r={};for(let[o,s]of t)r[o]=s.map(i=>{let a={type:"command",command:i.command,timeout:i.timeout};return i.matcher!==null&&(a.matcher=i.matcher),a});return{version:1,hooks:r}},buildMcpConfig({serverEntry:n}){return{mcpServers:{"aide-memory":{type:"stdio",command:"node",args:[n,"${workspaceFolder}"]}}}},detectRuntime(n){return!!n.CURSOR_VERSION||!!n.CURSOR_PROJECT_DIR},translateInput(n){let e={...n};if(typeof e.session_id!="string"&&typeof n.conversation_id=="string"&&(e.session_id=n.conversation_id),typeof e.cwd!="string"&&Array.isArray(n.workspace_roots)&&n.workspace_roots.length>0){let t=n.workspace_roots[0];typeof t=="string"&&(e.cwd=t)}return e.tool_response===void 0&&n.tool_output!==void 0&&(e.tool_response=n.tool_output),e},translateOutput(n){switch(n.kind){case"block":{let e=n.event??"preToolUse";if(e==="stop")return n.systemMessage?JSON.stringify({followup_message:`${xe(n.systemMessage)} \u2014 ${n.reason}`},null,2):JSON.stringify({followup_message:n.reason},null,2);if(e==="userPromptSubmit"){let r=n.systemMessage?`${xe(n.systemMessage)} \u2014 ${xe(n.reason)}`:xe(n.reason);return JSON.stringify({continue:!1,user_message:r},null,2)}let t={permission:"deny"};return n.systemMessage?(t.user_message=xe(n.systemMessage),t.agent_message=n.reason):t.user_message=xe(n.reason),JSON.stringify(t,null,2)}case"additionalContext":{if(String(n.event??"").toLowerCase()==="pretooluse"){let t={permission:"allow",agent_message:n.context};return n.systemMessage&&(t.user_message=xe(n.systemMessage)),JSON.stringify(t,null,2)}return""}case"systemMessage":return"";case"silent":return""}}}});var qo,Go=$(()=>{"use strict";qo={id:"codex",displayName:"OpenAI Codex",hookConfigPath:".codex/hooks.json",mcpConfigPath:".codex/mcp.json",rules:[{template:"codex.md",dest:".codex/rules/aide-memory.md"}],ruleFrontmatter:"",ruleNotes:"",ruleToolId:"codex",supportsHooks:!1,supportsMcp:!1,supportsRules:!1,eventNameMap:{"session-start":null,"pre-compact":null,stop:null,"pre-prompt":null,"pre-read":null,"pre-edit":null,"pre-search":null,"pre-recall":null,"post-tool-use-recall":null,"post-remember":null,"post-search":null},matcherMap:{read:null,edit:null,write:null,search:null,glob:null,"mcp-aide-recall":null,"mcp-aide-remember":null,"mcp-aide-update":null,"mcp-aide-forget":null,"mcp-aide-search":null},buildHookConfig(n){return{}},buildMcpConfig(n){return{}},detectRuntime(n){return!1},translateInput(n){return n},translateOutput(n){return""}}});var Xo,Yo=$(()=>{"use strict";Xo={id:"copilot",displayName:"GitHub Copilot",hookConfigPath:".github/copilot/hooks.json",mcpConfigPath:".github/copilot/mcp.json",rules:[{template:"copilot.md",dest:".github/copilot-instructions.md"}],ruleFrontmatter:"",ruleNotes:"",ruleToolId:"copilot",supportsHooks:!1,supportsMcp:!1,supportsRules:!1,eventNameMap:{"session-start":null,"pre-compact":null,stop:null,"pre-prompt":null,"pre-read":null,"pre-edit":null,"pre-search":null,"pre-recall":null,"post-tool-use-recall":null,"post-remember":null,"post-search":null},matcherMap:{read:null,edit:null,write:null,search:null,glob:null,"mcp-aide-recall":null,"mcp-aide-remember":null,"mcp-aide-update":null,"mcp-aide-forget":null,"mcp-aide-search":null},buildHookConfig(n){return{}},buildMcpConfig(n){return{}},detectRuntime(n){return!1},translateInput(n){return n},translateOutput(n){return""}}});var Ko,zo=$(()=>{"use strict";Ko={id:"windsurf",displayName:"Windsurf",hookConfigPath:".windsurf/hooks.json",mcpConfigPath:".windsurf/mcp.json",rules:[{template:"windsurf.md",dest:".windsurf/rules/aide-memory.md"}],ruleFrontmatter:"",ruleNotes:"",ruleToolId:"windsurf",supportsHooks:!1,supportsMcp:!1,supportsRules:!1,eventNameMap:{"session-start":null,"pre-compact":null,stop:null,"pre-prompt":null,"pre-read":null,"pre-edit":null,"pre-search":null,"pre-recall":null,"post-tool-use-recall":null,"post-remember":null,"post-search":null},matcherMap:{read:null,edit:null,write:null,search:null,glob:null,"mcp-aide-recall":null,"mcp-aide-remember":null,"mcp-aide-update":null,"mcp-aide-forget":null,"mcp-aide-search":null},buildHookConfig(n){return{}},buildMcpConfig(n){return{}},detectRuntime(n){return!1},translateInput(n){return n},translateOutput(n){return""}}});function Ut(){return Ht.filter(n=>n.supportsHooks)}function Ur(){return Ht.filter(n=>n.supportsMcp)}function q(){return Ht.filter(n=>n.supportsRules)}function Bt(n=process.env){for(let e of Ht)if(e.detectRuntime(n))return e;return Lt}var Ht,le=$(()=>{"use strict";Wo();Jo();Go();Yo();zo();Ht=[Lt,Hr,qo,Xo,Ko]});var os={};Zt(os,{MCP_TOOLS_LIST:()=>Pe,autoUpdateIfNeeded:()=>Ua,detectContributor:()=>tt,ingestPendingMemories:()=>Va,initProject:()=>Gr,resyncDerivedArtifacts:()=>Jt});function Wt(){return R.default.resolve(__dirname,"..","..")}function $a(){let n=Wt();return n.includes("/_npx/")||n.includes("\\_npx\\")}function es(n,e,t,r){let o=[],s=[],i=n.hookConfigPath,a=R.default.join(e,i),c=R.default.dirname(a);y.default.existsSync(c)||y.default.mkdirSync(c,{recursive:!0});let l=Wt(),u=n.buildHookConfig({packageRoot:l}),d=r?{_aideMemoryVersion:r}:{},f=p=>{y.default.writeFileSync(a,JSON.stringify({...u,...d},null,2)+`
145
- `,"utf8"),o.push(`${i}${p?` (${p})`:""}`)};if(!y.default.existsSync(a))return f(""),{created:o,skipped:s};let _;try{_=JSON.parse(y.default.readFileSync(a,"utf8"))}catch{return f(""),{created:o,skipped:s}}if(Ia(_,l)&&!t)return s.push(`${i} (hooks already configured)`),{created:o,skipped:s};let w=ja(_.hooks??{},u.hooks??{},l),S={..._,...u,hooks:w,...d};return y.default.writeFileSync(a,JSON.stringify(S,null,2)+`
146
- `,"utf8"),o.push(`${i} (hooks ${t?"force-updated":"added"})`),{created:o,skipped:s}}function ja(n,e,t){let r=R.default.join(t,"scripts","hooks"),o=new Set(et.map(c=>c.script)),s=c=>{let l=u=>{if(typeof u=="string"){if(u.includes(r))return!0;for(let d of o)if(u.includes(`/${d}`)||u.endsWith(d))return!0;return!1}return Array.isArray(u)?u.some(l):u&&typeof u=="object"?Object.values(u).some(l):!1};return l(c)},i={},a=new Set([...Object.keys(n),...Object.keys(e)]);for(let c of a){let l=Array.isArray(n[c])?n[c]:[],u=Array.isArray(e[c])?e[c]:[],f=[...l.filter(_=>!s(_)),...u];f.length>0&&(i[c]=f)}return i}function Ia(n,e){let t=R.default.join(e,"scripts","hooks"),r=o=>typeof o=="string"?o.includes(t):Array.isArray(o)?o.some(r):o&&typeof o=="object"?Object.values(o).some(r):!1;return r(n.hooks)}function ts(n,e,t){let r=[],o=[],s=R.default.join(e,n.mcpConfigPath),i=R.default.dirname(s);y.default.existsSync(i)||y.default.mkdirSync(i,{recursive:!0});let a=Wt(),c=R.default.join(a,"dist","memory","cli.js"),l=n.buildMcpConfig({serverEntry:c,projectRoot:e});if(!y.default.existsSync(s))return y.default.writeFileSync(s,JSON.stringify(l,null,2)+`
147
- `,"utf8"),r.push(n.mcpConfigPath),{created:r,skipped:o};try{let u=JSON.parse(y.default.readFileSync(s,"utf8"));if(!!u.mcpServers?.["aide-memory"]&&!t)return o.push(`${n.mcpConfigPath} (aide-memory already configured)`),{created:r,skipped:o};u.mcpServers=u.mcpServers||{},u.mcpServers["aide-memory"]=l.mcpServers["aide-memory"],y.default.writeFileSync(s,JSON.stringify(u,null,2)+`
148
- `,"utf8"),r.push(`${n.mcpConfigPath} (aide-memory ${t?"force-updated":"server added"})`)}catch{y.default.writeFileSync(s,JSON.stringify(l,null,2)+`
149
- `,"utf8"),r.push(n.mcpConfigPath)}return{created:r,skipped:o}}function tt(n){try{return(0,Wr.execSync)("git rev-parse --git-dir",{cwd:n,encoding:"utf8",stdio:["pipe","pipe","pipe"]}),(0,Wr.execSync)("git config user.name",{cwd:n,encoding:"utf8",stdio:["pipe","pipe","pipe"]}).trim()||"unknown"}catch{return"unknown"}}function Da(n,e){let t=[],r=[];for(let o of Qo){let s=R.default.join(n,o);if(y.default.existsSync(s)&&!e){r.push(o);continue}y.default.mkdirSync(s,{recursive:!0}),t.push(o)}return{created:t,skipped:r}}function Jr(n,e,t){let r=[],o=[];for(let s of q())for(let i of s.rules){let a=R.default.join(n,i.dest);if(y.default.existsSync(a)&&!t){o.push(i.dest);continue}let c=R.default.dirname(a);y.default.existsSync(c)||y.default.mkdirSync(c,{recursive:!0});let l=jt(s,{contributor:e,tools_list:Pe});y.default.writeFileSync(a,l,"utf8"),r.push(i.dest)}return{created:r,skipped:o}}function rs(n,e){for(let[t,r]of Object.entries(e)){let o=n[t];o!=null&&typeof o=="object"&&!Array.isArray(o)&&r!==null&&typeof r=="object"&&!Array.isArray(r)?rs(o,r):o===void 0&&(n[t]=r)}return n}function qr(n){let e=R.default.join(n,".aide","config.json"),t=vo(),r=ko(t),o={};if(y.default.existsSync(e))try{o=JSON.parse(y.default.readFileSync(e,"utf8"))}catch{o={}}let s=JSON.stringify(o);rs(o,r);let i=JSON.stringify(o);if(s===i)return{written:!1};let a=R.default.dirname(e);return y.default.existsSync(a)||y.default.mkdirSync(a,{recursive:!0}),y.default.writeFileSync(e,JSON.stringify(o,null,2)+`
150
- `,"utf8"),{written:!0}}function Fa(n,e){let t=R.default.join(n,".aide","config-reference.md");if(y.default.existsSync(t)&&!e)return{created:[],skipped:[".aide/config-reference.md"]};let r=we(),o=Object.keys(r).filter(a=>r[a].public===!0).sort(),s=["# aide-memory configuration reference","","Auto-generated by `aide-memory init`. Every public setting from","`scripts/hooks/defaults.json` with its default and description.","","Override any of these with:","","```bash","aide-memory config <key> <value>","```","","Or see the live list with current values:","","```bash","aide-memory config list","```","","## Settings",""];for(let a of o){let c=r[a],l=typeof c.value=="object"?"`"+JSON.stringify(c.value)+"`":"`"+String(c.value)+"`";s.push("### `"+a+"`"),s.push(""),s.push("**Default:** "+l),s.push(""),c.description&&(s.push(c.description),s.push(""))}s.push("---"),s.push(""),s.push("_Reference regenerated at init time. If this file drifts from your installed aide-memory, re-run `aide-memory init --force` to refresh._"),s.push("");let i=R.default.dirname(t);return y.default.existsSync(i)||y.default.mkdirSync(i,{recursive:!0}),y.default.writeFileSync(t,s.join(`
151
- `),"utf8"),{created:[".aide/config-reference.md"],skipped:[]}}function Pa(n,e,t){let r=R.default.join(n,".aide","config.json");if(y.default.existsSync(r)&&!t){let{written:i}=qr(n);return i?{created:[".aide/config.json (public settings seeded)"],skipped:[]}:{created:[],skipped:[".aide/config.json"]}}let s=new he(n);return t&&s.reset(),s.set("contributor",e),qr(n),{created:[".aide/config.json"],skipped:[]}}function La(n){let e=R.default.join(n,".gitignore"),t=[],r=[],o="";y.default.existsSync(e)&&(o=y.default.readFileSync(e,"utf8"));let s=o.split(`
152
- `),i=[];for(let a of Zo)s.some(c=>c.trim()===a)?r.push(`.gitignore entry: ${a}`):(i.push(a),t.push(`.gitignore entry: ${a}`));if(i.length>0){let c=`${o.length>0&&!o.endsWith(`
144
+ `,ruleNotes:"\nNote: Cursor uses `agent_message` for hook responses rather than `additionalContext`. The nudge content appears directly in the agent message flow.\n",ruleToolId:"cursor",supportsHooks:!0,supportsMcp:!0,supportsRules:!0,needsDynamicRules:!0,eventNameMap:{"session-start":"sessionStart","pre-compact":"preCompact",stop:"stop","pre-prompt":"beforeSubmitPrompt","pre-read":"preToolUse","pre-edit":"preToolUse","pre-search":"preToolUse","pre-recall":"preToolUse","post-tool-use-recall":"postToolUse","post-remember":"postToolUse","post-search":"postToolUse"},matcherMap:{read:"Read",edit:"Write",write:"Write",search:"Grep",glob:null,"mcp-aide-recall":"MCP:aide_recall","mcp-aide-remember":"MCP:aide_remember","mcp-aide-update":"MCP:aide_update","mcp-aide-forget":"MCP:aide_forget","mcp-aide-search":"MCP:aide_search"},buildHookConfig(n){let e=Ft(Lr,n),t=Pt(e),r={};for(let[o,s]of t)r[o]=s.map(i=>{let a={type:"command",command:i.command,timeout:i.timeout};return i.matcher!==null&&(a.matcher=i.matcher),a});return{version:1,hooks:r}},buildMcpConfig({serverEntry:n}){return{mcpServers:{"aide-memory":{type:"stdio",command:"node",args:[n,"${workspaceFolder}"]}}}},detectRuntime(n){return!!n.CURSOR_VERSION||!!n.CURSOR_PROJECT_DIR},translateInput(n){let e={...n};if(typeof e.session_id!="string"&&typeof n.conversation_id=="string"&&(e.session_id=n.conversation_id),typeof e.cwd!="string"&&Array.isArray(n.workspace_roots)&&n.workspace_roots.length>0){let t=n.workspace_roots[0];typeof t=="string"&&(e.cwd=t)}return e.tool_response===void 0&&n.tool_output!==void 0&&(e.tool_response=n.tool_output),e},translateOutput(n){switch(n.kind){case"block":{let e=n.event??"preToolUse";if(e==="stop")return n.systemMessage?JSON.stringify({followup_message:`${xe(n.systemMessage)} \u2014 ${n.reason}`},null,2):JSON.stringify({followup_message:n.reason},null,2);if(e==="userPromptSubmit"){let r=n.systemMessage?`${xe(n.systemMessage)} \u2014 ${xe(n.reason)}`:xe(n.reason);return JSON.stringify({continue:!1,user_message:r},null,2)}let t={permission:"deny"};return n.systemMessage?(t.user_message=xe(n.systemMessage),t.agent_message=n.reason):t.user_message=xe(n.reason),JSON.stringify(t,null,2)}case"additionalContext":{if(String(n.event??"").toLowerCase()==="pretooluse"){let t={permission:"allow",agent_message:n.context};return n.systemMessage&&(t.user_message=xe(n.systemMessage)),JSON.stringify(t,null,2)}return""}case"systemMessage":return"";case"silent":return""}}}});var Wo,Jo=$(()=>{"use strict";Wo={id:"codex",displayName:"OpenAI Codex",hookConfigPath:".codex/hooks.json",mcpConfigPath:".codex/mcp.json",rules:[{template:"codex.md",dest:".codex/rules/aide-memory.md"}],ruleFrontmatter:"",ruleNotes:"",ruleToolId:"codex",supportsHooks:!1,supportsMcp:!1,supportsRules:!1,eventNameMap:{"session-start":null,"pre-compact":null,stop:null,"pre-prompt":null,"pre-read":null,"pre-edit":null,"pre-search":null,"pre-recall":null,"post-tool-use-recall":null,"post-remember":null,"post-search":null},matcherMap:{read:null,edit:null,write:null,search:null,glob:null,"mcp-aide-recall":null,"mcp-aide-remember":null,"mcp-aide-update":null,"mcp-aide-forget":null,"mcp-aide-search":null},buildHookConfig(n){return{}},buildMcpConfig(n){return{}},detectRuntime(n){return!1},translateInput(n){return n},translateOutput(n){return""}}});var qo,Go=$(()=>{"use strict";qo={id:"copilot",displayName:"GitHub Copilot",hookConfigPath:".github/copilot/hooks.json",mcpConfigPath:".github/copilot/mcp.json",rules:[{template:"copilot.md",dest:".github/copilot-instructions.md"}],ruleFrontmatter:"",ruleNotes:"",ruleToolId:"copilot",supportsHooks:!1,supportsMcp:!1,supportsRules:!1,eventNameMap:{"session-start":null,"pre-compact":null,stop:null,"pre-prompt":null,"pre-read":null,"pre-edit":null,"pre-search":null,"pre-recall":null,"post-tool-use-recall":null,"post-remember":null,"post-search":null},matcherMap:{read:null,edit:null,write:null,search:null,glob:null,"mcp-aide-recall":null,"mcp-aide-remember":null,"mcp-aide-update":null,"mcp-aide-forget":null,"mcp-aide-search":null},buildHookConfig(n){return{}},buildMcpConfig(n){return{}},detectRuntime(n){return!1},translateInput(n){return n},translateOutput(n){return""}}});var Xo,Yo=$(()=>{"use strict";Xo={id:"windsurf",displayName:"Windsurf",hookConfigPath:".windsurf/hooks.json",mcpConfigPath:".windsurf/mcp.json",rules:[{template:"windsurf.md",dest:".windsurf/rules/aide-memory.md"}],ruleFrontmatter:"",ruleNotes:"",ruleToolId:"windsurf",supportsHooks:!1,supportsMcp:!1,supportsRules:!1,eventNameMap:{"session-start":null,"pre-compact":null,stop:null,"pre-prompt":null,"pre-read":null,"pre-edit":null,"pre-search":null,"pre-recall":null,"post-tool-use-recall":null,"post-remember":null,"post-search":null},matcherMap:{read:null,edit:null,write:null,search:null,glob:null,"mcp-aide-recall":null,"mcp-aide-remember":null,"mcp-aide-update":null,"mcp-aide-forget":null,"mcp-aide-search":null},buildHookConfig(n){return{}},buildMcpConfig(n){return{}},detectRuntime(n){return!1},translateInput(n){return n},translateOutput(n){return""}}});function Ut(){return Ht.filter(n=>n.supportsHooks)}function Hr(){return Ht.filter(n=>n.supportsMcp)}function q(){return Ht.filter(n=>n.supportsRules)}function Bt(n=process.env){for(let e of Ht)if(e.detectRuntime(n))return e;return Lt}var Ht,le=$(()=>{"use strict";Bo();Vo();Jo();Go();Yo();Ht=[Lt,Lr,Wo,qo,Xo]});var rs={};Qt(rs,{MCP_TOOLS_LIST:()=>Pe,autoUpdateIfNeeded:()=>Ha,detectContributor:()=>tt,ingestPendingMemories:()=>Ba,initProject:()=>qr,resyncDerivedArtifacts:()=>Jt});function Wt(){return R.default.resolve(__dirname,"..","..")}function Na(){let n=Wt();return n.includes("/_npx/")||n.includes("\\_npx\\")}function Qo(n,e,t,r){let o=[],s=[],i=n.hookConfigPath,a=R.default.join(e,i),c=R.default.dirname(a);b.default.existsSync(c)||b.default.mkdirSync(c,{recursive:!0});let l=Wt(),u=n.buildHookConfig({packageRoot:l}),d=r?{_aideMemoryVersion:r}:{},m=p=>{b.default.writeFileSync(a,JSON.stringify({...u,...d},null,2)+`
145
+ `,"utf8"),o.push(`${i}${p?` (${p})`:""}`)};if(!b.default.existsSync(a))return m(""),{created:o,skipped:s};let g;try{g=JSON.parse(b.default.readFileSync(a,"utf8"))}catch{return m(""),{created:o,skipped:s}}if(Ia(g,l)&&!t)return s.push(`${i} (hooks already configured)`),{created:o,skipped:s};let _=$a(g.hooks??{},u.hooks??{},l),S={...g,...u,hooks:_,...d};return b.default.writeFileSync(a,JSON.stringify(S,null,2)+`
146
+ `,"utf8"),o.push(`${i} (hooks ${t?"force-updated":"added"})`),{created:o,skipped:s}}function $a(n,e,t){let r=R.default.join(t,"scripts","hooks"),o=new Set(et.map(c=>c.script)),s=c=>{let l=u=>{if(typeof u=="string"){if(u.includes(r))return!0;for(let d of o)if(u.includes(`/${d}`)||u.endsWith(d))return!0;return!1}return Array.isArray(u)?u.some(l):u&&typeof u=="object"?Object.values(u).some(l):!1};return l(c)},i={},a=new Set([...Object.keys(n),...Object.keys(e)]);for(let c of a){let l=Array.isArray(n[c])?n[c]:[],u=Array.isArray(e[c])?e[c]:[],m=[...l.filter(g=>!s(g)),...u];m.length>0&&(i[c]=m)}return i}function Ia(n,e){let t=R.default.join(e,"scripts","hooks"),r=o=>typeof o=="string"?o.includes(t):Array.isArray(o)?o.some(r):o&&typeof o=="object"?Object.values(o).some(r):!1;return r(n.hooks)}function Zo(n,e,t){let r=[],o=[],s=R.default.join(e,n.mcpConfigPath),i=R.default.dirname(s);b.default.existsSync(i)||b.default.mkdirSync(i,{recursive:!0});let a=Wt(),c=R.default.join(a,"dist","memory","cli.js"),l=n.buildMcpConfig({serverEntry:c,projectRoot:e});if(!b.default.existsSync(s))return b.default.writeFileSync(s,JSON.stringify(l,null,2)+`
147
+ `,"utf8"),r.push(n.mcpConfigPath),{created:r,skipped:o};try{let u=JSON.parse(b.default.readFileSync(s,"utf8"));if(!!u.mcpServers?.["aide-memory"]&&!t)return o.push(`${n.mcpConfigPath} (aide-memory already configured)`),{created:r,skipped:o};u.mcpServers=u.mcpServers||{},u.mcpServers["aide-memory"]=l.mcpServers["aide-memory"],b.default.writeFileSync(s,JSON.stringify(u,null,2)+`
148
+ `,"utf8"),r.push(`${n.mcpConfigPath} (aide-memory ${t?"force-updated":"server added"})`)}catch{b.default.writeFileSync(s,JSON.stringify(l,null,2)+`
149
+ `,"utf8"),r.push(n.mcpConfigPath)}return{created:r,skipped:o}}function tt(n){try{return(0,Vr.execSync)("git rev-parse --git-dir",{cwd:n,encoding:"utf8",stdio:["pipe","pipe","pipe"]}),(0,Vr.execSync)("git config user.name",{cwd:n,encoding:"utf8",stdio:["pipe","pipe","pipe"]}).trim()||"unknown"}catch{return"unknown"}}function ja(n,e){let t=[],r=[];for(let o of Ko){let s=R.default.join(n,o);if(b.default.existsSync(s)&&!e){r.push(o);continue}b.default.mkdirSync(s,{recursive:!0}),t.push(o)}return{created:t,skipped:r}}function Wr(n,e,t){let r=[],o=[];for(let s of q())for(let i of s.rules){let a=R.default.join(n,i.dest);if(b.default.existsSync(a)&&!t){o.push(i.dest);continue}let c=R.default.dirname(a);b.default.existsSync(c)||b.default.mkdirSync(c,{recursive:!0});let l=It(s,{contributor:e,tools_list:Pe});b.default.writeFileSync(a,l,"utf8"),r.push(i.dest)}return{created:r,skipped:o}}function es(n,e){for(let[t,r]of Object.entries(e)){let o=n[t];o!=null&&typeof o=="object"&&!Array.isArray(o)&&r!==null&&typeof r=="object"&&!Array.isArray(r)?es(o,r):o===void 0&&(n[t]=r)}return n}function Jr(n){let e=R.default.join(n,".aide","config.json"),t=So(),r=Eo(t),o={};if(b.default.existsSync(e))try{o=JSON.parse(b.default.readFileSync(e,"utf8"))}catch{o={}}let s=JSON.stringify(o);es(o,r);let i=JSON.stringify(o);if(s===i)return{written:!1};let a=R.default.dirname(e);return b.default.existsSync(a)||b.default.mkdirSync(a,{recursive:!0}),b.default.writeFileSync(e,JSON.stringify(o,null,2)+`
150
+ `,"utf8"),{written:!0}}function Da(n,e){let t=R.default.join(n,".aide","config-reference.md");if(b.default.existsSync(t)&&!e)return{created:[],skipped:[".aide/config-reference.md"]};let r=_e(),o=Object.keys(r).filter(a=>r[a].public===!0).sort(),s=["# aide-memory configuration reference","","Auto-generated by `aide-memory init`. Every public setting from","`scripts/hooks/defaults.json` with its default and description.","","Override any of these with:","","```bash","aide-memory config <key> <value>","```","","Or see the live list with current values:","","```bash","aide-memory config list","```","","## Settings",""];for(let a of o){let c=r[a],l=typeof c.value=="object"?"`"+JSON.stringify(c.value)+"`":"`"+String(c.value)+"`";s.push("### `"+a+"`"),s.push(""),s.push("**Default:** "+l),s.push(""),c.description&&(s.push(c.description),s.push(""))}s.push("---"),s.push(""),s.push("_Reference regenerated at init time. If this file drifts from your installed aide-memory, re-run `aide-memory init --force` to refresh._"),s.push("");let i=R.default.dirname(t);return b.default.existsSync(i)||b.default.mkdirSync(i,{recursive:!0}),b.default.writeFileSync(t,s.join(`
151
+ `),"utf8"),{created:[".aide/config-reference.md"],skipped:[]}}function Fa(n,e,t){let r=R.default.join(n,".aide","config.json");if(b.default.existsSync(r)&&!t){let{written:i}=Jr(n);return i?{created:[".aide/config.json (public settings seeded)"],skipped:[]}:{created:[],skipped:[".aide/config.json"]}}let s=new he(n);return t&&s.reset(),s.set("contributor",e),Jr(n),{created:[".aide/config.json"],skipped:[]}}function Pa(n){let e=R.default.join(n,".gitignore"),t=[],r=[],o="";b.default.existsSync(e)&&(o=b.default.readFileSync(e,"utf8"));let s=o.split(`
152
+ `),i=[];for(let a of zo)s.some(c=>c.trim()===a)?r.push(`.gitignore entry: ${a}`):(i.push(a),t.push(`.gitignore entry: ${a}`));if(i.length>0){let c=`${o.length>0&&!o.endsWith(`
153
153
  `)?`
154
154
  `:""}
155
155
  # aide-memory
156
156
  ${i.join(`
157
157
  `)}
158
- `;y.default.writeFileSync(e,o+c,"utf8")}return{created:t,skipped:r}}function Ha(n){let e=[],t=[],r=Fr(n),o=Dr(n,r);return o.changed&&o.message?e.push(o.message):!o.changed&&r&&t.push(".ignore (aide-memory section already present)"),{created:e,skipped:t}}function ns(n,e){let t=[],r=[],o=[],s="",i=n;for(let u=0;u<20;u++){let d=R.default.join(i,".git");if(y.default.existsSync(d)&&y.default.statSync(d).isDirectory()){s=d;break}let f=R.default.dirname(i);if(f===i||i!==n&&y.default.existsSync(R.default.join(f,".aide")))break;i=f}if(!s)return o.push("No git repository found \u2014 skipping post-checkout hook"),{created:t,skipped:r,warnings:o};let a=R.default.join(s,"hooks");y.default.existsSync(a)||y.default.mkdirSync(a,{recursive:!0});let c=R.default.join(a,"post-checkout"),l=`${Br}
159
- ${Na}
160
- ${Vr}
161
- `;if(y.default.existsSync(c)){let u=y.default.readFileSync(c,"utf8");if(u.includes(Br)){if(!e)return r.push(".git/hooks/post-checkout (aide section already present)"),{created:t,skipped:r,warnings:o};let d=u.substring(0,u.indexOf(Br)),f=u.indexOf(Vr),_=f>=0?u.substring(f+Vr.length+1):"";y.default.writeFileSync(c,d+l+_,"utf8")}else{let d=u.endsWith(`
158
+ `;b.default.writeFileSync(e,o+c,"utf8")}return{created:t,skipped:r}}function La(n){let e=[],t=[],r=Dr(n),o=jr(n,r);return o.changed&&o.message?e.push(o.message):!o.changed&&r&&t.push(".ignore (aide-memory section already present)"),{created:e,skipped:t}}function ts(n,e){let t=[],r=[],o=[],s="",i=n;for(let u=0;u<20;u++){let d=R.default.join(i,".git");if(b.default.existsSync(d)&&b.default.statSync(d).isDirectory()){s=d;break}let m=R.default.dirname(i);if(m===i||i!==n&&b.default.existsSync(R.default.join(m,".aide")))break;i=m}if(!s)return o.push("No git repository found \u2014 skipping post-checkout hook"),{created:t,skipped:r,warnings:o};let a=R.default.join(s,"hooks");b.default.existsSync(a)||b.default.mkdirSync(a,{recursive:!0});let c=R.default.join(a,"post-checkout"),l=`${Ur}
159
+ ${Ma}
160
+ ${Br}
161
+ `;if(b.default.existsSync(c)){let u=b.default.readFileSync(c,"utf8");if(u.includes(Ur)){if(!e)return r.push(".git/hooks/post-checkout (aide section already present)"),{created:t,skipped:r,warnings:o};let d=u.substring(0,u.indexOf(Ur)),m=u.indexOf(Br),g=m>=0?u.substring(m+Br.length+1):"";b.default.writeFileSync(c,d+l+g,"utf8")}else{let d=u.endsWith(`
162
162
  `)?"":`
163
- `;y.default.writeFileSync(c,u+d+`
164
- `+l,"utf8")}}else y.default.writeFileSync(c,`#!/bin/bash
163
+ `;b.default.writeFileSync(c,u+d+`
164
+ `+l,"utf8")}}else b.default.writeFileSync(c,`#!/bin/bash
165
165
 
166
- `+l,"utf8");return y.default.chmodSync(c,493),t.push(".git/hooks/post-checkout"),{created:t,skipped:r,warnings:o}}async function Gr(n,e){let t=R.default.resolve(n),r=e?.force??!1,o={created:[],skipped:[],warnings:[]};if(e?.updateRules){let w=tt(t),S=Jr(t,w,!0);o.created.push(...S.created),o.skipped.push(...S.skipped);try{let p=Vt(q(),t,{contributor:w,tools_list:Pe});for(let x of p)x.written&&o.created.push(`${x.dest} (rules regenerated)`),x.budgetWarning&&o.warnings.push(x.budgetWarning)}catch(p){o.warnings.push(`rulesGen: ${p.message}`)}return o}$a()&&o.warnings.push("aide-memory is running from the npx cache. Hook and MCP paths may break if the cache is cleaned, Node version changes, or aide-memory is upgraded. For a stable install, run: npm install -g aide-memory && aide-memory init");let s=tt(t),i=Da(t,r);o.created.push(...i.created),o.skipped.push(...i.skipped);let a=Jr(t,s,r);o.created.push(...a.created),o.skipped.push(...a.skipped);let c=Wt(),l;try{l=JSON.parse(y.default.readFileSync(R.default.join(c,"package.json"),"utf8")).version}catch{}for(let w of Ut()){let S=es(w,t,r,l);o.created.push(...S.created),o.skipped.push(...S.skipped)}for(let w of Ur()){let S=ts(w,t,r);o.created.push(...S.created),o.skipped.push(...S.skipped)}let u=Pa(t,s,r);o.created.push(...u.created),o.skipped.push(...u.skipped);let d=Fa(t,r);o.created.push(...d.created),o.skipped.push(...d.skipped);let f=La(t);o.created.push(...f.created),o.skipped.push(...f.skipped);let _=Ha(t);o.created.push(..._.created),o.skipped.push(..._.skipped);let b=ns(t,r);o.created.push(...b.created),o.skipped.push(...b.skipped),o.warnings.push(...b.warnings);try{let w=Vt(q(),t,{contributor:s,tools_list:Pe});for(let S of w)S.written&&o.created.push(`${S.dest} (rules regenerated)`),S.budgetWarning&&o.warnings.push(S.budgetWarning)}catch(w){o.warnings.push(`rulesGen: ${w.message}`)}return o.warnings.push("Restart your editor (or start a fresh session) to ensure the MCP server is picked up."),y.default.existsSync(R.default.join(t,".cursor"))&&o.warnings.push("For Cursor: also enable aide-memory in Settings > MCP after restart."),o}function Jt(n){let e=[];try{let t=Fr(n),r=Dr(n,t);r.changed&&r.message&&e.push(r.message)}catch{}return e}function Ua(n,e){let t=[];try{try{let c=Jt(n);t.push(...c)}catch{}let r=!1;for(let c of Ut()){let l=R.default.join(n,c.hookConfigPath);if(!y.default.existsSync(l)){r=!0;break}try{let d=JSON.parse(y.default.readFileSync(l,"utf8"))._aideMemoryVersion;if(!d||Ba(d,e)){r=!0;break}}catch{r=!0;break}}if(!r)return t;for(let c of Ut()){let l=es(c,n,!0,e);for(let u of l.created)t.push(`${u} (auto-updated)`)}for(let c of Ur()){let l=ts(c,n,!0);t.push(...l.created)}let o=R.default.join(n,".claude","rules","aide-memory.md");if(y.default.existsSync(o)){let c=Jr(n,"",!0);t.push(...c.created)}for(let c of Qo){let l=R.default.join(n,c);y.default.existsSync(l)||(y.default.mkdirSync(l,{recursive:!0}),t.push(`${c}/ (created)`))}let s=R.default.join(n,".gitignore");if(y.default.existsSync(s)){let c=y.default.readFileSync(s,"utf8"),l=Zo.filter(u=>!c.includes(u));l.length>0&&(y.default.appendFileSync(s,`
166
+ `+l,"utf8");return b.default.chmodSync(c,493),t.push(".git/hooks/post-checkout"),{created:t,skipped:r,warnings:o}}async function qr(n,e){let t=R.default.resolve(n),r=e?.force??!1,o={created:[],skipped:[],warnings:[]};if(e?.updateRules){let _=tt(t),S=Wr(t,_,!0);o.created.push(...S.created),o.skipped.push(...S.skipped);try{let p=Vt(q(),t,{contributor:_,tools_list:Pe});for(let x of p)x.written&&o.created.push(`${x.dest} (rules regenerated)`),x.budgetWarning&&o.warnings.push(x.budgetWarning)}catch(p){o.warnings.push(`rulesGen: ${p.message}`)}return o}Na()&&o.warnings.push("aide-memory is running from the npx cache. Hook and MCP paths may break if the cache is cleaned, Node version changes, or aide-memory is upgraded. For a stable install, run: npm install -g aide-memory && aide-memory init");let s=tt(t),i=ja(t,r);o.created.push(...i.created),o.skipped.push(...i.skipped);let a=Wr(t,s,r);o.created.push(...a.created),o.skipped.push(...a.skipped);let c=Wt(),l;try{l=JSON.parse(b.default.readFileSync(R.default.join(c,"package.json"),"utf8")).version}catch{}for(let _ of Ut()){let S=Qo(_,t,r,l);o.created.push(...S.created),o.skipped.push(...S.skipped)}for(let _ of Hr()){let S=Zo(_,t,r);o.created.push(...S.created),o.skipped.push(...S.skipped)}let u=Fa(t,s,r);o.created.push(...u.created),o.skipped.push(...u.skipped);let d=Da(t,r);o.created.push(...d.created),o.skipped.push(...d.skipped);let m=Pa(t);o.created.push(...m.created),o.skipped.push(...m.skipped);let g=La(t);o.created.push(...g.created),o.skipped.push(...g.skipped);let w=ts(t,r);o.created.push(...w.created),o.skipped.push(...w.skipped),o.warnings.push(...w.warnings);try{let _=Vt(q(),t,{contributor:s,tools_list:Pe});for(let S of _)S.written&&o.created.push(`${S.dest} (rules regenerated)`),S.budgetWarning&&o.warnings.push(S.budgetWarning)}catch(_){o.warnings.push(`rulesGen: ${_.message}`)}return o.warnings.push("Restart your editor (or start a fresh session) to ensure the MCP server is picked up."),b.default.existsSync(R.default.join(t,".cursor"))&&o.warnings.push("For Cursor: also enable aide-memory in Settings > MCP after restart."),o}function Jt(n){let e=[];try{let t=Dr(n),r=jr(n,t);r.changed&&r.message&&e.push(r.message)}catch{}return e}function Ha(n,e){let t=[];try{try{let c=Jt(n);t.push(...c)}catch{}let r=!1;for(let c of Ut()){let l=R.default.join(n,c.hookConfigPath);if(!b.default.existsSync(l)){r=!0;break}try{let d=JSON.parse(b.default.readFileSync(l,"utf8"))._aideMemoryVersion;if(!d||Ua(d,e)){r=!0;break}}catch{r=!0;break}}if(!r)return t;for(let c of Ut()){let l=Qo(c,n,!0,e);for(let u of l.created)t.push(`${u} (auto-updated)`)}for(let c of Hr()){let l=Zo(c,n,!0);t.push(...l.created)}let o=R.default.join(n,".claude","rules","aide-memory.md");if(b.default.existsSync(o)){let c=Wr(n,"",!0);t.push(...c.created)}for(let c of Ko){let l=R.default.join(n,c);b.default.existsSync(l)||(b.default.mkdirSync(l,{recursive:!0}),t.push(`${c}/ (created)`))}let s=R.default.join(n,".gitignore");if(b.default.existsSync(s)){let c=b.default.readFileSync(s,"utf8"),l=zo.filter(u=>!c.includes(u));l.length>0&&(b.default.appendFileSync(s,`
167
167
  `+l.join(`
168
168
  `)+`
169
- `,"utf8"),t.push(`.gitignore (${l.length} entries added)`))}let i=ns(n,!0);i.created.length>0&&t.push(...i.created),qr(n).written&&t.push(".aide/config.json (public settings seeded)")}catch{}return t}function Ba(n,e){let t=s=>s.replace(/^v/,"").split(".").map(Number),r=t(n),o=t(e);for(let s=0;s<3;s++){if((r[s]||0)<(o[s]||0))return!0;if((r[s]||0)>(o[s]||0))return!1}return!1}function Va(n,e){let t=R.default.join(n,".aide","pending-memories.jsonl");if(!y.default.existsSync(t))return 0;let r;try{r=y.default.readFileSync(t,"utf8")}catch{return 0}let o=r.split(`
170
- `).filter(a=>a.trim().length>0);if(o.length===0){try{y.default.unlinkSync(t)}catch{}return 0}let s=0,i=[];for(let a of o)try{let c=JSON.parse(a),l=c.what??c.content;if(!c.layer||!l){i.push(a);continue}e.add({layer:c.layer,what:l,why:c.why,scope:c.scope??void 0,context_label:c.context_label,contributor:c.contributor,tags:Array.isArray(c.tags)?c.tags:void 0,source:c.source??"hook",shared:typeof c.shared=="boolean"?c.shared:void 0,priority:c.priority,generated_by:c.generated_by}),s++}catch{i.push(a)}if(s>0){let a=`${t}.imported-${Date.now()}`;try{y.default.renameSync(t,a)}catch{}}if(i.length>0)try{y.default.writeFileSync(t,i.join(`
169
+ `,"utf8"),t.push(`.gitignore (${l.length} entries added)`))}let i=ts(n,!0);i.created.length>0&&t.push(...i.created),Jr(n).written&&t.push(".aide/config.json (public settings seeded)")}catch{}return t}function Ua(n,e){let t=s=>s.replace(/^v/,"").split(".").map(Number),r=t(n),o=t(e);for(let s=0;s<3;s++){if((r[s]||0)<(o[s]||0))return!0;if((r[s]||0)>(o[s]||0))return!1}return!1}function Ba(n,e){let t=R.default.join(n,".aide","pending-memories.jsonl");if(!b.default.existsSync(t))return 0;let r;try{r=b.default.readFileSync(t,"utf8")}catch{return 0}let o=r.split(`
170
+ `).filter(a=>a.trim().length>0);if(o.length===0){try{b.default.unlinkSync(t)}catch{}return 0}let s=0,i=[];for(let a of o)try{let c=JSON.parse(a),l=c.what??c.content;if(!c.layer||!l){i.push(a);continue}e.add({layer:c.layer,what:l,why:c.why,scope:c.scope??void 0,context_label:c.context_label,contributor:c.contributor,tags:Array.isArray(c.tags)?c.tags:void 0,source:c.source??"hook",shared:typeof c.shared=="boolean"?c.shared:void 0,priority:c.priority,generated_by:c.generated_by}),s++}catch{i.push(a)}if(s>0){let a=`${t}.imported-${Date.now()}`;try{b.default.renameSync(t,a)}catch{}}if(i.length>0)try{b.default.writeFileSync(t,i.join(`
171
171
  `)+`
172
- `,"utf8")}catch{}else if(s===0)try{y.default.unlinkSync(t)}catch{}return s}var y,R,Wr,Qo,Zo,Br,Vr,Na,Pe,rt=$(()=>{"use strict";y=h(require("fs")),R=h(require("path")),Wr=require("child_process");Dt();Uo();ze();le();$r();Oe();Pr();Qo=[".aide",".aide/memories",".aide/memories/preferences",".aide/memories/preferences/personal",".aide/memories/preferences/shared",".aide/memories/technical",".aide/memories/area_context",".aide/memories/guidelines",".aide/cache"],Zo=[".aide/memories/preferences/personal/",".aide/cache/",".aide/recall-log.jsonl",".aide/pending-memories.jsonl",".cursor/rules/aide-memory.mdc"],Br="# >>> aide-memory post-checkout hook >>>",Vr="# <<< aide-memory post-checkout hook <<<",Na=`
172
+ `,"utf8")}catch{}else if(s===0)try{b.default.unlinkSync(t)}catch{}return s}var b,R,Vr,Ko,zo,Ur,Br,Ma,Pe,rt=$(()=>{"use strict";b=h(require("fs")),R=h(require("path")),Vr=require("child_process");Dt();Lo();ze();le();Nr();Oe();Fr();Ko=[".aide",".aide/memories",".aide/memories/preferences",".aide/memories/preferences/personal",".aide/memories/preferences/shared",".aide/memories/technical",".aide/memories/area_context",".aide/memories/guidelines",".aide/cache"],zo=[".aide/memories/preferences/personal/",".aide/cache/",".aide/recall-log.jsonl",".aide/pending-memories.jsonl",".cursor/rules/aide-memory.mdc"],Ur="# >>> aide-memory post-checkout hook >>>",Br="# <<< aide-memory post-checkout hook <<<",Ma=`
173
173
  # Rebuild aide-memory SQLite index from .aide/memories/ files after checkout.
174
174
  # This keeps the cached index in sync when switching branches.
175
175
  if command -v aide >/dev/null 2>&1; then
176
176
  aide reindex --quiet &
177
177
  fi
178
- `;Pe="- `aide_recall` \u2014 retrieve stored context for file paths you're about to work on\n- `aide_remember` \u2014 store discoveries, decisions, corrections, and preferences\n- `aide_update` \u2014 update an existing memory when information changes\n- `aide_forget` \u2014 remove outdated memories\n- `aide_search` \u2014 find memories by keyword\n- `aide_import` \u2014 seed knowledge from existing markdown docs\n- `aide_memories` \u2014 list all stored memories"});function Ja(n,e,t){if(!n.needsDynamicRules)return"";let{content:r}=Tt(e,t),o="";try{let a=require("os"),c=ge.resolve(Ze(),"src","cli");if(!D.existsSync(c)){let l=ge.join(Ze(),"package.json"),u=JSON.parse(D.readFileSync(l,"utf8")).version,d=ge.join(a.homedir(),".aide","update-check.json");if(D.existsSync(d)){let f=JSON.parse(D.readFileSync(d,"utf8"));if(f.latestVersion&&f.latestVersion!==u){let _=u.replace(/^v/,"").split(".").map(Number),b=f.latestVersion.replace(/^v/,"").split(".").map(Number);(b[0]>_[0]||b[0]===_[0]&&b[1]>_[1]||b[0]===_[0]&&b[1]===_[1]&&b[2]>_[2])&&(o=`
178
+ `;Pe="- `aide_recall` \u2014 retrieve stored context for file paths you're about to work on\n- `aide_remember` \u2014 store discoveries, decisions, corrections, and preferences\n- `aide_update` \u2014 update an existing memory when information changes\n- `aide_forget` \u2014 remove outdated memories\n- `aide_search` \u2014 find memories by keyword\n- `aide_import` \u2014 seed knowledge from existing markdown docs\n- `aide_memories` \u2014 list all stored memories"});function Wa(n,e,t){if(!n.needsDynamicRules)return"";let{content:r}=Tt(e,t),o="";try{let a=require("os"),c=ge.resolve(Ze(),"src","cli");if(!D.existsSync(c)){let l=ge.join(Ze(),"package.json"),u=JSON.parse(D.readFileSync(l,"utf8")).version,d=ge.join(a.homedir(),".aide","update-check.json");if(D.existsSync(d)){let m=JSON.parse(D.readFileSync(d,"utf8"));if(m.latestVersion&&m.latestVersion!==u){let g=u.replace(/^v/,"").split(".").map(Number),w=m.latestVersion.replace(/^v/,"").split(".").map(Number);(w[0]>g[0]||w[0]===g[0]&&w[1]>g[1]||w[0]===g[0]&&w[1]===g[1]&&w[2]>g[2])&&(o=`
179
179
  ## Update available
180
- aide-memory v${f.latestVersion} is available (current: v${u}). Tell the user to run \`npm update -g aide-memory\` to upgrade.
181
- `)}}}}catch{}if(!r&&!o)return"";let i=[[ss,"<!-- Content below reflects current memories + config. Do not edit by hand; -->","<!-- changes will be overwritten on the next memory / config write. -->",""].join(`
180
+ aide-memory v${m.latestVersion} is available (current: v${u}). Tell the user to run \`npm update -g aide-memory\` to upgrade.
181
+ `)}}}}catch{}if(!r&&!o)return"";let i=[[ns,"<!-- Content below reflects current memories + config. Do not edit by hand; -->","<!-- changes will be overwritten on the next memory / config write. -->",""].join(`
182
182
  `)];return r&&(i.push(`## Current memory context
183
183
  `),i.push(r)),o&&i.push(o),i.join(`
184
184
  `)+`
185
- `}function qa(n,e,t){let r={adapterId:n.id,dest:"",written:!1};if(!n.supportsRules||n.rules.length===0)return r;let o=n.rules[0];if(r.dest=o.dest,!n.needsDynamicRules)return r;let s=ge.join(e,o.dest),i=ge.dirname(s);D.existsSync(i)||D.mkdirSync(i,{recursive:!0});let a=new C({projectRoot:e}),c;try{c=Ja(n,e,a)}finally{a.close()}let l;if(D.existsSync(s)){let d=D.readFileSync(s,"utf8"),f=d.indexOf(ss);if(!c)return r;if(f===-1)l=d.replace(/\n+$/,"")+`
185
+ `}function Ja(n,e,t){let r={adapterId:n.id,dest:"",written:!1};if(!n.supportsRules||n.rules.length===0)return r;let o=n.rules[0];if(r.dest=o.dest,!n.needsDynamicRules)return r;let s=ge.join(e,o.dest),i=ge.dirname(s);D.existsSync(i)||D.mkdirSync(i,{recursive:!0});let a=new C({projectRoot:e}),c;try{c=Wa(n,e,a)}finally{a.close()}let l;if(D.existsSync(s)){let d=D.readFileSync(s,"utf8"),m=d.indexOf(ns);if(!c)return r;if(m===-1)l=d.replace(/\n+$/,"")+`
186
186
 
187
- `+c;else{let _=d.lastIndexOf(`
188
- `,f)+1;l=d.slice(0,_).replace(/\n+$/,"")+`
187
+ `+c;else{let g=d.lastIndexOf(`
188
+ `,m)+1;l=d.slice(0,g).replace(/\n+$/,"")+`
189
189
 
190
- `+c}}else{let d=jt(n,t);l=c?d+`
191
- `+c:d}let u=`${s}.tmp`;try{D.writeFileSync(u,l,"utf8"),D.renameSync(u,s),r.written=!0}catch(d){try{D.existsSync(u)&&D.unlinkSync(u)}catch{}return console.warn(`aide-memory: failed to regenerate ${o.dest}: ${d.message}`),r}if(l.length>Wa){let d=Math.round(l.length/4);r.budgetWarning=`${o.dest} is ~${d} tokens \u2014 above Cursor's ~2000-token soft cap for alwaysApply rules. Consider lowering injection.maxChars or disabling layers you don't need in SessionStart (see docs/user/editors/cursor.md).`,console.warn(`aide-memory: ${r.budgetWarning}`)}return r}function Vt(n,e,t){let r=[];for(let o of n)if(o.supportsRules)try{r.push(qa(o,e,t))}catch(s){console.warn(`aide-memory: rulesGen failed for ${o.id}: ${s.message}`),r.push({adapterId:o.id,dest:o.rules[0]?.dest??"",written:!1})}return r}function Re(n){return n?n.priority==="always"||n.layer==="preferences"||n.layer==="guidelines":!1}function oe(n,e){try{let t=tt(e)||"unknown";return Vt(n,e,{contributor:t,tools_list:Pe})}catch(t){return console.warn(`aide-memory: triggerRulesRegen failed: ${t.message}`),[]}}var D,ge,Wa,ss,Oe=$(()=>{"use strict";D=h(require("fs")),ge=h(require("path"));Y();Mr();$r();rt();Nt();Wa=8e3,ss="<!-- \u2500\u2500\u2500 AUTOGENERATED section \u2014 regenerated by aide-memory \u2500\u2500\u2500 -->"});var Sc={};Zt(Sc,{createProgram:()=>si});module.exports=er(Sc);var vn=h(En(),1),{program:Tc,createCommand:Mc,createArgument:Nc,createOption:$c,CommanderError:jc,InvalidArgumentError:Ic,InvalidOptionArgumentError:Dc,Command:kn,Argument:Fc,Option:Pc,Help:Lc}=vn.default;var Ct=h(V());Y();var Ro=h(require("fs")),xt=h(require("path"));ze();_t();var xo=["area_context","technical","preferences","guidelines"],Co=20;function Ao(n,e,t){let r=t?Number(W(t,"recall.minScopeDepth")??1):1,o=n.filter(a=>!a.scope||a.scope==="project"?!1:To(a.scope,e,{focused:!0,minScopeDepth:r})),s={},i=[];for(let a of o)s[a.layer]=(s[a.layer]||0)+1,i.push(a.id);return{memories:o,ids:i,layers:s,count:o.length}}function Oo(n,e,t,r,o){if(n)try{let s=xt.default.join(n,"recall-log.jsonl"),i={timestamp:new Date().toISOString(),query:{paths:o??e.paths??[],text:e.query??null,layers:e.layers??null,limit:e.limit??Co},matched_scopes:r,memories_returned:t.map(a=>({id:a.id,uuid:a.uuid,layer:a.layer,what:a.what,scope:a.scope,tags:a.tags,recalled_count:a.recalled_count+1})),count:t.length};Ro.default.appendFileSync(s,JSON.stringify(i)+`
192
- `)}catch{}}function To(n,e,t){if(!n||n==="project")return!0;let r=n.replace(/\\/g,"/"),o=e.replace(/\\/g,"/"),s=r.replace(/\/?\*\*\/?$/,"").replace(/\/?\*$/,"").replace(/\/$/,"");if(!s)return!0;let i=o.startsWith(s+"/")||o===s,a=s.startsWith(o.replace(/\/$/,"")+"/");if(!i&&!a)return!1;if(t?.focused&&i){let c=t.minScopeDepth??1;if(s.split("/").length<c)return!1}return!0}function ya(n,e){if(!e)return 0;let t=e.toLowerCase().split(/\s+/).filter(s=>s.length>2);if(t.length===0)return 0;let r=[n.what,n.context_label,n.why].filter(Boolean).join(" ").toLowerCase(),o=0;for(let s of t)r.includes(s)&&o++;return o/t.length}function Mo(n,e,t){let r=performance.now();Q("recall",`enter paths=${JSON.stringify(e.paths??[])} ids=${JSON.stringify(e.ids??[])} query=${JSON.stringify(e.query??"")} layers=${JSON.stringify(e.layers??[])} limit=${e.limit??"default"}`);let o=n.getProjectRoot(),s=o?W(o,"recall.limit"):null,i=o?W(o,"recall.ensureLayerDiversity")??!0:!0,a=o?W(o,"recall.layerDiversityMinLimit")??5:5,c=e.limit??s??Co,l=o?Number(W(o,"recall.minScopeDepth")??1):1,u={};e.contributor&&(u.contributor=e.contributor);let d=n.list(u),f=e.layers?d.filter(m=>e.layers.includes(m.layer)):d,_=new Set,b=e.paths?.map(m=>{if(xt.default.isAbsolute(m)&&n.getProjectRoot()){let E=xt.default.relative(n.getProjectRoot(),m),T=m.endsWith("/"),k=E!==""?E:".";return T&&!k.endsWith("/")?k+"/":k}return m});if(e.ids&&e.ids.length>0){let m=e.ids.map(T=>n.get(T)).filter(Boolean),E=m.map(T=>T.id);return E.length>0&&n.recordRecall(E),Oo(t??null,e,m,[],b),{memories:m,matched_scopes:[]}}b&&b.length>0&&(f=f.filter(m=>{for(let E of b)if(To(m.scope,E,{focused:!0,minScopeDepth:l}))return m.scope&&_.add(m.scope),!0;return!1}));let w=b?.some(m=>m.endsWith("/"))??!1,S=f.map(m=>{let E=m.scope&&m.scope!=="project"?m.scope.split("/").length:0,T=E>0?1:0;return{memory:m,isScoped:T,layerRank:xo.indexOf(m.layer),relevance:e.query?ya(m,e.query):0,scopeSpecificity:E}});S.sort((m,E)=>m.isScoped!==E.isScoped?E.isScoped-m.isScoped:m.layerRank!==E.layerRank?m.layerRank-E.layerRank:E.relevance!==m.relevance?E.relevance-m.relevance:w?m.scopeSpecificity-E.scopeSpecificity:E.scopeSpecificity-m.scopeSpecificity);let p;if(c){let m=S.slice(0,c);if(i&&c>=a){let E=new Set(m.map(k=>k.memory.layer)),T=S.slice(c);for(let k of xo)if(!E.has(k)){let ne=T.filter(J=>J.memory.layer===k);if(ne.length>0){let J=new Map;for(let O of m)J.set(O.memory.layer,(J.get(O.memory.layer)||0)+1);let de=!1;for(let O=m.length-1;O>=0;O--){let B=m[O].memory.layer;if((J.get(B)||0)>1){m[O]=ne[0],J.set(B,(J.get(B)||0)-1),E.add(k),de=!0;break}}de||(m[m.length-1]=ne[0],E.add(k))}}}p=m.map(E=>E.memory)}else p=S.map(m=>m.memory);let x=p.map(m=>m.id);return x.length>0&&n.recordRecall(x),Oo(t??null,e,p,Array.from(_),b),Q("recall",`exit candidates=${f.length} matched_scopes=${_.size} returned=${p.length} duration=${(performance.now()-r).toFixed(1)}ms`),{memories:p,matched_scopes:Array.from(_)}}var Ie=h(require("path")),Tr=h(require("fs")),Ot=h(V()),v=Ot.default.hex("#00c2cb"),ce={preferences:"Preferences",technical:"Technical Context",area_context:"Area Context",guidelines:"Guidelines"},fe=["preferences","technical","area_context","guidelines"];function ba(n){let e=Ie.default.resolve(n),t=Ie.default.parse(e).root;for(;e!==t;){if(Tr.default.existsSync(Ie.default.join(e,".aide")))return e;e=Ie.default.dirname(e)}return Tr.default.existsSync(Ie.default.join(t,".aide"))?t:null}function M(){let n=ba(process.cwd());return n||(console.error(Ot.default.red("No .aide/ directory found. Run `aide-memory init` first.")),process.exit(1)),n}function Rt(n){let e=new Map;for(let t of n)e.has(t.layer)||e.set(t.layer,[]),e.get(t.layer).push(t);return Array.from(e.entries())}function De(n){let e=` [${n.id}] ${n.what}`;return n.contributor&&(e+=v(` (from ${n.contributor})`)),n.scope&&n.scope!=="project"&&(e+=Ot.default.gray(` [${n.scope}]`)),e}function No(n){let e=M(),t=new C({projectRoot:e});try{let r=Mo(t,{paths:[n]});if(r.memories.length===0){console.log(Ct.default.gray("No memories found for this area."));return}console.log(Ct.default.white(`Recalled ${r.memories.length} memories for "${n}":
193
- `));let o=Rt(r.memories);for(let[s,i]of o){console.log(v.bold(`## ${ce[s]??s}`));for(let a of i)console.log(De(a)),a.why&&console.log(Ct.default.gray(` Why: ${a.why}`));console.log()}}finally{t.close()}}var is=h(V());Y();Oe();le();function as(n,e){fe.includes(e.layer)||(console.error(is.default.red(`Invalid layer "${e.layer}". Must be one of: ${fe.join(", ")}`)),process.exit(1));let t=M(),r=new C({projectRoot:t});try{let o=r.add({layer:e.layer,what:n,why:e.why,scope:e.scope,context_label:e.tags,contributor:e.contributor});if(console.log(v(`Stored memory (id: ${o.id}):`)),console.log(` Layer: ${o.layer}`),console.log(` What: ${o.what}`),o.scope&&console.log(` Scope: ${o.scope}`),o.why&&console.log(` Why: ${o.why}`),o.contributor&&console.log(` From: ${o.contributor}`),o.context_label&&console.log(` Tags: ${o.context_label}`),Re(o))try{oe(q(),t)}catch{}}finally{r.close()}}var nt=h(V());Y();Oe();le();function cs(n,e){let t=parseInt(n,10);isNaN(t)&&(console.error(nt.default.red(`Invalid memory ID: "${n}". Must be a number.`)),process.exit(1));let r=M(),o=new C({projectRoot:r});try{let s=o.get(t);s||(console.error(nt.default.red(`Memory ${t} not found.`)),process.exit(1));let i={};e.what!==void 0&&(i.what=e.what),e.why!==void 0&&(i.why=e.why),e.scope!==void 0&&(i.scope=e.scope),e.tags!==void 0&&(i.context_label=e.tags),Object.keys(i).length===0&&(console.error(nt.default.yellow("No changes specified. Use --what, --why, --scope, or --tags.")),process.exit(1));let a=o.update(t,i);if(a||(console.error(nt.default.red(`Failed to update memory ${t}.`)),process.exit(1)),console.log(v(`Updated memory (id: ${a.id}):`)),console.log(` Layer: ${a.layer}`),console.log(` What: ${a.what}`),a.scope&&console.log(` Scope: ${a.scope}`),a.why&&console.log(` Why: ${a.why}`),Re(s)||Re(a))try{oe(q(),r)}catch{}}finally{o.close()}}var Xr=h(V());Y();Oe();le();function ls(n){let e=parseInt(n,10);isNaN(e)&&(console.error(Xr.default.red(`Invalid memory ID: "${n}". Must be a number.`)),process.exit(1));let t=M(),r=new C({projectRoot:t});try{let o=r.get(e);if(o||(console.error(Xr.default.red(`Memory ${e} not found.`)),process.exit(1)),r.remove(e),console.log(v(`Deleted memory ${e}: "${o.what}"`)),Re(o))try{oe(q(),t)}catch{}}finally{r.close()}}var qt=h(V());Y();function us(n,e){let t=M(),r=new C({projectRoot:t});try{let o=r.search(n,{layer:e.layer,limit:e.limit?parseInt(e.limit,10):50});if(o.length===0){console.log(qt.default.gray(`No memories found matching "${n}".`));return}console.log(qt.default.white(`Found ${o.length} matching "${n}":
194
- `));let s=Rt(o);for(let[i,a]of s){console.log(v.bold(` ${ce[i]??i}`));for(let c of a)console.log(De(c)),c.why&&console.log(qt.default.gray(` Why: ${c.why}`));console.log()}}finally{r.close()}}var ot=h(V());Y();function ds(n){n.layer&&!fe.includes(n.layer)&&(console.error(ot.default.red(`Invalid layer "${n.layer}". Must be one of: ${fe.join(", ")}`)),process.exit(1));let e=M(),t=new C({projectRoot:e});try{let r=t.list({layer:n.layer,scope:n.scope,limit:n.limit?parseInt(n.limit,10):void 0});if(n.contributor&&(r=r.filter(s=>s.contributor===n.contributor)),n.tag){let s=n.tag.toLowerCase();r=r.filter(i=>i.context_label?.toLowerCase().includes(s))}if(r.length===0){console.log(ot.default.gray("No memories found."));return}let o=t.count();console.log(ot.default.white(`Showing ${r.length} of ${o} memories:
195
- `));for(let s of r){let i=De(s);i+=ot.default.gray(` | recalled ${s.recalled_count}x`),console.log(i)}}finally{t.close()}}var ps=h(V());Y();function ms(){let n=M(),e=new C({projectRoot:n});try{let t=e.count();console.log(ps.default.white.bold(`Memory Statistics
196
- `)),console.log(` Total memories: ${t}`),console.log(),console.log(v.bold(" By Layer:"));for(let a of fe){let c=e.count({layer:a});console.log(` ${ce[a]}: ${c}`)}console.log();let r=e.list(),s=[...r].sort((a,c)=>c.recalled_count-a.recalled_count).filter(a=>a.recalled_count>0).slice(0,5);if(s.length>0){console.log(v.bold(" Most Recalled:"));for(let a of s)console.log(` [${a.id}] ${a.what} (${a.recalled_count}x)`);console.log()}let i=new Map;for(let a of r)i.set(a.source,(i.get(a.source)??0)+1);if(i.size>0){console.log(v.bold(" By Source:"));for(let[a,c]of i)console.log(` ${a}: ${c}`)}}finally{e.close()}}var fs=h(require("path")),st=h(require("fs")),N=h(V());function hs(n){let e=M(),t=fs.default.join(e,".aide","recall-log.jsonl");if(n.clear){st.default.existsSync(t)?(st.default.unlinkSync(t),console.log(v("Recall log cleared."))):console.log(N.default.yellow("No recall log to clear."));return}if(!st.default.existsSync(t)){console.log(N.default.yellow("No recall log found. Recalls will be logged after the next aide_recall call.")),console.log(N.default.gray(` Expected at: ${t}`));return}let r=st.default.readFileSync(t,"utf-8").trim();if(!r){console.log(N.default.yellow("Recall log is empty."));return}let o=r.split(`
190
+ `+c}}else{let d=It(n,t);l=c?d+`
191
+ `+c:d}let u=`${s}.tmp`;try{D.writeFileSync(u,l,"utf8"),D.renameSync(u,s),r.written=!0}catch(d){try{D.existsSync(u)&&D.unlinkSync(u)}catch{}return console.warn(`aide-memory: failed to regenerate ${o.dest}: ${d.message}`),r}if(l.length>Va){let d=Math.round(l.length/4);r.budgetWarning=`${o.dest} is ~${d} tokens \u2014 above Cursor's ~2000-token soft cap for alwaysApply rules. Consider lowering injection.maxChars or disabling layers you don't need in SessionStart (see docs/user/editors/cursor.md).`,console.warn(`aide-memory: ${r.budgetWarning}`)}return r}function Vt(n,e,t){let r=[];for(let o of n)if(o.supportsRules)try{r.push(Ja(o,e,t))}catch(s){console.warn(`aide-memory: rulesGen failed for ${o.id}: ${s.message}`),r.push({adapterId:o.id,dest:o.rules[0]?.dest??"",written:!1})}return r}function Re(n){return n?n.priority==="always"||n.layer==="preferences"||n.layer==="guidelines":!1}function ne(n,e){try{let t=tt(e)||"unknown";return Vt(n,e,{contributor:t,tools_list:Pe})}catch(t){return console.warn(`aide-memory: triggerRulesRegen failed: ${t.message}`),[]}}var D,ge,Va,ns,Oe=$(()=>{"use strict";D=h(require("fs")),ge=h(require("path"));Y();Tr();Nr();rt();Nt();Va=8e3,ns="<!-- \u2500\u2500\u2500 AUTOGENERATED section \u2014 regenerated by aide-memory \u2500\u2500\u2500 -->"});var vc={};Qt(vc,{createProgram:()=>oi});module.exports=Zt(vc);var Sn=h(_n(),1),{program:Nc,createCommand:$c,createArgument:Ic,createOption:jc,CommanderError:Dc,InvalidArgumentError:Fc,InvalidOptionArgumentError:Pc,Command:En,Argument:Lc,Option:Hc,Help:Uc}=Sn.default;var Ct=h(V());Y();var xo=h(require("fs")),xt=h(require("path"));ze();wt();var vo=["area_context","technical","preferences","guidelines"],Oo=20;function Ro(n,e,t){let r=t?Number(W(t,"recall.minScopeDepth")??1):1,o=n.filter(a=>!a.scope||a.scope==="project"?!1:Co(a.scope,e,{focused:!0,minScopeDepth:r})),s={},i=[];for(let a of o)s[a.layer]=(s[a.layer]||0)+1,i.push(a.id);return{memories:o,ids:i,layers:s,count:o.length}}function ko(n,e,t,r,o){if(n)try{let s=xt.default.join(n,"recall-log.jsonl"),i={timestamp:new Date().toISOString(),query:{paths:o??e.paths??[],text:e.query??null,layers:e.layers??null,limit:e.limit??Oo},matched_scopes:r,memories_returned:t.map(a=>({id:a.id,uuid:a.uuid,layer:a.layer,what:a.what,scope:a.scope,tags:a.tags,recalled_count:a.recalled_count+1})),count:t.length};xo.default.appendFileSync(s,JSON.stringify(i)+`
192
+ `)}catch{}}function Co(n,e,t){if(!n||n==="project")return!0;let r=n.replace(/\\/g,"/"),o=e.replace(/\\/g,"/"),s=r.replace(/\/?\*\*\/?$/,"").replace(/\/?\*$/,"").replace(/\/$/,"");if(!s)return!0;let i=o.startsWith(s+"/")||o===s,a=s.startsWith(o.replace(/\/$/,"")+"/");if(!i&&!a)return!1;if(t?.focused&&i){let c=t.minScopeDepth??1;if(s.split("/").length<c)return!1}return!0}function ga(n,e){if(!e)return 0;let t=e.toLowerCase().split(/\s+/).filter(s=>s.length>2);if(t.length===0)return 0;let r=[n.what,n.context_label,n.why].filter(Boolean).join(" ").toLowerCase(),o=0;for(let s of t)r.includes(s)&&o++;return o/t.length}function Ao(n,e,t){let r=performance.now();Q("recall",`enter paths=${JSON.stringify(e.paths??[])} ids=${JSON.stringify(e.ids??[])} query=${JSON.stringify(e.query??"")} layers=${JSON.stringify(e.layers??[])} limit=${e.limit??"default"}`);let o=n.getProjectRoot(),s=o?W(o,"recall.limit"):null,i=o?W(o,"recall.ensureLayerDiversity")??!0:!0,a=o?W(o,"recall.layerDiversityMinLimit")??5:5,c=e.limit??s??Oo,l=o?Number(W(o,"recall.minScopeDepth")??1):1,u={};e.contributor&&(u.contributor=e.contributor);let d=n.list(u),m=e.layers?d.filter(f=>e.layers.includes(f.layer)):d,g=new Set,w=e.paths?.map(f=>{if(xt.default.isAbsolute(f)&&n.getProjectRoot()){let E=xt.default.relative(n.getProjectRoot(),f),T=f.endsWith("/"),k=E!==""?E:".";return T&&!k.endsWith("/")?k+"/":k}return f});if(e.ids&&e.ids.length>0){let f=e.ids.map(T=>n.get(T)).filter(Boolean),E=f.map(T=>T.id);return E.length>0&&n.recordRecall(E),ko(t??null,e,f,[],w),{memories:f,matched_scopes:[]}}w&&w.length>0&&(m=m.filter(f=>{for(let E of w)if(Co(f.scope,E,{focused:!0,minScopeDepth:l}))return f.scope&&g.add(f.scope),!0;return!1}));let _=w?.some(f=>f.endsWith("/"))??!1,S=m.map(f=>{let E=f.scope&&f.scope!=="project"?f.scope.split("/").length:0,T=E>0?1:0;return{memory:f,isScoped:T,layerRank:vo.indexOf(f.layer),relevance:e.query?ga(f,e.query):0,scopeSpecificity:E}});S.sort((f,E)=>f.isScoped!==E.isScoped?E.isScoped-f.isScoped:f.layerRank!==E.layerRank?f.layerRank-E.layerRank:E.relevance!==f.relevance?E.relevance-f.relevance:_?f.scopeSpecificity-E.scopeSpecificity:E.scopeSpecificity-f.scopeSpecificity);let p;if(c){let f=S.slice(0,c);if(i&&c>=a){let E=new Set(f.map(k=>k.memory.layer)),T=S.slice(c);for(let k of vo)if(!E.has(k)){let re=T.filter(J=>J.memory.layer===k);if(re.length>0){let J=new Map;for(let O of f)J.set(O.memory.layer,(J.get(O.memory.layer)||0)+1);let de=!1;for(let O=f.length-1;O>=0;O--){let B=f[O].memory.layer;if((J.get(B)||0)>1){f[O]=re[0],J.set(B,(J.get(B)||0)-1),E.add(k),de=!0;break}}de||(f[f.length-1]=re[0],E.add(k))}}}p=f.map(E=>E.memory)}else p=S.map(f=>f.memory);let x=p.map(f=>f.id);return x.length>0&&n.recordRecall(x),ko(t??null,e,p,Array.from(g),w),Q("recall",`exit candidates=${m.length} matched_scopes=${g.size} returned=${p.length} duration=${(performance.now()-r).toFixed(1)}ms`),{memories:p,matched_scopes:Array.from(g)}}var je=h(require("path")),Ar=h(require("fs")),Ot=h(V()),v=Ot.default.hex("#00c2cb"),ce={preferences:"Preferences",technical:"Technical Context",area_context:"Area Context",guidelines:"Guidelines"},me=["preferences","technical","area_context","guidelines"];function ya(n){let e=je.default.resolve(n),t=je.default.parse(e).root;for(;e!==t;){if(Ar.default.existsSync(je.default.join(e,".aide")))return e;e=je.default.dirname(e)}return Ar.default.existsSync(je.default.join(t,".aide"))?t:null}function M(){let n=ya(process.cwd());return n||(console.error(Ot.default.red("No .aide/ directory found. Run `aide-memory init` first.")),process.exit(1)),n}function Rt(n){let e=new Map;for(let t of n)e.has(t.layer)||e.set(t.layer,[]),e.get(t.layer).push(t);return Array.from(e.entries())}function De(n){let e=` [${n.id}] ${n.what}`;return n.contributor&&(e+=v(` (from ${n.contributor})`)),n.scope&&n.scope!=="project"&&(e+=Ot.default.gray(` [${n.scope}]`)),e}function To(n){let e=M(),t=new C({projectRoot:e});try{let r=Ao(t,{paths:[n]});if(r.memories.length===0){console.log(Ct.default.gray("No memories found for this area."));return}console.log(Ct.default.white(`Recalled ${r.memories.length} memories for "${n}":
193
+ `));let o=Rt(r.memories);for(let[s,i]of o){console.log(v.bold(`## ${ce[s]??s}`));for(let a of i)console.log(De(a)),a.why&&console.log(Ct.default.gray(` Why: ${a.why}`));console.log()}}finally{t.close()}}var os=h(V());Y();Oe();le();function ss(n,e){me.includes(e.layer)||(console.error(os.default.red(`Invalid layer "${e.layer}". Must be one of: ${me.join(", ")}`)),process.exit(1));let t=M(),r=new C({projectRoot:t});try{let o=r.add({layer:e.layer,what:n,why:e.why,scope:e.scope,context_label:e.tags,contributor:e.contributor});if(console.log(v(`Stored memory (id: ${o.id}):`)),console.log(` Layer: ${o.layer}`),console.log(` What: ${o.what}`),o.scope&&console.log(` Scope: ${o.scope}`),o.why&&console.log(` Why: ${o.why}`),o.contributor&&console.log(` From: ${o.contributor}`),o.context_label&&console.log(` Tags: ${o.context_label}`),Re(o))try{ne(q(),t)}catch{}}finally{r.close()}}var nt=h(V());Y();Oe();le();function is(n,e){let t=parseInt(n,10);isNaN(t)&&(console.error(nt.default.red(`Invalid memory ID: "${n}". Must be a number.`)),process.exit(1));let r=M(),o=new C({projectRoot:r});try{let s=o.get(t);s||(console.error(nt.default.red(`Memory ${t} not found.`)),process.exit(1));let i={};e.what!==void 0&&(i.what=e.what),e.why!==void 0&&(i.why=e.why),e.scope!==void 0&&(i.scope=e.scope),e.tags!==void 0&&(i.context_label=e.tags),Object.keys(i).length===0&&(console.error(nt.default.yellow("No changes specified. Use --what, --why, --scope, or --tags.")),process.exit(1));let a=o.update(t,i);if(a||(console.error(nt.default.red(`Failed to update memory ${t}.`)),process.exit(1)),console.log(v(`Updated memory (id: ${a.id}):`)),console.log(` Layer: ${a.layer}`),console.log(` What: ${a.what}`),a.scope&&console.log(` Scope: ${a.scope}`),a.why&&console.log(` Why: ${a.why}`),Re(s)||Re(a))try{ne(q(),r)}catch{}}finally{o.close()}}var Gr=h(V());Y();Oe();le();function as(n){let e=parseInt(n,10);isNaN(e)&&(console.error(Gr.default.red(`Invalid memory ID: "${n}". Must be a number.`)),process.exit(1));let t=M(),r=new C({projectRoot:t});try{let o=r.get(e);if(o||(console.error(Gr.default.red(`Memory ${e} not found.`)),process.exit(1)),r.remove(e),console.log(v(`Deleted memory ${e}: "${o.what}"`)),Re(o))try{ne(q(),t)}catch{}}finally{r.close()}}var qt=h(V());Y();function cs(n,e){let t=M(),r=new C({projectRoot:t});try{let o=r.search(n,{layer:e.layer,limit:e.limit?parseInt(e.limit,10):50});if(o.length===0){console.log(qt.default.gray(`No memories found matching "${n}".`));return}console.log(qt.default.white(`Found ${o.length} matching "${n}":
194
+ `));let s=Rt(o);for(let[i,a]of s){console.log(v.bold(` ${ce[i]??i}`));for(let c of a)console.log(De(c)),c.why&&console.log(qt.default.gray(` Why: ${c.why}`));console.log()}}finally{r.close()}}var ot=h(V());Y();function ls(n){n.layer&&!me.includes(n.layer)&&(console.error(ot.default.red(`Invalid layer "${n.layer}". Must be one of: ${me.join(", ")}`)),process.exit(1));let e=M(),t=new C({projectRoot:e});try{let r=t.list({layer:n.layer,scope:n.scope,limit:n.limit?parseInt(n.limit,10):void 0});if(n.contributor&&(r=r.filter(s=>s.contributor===n.contributor)),n.tag){let s=n.tag.toLowerCase();r=r.filter(i=>i.context_label?.toLowerCase().includes(s))}if(r.length===0){console.log(ot.default.gray("No memories found."));return}let o=t.count();console.log(ot.default.white(`Showing ${r.length} of ${o} memories:
195
+ `));for(let s of r){let i=De(s);i+=ot.default.gray(` | recalled ${s.recalled_count}x`),console.log(i)}}finally{t.close()}}var us=h(V());Y();function ds(){let n=M(),e=new C({projectRoot:n});try{let t=e.count();console.log(us.default.white.bold(`Memory Statistics
196
+ `)),console.log(` Total memories: ${t}`),console.log(),console.log(v.bold(" By Layer:"));for(let a of me){let c=e.count({layer:a});console.log(` ${ce[a]}: ${c}`)}console.log();let r=e.list(),s=[...r].sort((a,c)=>c.recalled_count-a.recalled_count).filter(a=>a.recalled_count>0).slice(0,5);if(s.length>0){console.log(v.bold(" Most Recalled:"));for(let a of s)console.log(` [${a.id}] ${a.what} (${a.recalled_count}x)`);console.log()}let i=new Map;for(let a of r)i.set(a.source,(i.get(a.source)??0)+1);if(i.size>0){console.log(v.bold(" By Source:"));for(let[a,c]of i)console.log(` ${a}: ${c}`)}}finally{e.close()}}var ps=h(require("path")),st=h(require("fs")),N=h(V());function fs(n){let e=M(),t=ps.default.join(e,".aide","recall-log.jsonl");if(n.clear){st.default.existsSync(t)?(st.default.unlinkSync(t),console.log(v("Recall log cleared."))):console.log(N.default.yellow("No recall log to clear."));return}if(!st.default.existsSync(t)){console.log(N.default.yellow("No recall log found. Recalls will be logged after the next aide_recall call.")),console.log(N.default.gray(` Expected at: ${t}`));return}let r=st.default.readFileSync(t,"utf-8").trim();if(!r){console.log(N.default.yellow("Recall log is empty."));return}let o=r.split(`
197
197
  `),s=n.last?parseInt(n.last,10):o.length,i=o.slice(-s).map(p=>{try{return JSON.parse(p)}catch{return null}}).filter(Boolean);if(i.length===0){console.log(N.default.yellow("No valid recall log entries found."));return}let a=i.filter(p=>!p.event),c=i.filter(p=>p.event);console.log(N.default.white.bold(`Event Log \u2014 ${i.length} event(s)
198
- `));let l=0,u=0;for(let p of i){let x=new Date(p.timestamp).toLocaleString();if(p.event&&p.memory){u++;let m=p.event==="memory_stored"?v("STORED"):p.event==="memory_updated"?N.default.yellow("UPDATED"):N.default.red("DELETED");console.log(`${m} ${N.default.gray(`(${x})`)}`),console.log(` [${p.memory.id}] ${N.default.white(p.memory.what)}`);let E=ce[p.memory.layer]??p.memory.layer;console.log(N.default.gray(` Layer: ${E} | Scope: ${p.memory.scope??"project-wide"}`)),p.memory.why&&console.log(N.default.gray(` Why: ${p.memory.why}`))}else if(p.query&&p.memories_returned)if(l++,console.log(v.bold(`\u2500\u2500 Recall #${l} `)+N.default.gray(`(${x})`)),console.log(N.default.gray(` Query paths: ${p.query.paths.length>0?p.query.paths.join(", "):"(none)"}`)),p.query.text&&console.log(N.default.gray(` Query text: ${p.query.text}`)),p.query.layers&&console.log(N.default.gray(` Layers: ${p.query.layers.join(", ")}`)),console.log(N.default.gray(` Matched scopes: ${p.matched_scopes&&p.matched_scopes.length>0?p.matched_scopes.join(", "):"(none)"}`)),console.log(),p.memories_returned.length===0)console.log(N.default.yellow(" No memories returned."));else{console.log(N.default.white(` ${p.memories_returned.length} memor${p.memories_returned.length===1?"y":"ies"} returned:`)),console.log();for(let m of p.memories_returned){let E=ce[m.layer]??m.layer;console.log(` ${v("\u2713")} [${m.id}] ${N.default.white(m.what)}`),console.log(N.default.gray(` Layer: ${E} | Scope: ${m.scope??"project-wide"} | Recalled: ${m.recalled_count}x`)),m.tags.length>0&&console.log(N.default.gray(` Tags: ${m.tags.join(", ")}`))}}console.log()}let d=a.length,f=a.reduce((p,x)=>p+(x.count??0),0),_=a.filter(p=>(p.count??0)===0).length,b=c.filter(p=>p.event==="memory_stored").length,w=c.filter(p=>p.event==="memory_updated").length,S=c.filter(p=>p.event==="memory_deleted").length;console.log(N.default.white.bold("Summary")),console.log(` Recall events: ${d}`),console.log(` Total memories returned: ${f}`),console.log(` Empty recalls (0 results): ${_}`),d>0&&console.log(` Avg memories per recall: ${(f/d).toFixed(1)}`),console.log(` Memories stored: ${b}`),console.log(` Memories updated: ${w}`),console.log(` Memories deleted: ${S}`)}var se=h(V()),Yr=h(require("path")),Le=h(require("fs"));rt();ze();Dt();Oe();le();function gs(n){return Yr.default.join(n,".aide","config.json")}function ys(n){if(!Le.default.existsSync(n))return{};let e=Le.default.readFileSync(n,"utf-8");return JSON.parse(e)}function Ga(n,e){let t=Yr.default.dirname(n);Le.default.existsSync(t)||Le.default.mkdirSync(t,{recursive:!0}),Le.default.writeFileSync(n,JSON.stringify(e,null,2)+`
199
- `)}function bs(n,e){let t=e.split("."),r=n;for(let o of t){if(r==null||typeof r!="object")return;r=r[o]}return r}function Xa(n,e,t){let r=e.split("."),o=n;for(let s=0;s<r.length-1;s++){let i=r[s];(o[i]===void 0||typeof o[i]!="object")&&(o[i]={}),o=o[i]}o[r[r.length-1]]=t}function Ya(n){if(n==="true")return!0;if(n==="false")return!1;if(n==="null")return null;let e=Number(n);if(!isNaN(e)&&n.trim()!=="")return e;let t=n.trim();if(t.startsWith("[")&&t.endsWith("]")||t.startsWith("{")&&t.endsWith("}"))try{return JSON.parse(t)}catch{}return n}function Ka(){let n=new Set;for(let r of Object.keys(we()))n.add(r);let t=[{obj:he.defaults(),prefix:""}];for(;t.length>0;){let{obj:r,prefix:o}=t.pop();if(r==null||typeof r!="object"||Array.isArray(r)){o&&n.add(o);continue}for(let[s,i]of Object.entries(r)){let a=o?`${o}.${s}`:s;i!==null&&typeof i=="object"&&!Array.isArray(i)?t.push({obj:i,prefix:a}):n.add(a)}}return Array.from(n).sort()}function za(n){let e=Ka();if(e.includes(n))return{ok:!0};let t=n.toLowerCase(),r=t.split(".")[0],o=e.filter(c=>c.toLowerCase().startsWith(r)),s=e.filter(c=>c.toLowerCase().includes(t)),i=Array.from(new Set([...o,...s])).slice(0,10),a=[];if(a.push(`Unknown config key: "${n}".`),i.length>0){a.push("Did you mean one of:");for(let c of i)a.push(` - ${c}`)}return a.push(""),a.push(`Valid keys: ${e.join(", ")}`),{ok:!1,message:a.join(`
200
- `)}}function _s(n,e){if(n==="list"&&e===void 0){Qa();return}let t=M(),r=gs(t),o=ys(r),s=za(n);if(!s.ok){console.error(se.default.red(s.message)),process.exitCode=1;return}if(e===void 0){let i=bs(o,n);console.log(i===void 0?se.default.gray("(not set)"):typeof i=="object"?JSON.stringify(i,null,2):String(i))}else{let i=Ya(e);Xa(o,n,i),Ga(r,o),console.log(v(`Set ${n} = ${JSON.stringify(i)}`)),Za(t,n,i)}}function Qa(){let n=M(),e=gs(n),t=ys(e),r=we(),o=Object.keys(r).filter(s=>r[s].public===!0).sort();if(o.length===0){console.log(se.default.gray("(no public settings registered)"));return}console.log(v("aide-memory \xB7 configurable settings")),console.log("");for(let s of o){let i=r[s],a=bs(t,s),c=a!==void 0,l=typeof i.value=="object"?JSON.stringify(i.value):String(i.value),u=c?typeof a=="object"?JSON.stringify(a):String(a):se.default.gray("(default)");if(console.log(se.default.bold(s)),console.log(` current: ${c?se.default.cyan(u):u}`),console.log(` default: ${se.default.gray(l)}`),i.description){let d=i.description.split(`
201
- `).map(f=>` ${f}`).join(`
202
- `);console.log(se.default.dim(d))}console.log("")}console.log(se.default.gray("Set a value: aide-memory config <key> <value> \u2022 Read: aide-memory config <key>"))}function Za(n,e,t){if(new Set(["memories.hideFromGrep"]).has(e)){let s=Jt(n);for(let i of s)console.log(v(i))}if(e.startsWith("injection.")||e==="memories.softening.threshold")try{let s=oe(q(),n);for(let i of s)i.written&&console.log(v(`regenerated ${i.dest}`)),i.budgetWarning&&console.warn(v(i.budgetWarning))}catch(s){console.warn(v(`rules regen skipped: ${s.message}`))}}var Gt=h(V());Y();var ie=h(require("path")),Z=h(require("fs")),ec={preferences:"preferences",technical:"technical",area_context:"area_context",guidelines:"guidelines"},it=class{constructor(e){this.store=e,this.db=e.db;let t=e.memoriesPath;if(!t)throw new Error("MemorySync requires a store in file-per-memory mode (use { projectRoot } constructor)");this.memoriesDir=t}importFromFiles(){let e={imported:0,updated:0,removed:0,conflicts:[],errors:[]},t=this.collectJsonFiles(),r=new Set;for(let s of t)if(!this.isPersonalPreference(s))try{let i=Z.default.readFileSync(s,"utf-8"),a=JSON.parse(i);if(!this.isValidMemoryFile(a)){e.errors.push(`Malformed file: ${ie.default.relative(this.memoriesDir,s)}`);continue}r.add(a.uuid);let c=this.getByUuid(a.uuid);if(c){if(c.updated_at>a.updated_at){e.conflicts.push({uuid:a.uuid,reason:"local edits would be overwritten",localUpdatedAt:c.updated_at,incomingUpdatedAt:a.updated_at});continue}if(c.updated_at===a.updated_at)continue;this.updateFromFile(c.id,a),e.updated++}else this.insertFromFile(a),e.imported++}catch(i){let a=ie.default.relative(this.memoriesDir,s);e.errors.push(`Error reading ${a}: ${i instanceof Error?i.message:String(i)}`)}let o=this.getAllUuids();for(let s of o)if(!r.has(s.uuid)){if(s.layer==="preferences"&&s.shared===0)continue;this.deleteByUuid(s.uuid),e.removed++}return e}exportToFiles(){let e={imported:0,updated:0,removed:0,conflicts:[],errors:[]},t=this.store.list();for(let r of t)try{let o=this.getMemoryFilePath(r.uuid,r.layer,r.shared);if(Z.default.existsSync(o))continue;let s=ie.default.dirname(o);Z.default.existsSync(s)||Z.default.mkdirSync(s,{recursive:!0});let i={uuid:r.uuid,layer:r.layer,what:r.what,why:r.why,scope:r.scope,context_label:r.context_label,contributor:r.contributor,tags:r.tags,source:r.source,shared:r.shared,generated_by:r.generated_by,derived_from:r.derived_from,created_at:r.created_at,updated_at:r.updated_at},a=o+".tmp";Z.default.writeFileSync(a,JSON.stringify(i,null,2)+`
203
- `,"utf-8"),Z.default.renameSync(a,o),e.imported++}catch(o){e.errors.push(`Error exporting ${r.uuid}: ${o instanceof Error?o.message:String(o)}`)}return e}syncFromGit(){let e={imported:0,updated:0,removed:0,conflicts:[],errors:[]},t=this.collectJsonFiles(),r=new Set;for(let s of t)if(!this.isPersonalPreference(s))try{let i=Z.default.readFileSync(s,"utf-8"),a=JSON.parse(i);if(!this.isValidMemoryFile(a)){e.errors.push(`Malformed file: ${ie.default.relative(this.memoriesDir,s)}`);continue}r.add(a.uuid);let c=this.getByUuid(a.uuid);c?a.updated_at>c.updated_at?(this.updateFromFile(c.id,a),e.updated++):a.updated_at<c.updated_at&&e.conflicts.push({uuid:a.uuid,reason:"local edits would be overwritten",localUpdatedAt:c.updated_at,incomingUpdatedAt:a.updated_at}):(this.insertFromFile(a),e.imported++)}catch(i){let a=ie.default.relative(this.memoriesDir,s);e.errors.push(`Error reading ${a}: ${i instanceof Error?i.message:String(i)}`)}let o=this.getAllUuids();for(let s of o)if(!r.has(s.uuid)){if(s.layer==="preferences"&&s.shared===0)continue;this.deleteByUuid(s.uuid),e.removed++}return e}getByUuid(e){return this.db.prepare("SELECT id, updated_at, layer, shared FROM memories WHERE uuid = ?").get(e)}getAllUuids(){return this.db.prepare("SELECT uuid, layer, shared FROM memories").all()}insertFromFile(e){this.db.prepare(`
198
+ `));let l=0,u=0;for(let p of i){let x=new Date(p.timestamp).toLocaleString();if(p.event&&p.memory){u++;let f=p.event==="memory_stored"?v("STORED"):p.event==="memory_updated"?N.default.yellow("UPDATED"):N.default.red("DELETED");console.log(`${f} ${N.default.gray(`(${x})`)}`),console.log(` [${p.memory.id}] ${N.default.white(p.memory.what)}`);let E=ce[p.memory.layer]??p.memory.layer;console.log(N.default.gray(` Layer: ${E} | Scope: ${p.memory.scope??"project-wide"}`)),p.memory.why&&console.log(N.default.gray(` Why: ${p.memory.why}`))}else if(p.query&&p.memories_returned)if(l++,console.log(v.bold(`\u2500\u2500 Recall #${l} `)+N.default.gray(`(${x})`)),console.log(N.default.gray(` Query paths: ${p.query.paths.length>0?p.query.paths.join(", "):"(none)"}`)),p.query.text&&console.log(N.default.gray(` Query text: ${p.query.text}`)),p.query.layers&&console.log(N.default.gray(` Layers: ${p.query.layers.join(", ")}`)),console.log(N.default.gray(` Matched scopes: ${p.matched_scopes&&p.matched_scopes.length>0?p.matched_scopes.join(", "):"(none)"}`)),console.log(),p.memories_returned.length===0)console.log(N.default.yellow(" No memories returned."));else{console.log(N.default.white(` ${p.memories_returned.length} memor${p.memories_returned.length===1?"y":"ies"} returned:`)),console.log();for(let f of p.memories_returned){let E=ce[f.layer]??f.layer;console.log(` ${v("\u2713")} [${f.id}] ${N.default.white(f.what)}`),console.log(N.default.gray(` Layer: ${E} | Scope: ${f.scope??"project-wide"} | Recalled: ${f.recalled_count}x`)),f.tags.length>0&&console.log(N.default.gray(` Tags: ${f.tags.join(", ")}`))}}console.log()}let d=a.length,m=a.reduce((p,x)=>p+(x.count??0),0),g=a.filter(p=>(p.count??0)===0).length,w=c.filter(p=>p.event==="memory_stored").length,_=c.filter(p=>p.event==="memory_updated").length,S=c.filter(p=>p.event==="memory_deleted").length;console.log(N.default.white.bold("Summary")),console.log(` Recall events: ${d}`),console.log(` Total memories returned: ${m}`),console.log(` Empty recalls (0 results): ${g}`),d>0&&console.log(` Avg memories per recall: ${(m/d).toFixed(1)}`),console.log(` Memories stored: ${w}`),console.log(` Memories updated: ${_}`),console.log(` Memories deleted: ${S}`)}var oe=h(V()),Xr=h(require("path")),Le=h(require("fs"));rt();ze();Dt();Oe();le();function ms(n){return Xr.default.join(n,".aide","config.json")}function hs(n){if(!Le.default.existsSync(n))return{};let e=Le.default.readFileSync(n,"utf-8");return JSON.parse(e)}function qa(n,e){let t=Xr.default.dirname(n);Le.default.existsSync(t)||Le.default.mkdirSync(t,{recursive:!0}),Le.default.writeFileSync(n,JSON.stringify(e,null,2)+`
199
+ `)}function gs(n,e){let t=e.split("."),r=n;for(let o of t){if(r==null||typeof r!="object")return;r=r[o]}return r}function Ga(n,e,t){let r=e.split("."),o=n;for(let s=0;s<r.length-1;s++){let i=r[s];(o[i]===void 0||typeof o[i]!="object")&&(o[i]={}),o=o[i]}o[r[r.length-1]]=t}function Xa(n){if(n==="true")return!0;if(n==="false")return!1;if(n==="null")return null;let e=Number(n);if(!isNaN(e)&&n.trim()!=="")return e;let t=n.trim();if(t.startsWith("[")&&t.endsWith("]")||t.startsWith("{")&&t.endsWith("}"))try{return JSON.parse(t)}catch{}return n}function Ya(){let n=new Set;for(let r of Object.keys(_e()))n.add(r);let t=[{obj:he.defaults(),prefix:""}];for(;t.length>0;){let{obj:r,prefix:o}=t.pop();if(r==null||typeof r!="object"||Array.isArray(r)){o&&n.add(o);continue}for(let[s,i]of Object.entries(r)){let a=o?`${o}.${s}`:s;i!==null&&typeof i=="object"&&!Array.isArray(i)?t.push({obj:i,prefix:a}):n.add(a)}}return Array.from(n).sort()}function Ka(n){let e=Ya();if(e.includes(n))return{ok:!0};let t=n.toLowerCase(),r=t.split(".")[0],o=e.filter(c=>c.toLowerCase().startsWith(r)),s=e.filter(c=>c.toLowerCase().includes(t)),i=Array.from(new Set([...o,...s])).slice(0,10),a=[];if(a.push(`Unknown config key: "${n}".`),i.length>0){a.push("Did you mean one of:");for(let c of i)a.push(` - ${c}`)}return a.push(""),a.push(`Valid keys: ${e.join(", ")}`),{ok:!1,message:a.join(`
200
+ `)}}function ys(n,e){if(n==="list"&&e===void 0){za();return}let t=M(),r=ms(t),o=hs(r),s=Ka(n);if(!s.ok){console.error(oe.default.red(s.message)),process.exitCode=1;return}if(e===void 0){let i=gs(o,n);console.log(i===void 0?oe.default.gray("(not set)"):typeof i=="object"?JSON.stringify(i,null,2):String(i))}else{let i=Xa(e);Ga(o,n,i),qa(r,o),console.log(v(`Set ${n} = ${JSON.stringify(i)}`)),Qa(t,n,i)}}function za(){let n=M(),e=ms(n),t=hs(e),r=_e(),o=Object.keys(r).filter(s=>r[s].public===!0).sort();if(o.length===0){console.log(oe.default.gray("(no public settings registered)"));return}console.log(v("aide-memory \xB7 configurable settings")),console.log("");for(let s of o){let i=r[s],a=gs(t,s),c=a!==void 0,l=typeof i.value=="object"?JSON.stringify(i.value):String(i.value),u=c?typeof a=="object"?JSON.stringify(a):String(a):oe.default.gray("(default)");if(console.log(oe.default.bold(s)),console.log(` current: ${c?oe.default.cyan(u):u}`),console.log(` default: ${oe.default.gray(l)}`),i.description){let d=i.description.split(`
201
+ `).map(m=>` ${m}`).join(`
202
+ `);console.log(oe.default.dim(d))}console.log("")}console.log(oe.default.gray("Set a value: aide-memory config <key> <value> \u2022 Read: aide-memory config <key>"))}function Qa(n,e,t){if(new Set(["memories.hideFromGrep"]).has(e)){let s=Jt(n);for(let i of s)console.log(v(i))}if(e.startsWith("injection.")||e==="memories.softening.threshold")try{let s=ne(q(),n);for(let i of s)i.written&&console.log(v(`regenerated ${i.dest}`)),i.budgetWarning&&console.warn(v(i.budgetWarning))}catch(s){console.warn(v(`rules regen skipped: ${s.message}`))}}var Gt=h(V());Y();var se=h(require("path")),Z=h(require("fs")),Za={preferences:"preferences",technical:"technical",area_context:"area_context",guidelines:"guidelines"},it=class{constructor(e){this.store=e,this.db=e.db;let t=e.memoriesPath;if(!t)throw new Error("MemorySync requires a store in file-per-memory mode (use { projectRoot } constructor)");this.memoriesDir=t}importFromFiles(){let e={imported:0,updated:0,removed:0,conflicts:[],errors:[]},t=this.collectJsonFiles(),r=new Set;for(let s of t)if(!this.isPersonalPreference(s))try{let i=Z.default.readFileSync(s,"utf-8"),a=JSON.parse(i);if(!this.isValidMemoryFile(a)){e.errors.push(`Malformed file: ${se.default.relative(this.memoriesDir,s)}`);continue}r.add(a.uuid);let c=this.getByUuid(a.uuid);if(c){if(c.updated_at>a.updated_at){e.conflicts.push({uuid:a.uuid,reason:"local edits would be overwritten",localUpdatedAt:c.updated_at,incomingUpdatedAt:a.updated_at});continue}if(c.updated_at===a.updated_at)continue;this.updateFromFile(c.id,a),e.updated++}else this.insertFromFile(a),e.imported++}catch(i){let a=se.default.relative(this.memoriesDir,s);e.errors.push(`Error reading ${a}: ${i instanceof Error?i.message:String(i)}`)}let o=this.getAllUuids();for(let s of o)if(!r.has(s.uuid)){if(s.layer==="preferences"&&s.shared===0)continue;this.deleteByUuid(s.uuid),e.removed++}return e}exportToFiles(){let e={imported:0,updated:0,removed:0,conflicts:[],errors:[]},t=this.store.list();for(let r of t)try{let o=this.getMemoryFilePath(r.uuid,r.layer,r.shared);if(Z.default.existsSync(o))continue;let s=se.default.dirname(o);Z.default.existsSync(s)||Z.default.mkdirSync(s,{recursive:!0});let i={uuid:r.uuid,layer:r.layer,what:r.what,why:r.why,scope:r.scope,context_label:r.context_label,contributor:r.contributor,tags:r.tags,source:r.source,shared:r.shared,generated_by:r.generated_by,derived_from:r.derived_from,created_at:r.created_at,updated_at:r.updated_at},a=o+".tmp";Z.default.writeFileSync(a,JSON.stringify(i,null,2)+`
203
+ `,"utf-8"),Z.default.renameSync(a,o),e.imported++}catch(o){e.errors.push(`Error exporting ${r.uuid}: ${o instanceof Error?o.message:String(o)}`)}return e}syncFromGit(){let e={imported:0,updated:0,removed:0,conflicts:[],errors:[]},t=this.collectJsonFiles(),r=new Set;for(let s of t)if(!this.isPersonalPreference(s))try{let i=Z.default.readFileSync(s,"utf-8"),a=JSON.parse(i);if(!this.isValidMemoryFile(a)){e.errors.push(`Malformed file: ${se.default.relative(this.memoriesDir,s)}`);continue}r.add(a.uuid);let c=this.getByUuid(a.uuid);c?a.updated_at>c.updated_at?(this.updateFromFile(c.id,a),e.updated++):a.updated_at<c.updated_at&&e.conflicts.push({uuid:a.uuid,reason:"local edits would be overwritten",localUpdatedAt:c.updated_at,incomingUpdatedAt:a.updated_at}):(this.insertFromFile(a),e.imported++)}catch(i){let a=se.default.relative(this.memoriesDir,s);e.errors.push(`Error reading ${a}: ${i instanceof Error?i.message:String(i)}`)}let o=this.getAllUuids();for(let s of o)if(!r.has(s.uuid)){if(s.layer==="preferences"&&s.shared===0)continue;this.deleteByUuid(s.uuid),e.removed++}return e}getByUuid(e){return this.db.prepare("SELECT id, updated_at, layer, shared FROM memories WHERE uuid = ?").get(e)}getAllUuids(){return this.db.prepare("SELECT uuid, layer, shared FROM memories").all()}insertFromFile(e){this.db.prepare(`
204
204
  INSERT INTO memories (uuid, layer, what, why, scope, context_label, contributor,
205
205
  tags, source, shared, generated_by, derived_from, created_at, updated_at,
206
206
  recalled_count, last_recalled_at)
@@ -212,24 +212,26 @@ aide-memory v${f.latestVersion} is available (current: v${u}). Tell the user to
212
212
  generated_by = ?, derived_from = ?,
213
213
  created_at = ?, updated_at = ?
214
214
  WHERE id = ?
215
- `).run(t.layer,t.what,t.why??null,t.scope??null,t.context_label??null,t.contributor,JSON.stringify(t.tags??[]),t.source??"import",t.shared?1:0,t.generated_by?JSON.stringify(t.generated_by):null,t.derived_from?JSON.stringify(t.derived_from):null,t.created_at,t.updated_at,e)}deleteByUuid(e){this.db.prepare("DELETE FROM memories WHERE uuid = ?").run(e)}isPersonalPreference(e){return ie.default.relative(this.memoriesDir,e).replace(/\\/g,"/").startsWith("preferences/personal/")}isValidMemoryFile(e){return e&&typeof e=="object"&&typeof e.uuid=="string"&&typeof e.layer=="string"&&typeof e.what=="string"&&typeof e.contributor=="string"&&typeof e.created_at=="string"&&typeof e.updated_at=="string"}getMemoryFilePath(e,t,r){let o;return t==="preferences"?o=ie.default.join("preferences",r?"shared":"personal"):o=ec[t],ie.default.join(this.memoriesDir,o,`${e}.json`)}collectJsonFiles(){if(!Z.default.existsSync(this.memoriesDir))return[];let e=[],t=r=>{if(!Z.default.existsSync(r))return;let o=Z.default.readdirSync(r,{withFileTypes:!0});for(let s of o){let i=ie.default.join(r,s.name);s.isDirectory()?t(i):s.name.endsWith(".json")&&!s.name.endsWith(".tmp")&&e.push(i)}};return t(this.memoriesDir),e}};Oe();le();function ws(n,e,t=!1){let r=[];e.imported>0&&r.push(`${e.imported} ${t?"exported":"imported"}`),e.updated>0&&r.push(`${e.updated} updated`),e.removed>0&&r.push(`${e.removed} removed`),r.length>0?console.log(v(`${n} complete: ${r.join(", ")}.`)):console.log(Gt.default.gray(`${n}: everything up to date.`));for(let o of e.conflicts)console.log(Gt.default.yellow(` Conflict: memory ${o.uuid} has local edits newer than incoming file. Keeping newer version.`));for(let o of e.errors)console.log(Gt.default.yellow(` ${o}`))}function Ss(){let n=M(),e=new C({projectRoot:n});try{let r=new it(e).importFromFiles();if(ws("Import",r),r.imported>0||r.updated>0)try{oe(q(),n)}catch{}}finally{e.close()}}function Es(){let n=M(),e=new C({projectRoot:n});try{let r=new it(e).exportToFiles();ws("Export",r,!0)}finally{e.close()}}var He=h(require("fs")),Xt=h(require("path")),Yt=h(V());function tc(n){let e=n.match(/^(\d+)\s*([smhd])$/);if(!e)throw new Error(`Invalid duration: ${n}. Use formats like "7d", "24h", "30m".`);let t=parseInt(e[1],10),r=e[2];return t*{s:1e3,m:6e4,h:36e5,d:864e5}[r]}function vs(n={}){let e=M(),t=Xt.default.join(e,".aide","cache");if(!He.default.existsSync(t)){console.log(Yt.default.gray("No cache directory \u2014 nothing to clean."));return}let r=n.all?0:tc(n.olderThan||"7d"),o=Date.now()-r,s=["recalled-paths-","searched-queries-","correction-pending-","recalled-ids-"],i=He.default.readdirSync(t),a=[];for(let c of i){if(!s.some(d=>c.startsWith(d)))continue;let l=Xt.default.join(t,c);He.default.statSync(l).mtimeMs<o&&a.push(l)}if(a.length===0){console.log(Yt.default.gray("No stale tracking files found."));return}if(n.dryRun){console.log(v(`Would delete ${a.length} stale file(s):`));for(let c of a){let l=He.default.statSync(c),u=Math.floor((Date.now()-l.mtimeMs)/36e5);console.log(Yt.default.gray(` ${Xt.default.basename(c)} (${u}h old)`))}return}for(let c of a)He.default.unlinkSync(c);console.log(v(`Cleaned up ${a.length} stale tracking file(s).`))}var Kr=h(V());function ks(){console.log(Kr.default.yellow("Migration is not yet implemented. Coming soon.")),console.log(Kr.default.gray("This command will migrate from the legacy memory.db format."))}var Ce=h(V());rt();function xs(n){let e=process.cwd();if(n.reset){let r=require("path").join(e,".aide","config.json"),o=require("fs");o.existsSync(r)&&(o.unlinkSync(r),console.log(v("Config reset to factory defaults."))),n.force=!0}let t={updateRules:n.updateRules,force:n.force};Gr(e,t).then(r=>{if(n.updateRules?console.log(v("Rules files updated.")):console.log(v("Project initialized for aide-memory.")),r.created.length>0){console.log(Ce.default.white(`
215
+ `).run(t.layer,t.what,t.why??null,t.scope??null,t.context_label??null,t.contributor,JSON.stringify(t.tags??[]),t.source??"import",t.shared?1:0,t.generated_by?JSON.stringify(t.generated_by):null,t.derived_from?JSON.stringify(t.derived_from):null,t.created_at,t.updated_at,e)}deleteByUuid(e){this.db.prepare("DELETE FROM memories WHERE uuid = ?").run(e)}isPersonalPreference(e){return se.default.relative(this.memoriesDir,e).replace(/\\/g,"/").startsWith("preferences/personal/")}isValidMemoryFile(e){return e&&typeof e=="object"&&typeof e.uuid=="string"&&typeof e.layer=="string"&&typeof e.what=="string"&&typeof e.contributor=="string"&&typeof e.created_at=="string"&&typeof e.updated_at=="string"}getMemoryFilePath(e,t,r){let o;return t==="preferences"?o=se.default.join("preferences",r?"shared":"personal"):o=Za[t],se.default.join(this.memoriesDir,o,`${e}.json`)}collectJsonFiles(){if(!Z.default.existsSync(this.memoriesDir))return[];let e=[],t=r=>{if(!Z.default.existsSync(r))return;let o=Z.default.readdirSync(r,{withFileTypes:!0});for(let s of o){let i=se.default.join(r,s.name);s.isDirectory()?t(i):s.name.endsWith(".json")&&!s.name.endsWith(".tmp")&&e.push(i)}};return t(this.memoriesDir),e}};Oe();le();function bs(n,e,t=!1){let r=[];e.imported>0&&r.push(`${e.imported} ${t?"exported":"imported"}`),e.updated>0&&r.push(`${e.updated} updated`),e.removed>0&&r.push(`${e.removed} removed`),r.length>0?console.log(v(`${n} complete: ${r.join(", ")}.`)):console.log(Gt.default.gray(`${n}: everything up to date.`));for(let o of e.conflicts)console.log(Gt.default.yellow(` Conflict: memory ${o.uuid} has local edits newer than incoming file. Keeping newer version.`));for(let o of e.errors)console.log(Gt.default.yellow(` ${o}`))}function ws(){let n=M(),e=new C({projectRoot:n});try{let r=new it(e).importFromFiles();if(bs("Import",r),r.imported>0||r.updated>0)try{ne(q(),n)}catch{}}finally{e.close()}}function _s(){let n=M(),e=new C({projectRoot:n});try{let r=new it(e).exportToFiles();bs("Export",r,!0)}finally{e.close()}}var He=h(require("fs")),Xt=h(require("path")),Yt=h(V());function ec(n){let e=n.match(/^(\d+)\s*([smhd])$/);if(!e)throw new Error(`Invalid duration: ${n}. Use formats like "7d", "24h", "30m".`);let t=parseInt(e[1],10),r=e[2];return t*{s:1e3,m:6e4,h:36e5,d:864e5}[r]}function Ss(n={}){let e=M(),t=Xt.default.join(e,".aide","cache");if(!He.default.existsSync(t)){console.log(Yt.default.gray("No cache directory \u2014 nothing to clean."));return}let r=n.all?0:ec(n.olderThan||"7d"),o=Date.now()-r,s=["recalled-paths-","searched-queries-","correction-pending-","recalled-ids-"],i=He.default.readdirSync(t),a=[];for(let c of i){if(!s.some(d=>c.startsWith(d)))continue;let l=Xt.default.join(t,c);He.default.statSync(l).mtimeMs<o&&a.push(l)}if(a.length===0){console.log(Yt.default.gray("No stale tracking files found."));return}if(n.dryRun){console.log(v(`Would delete ${a.length} stale file(s):`));for(let c of a){let l=He.default.statSync(c),u=Math.floor((Date.now()-l.mtimeMs)/36e5);console.log(Yt.default.gray(` ${Xt.default.basename(c)} (${u}h old)`))}return}for(let c of a)He.default.unlinkSync(c);console.log(v(`Cleaned up ${a.length} stale tracking file(s).`))}var Yr=h(V());function Es(){console.log(Yr.default.yellow("Migration is not yet implemented. Coming soon.")),console.log(Yr.default.gray("This command will migrate from the legacy memory.db format."))}var Ce=h(V());rt();function vs(n){let e=process.cwd();if(n.reset){let r=require("path").join(e,".aide","config.json"),o=require("fs");o.existsSync(r)&&(o.unlinkSync(r),console.log(v("Config reset to factory defaults."))),n.force=!0}let t={updateRules:n.updateRules,force:n.force};qr(e,t).then(r=>{if(n.updateRules?console.log(v("Rules files updated.")):console.log(v("Project initialized for aide-memory.")),r.created.length>0){console.log(Ce.default.white(`
216
216
  Created:`));for(let o of r.created)console.log(v(` + ${o}`))}if(r.skipped.length>0){console.log(Ce.default.gray(`
217
217
  Skipped (already exists):`));for(let o of r.skipped)console.log(Ce.default.gray(` - ${o}`))}if(r.warnings.length>0){console.log(Ce.default.yellow(`
218
- Warnings:`));for(let o of r.warnings)console.log(Ce.default.yellow(` ! ${o}`))}}).catch(r=>{console.error(Ce.default.red(`Init failed: ${r.message}`)),process.exit(1)})}var z=h(require("fs")),be=h(require("path")),Xs=require("child_process");le();async function rc(){return new Promise(n=>{let e="";process.stdin.setEncoding("utf8"),process.stdin.on("data",t=>e+=t),process.stdin.on("end",()=>n(e)),process.stdin.isTTY&&n("")})}async function Os(){let n=await rc();if(!n||!n.trim())return{};try{return JSON.parse(n)}catch{return{}}}function Rs(n){let t=Bt().translateOutput(n);t&&process.stdout.write(t)}function ee(n,e,t){Rs({kind:"additionalContext",event:n,context:e,systemMessage:t})}function Ue(n,e,t){Rs({kind:"block",reason:n,systemMessage:e,event:t})}le();_t();var P=h(require("fs")),Ds=h(require("os")),U=h(require("path"));Cr();Y();var A=h(require("fs")),Ae=h(require("path"));function Be(n){return Ae.join(n,".aide","cache")}function at(n){let e=Be(n);try{A.mkdirSync(e,{recursive:!0})}catch{}return e}function Kt(n,e){return Ae.join(Be(n),`recalled-paths-${e}.txt`)}function Cs(n,e){return Ae.join(Be(n),`searched-queries-${e}.txt`)}function zr(n,e){return Ae.join(Be(n),`correction-pending-${e}.txt`)}function As(n,e){return Ae.join(Be(n),`stop-count-${e}.txt`)}function Qr(n,e){let t=Kt(n,e);if(!A.existsSync(t))return[];try{let o=A.readFileSync(t,"utf8").split(`
219
- `).filter(i=>i.startsWith("ids|"));return o.length===0?[]:o[o.length-1].slice(4).split(",").map(i=>i.trim()).filter(Boolean)}catch{return[]}}function Zr(n,e,t){let r=Kt(n,e);if(!A.existsSync(r))return!1;try{return A.readFileSync(r,"utf8").split(`
218
+ Warnings:`));for(let o of r.warnings)console.log(Ce.default.yellow(` ! ${o}`))}}).catch(r=>{console.error(Ce.default.red(`Init failed: ${r.message}`)),process.exit(1)})}var z=h(require("fs")),be=h(require("path")),Gs=require("child_process");le();async function tc(){return new Promise(n=>{let e="";process.stdin.setEncoding("utf8"),process.stdin.on("data",t=>e+=t),process.stdin.on("end",()=>n(e)),process.stdin.isTTY&&n("")})}async function ks(){let n=await tc();if(!n||!n.trim())return{};try{return JSON.parse(n)}catch{return{}}}function xs(n){let t=Bt().translateOutput(n);t&&process.stdout.write(t)}function ue(n,e,t){xs({kind:"additionalContext",event:n,context:e,systemMessage:t})}function Ue(n,e,t){xs({kind:"block",reason:n,systemMessage:e,event:t})}le();wt();var P=h(require("fs")),js=h(require("os")),U=h(require("path"));Rr();Y();var A=h(require("fs")),Ae=h(require("path"));function Be(n){return Ae.join(n,".aide","cache")}function at(n){let e=Be(n);try{A.mkdirSync(e,{recursive:!0})}catch{}return e}function Kt(n,e){return Ae.join(Be(n),`recalled-paths-${e}.txt`)}function Os(n,e){return Ae.join(Be(n),`searched-queries-${e}.txt`)}function Kr(n,e){return Ae.join(Be(n),`correction-pending-${e}.txt`)}function Rs(n,e){return Ae.join(Be(n),`stop-count-${e}.txt`)}function zr(n,e){let t=Kt(n,e);if(!A.existsSync(t))return[];try{let o=A.readFileSync(t,"utf8").split(`
219
+ `).filter(i=>i.startsWith("ids|"));return o.length===0?[]:o[o.length-1].slice(4).split(",").map(i=>i.trim()).filter(Boolean)}catch{return[]}}function Qr(n,e,t){let r=Kt(n,e);if(!A.existsSync(r))return!1;try{return A.readFileSync(r,"utf8").split(`
220
220
  `).some(s=>s===`file|${t}`)}catch{return!1}}function ct(n,e,t,r){at(n);let o=Kt(n,e);try{A.appendFileSync(o,`${t}|${r}
221
- `)}catch{}}function en(n,e,t){at(n);let r=Kt(n,e),o=[],s=[];if(A.existsSync(r))try{let l=A.readFileSync(r,"utf8");for(let u of l.split(`
221
+ `)}catch{}}function Zr(n,e,t){at(n);let r=Kt(n,e),o=[],s=[];if(A.existsSync(r))try{let l=A.readFileSync(r,"utf8");for(let u of l.split(`
222
222
  `))u.startsWith("ids|")?s=u.slice(4).split(",").map(d=>d.trim()).filter(Boolean):u.length>0&&o.push(u)}catch{}let i=new Set([...s,...t.map(l=>l.trim()).filter(Boolean)]),a=Array.from(i).sort((l,u)=>Number(l)-Number(u)),c=o.join(`
223
223
  `)+(o.length>0?`
224
224
  `:"")+`ids|${a.join(",")}
225
- `;try{A.writeFileSync(r,c)}catch{}}function Ts(n,e,t){let r=Cs(n,e);if(!A.existsSync(r))return!1;try{return A.readFileSync(r,"utf8").split(`
226
- `).some(s=>s===t)}catch{return!1}}function Ms(n,e,t){at(n);let r=Cs(n,e);try{A.appendFileSync(r,`${t}
227
- `)}catch{}}function tn(n,e){let t=Be(n),r=[`recalled-paths-${e}.txt`,`searched-queries-${e}.txt`,`correction-pending-${e}.txt`,`compact-pending-${e}.txt`,`stop-count-${e}.txt`];for(let o of r)try{A.unlinkSync(Ae.join(t,o))}catch{}}function Ns(n,e){let t=As(n,e);if(!A.existsSync(t))return 0;try{let r=A.readFileSync(t,"utf8").trim(),o=parseInt(r,10);return Number.isFinite(o)?o:0}catch{return 0}}function $s(n,e,t){at(n);try{A.writeFileSync(As(n,e),String(t))}catch{}}function js(n,e){return A.existsSync(zr(n,e))}function zt(n,e,t){at(n);try{A.writeFileSync(zr(n,e),t)}catch{}}function rn(n,e){try{A.unlinkSync(zr(n,e))}catch{}}function nn(n){return(n||"").toLowerCase().trim()}var lt=h(require("fs")),ye=h(require("path"));Y();var on=new Set(["the","this","that","from","with","into","for","and","but","not","all","are","was","were","been","have","has","had","will","can","should","would","could","may","must","use","used","using","also","when","what","how","why","who","which","where","then","than","each","every","some","any","does","done","only","just","more","most","very","same","other","after","before","about","between","IMPORTANT","COMPLETE","DONE","TODO","NOTE","PENDING","NEW","OLD","TRUE","FALSE","YES","NO","NEVER","ALWAYS"]);function Is(n){let e={},t=n.match(/[a-zA-Z]+-[a-zA-Z]+(?:-[a-zA-Z]+)*/g)||[];for(let o of t){let s=o.toLowerCase();on.has(s)||(e[s]=(e[s]||0)+1)}let r=n.split(/[.\n]+/);for(let o of r){let s=o.trim().split(/\s+/).slice(1);for(let i of s)if(/^[A-Z][a-z]{2,}/.test(i)){let a=i.replace(/[^a-zA-Z]/g,"");a.length>2&&!on.has(a)&&!on.has(a.toUpperCase())&&(e[a]=(e[a]||0)+1)}}return e}function sn(n,e){let t=ye.join(n,".aide");if(!lt.existsSync(t))return null;let r=e.endsWith("/"),o=n,s=e;try{o=lt.realpathSync(n)}catch{}try{s=lt.realpathSync(e)}catch{}let i=e;ye.isAbsolute(s)&&s.startsWith(o)&&(i=ye.relative(o,s)),r&&!i.endsWith("/")&&(i=i+"/");let a=new C({projectRoot:n});try{let c=a.list(),l=Ao(c,i,n),u=0;for(let O of c)(!O.scope||O.scope==="project")&&u++;let d=l.memories;if(d.length===0)return null;let f=l.layers,_=l.count,b=l.ids,w=0,S=0;for(let O of d){let B=O.scope||"";B.endsWith("/")||B.endsWith("/**")||B.endsWith("/*")?S++:w++}let p=c.length,x={},m={};for(let O of d){let B=[O.what,O.why||"",O.context_label||""].join(" "),pe=Is(B);for(let[Te,Qt]of Object.entries(pe))x[Te]=(x[Te]||0)+Qt;m[O.layer]||(m[O.layer]=""),m[O.layer]+=" "+B}let E=Object.entries(x).sort((O,B)=>B[1]-O[1]).slice(0,8).map(([O])=>O),T=new Set(E),k={};for(let[O,B]of Object.entries(m)){let pe=Is(B);k[O]=Object.entries(pe).sort((Te,Qt)=>Qt[1]-Te[1]).slice(0,2).map(([Te])=>Te)}let ne=[];for(let[,O]of Object.entries(k))if(!O.some(pe=>T.has(pe))&&O.length>0)for(let pe of O)!T.has(pe)&&ne.length<2&&ne.push(pe);let J=[...E,...ne],de=null;if(i&&!i.endsWith("/")&&i.includes("/")){let O=ye.dirname(i);O&&O!=="."&&(de=O+"/")}return{count:d.length,scoped_count:_,scoped_ids:b,project_count:u,total_memories:p,layers:f,file_count:w,dir_count:S,topics:J,per_layer_topics:k,suggested_path:de}}finally{a.close()}}Mr();function te(n){return n.cwd?n.cwd:process.cwd()}function re(n){return n.session_id||"default"}var nc=kt;function Ve(n){return ue(n,"hooks.visible")!==!1}var oc="\x1B[38;2;0;194;203m",sc="\x1B[0m",K=`${oc}aide-memory \xB7 ${sc}`;function ue(n,e){let t=nc[e];if(!t)return;let r=t.value;if(t.public!==!0)return r;let o=U.join(n,".aide","config.json");if(!P.existsSync(o))return r;let s;try{s=JSON.parse(P.readFileSync(o,"utf8"))}catch{return r}let i=e.split("."),a=s;for(let c of i){if(a==null||typeof a!="object"||Array.isArray(a)||!Object.prototype.hasOwnProperty.call(a,c))return r;a=a[c]}return a}async function Fs(n){let e=n.tool_input?.file_path;if(!e||!P.existsSync(e))return;if(e.includes(".aide/memories/")){ee("PreToolUse","memory_file_direct_read: You are reading a raw memory file. Use aide_recall for structured context.");return}let t=te(n),r=re(n),o=U.isAbsolute(e)?e:U.resolve(t,e),s=ue(t,"hooks.read.maxBlocks");if(s===0||s==="0")return;let i=sn(t,o);if(!i||i.count===0||i.scoped_count===0||i.scoped_ids.length===0)return;let a=Qr(t,r),c=new Set(a.map(String)),l=[],u=0;for(let m of i.scoped_ids)c.has(String(m))?u++:l.push(String(m));let d=Zr(t,r,o);if(ct(t,r,"file",o),u===i.scoped_ids.length)return;let f=i.scoped_ids.length-u,_=Number(ue(t,"memories.softening.threshold")??10),b=i.total_memories<_,w;if(u===0){let m=Object.entries(i.layers).map(([T,k])=>`${k} ${T}`).join(", "),E=(i.topics||[]).join(", ");E?w=`${i.scoped_count} memories for ${o} (${m}) \u2014 topics: ${E}. Call aide_recall({paths: ['${o}']}).`:w=`${i.scoped_count} memories for ${o}. Call aide_recall({paths: ['${o}']}).`}else w=`${f} memories for ${o} not yet recalled. Call aide_recall({ids: [${l.join(",")}]}).`;let S=Ve(t),p=S?`${K}prompting aide_recall for scoped memories`:void 0,x=S?`${K}prompting aide_recall for scoped memories (expected flow)`:void 0;b||d?ee("PreToolUse",w,p):Ue(w,x)}async function Ps(n){let e=n.tool_input?.file_path;if(!e||!P.existsSync(e))return;let t=te(n),r=re(n),o=U.isAbsolute(e)?e:U.resolve(t,e),s=ue(t,"hooks.edit.maxBlocks");if(s===0||s==="0")return;let i=sn(t,o);if(!i||i.count===0||i.scoped_count===0||i.scoped_ids.length===0)return;let a=Qr(t,r),c=new Set(a.map(String)),l=[],u=0;for(let m of i.scoped_ids)c.has(String(m))?u++:l.push(String(m));let d=Zr(t,r,o);if(ct(t,r,"file",o),u===i.scoped_ids.length)return;let f=i.scoped_ids.length-u,_=Number(ue(t,"memories.softening.threshold")??10),b=i.total_memories<_,w;u===0?w=`${i.scoped_count} memories for ${o}. Call aide_recall({paths: ['${o}']}) before editing.`:w=`${f} memories for ${o} not yet recalled. Call aide_recall({ids: [${l.join(",")}]}) before editing.`;let S=Ve(t),p=S?`${K}prompting aide_recall for scoped memories`:void 0,x=S?`${K}prompting aide_recall for scoped memories (expected flow)`:void 0;b||d?ee("PreToolUse",w,p):Ue(w,x)}async function Ls(n){let e=n.tool_input?.pattern;if(!e)return;let t=te(n),r=re(n),o=ue(t,"hooks.search.mode");if(o==="off")return;let s=U.join(t,".aide");if(!P.existsSync(s))return;let i=0,a=[],c=new C({projectRoot:t});try{let w=c.list(),S=e.toLowerCase(),p=w.filter(x=>{let m=(x.what||"").toLowerCase(),E=(x.why||"").toLowerCase();return m.includes(S)||E.includes(S)});if(i=p.length,i===0)return;a=p.slice(0,3).map(x=>{let m=x.what||"";return m.length>30?m.slice(0,30)+"...":m})}finally{c.close()}if(i===0)return;let l=a.join(", "),u=nn(e),d=Ts(t,r,u),_=Ve(t)?`${K}prompting aide_search for "${e}" \u2014 ${i} matching ${i===1?"memory":"memories"}`:void 0;if(d){ee("PreToolUse",`${i} aide memories match '${e}' (${l}). Call aide_search({keyword: '${e}'}).`,_);return}let b=`${i} aide memories match '${e}' (${l}). Call aide_search({keyword: '${e}'}).`;o==="block"?Ue(b,_):ee("PreToolUse",b,_)}var ic=new RegExp("(no[, ]+(don'?t|do not|can'?t|won'?t|isn'?t|wasn'?t|weren'?t|shouldn'?t|didn'?t|couldn'?t|wouldn'?t|mustn'?t|haven'?t|hadn'?t|aren'?t|use|instead|that'?s wrong)|no[, ]+(we|I|it|you)\\s+(use|go with|prefer|want|need|should)|no[, ]+try\\s+.+\\s+instead|actually[, ]|wrong[, ]|not like that|use .+ instead|don'?t use|stop using|I told you|I said)","i"),ac=new RegExp("(let'?s (use|go with)|we should|go with|the approach is|decided to|decision is|we'?re going|from now on)","i"),cc=new RegExp("(I prefer|always use|never use|I like|my style is|I want you to|don'?t ever|make sure to always|I always)","i"),lc=new RegExp("^(no I mean (the|that|this|it|a|an|one|those)\\s|no (but|actually I|I think|not sure)|I don'?t (think|know|get|understand)|what I mean)","i"),an="If aide_remember / aide_update unavailable, write JSON lines to .aide/pending-memories.jsonl and tell user to start the MCP server.";async function Hs(n){let e=n.prompt||"";if(!e||e.trim().split(/\s+/).filter(Boolean).length<3||lc.test(e))return;let r=te(n),o=re(n);if(ue(r,"hooks.correction.enabled")===!1)return;let i=Ve(r);if(ic.test(e)){let a=i?`${K}correction detected \u2014 prompting aide_remember`:void 0;ee("UserPromptSubmit",`BEFORE doing anything else, store via aide_remember (or aide_update if an existing memory needs revision) \u2014 layer: preferences or technical, source: hook. ${an}`,a),zt(r,o,"correction");return}if(ac.test(e)){let a=i?`${K}decision detected \u2014 prompting aide_remember`:void 0;ee("UserPromptSubmit",`BEFORE doing anything else, store via aide_remember (or aide_update if an existing memory needs revision) \u2014 layer: area_context or technical, source: hook. ${an}`,a),zt(r,o,"decision");return}if(cc.test(e)){let a=i?`${K}preference detected \u2014 prompting aide_remember`:void 0;ee("UserPromptSubmit",`BEFORE doing anything else, store via aide_remember (or aide_update if an existing memory needs revision) \u2014 layer: preferences, source: hook. ${an}`,a),zt(r,o,"preference");return}}function uc(n){return n?typeof n=="string"?n:Array.isArray(n)?n.map(e=>typeof e=="object"&&e?.text?e.text:"").join(`
228
- `):typeof n=="object"&&n.text?n.text:"":""}async function Us(n){let e=uc(n.tool_response);if(!e)return;let t=te(n),r=re(n),o=e.match(/\[(\d+)\]/g)||[],s=Array.from(new Set(o.map(i=>i.slice(1,-1))));s.length!==0&&en(t,r,s)}var dc="Any decisions, technical constraints, preferences, or guidelines worth persisting? Call aide_remember (or aide_update if an existing memory needs revision) \u2014 cross-session context goes via these tools; plans and decisions go in project docs. If nothing, stop.",pc="A correction from this turn wasn't stored. Call aide_remember (or aide_update if an existing memory needs revision) for it. Also: any decisions, technical constraints, preferences, or guidelines worth persisting? Same tools \u2014 aide_remember / aide_update for cross-session context, project docs for plans and decisions. If nothing, stop.";async function Bs(n){if(n.stop_hook_active)return;let e=te(n),t=re(n),o=Ns(e,t)+1;$s(e,t,o);let s=Ve(e);if(js(e,t)){rn(e,t);let c=s?`${K}correction from this turn was not saved \u2014 prompting aide_remember`:void 0;Ue(pc,c,"stop");return}let i=ue(e,"hooks.stop.schedule")||[],a=!1;if(!Array.isArray(i)||i.length===0)o%5===0&&(a=!0);else{let c=0,l=!1;for(let u of i){let d=u.every??5;u.until===void 0||u.until===null?l||((o-c)%d===0&&(a=!0),l=!0):o<=u.until&&!l&&((o-c)%d===0&&(a=!0),l=!0),u.until!==void 0&&u.until!==null&&(c=u.until)}}if(a){let c=s?`${K}checkpoint \u2014 prompting aide_remember for anything critical (expected)`:void 0;Ue(dc,c,"stop")}}async function Vs(n){let e=te(n),t=re(n);ue(e,"hooks.precompact.mode")!=="off"&&tn(e,t)}async function Ws(n){let e=te(n),t=re(n),r=U.join(e,".aide");if(!P.existsSync(r))return;try{let w=U.join(e,".mcp.json");if(P.existsSync(w)){let p=JSON.parse(P.readFileSync(w,"utf8"))?.mcpServers?.["aide-memory"]?.args?.[0];if(p&&!P.existsSync(p)){let x=`aide-memory: MCP server path not found (${p}). This can happen after a Node version change or cache clean. Fix: run "npx aide-memory init" or "npm install -g aide-memory && aide-memory init"`;process.stderr.write(`[AIDE_HEALTH] ${x}
229
- `),ee("SessionStart",x);return}}}catch{}let o="",s="";try{let{findPackageRoot:w}=(Nt(),er($o)),S=w();if(!P.existsSync(U.resolve(S,"src","cli"))){let p=U.join(S,"package.json"),x=JSON.parse(P.readFileSync(p,"utf8")).version,m=U.join(Ds.homedir(),".aide","update-check.json");if(P.existsSync(m)){let E=JSON.parse(P.readFileSync(m,"utf8"));if(E.latestVersion&&E.latestVersion!==x){let T=x.replace(/^v/,"").split(".").map(Number),k=E.latestVersion.replace(/^v/,"").split(".").map(Number);(k[0]>T[0]||k[0]===T[0]&&k[1]>T[1]||k[0]===T[0]&&k[1]===T[1]&&k[2]>T[2])&&(o=`aide-memory v${E.latestVersion} is available (current: v${x}). Run \`npm update -g aide-memory\` to upgrade.`,s=`${K}update available: v${E.latestVersion}`)}}}}catch{}let i=n.source;(i==="clear"||i==="compact"||i==="resume")&&tn(e,t);let a=new C({projectRoot:e}),c="",l=[];try{let w=Tt(e,a);c=w.content,l=w.injectedIds}finally{a.close()}if(!c&&!o)return;l.length>0&&en(e,t,l.map(String));let u=Ve(e),d=l.length,f=[];u&&d>0&&f.push(`${K}injected ${d} ${d===1?"memory":"memories"} at session start`),s&&f.push(s);let _=f.length>0?f.join(`
230
- `):void 0,b=o?`${o}
225
+ `;try{A.writeFileSync(r,c)}catch{}}function Cs(n,e,t){let r=Os(n,e);if(!A.existsSync(r))return!1;try{return A.readFileSync(r,"utf8").split(`
226
+ `).some(s=>s===t)}catch{return!1}}function As(n,e,t){at(n);let r=Os(n,e);try{A.appendFileSync(r,`${t}
227
+ `)}catch{}}function en(n,e){let t=Be(n),r=[`recalled-paths-${e}.txt`,`searched-queries-${e}.txt`,`correction-pending-${e}.txt`,`compact-pending-${e}.txt`,`stop-count-${e}.txt`];for(let o of r)try{A.unlinkSync(Ae.join(t,o))}catch{}}function Ts(n,e){let t=Rs(n,e);if(!A.existsSync(t))return 0;try{let r=A.readFileSync(t,"utf8").trim(),o=parseInt(r,10);return Number.isFinite(o)?o:0}catch{return 0}}function Ms(n,e,t){at(n);try{A.writeFileSync(Rs(n,e),String(t))}catch{}}function Ns(n,e){return A.existsSync(Kr(n,e))}function $s(n,e,t){at(n);try{A.writeFileSync(Kr(n,e),t)}catch{}}function tn(n,e){try{A.unlinkSync(Kr(n,e))}catch{}}function rn(n){return(n||"").toLowerCase().trim()}var lt=h(require("fs")),ye=h(require("path"));Y();var nn=new Set(["the","this","that","from","with","into","for","and","but","not","all","are","was","were","been","have","has","had","will","can","should","would","could","may","must","use","used","using","also","when","what","how","why","who","which","where","then","than","each","every","some","any","does","done","only","just","more","most","very","same","other","after","before","about","between","IMPORTANT","COMPLETE","DONE","TODO","NOTE","PENDING","NEW","OLD","TRUE","FALSE","YES","NO","NEVER","ALWAYS"]);function Is(n){let e={},t=n.match(/[a-zA-Z]+-[a-zA-Z]+(?:-[a-zA-Z]+)*/g)||[];for(let o of t){let s=o.toLowerCase();nn.has(s)||(e[s]=(e[s]||0)+1)}let r=n.split(/[.\n]+/);for(let o of r){let s=o.trim().split(/\s+/).slice(1);for(let i of s)if(/^[A-Z][a-z]{2,}/.test(i)){let a=i.replace(/[^a-zA-Z]/g,"");a.length>2&&!nn.has(a)&&!nn.has(a.toUpperCase())&&(e[a]=(e[a]||0)+1)}}return e}function on(n,e){let t=ye.join(n,".aide");if(!lt.existsSync(t))return null;let r=e.endsWith("/"),o=n,s=e;try{o=lt.realpathSync(n)}catch{}try{s=lt.realpathSync(e)}catch{}let i=e;ye.isAbsolute(s)&&s.startsWith(o)&&(i=ye.relative(o,s)),r&&!i.endsWith("/")&&(i=i+"/");let a=new C({projectRoot:n});try{let c=a.list(),l=Ro(c,i,n),u=0;for(let O of c)(!O.scope||O.scope==="project")&&u++;let d=l.memories;if(d.length===0)return null;let m=l.layers,g=l.count,w=l.ids,_=0,S=0;for(let O of d){let B=O.scope||"";B.endsWith("/")||B.endsWith("/**")||B.endsWith("/*")?S++:_++}let p=c.length,x={},f={};for(let O of d){let B=[O.what,O.why||"",O.context_label||""].join(" "),pe=Is(B);for(let[Te,zt]of Object.entries(pe))x[Te]=(x[Te]||0)+zt;f[O.layer]||(f[O.layer]=""),f[O.layer]+=" "+B}let E=Object.entries(x).sort((O,B)=>B[1]-O[1]).slice(0,8).map(([O])=>O),T=new Set(E),k={};for(let[O,B]of Object.entries(f)){let pe=Is(B);k[O]=Object.entries(pe).sort((Te,zt)=>zt[1]-Te[1]).slice(0,2).map(([Te])=>Te)}let re=[];for(let[,O]of Object.entries(k))if(!O.some(pe=>T.has(pe))&&O.length>0)for(let pe of O)!T.has(pe)&&re.length<2&&re.push(pe);let J=[...E,...re],de=null;if(i&&!i.endsWith("/")&&i.includes("/")){let O=ye.dirname(i);O&&O!=="."&&(de=O+"/")}return{count:d.length,scoped_count:g,scoped_ids:w,project_count:u,total_memories:p,layers:m,file_count:_,dir_count:S,topics:J,per_layer_topics:k,suggested_path:de}}finally{a.close()}}Tr();function ee(n){return n.cwd?n.cwd:process.cwd()}function te(n){return n.session_id||"default"}var rc=kt;function Ve(n){return K(n,"hooks.visible")!==!1}var nc="\x1B[38;2;0;194;203m",oc="\x1B[0m",ie=`${nc}aide-memory \xB7 ${oc}`;function K(n,e){let t=rc[e];if(!t)return;let r=t.value;if(t.public!==!0)return r;let o=U.join(n,".aide","config.json");if(!P.existsSync(o))return r;let s;try{s=JSON.parse(P.readFileSync(o,"utf8"))}catch{return r}let i=e.split("."),a=s;for(let c of i){if(a==null||typeof a!="object"||Array.isArray(a)||!Object.prototype.hasOwnProperty.call(a,c))return r;a=a[c]}return a}async function Ds(n){let e=n.tool_input?.file_path;if(!e||!P.existsSync(e))return;if(e.includes(".aide/memories/")){ue("PreToolUse","memory_file_direct_read: You are reading a raw memory file. Use aide_recall for structured context.");return}let t=ee(n),r=te(n),o=U.isAbsolute(e)?e:U.resolve(t,e),s=K(t,"hooks.read.maxBlocks");if(s===0||s==="0")return;let i=on(t,o);if(!i||i.count===0||i.scoped_count===0||i.scoped_ids.length===0)return;let a=zr(t,r),c=new Set(a.map(String)),l=[],u=0;for(let f of i.scoped_ids)c.has(String(f))?u++:l.push(String(f));let d=Qr(t,r,o);if(ct(t,r,"file",o),u===i.scoped_ids.length)return;let m=i.scoped_ids.length-u,g=Number(K(t,"memories.softening.threshold")??10),w=i.total_memories<g,_;if(u===0){let f=Object.entries(i.layers).map(([T,k])=>`${k} ${T}`).join(", "),E=(i.topics||[]).join(", ");E?_=`${i.scoped_count} memories for ${o} (${f}) \u2014 topics: ${E}. Call aide_recall({paths: ['${o}']}).`:_=`${i.scoped_count} memories for ${o}. Call aide_recall({paths: ['${o}']}).`}else _=`${m} memories for ${o} not yet recalled. Call aide_recall({ids: [${l.join(",")}]}).`;let S=Ve(t),p=S?`${ie}prompting aide_recall \u2014 additional scoped memories not yet recalled`:void 0,x=S?`${ie}prompting aide_recall \u2014 scoped memories not recalled yet (expected flow)`:void 0;w||d?ue("PreToolUse",_,p):Ue(_,x)}async function Fs(n){let e=n.tool_input?.file_path;if(!e||!P.existsSync(e))return;let t=ee(n),r=te(n),o=U.isAbsolute(e)?e:U.resolve(t,e),s=K(t,"hooks.edit.maxBlocks");if(s===0||s==="0")return;let i=on(t,o);if(!i||i.count===0||i.scoped_count===0||i.scoped_ids.length===0)return;let a=zr(t,r),c=new Set(a.map(String)),l=[],u=0;for(let f of i.scoped_ids)c.has(String(f))?u++:l.push(String(f));let d=Qr(t,r,o);if(ct(t,r,"file",o),u===i.scoped_ids.length)return;let m=i.scoped_ids.length-u,g=Number(K(t,"memories.softening.threshold")??10),w=i.total_memories<g,_;u===0?_=`${i.scoped_count} memories for ${o}. Call aide_recall({paths: ['${o}']}) before editing.`:_=`${m} memories for ${o} not yet recalled. Call aide_recall({ids: [${l.join(",")}]}) before editing.`;let S=Ve(t),p=S?`${ie}prompting aide_recall \u2014 additional scoped memories not yet recalled`:void 0,x=S?`${ie}prompting aide_recall \u2014 scoped memories not recalled yet (expected flow)`:void 0;w||d?ue("PreToolUse",_,p):Ue(_,x)}async function Ps(n){let e=n.tool_input?.pattern;if(!e)return;let t=ee(n),r=te(n),o=K(t,"hooks.search.mode");if(o==="off")return;let s=U.join(t,".aide");if(!P.existsSync(s))return;let i=0,a=[],c=new C({projectRoot:t});try{let _=c.list(),S=e.toLowerCase(),p=_.filter(x=>{let f=(x.what||"").toLowerCase(),E=(x.why||"").toLowerCase();return f.includes(S)||E.includes(S)});if(i=p.length,i===0)return;a=p.slice(0,3).map(x=>{let f=x.what||"";return f.length>30?f.slice(0,30)+"...":f})}finally{c.close()}if(i===0)return;let l=a.join(", "),u=rn(e),d=Cs(t,r,u),g=Ve(t)?`${ie}prompting aide_search for "${e}" \u2014 ${i} matching ${i===1?"memory":"memories"}`:void 0;if(d){ue("PreToolUse",`${i} aide memories match '${e}' (${l}). Call aide_search({keyword: '${e}'}).`,g);return}let w=`${i} aide memories match '${e}' (${l}). Call aide_search({keyword: '${e}'}).`;o==="block"?Ue(w,g):ue("PreToolUse",w,g)}var sc=new RegExp("(no[, ]+(don'?t|do not|can'?t|won'?t|isn'?t|wasn'?t|weren'?t|shouldn'?t|didn'?t|couldn'?t|wouldn'?t|mustn'?t|haven'?t|hadn'?t|aren'?t|use|instead|that'?s wrong)|no[, ]+(we|I|it|you)\\s+(use|go with|prefer|want|need|should)|no[, ]+try\\s+.+\\s+instead|actually[, ]|wrong[, ]|not like that|use .+ instead|don'?t use|stop using|I told you|I said)","i"),ic=new RegExp("(let'?s (use|go with)|we should|go with|the approach is|decided to|decision is|we'?re going|from now on)","i"),ac=new RegExp("(I prefer|always use|never use|I like|my style is|I want you to|don'?t ever|make sure to always|I always)","i"),cc=new RegExp("^(no I mean (the|that|this|it|a|an|one|those)\\s|no (but|actually I|I think|not sure)|I don'?t (think|know|get|understand)|what I mean)","i"),lc=new RegExp("(correction (prompt|regex|pattern|hook|flag|detection)|matched correction|hooks?\\.correction|correction[- ]pending)","i");function uc(n){let e=n.replace(/```[\s\S]*?```/g,"");return e=e.replace(/`[^`\n]*`/g,""),e=e.split(`
228
+ `).filter(t=>!/^\s*["'`]/.test(t)).join(`
229
+ `),e}var dc="Your prompt may contain a correction or convention worth persisting. If something here applies to future work in this project \u2014 across preferences (how you work), technical (stack facts, why-decisions), area_context (decisions for this code area), or guidelines (team rules) \u2014 call aide_remember on the matching layer. Otherwise respond as normal.";async function Ls(n){let e=n.prompt||"";if(!e||e.trim().split(/\s+/).filter(Boolean).length<3||cc.test(e)||lc.test(e))return;let r=ee(n),o=te(n);if(K(r,"hooks.correction.enabled")===!1)return;let i=uc(e),a=null;if(sc.test(i)?a="correction":ic.test(i)?a="decision":ac.test(i)&&(a="preference"),!a)return;let l=Ve(r)?`${ie}possible ${a} detected \u2014 consider aide_remember`:void 0;ue("UserPromptSubmit",dc,l);let u=K(r,"hooks.correction.escalate");(u==="soft"||u==="block")&&$s(r,o,a)}function pc(n){return n?typeof n=="string"?n:Array.isArray(n)?n.map(e=>typeof e=="object"&&e?.text?e.text:"").join(`
230
+ `):typeof n=="object"&&n.text?n.text:"":""}async function Hs(n){let e=pc(n.tool_response);if(!e)return;let t=ee(n),r=te(n),o=e.match(/\[(\d+)\]/g)||[],s=Array.from(new Set(o.map(i=>i.slice(1,-1))));s.length!==0&&Zr(t,r,s)}var fc="Anything from this turn worth persisting for future sessions in this project? Could touch preferences, technical, area_context, or guidelines. If yes, call aide_remember on the matching layer. Otherwise stop.",mc="A correction or convention from this turn was detected but no memory was stored. If it applies to future work \u2014 preferences, technical, area_context, or guidelines \u2014 call aide_remember on the matching layer. Otherwise stop.";async function Us(n){if(n.stop_hook_active)return;let e=ee(n),t=te(n),o=Ts(e,t)+1;Ms(e,t,o);let s=Ve(e),i=K(e,"hooks.correction.escalate"),a=K(e,"hooks.stop.mode");if(Ns(e,t)&&(tn(e,t),i==="block")){let d=s?`${ie}correction from this turn not yet stored \u2014 prompting aide_remember`:void 0;Ue(mc,d,"stop");return}if(a==="off")return;let c=K(e,"hooks.stop.schedule")||[],l=!1;if(!Array.isArray(c)||c.length===0)o%5===0&&(l=!0);else{let d=0,m=!1;for(let g of c){let w=g.every??5;g.until===void 0||g.until===null?m||((o-d)%w===0&&(l=!0),m=!0):o<=g.until&&!m&&((o-d)%w===0&&(l=!0),m=!0),g.until!==void 0&&g.until!==null&&(d=g.until)}}if(!l)return;let u=s?`${ie}checkpoint \u2014 anything worth remembering?`:void 0;Ue(fc,u,"stop")}async function Bs(n){let e=ee(n),t=te(n);K(e,"hooks.precompact.mode")!=="off"&&en(e,t)}async function Vs(n){let e=ee(n),t=te(n),r=U.join(e,".aide");if(!P.existsSync(r))return;try{let _=U.join(e,".mcp.json");if(P.existsSync(_)){let p=JSON.parse(P.readFileSync(_,"utf8"))?.mcpServers?.["aide-memory"]?.args?.[0];if(p&&!P.existsSync(p)){let x=`aide-memory: MCP server path not found (${p}). This can happen after a Node version change or cache clean. Fix: run "npx aide-memory init" or "npm install -g aide-memory && aide-memory init"`;process.stderr.write(`[AIDE_HEALTH] ${x}
231
+ `),ue("SessionStart",x);return}}}catch{}let o="",s="";try{let{findPackageRoot:_}=(Nt(),Zt(Mo)),S=_();if(!P.existsSync(U.resolve(S,"src","cli"))){let p=U.join(S,"package.json"),x=JSON.parse(P.readFileSync(p,"utf8")).version,f=U.join(js.homedir(),".aide","update-check.json");if(P.existsSync(f)){let E=JSON.parse(P.readFileSync(f,"utf8"));if(E.latestVersion&&E.latestVersion!==x){let T=x.replace(/^v/,"").split(".").map(Number),k=E.latestVersion.replace(/^v/,"").split(".").map(Number);(k[0]>T[0]||k[0]===T[0]&&k[1]>T[1]||k[0]===T[0]&&k[1]===T[1]&&k[2]>T[2])&&(o=`aide-memory v${E.latestVersion} is available (current: v${x}). Run \`npm update -g aide-memory\` to upgrade.`,s=`${ie}update available: v${E.latestVersion}`)}}}}catch{}let i=n.source;if(i==="resume")return;(i==="clear"||i==="compact")&&en(e,t);let a=new C({projectRoot:e}),c="",l=[];try{let _=Tt(e,a);c=_.content,l=_.injectedIds}finally{a.close()}if(!c&&!o)return;l.length>0&&Zr(e,t,l.map(String));let u=Ve(e),d=l.length,m=[];u&&d>0&&m.push(`${ie}injected ${d} ${d===1?"memory":"memories"} at session start`),s&&m.push(s);let g=m.length>0?m.join(`
232
+ `):void 0,w=o?`${o}
231
233
 
232
- ${c}`:c;ee("SessionStart",b,_)}async function Js(n){let e=n.tool_input?.paths;if(!e||!Array.isArray(e)||e.length===0)return;let t=te(n),r=re(n);for(let o of e){let s=U.isAbsolute(o)?o:U.join(t,o),i=s.endsWith("/"),a=s.endsWith("/**"),c=s.endsWith("/*"),l=!1,u=s;if(i)l=!0;else if(a)l=!0,u=s.slice(0,-3);else if(c)l=!0,u=s.slice(0,-2);else try{P.statSync(s).isDirectory()&&(l=!0)}catch{}l?(u.endsWith("/")||(u=u+"/"),ct(t,r,"dir",u)):ct(t,r,"file",s)}}async function qs(n){let e=te(n),t=re(n);rn(e,t)}async function Gs(n){let e=n.tool_input?.keyword;if(!e)return;let t=te(n),r=re(n),o=nn(e);Ms(t,r,o)}function mc(n){try{let e=n.cwd;if(!e)return;let t=be.join(e,".aide","config.json"),r=be.join(e,".aide","cache","config-mtime.txt");if(!z.existsSync(t))return;let o=String(z.statSync(t).mtimeMs),s="";try{s=z.readFileSync(r,"utf8").trim()}catch{}if(o===s)return;z.mkdirSync(be.dirname(r),{recursive:!0}),z.writeFileSync(r,o,"utf8");try{let i=process.argv[1]&&/aide-memory(?:\.js)?$/.test(process.argv[1])?process.argv[1]:be.resolve(__dirname,"..","..","cli","aide-memory.js");if(!z.existsSync(i)){let c=be.resolve(__dirname,"..","..","cli","aide-memory.js");z.existsSync(c)&&(i=c)}(0,Xs.spawn)(process.execPath,[i,"internal-resync",e],{detached:!0,stdio:"ignore",cwd:e}).unref()}catch{}}catch{}}var fc={"pre-read":Fs,"pre-edit":Ps,"pre-search":Ls,"pre-prompt":Hs,"post-tool-use-recall":Us,stop:Bs,"pre-compact":Vs,"session-start":Ws,"pre-recall":Js,"post-remember":qs,"post-search":Gs};async function Ys(n){let e=fc[n];if(!e){_e(`aide-memory hook: unknown event "${n}"`,"check .claude/settings.json or .cursor/hooks.json command lines");return}let t=performance.now();try{let r=await Os(),o=Bt(),s=o.translateInput(r);if(mc(s),Q("hooks",`enter hook=${n} adapter=${o.id} cwd=${s.cwd??""} session=${s.session_id??""} file=${s.tool_input?.file_path??""}`),so("hooks")){let i=process.stdout.write.bind(process.stdout),a="";process.stdout.write=(c,...l)=>{try{a+=typeof c=="string"?c:String(c)}catch{}return i(c,...l)};try{await e(s)}finally{process.stdout.write=i,Q("hooks",`exit hook=${n} duration=${(performance.now()-t).toFixed(1)}ms stdout-len=${a.length} stdout-head=${JSON.stringify(a.slice(0,200))}`)}}else await e(s),Q("hooks",`exit hook=${n} duration=${(performance.now()-t).toFixed(1)}ms`)}catch(r){let o=r,s=o?.message??String(r);/NODE_MODULE_VERSION|node-loader|wrong ELF class|invalid ELF header|dlopen/i.test(s)?_e(`aide-memory hook=${n}: native binding load failed (${s})`,"reinstall aide-memory or run `npm rebuild libsql` in the install dir"):/ENOENT|MODULE_NOT_FOUND/i.test(s)?_e(`aide-memory hook=${n}: missing file/module (${s})`,"reinstall aide-memory \u2014 dist/ may be incomplete"):_e(`aide-memory hook=${n} threw: ${s}`),Q("hooks",`error hook=${n} duration=${(performance.now()-t).toFixed(1)}ms class=${o?.name??"Error"}`)}}async function Ks(n){await Ys(n),process.exit(0)}var ni=h(require("fs")),oi=h(require("path"));var Qs=h(require("https")),We=h(require("fs")),cn=h(require("path")),Zs=h(require("os")),hc="https://registry.npmjs.org/aide-memory/latest",gc=1440*60*1e3;function ei(){return cn.default.join(Zs.default.homedir(),".aide","update-check.json")}function yc(){let n=ei();try{if(!We.default.existsSync(n))return null;let e=We.default.readFileSync(n,"utf-8");return JSON.parse(e)}catch{return null}}function bc(n){let e=ei();try{let t=cn.default.dirname(e);We.default.existsSync(t)||We.default.mkdirSync(t,{recursive:!0}),We.default.writeFileSync(e,JSON.stringify(n),"utf-8")}catch{}}function _c(){return new Promise(n=>{let e=Qs.default.get(hc,{timeout:5e3},t=>{if(t.statusCode!==200){t.resume(),n(null);return}let r="";t.on("data",o=>{r+=o.toString()}),t.on("end",()=>{try{let o=JSON.parse(r);n(o.version??null)}catch{n(null)}})});e.on("error",()=>n(null)),e.on("timeout",()=>{e.destroy(),n(null)})})}function zs(n,e){let t=s=>{let i=s.replace(/^v/,"").split(".").map(Number);return{major:i[0]||0,minor:i[1]||0,patch:i[2]||0}},r=t(n),o=t(e);return o.major!==r.major?o.major>r.major:o.minor!==r.minor?o.minor>r.minor:o.patch>r.patch}function wc(){try{if(process.env.AIDE_MEMORY_FORCE_REGISTRY_CHECK==="1")return!1;let n=require("fs"),t=require("path").resolve(__dirname,"..","..","src","cli");return n.existsSync(t)}catch{return!1}}async function ti(n){if(wc())return null;try{let e=yc();if(e&&Date.now()-e.lastCheck<gc)return e.latestVersion&&zs(n,e.latestVersion)?e.latestVersion:null;let t=await _c();return bc({lastCheck:Date.now(),latestVersion:t}),t&&zs(n,t)?t:null}catch{return null}}function ri(n,e){console.error(`
234
+ ${c}`:c;ue("SessionStart",w,g)}async function Ws(n){let e=n.tool_input?.paths;if(!e||!Array.isArray(e)||e.length===0)return;let t=ee(n),r=te(n);for(let o of e){let s=U.isAbsolute(o)?o:U.join(t,o),i=s.endsWith("/"),a=s.endsWith("/**"),c=s.endsWith("/*"),l=!1,u=s;if(i)l=!0;else if(a)l=!0,u=s.slice(0,-3);else if(c)l=!0,u=s.slice(0,-2);else try{P.statSync(s).isDirectory()&&(l=!0)}catch{}l?(u.endsWith("/")||(u=u+"/"),ct(t,r,"dir",u)):ct(t,r,"file",s)}}async function Js(n){let e=ee(n),t=te(n);tn(e,t)}async function qs(n){let e=n.tool_input?.keyword;if(!e)return;let t=ee(n),r=te(n),o=rn(e);As(t,r,o)}function hc(n){try{let e=n.cwd;if(!e)return;let t=be.join(e,".aide","config.json"),r=be.join(e,".aide","cache","config-mtime.txt");if(!z.existsSync(t))return;let o=String(z.statSync(t).mtimeMs),s="";try{s=z.readFileSync(r,"utf8").trim()}catch{}if(o===s)return;z.mkdirSync(be.dirname(r),{recursive:!0}),z.writeFileSync(r,o,"utf8");try{let i=process.argv[1]&&/aide-memory(?:\.js)?$/.test(process.argv[1])?process.argv[1]:be.resolve(__dirname,"..","..","cli","aide-memory.js");if(!z.existsSync(i)){let c=be.resolve(__dirname,"..","..","cli","aide-memory.js");z.existsSync(c)&&(i=c)}(0,Gs.spawn)(process.execPath,[i,"internal-resync",e],{detached:!0,stdio:"ignore",cwd:e}).unref()}catch{}}catch{}}var gc={"pre-read":Ds,"pre-edit":Fs,"pre-search":Ps,"pre-prompt":Ls,"post-tool-use-recall":Hs,stop:Us,"pre-compact":Bs,"session-start":Vs,"pre-recall":Ws,"post-remember":Js,"post-search":qs};async function Xs(n){let e=gc[n];if(!e){we(`aide-memory hook: unknown event "${n}"`,"check .claude/settings.json or .cursor/hooks.json command lines");return}let t=performance.now();try{let r=await ks(),o=Bt(),s=o.translateInput(r);if(hc(s),Q("hooks",`enter hook=${n} adapter=${o.id} cwd=${s.cwd??""} session=${s.session_id??""} file=${s.tool_input?.file_path??""}`),no("hooks")){let i=process.stdout.write.bind(process.stdout),a="";process.stdout.write=(c,...l)=>{try{a+=typeof c=="string"?c:String(c)}catch{}return i(c,...l)};try{await e(s)}finally{process.stdout.write=i,Q("hooks",`exit hook=${n} duration=${(performance.now()-t).toFixed(1)}ms stdout-len=${a.length} stdout-head=${JSON.stringify(a.slice(0,200))}`)}}else await e(s),Q("hooks",`exit hook=${n} duration=${(performance.now()-t).toFixed(1)}ms`)}catch(r){let o=r,s=o?.message??String(r);/NODE_MODULE_VERSION|node-loader|wrong ELF class|invalid ELF header|dlopen/i.test(s)?we(`aide-memory hook=${n}: native binding load failed (${s})`,"reinstall aide-memory or run `npm rebuild libsql` in the install dir"):/ENOENT|MODULE_NOT_FOUND/i.test(s)?we(`aide-memory hook=${n}: missing file/module (${s})`,"reinstall aide-memory \u2014 dist/ may be incomplete"):we(`aide-memory hook=${n} threw: ${s}`),Q("hooks",`error hook=${n} duration=${(performance.now()-t).toFixed(1)}ms class=${o?.name??"Error"}`)}}async function Ys(n){await Xs(n),process.exit(0)}var ri=h(require("fs")),ni=h(require("path"));var zs=h(require("https")),We=h(require("fs")),sn=h(require("path")),Qs=h(require("os")),yc="https://registry.npmjs.org/aide-memory/latest",bc=1440*60*1e3;function Zs(){return sn.default.join(Qs.default.homedir(),".aide","update-check.json")}function wc(){let n=Zs();try{if(!We.default.existsSync(n))return null;let e=We.default.readFileSync(n,"utf-8");return JSON.parse(e)}catch{return null}}function _c(n){let e=Zs();try{let t=sn.default.dirname(e);We.default.existsSync(t)||We.default.mkdirSync(t,{recursive:!0}),We.default.writeFileSync(e,JSON.stringify(n),"utf-8")}catch{}}function Sc(){return new Promise(n=>{let e=zs.default.get(yc,{timeout:5e3},t=>{if(t.statusCode!==200){t.resume(),n(null);return}let r="";t.on("data",o=>{r+=o.toString()}),t.on("end",()=>{try{let o=JSON.parse(r);n(o.version??null)}catch{n(null)}})});e.on("error",()=>n(null)),e.on("timeout",()=>{e.destroy(),n(null)})})}function Ks(n,e){let t=s=>{let i=s.replace(/^v/,"").split(".").map(Number);return{major:i[0]||0,minor:i[1]||0,patch:i[2]||0}},r=t(n),o=t(e);return o.major!==r.major?o.major>r.major:o.minor!==r.minor?o.minor>r.minor:o.patch>r.patch}function Ec(){try{if(process.env.AIDE_MEMORY_FORCE_REGISTRY_CHECK==="1")return!1;let n=require("fs"),t=require("path").resolve(__dirname,"..","..","src","cli");return n.existsSync(t)}catch{return!1}}async function ei(n){if(Ec())return null;try{let e=wc();if(e&&Date.now()-e.lastCheck<bc)return e.latestVersion&&Ks(n,e.latestVersion)?e.latestVersion:null;let t=await Sc();return _c({lastCheck:Date.now(),latestVersion:t}),t&&Ks(n,t)?t:null}catch{return null}}function ti(n,e){console.error(`
233
235
  aide-memory v${e} available (current: v${n}).
234
236
  Run \`npm update -g aide-memory\` to update.
235
- `)}Dt();var ln=JSON.parse(ni.readFileSync(oi.join(__dirname,"..","..","package.json"),"utf8"));function si(){let n=new kn;n.name("aide-memory").description("AIDE Memory \u2014 persistent context for AI coding agents").version(ln.version),n.command("recall").description("Recall memories for a file/directory path").argument("<path>","File or directory path to recall context for").action(t=>{No(t)}),n.command("remember").description("Store a new memory").argument("<what>","The knowledge to remember").requiredOption("--layer <layer>","Memory layer: preferences, technical, area_context, guidelines").option("--scope <scope>",'Glob pattern for the code area (e.g. "src/components/**")').option("--tags <tags>","Comma-separated tags / context label").option("--why <why>","Context for why this is worth remembering").option("--contributor <contributor>","Who this knowledge came from").action((t,r)=>{as(t,r)}),n.command("update").description("Update an existing memory").argument("<id>","Memory ID to update").option("--what <what>","New content").option("--why <why>","New reason").option("--scope <scope>","New scope").option("--tags <tags>","New tags / context label").action((t,r)=>{cs(t,r)}),n.command("forget").description("Delete a memory").argument("<id>","Memory ID to delete").action(t=>{ls(t)}),n.command("search").description("Search memories by keyword").argument("<query>","Text to search for").option("--layer <layer>","Filter by layer").option("--limit <limit>","Max results (default 50)").action((t,r)=>{us(t,r)}),n.command("list").description("List memories").option("--layer <layer>","Filter by layer").option("--scope <scope>","Filter by scope").option("--contributor <contributor>","Filter by contributor").option("--limit <limit>","Max results").option("--tag <tag>","Filter by tag / context label").action(t=>{ds(t)}),n.command("stats").description("Show memory analytics summary").action(()=>{ms()}),n.command("recall-log").description("Show detailed recall history (which memories were returned per recall event)").option("--last <n>","Show only the last N recall events").option("--clear","Clear the recall log").action(t=>{hs(t)}),n.command("config").description("Get or set configuration (dot-notation keys). Use `aide-memory config list` to enumerate all public settings with current value + description.").argument("<key>",'Configuration key (e.g. hooks.visible) or "list" to enumerate all public settings').argument("[value]","Value to set (omit to read)").action((t,r)=>{_s(t,r)});let e=n.command("sync").description("Synchronize between JSON files and SQLite cache");return e.command("import").description("Rebuild SQLite cache from JSON memory files").action(()=>{Ss()}),e.command("export").description("Export memories to JSON files").action(()=>{Es()}),n.command("migrate").description("Migrate from legacy memory.db format").action(()=>{ks()}),n.command("cleanup").description("Remove stale session tracking files from .aide/cache/").option("--older-than <duration>",'TTL for cleanup (e.g. "7d", "24h", "30m")',"7d").option("--all","Remove all tracking files regardless of age").option("--dry-run","Show what would be deleted without actually deleting").action(t=>{vs(t)}),n.command("init").description("Initialize a new .aide/ project").option("--update-rules","Only refresh rules files (idempotent)").option("--force","Update all config to current version (merges, preserves user settings)").option("--reset","Reset config to factory defaults (does not delete memories)").action(t=>{xs(t)}),n.command("hook <name>").description("Internal: dispatch a Claude Code hook (called by shell shims)").action(t=>{Ks(t)}),n.command("internal-resync <projectRoot>",{hidden:!0}).description("Internal: resync derived artifacts (spawned by hooks on config drift)").action(t=>{try{let{resyncDerivedArtifacts:r}=(rt(),er(os));r(t)}catch{}process.exit(0)}),n}if(require.main===module){si().parse(process.argv);try{let e=process.cwd();new he(e).get("updates.check")&&ti(ln.version).then(r=>{r&&ri(ln.version,r)}).catch(()=>{})}catch{}}0&&(module.exports={createProgram});
237
+ `)}Dt();var an=JSON.parse(ri.readFileSync(ni.join(__dirname,"..","..","package.json"),"utf8"));function oi(){let n=new En;n.name("aide-memory").description("AIDE Memory \u2014 persistent context for AI coding agents").version(an.version),n.command("recall").description("Recall memories for a file/directory path").argument("<path>","File or directory path to recall context for").action(t=>{To(t)}),n.command("remember").description("Store a new memory").argument("<what>","The knowledge to remember").requiredOption("--layer <layer>","Memory layer: preferences, technical, area_context, guidelines").option("--scope <scope>",'Glob pattern for the code area (e.g. "src/components/**")').option("--tags <tags>","Comma-separated tags / context label").option("--why <why>","Context for why this is worth remembering").option("--contributor <contributor>","Who this knowledge came from").action((t,r)=>{ss(t,r)}),n.command("update").description("Update an existing memory").argument("<id>","Memory ID to update").option("--what <what>","New content").option("--why <why>","New reason").option("--scope <scope>","New scope").option("--tags <tags>","New tags / context label").action((t,r)=>{is(t,r)}),n.command("forget").description("Delete a memory").argument("<id>","Memory ID to delete").action(t=>{as(t)}),n.command("search").description("Search memories by keyword").argument("<query>","Text to search for").option("--layer <layer>","Filter by layer").option("--limit <limit>","Max results (default 50)").action((t,r)=>{cs(t,r)}),n.command("list").description("List memories").option("--layer <layer>","Filter by layer").option("--scope <scope>","Filter by scope").option("--contributor <contributor>","Filter by contributor").option("--limit <limit>","Max results").option("--tag <tag>","Filter by tag / context label").action(t=>{ls(t)}),n.command("stats").description("Show memory analytics summary").action(()=>{ds()}),n.command("recall-log").description("Show detailed recall history (which memories were returned per recall event)").option("--last <n>","Show only the last N recall events").option("--clear","Clear the recall log").action(t=>{fs(t)}),n.command("config").description("Get or set configuration (dot-notation keys). Use `aide-memory config list` to enumerate all public settings with current value + description.").argument("<key>",'Configuration key (e.g. hooks.visible) or "list" to enumerate all public settings').argument("[value]","Value to set (omit to read)").action((t,r)=>{ys(t,r)});let e=n.command("sync").description("Synchronize between JSON files and SQLite cache");return e.command("import").description("Rebuild SQLite cache from JSON memory files").action(()=>{ws()}),e.command("export").description("Export memories to JSON files").action(()=>{_s()}),n.command("migrate").description("Migrate from legacy memory.db format").action(()=>{Es()}),n.command("cleanup").description("Remove stale session tracking files from .aide/cache/").option("--older-than <duration>",'TTL for cleanup (e.g. "7d", "24h", "30m")',"7d").option("--all","Remove all tracking files regardless of age").option("--dry-run","Show what would be deleted without actually deleting").action(t=>{Ss(t)}),n.command("init").description("Initialize a new .aide/ project").option("--update-rules","Only refresh rules files (idempotent)").option("--force","Update all config to current version (merges, preserves user settings)").option("--reset","Reset config to factory defaults (does not delete memories)").action(t=>{vs(t)}),n.command("hook <name>").description("Internal: dispatch a Claude Code hook (called by shell shims)").action(t=>{Ys(t)}),n.command("internal-resync <projectRoot>",{hidden:!0}).description("Internal: resync derived artifacts (spawned by hooks on config drift)").action(t=>{try{let{resyncDerivedArtifacts:r}=(rt(),Zt(rs));r(t)}catch{}process.exit(0)}),n}if(require.main===module){oi().parse(process.argv);try{let e=process.cwd();new he(e).get("updates.check")&&ei(an.version).then(r=>{r&&ti(an.version,r)}).catch(()=>{})}catch{}}0&&(module.exports={createProgram});