claude-mem 13.0.0 → 13.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,119 +1,119 @@
1
1
  #!/usr/bin/env node
2
- var ec=Object.create;var cn=Object.defineProperty;var tc=Object.getOwnPropertyDescriptor;var rc=Object.getOwnPropertyNames;var nc=Object.getPrototypeOf,oc=Object.prototype.hasOwnProperty;var E=(e,t)=>()=>(e&&(t=e(e=0)),t);var Qo=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),Se=(e,t)=>{for(var r in t)cn(e,r,{get:t[r],enumerable:!0})},sc=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of rc(t))!oc.call(e,o)&&o!==r&&cn(e,o,{get:()=>t[o],enumerable:!(n=tc(t,o))||n.enumerable});return e};var Ze=(e,t,r)=>(r=e!=null?ec(nc(e)):{},sc(t||!e||!e.__esModule?cn(r,"default",{value:e,enumerable:!0}):r,e));var rt=Qo((vm,ln)=>{var mr=process||{},_o=mr.argv||[],pr=mr.env||{},ic=!(pr.NO_COLOR||_o.includes("--no-color"))&&(!!pr.FORCE_COLOR||_o.includes("--color")||mr.platform==="win32"||(mr.stdout||{}).isTTY&&pr.TERM!=="dumb"||!!pr.CI),ac=(e,t,r=e)=>n=>{let o=""+n,s=o.indexOf(t,e.length);return~s?e+cc(o,t,r,s)+t:e+o+t},cc=(e,t,r,n)=>{let o="",s=0;do o+=e.substring(s,n)+r,s=n+t.length,n=e.indexOf(t,s);while(~n);return o+e.substring(s)},$o=(e=ic)=>{let t=e?ac:()=>String;return{isColorSupported:e,reset:t("\x1B[0m","\x1B[0m"),bold:t("\x1B[1m","\x1B[22m","\x1B[22m\x1B[1m"),dim:t("\x1B[2m","\x1B[22m","\x1B[22m\x1B[2m"),italic:t("\x1B[3m","\x1B[23m"),underline:t("\x1B[4m","\x1B[24m"),inverse:t("\x1B[7m","\x1B[27m"),hidden:t("\x1B[8m","\x1B[28m"),strikethrough:t("\x1B[9m","\x1B[29m"),black:t("\x1B[30m","\x1B[39m"),red:t("\x1B[31m","\x1B[39m"),green:t("\x1B[32m","\x1B[39m"),yellow:t("\x1B[33m","\x1B[39m"),blue:t("\x1B[34m","\x1B[39m"),magenta:t("\x1B[35m","\x1B[39m"),cyan:t("\x1B[36m","\x1B[39m"),white:t("\x1B[37m","\x1B[39m"),gray:t("\x1B[90m","\x1B[39m"),bgBlack:t("\x1B[40m","\x1B[49m"),bgRed:t("\x1B[41m","\x1B[49m"),bgGreen:t("\x1B[42m","\x1B[49m"),bgYellow:t("\x1B[43m","\x1B[49m"),bgBlue:t("\x1B[44m","\x1B[49m"),bgMagenta:t("\x1B[45m","\x1B[49m"),bgCyan:t("\x1B[46m","\x1B[49m"),bgWhite:t("\x1B[47m","\x1B[49m"),blackBright:t("\x1B[90m","\x1B[39m"),redBright:t("\x1B[91m","\x1B[39m"),greenBright:t("\x1B[92m","\x1B[39m"),yellowBright:t("\x1B[93m","\x1B[39m"),blueBright:t("\x1B[94m","\x1B[39m"),magentaBright:t("\x1B[95m","\x1B[39m"),cyanBright:t("\x1B[96m","\x1B[39m"),whiteBright:t("\x1B[97m","\x1B[39m"),bgBlackBright:t("\x1B[100m","\x1B[49m"),bgRedBright:t("\x1B[101m","\x1B[49m"),bgGreenBright:t("\x1B[102m","\x1B[49m"),bgYellowBright:t("\x1B[103m","\x1B[49m"),bgBlueBright:t("\x1B[104m","\x1B[49m"),bgMagentaBright:t("\x1B[105m","\x1B[49m"),bgCyanBright:t("\x1B[106m","\x1B[49m"),bgWhiteBright:t("\x1B[107m","\x1B[49m")}};ln.exports=$o();ln.exports.createColors=$o});import{existsSync as lc,readFileSync as uc}from"fs";function le(e,t){if(!lc(e))return t;try{return JSON.parse(uc(e,"utf-8"))}catch(r){throw new Error(`Corrupt JSON file, refusing to overwrite: ${e}: ${r instanceof Error?r.message:String(r)}`)}}var Tt=E(()=>{"use strict"});import{closeSync as un,existsSync as Rt,fsyncSync as es,lstatSync as dc,mkdirSync as pc,openSync as dn,readFileSync as ts,readlinkSync as mc,realpathSync as fc,renameSync as gc,statSync as hc,unlinkSync as Ec,writeSync as Sc}from"fs";import{homedir as yc}from"os";import{basename as wc,dirname as fr,join as ae,resolve as vc}from"path";import{fileURLToPath as Cc}from"url";import{randomBytes as kc}from"crypto";function pn(){return process.env.CLAUDE_CONFIG_DIR||ae(yc(),".claude")}function z(){return ae(pn(),"plugins","marketplaces","thedotmack")}function qe(){return ae(pn(),"plugins")}function nt(){return ae(qe(),"known_marketplaces.json")}function ot(){return ae(qe(),"installed_plugins.json")}function Ue(){return ae(pn(),"settings.json")}function st(e){return ae(qe(),"cache","thedotmack","claude-mem",e)}function gr(){let e=Cc(import.meta.url),t=ae(fr(e),"..","..");if(!Rt(ae(t,"package.json")))throw new Error(`npmPackageRootDirectory: expected package.json at ${t}. Bundle structure may have changed \u2014 update the path walk.`);return t}function mn(){return ae(gr(),"plugin")}function it(){let e=ae(mn(),".claude-plugin","plugin.json");if(Rt(e))try{let r=JSON.parse(ts(e,"utf-8"));if(r.version)return r.version}catch{}let t=ae(gr(),"package.json");if(Rt(t))try{let r=JSON.parse(ts(t,"utf-8"));if(r.version)return r.version}catch{}return"0.0.0"}function hr(){let e=z();return Rt(ae(e,"plugin",".claude-plugin","plugin.json"))}function It(e){Rt(e)||pc(e,{recursive:!0})}function Ne(e,t){let r=e;try{if(dc(e).isSymbolicLink())try{r=fc(e)}catch{let l=mc(e);r=vc(fr(e),l)}}catch(l){let p=l.code;if(p!=="ENOENT"&&p!=="ENOTDIR")throw l}It(fr(r));let n=fr(r),o=wc(r),s=ae(n,`.${o}.${process.pid}.${kc(6).toString("hex")}.tmp`),i=Buffer.from(JSON.stringify(t,null,2)+`
3
- `,"utf-8"),a;try{a=hc(r).mode&511}catch{}let c;try{c=a!==void 0?dn(s,"w",a):dn(s,"w");let l=0;for(;l<i.length;){let p=Sc(c,i,l,i.length-l);if(p===0)throw new Error(`writeSync stalled at ${l}/${i.length} bytes`);l+=p}if(es(c),un(c),c=void 0,gc(s,r),!ue){let p;try{p=dn(n,"r"),es(p)}catch{}finally{if(p!==void 0)try{un(p)}catch{}}}}catch(l){if(c!==void 0)try{un(c)}catch{}try{Ec(s)}catch{}throw l}}var ue,Xe=E(()=>{"use strict";Tt();ue=process.platform==="win32"});var rs,ns,os,ss=E(()=>{rs=(()=>{let e=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g;return t=>{let r=0;for(e.lastIndex=0;e.test(t);)r+=1;return t.length-r}})(),ns=e=>e===12288||e>=65281&&e<=65376||e>=65504&&e<=65510,os=e=>e===8987||e===9001||e>=12272&&e<=12287||e>=12289&&e<=12350||e>=12441&&e<=12543||e>=12549&&e<=12591||e>=12593&&e<=12686||e>=12688&&e<=12771||e>=12783&&e<=12830||e>=12832&&e<=12871||e>=12880&&e<=19903||e>=65040&&e<=65049||e>=65072&&e<=65106||e>=65108&&e<=65126||e>=65128&&e<=65131||e>=127488&&e<=127490||e>=127504&&e<=127547||e>=127552&&e<=127560||e>=131072&&e<=196605||e>=196608&&e<=262141});var bc,Mc,is,xc,as,Tc,Rc,Ic,cs,ls,us=E(()=>{ss();bc=/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]|\u001b\]8;[^;]*;.*?(?:\u0007|\u001b\u005c)/y,Mc=/[\x00-\x08\x0A-\x1F\x7F-\x9F]{1,1000}/y,is=/(?:(?![\uFF61-\uFF9F\uFF00-\uFFEF])[\p{Script=Han}\p{Script=Hiragana}\p{Script=Katakana}\p{Script=Hangul}\p{Script=Tangut}]){1,1000}/yu,xc=/\t{1,1000}/y,as=new RegExp("[\\u{1F1E6}-\\u{1F1FF}]{2}|\\u{1F3F4}[\\u{E0061}-\\u{E007A}]{2}[\\u{E0030}-\\u{E0039}\\u{E0061}-\\u{E007A}]{1,3}\\u{E007F}|(?:\\p{Emoji}\\uFE0F\\u20E3?|\\p{Emoji_Modifier_Base}\\p{Emoji_Modifier}?|\\p{Emoji_Presentation})(?:\\u200D(?:\\p{Emoji_Modifier_Base}\\p{Emoji_Modifier}?|\\p{Emoji_Presentation}|\\p{Emoji}\\uFE0F\\u20E3?))*","yu"),Tc=/(?:[\x20-\x7E\xA0-\xFF](?!\uFE0F)){1,1000}/y,Rc=new RegExp("\\p{M}+","gu"),Ic={limit:1/0,ellipsis:""},cs=(e,t={},r={})=>{let n=t.limit??1/0,o=t.ellipsis??"",s=t?.ellipsisWidth??(o?cs(o,Ic,r).width:0),i=0,a=r.controlWidth??0,c=r.tabWidth??8,l=r.emojiWidth??2,p=2,f=r.regularWidth??1,h=r.wideWidth??p,S=[[Tc,f],[bc,i],[Mc,a],[xc,c],[as,l],[is,h]],g=0,C=0,w=e.length,x=0,D=!1,U=w,H=Math.max(0,n-s),R=0,L=0,j=0,W=0;e:for(;;){if(L>R||C>=w&&C>g){let Q=e.slice(R,L)||e.slice(g,C);x=0;for(let v of Q.replaceAll(Rc,"")){let b=v.codePointAt(0)||0;if(ns(b)?W=p:os(b)?W=h:W=f,j+W>H&&(U=Math.min(U,Math.max(R,g)+x)),j+W>n){D=!0;break e}x+=v.length,j+=W}R=L=0}if(C>=w)break e;for(let Q=0,v=S.length;Q<v;Q++){let[b,I]=S[Q];if(b.lastIndex=C,b.test(e)){if(x=b===is?rs(e.slice(C,b.lastIndex)):b===as?1:b.lastIndex-C,W=x*I,j+W>H&&(U=Math.min(U,C+Math.floor((H-j)/I))),j+W>n){D=!0;break e}j+=W,R=g,L=C,C=g=b.lastIndex;continue e}}C+=1}return{width:D?H:j,index:D?U:w,truncated:D,ellipsed:D&&n>=s}},ls=cs});var Oc,Pc,ee,fn=E(()=>{us();Oc={limit:1/0,ellipsis:"",ellipsisWidth:0},Pc=(e,t={})=>ls(e,Oc,t).width,ee=Pc});function Ce(e,t,r){return String(e).normalize().split(Lc).map(n=>Uc(n,t,r)).join(`
4
- `)}var Er,gs,Ac,hn,hs,Nc,Es,En,ds,ps,ms,fs,gn,Dc,Uc,Lc,Sn=E(()=>{fn();Er="\x1B",gs="\x9B",Ac=39,hn="\x07",hs="[",Nc="]",Es="m",En=`${Nc}8;;`,ds=new RegExp(`(?:\\${hs}(?<code>\\d+)m|\\${En}(?<uri>.*)${hn})`,"y"),ps=e=>{if(e>=30&&e<=37||e>=90&&e<=97)return 39;if(e>=40&&e<=47||e>=100&&e<=107)return 49;if(e===1||e===2)return 22;if(e===3)return 23;if(e===4)return 24;if(e===7)return 27;if(e===8)return 28;if(e===9)return 29;if(e===0)return 0},ms=e=>`${Er}${hs}${e}${Es}`,fs=e=>`${Er}${En}${e}${hn}`,gn=(e,t,r)=>{let n=t[Symbol.iterator](),o=!1,s=!1,i=e.at(-1),a=i===void 0?0:ee(i),c=n.next(),l=n.next(),p=0;for(;!c.done;){let f=c.value,h=ee(f);a+h<=r?e[e.length-1]+=f:(e.push(f),a=0),(f===Er||f===gs)&&(o=!0,s=t.startsWith(En,p+1)),o?s?f===hn&&(o=!1,s=!1):f===Es&&(o=!1):(a+=h,a===r&&!l.done&&(e.push(""),a=0)),c=l,l=n.next(),p+=f.length}i=e.at(-1),!a&&i!==void 0&&i.length&&e.length>1&&(e[e.length-2]+=e.pop())},Dc=e=>{let t=e.split(" "),r=t.length;for(;r&&!ee(t[r-1]);)r--;return r===t.length?e:t.slice(0,r).join(" ")+t.slice(r).join("")},Uc=(e,t,r={})=>{if(r.trim!==!1&&e.trim()==="")return"";let n="",o,s,i=e.split(" "),a=[""],c=0;for(let f=0;f<i.length;f++){let h=i[f];if(r.trim!==!1){let g=a.at(-1)??"",C=g.trimStart();g.length!==C.length&&(a[a.length-1]=C,c=ee(C))}f!==0&&(c>=t&&(r.wordWrap===!1||r.trim===!1)&&(a.push(""),c=0),(c||r.trim===!1)&&(a[a.length-1]+=" ",c++));let S=ee(h);if(r.hard&&S>t){let g=t-c,C=1+Math.floor((S-g-1)/t);Math.floor((S-1)/t)<C&&a.push(""),gn(a,h,t),c=ee(a.at(-1)??"");continue}if(c+S>t&&c&&S){if(r.wordWrap===!1&&c<t){gn(a,h,t),c=ee(a.at(-1)??"");continue}a.push(""),c=0}if(c+S>t&&r.wordWrap===!1){gn(a,h,t),c=ee(a.at(-1)??"");continue}a[a.length-1]+=h,c+=S}r.trim!==!1&&(a=a.map(f=>Dc(f)));let l=a.join(`
5
- `),p=!1;for(let f=0;f<l.length;f++){let h=l[f];if(n+=h,p)p=!1;else if(p=h>="\uD800"&&h<="\uDBFF",p)continue;if(h===Er||h===gs){ds.lastIndex=f+1;let g=ds.exec(l)?.groups;if(g?.code!==void 0){let C=Number.parseFloat(g.code);o=C===Ac?void 0:C}else g?.uri!==void 0&&(s=g.uri.length===0?void 0:g.uri)}if(l[f+1]===`
2
+ var ec=Object.create;var an=Object.defineProperty;var tc=Object.getOwnPropertyDescriptor;var rc=Object.getOwnPropertyNames;var nc=Object.getPrototypeOf,oc=Object.prototype.hasOwnProperty;var E=(e,t)=>()=>(e&&(t=e(e=0)),t);var Qo=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),Se=(e,t)=>{for(var r in t)an(e,r,{get:t[r],enumerable:!0})},sc=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of rc(t))!oc.call(e,o)&&o!==r&&an(e,o,{get:()=>t[o],enumerable:!(n=tc(t,o))||n.enumerable});return e};var ze=(e,t,r)=>(r=e!=null?ec(nc(e)):{},sc(t||!e||!e.__esModule?an(r,"default",{value:e,enumerable:!0}):r,e));var tt=Qo((vm,cn)=>{var pr=process||{},_o=pr.argv||[],dr=pr.env||{},ic=!(dr.NO_COLOR||_o.includes("--no-color"))&&(!!dr.FORCE_COLOR||_o.includes("--color")||pr.platform==="win32"||(pr.stdout||{}).isTTY&&dr.TERM!=="dumb"||!!dr.CI),ac=(e,t,r=e)=>n=>{let o=""+n,s=o.indexOf(t,e.length);return~s?e+cc(o,t,r,s)+t:e+o+t},cc=(e,t,r,n)=>{let o="",s=0;do o+=e.substring(s,n)+r,s=n+t.length,n=e.indexOf(t,s);while(~n);return o+e.substring(s)},$o=(e=ic)=>{let t=e?ac:()=>String;return{isColorSupported:e,reset:t("\x1B[0m","\x1B[0m"),bold:t("\x1B[1m","\x1B[22m","\x1B[22m\x1B[1m"),dim:t("\x1B[2m","\x1B[22m","\x1B[22m\x1B[2m"),italic:t("\x1B[3m","\x1B[23m"),underline:t("\x1B[4m","\x1B[24m"),inverse:t("\x1B[7m","\x1B[27m"),hidden:t("\x1B[8m","\x1B[28m"),strikethrough:t("\x1B[9m","\x1B[29m"),black:t("\x1B[30m","\x1B[39m"),red:t("\x1B[31m","\x1B[39m"),green:t("\x1B[32m","\x1B[39m"),yellow:t("\x1B[33m","\x1B[39m"),blue:t("\x1B[34m","\x1B[39m"),magenta:t("\x1B[35m","\x1B[39m"),cyan:t("\x1B[36m","\x1B[39m"),white:t("\x1B[37m","\x1B[39m"),gray:t("\x1B[90m","\x1B[39m"),bgBlack:t("\x1B[40m","\x1B[49m"),bgRed:t("\x1B[41m","\x1B[49m"),bgGreen:t("\x1B[42m","\x1B[49m"),bgYellow:t("\x1B[43m","\x1B[49m"),bgBlue:t("\x1B[44m","\x1B[49m"),bgMagenta:t("\x1B[45m","\x1B[49m"),bgCyan:t("\x1B[46m","\x1B[49m"),bgWhite:t("\x1B[47m","\x1B[49m"),blackBright:t("\x1B[90m","\x1B[39m"),redBright:t("\x1B[91m","\x1B[39m"),greenBright:t("\x1B[92m","\x1B[39m"),yellowBright:t("\x1B[93m","\x1B[39m"),blueBright:t("\x1B[94m","\x1B[39m"),magentaBright:t("\x1B[95m","\x1B[39m"),cyanBright:t("\x1B[96m","\x1B[39m"),whiteBright:t("\x1B[97m","\x1B[39m"),bgBlackBright:t("\x1B[100m","\x1B[49m"),bgRedBright:t("\x1B[101m","\x1B[49m"),bgGreenBright:t("\x1B[102m","\x1B[49m"),bgYellowBright:t("\x1B[103m","\x1B[49m"),bgBlueBright:t("\x1B[104m","\x1B[49m"),bgMagentaBright:t("\x1B[105m","\x1B[49m"),bgCyanBright:t("\x1B[106m","\x1B[49m"),bgWhiteBright:t("\x1B[107m","\x1B[49m")}};cn.exports=$o();cn.exports.createColors=$o});import{existsSync as lc,readFileSync as uc}from"fs";function le(e,t){if(!lc(e))return t;try{return JSON.parse(uc(e,"utf-8"))}catch(r){throw new Error(`Corrupt JSON file, refusing to overwrite: ${e}: ${r instanceof Error?r.message:String(r)}`)}}var xt=E(()=>{"use strict"});import{closeSync as ln,existsSync as Tt,fsyncSync as es,lstatSync as dc,mkdirSync as pc,openSync as un,readFileSync as ts,readlinkSync as mc,realpathSync as fc,renameSync as gc,statSync as hc,unlinkSync as Ec,writeSync as Sc}from"fs";import{homedir as yc}from"os";import{basename as wc,dirname as mr,join as ae,resolve as vc}from"path";import{fileURLToPath as Cc}from"url";import{randomBytes as kc}from"crypto";function dn(){return process.env.CLAUDE_CONFIG_DIR||ae(yc(),".claude")}function z(){return ae(dn(),"plugins","marketplaces","thedotmack")}function Ze(){return ae(dn(),"plugins")}function rt(){return ae(Ze(),"known_marketplaces.json")}function nt(){return ae(Ze(),"installed_plugins.json")}function Ue(){return ae(dn(),"settings.json")}function ot(e){return ae(Ze(),"cache","thedotmack","claude-mem",e)}function fr(){let e=Cc(import.meta.url),t=ae(mr(e),"..","..");if(!Tt(ae(t,"package.json")))throw new Error(`npmPackageRootDirectory: expected package.json at ${t}. Bundle structure may have changed \u2014 update the path walk.`);return t}function pn(){return ae(fr(),"plugin")}function st(){let e=ae(pn(),".claude-plugin","plugin.json");if(Tt(e))try{let r=JSON.parse(ts(e,"utf-8"));if(r.version)return r.version}catch{}let t=ae(fr(),"package.json");if(Tt(t))try{let r=JSON.parse(ts(t,"utf-8"));if(r.version)return r.version}catch{}return"0.0.0"}function gr(){let e=z();return Tt(ae(e,"plugin",".claude-plugin","plugin.json"))}function Rt(e){Tt(e)||pc(e,{recursive:!0})}function Ne(e,t){let r=e;try{if(dc(e).isSymbolicLink())try{r=fc(e)}catch{let l=mc(e);r=vc(mr(e),l)}}catch(l){let p=l.code;if(p!=="ENOENT"&&p!=="ENOTDIR")throw l}Rt(mr(r));let n=mr(r),o=wc(r),s=ae(n,`.${o}.${process.pid}.${kc(6).toString("hex")}.tmp`),i=Buffer.from(JSON.stringify(t,null,2)+`
3
+ `,"utf-8"),a;try{a=hc(r).mode&511}catch{}let c;try{c=a!==void 0?un(s,"w",a):un(s,"w");let l=0;for(;l<i.length;){let p=Sc(c,i,l,i.length-l);if(p===0)throw new Error(`writeSync stalled at ${l}/${i.length} bytes`);l+=p}if(es(c),ln(c),c=void 0,gc(s,r),!ue){let p;try{p=un(n,"r"),es(p)}catch{}finally{if(p!==void 0)try{ln(p)}catch{}}}}catch(l){if(c!==void 0)try{ln(c)}catch{}try{Ec(s)}catch{}throw l}}var ue,qe=E(()=>{"use strict";xt();ue=process.platform==="win32"});var rs,ns,os,ss=E(()=>{rs=(()=>{let e=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g;return t=>{let r=0;for(e.lastIndex=0;e.test(t);)r+=1;return t.length-r}})(),ns=e=>e===12288||e>=65281&&e<=65376||e>=65504&&e<=65510,os=e=>e===8987||e===9001||e>=12272&&e<=12287||e>=12289&&e<=12350||e>=12441&&e<=12543||e>=12549&&e<=12591||e>=12593&&e<=12686||e>=12688&&e<=12771||e>=12783&&e<=12830||e>=12832&&e<=12871||e>=12880&&e<=19903||e>=65040&&e<=65049||e>=65072&&e<=65106||e>=65108&&e<=65126||e>=65128&&e<=65131||e>=127488&&e<=127490||e>=127504&&e<=127547||e>=127552&&e<=127560||e>=131072&&e<=196605||e>=196608&&e<=262141});var bc,Mc,is,xc,as,Tc,Rc,Ic,cs,ls,us=E(()=>{ss();bc=/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]|\u001b\]8;[^;]*;.*?(?:\u0007|\u001b\u005c)/y,Mc=/[\x00-\x08\x0A-\x1F\x7F-\x9F]{1,1000}/y,is=/(?:(?![\uFF61-\uFF9F\uFF00-\uFFEF])[\p{Script=Han}\p{Script=Hiragana}\p{Script=Katakana}\p{Script=Hangul}\p{Script=Tangut}]){1,1000}/yu,xc=/\t{1,1000}/y,as=new RegExp("[\\u{1F1E6}-\\u{1F1FF}]{2}|\\u{1F3F4}[\\u{E0061}-\\u{E007A}]{2}[\\u{E0030}-\\u{E0039}\\u{E0061}-\\u{E007A}]{1,3}\\u{E007F}|(?:\\p{Emoji}\\uFE0F\\u20E3?|\\p{Emoji_Modifier_Base}\\p{Emoji_Modifier}?|\\p{Emoji_Presentation})(?:\\u200D(?:\\p{Emoji_Modifier_Base}\\p{Emoji_Modifier}?|\\p{Emoji_Presentation}|\\p{Emoji}\\uFE0F\\u20E3?))*","yu"),Tc=/(?:[\x20-\x7E\xA0-\xFF](?!\uFE0F)){1,1000}/y,Rc=new RegExp("\\p{M}+","gu"),Ic={limit:1/0,ellipsis:""},cs=(e,t={},r={})=>{let n=t.limit??1/0,o=t.ellipsis??"",s=t?.ellipsisWidth??(o?cs(o,Ic,r).width:0),i=0,a=r.controlWidth??0,c=r.tabWidth??8,l=r.emojiWidth??2,p=2,f=r.regularWidth??1,h=r.wideWidth??p,S=[[Tc,f],[bc,i],[Mc,a],[xc,c],[as,l],[is,h]],g=0,C=0,w=e.length,x=0,D=!1,U=w,H=Math.max(0,n-s),R=0,L=0,j=0,W=0;e:for(;;){if(L>R||C>=w&&C>g){let Q=e.slice(R,L)||e.slice(g,C);x=0;for(let v of Q.replaceAll(Rc,"")){let b=v.codePointAt(0)||0;if(ns(b)?W=p:os(b)?W=h:W=f,j+W>H&&(U=Math.min(U,Math.max(R,g)+x)),j+W>n){D=!0;break e}x+=v.length,j+=W}R=L=0}if(C>=w)break e;for(let Q=0,v=S.length;Q<v;Q++){let[b,I]=S[Q];if(b.lastIndex=C,b.test(e)){if(x=b===is?rs(e.slice(C,b.lastIndex)):b===as?1:b.lastIndex-C,W=x*I,j+W>H&&(U=Math.min(U,C+Math.floor((H-j)/I))),j+W>n){D=!0;break e}j+=W,R=g,L=C,C=g=b.lastIndex;continue e}}C+=1}return{width:D?H:j,index:D?U:w,truncated:D,ellipsed:D&&n>=s}},ls=cs});var Oc,Pc,ee,mn=E(()=>{us();Oc={limit:1/0,ellipsis:"",ellipsisWidth:0},Pc=(e,t={})=>ls(e,Oc,t).width,ee=Pc});function Ce(e,t,r){return String(e).normalize().split(Lc).map(n=>Uc(n,t,r)).join(`
4
+ `)}var hr,gs,Ac,gn,hs,Nc,Es,hn,ds,ps,ms,fs,fn,Dc,Uc,Lc,En=E(()=>{mn();hr="\x1B",gs="\x9B",Ac=39,gn="\x07",hs="[",Nc="]",Es="m",hn=`${Nc}8;;`,ds=new RegExp(`(?:\\${hs}(?<code>\\d+)m|\\${hn}(?<uri>.*)${gn})`,"y"),ps=e=>{if(e>=30&&e<=37||e>=90&&e<=97)return 39;if(e>=40&&e<=47||e>=100&&e<=107)return 49;if(e===1||e===2)return 22;if(e===3)return 23;if(e===4)return 24;if(e===7)return 27;if(e===8)return 28;if(e===9)return 29;if(e===0)return 0},ms=e=>`${hr}${hs}${e}${Es}`,fs=e=>`${hr}${hn}${e}${gn}`,fn=(e,t,r)=>{let n=t[Symbol.iterator](),o=!1,s=!1,i=e.at(-1),a=i===void 0?0:ee(i),c=n.next(),l=n.next(),p=0;for(;!c.done;){let f=c.value,h=ee(f);a+h<=r?e[e.length-1]+=f:(e.push(f),a=0),(f===hr||f===gs)&&(o=!0,s=t.startsWith(hn,p+1)),o?s?f===gn&&(o=!1,s=!1):f===Es&&(o=!1):(a+=h,a===r&&!l.done&&(e.push(""),a=0)),c=l,l=n.next(),p+=f.length}i=e.at(-1),!a&&i!==void 0&&i.length&&e.length>1&&(e[e.length-2]+=e.pop())},Dc=e=>{let t=e.split(" "),r=t.length;for(;r&&!ee(t[r-1]);)r--;return r===t.length?e:t.slice(0,r).join(" ")+t.slice(r).join("")},Uc=(e,t,r={})=>{if(r.trim!==!1&&e.trim()==="")return"";let n="",o,s,i=e.split(" "),a=[""],c=0;for(let f=0;f<i.length;f++){let h=i[f];if(r.trim!==!1){let g=a.at(-1)??"",C=g.trimStart();g.length!==C.length&&(a[a.length-1]=C,c=ee(C))}f!==0&&(c>=t&&(r.wordWrap===!1||r.trim===!1)&&(a.push(""),c=0),(c||r.trim===!1)&&(a[a.length-1]+=" ",c++));let S=ee(h);if(r.hard&&S>t){let g=t-c,C=1+Math.floor((S-g-1)/t);Math.floor((S-1)/t)<C&&a.push(""),fn(a,h,t),c=ee(a.at(-1)??"");continue}if(c+S>t&&c&&S){if(r.wordWrap===!1&&c<t){fn(a,h,t),c=ee(a.at(-1)??"");continue}a.push(""),c=0}if(c+S>t&&r.wordWrap===!1){fn(a,h,t),c=ee(a.at(-1)??"");continue}a[a.length-1]+=h,c+=S}r.trim!==!1&&(a=a.map(f=>Dc(f)));let l=a.join(`
5
+ `),p=!1;for(let f=0;f<l.length;f++){let h=l[f];if(n+=h,p)p=!1;else if(p=h>="\uD800"&&h<="\uDBFF",p)continue;if(h===hr||h===gs){ds.lastIndex=f+1;let g=ds.exec(l)?.groups;if(g?.code!==void 0){let C=Number.parseFloat(g.code);o=C===Ac?void 0:C}else g?.uri!==void 0&&(s=g.uri.length===0?void 0:g.uri)}if(l[f+1]===`
6
6
  `){s&&(n+=fs(""));let S=o?ps(o):void 0;o&&S&&(n+=ms(S))}else h===`
7
- `&&(o&&ps(o)&&(n+=ms(o)),s&&(n+=fs(s)))}return n},Lc=/\r?\n/});var wn=Qo((jm,Ss)=>{"use strict";var yn={to(e,t){return t?`\x1B[${t+1};${e+1}H`:`\x1B[${e+1}G`},move(e,t){let r="";return e<0?r+=`\x1B[${-e}D`:e>0&&(r+=`\x1B[${e}C`),t<0?r+=`\x1B[${-t}A`:t>0&&(r+=`\x1B[${t}B`),r},up:(e=1)=>`\x1B[${e}A`,down:(e=1)=>`\x1B[${e}B`,forward:(e=1)=>`\x1B[${e}C`,backward:(e=1)=>`\x1B[${e}D`,nextLine:(e=1)=>"\x1B[E".repeat(e),prevLine:(e=1)=>"\x1B[F".repeat(e),left:"\x1B[G",hide:"\x1B[?25l",show:"\x1B[?25h",save:"\x1B7",restore:"\x1B8"},Wc={up:(e=1)=>"\x1B[S".repeat(e),down:(e=1)=>"\x1B[T".repeat(e)},jc={screen:"\x1B[2J",up:(e=1)=>"\x1B[1J".repeat(e),down:(e=1)=>"\x1B[J".repeat(e),line:"\x1B[2K",lineEnd:"\x1B[K",lineStart:"\x1B[1K",lines(e){let t="";for(let r=0;r<e;r++)t+=this.line+(r<e-1?yn.up():"");return e&&(t+=yn.left),t}};Ss.exports={cursor:yn,scroll:Wc,erase:jc,beep:"\x07"}});import{styleText as vn}from"node:util";import{stdout as kn,stdin as ws}from"node:process";import*as Le from"node:readline";import Fc from"node:readline";import{ReadStream as ys}from"node:tty";function Qe(e,t,r){if(!r.some(i=>!i.disabled))return e;let n=e+t,o=Math.max(r.length-1,0),s=n<0?o:n>o?0:n;return r[s].disabled?Qe(s,t<0?-1:1,r):s}function bn(e,t){if(typeof e=="string")return J.aliases.get(e)===t;for(let r of e)if(r!==void 0&&bn(r,t))return!0;return!1}function Jc(e,t){if(e===t)return;let r=e.split(`
7
+ `&&(o&&ps(o)&&(n+=ms(o)),s&&(n+=fs(s)))}return n},Lc=/\r?\n/});var yn=Qo((jm,Ss)=>{"use strict";var Sn={to(e,t){return t?`\x1B[${t+1};${e+1}H`:`\x1B[${e+1}G`},move(e,t){let r="";return e<0?r+=`\x1B[${-e}D`:e>0&&(r+=`\x1B[${e}C`),t<0?r+=`\x1B[${-t}A`:t>0&&(r+=`\x1B[${t}B`),r},up:(e=1)=>`\x1B[${e}A`,down:(e=1)=>`\x1B[${e}B`,forward:(e=1)=>`\x1B[${e}C`,backward:(e=1)=>`\x1B[${e}D`,nextLine:(e=1)=>"\x1B[E".repeat(e),prevLine:(e=1)=>"\x1B[F".repeat(e),left:"\x1B[G",hide:"\x1B[?25l",show:"\x1B[?25h",save:"\x1B7",restore:"\x1B8"},Wc={up:(e=1)=>"\x1B[S".repeat(e),down:(e=1)=>"\x1B[T".repeat(e)},jc={screen:"\x1B[2J",up:(e=1)=>"\x1B[1J".repeat(e),down:(e=1)=>"\x1B[J".repeat(e),line:"\x1B[2K",lineEnd:"\x1B[K",lineStart:"\x1B[1K",lines(e){let t="";for(let r=0;r<e;r++)t+=this.line+(r<e-1?Sn.up():"");return e&&(t+=Sn.left),t}};Ss.exports={cursor:Sn,scroll:Wc,erase:jc,beep:"\x07"}});import{styleText as wn}from"node:util";import{stdout as Cn,stdin as ws}from"node:process";import*as Le from"node:readline";import Fc from"node:readline";import{ReadStream as ys}from"node:tty";function Xe(e,t,r){if(!r.some(i=>!i.disabled))return e;let n=e+t,o=Math.max(r.length-1,0),s=n<0?o:n>o?0:n;return r[s].disabled?Xe(s,t<0?-1:1,r):s}function kn(e,t){if(typeof e=="string")return J.aliases.get(e)===t;for(let r of e)if(r!==void 0&&kn(r,t))return!0;return!1}function Jc(e,t){if(e===t)return;let r=e.split(`
8
8
  `),n=t.split(`
9
- `),o=Math.max(r.length,n.length),s=[];for(let i=0;i<o;i++)r[i]!==n[i]&&s.push(i);return{lines:s,numLinesBefore:r.length,numLinesAfter:n.length,numLines:o}}function F(e){return e===Cn}function Sr(e,t){let r=e;r.isTTY&&r.setRawMode(t)}function vs({input:e=ws,output:t=kn,overwrite:r=!0,hideCursor:n=!0}={}){let o=Le.createInterface({input:e,output:t,prompt:"",tabSize:1});Le.emitKeypressEvents(e,o),e instanceof ys&&e.isTTY&&e.setRawMode(!0);let s=(i,{name:a,sequence:c})=>{let l=String(i);if(bn([l,a,c],"cancel")){n&&t.write(_.cursor.show),process.exit(0);return}if(!r)return;Le.moveCursor(t,a==="return"?0:-1,a==="return"?-1:0,()=>{Le.clearLine(t,1,()=>{e.once("keypress",s)})})};return n&&t.write(_.cursor.hide),e.once("keypress",s),()=>{e.off("keypress",s),n&&t.write(_.cursor.show),e instanceof ys&&e.isTTY&&!Kc&&e.setRawMode(!1),o.terminal=!1,o.close()}}function We(e,t,r,n=r,o){let s=Ot(e??kn);return Ce(t,s-r.length,{hard:!0,trim:!1}).split(`
9
+ `),o=Math.max(r.length,n.length),s=[];for(let i=0;i<o;i++)r[i]!==n[i]&&s.push(i);return{lines:s,numLinesBefore:r.length,numLinesAfter:n.length,numLines:o}}function F(e){return e===vn}function Er(e,t){let r=e;r.isTTY&&r.setRawMode(t)}function vs({input:e=ws,output:t=Cn,overwrite:r=!0,hideCursor:n=!0}={}){let o=Le.createInterface({input:e,output:t,prompt:"",tabSize:1});Le.emitKeypressEvents(e,o),e instanceof ys&&e.isTTY&&e.setRawMode(!0);let s=(i,{name:a,sequence:c})=>{let l=String(i);if(kn([l,a,c],"cancel")){n&&t.write(_.cursor.show),process.exit(0);return}if(!r)return;Le.moveCursor(t,a==="return"?0:-1,a==="return"?-1:0,()=>{Le.clearLine(t,1,()=>{e.once("keypress",s)})})};return n&&t.write(_.cursor.hide),e.once("keypress",s),()=>{e.off("keypress",s),n&&t.write(_.cursor.show),e instanceof ys&&e.isTTY&&!Kc&&e.setRawMode(!1),o.terminal=!1,o.close()}}function We(e,t,r,n=r,o){let s=It(e??Cn);return Ce(t,s-r.length,{hard:!0,trim:!1}).split(`
10
10
  `).map((i,a)=>{let c=o?o(i,a):i;return`${a===0?n:r}${c}`}).join(`
11
- `)}var _,Gc,Hc,J,Kc,Cn,Ot,Mn,Pt,yr,Cs,wr,vr,Cr,xn=E(()=>{Sn();_=Ze(wn(),1);Gc=["up","down","left","right","space","enter","cancel"],Hc=["January","February","March","April","May","June","July","August","September","October","November","December"],J={actions:new Set(Gc),aliases:new Map([["k","up"],["j","down"],["h","left"],["l","right"],["","cancel"],["escape","cancel"]]),messages:{cancel:"Canceled",error:"Something went wrong"},withGuide:!0,date:{monthNames:[...Hc],messages:{required:"Please enter a valid date",invalidMonth:"There are only 12 months in a year",invalidDay:(e,t)=>`There are only ${e} days in ${t}`,afterMin:e=>`Date must be on or after ${e.toISOString().slice(0,10)}`,beforeMax:e=>`Date must be on or before ${e.toISOString().slice(0,10)}`}}};Kc=globalThis.process.platform.startsWith("win"),Cn=Symbol("clack:cancel");Ot=e=>"columns"in e&&typeof e.columns=="number"?e.columns:80,Mn=e=>"rows"in e&&typeof e.rows=="number"?e.rows:20;Pt=class{input;output;_abortSignal;rl;opts;_render;_track=!1;_prevFrame="";_subscribers=new Map;_cursor=0;state="initial";error="";value;userInput="";constructor(e,t=!0){let{input:r=ws,output:n=kn,render:o,signal:s,...i}=e;this.opts=i,this.onKeypress=this.onKeypress.bind(this),this.close=this.close.bind(this),this.render=this.render.bind(this),this._render=o.bind(this),this._track=t,this._abortSignal=s,this.input=r,this.output=n}unsubscribe(){this._subscribers.clear()}setSubscriber(e,t){let r=this._subscribers.get(e)??[];r.push(t),this._subscribers.set(e,r)}on(e,t){this.setSubscriber(e,{cb:t})}once(e,t){this.setSubscriber(e,{cb:t,once:!0})}emit(e,...t){let r=this._subscribers.get(e)??[],n=[];for(let o of r)o.cb(...t),o.once&&n.push(()=>r.splice(r.indexOf(o),1));for(let o of n)o()}prompt(){return new Promise(e=>{if(this._abortSignal){if(this._abortSignal.aborted)return this.state="cancel",this.close(),e(Cn);this._abortSignal.addEventListener("abort",()=>{this.state="cancel",this.close()},{once:!0})}this.rl=Fc.createInterface({input:this.input,tabSize:2,prompt:"",escapeCodeTimeout:50,terminal:!0}),this.rl.prompt(),this.opts.initialUserInput!==void 0&&this._setUserInput(this.opts.initialUserInput,!0),this.input.on("keypress",this.onKeypress),Sr(this.input,!0),this.output.on("resize",this.render),this.render(),this.once("submit",()=>{this.output.write(_.cursor.show),this.output.off("resize",this.render),Sr(this.input,!1),e(this.value)}),this.once("cancel",()=>{this.output.write(_.cursor.show),this.output.off("resize",this.render),Sr(this.input,!1),e(Cn)})})}_isActionKey(e,t){return e===" "}_shouldSubmit(e,t){return!0}_setValue(e){this.value=e,this.emit("value",this.value)}_setUserInput(e,t){this.userInput=e??"",this.emit("userInput",this.userInput),t&&this._track&&this.rl&&(this.rl.write(this.userInput),this._cursor=this.rl.cursor)}_clearUserInput(){this.rl?.write(null,{ctrl:!0,name:"u"}),this._setUserInput("")}onKeypress(e,t){if(this._track&&t.name!=="return"&&(t.name&&this._isActionKey(e,t)&&this.rl?.write(null,{ctrl:!0,name:"h"}),this._cursor=this.rl?.cursor??0,this._setUserInput(this.rl?.line)),this.state==="error"&&(this.state="active"),t?.name&&(!this._track&&J.aliases.has(t.name)&&this.emit("cursor",J.aliases.get(t.name)),J.actions.has(t.name)&&this.emit("cursor",t.name)),e&&(e.toLowerCase()==="y"||e.toLowerCase()==="n")&&this.emit("confirm",e.toLowerCase()==="y"),this.emit("key",e?.toLowerCase(),t),t?.name==="return"&&this._shouldSubmit(e,t)){if(this.opts.validate){let r=this.opts.validate(this.value);r&&(this.error=r instanceof Error?r.message:r,this.state="error",this.rl?.write(this.userInput))}this.state!=="error"&&(this.state="submit")}bn([e,t?.name,t?.sequence],"cancel")&&(this.state="cancel"),(this.state==="submit"||this.state==="cancel")&&this.emit("finalize"),this.render(),(this.state==="submit"||this.state==="cancel")&&this.close()}close(){this.input.unpipe(),this.input.removeListener("keypress",this.onKeypress),this.output.write(`
12
- `),Sr(this.input,!1),this.rl?.close(),this.rl=void 0,this.emit(`${this.state}`,this.value),this.unsubscribe()}restoreCursor(){let e=Ce(this._prevFrame,process.stdout.columns,{hard:!0,trim:!1}).split(`
13
- `).length-1;this.output.write(_.cursor.move(-999,e*-1))}render(){let e=Ce(this._render(this)??"",process.stdout.columns,{hard:!0,trim:!1});if(e!==this._prevFrame){if(this.state==="initial")this.output.write(_.cursor.hide);else{let t=Jc(this._prevFrame,e),r=Mn(this.output);if(this.restoreCursor(),t){let n=Math.max(0,t.numLinesAfter-r),o=Math.max(0,t.numLinesBefore-r),s=t.lines.find(i=>i>=n);if(s===void 0){this._prevFrame=e;return}if(t.lines.length===1){this.output.write(_.cursor.move(0,s-o)),this.output.write(_.erase.lines(1));let i=e.split(`
11
+ `)}var _,Gc,Hc,J,Kc,vn,It,bn,Ot,Sr,Cs,yr,wr,vr,Mn=E(()=>{En();_=ze(yn(),1);Gc=["up","down","left","right","space","enter","cancel"],Hc=["January","February","March","April","May","June","July","August","September","October","November","December"],J={actions:new Set(Gc),aliases:new Map([["k","up"],["j","down"],["h","left"],["l","right"],["","cancel"],["escape","cancel"]]),messages:{cancel:"Canceled",error:"Something went wrong"},withGuide:!0,date:{monthNames:[...Hc],messages:{required:"Please enter a valid date",invalidMonth:"There are only 12 months in a year",invalidDay:(e,t)=>`There are only ${e} days in ${t}`,afterMin:e=>`Date must be on or after ${e.toISOString().slice(0,10)}`,beforeMax:e=>`Date must be on or before ${e.toISOString().slice(0,10)}`}}};Kc=globalThis.process.platform.startsWith("win"),vn=Symbol("clack:cancel");It=e=>"columns"in e&&typeof e.columns=="number"?e.columns:80,bn=e=>"rows"in e&&typeof e.rows=="number"?e.rows:20;Ot=class{input;output;_abortSignal;rl;opts;_render;_track=!1;_prevFrame="";_subscribers=new Map;_cursor=0;state="initial";error="";value;userInput="";constructor(e,t=!0){let{input:r=ws,output:n=Cn,render:o,signal:s,...i}=e;this.opts=i,this.onKeypress=this.onKeypress.bind(this),this.close=this.close.bind(this),this.render=this.render.bind(this),this._render=o.bind(this),this._track=t,this._abortSignal=s,this.input=r,this.output=n}unsubscribe(){this._subscribers.clear()}setSubscriber(e,t){let r=this._subscribers.get(e)??[];r.push(t),this._subscribers.set(e,r)}on(e,t){this.setSubscriber(e,{cb:t})}once(e,t){this.setSubscriber(e,{cb:t,once:!0})}emit(e,...t){let r=this._subscribers.get(e)??[],n=[];for(let o of r)o.cb(...t),o.once&&n.push(()=>r.splice(r.indexOf(o),1));for(let o of n)o()}prompt(){return new Promise(e=>{if(this._abortSignal){if(this._abortSignal.aborted)return this.state="cancel",this.close(),e(vn);this._abortSignal.addEventListener("abort",()=>{this.state="cancel",this.close()},{once:!0})}this.rl=Fc.createInterface({input:this.input,tabSize:2,prompt:"",escapeCodeTimeout:50,terminal:!0}),this.rl.prompt(),this.opts.initialUserInput!==void 0&&this._setUserInput(this.opts.initialUserInput,!0),this.input.on("keypress",this.onKeypress),Er(this.input,!0),this.output.on("resize",this.render),this.render(),this.once("submit",()=>{this.output.write(_.cursor.show),this.output.off("resize",this.render),Er(this.input,!1),e(this.value)}),this.once("cancel",()=>{this.output.write(_.cursor.show),this.output.off("resize",this.render),Er(this.input,!1),e(vn)})})}_isActionKey(e,t){return e===" "}_shouldSubmit(e,t){return!0}_setValue(e){this.value=e,this.emit("value",this.value)}_setUserInput(e,t){this.userInput=e??"",this.emit("userInput",this.userInput),t&&this._track&&this.rl&&(this.rl.write(this.userInput),this._cursor=this.rl.cursor)}_clearUserInput(){this.rl?.write(null,{ctrl:!0,name:"u"}),this._setUserInput("")}onKeypress(e,t){if(this._track&&t.name!=="return"&&(t.name&&this._isActionKey(e,t)&&this.rl?.write(null,{ctrl:!0,name:"h"}),this._cursor=this.rl?.cursor??0,this._setUserInput(this.rl?.line)),this.state==="error"&&(this.state="active"),t?.name&&(!this._track&&J.aliases.has(t.name)&&this.emit("cursor",J.aliases.get(t.name)),J.actions.has(t.name)&&this.emit("cursor",t.name)),e&&(e.toLowerCase()==="y"||e.toLowerCase()==="n")&&this.emit("confirm",e.toLowerCase()==="y"),this.emit("key",e?.toLowerCase(),t),t?.name==="return"&&this._shouldSubmit(e,t)){if(this.opts.validate){let r=this.opts.validate(this.value);r&&(this.error=r instanceof Error?r.message:r,this.state="error",this.rl?.write(this.userInput))}this.state!=="error"&&(this.state="submit")}kn([e,t?.name,t?.sequence],"cancel")&&(this.state="cancel"),(this.state==="submit"||this.state==="cancel")&&this.emit("finalize"),this.render(),(this.state==="submit"||this.state==="cancel")&&this.close()}close(){this.input.unpipe(),this.input.removeListener("keypress",this.onKeypress),this.output.write(`
12
+ `),Er(this.input,!1),this.rl?.close(),this.rl=void 0,this.emit(`${this.state}`,this.value),this.unsubscribe()}restoreCursor(){let e=Ce(this._prevFrame,process.stdout.columns,{hard:!0,trim:!1}).split(`
13
+ `).length-1;this.output.write(_.cursor.move(-999,e*-1))}render(){let e=Ce(this._render(this)??"",process.stdout.columns,{hard:!0,trim:!1});if(e!==this._prevFrame){if(this.state==="initial")this.output.write(_.cursor.hide);else{let t=Jc(this._prevFrame,e),r=bn(this.output);if(this.restoreCursor(),t){let n=Math.max(0,t.numLinesAfter-r),o=Math.max(0,t.numLinesBefore-r),s=t.lines.find(i=>i>=n);if(s===void 0){this._prevFrame=e;return}if(t.lines.length===1){this.output.write(_.cursor.move(0,s-o)),this.output.write(_.erase.lines(1));let i=e.split(`
14
14
  `);this.output.write(i[s]),this._prevFrame=e,this.output.write(_.cursor.move(0,i.length-s-1));return}else if(t.lines.length>1){if(n<o)s=n;else{let a=s-o;a>0&&this.output.write(_.cursor.move(0,a))}this.output.write(_.erase.down());let i=e.split(`
15
15
  `).slice(s);this.output.write(i.join(`
16
- `)),this._prevFrame=e;return}}this.output.write(_.erase.down())}this.output.write(e),this.state==="initial"&&(this.state="active"),this._prevFrame=e}}},yr=class extends Pt{get cursor(){return this.value?0:1}get _value(){return this.cursor===0}constructor(t){super(t,!1),this.value=!!t.initialValue,this.on("userInput",()=>{this.value=this._value}),this.on("confirm",r=>{this.output.write(_.cursor.move(0,-1)),this.value=r,this.state="submit",this.close()}),this.on("cursor",()=>{this.value=!this.value})}},Cs=class extends Pt{options;cursor=0;get _value(){return this.options[this.cursor].value}get _enabledOptions(){return this.options.filter(e=>e.disabled!==!0)}toggleAll(){let e=this._enabledOptions,t=this.value!==void 0&&this.value.length===e.length;this.value=t?[]:e.map(r=>r.value)}toggleInvert(){let e=this.value;if(!e)return;let t=this._enabledOptions.filter(r=>!e.includes(r.value));this.value=t.map(r=>r.value)}toggleValue(){this.value===void 0&&(this.value=[]);let e=this.value.includes(this._value);this.value=e?this.value.filter(t=>t!==this._value):[...this.value,this._value]}constructor(e){super(e,!1),this.options=e.options,this.value=[...e.initialValues??[]];let t=Math.max(this.options.findIndex(({value:r})=>r===e.cursorAt),0);this.cursor=this.options[t].disabled?Qe(t,1,this.options):t,this.on("key",r=>{r==="a"&&this.toggleAll(),r==="i"&&this.toggleInvert()}),this.on("cursor",r=>{switch(r){case"left":case"up":this.cursor=Qe(this.cursor,-1,this.options);break;case"down":case"right":this.cursor=Qe(this.cursor,1,this.options);break;case"space":this.toggleValue();break}})}},wr=class extends Pt{_mask="\u2022";get cursor(){return this._cursor}get masked(){return this.userInput.replaceAll(/./g,this._mask)}get userInputWithCursor(){if(this.state==="submit"||this.state==="cancel")return this.masked;let t=this.userInput;if(this.cursor>=t.length)return`${this.masked}${vn(["inverse","hidden"],"_")}`;let r=this.masked,n=r.slice(0,this.cursor),o=r.slice(this.cursor);return`${n}${vn("inverse",o[0])}${o.slice(1)}`}clear(){this._clearUserInput()}constructor({mask:t,...r}){super(r),this._mask=t??"\u2022",this.on("userInput",n=>{this._setValue(n)})}},vr=class extends Pt{options;cursor=0;get _selectedValue(){return this.options[this.cursor]}changeValue(){this.value=this._selectedValue.value}constructor(t){super(t,!1),this.options=t.options;let r=this.options.findIndex(({value:o})=>o===t.initialValue),n=r===-1?0:r;this.cursor=this.options[n].disabled?Qe(n,1,this.options):n,this.changeValue(),this.on("cursor",o=>{switch(o){case"left":case"up":this.cursor=Qe(this.cursor,-1,this.options);break;case"down":case"right":this.cursor=Qe(this.cursor,1,this.options);break}this.changeValue()})}},Cr=class extends Pt{get userInputWithCursor(){if(this.state==="submit")return this.userInput;let t=this.userInput;if(this.cursor>=t.length)return`${this.userInput}\u2588`;let r=t.slice(0,this.cursor),[n,...o]=t.slice(this.cursor);return`${r}${vn("inverse",n)}${o.join("")}`}get cursor(){return this._cursor}constructor(t){super({...t,initialUserInput:t.initialUserInput??t.initialValue}),this.on("userInput",r=>{this._setValue(r)}),this.on("finalize",()=>{this.value||(this.value=t.defaultValue),this.value===void 0&&(this.value="")})}}});import{styleText as d,stripVTControlCharacters as tf}from"node:util";import de from"node:process";function Bc(){return de.platform!=="win32"?de.env.TERM!=="linux":!!de.env.CI||!!de.env.WT_SESSION||!!de.env.TERMINUS_SUBLIME||de.env.ConEmuTask==="{cmd::Cmder}"||de.env.TERM_PROGRAM==="Terminus-Sublime"||de.env.TERM_PROGRAM==="vscode"||de.env.TERM==="xterm-256color"||de.env.TERM==="alacritty"||de.env.TERMINAL_EMULATOR==="JetBrains-JediTerm"}var Nt,Tn,Yc,A,Vc,xs,Ts,Mr,zc,y,ke,sf,af,Rn,br,Zc,ks,bs,qc,Ms,Xc,Qc,_c,$c,cf,el,tl,rl,nl,Dt,Rs,ol,In,Ut,te,pe,Lt,je,At,Is,sl,il,Wt,xr,al,jt,lf,kr,Fe,uf,Tr,On,Pn=E(()=>{xn();xn();Sn();fn();Nt=Ze(wn(),1);Tn=Bc(),Yc=()=>process.env.CI==="true",A=(e,t)=>Tn?e:t,Vc=A("\u25C6","*"),xs=A("\u25A0","x"),Ts=A("\u25B2","x"),Mr=A("\u25C7","o"),zc=A("\u250C","T"),y=A("\u2502","|"),ke=A("\u2514","\u2014"),sf=A("\u2510","T"),af=A("\u2518","\u2014"),Rn=A("\u25CF",">"),br=A("\u25CB"," "),Zc=A("\u25FB","[\u2022]"),ks=A("\u25FC","[+]"),bs=A("\u25FB","[ ]"),qc=A("\u25AA","\u2022"),Ms=A("\u2500","-"),Xc=A("\u256E","+"),Qc=A("\u251C","+"),_c=A("\u256F","+"),$c=A("\u2570","+"),cf=A("\u256D","+"),el=A("\u25CF","\u2022"),tl=A("\u25C6","*"),rl=A("\u25B2","!"),nl=A("\u25A0","x"),Dt=e=>{switch(e){case"initial":case"active":return d("cyan",Vc);case"cancel":return d("red",xs);case"error":return d("yellow",Ts);case"submit":return d("green",Mr)}},Rs=e=>{switch(e){case"initial":case"active":return d("cyan",y);case"cancel":return d("red",y);case"error":return d("yellow",y);case"submit":return d("green",y)}},ol=(e,t,r,n,o)=>{let s=t,i=0;for(let a=r;a<n;a++){let c=e[a];if(s=s-c.length,i++,s<=o)break}return{lineCount:s,removals:i}},In=({cursor:e,options:t,style:r,output:n=process.stdout,maxItems:o=Number.POSITIVE_INFINITY,columnPadding:s=0,rowPadding:i=4})=>{let a=Ot(n)-s,c=Mn(n),l=d("dim","..."),p=Math.max(c-i,0),f=Math.max(Math.min(o,p),5),h=0;e>=f-3&&(h=Math.max(Math.min(e-f+3,t.length-f),0));let S=f<t.length&&h>0,g=f<t.length&&h+f<t.length,C=Math.min(h+f,t.length),w=[],x=0;S&&x++,g&&x++;let D=h+(S?1:0),U=C-(g?1:0);for(let R=D;R<U;R++){let L=Ce(r(t[R],R===e),a,{hard:!0,trim:!1}).split(`
17
- `);w.push(L),x+=L.length}if(x>p){let R=0,L=0,j=x,W=e-D,Q=(v,b)=>ol(w,j,v,b,p);S?({lineCount:j,removals:R}=Q(0,W),j>p&&({lineCount:j,removals:L}=Q(W+1,w.length))):({lineCount:j,removals:L}=Q(W+1,w.length),j>p&&({lineCount:j,removals:R}=Q(0,W))),R>0&&(S=!0,w.splice(0,R)),L>0&&(g=!0,w.splice(w.length-L,L))}let H=[];S&&H.push(l);for(let R of w)for(let L of R)H.push(L);return g&&H.push(l),H},Ut=e=>{let t=e.active??"Yes",r=e.inactive??"No";return new yr({active:t,inactive:r,signal:e.signal,input:e.input,output:e.output,initialValue:e.initialValue??!0,render(){let n=e.withGuide??J.withGuide,o=`${Dt(this.state)} `,s=n?`${d("gray",y)} `:"",i=We(e.output,e.message,s,o),a=`${n?`${d("gray",y)}
16
+ `)),this._prevFrame=e;return}}this.output.write(_.erase.down())}this.output.write(e),this.state==="initial"&&(this.state="active"),this._prevFrame=e}}},Sr=class extends Ot{get cursor(){return this.value?0:1}get _value(){return this.cursor===0}constructor(t){super(t,!1),this.value=!!t.initialValue,this.on("userInput",()=>{this.value=this._value}),this.on("confirm",r=>{this.output.write(_.cursor.move(0,-1)),this.value=r,this.state="submit",this.close()}),this.on("cursor",()=>{this.value=!this.value})}},Cs=class extends Ot{options;cursor=0;get _value(){return this.options[this.cursor].value}get _enabledOptions(){return this.options.filter(e=>e.disabled!==!0)}toggleAll(){let e=this._enabledOptions,t=this.value!==void 0&&this.value.length===e.length;this.value=t?[]:e.map(r=>r.value)}toggleInvert(){let e=this.value;if(!e)return;let t=this._enabledOptions.filter(r=>!e.includes(r.value));this.value=t.map(r=>r.value)}toggleValue(){this.value===void 0&&(this.value=[]);let e=this.value.includes(this._value);this.value=e?this.value.filter(t=>t!==this._value):[...this.value,this._value]}constructor(e){super(e,!1),this.options=e.options,this.value=[...e.initialValues??[]];let t=Math.max(this.options.findIndex(({value:r})=>r===e.cursorAt),0);this.cursor=this.options[t].disabled?Xe(t,1,this.options):t,this.on("key",r=>{r==="a"&&this.toggleAll(),r==="i"&&this.toggleInvert()}),this.on("cursor",r=>{switch(r){case"left":case"up":this.cursor=Xe(this.cursor,-1,this.options);break;case"down":case"right":this.cursor=Xe(this.cursor,1,this.options);break;case"space":this.toggleValue();break}})}},yr=class extends Ot{_mask="\u2022";get cursor(){return this._cursor}get masked(){return this.userInput.replaceAll(/./g,this._mask)}get userInputWithCursor(){if(this.state==="submit"||this.state==="cancel")return this.masked;let t=this.userInput;if(this.cursor>=t.length)return`${this.masked}${wn(["inverse","hidden"],"_")}`;let r=this.masked,n=r.slice(0,this.cursor),o=r.slice(this.cursor);return`${n}${wn("inverse",o[0])}${o.slice(1)}`}clear(){this._clearUserInput()}constructor({mask:t,...r}){super(r),this._mask=t??"\u2022",this.on("userInput",n=>{this._setValue(n)})}},wr=class extends Ot{options;cursor=0;get _selectedValue(){return this.options[this.cursor]}changeValue(){this.value=this._selectedValue.value}constructor(t){super(t,!1),this.options=t.options;let r=this.options.findIndex(({value:o})=>o===t.initialValue),n=r===-1?0:r;this.cursor=this.options[n].disabled?Xe(n,1,this.options):n,this.changeValue(),this.on("cursor",o=>{switch(o){case"left":case"up":this.cursor=Xe(this.cursor,-1,this.options);break;case"down":case"right":this.cursor=Xe(this.cursor,1,this.options);break}this.changeValue()})}},vr=class extends Ot{get userInputWithCursor(){if(this.state==="submit")return this.userInput;let t=this.userInput;if(this.cursor>=t.length)return`${this.userInput}\u2588`;let r=t.slice(0,this.cursor),[n,...o]=t.slice(this.cursor);return`${r}${wn("inverse",n)}${o.join("")}`}get cursor(){return this._cursor}constructor(t){super({...t,initialUserInput:t.initialUserInput??t.initialValue}),this.on("userInput",r=>{this._setValue(r)}),this.on("finalize",()=>{this.value||(this.value=t.defaultValue),this.value===void 0&&(this.value="")})}}});import{styleText as d,stripVTControlCharacters as tf}from"node:util";import de from"node:process";function Bc(){return de.platform!=="win32"?de.env.TERM!=="linux":!!de.env.CI||!!de.env.WT_SESSION||!!de.env.TERMINUS_SUBLIME||de.env.ConEmuTask==="{cmd::Cmder}"||de.env.TERM_PROGRAM==="Terminus-Sublime"||de.env.TERM_PROGRAM==="vscode"||de.env.TERM==="xterm-256color"||de.env.TERM==="alacritty"||de.env.TERMINAL_EMULATOR==="JetBrains-JediTerm"}var At,xn,Yc,A,Vc,xs,Ts,br,zc,y,ke,sf,af,Tn,kr,Zc,ks,bs,qc,Ms,Xc,Qc,_c,$c,cf,el,tl,rl,nl,Nt,Rs,ol,Rn,Dt,te,pe,Ut,je,Pt,Is,sl,il,Lt,Mr,al,Wt,lf,Cr,Fe,uf,xr,In,On=E(()=>{Mn();Mn();En();mn();At=ze(yn(),1);xn=Bc(),Yc=()=>process.env.CI==="true",A=(e,t)=>xn?e:t,Vc=A("\u25C6","*"),xs=A("\u25A0","x"),Ts=A("\u25B2","x"),br=A("\u25C7","o"),zc=A("\u250C","T"),y=A("\u2502","|"),ke=A("\u2514","\u2014"),sf=A("\u2510","T"),af=A("\u2518","\u2014"),Tn=A("\u25CF",">"),kr=A("\u25CB"," "),Zc=A("\u25FB","[\u2022]"),ks=A("\u25FC","[+]"),bs=A("\u25FB","[ ]"),qc=A("\u25AA","\u2022"),Ms=A("\u2500","-"),Xc=A("\u256E","+"),Qc=A("\u251C","+"),_c=A("\u256F","+"),$c=A("\u2570","+"),cf=A("\u256D","+"),el=A("\u25CF","\u2022"),tl=A("\u25C6","*"),rl=A("\u25B2","!"),nl=A("\u25A0","x"),Nt=e=>{switch(e){case"initial":case"active":return d("cyan",Vc);case"cancel":return d("red",xs);case"error":return d("yellow",Ts);case"submit":return d("green",br)}},Rs=e=>{switch(e){case"initial":case"active":return d("cyan",y);case"cancel":return d("red",y);case"error":return d("yellow",y);case"submit":return d("green",y)}},ol=(e,t,r,n,o)=>{let s=t,i=0;for(let a=r;a<n;a++){let c=e[a];if(s=s-c.length,i++,s<=o)break}return{lineCount:s,removals:i}},Rn=({cursor:e,options:t,style:r,output:n=process.stdout,maxItems:o=Number.POSITIVE_INFINITY,columnPadding:s=0,rowPadding:i=4})=>{let a=It(n)-s,c=bn(n),l=d("dim","..."),p=Math.max(c-i,0),f=Math.max(Math.min(o,p),5),h=0;e>=f-3&&(h=Math.max(Math.min(e-f+3,t.length-f),0));let S=f<t.length&&h>0,g=f<t.length&&h+f<t.length,C=Math.min(h+f,t.length),w=[],x=0;S&&x++,g&&x++;let D=h+(S?1:0),U=C-(g?1:0);for(let R=D;R<U;R++){let L=Ce(r(t[R],R===e),a,{hard:!0,trim:!1}).split(`
17
+ `);w.push(L),x+=L.length}if(x>p){let R=0,L=0,j=x,W=e-D,Q=(v,b)=>ol(w,j,v,b,p);S?({lineCount:j,removals:R}=Q(0,W),j>p&&({lineCount:j,removals:L}=Q(W+1,w.length))):({lineCount:j,removals:L}=Q(W+1,w.length),j>p&&({lineCount:j,removals:R}=Q(0,W))),R>0&&(S=!0,w.splice(0,R)),L>0&&(g=!0,w.splice(w.length-L,L))}let H=[];S&&H.push(l);for(let R of w)for(let L of R)H.push(L);return g&&H.push(l),H},Dt=e=>{let t=e.active??"Yes",r=e.inactive??"No";return new Sr({active:t,inactive:r,signal:e.signal,input:e.input,output:e.output,initialValue:e.initialValue??!0,render(){let n=e.withGuide??J.withGuide,o=`${Nt(this.state)} `,s=n?`${d("gray",y)} `:"",i=We(e.output,e.message,s,o),a=`${n?`${d("gray",y)}
18
18
  `:""}${i}
19
19
  `,c=this.value?t:r;switch(this.state){case"submit":{let l=n?`${d("gray",y)} `:"";return`${a}${l}${d("dim",c)}`}case"cancel":{let l=n?`${d("gray",y)} `:"";return`${a}${l}${d(["strikethrough","dim"],c)}${n?`
20
- ${d("gray",y)}`:""}`}default:{let l=n?`${d("cyan",y)} `:"",p=n?d("cyan",ke):"";return`${a}${l}${this.value?`${d("green",Rn)} ${t}`:`${d("dim",br)} ${d("dim",t)}`}${e.vertical?n?`
20
+ ${d("gray",y)}`:""}`}default:{let l=n?`${d("cyan",y)} `:"",p=n?d("cyan",ke):"";return`${a}${l}${this.value?`${d("green",Tn)} ${t}`:`${d("dim",kr)} ${d("dim",t)}`}${e.vertical?n?`
21
21
  ${d("cyan",y)} `:`
22
- `:` ${d("dim","/")} `}${this.value?`${d("dim",br)} ${d("dim",r)}`:`${d("green",Rn)} ${r}`}
22
+ `:` ${d("dim","/")} `}${this.value?`${d("dim",kr)} ${d("dim",r)}`:`${d("green",Tn)} ${r}`}
23
23
  ${p}
24
24
  `}}}}).prompt()},te={message:(e=[],{symbol:t=d("gray",y),secondarySymbol:r=d("gray",y),output:n=process.stdout,spacing:o=1,withGuide:s}={})=>{let i=[],a=s??J.withGuide,c=a?r:"",l=a?`${t} `:"",p=a?`${r} `:"";for(let h=0;h<o;h++)i.push(c);let f=Array.isArray(e)?e:e.split(`
25
25
  `);if(f.length>0){let[h,...S]=f;h.length>0?i.push(`${l}${h}`):i.push(a?t:"");for(let g of S)g.length>0?i.push(`${p}${g}`):i.push(a?r:"")}n.write(`${i.join(`
26
26
  `)}
27
- `)},info:(e,t)=>{te.message(e,{...t,symbol:d("blue",el)})},success:(e,t)=>{te.message(e,{...t,symbol:d("green",tl)})},step:(e,t)=>{te.message(e,{...t,symbol:d("green",Mr)})},warn:(e,t)=>{te.message(e,{...t,symbol:d("yellow",rl)})},warning:(e,t)=>{te.warn(e,t)},error:(e,t)=>{te.message(e,{...t,symbol:d("red",nl)})}},pe=(e="",t)=>{let r=t?.output??process.stdout,n=t?.withGuide??J.withGuide?`${d("gray",ke)} `:"";r.write(`${n}${d("red",e)}
27
+ `)},info:(e,t)=>{te.message(e,{...t,symbol:d("blue",el)})},success:(e,t)=>{te.message(e,{...t,symbol:d("green",tl)})},step:(e,t)=>{te.message(e,{...t,symbol:d("green",br)})},warn:(e,t)=>{te.message(e,{...t,symbol:d("yellow",rl)})},warning:(e,t)=>{te.warn(e,t)},error:(e,t)=>{te.message(e,{...t,symbol:d("red",nl)})}},pe=(e="",t)=>{let r=t?.output??process.stdout,n=t?.withGuide??J.withGuide?`${d("gray",ke)} `:"";r.write(`${n}${d("red",e)}
28
28
 
29
- `)},Lt=(e="",t)=>{let r=t?.output??process.stdout,n=t?.withGuide??J.withGuide?`${d("gray",zc)} `:"";r.write(`${n}${e}
29
+ `)},Ut=(e="",t)=>{let r=t?.output??process.stdout,n=t?.withGuide??J.withGuide?`${d("gray",zc)} `:"";r.write(`${n}${e}
30
30
  `)},je=(e="",t)=>{let r=t?.output??process.stdout,n=t?.withGuide??J.withGuide?`${d("gray",y)}
31
31
  ${d("gray",ke)} `:"";r.write(`${n}${e}
32
32
 
33
- `)},At=(e,t)=>e.split(`
33
+ `)},Pt=(e,t)=>e.split(`
34
34
  `).map(r=>t(r)).join(`
35
- `),Is=e=>{let t=(n,o)=>{let s=n.label??String(n.value);return o==="disabled"?`${d("gray",bs)} ${At(s,i=>d(["strikethrough","gray"],i))}${n.hint?` ${d("dim",`(${n.hint??"disabled"})`)}`:""}`:o==="active"?`${d("cyan",Zc)} ${s}${n.hint?` ${d("dim",`(${n.hint})`)}`:""}`:o==="selected"?`${d("green",ks)} ${At(s,i=>d("dim",i))}${n.hint?` ${d("dim",`(${n.hint})`)}`:""}`:o==="cancelled"?`${At(s,i=>d(["strikethrough","dim"],i))}`:o==="active-selected"?`${d("green",ks)} ${s}${n.hint?` ${d("dim",`(${n.hint})`)}`:""}`:o==="submitted"?`${At(s,i=>d("dim",i))}`:`${d("dim",bs)} ${At(s,i=>d("dim",i))}`},r=e.required??!0;return new Cs({options:e.options,signal:e.signal,input:e.input,output:e.output,initialValues:e.initialValues,required:r,cursorAt:e.cursorAt,validate(n){if(r&&(n===void 0||n.length===0))return`Please select at least one option.
36
- ${d("reset",d("dim",`Press ${d(["gray","bgWhite","inverse"]," space ")} to select, ${d("gray",d("bgWhite",d("inverse"," enter ")))} to submit`))}`},render(){let n=e.withGuide??J.withGuide,o=We(e.output,e.message,n?`${Rs(this.state)} `:"",`${Dt(this.state)} `),s=`${n?`${d("gray",y)}
35
+ `),Is=e=>{let t=(n,o)=>{let s=n.label??String(n.value);return o==="disabled"?`${d("gray",bs)} ${Pt(s,i=>d(["strikethrough","gray"],i))}${n.hint?` ${d("dim",`(${n.hint??"disabled"})`)}`:""}`:o==="active"?`${d("cyan",Zc)} ${s}${n.hint?` ${d("dim",`(${n.hint})`)}`:""}`:o==="selected"?`${d("green",ks)} ${Pt(s,i=>d("dim",i))}${n.hint?` ${d("dim",`(${n.hint})`)}`:""}`:o==="cancelled"?`${Pt(s,i=>d(["strikethrough","dim"],i))}`:o==="active-selected"?`${d("green",ks)} ${s}${n.hint?` ${d("dim",`(${n.hint})`)}`:""}`:o==="submitted"?`${Pt(s,i=>d("dim",i))}`:`${d("dim",bs)} ${Pt(s,i=>d("dim",i))}`},r=e.required??!0;return new Cs({options:e.options,signal:e.signal,input:e.input,output:e.output,initialValues:e.initialValues,required:r,cursorAt:e.cursorAt,validate(n){if(r&&(n===void 0||n.length===0))return`Please select at least one option.
36
+ ${d("reset",d("dim",`Press ${d(["gray","bgWhite","inverse"]," space ")} to select, ${d("gray",d("bgWhite",d("inverse"," enter ")))} to submit`))}`},render(){let n=e.withGuide??J.withGuide,o=We(e.output,e.message,n?`${Rs(this.state)} `:"",`${Nt(this.state)} `),s=`${n?`${d("gray",y)}
37
37
  `:""}${o}
38
38
  `,i=this.value??[],a=(c,l)=>{if(c.disabled)return t(c,"disabled");let p=i.includes(c.value);return l&&p?t(c,"active-selected"):p?t(c,"selected"):t(c,l?"active":"inactive")};switch(this.state){case"submit":{let c=this.options.filter(({value:p})=>i.includes(p)).map(p=>t(p,"submitted")).join(d("dim",", "))||d("dim","none"),l=We(e.output,c,n?`${d("gray",y)} `:"");return`${s}${l}`}case"cancel":{let c=this.options.filter(({value:p})=>i.includes(p)).map(p=>t(p,"cancelled")).join(d("dim",", "));if(c.trim()==="")return`${s}${d("gray",y)}`;let l=We(e.output,c,n?`${d("gray",y)} `:"");return`${s}${l}${n?`
39
39
  ${d("gray",y)}`:""}`}case"error":{let c=n?`${d("yellow",y)} `:"",l=this.error.split(`
40
40
  `).map((h,S)=>S===0?`${n?`${d("yellow",ke)} `:""}${d("yellow",h)}`:` ${h}`).join(`
41
41
  `),p=s.split(`
42
42
  `).length,f=l.split(`
43
- `).length+1;return`${s}${c}${In({output:e.output,options:this.options,cursor:this.cursor,maxItems:e.maxItems,columnPadding:c.length,rowPadding:p+f,style:a}).join(`
43
+ `).length+1;return`${s}${c}${Rn({output:e.output,options:this.options,cursor:this.cursor,maxItems:e.maxItems,columnPadding:c.length,rowPadding:p+f,style:a}).join(`
44
44
  ${c}`)}
45
45
  ${l}
46
46
  `}default:{let c=n?`${d("cyan",y)} `:"",l=s.split(`
47
- `).length,p=n?2:1;return`${s}${c}${In({output:e.output,options:this.options,cursor:this.cursor,maxItems:e.maxItems,columnPadding:c.length,rowPadding:l+p,style:a}).join(`
47
+ `).length,p=n?2:1;return`${s}${c}${Rn({output:e.output,options:this.options,cursor:this.cursor,maxItems:e.maxItems,columnPadding:c.length,rowPadding:l+p,style:a}).join(`
48
48
  ${c}`)}
49
49
  ${n?d("cyan",ke):""}
50
50
  `}}}}).prompt()},sl=e=>d("dim",e),il=(e,t,r)=>{let n={hard:!0,trim:!1},o=Ce(e,t,n).split(`
51
- `),s=o.reduce((c,l)=>Math.max(ee(l),c),0),i=o.map(r).reduce((c,l)=>Math.max(ee(l),c),0),a=t-(i-s);return Ce(e,a,n)},Wt=(e="",t="",r)=>{let n=r?.output??de.stdout,o=r?.withGuide??J.withGuide,s=r?.format??sl,i=["",...il(e,Ot(n)-6,s).split(`
51
+ `),s=o.reduce((c,l)=>Math.max(ee(l),c),0),i=o.map(r).reduce((c,l)=>Math.max(ee(l),c),0),a=t-(i-s);return Ce(e,a,n)},Lt=(e="",t="",r)=>{let n=r?.output??de.stdout,o=r?.withGuide??J.withGuide,s=r?.format??sl,i=["",...il(e,It(n)-6,s).split(`
52
52
  `).map(s),""],a=ee(t),c=Math.max(i.reduce((h,S)=>{let g=ee(S);return g>h?g:h},0),a)+2,l=i.map(h=>`${d("gray",y)} ${h}${" ".repeat(c-ee(h))}${d("gray",y)}`).join(`
53
53
  `),p=o?`${d("gray",y)}
54
- `:"",f=o?Qc:$c;n.write(`${p}${d("green",Mr)} ${d("reset",t)} ${d("gray",Ms.repeat(Math.max(c-a-1,1))+Xc)}
54
+ `:"",f=o?Qc:$c;n.write(`${p}${d("green",br)} ${d("reset",t)} ${d("gray",Ms.repeat(Math.max(c-a-1,1))+Xc)}
55
55
  ${l}
56
56
  ${d("gray",f+Ms.repeat(c+2)+_c)}
57
- `)},xr=e=>new wr({validate:e.validate,mask:e.mask??qc,signal:e.signal,input:e.input,output:e.output,render(){let t=e.withGuide??J.withGuide,r=`${t?`${d("gray",y)}
58
- `:""}${Dt(this.state)} ${e.message}
57
+ `)},Mr=e=>new yr({validate:e.validate,mask:e.mask??qc,signal:e.signal,input:e.input,output:e.output,render(){let t=e.withGuide??J.withGuide,r=`${t?`${d("gray",y)}
58
+ `:""}${Nt(this.state)} ${e.message}
59
59
  `,n=this.userInputWithCursor,o=this.masked;switch(this.state){case"error":{let s=t?`${d("yellow",y)} `:"",i=t?`${d("yellow",ke)} `:"",a=o??"";return e.clearOnError&&this.clear(),`${r.trim()}
60
60
  ${s}${a}
61
61
  ${i}${d("yellow",this.error)}
62
62
  `}case"submit":{let s=t?`${d("gray",y)} `:"",i=o?d("dim",o):"";return`${r}${s}${i}`}case"cancel":{let s=t?`${d("gray",y)} `:"",i=o?d(["strikethrough","dim"],o):"";return`${r}${s}${i}${o&&t?`
63
63
  ${d("gray",y)}`:""}`}default:{let s=t?`${d("cyan",y)} `:"",i=t?d("cyan",ke):"";return`${r}${s}${n}
64
64
  ${i}
65
- `}}}}).prompt(),al=e=>d("magenta",e),jt=({indicator:e="dots",onCancel:t,output:r=process.stdout,cancelMessage:n,errorMessage:o,frames:s=Tn?["\u25D2","\u25D0","\u25D3","\u25D1"]:["\u2022","o","O","0"],delay:i=Tn?80:120,signal:a,...c}={})=>{let l=Yc(),p,f,h=!1,S=!1,g="",C,w=performance.now(),x=Ot(r),D=c?.styleFrame??al,U=T=>{let ie=T>1?o??J.messages.error:n??J.messages.cancel;S=T===1,h&&(q(ie,T),S&&typeof t=="function"&&t())},H=()=>U(2),R=()=>U(1),L=()=>{process.on("uncaughtExceptionMonitor",H),process.on("unhandledRejection",H),process.on("SIGINT",R),process.on("SIGTERM",R),process.on("exit",U),a&&a.addEventListener("abort",R)},j=()=>{process.removeListener("uncaughtExceptionMonitor",H),process.removeListener("unhandledRejection",H),process.removeListener("SIGINT",R),process.removeListener("SIGTERM",R),process.removeListener("exit",U),a&&a.removeEventListener("abort",R)},W=()=>{if(C===void 0)return;l&&r.write(`
65
+ `}}}}).prompt(),al=e=>d("magenta",e),Wt=({indicator:e="dots",onCancel:t,output:r=process.stdout,cancelMessage:n,errorMessage:o,frames:s=xn?["\u25D2","\u25D0","\u25D3","\u25D1"]:["\u2022","o","O","0"],delay:i=xn?80:120,signal:a,...c}={})=>{let l=Yc(),p,f,h=!1,S=!1,g="",C,w=performance.now(),x=It(r),D=c?.styleFrame??al,U=T=>{let ie=T>1?o??J.messages.error:n??J.messages.cancel;S=T===1,h&&(q(ie,T),S&&typeof t=="function"&&t())},H=()=>U(2),R=()=>U(1),L=()=>{process.on("uncaughtExceptionMonitor",H),process.on("unhandledRejection",H),process.on("SIGINT",R),process.on("SIGTERM",R),process.on("exit",U),a&&a.addEventListener("abort",R)},j=()=>{process.removeListener("uncaughtExceptionMonitor",H),process.removeListener("unhandledRejection",H),process.removeListener("SIGINT",R),process.removeListener("SIGTERM",R),process.removeListener("exit",U),a&&a.removeEventListener("abort",R)},W=()=>{if(C===void 0)return;l&&r.write(`
66
66
  `);let T=Ce(C,x,{hard:!0,trim:!1}).split(`
67
- `);T.length>1&&r.write(Nt.cursor.up(T.length-1)),r.write(Nt.cursor.to(0)),r.write(Nt.erase.down())},Q=T=>T.replace(/\.+$/,""),v=T=>{let ie=(performance.now()-T)/1e3,Pe=Math.floor(ie/60),Ae=Math.floor(ie%60);return Pe>0?`[${Pe}m ${Ae}s]`:`[${Ae}s]`},b=c.withGuide??J.withGuide,I=(T="")=>{h=!0,p=vs({output:r}),g=Q(T),w=performance.now(),b&&r.write(`${d("gray",y)}
68
- `);let ie=0,Pe=0;L(),f=setInterval(()=>{if(l&&g===C)return;W(),C=g;let Ae=D(s[ie]),dr;if(l)dr=`${Ae} ${g}...`;else if(e==="timer")dr=`${Ae} ${g} ${v(w)}`;else{let $a=".".repeat(Math.floor(Pe)).slice(0,3);dr=`${Ae} ${g}${$a}`}let _a=Ce(dr,x,{hard:!0,trim:!1});r.write(_a),ie=ie+1<s.length?ie+1:0,Pe=Pe<4?Pe+.125:0},i)},q=(T="",ie=0,Pe=!1)=>{if(!h)return;h=!1,clearInterval(f),W();let Ae=ie===0?d("green",Mr):ie===1?d("red",xs):d("red",Ts);g=T??g,Pe||(e==="timer"?r.write(`${Ae} ${g} ${v(w)}
67
+ `);T.length>1&&r.write(At.cursor.up(T.length-1)),r.write(At.cursor.to(0)),r.write(At.erase.down())},Q=T=>T.replace(/\.+$/,""),v=T=>{let ie=(performance.now()-T)/1e3,Pe=Math.floor(ie/60),Ae=Math.floor(ie%60);return Pe>0?`[${Pe}m ${Ae}s]`:`[${Ae}s]`},b=c.withGuide??J.withGuide,I=(T="")=>{h=!0,p=vs({output:r}),g=Q(T),w=performance.now(),b&&r.write(`${d("gray",y)}
68
+ `);let ie=0,Pe=0;L(),f=setInterval(()=>{if(l&&g===C)return;W(),C=g;let Ae=D(s[ie]),ur;if(l)ur=`${Ae} ${g}...`;else if(e==="timer")ur=`${Ae} ${g} ${v(w)}`;else{let $a=".".repeat(Math.floor(Pe)).slice(0,3);ur=`${Ae} ${g}${$a}`}let _a=Ce(ur,x,{hard:!0,trim:!1});r.write(_a),ie=ie+1<s.length?ie+1:0,Pe=Pe<4?Pe+.125:0},i)},q=(T="",ie=0,Pe=!1)=>{if(!h)return;h=!1,clearInterval(f),W();let Ae=ie===0?d("green",br):ie===1?d("red",xs):d("red",Ts);g=T??g,Pe||(e==="timer"?r.write(`${Ae} ${g} ${v(w)}
69
69
  `):r.write(`${Ae} ${g}
70
- `)),j(),p()};return{start:I,stop:(T="")=>q(T,0),message:(T="")=>{g=Q(T??g)},cancel:(T="")=>q(T,1),error:(T="")=>q(T,2),clear:()=>q("",0,!0),get isCancelled(){return S}}},lf={light:A("\u2500","-"),heavy:A("\u2501","="),block:A("\u2588","#")},kr=(e,t)=>e.includes(`
70
+ `)),j(),p()};return{start:I,stop:(T="")=>q(T,0),message:(T="")=>{g=Q(T??g)},cancel:(T="")=>q(T,1),error:(T="")=>q(T,2),clear:()=>q("",0,!0),get isCancelled(){return S}}},lf={light:A("\u2500","-"),heavy:A("\u2501","="),block:A("\u2588","#")},Cr=(e,t)=>e.includes(`
71
71
  `)?e.split(`
72
72
  `).map(r=>t(r)).join(`
73
- `):t(e),Fe=e=>{let t=(r,n)=>{let o=r.label??String(r.value);switch(n){case"disabled":return`${d("gray",br)} ${kr(o,s=>d("gray",s))}${r.hint?` ${d("dim",`(${r.hint??"disabled"})`)}`:""}`;case"selected":return`${kr(o,s=>d("dim",s))}`;case"active":return`${d("green",Rn)} ${o}${r.hint?` ${d("dim",`(${r.hint})`)}`:""}`;case"cancelled":return`${kr(o,s=>d(["strikethrough","dim"],s))}`;default:return`${d("dim",br)} ${kr(o,s=>d("dim",s))}`}};return new vr({options:e.options,signal:e.signal,input:e.input,output:e.output,initialValue:e.initialValue,render(){let r=e.withGuide??J.withGuide,n=`${Dt(this.state)} `,o=`${Rs(this.state)} `,s=We(e.output,e.message,o,n),i=`${r?`${d("gray",y)}
73
+ `):t(e),Fe=e=>{let t=(r,n)=>{let o=r.label??String(r.value);switch(n){case"disabled":return`${d("gray",kr)} ${Cr(o,s=>d("gray",s))}${r.hint?` ${d("dim",`(${r.hint??"disabled"})`)}`:""}`;case"selected":return`${Cr(o,s=>d("dim",s))}`;case"active":return`${d("green",Tn)} ${o}${r.hint?` ${d("dim",`(${r.hint})`)}`:""}`;case"cancelled":return`${Cr(o,s=>d(["strikethrough","dim"],s))}`;default:return`${d("dim",kr)} ${Cr(o,s=>d("dim",s))}`}};return new wr({options:e.options,signal:e.signal,input:e.input,output:e.output,initialValue:e.initialValue,render(){let r=e.withGuide??J.withGuide,n=`${Nt(this.state)} `,o=`${Rs(this.state)} `,s=We(e.output,e.message,o,n),i=`${r?`${d("gray",y)}
74
74
  `:""}${s}
75
75
  `;switch(this.state){case"submit":{let a=r?`${d("gray",y)} `:"",c=We(e.output,t(this.options[this.cursor],"selected"),a);return`${i}${c}`}case"cancel":{let a=r?`${d("gray",y)} `:"",c=We(e.output,t(this.options[this.cursor],"cancelled"),a);return`${i}${c}${r?`
76
76
  ${d("gray",y)}`:""}`}default:{let a=r?`${d("cyan",y)} `:"",c=r?d("cyan",ke):"",l=i.split(`
77
- `).length,p=r?2:1;return`${i}${a}${In({output:e.output,cursor:this.cursor,options:this.options,maxItems:e.maxItems,columnPadding:a.length,rowPadding:l+p,style:(f,h)=>t(f,f.disabled?"disabled":h?"active":"inactive")}).join(`
77
+ `).length,p=r?2:1;return`${i}${a}${Rn({output:e.output,cursor:this.cursor,options:this.options,maxItems:e.maxItems,columnPadding:a.length,rowPadding:l+p,style:(f,h)=>t(f,f.disabled?"disabled":h?"active":"inactive")}).join(`
78
78
  ${a}`)}
79
79
  ${c}
80
- `}}}}).prompt()},uf=`${d("gray",y)} `,Tr=async(e,t)=>{for(let r of e){if(r.enabled===!1)continue;let n=jt(t);n.start(r.title);let o=await r.task(n.message);n.stop(o||r.title)}},On=e=>new Cr({validate:e.validate,placeholder:e.placeholder,defaultValue:e.defaultValue,initialValue:e.initialValue,output:e.output,signal:e.signal,input:e.input,render(){let t=e?.withGuide??J.withGuide,r=`${`${t?`${d("gray",y)}
81
- `:""}${Dt(this.state)} `}${e.message}
80
+ `}}}}).prompt()},uf=`${d("gray",y)} `,xr=async(e,t)=>{for(let r of e){if(r.enabled===!1)continue;let n=Wt(t);n.start(r.title);let o=await r.task(n.message);n.stop(o||r.title)}},In=e=>new vr({validate:e.validate,placeholder:e.placeholder,defaultValue:e.defaultValue,initialValue:e.initialValue,output:e.output,signal:e.signal,input:e.input,render(){let t=e?.withGuide??J.withGuide,r=`${`${t?`${d("gray",y)}
81
+ `:""}${Nt(this.state)} `}${e.message}
82
82
  `,n=e.placeholder?d("inverse",e.placeholder[0])+d("dim",e.placeholder.slice(1)):d(["inverse","hidden"],"_"),o=this.userInput?this.userInputWithCursor:n,s=this.value??"";switch(this.state){case"error":{let i=this.error?` ${d("yellow",this.error)}`:"",a=t?`${d("yellow",y)} `:"",c=t?d("yellow",ke):"";return`${r.trim()}
83
83
  ${a}${o}
84
84
  ${c}${i}
85
85
  `}case"submit":{let i=s?` ${d("dim",s)}`:"",a=t?d("gray",y):"";return`${r}${a}${i}`}case"cancel":{let i=s?` ${d(["strikethrough","dim"],s)}`:"",a=t?d("gray",y):"";return`${r}${a}${i}${s.trim()?`
86
86
  ${a}`:""}`}default:{let i=t?`${d("cyan",y)} `:"",a=t?d("cyan",ke):"";return`${r}${i}${o}
87
87
  ${a}
88
- `}}}}).prompt()});import{spawn as cl}from"node:child_process";function ye(e,t,r){return cl(e,t??[],{windowsHide:!0,...r})}var at=E(()=>{"use strict"});import{readFileSync as ll,writeFileSync as Ps,existsSync as As,mkdirSync as ul}from"fs";import{join as Ns,dirname as dl}from"path";import{homedir as Ds}from"os";var Z,Ge=E(()=>{"use strict";Z=class{static DEFAULTS={CLAUDE_MEM_MODEL:"claude-haiku-4-5-20251001",CLAUDE_MEM_CONTEXT_OBSERVATIONS:"50",CLAUDE_MEM_WORKER_PORT:String(37700+(process.getuid?.()??77)%100),CLAUDE_MEM_WORKER_HOST:"127.0.0.1",CLAUDE_MEM_SKIP_TOOLS:"ListMcpResourcesTool,SlashCommand,Skill,TodoWrite,AskUserQuestion",CLAUDE_MEM_PROVIDER:"claude",CLAUDE_MEM_CLAUDE_AUTH_METHOD:"subscription",CLAUDE_MEM_GEMINI_API_KEY:"",CLAUDE_MEM_GEMINI_MODEL:"gemini-2.5-flash-lite",CLAUDE_MEM_GEMINI_RATE_LIMITING_ENABLED:"true",CLAUDE_MEM_GEMINI_MAX_CONTEXT_MESSAGES:"20",CLAUDE_MEM_GEMINI_MAX_TOKENS:"100000",CLAUDE_MEM_OPENROUTER_API_KEY:"",CLAUDE_MEM_OPENROUTER_MODEL:"xiaomi/mimo-v2-flash:free",CLAUDE_MEM_OPENROUTER_SITE_URL:"",CLAUDE_MEM_OPENROUTER_APP_NAME:"claude-mem",CLAUDE_MEM_OPENROUTER_MAX_CONTEXT_MESSAGES:"20",CLAUDE_MEM_OPENROUTER_MAX_TOKENS:"100000",CLAUDE_MEM_DATA_DIR:Ns(Ds(),".claude-mem"),CLAUDE_MEM_LOG_LEVEL:"INFO",CLAUDE_MEM_PYTHON_VERSION:"3.13",CLAUDE_CODE_PATH:"",CLAUDE_MEM_MODE:"code",CLAUDE_MEM_CONTEXT_SHOW_READ_TOKENS:"false",CLAUDE_MEM_CONTEXT_SHOW_WORK_TOKENS:"false",CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_AMOUNT:"false",CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_PERCENT:"true",CLAUDE_MEM_CONTEXT_FULL_COUNT:"0",CLAUDE_MEM_CONTEXT_FULL_FIELD:"narrative",CLAUDE_MEM_CONTEXT_SESSION_COUNT:"10",CLAUDE_MEM_CONTEXT_SHOW_LAST_SUMMARY:"true",CLAUDE_MEM_CONTEXT_SHOW_LAST_MESSAGE:"false",CLAUDE_MEM_CONTEXT_SHOW_TERMINAL_OUTPUT:"true",CLAUDE_MEM_WELCOME_HINT_ENABLED:"true",CLAUDE_MEM_FOLDER_CLAUDEMD_ENABLED:"false",CLAUDE_MEM_FOLDER_USE_LOCAL_MD:"false",CLAUDE_MEM_TRANSCRIPTS_ENABLED:"true",CLAUDE_MEM_TRANSCRIPTS_CONFIG_PATH:Ns(Ds(),".claude-mem","transcript-watch.json"),CLAUDE_MEM_MAX_CONCURRENT_AGENTS:"2",CLAUDE_MEM_HOOK_FAIL_LOUD_THRESHOLD:"3",CLAUDE_MEM_EXCLUDED_PROJECTS:"",CLAUDE_MEM_FOLDER_MD_EXCLUDE:"[]",CLAUDE_MEM_SEMANTIC_INJECT:"false",CLAUDE_MEM_SEMANTIC_INJECT_LIMIT:"5",CLAUDE_MEM_TIER_ROUTING_ENABLED:"true",CLAUDE_MEM_TIER_SIMPLE_MODEL:"haiku",CLAUDE_MEM_TIER_SUMMARY_MODEL:"",CLAUDE_MEM_CHROMA_ENABLED:"true",CLAUDE_MEM_CHROMA_MODE:"local",CLAUDE_MEM_CHROMA_HOST:"127.0.0.1",CLAUDE_MEM_CHROMA_PORT:"8000",CLAUDE_MEM_CHROMA_SSL:"false",CLAUDE_MEM_CHROMA_API_KEY:"",CLAUDE_MEM_CHROMA_TENANT:"default_tenant",CLAUDE_MEM_CHROMA_DATABASE:"default_database",CLAUDE_MEM_TELEGRAM_ENABLED:"true",CLAUDE_MEM_TELEGRAM_BOT_TOKEN:"",CLAUDE_MEM_TELEGRAM_CHAT_ID:"",CLAUDE_MEM_TELEGRAM_TRIGGER_TYPES:"security_alert",CLAUDE_MEM_TELEGRAM_TRIGGER_CONCEPTS:"",CLAUDE_MEM_QUEUE_ENGINE:"sqlite",CLAUDE_MEM_REDIS_URL:"",CLAUDE_MEM_REDIS_HOST:"127.0.0.1",CLAUDE_MEM_REDIS_PORT:"6379",CLAUDE_MEM_REDIS_MODE:"external",CLAUDE_MEM_QUEUE_REDIS_PREFIX:`claude_mem_${process.env.CLAUDE_MEM_WORKER_PORT??String(37700+(process.getuid?.()??77)%100)}`,CLAUDE_MEM_AUTH_MODE:"api-key",CLAUDE_MEM_RUNTIME:"worker"};static getAllDefaults(){return{...this.DEFAULTS}}static get(t){return process.env[t]??this.DEFAULTS[t]}static getInt(t){let r=this.get(t);return parseInt(r,10)}static getBool(t){let r=this.get(t);return r==="true"||r===!0}static applyEnvOverrides(t){let r={...t};for(let n of Object.keys(this.DEFAULTS))process.env[n]!==void 0&&(r[n]=process.env[n]);return r}static loadFromFile(t){try{if(!As(t)){let i=this.getAllDefaults();try{let a=dl(t);As(a)||ul(a,{recursive:!0}),Ps(t,JSON.stringify(i,null,2),"utf-8"),console.log("[SETTINGS] Created settings file with defaults:",t)}catch(a){console.warn("[SETTINGS] Failed to create settings file, using in-memory defaults:",t,a instanceof Error?a.message:String(a))}return this.applyEnvOverrides(i)}let r=ll(t,"utf-8"),n=JSON.parse(r),o=n;if(n.env&&typeof n.env=="object"){o=n.env;try{Ps(t,JSON.stringify(o,null,2),"utf-8"),console.log("[SETTINGS] Migrated settings file from nested to flat schema:",t)}catch(i){console.warn("[SETTINGS] Failed to auto-migrate settings file:",t,i instanceof Error?i.message:String(i))}}let s={...this.DEFAULTS};for(let i of Object.keys(this.DEFAULTS))o[i]!==void 0&&(s[i]=o[i]);return this.applyEnvOverrides(s)}catch(r){return console.warn("[SETTINGS] Failed to load settings, using defaults:",t,r instanceof Error?r.message:String(r)),this.applyEnvOverrides(this.getAllDefaults())}}}});import{appendFileSync as pl,existsSync as Us,mkdirSync as ml,readFileSync as fl}from"fs";import{join as gl}from"path";var An,Nn,u,K=E(()=>{"use strict";re();An=(s=>(s[s.DEBUG=0]="DEBUG",s[s.INFO=1]="INFO",s[s.WARN=2]="WARN",s[s.ERROR=3]="ERROR",s[s.SILENT=4]="SILENT",s))(An||{}),Nn=class{level=null;useColor;logFilePath=null;logFileInitialized=!1;constructor(){this.useColor=process.stdout.isTTY??!1}ensureLogFileInitialized(){if(!this.logFileInitialized){this.logFileInitialized=!0;try{let t=G.logsDir();Us(t)||ml(t,{recursive:!0});let r=new Date().toISOString().split("T")[0];this.logFilePath=gl(t,`claude-mem-${r}.log`)}catch(t){console.error("[LOGGER] Failed to initialize log file:",t instanceof Error?t.message:String(t)),this.logFilePath=null}}}getLevel(){if(this.level===null)try{let t=G.settings();if(Us(t)){let r=fl(t,"utf-8"),o=(JSON.parse(r).CLAUDE_MEM_LOG_LEVEL||"INFO").toUpperCase();this.level=An[o]??1}else this.level=1}catch(t){console.error("[LOGGER] Failed to load log level from settings:",t instanceof Error?t.message:String(t)),this.level=1}return this.level}correlationId(t,r){return`obs-${t}-${r}`}sessionId(t){return`session-${t}`}formatData(t){if(t==null)return"";if(typeof t=="string")return t;if(typeof t=="number"||typeof t=="boolean")return t.toString();if(typeof t=="object"){if(t instanceof Error)return this.getLevel()===0?`${t.message}
89
- ${t.stack}`:t.message;if(Array.isArray(t))return`[${t.length} items]`;let r=Object.keys(t);return r.length===0?"{}":r.length<=3?JSON.stringify(t):`{${r.length} keys: ${r.slice(0,3).join(", ")}...}`}return String(t)}formatTool(t,r){if(!r)return t;let n=r;if(typeof r=="string")try{n=JSON.parse(r)}catch{n=r}if(t==="Bash"&&n.command)return`${t}(${n.command})`;if(n.file_path)return`${t}(${n.file_path})`;if(n.notebook_path)return`${t}(${n.notebook_path})`;if(t==="Glob"&&n.pattern)return`${t}(${n.pattern})`;if(t==="Grep"&&n.pattern)return`${t}(${n.pattern})`;if(n.url)return`${t}(${n.url})`;if(n.query)return`${t}(${n.query})`;if(t==="Task"){if(n.subagent_type)return`${t}(${n.subagent_type})`;if(n.description)return`${t}(${n.description})`}return t==="Skill"&&n.skill?`${t}(${n.skill})`:t==="LSP"&&n.operation?`${t}(${n.operation})`:t}formatTimestamp(t){let r=t.getFullYear(),n=String(t.getMonth()+1).padStart(2,"0"),o=String(t.getDate()).padStart(2,"0"),s=String(t.getHours()).padStart(2,"0"),i=String(t.getMinutes()).padStart(2,"0"),a=String(t.getSeconds()).padStart(2,"0"),c=String(t.getMilliseconds()).padStart(3,"0");return`${r}-${n}-${o} ${s}:${i}:${a}.${c}`}log(t,r,n,o,s){if(t<this.getLevel())return;this.ensureLogFileInitialized();let i=this.formatTimestamp(new Date),a=An[t].padEnd(5),c=r.padEnd(6),l="";o?.correlationId?l=`[${o.correlationId}] `:o?.sessionId&&(l=`[session-${o.sessionId}] `);let p="";if(s!=null)if(s instanceof Error)p=this.getLevel()===0?`
88
+ `}}}}).prompt()});import{spawn as cl}from"node:child_process";function ye(e,t,r){return cl(e,t??[],{windowsHide:!0,...r})}var it=E(()=>{"use strict"});import{readFileSync as ll,writeFileSync as Ps,existsSync as As,mkdirSync as ul}from"fs";import{join as Ns,dirname as dl}from"path";import{homedir as Ds}from"os";var Z,Ge=E(()=>{"use strict";Z=class{static DEFAULTS={CLAUDE_MEM_MODEL:"claude-haiku-4-5-20251001",CLAUDE_MEM_CONTEXT_OBSERVATIONS:"50",CLAUDE_MEM_WORKER_PORT:String(37700+(process.getuid?.()??77)%100),CLAUDE_MEM_WORKER_HOST:"127.0.0.1",CLAUDE_MEM_SKIP_TOOLS:"ListMcpResourcesTool,SlashCommand,Skill,TodoWrite,AskUserQuestion",CLAUDE_MEM_PROVIDER:"claude",CLAUDE_MEM_CLAUDE_AUTH_METHOD:"subscription",CLAUDE_MEM_GEMINI_API_KEY:"",CLAUDE_MEM_GEMINI_MODEL:"gemini-2.5-flash-lite",CLAUDE_MEM_GEMINI_RATE_LIMITING_ENABLED:"true",CLAUDE_MEM_GEMINI_MAX_CONTEXT_MESSAGES:"20",CLAUDE_MEM_GEMINI_MAX_TOKENS:"100000",CLAUDE_MEM_OPENROUTER_API_KEY:"",CLAUDE_MEM_OPENROUTER_MODEL:"xiaomi/mimo-v2-flash:free",CLAUDE_MEM_OPENROUTER_SITE_URL:"",CLAUDE_MEM_OPENROUTER_APP_NAME:"claude-mem",CLAUDE_MEM_OPENROUTER_MAX_CONTEXT_MESSAGES:"20",CLAUDE_MEM_OPENROUTER_MAX_TOKENS:"100000",CLAUDE_MEM_DATA_DIR:Ns(Ds(),".claude-mem"),CLAUDE_MEM_LOG_LEVEL:"INFO",CLAUDE_MEM_PYTHON_VERSION:"3.13",CLAUDE_CODE_PATH:"",CLAUDE_MEM_MODE:"code",CLAUDE_MEM_CONTEXT_SHOW_READ_TOKENS:"false",CLAUDE_MEM_CONTEXT_SHOW_WORK_TOKENS:"false",CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_AMOUNT:"false",CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_PERCENT:"true",CLAUDE_MEM_CONTEXT_FULL_COUNT:"0",CLAUDE_MEM_CONTEXT_FULL_FIELD:"narrative",CLAUDE_MEM_CONTEXT_SESSION_COUNT:"10",CLAUDE_MEM_CONTEXT_SHOW_LAST_SUMMARY:"true",CLAUDE_MEM_CONTEXT_SHOW_LAST_MESSAGE:"false",CLAUDE_MEM_CONTEXT_SHOW_TERMINAL_OUTPUT:"true",CLAUDE_MEM_WELCOME_HINT_ENABLED:"true",CLAUDE_MEM_FOLDER_CLAUDEMD_ENABLED:"false",CLAUDE_MEM_FOLDER_USE_LOCAL_MD:"false",CLAUDE_MEM_TRANSCRIPTS_ENABLED:"true",CLAUDE_MEM_TRANSCRIPTS_CONFIG_PATH:Ns(Ds(),".claude-mem","transcript-watch.json"),CLAUDE_MEM_MAX_CONCURRENT_AGENTS:"2",CLAUDE_MEM_HOOK_FAIL_LOUD_THRESHOLD:"3",CLAUDE_MEM_EXCLUDED_PROJECTS:"",CLAUDE_MEM_FOLDER_MD_EXCLUDE:"[]",CLAUDE_MEM_SEMANTIC_INJECT:"false",CLAUDE_MEM_SEMANTIC_INJECT_LIMIT:"5",CLAUDE_MEM_TIER_ROUTING_ENABLED:"true",CLAUDE_MEM_TIER_SIMPLE_MODEL:"haiku",CLAUDE_MEM_TIER_SUMMARY_MODEL:"",CLAUDE_MEM_CHROMA_ENABLED:"true",CLAUDE_MEM_CHROMA_MODE:"local",CLAUDE_MEM_CHROMA_HOST:"127.0.0.1",CLAUDE_MEM_CHROMA_PORT:"8000",CLAUDE_MEM_CHROMA_SSL:"false",CLAUDE_MEM_CHROMA_API_KEY:"",CLAUDE_MEM_CHROMA_TENANT:"default_tenant",CLAUDE_MEM_CHROMA_DATABASE:"default_database",CLAUDE_MEM_TELEGRAM_ENABLED:"true",CLAUDE_MEM_TELEGRAM_BOT_TOKEN:"",CLAUDE_MEM_TELEGRAM_CHAT_ID:"",CLAUDE_MEM_TELEGRAM_TRIGGER_TYPES:"security_alert",CLAUDE_MEM_TELEGRAM_TRIGGER_CONCEPTS:"",CLAUDE_MEM_QUEUE_ENGINE:"sqlite",CLAUDE_MEM_REDIS_URL:"",CLAUDE_MEM_REDIS_HOST:"127.0.0.1",CLAUDE_MEM_REDIS_PORT:"6379",CLAUDE_MEM_REDIS_MODE:"external",CLAUDE_MEM_QUEUE_REDIS_PREFIX:`claude_mem_${process.env.CLAUDE_MEM_WORKER_PORT??String(37700+(process.getuid?.()??77)%100)}`,CLAUDE_MEM_AUTH_MODE:"api-key",CLAUDE_MEM_RUNTIME:"worker"};static getAllDefaults(){return{...this.DEFAULTS}}static get(t){return process.env[t]??this.DEFAULTS[t]}static getInt(t){let r=this.get(t);return parseInt(r,10)}static getBool(t){let r=this.get(t);return r==="true"||r===!0}static applyEnvOverrides(t){let r={...t};for(let n of Object.keys(this.DEFAULTS))process.env[n]!==void 0&&(r[n]=process.env[n]);return r}static loadFromFile(t){try{if(!As(t)){let i=this.getAllDefaults();try{let a=dl(t);As(a)||ul(a,{recursive:!0}),Ps(t,JSON.stringify(i,null,2),"utf-8"),console.log("[SETTINGS] Created settings file with defaults:",t)}catch(a){console.warn("[SETTINGS] Failed to create settings file, using in-memory defaults:",t,a instanceof Error?a.message:String(a))}return this.applyEnvOverrides(i)}let r=ll(t,"utf-8"),n=JSON.parse(r),o=n;if(n.env&&typeof n.env=="object"){o=n.env;try{Ps(t,JSON.stringify(o,null,2),"utf-8"),console.log("[SETTINGS] Migrated settings file from nested to flat schema:",t)}catch(i){console.warn("[SETTINGS] Failed to auto-migrate settings file:",t,i instanceof Error?i.message:String(i))}}let s={...this.DEFAULTS};for(let i of Object.keys(this.DEFAULTS))o[i]!==void 0&&(s[i]=o[i]);return this.applyEnvOverrides(s)}catch(r){return console.warn("[SETTINGS] Failed to load settings, using defaults:",t,r instanceof Error?r.message:String(r)),this.applyEnvOverrides(this.getAllDefaults())}}}});import{appendFileSync as pl,existsSync as Us,mkdirSync as ml,readFileSync as fl}from"fs";import{join as gl}from"path";var Pn,An,u,K=E(()=>{"use strict";re();Pn=(s=>(s[s.DEBUG=0]="DEBUG",s[s.INFO=1]="INFO",s[s.WARN=2]="WARN",s[s.ERROR=3]="ERROR",s[s.SILENT=4]="SILENT",s))(Pn||{}),An=class{level=null;useColor;logFilePath=null;logFileInitialized=!1;constructor(){this.useColor=process.stdout.isTTY??!1}ensureLogFileInitialized(){if(!this.logFileInitialized){this.logFileInitialized=!0;try{let t=G.logsDir();Us(t)||ml(t,{recursive:!0});let r=new Date().toISOString().split("T")[0];this.logFilePath=gl(t,`claude-mem-${r}.log`)}catch(t){console.error("[LOGGER] Failed to initialize log file:",t instanceof Error?t.message:String(t)),this.logFilePath=null}}}getLevel(){if(this.level===null)try{let t=G.settings();if(Us(t)){let r=fl(t,"utf-8"),o=(JSON.parse(r).CLAUDE_MEM_LOG_LEVEL||"INFO").toUpperCase();this.level=Pn[o]??1}else this.level=1}catch(t){console.error("[LOGGER] Failed to load log level from settings:",t instanceof Error?t.message:String(t)),this.level=1}return this.level}correlationId(t,r){return`obs-${t}-${r}`}sessionId(t){return`session-${t}`}formatData(t){if(t==null)return"";if(typeof t=="string")return t;if(typeof t=="number"||typeof t=="boolean")return t.toString();if(typeof t=="object"){if(t instanceof Error)return this.getLevel()===0?`${t.message}
89
+ ${t.stack}`:t.message;if(Array.isArray(t))return`[${t.length} items]`;let r=Object.keys(t);return r.length===0?"{}":r.length<=3?JSON.stringify(t):`{${r.length} keys: ${r.slice(0,3).join(", ")}...}`}return String(t)}formatTool(t,r){if(!r)return t;let n=r;if(typeof r=="string")try{n=JSON.parse(r)}catch{n=r}if(t==="Bash"&&n.command)return`${t}(${n.command})`;if(n.file_path)return`${t}(${n.file_path})`;if(n.notebook_path)return`${t}(${n.notebook_path})`;if(t==="Glob"&&n.pattern)return`${t}(${n.pattern})`;if(t==="Grep"&&n.pattern)return`${t}(${n.pattern})`;if(n.url)return`${t}(${n.url})`;if(n.query)return`${t}(${n.query})`;if(t==="Task"){if(n.subagent_type)return`${t}(${n.subagent_type})`;if(n.description)return`${t}(${n.description})`}return t==="Skill"&&n.skill?`${t}(${n.skill})`:t==="LSP"&&n.operation?`${t}(${n.operation})`:t}formatTimestamp(t){let r=t.getFullYear(),n=String(t.getMonth()+1).padStart(2,"0"),o=String(t.getDate()).padStart(2,"0"),s=String(t.getHours()).padStart(2,"0"),i=String(t.getMinutes()).padStart(2,"0"),a=String(t.getSeconds()).padStart(2,"0"),c=String(t.getMilliseconds()).padStart(3,"0");return`${r}-${n}-${o} ${s}:${i}:${a}.${c}`}log(t,r,n,o,s){if(t<this.getLevel())return;this.ensureLogFileInitialized();let i=this.formatTimestamp(new Date),a=Pn[t].padEnd(5),c=r.padEnd(6),l="";o?.correlationId?l=`[${o.correlationId}] `:o?.sessionId&&(l=`[session-${o.sessionId}] `);let p="";if(s!=null)if(s instanceof Error)p=this.getLevel()===0?`
90
90
  ${s.message}
91
91
  ${s.stack}`:` ${s.message}`;else if(this.getLevel()===0&&typeof s=="object")try{p=`
92
92
  `+JSON.stringify(s,null,2)}catch{p=" "+this.formatData(s)}else p=" "+this.formatData(s);let f="";if(o){let{sessionId:S,memorySessionId:g,correlationId:C,...w}=o;Object.keys(w).length>0&&(f=` {${Object.entries(w).map(([D,U])=>`${D}=${U}`).join(", ")}}`)}let h=`[${i}] [${a}] [${c}] ${l}${n}${f}${p}`;if(this.logFilePath)try{pl(this.logFilePath,h+`
93
93
  `,"utf8")}catch(S){process.stderr.write(`[LOGGER] Failed to write to log file: ${S instanceof Error?S.message:String(S)}
94
94
  `)}else process.stderr.write(h+`
95
95
  `)}debug(t,r,n,o){this.log(0,t,r,n,o)}info(t,r,n,o){this.log(1,t,r,n,o)}warn(t,r,n,o){this.log(2,t,r,n,o)}error(t,r,n,o){this.log(3,t,r,n,o)}dataIn(t,r,n,o){this.info(t,`\u2192 ${r}`,n,o)}dataOut(t,r,n,o){this.info(t,`\u2190 ${r}`,n,o)}success(t,r,n,o){this.info(t,`\u2713 ${r}`,n,o)}failure(t,r,n,o){this.error(t,`\u2717 ${r}`,n,o)}timing(t,r,n,o){this.info(t,`\u23F1 ${r}`,o,{duration:`${n}ms`})}happyPathError(t,r,n,o,s=""){let l=((new Error().stack||"").split(`
96
- `)[2]||"").match(/at\s+(?:.*\s+)?\(?([^:]+):(\d+):(\d+)\)?/),p=l?`${l[1].split("/").pop()}:${l[2]}`:"unknown",f={...n,location:p};return this.warn(t,`[HAPPY-PATH] ${r}`,f,o),s}},u=new Nn});import{join as O,dirname as hl,basename as El}from"path";import{homedir as Ls}from"os";import{existsSync as Sl,mkdirSync as xf,readFileSync as yl}from"fs";import{execSync as Rf}from"child_process";import{fileURLToPath as wl}from"url";function vl(){return typeof __dirname<"u"?__dirname:hl(wl(import.meta.url))}function Cl(){if(process.env.CLAUDE_MEM_DATA_DIR)return process.env.CLAUDE_MEM_DATA_DIR;let e=O(Ls(),".claude-mem"),t=O(e,"settings.json");try{if(Sl(t)){let r=JSON.parse(yl(t,"utf-8")),n=r.env??r;if(n.CLAUDE_MEM_DATA_DIR)return n.CLAUDE_MEM_DATA_DIR}}catch{}return e}var Pf,N,ct,Ft,kl,bl,Ml,xl,Tl,lt,Af,Rl,Ws,Nf,Df,Uf,Lf,G,re=E(()=>{"use strict";K();Pf=vl();N=Cl(),ct=process.env.CLAUDE_CONFIG_DIR||O(Ls(),".claude"),Ft=O(ct,"plugins","marketplaces","thedotmack"),kl=O(N,"archives"),bl=O(N,"logs"),Ml=O(N,"trash"),xl=O(N,"backups"),Tl=O(N,"modes"),lt=O(N,"settings.json"),Af=O(N,"claude-mem.db"),Rl=O(N,"vector-db"),Ws=O(N,"observer-sessions"),Nf=El(Ws),Df=O(ct,"settings.json"),Uf=O(ct,"commands"),Lf=O(ct,"CLAUDE.md"),G={dataDir:()=>N,workerPid:()=>O(N,"worker.pid"),serverBetaPid:()=>O(N,".server-beta.pid"),serverBetaPort:()=>O(N,".server-beta.port"),serverBetaRuntime:()=>O(N,".server-beta.runtime.json"),settings:()=>O(N,"settings.json"),database:()=>O(N,"claude-mem.db"),chroma:()=>O(N,"chroma"),combinedCerts:()=>O(N,"combined_certs.pem"),transcriptsConfig:()=>O(N,"transcript-watch.json"),transcriptsState:()=>O(N,"transcript-watch-state.json"),corpora:()=>O(N,"corpora"),supervisorRegistry:()=>O(N,"supervisor.json"),envFile:()=>O(N,".env"),logsDir:()=>bl,archives:()=>kl,trash:()=>Ml,backups:()=>xl,modes:()=>Tl,vectorDb:()=>Rl,observerSessions:()=>Ws}});import{execFile as Il}from"child_process";import{promisify as Ol}from"util";import{existsSync as Hf,readFileSync as Jf,writeFileSync as Kf,mkdirSync as Bf,unlinkSync as Yf}from"fs";import{userInfo as zf}from"os";import{join as qf}from"path";var _f,js=E(()=>{"use strict";re();K();_f=Ol(Il)});import{existsSync as Dn,readFileSync as Gs,writeFileSync as Pl,mkdirSync as Al,chmodSync as Fs}from"fs";function Hs(e){let t={};for(let r of e.split(`
96
+ `)[2]||"").match(/at\s+(?:.*\s+)?\(?([^:]+):(\d+):(\d+)\)?/),p=l?`${l[1].split("/").pop()}:${l[2]}`:"unknown",f={...n,location:p};return this.warn(t,`[HAPPY-PATH] ${r}`,f,o),s}},u=new An});import{join as O,dirname as hl,basename as El}from"path";import{homedir as Ls}from"os";import{existsSync as Sl,mkdirSync as xf,readFileSync as yl}from"fs";import{execSync as Rf}from"child_process";import{fileURLToPath as wl}from"url";function vl(){return typeof __dirname<"u"?__dirname:hl(wl(import.meta.url))}function Cl(){if(process.env.CLAUDE_MEM_DATA_DIR)return process.env.CLAUDE_MEM_DATA_DIR;let e=O(Ls(),".claude-mem"),t=O(e,"settings.json");try{if(Sl(t)){let r=JSON.parse(yl(t,"utf-8")),n=r.env??r;if(n.CLAUDE_MEM_DATA_DIR)return n.CLAUDE_MEM_DATA_DIR}}catch{}return e}var Pf,N,at,jt,kl,bl,Ml,xl,Tl,ct,Af,Rl,Ws,Nf,Df,Uf,Lf,G,re=E(()=>{"use strict";K();Pf=vl();N=Cl(),at=process.env.CLAUDE_CONFIG_DIR||O(Ls(),".claude"),jt=O(at,"plugins","marketplaces","thedotmack"),kl=O(N,"archives"),bl=O(N,"logs"),Ml=O(N,"trash"),xl=O(N,"backups"),Tl=O(N,"modes"),ct=O(N,"settings.json"),Af=O(N,"claude-mem.db"),Rl=O(N,"vector-db"),Ws=O(N,"observer-sessions"),Nf=El(Ws),Df=O(at,"settings.json"),Uf=O(at,"commands"),Lf=O(at,"CLAUDE.md"),G={dataDir:()=>N,workerPid:()=>O(N,"worker.pid"),serverBetaPid:()=>O(N,".server-beta.pid"),serverBetaPort:()=>O(N,".server-beta.port"),serverBetaRuntime:()=>O(N,".server-beta.runtime.json"),settings:()=>O(N,"settings.json"),database:()=>O(N,"claude-mem.db"),chroma:()=>O(N,"chroma"),combinedCerts:()=>O(N,"combined_certs.pem"),transcriptsConfig:()=>O(N,"transcript-watch.json"),transcriptsState:()=>O(N,"transcript-watch-state.json"),corpora:()=>O(N,"corpora"),supervisorRegistry:()=>O(N,"supervisor.json"),envFile:()=>O(N,".env"),logsDir:()=>bl,archives:()=>kl,trash:()=>Ml,backups:()=>xl,modes:()=>Tl,vectorDb:()=>Rl,observerSessions:()=>Ws}});import{execFile as Il}from"child_process";import{promisify as Ol}from"util";import{existsSync as Hf,readFileSync as Jf,writeFileSync as Kf,mkdirSync as Bf,unlinkSync as Yf}from"fs";import{userInfo as zf}from"os";import{join as qf}from"path";var _f,js=E(()=>{"use strict";re();K();_f=Ol(Il)});import{existsSync as Nn,readFileSync as Gs,writeFileSync as Pl,mkdirSync as Al,chmodSync as Fs}from"fs";function Dn(){return process.env.CLAUDE_MEM_ENV_FILE??G.envFile()}function Hs(e){let t={};for(let r of e.split(`
97
97
  `)){let n=r.trim();if(!n||n.startsWith("#"))continue;let o=n.indexOf("=");if(o===-1)continue;let s=n.slice(0,o).trim(),i=n.slice(o+1).trim();(i.startsWith('"')&&i.endsWith('"')||i.startsWith("'")&&i.endsWith("'"))&&(i=i.slice(1,-1)),s&&(t[s]=i)}return t}function Nl(e){let t=["# claude-mem credentials","# This file stores keys and gateway settings for the claude-mem memory agent","# Edit this file or use claude-mem settings to configure",""];for(let[r,n]of Object.entries(e))if(n){let o=/[\s#=]/.test(n);t.push(`${r}=${o?`"${n}"`:n}`)}return t.join(`
98
98
  `)+`
99
- `}function Gt(){if(!Dn(He))return{};try{let e=Gs(He,"utf-8"),t=Hs(e),r={};return t.ANTHROPIC_API_KEY&&(r.ANTHROPIC_API_KEY=t.ANTHROPIC_API_KEY),t.ANTHROPIC_BASE_URL&&(r.ANTHROPIC_BASE_URL=t.ANTHROPIC_BASE_URL),t.ANTHROPIC_AUTH_TOKEN&&(r.ANTHROPIC_AUTH_TOKEN=t.ANTHROPIC_AUTH_TOKEN),t.GEMINI_API_KEY&&(r.GEMINI_API_KEY=t.GEMINI_API_KEY),t.OPENROUTER_API_KEY&&(r.OPENROUTER_API_KEY=t.OPENROUTER_API_KEY),r}catch(e){return u.warn("ENV","Failed to load .env file",{path:He},e instanceof Error?e:new Error(String(e))),{}}}function Ht(e){let t={};try{Dn(G.dataDir())||Al(G.dataDir(),{recursive:!0,mode:448}),Fs(G.dataDir(),448),t=Dn(He)?Hs(Gs(He,"utf-8")):{}}catch(n){let o=n instanceof Error?n:new Error(String(n));throw u.error("ENV","Failed to set up env directory or read existing env",{},o),o}let r={...t};e.ANTHROPIC_API_KEY!==void 0&&(e.ANTHROPIC_API_KEY?r.ANTHROPIC_API_KEY=e.ANTHROPIC_API_KEY:delete r.ANTHROPIC_API_KEY),e.ANTHROPIC_BASE_URL!==void 0&&(e.ANTHROPIC_BASE_URL?r.ANTHROPIC_BASE_URL=e.ANTHROPIC_BASE_URL:delete r.ANTHROPIC_BASE_URL),e.ANTHROPIC_AUTH_TOKEN!==void 0&&(e.ANTHROPIC_AUTH_TOKEN?r.ANTHROPIC_AUTH_TOKEN=e.ANTHROPIC_AUTH_TOKEN:delete r.ANTHROPIC_AUTH_TOKEN),e.GEMINI_API_KEY!==void 0&&(e.GEMINI_API_KEY?r.GEMINI_API_KEY=e.GEMINI_API_KEY:delete r.GEMINI_API_KEY),e.OPENROUTER_API_KEY!==void 0&&(e.OPENROUTER_API_KEY?r.OPENROUTER_API_KEY=e.OPENROUTER_API_KEY:delete r.OPENROUTER_API_KEY);try{Pl(He,Nl(r),{encoding:"utf-8",mode:384}),Fs(He,384)}catch(n){throw u.error("ENV","Failed to save .env file",{path:He},n instanceof Error?n:new Error(String(n))),n}}var He,Js=E(()=>{"use strict";K();re();js();He=G.envFile()});function Rr(e){return process.platform==="win32"?Math.round(e*$.WINDOWS_MULTIPLIER):e}var $,Jt=E(()=>{"use strict";$={DEFAULT:3e5,HEALTH_CHECK:3e3,API_REQUEST:3e4,HOOK_READINESS_WAIT:1e4,POST_SPAWN_WAIT:15e3,READINESS_WAIT:3e4,PORT_IN_USE_WAIT:3e3,WORKER_STARTUP_WAIT:1e3,PRE_RESTART_SETTLE_DELAY:2e3,POWERSHELL_COMMAND:1e4,WINDOWS_MULTIPLIER:1.5}});function Un(e=process.env){let t={};for(let[r,n]of Object.entries(e))if(n!==void 0){if(Wl.has(r)){t[r]=n;continue}Ul.has(r)||Ll.has(r)||Dl.some(o=>r.startsWith(o))||(t[r]=n)}return t}var Dl,Ul,Ll,Wl,Ln=E(()=>{"use strict";Dl=["CLAUDECODE_","CLAUDE_CODE_"],Ul=new Set(["CLAUDECODE","CLAUDE_CODE_SESSION","CLAUDE_CODE_ENTRYPOINT","MCP_SESSION_ID"]),Ll=new Set(["HTTP_PROXY","HTTPS_PROXY","ALL_PROXY","NO_PROXY","http_proxy","https_proxy","all_proxy","no_proxy","npm_config_proxy","npm_config_https_proxy"]),Wl=new Set(["CLAUDE_CODE_OAUTH_TOKEN","CLAUDE_CODE_GIT_BASH_PATH","CLAUDE_CODE_USE_BEDROCK","CLAUDE_CODE_USE_VERTEX","ANTHROPIC_BEDROCK_BASE_URL","AWS_REGION","AWS_PROFILE","AWS_ACCESS_KEY_ID","AWS_SECRET_ACCESS_KEY","AWS_SESSION_TOKEN","ANTHROPIC_VERTEX_PROJECT_ID","CLOUD_ML_REGION","GOOGLE_APPLICATION_CREDENTIALS"])});import{spawnSync as jl}from"child_process";import{existsSync as Fl,mkdirSync as Ks,readFileSync as Ys,writeFileSync as Gl}from"fs";import Bs from"path";function be(e){if(!Number.isInteger(e)||e<0||e===0)return!1;try{return process.kill(e,0),!0}catch(t){if(t instanceof Error){let r=t.code;return r==="EPERM"?!0:(u.debug("SYSTEM","PID check failed",{pid:e,code:r}),!1)}return u.warn("SYSTEM","PID check threw non-Error",{pid:e,error:String(t)}),!1}}function Vs(e){if(!Number.isInteger(e)||e<=0)return null;if(process.platform==="linux")try{let t=Ys(`/proc/${e}/stat`,"utf-8"),r=t.lastIndexOf(") ");if(r<0)return null;let o=t.slice(r+2).split(" ")[19];return o&&/^\d+$/.test(o)?o:null}catch(t){return u.debug("SYSTEM","captureProcessStartToken: /proc read failed",{pid:e,error:t instanceof Error?t.message:String(t)}),null}if(process.platform==="win32")return null;try{let t=jl("ps",["-p",String(e),"-o","lstart="],{encoding:"utf-8",timeout:2e3,env:{...process.env,LC_ALL:"C",LANG:"C"}});if(t.status!==0)return null;let r=t.stdout.trim();return r.length>0?r:null}catch(t){return u.debug("SYSTEM","captureProcessStartToken: ps exec failed",{pid:e,error:t instanceof Error?t.message:String(t)}),null}}function Gn(e){if(!e||!be(e.pid))return!1;if(!e.startToken)return!0;let t=Vs(e.pid);if(t===null)return!0;let r=t===e.startToken;return r||u.debug("SYSTEM","verifyPidFileOwnership: start-token mismatch (PID reused)",{pid:e.pid,stored:e.startToken,current:t}),r}function Ir(){return Wn||(Wn=new Fn),Wn}function jn(){let e=Bl.shift();e&&e()}var Hl,Jl,Kl,Fn,Wn,Bl,Kt=E(()=>{"use strict";at();K();Ln();re();Hl=5e3,Jl=1e3,Kl=G.supervisorRegistry();Fn=class{registryPath;entries=new Map;runtimeProcesses=new Map;initialized=!1;constructor(t=Kl){this.registryPath=t}initialize(){if(this.initialized)return;if(this.initialized=!0,Ks(Bs.dirname(this.registryPath),{recursive:!0}),!Fl(this.registryPath)){this.persist();return}try{let n=JSON.parse(Ys(this.registryPath,"utf-8")).processes??{};for(let[o,s]of Object.entries(n))this.entries.set(o,s)}catch(r){r instanceof Error?u.warn("SYSTEM","Failed to parse supervisor registry, rebuilding",{path:this.registryPath},r):u.warn("SYSTEM","Failed to parse supervisor registry, rebuilding",{path:this.registryPath,error:String(r)}),this.entries.clear()}let t=this.pruneDeadEntries();t>0&&u.info("SYSTEM","Removed dead processes from supervisor registry",{removed:t}),this.persist()}register(t,r,n){this.initialize(),this.entries.set(t,r),n&&this.runtimeProcesses.set(t,n),this.persist()}unregister(t){this.initialize();let r=this.entries.get(t);this.entries.delete(t),this.runtimeProcesses.delete(t),this.persist(),r?.type==="sdk"&&jn()}clear(){this.entries.clear(),this.runtimeProcesses.clear(),this.persist()}getAll(){return this.initialize(),Array.from(this.entries.entries()).map(([t,r])=>({id:t,...r})).sort((t,r)=>{let n=Date.parse(t.startedAt),o=Date.parse(r.startedAt);return(Number.isNaN(n)?0:n)-(Number.isNaN(o)?0:o)})}getBySession(t){let r=String(t);return this.getAll().filter(n=>n.sessionId!==void 0&&String(n.sessionId)===r)}getRuntimeProcess(t){return this.runtimeProcesses.get(t)}getByPid(t){return this.getAll().filter(r=>r.pid===t)}pruneDeadEntries(){this.initialize();let t=0,r=0;for(let[n,o]of this.entries)be(o.pid)||(this.entries.delete(n),this.runtimeProcesses.delete(n),t+=1,o.type==="sdk"&&(r+=1));t>0&&this.persist();for(let n=0;n<r;n+=1)jn();return t}async reapSession(t){this.initialize();let r=this.getBySession(t);if(r.length===0)return 0;let n=typeof t=="number"?t:Number(t)||void 0;u.info("SYSTEM",`Reaping ${r.length} process(es) for session ${t}`,{sessionId:n,pids:r.map(a=>a.pid)});let o=r.filter(a=>be(a.pid));for(let a of o)try{typeof a.pgid=="number"&&process.platform!=="win32"?process.kill(-a.pgid,"SIGTERM"):process.kill(a.pid,"SIGTERM")}catch(c){c instanceof Error?c.code!=="ESRCH"&&u.debug("SYSTEM",`Failed to SIGTERM session process PID ${a.pid}`,{pid:a.pid,pgid:a.pgid},c):u.warn("SYSTEM",`Failed to SIGTERM session process PID ${a.pid} (non-Error)`,{pid:a.pid,pgid:a.pgid,error:String(c)})}let s=Date.now()+Hl;for(;Date.now()<s&&o.filter(c=>be(c.pid)).length!==0;)await new Promise(c=>setTimeout(c,100));let i=o.filter(a=>be(a.pid));for(let a of i){u.warn("SYSTEM",`Session process PID ${a.pid} did not exit after SIGTERM, sending SIGKILL`,{pid:a.pid,pgid:a.pgid,sessionId:n});try{typeof a.pgid=="number"&&process.platform!=="win32"?process.kill(-a.pgid,"SIGKILL"):process.kill(a.pid,"SIGKILL")}catch(c){c instanceof Error?c.code!=="ESRCH"&&u.debug("SYSTEM",`Failed to SIGKILL session process PID ${a.pid}`,{pid:a.pid,pgid:a.pgid},c):u.warn("SYSTEM",`Failed to SIGKILL session process PID ${a.pid} (non-Error)`,{pid:a.pid,pgid:a.pgid,error:String(c)})}}if(i.length>0){let a=Date.now()+Jl;for(;Date.now()<a&&i.filter(l=>be(l.pid)).length!==0;)await new Promise(l=>setTimeout(l,100))}for(let a of r)this.entries.delete(a.id),this.runtimeProcesses.delete(a.id);this.persist();for(let a of r)a.type==="sdk"&&jn();return u.info("SYSTEM",`Reaped ${r.length} process(es) for session ${t}`,{sessionId:n,reaped:r.length}),r.length}persist(){let t={processes:Object.fromEntries(this.entries.entries())};Ks(Bs.dirname(this.registryPath),{recursive:!0}),Gl(this.registryPath,JSON.stringify(t,null,2))}},Wn=null;Bl=[]});import{execFile as Yl}from"child_process";import{rmSync as Vl}from"fs";import{promisify as zl}from"util";async function qs(e){let t=e.currentPid??process.pid,r=e.pidFilePath??ql,n=e.registry.getAll(),o=[...n].filter(i=>i.pid!==t).sort((i,a)=>Date.parse(a.startedAt)-Date.parse(i.startedAt));for(let i of o){if(!be(i.pid)){e.registry.unregister(i.id);continue}try{await Zs(i,"SIGTERM")}catch(a){a instanceof Error?u.debug("SYSTEM","Failed to send SIGTERM to child process",{pid:i.pid,pgid:i.pgid,type:i.type},a):u.warn("SYSTEM","Failed to send SIGTERM to child process (non-Error)",{pid:i.pid,pgid:i.pgid,type:i.type,error:String(a)})}}await zs(o,5e3);let s=o.filter(i=>be(i.pid));for(let i of s)try{await Zs(i,"SIGKILL")}catch(a){a instanceof Error?u.debug("SYSTEM","Failed to force kill child process",{pid:i.pid,pgid:i.pgid,type:i.type},a):u.warn("SYSTEM","Failed to force kill child process (non-Error)",{pid:i.pid,pgid:i.pgid,type:i.type,error:String(a)})}await zs(s,1e3);for(let i of o)e.registry.unregister(i.id);for(let i of n.filter(a=>a.pid===t))e.registry.unregister(i.id);try{Vl(r,{force:!0})}catch(i){i instanceof Error?u.debug("SYSTEM","Failed to remove PID file during shutdown",{pidFilePath:r},i):u.warn("SYSTEM","Failed to remove PID file during shutdown (non-Error)",{pidFilePath:r,error:String(i)})}e.registry.pruneDeadEntries()}async function zs(e,t){let r=Date.now()+t;for(;Date.now()<r;){if(e.filter(o=>be(o.pid)).length===0)return;await new Promise(o=>setTimeout(o,100))}}async function Zs(e,t){let{pid:r,pgid:n}=e;if(process.platform!=="win32"){if(typeof n=="number")try{process.kill(-n,t);return}catch(i){if((i instanceof Error?i.code:void 0)!=="ESRCH")throw i}try{process.kill(r,t)}catch(i){if((i instanceof Error?i.code:void 0)!=="ESRCH")throw i}return}if(t==="SIGTERM"){try{process.kill(r,t)}catch(i){if(i instanceof Error&&i.code==="ESRCH")return;throw i}return}let o=await Xl();if(o){await new Promise((i,a)=>{o(r,t,c=>{if(!c){i();return}if(c.code==="ESRCH"){i();return}a(c)})});return}let s=["/PID",String(r),"/T"];t==="SIGKILL"&&s.push("/F"),await Zl("taskkill",s,{timeout:$.POWERSHELL_COMMAND,windowsHide:!0})}async function Xl(){let e="tree-kill";try{let t=await import(e);return t.default??t}catch(t){return u.debug("SYSTEM","tree-kill module not available, using fallback",{},t instanceof Error?t:void 0),null}}var Zl,ql,Xs=E(()=>{"use strict";K();Jt();Kt();re();Zl=zl(Yl),ql=G.workerPid()});function Ql(){let t=Ir().pruneDeadEntries();t>0&&u.info("SYSTEM",`Health check: pruned ${t} dead process(es) from registry`)}function _s(){ut===null&&(ut=setInterval(Ql,Qs),ut.unref(),u.debug("SYSTEM","Health checker started",{intervalMs:Qs}))}function $s(){ut!==null&&(clearInterval(ut),ut=null,u.debug("SYSTEM","Health checker stopped"))}var Qs,ut,ei=E(()=>{"use strict";K();Kt();Qs=3e4,ut=null});import{existsSync as _l,readFileSync as $l,rmSync as ti}from"fs";function ri(){return tu}function Or(e={}){let t=e.pidFilePath??eu;if(!_l(t))return"missing";let r=null;try{r=JSON.parse($l(t,"utf-8"))}catch(o){return o instanceof Error?u.warn("SYSTEM","Failed to parse worker PID file, removing it",{path:t},o):u.warn("SYSTEM","Failed to parse worker PID file, removing it",{path:t,error:String(o)}),ti(t,{force:!0}),"invalid"}return Gn(r)&&r?((e.logAlive??!0)&&u.info("SYSTEM","Worker already running (PID alive)",{existingPid:r.pid,existingPort:r.port,startedAt:r.startedAt}),"alive"):(u.info("SYSTEM","Removing stale PID file (worker process is dead or PID has been reused)",{pid:r?.pid,port:r?.port,startedAt:r?.startedAt}),ti(t,{force:!0}),"stale")}var eu,Hn,tu,Jn=E(()=>{"use strict";K();Kt();Xs();ei();re();eu=G.workerPid(),Hn=class{registry;started=!1;stopPromise=null;signalHandlersRegistered=!1;shutdownInitiated=!1;shutdownHandler=null;constructor(t){this.registry=t}async start(){if(this.started)return;if(this.registry.initialize(),Or({logAlive:!1})==="alive")throw new Error("Worker already running");this.started=!0,_s()}configureSignalHandlers(t){if(this.shutdownHandler=t,this.signalHandlersRegistered)return;this.signalHandlersRegistered=!0;let r=async n=>{if(this.shutdownInitiated){u.warn("SYSTEM",`Received ${n} but shutdown already in progress`);return}this.shutdownInitiated=!0,u.info("SYSTEM",`Received ${n}, shutting down...`);try{this.shutdownHandler?await this.shutdownHandler():await this.stop()}catch(o){o instanceof Error?u.error("SYSTEM","Error during shutdown",{},o):u.error("SYSTEM","Error during shutdown (non-Error)",{error:String(o)});try{await this.stop()}catch(s){s instanceof Error?u.debug("SYSTEM","Supervisor shutdown fallback failed",{},s):u.debug("SYSTEM","Supervisor shutdown fallback failed",{error:String(s)})}}process.exit(0)};process.on("SIGTERM",()=>{r("SIGTERM")}),process.on("SIGINT",()=>{r("SIGINT")}),process.platform!=="win32"&&(process.argv.includes("--daemon")?process.on("SIGHUP",()=>{u.debug("SYSTEM","Ignoring SIGHUP in daemon mode")}):process.on("SIGHUP",()=>{r("SIGHUP")}))}async stop(){if(this.stopPromise){await this.stopPromise;return}$s(),this.stopPromise=qs({registry:this.registry,currentPid:process.pid}).finally(()=>{this.started=!1,this.stopPromise=null}),await this.stopPromise}assertCanSpawn(t){if(this.stopPromise!==null)throw new Error(`Supervisor is shutting down, refusing to spawn ${t}`)}registerProcess(t,r,n){this.registry.register(t,r,n)}unregisterProcess(t){this.registry.unregister(t)}getRegistry(){return this.registry}},tu=new Hn(Ir())});import dt from"path";import{homedir as ru}from"os";import{existsSync as Bn,writeFileSync as Gg,readFileSync as Hg,unlinkSync as Jg,mkdirSync as Kg,rmSync as Bg,statSync as Yg,utimesSync as nu,copyFileSync as Vg}from"fs";import{exec as ou,execSync as si,spawnSync as Zg}from"child_process";import{promisify as su}from"util";function oi(e){return e?/(^|[\\/])bun(\.exe)?$/i.test(e.trim()):!1}function iu(e,t){let r=t==="win32"?`where ${e}`:`which ${e}`,n;try{n=si(r,{stdio:["ignore","pipe","ignore"],encoding:"utf-8",windowsHide:!0})}catch(s){return s instanceof Error?u.debug("SYSTEM",`Binary lookup failed for ${e}`,{command:r},s):u.debug("SYSTEM",`Binary lookup failed for ${e}`,{command:r},new Error(String(s))),null}return n.split(/\r?\n/).map(s=>s.trim()).find(s=>s.length>0)||null}function au(e={}){let t=Object.keys(e).length===0;if(t&&Kn!==void 0)return Kn;let r=cu(e);return t&&r!==null&&(Kn=r),r}function cu(e){let t=e.platform??process.platform,r=e.execPath??process.execPath;if(oi(r))return r;let n=e.env??process.env,o=e.homeDirectory??ru(),s=e.pathExists??Bn,i=e.lookupInPath??iu,a=t==="win32"?[n.BUN,n.BUN_PATH,dt.join(o,".bun","bin","bun.exe"),dt.join(o,".bun","bin","bun"),n.USERPROFILE?dt.join(n.USERPROFILE,".bun","bin","bun.exe"):void 0,n.LOCALAPPDATA?dt.join(n.LOCALAPPDATA,"bun","bun.exe"):void 0,n.LOCALAPPDATA?dt.join(n.LOCALAPPDATA,"bun","bin","bun.exe"):void 0]:[n.BUN,n.BUN_PATH,dt.join(o,".bun","bin","bun"),"/usr/local/bin/bun","/opt/homebrew/bin/bun","/home/linuxbrew/.linuxbrew/bin/bun","/usr/bin/bun","/snap/bin/bun"];for(let c of a){let l=c?.trim();if(l&&(oi(l)&&s(l)||l.toLowerCase()==="bun"))return l}return i("bun",t)}function Je(e){return process.platform==="win32"?Math.round(e*2):e}function ii(e,t,r={}){ri().assertCanSpawn("worker daemon");let n=Un({...process.env,CLAUDE_MEM_WORKER_PORT:String(t),...r}),o=au();if(!o){u.error("SYSTEM","Bun runtime not found \u2014 install from https://bun.sh and ensure it is on PATH or set BUN env var. The worker daemon requires Bun because it uses bun:sqlite.");return}if(process.platform==="win32"){let p=`Start-Process -FilePath '${o.replace(/'/g,"''")}' -ArgumentList @('${e.replace(/'/g,"''")}','--daemon') -WindowStyle Hidden`,f=Buffer.from(p,"utf16le").toString("base64");try{return si(`powershell -NoProfile -EncodedCommand ${f}`,{stdio:"ignore",windowsHide:!0,env:n}),0}catch(h){u.error("SYSTEM","Failed to spawn worker daemon on Windows",{runtimePath:o},h instanceof Error?h:new Error(String(h)));return}}let s="/usr/bin/setsid",i=Bn(s),l=ye(i?s:o,i?[o,e,"--daemon"]:[e,"--daemon"],{detached:!0,stdio:"ignore",env:n});if(l.pid!==void 0)return l.unref(),l.pid}function ai(){try{if(!Bn(ni))return;let e=new Date;nu(ni,e,e)}catch{}}function ci(){return Or({logAlive:!1})}var rh,nh,ni,Kn,li=E(()=>{"use strict";at();K();Jt();Ln();Jn();re();Kt();rh=su(ou),nh=G.dataDir(),ni=G.workerPid()});import ah from"path";import lu from"net";import{readFileSync as uh}from"fs";async function uu(e,t,r="GET"){let n=await fetch(`http://127.0.0.1:${e}${t}`,{method:r}),o="";try{o=await n.text()}catch{}return{ok:n.ok,statusCode:n.status,body:o}}async function ui(e){if(process.platform==="win32")try{return(await fetch(`http://127.0.0.1:${e}/api/health`)).ok}catch(t){return t instanceof Error?u.debug("SYSTEM","Windows health check failed (port not in use)",{},t):u.debug("SYSTEM","Windows health check failed (port not in use)",{error:String(t)}),!1}return new Promise(t=>{let r=lu.createServer();r.once("error",n=>{n.code==="EADDRINUSE"?t(!0):t(!1)}),r.once("listening",()=>{r.close(()=>t(!1))}),r.listen(e,"127.0.0.1")})}async function di(e,t,r,n){let o=Date.now();for(;Date.now()-o<r;){try{if((await uu(e,t)).ok)return!0}catch(s){s instanceof Error?u.debug("SYSTEM",n,{},s):u.debug("SYSTEM",n,{error:String(s)})}await new Promise(s=>setTimeout(s,500))}return!1}function Bt(e,t=3e4){return di(e,"/api/health",t,"Service not ready yet, will retry")}function Yt(e,t=3e4){return di(e,"/api/readiness",t,"Worker not ready yet, will retry")}var pi=E(()=>{"use strict";K();re()});import mi from"path";import{existsSync as Yn,mkdirSync as du,writeFileSync as pu,unlinkSync as mu,statSync as fu}from"fs";function Vn(){return mi.join(Z.get("CLAUDE_MEM_DATA_DIR"),".worker-start-attempted")}function hu(){if(process.platform!=="win32")return!1;let e=Vn();if(!Yn(e))return!1;try{let t=fu(e).mtimeMs;return Date.now()-t<gu}catch(t){return t instanceof Error?u.debug("SYSTEM","Could not stat worker spawn lock file",{},t):u.debug("SYSTEM","Could not stat worker spawn lock file",{error:String(t)}),!1}}function Eu(){if(process.platform==="win32")try{let e=Vn();du(mi.dirname(e),{recursive:!0}),pu(e,"","utf-8")}catch{}}function Pr(){if(process.platform==="win32")try{let e=Vn();Yn(e)&&mu(e)}catch{}}async function fi(e,t){if(!t)return u.error("SYSTEM","ensureWorkerStarted called with empty workerScriptPath \u2014 caller bug"),"dead";if(!Yn(t))return u.error("SYSTEM","ensureWorkerStarted: worker script not found at expected path \u2014 likely a partial install or build artifact missing",{workerScriptPath:t}),"dead";if(ci()==="alive"){if(u.info("SYSTEM","Worker PID file points to a live process, skipping duplicate spawn"),await Bt(e,Je($.PORT_IN_USE_WAIT))){Pr();let c=await Yt(e,Je($.READINESS_WAIT));return u.info("SYSTEM","Worker became healthy while waiting on live PID"),c?"ready":"warming"}return u.warn("SYSTEM","Live PID detected but worker did not become healthy before timeout \u2014 likely still starting"),"warming"}if(await Bt(e,1e3)){Pr();let a=await Yt(e,Je($.READINESS_WAIT));return a||u.warn("SYSTEM","Worker is alive but readiness timed out \u2014 proceeding anyway"),u.info("SYSTEM","Worker already running and healthy"),a?"ready":"warming"}if(await ui(e)){if(u.info("SYSTEM","Port in use, waiting for worker to become healthy"),await Bt(e,Je($.PORT_IN_USE_WAIT))){Pr();let c=await Yt(e,Je($.READINESS_WAIT));return u.info("SYSTEM","Worker is now healthy"),c?"ready":"warming"}return u.error("SYSTEM","Port in use but worker not responding to health checks"),"dead"}if(hu())return u.warn("SYSTEM","Worker unavailable on Windows \u2014 skipping spawn (recent attempt failed within cooldown)"),"dead";if(u.info("SYSTEM","Starting worker daemon",{workerScriptPath:t}),Eu(),ii(t,e)===void 0)return u.error("SYSTEM","Failed to spawn worker daemon"),"dead";if(!await Bt(e,Je($.POST_SPAWN_WAIT)))return u.warn("SYSTEM","Worker spawned but health endpoint not responding within window \u2014 likely still starting in background"),"warming";let i=await Yt(e,Je($.READINESS_WAIT));return i||u.warn("SYSTEM","Worker is alive but readiness timed out \u2014 proceeding anyway"),Pr(),ai(),u.info("SYSTEM","Worker started successfully"),i?"ready":"warming"}var gu,gi=E(()=>{"use strict";K();Jt();Ge();li();pi();gu=120*1e3});import{existsSync as mt,readFileSync as hi,writeFileSync as Su}from"fs";import{execSync as Vt,spawnSync as Ar}from"child_process";import{join as we}from"path";import{homedir as pt}from"os";function Ei(e){return we(e,".install-version")}function zn(){try{if(Ar("bun",["--version"],{encoding:"utf-8",stdio:["pipe","pipe","pipe"],shell:me}).status===0)return"bun"}catch{}return yu.find(mt)||null}function Si(){return zn()!==null}function yi(){let e=zn();if(!e)return null;try{let t=Ar(e,["--version"],{encoding:"utf-8",stdio:["pipe","pipe","pipe"],shell:me});return t.status===0?t.stdout.trim():null}catch{return null}}function Zn(){try{if(Ar("uv",["--version"],{encoding:"utf-8",stdio:["pipe","pipe","pipe"],shell:me}).status===0)return"uv"}catch{}return wu.find(mt)||null}function wi(){return Zn()!==null}function Cu(){let e=Zn();if(!e)return null;try{let t=Ar(e,["--version"],{encoding:"utf-8",stdio:["pipe","pipe","pipe"],shell:me});return t.status===0?t.stdout.trim():null}catch{return null}}function qn(e){if(e&&typeof e=="object"){let t=e,r=[];t.message&&r.push(t.message);let n=t.stderr?t.stderr.toString().trim():"";n&&r.push(`stderr: ${n}`);let o=t.stdout?t.stdout.toString().trim():"";return!n&&o&&r.push(`stdout: ${o}`),r.join(`
100
- `)}return String(e)}function ku(){try{if(me?Vt('powershell -c "irm bun.sh/install.ps1 | iex"',{stdio:"pipe",shell:process.env.ComSpec??"cmd.exe"}):Vt("curl -fsSL https://bun.sh/install | bash",{stdio:"pipe",shell:"/bin/bash"}),!Si())throw new Error("Bun installation completed but binary not found. Please restart your terminal and try again.")}catch(e){let t=me?` - winget install Oven-sh.Bun
99
+ `}function Ft(){let e=Dn();if(!Nn(e))return{};try{let t=Gs(e,"utf-8"),r=Hs(t),n={};return r.ANTHROPIC_API_KEY&&(n.ANTHROPIC_API_KEY=r.ANTHROPIC_API_KEY),r.ANTHROPIC_BASE_URL&&(n.ANTHROPIC_BASE_URL=r.ANTHROPIC_BASE_URL),r.ANTHROPIC_AUTH_TOKEN&&(n.ANTHROPIC_AUTH_TOKEN=r.ANTHROPIC_AUTH_TOKEN),r.GEMINI_API_KEY&&(n.GEMINI_API_KEY=r.GEMINI_API_KEY),r.OPENROUTER_API_KEY&&(n.OPENROUTER_API_KEY=r.OPENROUTER_API_KEY),n}catch(t){return u.warn("ENV","Failed to load .env file",{path:e},t instanceof Error?t:new Error(String(t))),{}}}function Gt(e){let t=Dn(),r={};try{Nn(G.dataDir())||Al(G.dataDir(),{recursive:!0,mode:448}),Fs(G.dataDir(),448),r=Nn(t)?Hs(Gs(t,"utf-8")):{}}catch(o){let s=o instanceof Error?o:new Error(String(o));throw u.error("ENV","Failed to set up env directory or read existing env",{},s),s}let n={...r};e.ANTHROPIC_API_KEY!==void 0&&(e.ANTHROPIC_API_KEY?n.ANTHROPIC_API_KEY=e.ANTHROPIC_API_KEY:delete n.ANTHROPIC_API_KEY),e.ANTHROPIC_BASE_URL!==void 0&&(e.ANTHROPIC_BASE_URL?n.ANTHROPIC_BASE_URL=e.ANTHROPIC_BASE_URL:delete n.ANTHROPIC_BASE_URL),e.ANTHROPIC_AUTH_TOKEN!==void 0&&(e.ANTHROPIC_AUTH_TOKEN?n.ANTHROPIC_AUTH_TOKEN=e.ANTHROPIC_AUTH_TOKEN:delete n.ANTHROPIC_AUTH_TOKEN),e.GEMINI_API_KEY!==void 0&&(e.GEMINI_API_KEY?n.GEMINI_API_KEY=e.GEMINI_API_KEY:delete n.GEMINI_API_KEY),e.OPENROUTER_API_KEY!==void 0&&(e.OPENROUTER_API_KEY?n.OPENROUTER_API_KEY=e.OPENROUTER_API_KEY:delete n.OPENROUTER_API_KEY);try{Pl(t,Nl(n),{encoding:"utf-8",mode:384}),Fs(t,384)}catch(o){throw u.error("ENV","Failed to save .env file",{path:t},o instanceof Error?o:new Error(String(o))),o}}var ag,Js=E(()=>{"use strict";K();re();js();ag=Dn()});function Tr(e){return process.platform==="win32"?Math.round(e*$.WINDOWS_MULTIPLIER):e}var $,Ht=E(()=>{"use strict";$={DEFAULT:3e5,HEALTH_CHECK:3e3,API_REQUEST:3e4,HOOK_READINESS_WAIT:1e4,POST_SPAWN_WAIT:15e3,READINESS_WAIT:3e4,PORT_IN_USE_WAIT:3e3,WORKER_STARTUP_WAIT:1e3,PRE_RESTART_SETTLE_DELAY:2e3,POWERSHELL_COMMAND:1e4,WINDOWS_MULTIPLIER:1.5}});function Un(e=process.env){let t={};for(let[r,n]of Object.entries(e))if(n!==void 0){if(Wl.has(r)){t[r]=n;continue}Ul.has(r)||Ll.has(r)||Dl.some(o=>r.startsWith(o))||(t[r]=n)}return t}var Dl,Ul,Ll,Wl,Ln=E(()=>{"use strict";Dl=["CLAUDECODE_","CLAUDE_CODE_"],Ul=new Set(["CLAUDECODE","CLAUDE_CODE_SESSION","CLAUDE_CODE_ENTRYPOINT","MCP_SESSION_ID"]),Ll=new Set(["HTTP_PROXY","HTTPS_PROXY","ALL_PROXY","NO_PROXY","http_proxy","https_proxy","all_proxy","no_proxy","npm_config_proxy","npm_config_https_proxy"]),Wl=new Set(["CLAUDE_CODE_OAUTH_TOKEN","CLAUDE_CODE_GIT_BASH_PATH","CLAUDE_CODE_USE_BEDROCK","CLAUDE_CODE_USE_VERTEX","ANTHROPIC_BEDROCK_BASE_URL","AWS_REGION","AWS_PROFILE","AWS_ACCESS_KEY_ID","AWS_SECRET_ACCESS_KEY","AWS_SESSION_TOKEN","ANTHROPIC_VERTEX_PROJECT_ID","CLOUD_ML_REGION","GOOGLE_APPLICATION_CREDENTIALS"])});import{spawnSync as jl}from"child_process";import{existsSync as Fl,mkdirSync as Ks,readFileSync as Ys,writeFileSync as Gl}from"fs";import Bs from"path";function be(e){if(!Number.isInteger(e)||e<0||e===0)return!1;try{return process.kill(e,0),!0}catch(t){if(t instanceof Error){let r=t.code;return r==="EPERM"?!0:(u.debug("SYSTEM","PID check failed",{pid:e,code:r}),!1)}return u.warn("SYSTEM","PID check threw non-Error",{pid:e,error:String(t)}),!1}}function Vs(e){if(!Number.isInteger(e)||e<=0)return null;if(process.platform==="linux")try{let t=Ys(`/proc/${e}/stat`,"utf-8"),r=t.lastIndexOf(") ");if(r<0)return null;let o=t.slice(r+2).split(" ")[19];return o&&/^\d+$/.test(o)?o:null}catch(t){return u.debug("SYSTEM","captureProcessStartToken: /proc read failed",{pid:e,error:t instanceof Error?t.message:String(t)}),null}if(process.platform==="win32")return null;try{let t=jl("ps",["-p",String(e),"-o","lstart="],{encoding:"utf-8",timeout:2e3,env:{...process.env,LC_ALL:"C",LANG:"C"}});if(t.status!==0)return null;let r=t.stdout.trim();return r.length>0?r:null}catch(t){return u.debug("SYSTEM","captureProcessStartToken: ps exec failed",{pid:e,error:t instanceof Error?t.message:String(t)}),null}}function Gn(e){if(!e||!be(e.pid))return!1;if(!e.startToken)return!0;let t=Vs(e.pid);if(t===null)return!0;let r=t===e.startToken;return r||u.debug("SYSTEM","verifyPidFileOwnership: start-token mismatch (PID reused)",{pid:e.pid,stored:e.startToken,current:t}),r}function Rr(){return Wn||(Wn=new Fn),Wn}function jn(){let e=Bl.shift();e&&e()}var Hl,Jl,Kl,Fn,Wn,Bl,Jt=E(()=>{"use strict";it();K();Ln();re();Hl=5e3,Jl=1e3,Kl=G.supervisorRegistry();Fn=class{registryPath;entries=new Map;runtimeProcesses=new Map;initialized=!1;constructor(t=Kl){this.registryPath=t}initialize(){if(this.initialized)return;if(this.initialized=!0,Ks(Bs.dirname(this.registryPath),{recursive:!0}),!Fl(this.registryPath)){this.persist();return}try{let n=JSON.parse(Ys(this.registryPath,"utf-8")).processes??{};for(let[o,s]of Object.entries(n))this.entries.set(o,s)}catch(r){r instanceof Error?u.warn("SYSTEM","Failed to parse supervisor registry, rebuilding",{path:this.registryPath},r):u.warn("SYSTEM","Failed to parse supervisor registry, rebuilding",{path:this.registryPath,error:String(r)}),this.entries.clear()}let t=this.pruneDeadEntries();t>0&&u.info("SYSTEM","Removed dead processes from supervisor registry",{removed:t}),this.persist()}register(t,r,n){this.initialize(),this.entries.set(t,r),n&&this.runtimeProcesses.set(t,n),this.persist()}unregister(t){this.initialize();let r=this.entries.get(t);this.entries.delete(t),this.runtimeProcesses.delete(t),this.persist(),r?.type==="sdk"&&jn()}clear(){this.entries.clear(),this.runtimeProcesses.clear(),this.persist()}getAll(){return this.initialize(),Array.from(this.entries.entries()).map(([t,r])=>({id:t,...r})).sort((t,r)=>{let n=Date.parse(t.startedAt),o=Date.parse(r.startedAt);return(Number.isNaN(n)?0:n)-(Number.isNaN(o)?0:o)})}getBySession(t){let r=String(t);return this.getAll().filter(n=>n.sessionId!==void 0&&String(n.sessionId)===r)}getRuntimeProcess(t){return this.runtimeProcesses.get(t)}getByPid(t){return this.getAll().filter(r=>r.pid===t)}pruneDeadEntries(){this.initialize();let t=0,r=0;for(let[n,o]of this.entries)be(o.pid)||(this.entries.delete(n),this.runtimeProcesses.delete(n),t+=1,o.type==="sdk"&&(r+=1));t>0&&this.persist();for(let n=0;n<r;n+=1)jn();return t}async reapSession(t){this.initialize();let r=this.getBySession(t);if(r.length===0)return 0;let n=typeof t=="number"?t:Number(t)||void 0;u.info("SYSTEM",`Reaping ${r.length} process(es) for session ${t}`,{sessionId:n,pids:r.map(a=>a.pid)});let o=r.filter(a=>be(a.pid));for(let a of o)try{typeof a.pgid=="number"&&process.platform!=="win32"?process.kill(-a.pgid,"SIGTERM"):process.kill(a.pid,"SIGTERM")}catch(c){c instanceof Error?c.code!=="ESRCH"&&u.debug("SYSTEM",`Failed to SIGTERM session process PID ${a.pid}`,{pid:a.pid,pgid:a.pgid},c):u.warn("SYSTEM",`Failed to SIGTERM session process PID ${a.pid} (non-Error)`,{pid:a.pid,pgid:a.pgid,error:String(c)})}let s=Date.now()+Hl;for(;Date.now()<s&&o.filter(c=>be(c.pid)).length!==0;)await new Promise(c=>setTimeout(c,100));let i=o.filter(a=>be(a.pid));for(let a of i){u.warn("SYSTEM",`Session process PID ${a.pid} did not exit after SIGTERM, sending SIGKILL`,{pid:a.pid,pgid:a.pgid,sessionId:n});try{typeof a.pgid=="number"&&process.platform!=="win32"?process.kill(-a.pgid,"SIGKILL"):process.kill(a.pid,"SIGKILL")}catch(c){c instanceof Error?c.code!=="ESRCH"&&u.debug("SYSTEM",`Failed to SIGKILL session process PID ${a.pid}`,{pid:a.pid,pgid:a.pgid},c):u.warn("SYSTEM",`Failed to SIGKILL session process PID ${a.pid} (non-Error)`,{pid:a.pid,pgid:a.pgid,error:String(c)})}}if(i.length>0){let a=Date.now()+Jl;for(;Date.now()<a&&i.filter(l=>be(l.pid)).length!==0;)await new Promise(l=>setTimeout(l,100))}for(let a of r)this.entries.delete(a.id),this.runtimeProcesses.delete(a.id);this.persist();for(let a of r)a.type==="sdk"&&jn();return u.info("SYSTEM",`Reaped ${r.length} process(es) for session ${t}`,{sessionId:n,reaped:r.length}),r.length}persist(){let t={processes:Object.fromEntries(this.entries.entries())};Ks(Bs.dirname(this.registryPath),{recursive:!0}),Gl(this.registryPath,JSON.stringify(t,null,2))}},Wn=null;Bl=[]});import{execFile as Yl}from"child_process";import{rmSync as Vl}from"fs";import{promisify as zl}from"util";async function qs(e){let t=e.currentPid??process.pid,r=e.pidFilePath??ql,n=e.registry.getAll(),o=[...n].filter(i=>i.pid!==t).sort((i,a)=>Date.parse(a.startedAt)-Date.parse(i.startedAt));for(let i of o){if(!be(i.pid)){e.registry.unregister(i.id);continue}try{await Zs(i,"SIGTERM")}catch(a){a instanceof Error?u.debug("SYSTEM","Failed to send SIGTERM to child process",{pid:i.pid,pgid:i.pgid,type:i.type},a):u.warn("SYSTEM","Failed to send SIGTERM to child process (non-Error)",{pid:i.pid,pgid:i.pgid,type:i.type,error:String(a)})}}await zs(o,5e3);let s=o.filter(i=>be(i.pid));for(let i of s)try{await Zs(i,"SIGKILL")}catch(a){a instanceof Error?u.debug("SYSTEM","Failed to force kill child process",{pid:i.pid,pgid:i.pgid,type:i.type},a):u.warn("SYSTEM","Failed to force kill child process (non-Error)",{pid:i.pid,pgid:i.pgid,type:i.type,error:String(a)})}await zs(s,1e3);for(let i of o)e.registry.unregister(i.id);for(let i of n.filter(a=>a.pid===t))e.registry.unregister(i.id);try{Vl(r,{force:!0})}catch(i){i instanceof Error?u.debug("SYSTEM","Failed to remove PID file during shutdown",{pidFilePath:r},i):u.warn("SYSTEM","Failed to remove PID file during shutdown (non-Error)",{pidFilePath:r,error:String(i)})}e.registry.pruneDeadEntries()}async function zs(e,t){let r=Date.now()+t;for(;Date.now()<r;){if(e.filter(o=>be(o.pid)).length===0)return;await new Promise(o=>setTimeout(o,100))}}async function Zs(e,t){let{pid:r,pgid:n}=e;if(process.platform!=="win32"){if(typeof n=="number")try{process.kill(-n,t);return}catch(i){if((i instanceof Error?i.code:void 0)!=="ESRCH")throw i}try{process.kill(r,t)}catch(i){if((i instanceof Error?i.code:void 0)!=="ESRCH")throw i}return}if(t==="SIGTERM"){try{process.kill(r,t)}catch(i){if(i instanceof Error&&i.code==="ESRCH")return;throw i}return}let o=await Xl();if(o){await new Promise((i,a)=>{o(r,t,c=>{if(!c){i();return}if(c.code==="ESRCH"){i();return}a(c)})});return}let s=["/PID",String(r),"/T"];t==="SIGKILL"&&s.push("/F"),await Zl("taskkill",s,{timeout:$.POWERSHELL_COMMAND,windowsHide:!0})}async function Xl(){let e="tree-kill";try{let t=await import(e);return t.default??t}catch(t){return u.debug("SYSTEM","tree-kill module not available, using fallback",{},t instanceof Error?t:void 0),null}}var Zl,ql,Xs=E(()=>{"use strict";K();Ht();Jt();re();Zl=zl(Yl),ql=G.workerPid()});function Ql(){let t=Rr().pruneDeadEntries();t>0&&u.info("SYSTEM",`Health check: pruned ${t} dead process(es) from registry`)}function _s(){lt===null&&(lt=setInterval(Ql,Qs),lt.unref(),u.debug("SYSTEM","Health checker started",{intervalMs:Qs}))}function $s(){lt!==null&&(clearInterval(lt),lt=null,u.debug("SYSTEM","Health checker stopped"))}var Qs,lt,ei=E(()=>{"use strict";K();Jt();Qs=3e4,lt=null});import{existsSync as _l,readFileSync as $l,rmSync as ti}from"fs";function ri(){return tu}function Ir(e={}){let t=e.pidFilePath??eu;if(!_l(t))return"missing";let r=null;try{r=JSON.parse($l(t,"utf-8"))}catch(o){return o instanceof Error?u.warn("SYSTEM","Failed to parse worker PID file, removing it",{path:t},o):u.warn("SYSTEM","Failed to parse worker PID file, removing it",{path:t,error:String(o)}),ti(t,{force:!0}),"invalid"}return Gn(r)&&r?((e.logAlive??!0)&&u.info("SYSTEM","Worker already running (PID alive)",{existingPid:r.pid,existingPort:r.port,startedAt:r.startedAt}),"alive"):(u.info("SYSTEM","Removing stale PID file (worker process is dead or PID has been reused)",{pid:r?.pid,port:r?.port,startedAt:r?.startedAt}),ti(t,{force:!0}),"stale")}var eu,Hn,tu,Jn=E(()=>{"use strict";K();Jt();Xs();ei();re();eu=G.workerPid(),Hn=class{registry;started=!1;stopPromise=null;signalHandlersRegistered=!1;shutdownInitiated=!1;shutdownHandler=null;constructor(t){this.registry=t}async start(){if(this.started)return;if(this.registry.initialize(),Ir({logAlive:!1})==="alive")throw new Error("Worker already running");this.started=!0,_s()}configureSignalHandlers(t){if(this.shutdownHandler=t,this.signalHandlersRegistered)return;this.signalHandlersRegistered=!0;let r=async n=>{if(this.shutdownInitiated){u.warn("SYSTEM",`Received ${n} but shutdown already in progress`);return}this.shutdownInitiated=!0,u.info("SYSTEM",`Received ${n}, shutting down...`);try{this.shutdownHandler?await this.shutdownHandler():await this.stop()}catch(o){o instanceof Error?u.error("SYSTEM","Error during shutdown",{},o):u.error("SYSTEM","Error during shutdown (non-Error)",{error:String(o)});try{await this.stop()}catch(s){s instanceof Error?u.debug("SYSTEM","Supervisor shutdown fallback failed",{},s):u.debug("SYSTEM","Supervisor shutdown fallback failed",{error:String(s)})}}process.exit(0)};process.on("SIGTERM",()=>{r("SIGTERM")}),process.on("SIGINT",()=>{r("SIGINT")}),process.platform!=="win32"&&(process.argv.includes("--daemon")?process.on("SIGHUP",()=>{u.debug("SYSTEM","Ignoring SIGHUP in daemon mode")}):process.on("SIGHUP",()=>{r("SIGHUP")}))}async stop(){if(this.stopPromise){await this.stopPromise;return}$s(),this.stopPromise=qs({registry:this.registry,currentPid:process.pid}).finally(()=>{this.started=!1,this.stopPromise=null}),await this.stopPromise}assertCanSpawn(t){if(this.stopPromise!==null)throw new Error(`Supervisor is shutting down, refusing to spawn ${t}`)}registerProcess(t,r,n){this.registry.register(t,r,n)}unregisterProcess(t){this.registry.unregister(t)}getRegistry(){return this.registry}},tu=new Hn(Rr())});import ut from"path";import{homedir as ru}from"os";import{existsSync as Bn,writeFileSync as Hg,readFileSync as Jg,unlinkSync as Kg,mkdirSync as Bg,rmSync as Yg,statSync as Vg,utimesSync as nu,copyFileSync as zg}from"fs";import{exec as ou,execSync as si,spawnSync as qg}from"child_process";import{promisify as su}from"util";function oi(e){return e?/(^|[\\/])bun(\.exe)?$/i.test(e.trim()):!1}function iu(e,t){let r=t==="win32"?`where ${e}`:`which ${e}`,n;try{n=si(r,{stdio:["ignore","pipe","ignore"],encoding:"utf-8",windowsHide:!0})}catch(s){return s instanceof Error?u.debug("SYSTEM",`Binary lookup failed for ${e}`,{command:r},s):u.debug("SYSTEM",`Binary lookup failed for ${e}`,{command:r},new Error(String(s))),null}return n.split(/\r?\n/).map(s=>s.trim()).find(s=>s.length>0)||null}function au(e={}){let t=Object.keys(e).length===0;if(t&&Kn!==void 0)return Kn;let r=cu(e);return t&&r!==null&&(Kn=r),r}function cu(e){let t=e.platform??process.platform,r=e.execPath??process.execPath;if(oi(r))return r;let n=e.env??process.env,o=e.homeDirectory??ru(),s=e.pathExists??Bn,i=e.lookupInPath??iu,a=t==="win32"?[n.BUN,n.BUN_PATH,ut.join(o,".bun","bin","bun.exe"),ut.join(o,".bun","bin","bun"),n.USERPROFILE?ut.join(n.USERPROFILE,".bun","bin","bun.exe"):void 0,n.LOCALAPPDATA?ut.join(n.LOCALAPPDATA,"bun","bun.exe"):void 0,n.LOCALAPPDATA?ut.join(n.LOCALAPPDATA,"bun","bin","bun.exe"):void 0]:[n.BUN,n.BUN_PATH,ut.join(o,".bun","bin","bun"),"/usr/local/bin/bun","/opt/homebrew/bin/bun","/home/linuxbrew/.linuxbrew/bin/bun","/usr/bin/bun","/snap/bin/bun"];for(let c of a){let l=c?.trim();if(l&&(oi(l)&&s(l)||l.toLowerCase()==="bun"))return l}return i("bun",t)}function He(e){return process.platform==="win32"?Math.round(e*2):e}function ii(e,t,r={}){ri().assertCanSpawn("worker daemon");let n=Un({...process.env,CLAUDE_MEM_WORKER_PORT:String(t),...r}),o=au();if(!o){u.error("SYSTEM","Bun runtime not found \u2014 install from https://bun.sh and ensure it is on PATH or set BUN env var. The worker daemon requires Bun because it uses bun:sqlite.");return}if(process.platform==="win32"){let p=`Start-Process -FilePath '${o.replace(/'/g,"''")}' -ArgumentList @('${e.replace(/'/g,"''")}','--daemon') -WindowStyle Hidden`,f=Buffer.from(p,"utf16le").toString("base64");try{return si(`powershell -NoProfile -EncodedCommand ${f}`,{stdio:"ignore",windowsHide:!0,env:n}),0}catch(h){u.error("SYSTEM","Failed to spawn worker daemon on Windows",{runtimePath:o},h instanceof Error?h:new Error(String(h)));return}}let s="/usr/bin/setsid",i=Bn(s),l=ye(i?s:o,i?[o,e,"--daemon"]:[e,"--daemon"],{detached:!0,stdio:"ignore",env:n});if(l.pid!==void 0)return l.unref(),l.pid}function ai(){try{if(!Bn(ni))return;let e=new Date;nu(ni,e,e)}catch{}}function ci(){return Ir({logAlive:!1})}var nh,oh,ni,Kn,li=E(()=>{"use strict";it();K();Ht();Ln();Jn();re();Jt();nh=su(ou),oh=G.dataDir(),ni=G.workerPid()});import ch from"path";import lu from"net";import{readFileSync as dh}from"fs";async function uu(e,t,r="GET"){let n=await fetch(`http://127.0.0.1:${e}${t}`,{method:r}),o="";try{o=await n.text()}catch{}return{ok:n.ok,statusCode:n.status,body:o}}async function ui(e){if(process.platform==="win32")try{return(await fetch(`http://127.0.0.1:${e}/api/health`)).ok}catch(t){return t instanceof Error?u.debug("SYSTEM","Windows health check failed (port not in use)",{},t):u.debug("SYSTEM","Windows health check failed (port not in use)",{error:String(t)}),!1}return new Promise(t=>{let r=lu.createServer();r.once("error",n=>{n.code==="EADDRINUSE"?t(!0):t(!1)}),r.once("listening",()=>{r.close(()=>t(!1))}),r.listen(e,"127.0.0.1")})}async function di(e,t,r,n){let o=Date.now();for(;Date.now()-o<r;){try{if((await uu(e,t)).ok)return!0}catch(s){s instanceof Error?u.debug("SYSTEM",n,{},s):u.debug("SYSTEM",n,{error:String(s)})}await new Promise(s=>setTimeout(s,500))}return!1}function Kt(e,t=3e4){return di(e,"/api/health",t,"Service not ready yet, will retry")}function Bt(e,t=3e4){return di(e,"/api/readiness",t,"Worker not ready yet, will retry")}var pi=E(()=>{"use strict";K();re()});import mi from"path";import{existsSync as Yn,mkdirSync as du,writeFileSync as pu,unlinkSync as mu,statSync as fu}from"fs";function Vn(){return mi.join(Z.get("CLAUDE_MEM_DATA_DIR"),".worker-start-attempted")}function hu(){if(process.platform!=="win32")return!1;let e=Vn();if(!Yn(e))return!1;try{let t=fu(e).mtimeMs;return Date.now()-t<gu}catch(t){return t instanceof Error?u.debug("SYSTEM","Could not stat worker spawn lock file",{},t):u.debug("SYSTEM","Could not stat worker spawn lock file",{error:String(t)}),!1}}function Eu(){if(process.platform==="win32")try{let e=Vn();du(mi.dirname(e),{recursive:!0}),pu(e,"","utf-8")}catch{}}function Or(){if(process.platform==="win32")try{let e=Vn();Yn(e)&&mu(e)}catch{}}async function fi(e,t){if(!t)return u.error("SYSTEM","ensureWorkerStarted called with empty workerScriptPath \u2014 caller bug"),"dead";if(!Yn(t))return u.error("SYSTEM","ensureWorkerStarted: worker script not found at expected path \u2014 likely a partial install or build artifact missing",{workerScriptPath:t}),"dead";if(ci()==="alive"){if(u.info("SYSTEM","Worker PID file points to a live process, skipping duplicate spawn"),await Kt(e,He($.PORT_IN_USE_WAIT))){Or();let c=await Bt(e,He($.READINESS_WAIT));return u.info("SYSTEM","Worker became healthy while waiting on live PID"),c?"ready":"warming"}return u.warn("SYSTEM","Live PID detected but worker did not become healthy before timeout \u2014 likely still starting"),"warming"}if(await Kt(e,1e3)){Or();let a=await Bt(e,He($.READINESS_WAIT));return a||u.warn("SYSTEM","Worker is alive but readiness timed out \u2014 proceeding anyway"),u.info("SYSTEM","Worker already running and healthy"),a?"ready":"warming"}if(await ui(e)){if(u.info("SYSTEM","Port in use, waiting for worker to become healthy"),await Kt(e,He($.PORT_IN_USE_WAIT))){Or();let c=await Bt(e,He($.READINESS_WAIT));return u.info("SYSTEM","Worker is now healthy"),c?"ready":"warming"}return u.error("SYSTEM","Port in use but worker not responding to health checks"),"dead"}if(hu())return u.warn("SYSTEM","Worker unavailable on Windows \u2014 skipping spawn (recent attempt failed within cooldown)"),"dead";if(u.info("SYSTEM","Starting worker daemon",{workerScriptPath:t}),Eu(),ii(t,e)===void 0)return u.error("SYSTEM","Failed to spawn worker daemon"),"dead";if(!await Kt(e,He($.POST_SPAWN_WAIT)))return u.warn("SYSTEM","Worker spawned but health endpoint not responding within window \u2014 likely still starting in background"),"warming";let i=await Bt(e,He($.READINESS_WAIT));return i||u.warn("SYSTEM","Worker is alive but readiness timed out \u2014 proceeding anyway"),Or(),ai(),u.info("SYSTEM","Worker started successfully"),i?"ready":"warming"}var gu,gi=E(()=>{"use strict";K();Ht();Ge();li();pi();gu=120*1e3});import{existsSync as pt,readFileSync as hi,writeFileSync as Su}from"fs";import{execSync as Yt,spawnSync as Pr}from"child_process";import{join as we}from"path";import{homedir as dt}from"os";function Ei(e){return we(e,".install-version")}function zn(){try{if(Pr("bun",["--version"],{encoding:"utf-8",stdio:["pipe","pipe","pipe"],shell:me}).status===0)return"bun"}catch{}return yu.find(pt)||null}function Si(){return zn()!==null}function yi(){let e=zn();if(!e)return null;try{let t=Pr(e,["--version"],{encoding:"utf-8",stdio:["pipe","pipe","pipe"],shell:me});return t.status===0?t.stdout.trim():null}catch{return null}}function Zn(){try{if(Pr("uv",["--version"],{encoding:"utf-8",stdio:["pipe","pipe","pipe"],shell:me}).status===0)return"uv"}catch{}return wu.find(pt)||null}function wi(){return Zn()!==null}function Cu(){let e=Zn();if(!e)return null;try{let t=Pr(e,["--version"],{encoding:"utf-8",stdio:["pipe","pipe","pipe"],shell:me});return t.status===0?t.stdout.trim():null}catch{return null}}function qn(e){if(e&&typeof e=="object"){let t=e,r=[];t.message&&r.push(t.message);let n=t.stderr?t.stderr.toString().trim():"";n&&r.push(`stderr: ${n}`);let o=t.stdout?t.stdout.toString().trim():"";return!n&&o&&r.push(`stdout: ${o}`),r.join(`
100
+ `)}return String(e)}function ku(){try{if(me?Yt('powershell -c "irm bun.sh/install.ps1 | iex"',{stdio:"pipe",shell:process.env.ComSpec??"cmd.exe"}):Yt("curl -fsSL https://bun.sh/install | bash",{stdio:"pipe",shell:"/bin/bash"}),!Si())throw new Error("Bun installation completed but binary not found. Please restart your terminal and try again.")}catch(e){let t=me?` - winget install Oven-sh.Bun
101
101
  - Or: powershell -c "irm bun.sh/install.ps1 | iex"`:` - curl -fsSL https://bun.sh/install | bash
102
102
  - Or: brew install oven-sh/bun/bun`;throw new Error(`Failed to install Bun. Please install manually:
103
103
  ${t}
104
104
  Then restart your terminal and try again.
105
- Underlying error: ${qn(e)}`)}}function bu(){try{if(me?Vt('powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"',{stdio:"pipe",shell:process.env.ComSpec??"cmd.exe"}):Vt("curl -LsSf https://astral.sh/uv/install.sh | sh",{stdio:"pipe",shell:"/bin/bash"}),!wi())throw new Error("uv installation completed but binary not found. Please restart your terminal and try again.")}catch(e){let t=me?` - winget install astral-sh.uv
105
+ Underlying error: ${qn(e)}`)}}function bu(){try{if(me?Yt('powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"',{stdio:"pipe",shell:process.env.ComSpec??"cmd.exe"}):Yt("curl -LsSf https://astral.sh/uv/install.sh | sh",{stdio:"pipe",shell:"/bin/bash"}),!wi())throw new Error("uv installation completed but binary not found. Please restart your terminal and try again.")}catch(e){let t=me?` - winget install astral-sh.uv
106
106
  - Or: powershell -c "irm https://astral.sh/uv/install.ps1 | iex"`:` - curl -LsSf https://astral.sh/uv/install.sh | sh
107
107
  - Or: brew install uv (macOS)`;throw new Error(`Failed to install uv. Please install manually:
108
108
  ${t}
109
109
  Then restart your terminal and try again.
110
- Underlying error: ${qn(e)}`)}}function Mu(e){let t=JSON.parse(hi(we(e,"package.json"),"utf-8")),r=Object.keys(t.dependencies||{}),n=[];for(let o of r){let s=we(e,"node_modules",...o.split("/"));mt(s)||n.push(o)}if(n.length>0)throw new Error(`Post-install check failed: missing modules: ${n.join(", ")}`)}async function zt(){Si()||ku();let e=zn();if(!e)throw new Error("Bun executable not found after install attempt.");let t=yi();if(!t)throw new Error("Bun installed but version probe failed.");return{bunPath:e,version:t}}async function Xn(){wi()||bu();let e=Zn();if(!e)throw new Error("uv executable not found after install attempt.");let t=Cu();if(!t)throw new Error("uv installed but version probe failed.");return{uvPath:e,version:t}}async function Qn(e,t){if(!mt(we(e,"package.json")))throw new Error(`installPluginDependencies: no package.json at ${e}`);let r=me&&t.includes(" ")?`"${t}"`:t;try{Vt(`${r} install`,{cwd:e,stdio:"pipe",...me?{shell:process.env.ComSpec??"cmd.exe"}:{}})}catch(n){throw new Error(`bun install failed in ${e}
111
- ${qn(n)}`)}Mu(e)}function xu(e){let t=Ei(e);if(!mt(t))return null;let r=hi(t,"utf-8");try{let o=JSON.parse(r);if(o&&typeof o=="object"&&typeof o.version=="string")return o}catch{}let n=r.trim();return vu.test(n)?{version:n.replace(/^v/i,"")}:null}function _n(e,t,r,n){let o={version:t,bun:r,uv:n,installedAt:new Date().toISOString()};Su(Ei(e),JSON.stringify(o))}function vi(e,t){if(!mt(we(e,"node_modules")))return!1;let r=xu(e);if(!r||r.version!==t)return!1;let n=yi();return!(n&&!r.bun||!n&&r.bun||n&&r.bun&&n!==r.bun)}var me,yu,wu,vu,Ci=E(()=>{"use strict";me=process.platform==="win32",yu=me?[we(pt(),".bun","bin","bun.exe")]:[we(pt(),".bun","bin","bun"),"/usr/local/bin/bun","/opt/homebrew/bin/bun"],wu=me?[we(pt(),".local","bin","uv.exe"),we(pt(),".cargo","bin","uv.exe")]:[we(pt(),".local","bin","uv"),we(pt(),".cargo","bin","uv"),"/usr/local/bin/uv","/opt/homebrew/bin/uv"],vu=/^v?\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?(?:\+[0-9A-Za-z.-]+)?$/});var Ke,ki=E(()=>{"use strict";Ke={compressed:"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",frameCount:192,width:128,height:36,frameDelay:22}});import{inflateRawSync as Tu}from"zlib";function Au(e,t=1){if(!e)return"\x1B[38;5;208m";let r=Math.min(255,Math.round(230*t)),n=Math.min(255,Math.round(115*t)),o=Math.min(255,Math.round(70*t));return`\x1B[38;2;${r};${n};${o}m`}function Nu(e,t=1){if(!e)return"\x1B[38;5;215m";let r=Math.min(255,Math.round(255*t)),n=Math.min(255,Math.round(180*t)),o=Math.min(255,Math.round(122*t));return`\x1B[38;2;${r};${n};${o}m`}function Du(){if(Zt)return Zt;try{Zt=Tu(Buffer.from(Ke.compressed,"base64")).toString("utf8").split(Pu).filter(Boolean)}catch{Zt=[]}return Zt}function Uu(e,t,r=1){let n=Au(t,r),o=Nu(t,r),s=n,i=0,a=!1;for(;i<e.length;){let c=e[i];if(c==="<"){let l=e[i+1]==="/";for(;i<e.length&&e[i]!==">";)i++;i++,a=!l,s+=a?o:n;continue}s+=c,i++}return s+Mi}function Lu(){return process.env.COLORTERM==="truecolor"||process.env.COLORTERM==="24bit"}function Wu(e,t){let r=$n[e],n=Ke.width,o=r.slice(0,Math.min(_e,t)).padEnd(_e," "),s=Math.max(0,Math.floor((n-_e)/2));return" ".repeat(s)+`\x1B[1;97m${o}\x1B[0m`+" ".repeat(Math.max(0,n-s-_e))}function ju(e){let t=Ke.width,r=Math.max(0,Math.floor((t-e.length)/2));return" ".repeat(r)+`\x1B[2;37m${e}\x1B[0m`+" ".repeat(Math.max(0,t-r-e.length))}function Fu(){return!process.stdout.isTTY||process.env.CI||process.env.CLAUDE_MEM_NO_BANNER||process.env.NO_COLOR?!1:(process.stdout.columns??0)>=Ke.width}async function Ri(){if(!Fu())return;let e=Lu(),t=Du();if(t.length===0)return;let r=!1,n=()=>{r=!0};process.stdout.on("resize",n),process.stdout.write(Ou),process.stdout.write(Ru),process.stdout.write(`
112
- `.repeat(bi)),process.stdout.write(`\x1B[${bi}A`),process.stdout.write("\x1B[s");let o=" ".repeat(Ke.width),s=(i,a,c,l=1)=>{process.stdout.write("\x1B[u"),process.stdout.write(Uu(i,e,l)),process.stdout.write(`
110
+ Underlying error: ${qn(e)}`)}}function Mu(e){let t=JSON.parse(hi(we(e,"package.json"),"utf-8")),r=Object.keys(t.dependencies||{}),n=[];for(let o of r){let s=we(e,"node_modules",...o.split("/"));pt(s)||n.push(o)}if(n.length>0)throw new Error(`Post-install check failed: missing modules: ${n.join(", ")}`)}async function Vt(){Si()||ku();let e=zn();if(!e)throw new Error("Bun executable not found after install attempt.");let t=yi();if(!t)throw new Error("Bun installed but version probe failed.");return{bunPath:e,version:t}}async function Xn(){wi()||bu();let e=Zn();if(!e)throw new Error("uv executable not found after install attempt.");let t=Cu();if(!t)throw new Error("uv installed but version probe failed.");return{uvPath:e,version:t}}async function Qn(e,t){if(!pt(we(e,"package.json")))throw new Error(`installPluginDependencies: no package.json at ${e}`);let r=me&&t.includes(" ")?`"${t}"`:t;try{Yt(`${r} install`,{cwd:e,stdio:"pipe",...me?{shell:process.env.ComSpec??"cmd.exe"}:{}})}catch(n){throw new Error(`bun install failed in ${e}
111
+ ${qn(n)}`)}Mu(e)}function xu(e){let t=Ei(e);if(!pt(t))return null;let r=hi(t,"utf-8");try{let o=JSON.parse(r);if(o&&typeof o=="object"&&typeof o.version=="string")return o}catch{}let n=r.trim();return vu.test(n)?{version:n.replace(/^v/i,"")}:null}function _n(e,t,r,n){let o={version:t,bun:r,uv:n,installedAt:new Date().toISOString()};Su(Ei(e),JSON.stringify(o))}function vi(e,t){if(!pt(we(e,"node_modules")))return!1;let r=xu(e);if(!r||r.version!==t)return!1;let n=yi();return!(n&&!r.bun||!n&&r.bun||n&&r.bun&&n!==r.bun)}var me,yu,wu,vu,Ci=E(()=>{"use strict";me=process.platform==="win32",yu=me?[we(dt(),".bun","bin","bun.exe")]:[we(dt(),".bun","bin","bun"),"/usr/local/bin/bun","/opt/homebrew/bin/bun"],wu=me?[we(dt(),".local","bin","uv.exe"),we(dt(),".cargo","bin","uv.exe")]:[we(dt(),".local","bin","uv"),we(dt(),".cargo","bin","uv"),"/usr/local/bin/uv","/opt/homebrew/bin/uv"],vu=/^v?\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?(?:\+[0-9A-Za-z.-]+)?$/});var Je,ki=E(()=>{"use strict";Je={compressed:"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",frameCount:192,width:128,height:36,frameDelay:22}});import{inflateRawSync as Tu}from"zlib";function Au(e,t=1){if(!e)return"\x1B[38;5;208m";let r=Math.min(255,Math.round(230*t)),n=Math.min(255,Math.round(115*t)),o=Math.min(255,Math.round(70*t));return`\x1B[38;2;${r};${n};${o}m`}function Nu(e,t=1){if(!e)return"\x1B[38;5;215m";let r=Math.min(255,Math.round(255*t)),n=Math.min(255,Math.round(180*t)),o=Math.min(255,Math.round(122*t));return`\x1B[38;2;${r};${n};${o}m`}function Du(){if(zt)return zt;try{zt=Tu(Buffer.from(Je.compressed,"base64")).toString("utf8").split(Pu).filter(Boolean)}catch{zt=[]}return zt}function Uu(e,t,r=1){let n=Au(t,r),o=Nu(t,r),s=n,i=0,a=!1;for(;i<e.length;){let c=e[i];if(c==="<"){let l=e[i+1]==="/";for(;i<e.length&&e[i]!==">";)i++;i++,a=!l,s+=a?o:n;continue}s+=c,i++}return s+Mi}function Lu(){return process.env.COLORTERM==="truecolor"||process.env.COLORTERM==="24bit"}function Wu(e,t){let r=$n[e],n=Je.width,o=r.slice(0,Math.min(Qe,t)).padEnd(Qe," "),s=Math.max(0,Math.floor((n-Qe)/2));return" ".repeat(s)+`\x1B[1;97m${o}\x1B[0m`+" ".repeat(Math.max(0,n-s-Qe))}function ju(e){let t=Je.width,r=Math.max(0,Math.floor((t-e.length)/2));return" ".repeat(r)+`\x1B[2;37m${e}\x1B[0m`+" ".repeat(Math.max(0,t-r-e.length))}function Fu(){return!process.stdout.isTTY||process.env.CI||process.env.CLAUDE_MEM_NO_BANNER||process.env.NO_COLOR?!1:(process.stdout.columns??0)>=Je.width}async function Ri(){if(!Fu())return;let e=Lu(),t=Du();if(t.length===0)return;let r=!1,n=()=>{r=!0};process.stdout.on("resize",n),process.stdout.write(Ou),process.stdout.write(Ru),process.stdout.write(`
112
+ `.repeat(bi)),process.stdout.write(`\x1B[${bi}A`),process.stdout.write("\x1B[s");let o=" ".repeat(Je.width),s=(i,a,c,l=1)=>{process.stdout.write("\x1B[u"),process.stdout.write(Uu(i,e,l)),process.stdout.write(`
113
113
  `);for(let p=0;p<xi;p++)process.stdout.write(Wu(p,a)),process.stdout.write(`
114
114
  `);for(let p=0;p<Ti;p++)process.stdout.write(o),process.stdout.write(`
115
- `);process.stdout.write(ju(c))};try{for(let l=0;l<t.length;l++){if(r)return;s(t[l],0,""),await qt(Ke.frameDelay)}let i=t[t.length-1],a="persistent memory across sessions",c=14;for(let l=1;l<=c;l++){if(r)return;let p=Math.ceil(_e*(l/c));s(i,p,""),await qt(45)}for(let l=1;l<=6;l++){if(r)return;let p=Math.ceil(a.length*(l/6));s(i,_e,a.slice(0,p)),await qt(33)}for(let l of[.85,.95,1]){if(r)return;s(i,_e,a,l),await qt(100)}await qt(150)}finally{process.stdout.off("resize",n),process.stdout.write(Mi),process.stdout.write(Iu),process.stdout.write(`
116
- `)}}var Ru,Iu,Ou,Mi,Pu,Zt,$n,xi,_e,Ti,bi,qt,Ii=E(()=>{"use strict";ki();Ru="\x1B[?25l",Iu="\x1B[?25h",Ou="\x1B[2J\x1B[3J\x1B[H",Mi="\x1B[0m",Pu="";Zt=null;$n=[" _ _ "," ___| | __ _ _ _ __| | ___ _ __ ___ ___ _ __ ___ "," / __| |/ _` | | | |/ _` |/ _ \\_____| '_ ` _ \\ / _ \\ '_ ` _ \\ ","| (__| | (_| | |_| | (_| | __/_____| | | | | | __/ | | | | |"," \\___|_|\\__,_|\\__,_|\\__,_|\\___| |_| |_| |_|\\___|_| |_| |_|"],xi=$n.length,_e=$n[0].length,Ti=1,bi=Ke.height+xi+Ti+1;qt=e=>new Promise(t=>setTimeout(t,e))});async function Nr(e,t=1e4){let r=`http://127.0.0.1:${e}`,n=!1;try{await fetch(`${r}/api/admin/shutdown`,{method:"POST",signal:AbortSignal.timeout(5e3)}),n=!0}catch{return{workerWasRunning:!1}}let o=500,s=Math.ceil(t/o);for(let i=0;i<s;i++){await new Promise(a=>setTimeout(a,o));try{await fetch(`${r}/api/health`,{signal:AbortSignal.timeout(1e3)})}catch(a){if(a instanceof Error&&a.name==="AbortError")continue;return{workerWasRunning:n}}}return{workerWasRunning:n}}var eo=E(()=>{"use strict"});import{execSync as Gu}from"child_process";import{existsSync as Me,readdirSync as Hu}from"fs";import{homedir as Oi}from"os";import{join as xe}from"path";function Xt(e){try{return Gu(`${ue?"where":"which"} ${e}`,{stdio:"pipe"}),!0}catch(t){return process.env.DEBUG&&console.error(`[ide-detection] ${e} not in PATH:`,t instanceof Error?t.message:String(t)),!1}}function Ju(e){let t=xe(Oi(),".vscode","extensions");if(!Me(t))return!1;try{return Hu(t).some(n=>n.toLowerCase().includes(e.toLowerCase()))}catch(r){return console.warn("[ide-detection] Failed to read VS Code extensions directory:",r instanceof Error?r.message:String(r)),!1}}function ft(){let e=Oi();return[{id:"claude-code",label:"Claude Code",detected:Xt("claude"),supported:!0,hint:"recommended"},{id:"gemini-cli",label:"Gemini CLI",detected:Me(xe(e,".gemini")),supported:!0},{id:"opencode",label:"OpenCode",detected:Me(xe(e,".config","opencode"))||Xt("opencode"),supported:!0,hint:"plugin-based integration"},{id:"openclaw",label:"OpenClaw",detected:Me(xe(e,".openclaw")),supported:!0,hint:"plugin-based integration"},{id:"windsurf",label:"Windsurf",detected:Me(xe(e,".codeium","windsurf")),supported:!0},{id:"codex-cli",label:"Codex CLI",detected:Me(xe(e,".codex")),supported:!0,hint:"native hooks integration"},{id:"cursor",label:"Cursor",detected:Me(xe(e,".cursor")),supported:!0,hint:"hooks + MCP integration"},{id:"copilot-cli",label:"Copilot CLI",detected:Xt("copilot"),supported:!0,hint:"MCP-based integration"},{id:"antigravity",label:"Antigravity",detected:Me(xe(e,".gemini","antigravity")),supported:!0,hint:"MCP-based integration"},{id:"goose",label:"Goose",detected:Me(xe(e,".config","goose"))||Xt("goose"),supported:!0,hint:"MCP-based integration"},{id:"roo-code",label:"Roo Code",detected:Ju("roo-code"),supported:!0,hint:"MCP-based integration"},{id:"warp",label:"Warp",detected:Me(xe(e,".warp"))||Xt("warp"),supported:!0,hint:"MCP-based integration"}]}var Pi=E(()=>{"use strict";Xe()});var Ai=E(()=>{"use strict";Ge();re()});import Ni from"path";import{readFileSync as Yh,existsSync as Vh,writeFileSync as zh,renameSync as Zh,mkdirSync as qh}from"fs";import{execSync as Qh}from"child_process";function to(e,t,r){let n=process.env[e];if(n){let o=parseInt(n,10);if(Number.isFinite(o)&&o>=r.min&&o<=r.max)return o;u.warn("SYSTEM",`Invalid ${e}, using default`,{value:n,min:r.min,max:r.max})}return t}function Bu(e,t={},r){return new Promise((n,o)=>{let s=setTimeout(()=>o(new Error(`Request timed out after ${r}ms`)),r);fetch(e,t).then(i=>{clearTimeout(s),n(i)},i=>{clearTimeout(s),o(i)})})}function Qt(){if(Dr!==null)return Dr;let e=Ni.join(Z.get("CLAUDE_MEM_DATA_DIR"),"settings.json"),t=Z.loadFromFile(e);return Dr=parseInt(t.CLAUDE_MEM_WORKER_PORT,10),Dr}function Yu(){if(Ur!==null)return Ur;let e=Ni.join(Z.get("CLAUDE_MEM_DATA_DIR"),"settings.json");return Ur=Z.loadFromFile(e).CLAUDE_MEM_WORKER_HOST,Ur}function Vu(e){return`http://${Yu()}:${Qt()}${e}`}function Lr(e,t={}){let r=t.method??"GET",n=t.timeoutMs??Ku,o=Vu(e),s={method:r};return t.headers&&(s.headers=t.headers),t.body&&(s.body=t.body),n>0?Bu(o,s,n):fetch(o,s)}var sE,Ku,iE,Dr,Ur,Wr=E(()=>{"use strict";at();K();Jt();Ge();re();Ai();Jn();sE=to("CLAUDE_MEM_HEALTH_TIMEOUT_MS",Rr($.HEALTH_CHECK),{min:500,max:3e5}),Ku=to("CLAUDE_MEM_API_TIMEOUT_MS",Rr($.API_REQUEST),{min:500,max:3e5}),iE=to("CLAUDE_MEM_HOOK_READINESS_TIMEOUT_MS",Rr($.HOOK_READINESS_WAIT),{min:0,max:3e5});Dr=null,Ur=null});import{existsSync as zu,readFileSync as Zu,writeFileSync as Di,mkdirSync as Ui,renameSync as qu}from"fs";import{join as ro,basename as uE}from"path";function Li(e){try{return zu(e)?JSON.parse(Zu(e,"utf-8")):{}}catch(t){return u.error("CONFIG","Failed to read Cursor registry, using empty registry",{file:e,error:t instanceof Error?t.message:String(t)}),{}}}function Wi(e,t){let r=ro(e,"..");Ui(r,{recursive:!0}),Di(e,JSON.stringify(t,null,2))}function no(e,t){let r=ro(e,".cursor","rules"),n=ro(r,"claude-mem-context.mdc"),o=`${n}.tmp`;Ui(r,{recursive:!0});let s=`---
115
+ `);process.stdout.write(ju(c))};try{for(let l=0;l<t.length;l++){if(r)return;s(t[l],0,""),await Zt(Je.frameDelay)}let i=t[t.length-1],a="persistent memory across sessions",c=14;for(let l=1;l<=c;l++){if(r)return;let p=Math.ceil(Qe*(l/c));s(i,p,""),await Zt(45)}for(let l=1;l<=6;l++){if(r)return;let p=Math.ceil(a.length*(l/6));s(i,Qe,a.slice(0,p)),await Zt(33)}for(let l of[.85,.95,1]){if(r)return;s(i,Qe,a,l),await Zt(100)}await Zt(150)}finally{process.stdout.off("resize",n),process.stdout.write(Mi),process.stdout.write(Iu),process.stdout.write(`
116
+ `)}}var Ru,Iu,Ou,Mi,Pu,zt,$n,xi,Qe,Ti,bi,Zt,Ii=E(()=>{"use strict";ki();Ru="\x1B[?25l",Iu="\x1B[?25h",Ou="\x1B[2J\x1B[3J\x1B[H",Mi="\x1B[0m",Pu="";zt=null;$n=[" _ _ "," ___| | __ _ _ _ __| | ___ _ __ ___ ___ _ __ ___ "," / __| |/ _` | | | |/ _` |/ _ \\_____| '_ ` _ \\ / _ \\ '_ ` _ \\ ","| (__| | (_| | |_| | (_| | __/_____| | | | | | __/ | | | | |"," \\___|_|\\__,_|\\__,_|\\__,_|\\___| |_| |_| |_|\\___|_| |_| |_|"],xi=$n.length,Qe=$n[0].length,Ti=1,bi=Je.height+xi+Ti+1;Zt=e=>new Promise(t=>setTimeout(t,e))});async function Ar(e,t=1e4){let r=`http://127.0.0.1:${e}`,n=!1;try{await fetch(`${r}/api/admin/shutdown`,{method:"POST",signal:AbortSignal.timeout(5e3)}),n=!0}catch{return{workerWasRunning:!1}}let o=500,s=Math.ceil(t/o);for(let i=0;i<s;i++){await new Promise(a=>setTimeout(a,o));try{await fetch(`${r}/api/health`,{signal:AbortSignal.timeout(1e3)})}catch(a){if(a instanceof Error&&a.name==="AbortError")continue;return{workerWasRunning:n}}}return{workerWasRunning:n}}var eo=E(()=>{"use strict"});import{execSync as Gu}from"child_process";import{existsSync as Me,readdirSync as Hu}from"fs";import{homedir as Oi}from"os";import{join as xe}from"path";function qt(e){try{return Gu(`${ue?"where":"which"} ${e}`,{stdio:"pipe"}),!0}catch(t){return process.env.DEBUG&&console.error(`[ide-detection] ${e} not in PATH:`,t instanceof Error?t.message:String(t)),!1}}function Ju(e){let t=xe(Oi(),".vscode","extensions");if(!Me(t))return!1;try{return Hu(t).some(n=>n.toLowerCase().includes(e.toLowerCase()))}catch(r){return console.warn("[ide-detection] Failed to read VS Code extensions directory:",r instanceof Error?r.message:String(r)),!1}}function mt(){let e=Oi();return[{id:"claude-code",label:"Claude Code",detected:qt("claude"),supported:!0,hint:"recommended"},{id:"gemini-cli",label:"Gemini CLI",detected:Me(xe(e,".gemini")),supported:!0},{id:"opencode",label:"OpenCode",detected:Me(xe(e,".config","opencode"))||qt("opencode"),supported:!0,hint:"plugin-based integration"},{id:"openclaw",label:"OpenClaw",detected:Me(xe(e,".openclaw")),supported:!0,hint:"plugin-based integration"},{id:"windsurf",label:"Windsurf",detected:Me(xe(e,".codeium","windsurf")),supported:!0},{id:"codex-cli",label:"Codex CLI",detected:Me(xe(e,".codex")),supported:!0,hint:"native hooks integration"},{id:"cursor",label:"Cursor",detected:Me(xe(e,".cursor")),supported:!0,hint:"hooks + MCP integration"},{id:"copilot-cli",label:"Copilot CLI",detected:qt("copilot"),supported:!0,hint:"MCP-based integration"},{id:"antigravity",label:"Antigravity",detected:Me(xe(e,".gemini","antigravity")),supported:!0,hint:"MCP-based integration"},{id:"goose",label:"Goose",detected:Me(xe(e,".config","goose"))||qt("goose"),supported:!0,hint:"MCP-based integration"},{id:"roo-code",label:"Roo Code",detected:Ju("roo-code"),supported:!0,hint:"MCP-based integration"},{id:"warp",label:"Warp",detected:Me(xe(e,".warp"))||qt("warp"),supported:!0,hint:"MCP-based integration"}]}var Pi=E(()=>{"use strict";qe()});var Ai=E(()=>{"use strict";Ge();re()});import Ni from"path";import{readFileSync as Vh,existsSync as zh,writeFileSync as Zh,renameSync as qh,mkdirSync as Xh}from"fs";import{execSync as _h}from"child_process";function to(e,t,r){let n=process.env[e];if(n){let o=parseInt(n,10);if(Number.isFinite(o)&&o>=r.min&&o<=r.max)return o;u.warn("SYSTEM",`Invalid ${e}, using default`,{value:n,min:r.min,max:r.max})}return t}function Bu(e,t={},r){return new Promise((n,o)=>{let s=setTimeout(()=>o(new Error(`Request timed out after ${r}ms`)),r);fetch(e,t).then(i=>{clearTimeout(s),n(i)},i=>{clearTimeout(s),o(i)})})}function Xt(){if(Nr!==null)return Nr;let e=Ni.join(Z.get("CLAUDE_MEM_DATA_DIR"),"settings.json"),t=Z.loadFromFile(e);return Nr=parseInt(t.CLAUDE_MEM_WORKER_PORT,10),Nr}function Yu(){if(Dr!==null)return Dr;let e=Ni.join(Z.get("CLAUDE_MEM_DATA_DIR"),"settings.json");return Dr=Z.loadFromFile(e).CLAUDE_MEM_WORKER_HOST,Dr}function Vu(e){return`http://${Yu()}:${Xt()}${e}`}function Ur(e,t={}){let r=t.method??"GET",n=t.timeoutMs??Ku,o=Vu(e),s={method:r};return t.headers&&(s.headers=t.headers),t.body&&(s.body=t.body),n>0?Bu(o,s,n):fetch(o,s)}var iE,Ku,aE,Nr,Dr,Lr=E(()=>{"use strict";it();K();Ht();Ge();re();Ai();Jn();iE=to("CLAUDE_MEM_HEALTH_TIMEOUT_MS",Tr($.HEALTH_CHECK),{min:500,max:3e5}),Ku=to("CLAUDE_MEM_API_TIMEOUT_MS",Tr($.API_REQUEST),{min:500,max:3e5}),aE=to("CLAUDE_MEM_HOOK_READINESS_TIMEOUT_MS",Tr($.HOOK_READINESS_WAIT),{min:0,max:3e5});Nr=null,Dr=null});import{existsSync as zu,readFileSync as Zu,writeFileSync as Di,mkdirSync as Ui,renameSync as qu}from"fs";import{join as ro,basename as dE}from"path";function Li(e){try{return zu(e)?JSON.parse(Zu(e,"utf-8")):{}}catch(t){return u.error("CONFIG","Failed to read Cursor registry, using empty registry",{file:e,error:t instanceof Error?t.message:String(t)}),{}}}function Wi(e,t){let r=ro(e,"..");Ui(r,{recursive:!0}),Di(e,JSON.stringify(t,null,2))}function no(e,t){let r=ro(e,".cursor","rules"),n=ro(r,"claude-mem-context.mdc"),o=`${n}.tmp`;Ui(r,{recursive:!0});let s=`---
117
117
  alwaysApply: true
118
118
  description: "Claude-mem context from past sessions (auto-updated)"
119
119
  ---
@@ -126,9 +126,9 @@ ${t}
126
126
 
127
127
  ---
128
128
  *Updated after last session. Use claude-mem's MCP search tools for more detailed queries.*
129
- `;Di(o,s),qu(o,n)}var ji=E(()=>{"use strict";K()});var zi={};Se(zi,{checkCursorHooksStatus:()=>Vi,configureCursorMcp:()=>td,detectClaudeCode:()=>id,detectPlatform:()=>Hi,findBunPath:()=>ht,findMcpServerPath:()=>_t,findWorkerServicePath:()=>gt,getScriptExtension:()=>$u,getTargetDir:()=>Gr,handleCursorCommand:()=>ad,installCursorHooks:()=>Bi,readCursorRegistry:()=>Fr,registerCursorProject:()=>Ji,uninstallCursorHooks:()=>Yi,unregisterCursorProject:()=>Ki,updateCursorContextForProject:()=>ed,writeCursorRegistry:()=>ao});import P from"path";import{homedir as jr}from"os";import{existsSync as fe,readFileSync as Fi,writeFileSync as so,unlinkSync as oo,mkdirSync as io}from"fs";import{exec as Xu}from"child_process";import{promisify as Qu}from"util";function Hi(){return process.platform==="win32"?"windows":"unix"}function $u(){return Hi()==="windows"?".ps1":".sh"}function Fr(){return Li(Gi)}function ao(e){Wi(Gi,e)}function Ji(e,t){let r=Fr();r[e]={workspacePath:t,installedAt:new Date().toISOString()},ao(r),u.info("CURSOR","Registered project for auto-context updates",{projectName:e,workspacePath:t})}function Ki(e){let t=Fr();t[e]&&(delete t[e],ao(t),u.info("CURSOR","Unregistered project",{projectName:e}))}async function ed(e,t){let n=Fr()[e];if(n)try{let o=await Lr(`/api/context/inject?project=${encodeURIComponent(e)}`);if(!o.ok)return;let s=await o.text();if(!s||!s.trim())return;no(n.workspacePath,s),u.debug("CURSOR","Updated context file",{projectName:e,workspacePath:n.workspacePath})}catch(o){o instanceof Error?u.error("WORKER","Failed to update context file",{projectName:e},o):u.error("WORKER","Failed to update context file",{projectName:e},new Error(String(o)))}}function _t(){let e=[P.join(Ft,"plugin","scripts","mcp-server.cjs"),P.join(process.cwd(),"plugin","scripts","mcp-server.cjs")];for(let t of e)if(fe(t))return t;return null}function gt(){let e=[P.join(Ft,"plugin","scripts","worker-service.cjs"),P.join(process.cwd(),"plugin","scripts","worker-service.cjs")];for(let t of e)if(fe(t))return t;return null}function ht(){let e=[P.join(jr(),".bun","bin","bun"),"/usr/local/bin/bun","/usr/bin/bun",...process.platform==="win32"?[P.join(jr(),".bun","bin","bun.exe"),P.join(process.env.LOCALAPPDATA||"","bun","bun.exe")]:[]];for(let t of e)if(t&&fe(t))return t;return"bun"}function Gr(e){switch(e){case"project":return P.join(process.cwd(),".cursor");case"user":return P.join(jr(),".cursor");case"enterprise":return process.platform==="darwin"?"/Library/Application Support/Cursor":process.platform==="linux"?"/etc/cursor":process.platform==="win32"?P.join(process.env.ProgramData||"C:\\ProgramData","Cursor"):null;default:return null}}function td(e){let t=_t();if(!t)return console.error("Could not find MCP server script"),console.error(" Expected at: ~/.claude/plugins/marketplaces/thedotmack/plugin/scripts/mcp-server.cjs"),1;let r=Gr(e);if(!r)return console.error(`Invalid target: ${e}. Use: project or user`),1;let n=P.join(r,"mcp.json");try{io(r,{recursive:!0});let o={mcpServers:{}};if(fe(n))try{o=JSON.parse(Fi(n,"utf-8")),o.mcpServers||(o.mcpServers={})}catch(s){s instanceof Error?u.error("WORKER","Corrupt mcp.json, creating new config",{path:n},s):u.error("WORKER","Corrupt mcp.json, creating new config",{path:n},new Error(String(s))),o={mcpServers:{}}}return o.mcpServers["claude-mem"]={command:"node",args:[t]},so(n,JSON.stringify(o,null,2)),console.log(` Configured MCP server in ${e==="user"?"~/.cursor":".cursor"}/mcp.json`),console.log(` Server path: ${t}`),0}catch(o){return console.error(`Failed to configure MCP: ${o.message}`),1}}async function Bi(e){console.log(`
129
+ `;Di(o,s),qu(o,n)}var ji=E(()=>{"use strict";K()});var zi={};Se(zi,{checkCursorHooksStatus:()=>Vi,configureCursorMcp:()=>td,detectClaudeCode:()=>id,detectPlatform:()=>Hi,findBunPath:()=>gt,findMcpServerPath:()=>Qt,findWorkerServicePath:()=>ft,getScriptExtension:()=>$u,getTargetDir:()=>Fr,handleCursorCommand:()=>ad,installCursorHooks:()=>Bi,readCursorRegistry:()=>jr,registerCursorProject:()=>Ji,uninstallCursorHooks:()=>Yi,unregisterCursorProject:()=>Ki,updateCursorContextForProject:()=>ed,writeCursorRegistry:()=>ao});import P from"path";import{homedir as Wr}from"os";import{existsSync as fe,readFileSync as Fi,writeFileSync as so,unlinkSync as oo,mkdirSync as io}from"fs";import{exec as Xu}from"child_process";import{promisify as Qu}from"util";function Hi(){return process.platform==="win32"?"windows":"unix"}function $u(){return Hi()==="windows"?".ps1":".sh"}function jr(){return Li(Gi)}function ao(e){Wi(Gi,e)}function Ji(e,t){let r=jr();r[e]={workspacePath:t,installedAt:new Date().toISOString()},ao(r),u.info("CURSOR","Registered project for auto-context updates",{projectName:e,workspacePath:t})}function Ki(e){let t=jr();t[e]&&(delete t[e],ao(t),u.info("CURSOR","Unregistered project",{projectName:e}))}async function ed(e,t){let n=jr()[e];if(n)try{let o=await Ur(`/api/context/inject?project=${encodeURIComponent(e)}`);if(!o.ok)return;let s=await o.text();if(!s||!s.trim())return;no(n.workspacePath,s),u.debug("CURSOR","Updated context file",{projectName:e,workspacePath:n.workspacePath})}catch(o){o instanceof Error?u.error("WORKER","Failed to update context file",{projectName:e},o):u.error("WORKER","Failed to update context file",{projectName:e},new Error(String(o)))}}function Qt(){let e=[P.join(jt,"plugin","scripts","mcp-server.cjs"),P.join(process.cwd(),"plugin","scripts","mcp-server.cjs")];for(let t of e)if(fe(t))return t;return null}function ft(){let e=[P.join(jt,"plugin","scripts","worker-service.cjs"),P.join(process.cwd(),"plugin","scripts","worker-service.cjs")];for(let t of e)if(fe(t))return t;return null}function gt(){let e=[P.join(Wr(),".bun","bin","bun"),"/usr/local/bin/bun","/usr/bin/bun",...process.platform==="win32"?[P.join(Wr(),".bun","bin","bun.exe"),P.join(process.env.LOCALAPPDATA||"","bun","bun.exe")]:[]];for(let t of e)if(t&&fe(t))return t;return"bun"}function Fr(e){switch(e){case"project":return P.join(process.cwd(),".cursor");case"user":return P.join(Wr(),".cursor");case"enterprise":return process.platform==="darwin"?"/Library/Application Support/Cursor":process.platform==="linux"?"/etc/cursor":process.platform==="win32"?P.join(process.env.ProgramData||"C:\\ProgramData","Cursor"):null;default:return null}}function td(e){let t=Qt();if(!t)return console.error("Could not find MCP server script"),console.error(" Expected at: ~/.claude/plugins/marketplaces/thedotmack/plugin/scripts/mcp-server.cjs"),1;let r=Fr(e);if(!r)return console.error(`Invalid target: ${e}. Use: project or user`),1;let n=P.join(r,"mcp.json");try{io(r,{recursive:!0});let o={mcpServers:{}};if(fe(n))try{o=JSON.parse(Fi(n,"utf-8")),o.mcpServers||(o.mcpServers={})}catch(s){s instanceof Error?u.error("WORKER","Corrupt mcp.json, creating new config",{path:n},s):u.error("WORKER","Corrupt mcp.json, creating new config",{path:n},new Error(String(s))),o={mcpServers:{}}}return o.mcpServers["claude-mem"]={command:"node",args:[t]},so(n,JSON.stringify(o,null,2)),console.log(` Configured MCP server in ${e==="user"?"~/.cursor":".cursor"}/mcp.json`),console.log(` Server path: ${t}`),0}catch(o){return console.error(`Failed to configure MCP: ${o.message}`),1}}async function Bi(e){console.log(`
130
130
  Installing Claude-Mem Cursor hooks (${e} level)...
131
- `);let t=Gr(e);if(!t)return console.error(`Invalid target: ${e}. Use: project, user, or enterprise`),1;let r=gt();if(!r)return console.error("Could not find worker-service.cjs"),console.error(" Expected at: ~/.claude/plugins/marketplaces/thedotmack/plugin/scripts/worker-service.cjs"),1;let n=process.cwd(),o=P.join(t,"hooks.json"),s=ht(),i=s.replace(/\\/g,"\\\\"),a=r.replace(/\\/g,"\\\\"),c=p=>`"${i}" "${a}" hook cursor ${p}`;console.log(` Using Bun runtime: ${s}`);let l={version:1,hooks:{beforeSubmitPrompt:[{command:c("session-init")},{command:c("context")}],afterMCPExecution:[{command:c("observation")}],afterShellExecution:[{command:c("observation")}],afterFileEdit:[{command:c("file-edit")}],stop:[{command:c("summarize")}]}};try{return io(t,{recursive:!0}),await rd(o,l,r,e,t,n),0}catch(p){let f=p instanceof Error?p.message:String(p);return console.error(`
131
+ `);let t=Fr(e);if(!t)return console.error(`Invalid target: ${e}. Use: project, user, or enterprise`),1;let r=ft();if(!r)return console.error("Could not find worker-service.cjs"),console.error(" Expected at: ~/.claude/plugins/marketplaces/thedotmack/plugin/scripts/worker-service.cjs"),1;let n=process.cwd(),o=P.join(t,"hooks.json"),s=gt(),i=s.replace(/\\/g,"\\\\"),a=r.replace(/\\/g,"\\\\"),c=p=>`"${i}" "${a}" hook cursor ${p}`;console.log(` Using Bun runtime: ${s}`);let l={version:1,hooks:{beforeSubmitPrompt:[{command:c("session-init")},{command:c("context")}],afterMCPExecution:[{command:c("observation")}],afterShellExecution:[{command:c("observation")}],afterFileEdit:[{command:c("file-edit")}],stop:[{command:c("summarize")}]}};try{return io(t,{recursive:!0}),await rd(o,l,r,e,t,n),0}catch(p){let f=p instanceof Error?p.message:String(p);return console.error(`
132
132
  Installation failed: ${f}`),e==="enterprise"&&console.error(" Tip: Enterprise installation may require sudo/admin privileges"),1}}async function rd(e,t,r,n,o,s){so(e,JSON.stringify(t,null,2)),console.log(" Created hooks.json (unified CLI mode)"),console.log(` Worker service: ${r}`),n==="project"&&await nd(o,s),console.log(`
133
133
  Installation complete!
134
134
 
@@ -153,15 +153,15 @@ description: "Claude-mem context from past sessions (auto-updated)"
153
153
  *No context yet. Complete your first session and context will appear here.*
154
154
 
155
155
  Use claude-mem's MCP search tools for manual memory queries.
156
- `),console.log(" Created placeholder context file (will populate after first session)")}Ji(n,t),console.log(" Registered for auto-context updates")}async function od(e,t){if(!(await Lr("/api/readiness")).ok)return!1;let n=await Lr(`/api/context/inject?project=${encodeURIComponent(e)}`);if(!n.ok)return!1;let o=await n.text();return o&&o.trim()?(no(t,o),console.log(" Generated initial context from existing memory"),!0):!1}function Yi(e){console.log(`
156
+ `),console.log(" Created placeholder context file (will populate after first session)")}Ji(n,t),console.log(" Registered for auto-context updates")}async function od(e,t){if(!(await Ur("/api/readiness")).ok)return!1;let n=await Ur(`/api/context/inject?project=${encodeURIComponent(e)}`);if(!n.ok)return!1;let o=await n.text();return o&&o.trim()?(no(t,o),console.log(" Generated initial context from existing memory"),!0):!1}function Yi(e){console.log(`
157
157
  Uninstalling Claude-Mem Cursor hooks (${e} level)...
158
- `);let t=Gr(e);if(!t)return console.error(`Invalid target: ${e}`),1;let r=P.join(t,"hooks"),n=P.join(t,"hooks.json"),o=["common.sh","session-init.sh","context-inject.sh","save-observation.sh","save-file-edit.sh","session-summary.sh"],s=["common.ps1","session-init.ps1","context-inject.ps1","save-observation.ps1","save-file-edit.ps1","session-summary.ps1"],i=[...o,...s];try{return sd(r,i,n,e,t),0}catch(a){let c=a instanceof Error?a.message:String(a);return console.error(`
158
+ `);let t=Fr(e);if(!t)return console.error(`Invalid target: ${e}`),1;let r=P.join(t,"hooks"),n=P.join(t,"hooks.json"),o=["common.sh","session-init.sh","context-inject.sh","save-observation.sh","save-file-edit.sh","session-summary.sh"],s=["common.ps1","session-init.ps1","context-inject.ps1","save-observation.ps1","save-file-edit.ps1","session-summary.ps1"],i=[...o,...s];try{return sd(r,i,n,e,t),0}catch(a){let c=a instanceof Error?a.message:String(a);return console.error(`
159
159
  Uninstallation failed: ${c}`),1}}function sd(e,t,r,n,o){for(let s of t){let i=P.join(e,s);fe(i)&&(oo(i),console.log(` Removed legacy script: ${s}`))}if(fe(r)&&(oo(r),console.log(" Removed hooks.json")),n==="project"){let s=P.join(o,"rules","claude-mem-context.mdc");fe(s)&&(oo(s),console.log(" Removed context file"));let i=P.basename(process.cwd());Ki(i),console.log(" Unregistered from auto-context updates")}console.log(`
160
160
  Uninstallation complete!
161
161
  `),console.log("Restart Cursor to apply changes.")}function Vi(){console.log(`
162
162
  Claude-Mem Cursor Hooks Status
163
- `);let e=[{name:"Project",dir:P.join(process.cwd(),".cursor")},{name:"User",dir:P.join(jr(),".cursor")}];process.platform==="darwin"?e.push({name:"Enterprise",dir:"/Library/Application Support/Cursor"}):process.platform==="linux"&&e.push({name:"Enterprise",dir:"/etc/cursor"});let t=!1;for(let r of e){let n=P.join(r.dir,"hooks.json"),o=P.join(r.dir,"hooks");if(fe(n)){t=!0,console.log(`${r.name}: Installed`),console.log(` Config: ${n}`);let s=null;try{s=JSON.parse(Fi(n,"utf-8"))}catch(i){i instanceof Error?u.error("WORKER","Unable to parse hooks.json",{path:n},i):u.error("WORKER","Unable to parse hooks.json",{path:n},new Error(String(i))),console.log(" Mode: Unable to parse hooks.json")}if(s){let i=s?.hooks?.beforeSubmitPrompt?.[0]?.command||"";if(i.includes("worker-service.cjs")&&i.includes("hook cursor"))console.log(" Mode: Unified CLI (bun worker-service.cjs)");else{let a=["session-init.sh","context-inject.sh","save-observation.sh"],c=["session-init.ps1","context-inject.ps1","save-observation.ps1"],l=a.some(f=>fe(P.join(o,f))),p=c.some(f=>fe(P.join(o,f)));l||p?(console.log(" Mode: Legacy shell scripts (consider reinstalling for unified CLI)"),l&&p?console.log(" Platform: Both (bash + PowerShell)"):l?console.log(" Platform: Unix (bash)"):p&&console.log(" Platform: Windows (PowerShell)")):console.log(" Mode: Unknown configuration")}}if(r.name==="Project"){let i=P.join(r.dir,"rules","claude-mem-context.mdc");fe(i)?console.log(" Context: Active"):console.log(" Context: Not yet generated (will be created on first prompt)")}}else console.log(`${r.name}: Not installed`);console.log("")}return t||console.log(`No hooks installed. Run: claude-mem cursor install
164
- `),0}async function id(){try{let{stdout:t}=await _u("which claude || where claude",{timeout:5e3});if(t.trim())return!0}catch(t){t instanceof Error?u.debug("WORKER","Claude CLI not in PATH",{},t):u.debug("WORKER","Claude CLI not in PATH",{},new Error(String(t)))}let e=P.join(ct,"plugins");return!!fe(e)}async function ad(e,t){switch(e){case"install":{let r=t[0]||"project";return Bi(r)}case"uninstall":{let r=t[0]||"project";return Yi(r)}case"status":return Vi();case"setup":return console.log("Use the main entry point for setup"),0;default:return console.log(`
163
+ `);let e=[{name:"Project",dir:P.join(process.cwd(),".cursor")},{name:"User",dir:P.join(Wr(),".cursor")}];process.platform==="darwin"?e.push({name:"Enterprise",dir:"/Library/Application Support/Cursor"}):process.platform==="linux"&&e.push({name:"Enterprise",dir:"/etc/cursor"});let t=!1;for(let r of e){let n=P.join(r.dir,"hooks.json"),o=P.join(r.dir,"hooks");if(fe(n)){t=!0,console.log(`${r.name}: Installed`),console.log(` Config: ${n}`);let s=null;try{s=JSON.parse(Fi(n,"utf-8"))}catch(i){i instanceof Error?u.error("WORKER","Unable to parse hooks.json",{path:n},i):u.error("WORKER","Unable to parse hooks.json",{path:n},new Error(String(i))),console.log(" Mode: Unable to parse hooks.json")}if(s){let i=s?.hooks?.beforeSubmitPrompt?.[0]?.command||"";if(i.includes("worker-service.cjs")&&i.includes("hook cursor"))console.log(" Mode: Unified CLI (bun worker-service.cjs)");else{let a=["session-init.sh","context-inject.sh","save-observation.sh"],c=["session-init.ps1","context-inject.ps1","save-observation.ps1"],l=a.some(f=>fe(P.join(o,f))),p=c.some(f=>fe(P.join(o,f)));l||p?(console.log(" Mode: Legacy shell scripts (consider reinstalling for unified CLI)"),l&&p?console.log(" Platform: Both (bash + PowerShell)"):l?console.log(" Platform: Unix (bash)"):p&&console.log(" Platform: Windows (PowerShell)")):console.log(" Mode: Unknown configuration")}}if(r.name==="Project"){let i=P.join(r.dir,"rules","claude-mem-context.mdc");fe(i)?console.log(" Context: Active"):console.log(" Context: Not yet generated (will be created on first prompt)")}}else console.log(`${r.name}: Not installed`);console.log("")}return t||console.log(`No hooks installed. Run: claude-mem cursor install
164
+ `),0}async function id(){try{let{stdout:t}=await _u("which claude || where claude",{timeout:5e3});if(t.trim())return!0}catch(t){t instanceof Error?u.debug("WORKER","Claude CLI not in PATH",{},t):u.debug("WORKER","Claude CLI not in PATH",{},new Error(String(t)))}let e=P.join(at,"plugins");return!!fe(e)}async function ad(e,t){switch(e){case"install":{let r=t[0]||"project";return Bi(r)}case"uninstall":{let r=t[0]||"project";return Yi(r)}case"status":return Vi();case"setup":return console.log("Use the main entry point for setup"),0;default:return console.log(`
165
165
  Claude-Mem Cursor Integration
166
166
 
167
167
  Usage: claude-mem cursor <command> [options]
@@ -185,20 +185,20 @@ Examples:
185
185
  claude-mem cursor status # Check if hooks are installed
186
186
 
187
187
  For more info: https://docs.claude-mem.ai/cursor
188
- `),0}}var _u,Gi,$t=E(()=>{"use strict";K();Wr();re();ji();_u=Qu(Xu),Gi=P.join(N,"cursor-projects.json")});var po={};Se(po,{checkGeminiCliHooksStatus:()=>_i,handleGeminiCliCommand:()=>hd,installGeminiCliHooks:()=>Xi,uninstallGeminiCliHooks:()=>Qi});import co from"path";import{homedir as cd}from"os";import{existsSync as Et,readFileSync as Hr,writeFileSync as lo,mkdirSync as Zi}from"fs";function ud(e,t,r){let n=St[r];if(!n)throw new Error(`Unknown Gemini CLI event: ${r}`);let o=e.replace(/\\/g,"\\\\"),s=t.replace(/\\/g,"\\\\");return`"${o}" "${s}" hook gemini-cli ${n}`}function dd(e){return{matcher:"*",hooks:[{name:er,type:"command",command:e,timeout:ld}]}}function uo(){if(!Et(ne))return{};let e=Hr(ne,"utf-8");try{return JSON.parse(e)}catch(t){throw t instanceof Error?u.error("WORKER","Corrupt JSON in Gemini settings",{path:ne},t):u.error("WORKER","Corrupt JSON in Gemini settings",{path:ne},new Error(String(t))),new Error(`Corrupt JSON in ${ne}, refusing to overwrite user settings`)}}function qi(e){Zi(Jr,{recursive:!0}),lo(ne,JSON.stringify(e,null,2)+`
189
- `)}function pd(e,t){let r={...e};r.hooks||(r.hooks={});for(let[n,o]of Object.entries(t)){let s=r.hooks[n]??[];for(let i of o){let a=s.findIndex(c=>c.hooks.some(l=>l.name===er));if(a>=0){let c=s[a],l=c.hooks.findIndex(p=>p.name===er);l>=0?c.hooks[l]=i.hooks[0]:c.hooks.push(i.hooks[0])}else s.push(i)}r.hooks[n]=s}return r}function md(){let e="<claude-mem-context>",r=`${e}
188
+ `),0}}var _u,Gi,_t=E(()=>{"use strict";K();Lr();re();ji();_u=Qu(Xu),Gi=P.join(N,"cursor-projects.json")});var po={};Se(po,{checkGeminiCliHooksStatus:()=>_i,handleGeminiCliCommand:()=>hd,installGeminiCliHooks:()=>Xi,uninstallGeminiCliHooks:()=>Qi});import co from"path";import{homedir as cd}from"os";import{existsSync as ht,readFileSync as Gr,writeFileSync as lo,mkdirSync as Zi}from"fs";function ud(e,t,r){let n=Et[r];if(!n)throw new Error(`Unknown Gemini CLI event: ${r}`);let o=e.replace(/\\/g,"\\\\"),s=t.replace(/\\/g,"\\\\");return`"${o}" "${s}" hook gemini-cli ${n}`}function dd(e){return{matcher:"*",hooks:[{name:$t,type:"command",command:e,timeout:ld}]}}function uo(){if(!ht(ne))return{};let e=Gr(ne,"utf-8");try{return JSON.parse(e)}catch(t){throw t instanceof Error?u.error("WORKER","Corrupt JSON in Gemini settings",{path:ne},t):u.error("WORKER","Corrupt JSON in Gemini settings",{path:ne},new Error(String(t))),new Error(`Corrupt JSON in ${ne}, refusing to overwrite user settings`)}}function qi(e){Zi(Hr,{recursive:!0}),lo(ne,JSON.stringify(e,null,2)+`
189
+ `)}function pd(e,t){let r={...e};r.hooks||(r.hooks={});for(let[n,o]of Object.entries(t)){let s=r.hooks[n]??[];for(let i of o){let a=s.findIndex(c=>c.hooks.some(l=>l.name===$t));if(a>=0){let c=s[a],l=c.hooks.findIndex(p=>p.name===$t);l>=0?c.hooks[l]=i.hooks[0]:c.hooks.push(i.hooks[0])}else s.push(i)}r.hooks[n]=s}return r}function md(){let e="<claude-mem-context>",r=`${e}
190
190
  # Memory Context from Past Sessions
191
191
 
192
192
  *No context yet. Complete your first session and context will appear here.*
193
- </claude-mem-context>`,n="";if(Et(ve)&&(n=Hr(ve,"utf-8")),n.includes(e))return;let o=n.length>0&&!n.endsWith(`
193
+ </claude-mem-context>`,n="";if(ht(ve)&&(n=Gr(ve,"utf-8")),n.includes(e))return;let o=n.length>0&&!n.endsWith(`
194
194
  `)?`
195
195
 
196
196
  `:n.length>0?`
197
197
  `:"",s=n+o+r+`
198
- `;Zi(Jr,{recursive:!0}),lo(ve,s)}async function Xi(){console.log(`
198
+ `;Zi(Hr,{recursive:!0}),lo(ve,s)}async function Xi(){console.log(`
199
199
  Installing Claude-Mem Gemini CLI hooks...
200
- `);let e=gt();if(!e)return console.error("Could not find worker-service.cjs"),console.error(" Expected at: ~/.claude/plugins/marketplaces/thedotmack/plugin/scripts/worker-service.cjs"),1;let t=ht();console.log(` Using Bun runtime: ${t}`),console.log(` Worker service: ${e}`);try{let r={};for(let s of Object.keys(St)){let i=ud(t,e,s);r[s]=[dd(i)]}let n=uo(),o=pd(n,r);return fd(o),0}catch(r){let n=r instanceof Error?r.message:String(r);return console.error(`
201
- Installation failed: ${n}`),1}}function fd(e){qi(e),console.log(` Merged hooks into ${ne}`),md(),console.log(` Setup context injection in ${ve}`);let t=Object.keys(St);console.log(` Registered ${t.length} hook events:`);for(let r of t){let n=St[r];console.log(` ${r} \u2192 ${n}`)}console.log(`
200
+ `);let e=ft();if(!e)return console.error("Could not find worker-service.cjs"),console.error(" Expected at: ~/.claude/plugins/marketplaces/thedotmack/plugin/scripts/worker-service.cjs"),1;let t=gt();console.log(` Using Bun runtime: ${t}`),console.log(` Worker service: ${e}`);try{let r={};for(let s of Object.keys(Et)){let i=ud(t,e,s);r[s]=[dd(i)]}let n=uo(),o=pd(n,r);return fd(o),0}catch(r){let n=r instanceof Error?r.message:String(r);return console.error(`
201
+ Installation failed: ${n}`),1}}function fd(e){qi(e),console.log(` Merged hooks into ${ne}`),md(),console.log(` Setup context injection in ${ve}`);let t=Object.keys(Et);console.log(` Registered ${t.length} hook events:`);for(let r of t){let n=Et[r];console.log(` ${r} \u2192 ${n}`)}console.log(`
202
202
  Installation complete!
203
203
 
204
204
  Hooks installed to: ${ne}
@@ -214,19 +214,19 @@ Context Injection:
214
214
  and automatically included in Gemini CLI conversations.
215
215
  `)}function Qi(){if(console.log(`
216
216
  Uninstalling Claude-Mem Gemini CLI hooks...
217
- `),!Et(ne))return console.log(" No Gemini CLI settings found \u2014 nothing to uninstall."),0;try{let e=uo();if(!e.hooks)return console.log(" No hooks found in Gemini CLI settings \u2014 nothing to uninstall."),0;let t=0;for(let[r,n]of Object.entries(e.hooks)){let o=n.map(s=>{let i=s.hooks.filter(a=>a.name!==er);return t+=s.hooks.length-i.length,{...s,hooks:i}}).filter(s=>s.hooks.length>0);o.length>0?e.hooks[r]=o:delete e.hooks[r]}return Object.keys(e.hooks).length===0&&delete e.hooks,gd(e,t),0}catch(e){let t=e instanceof Error?e.message:String(e);return console.error(`
218
- Uninstallation failed: ${t}`),1}}function gd(e,t){if(qi(e),console.log(` Removed ${t} claude-mem hook(s) from ${ne}`),Et(ve)){let r=Hr(ve,"utf-8"),n=/\n?<claude-mem-context>[\s\S]*?<\/claude-mem-context>\n?/;n.test(r)&&(r=r.replace(n,""),lo(ve,r),console.log(` Removed context section from ${ve}`))}console.log(`
217
+ `),!ht(ne))return console.log(" No Gemini CLI settings found \u2014 nothing to uninstall."),0;try{let e=uo();if(!e.hooks)return console.log(" No hooks found in Gemini CLI settings \u2014 nothing to uninstall."),0;let t=0;for(let[r,n]of Object.entries(e.hooks)){let o=n.map(s=>{let i=s.hooks.filter(a=>a.name!==$t);return t+=s.hooks.length-i.length,{...s,hooks:i}}).filter(s=>s.hooks.length>0);o.length>0?e.hooks[r]=o:delete e.hooks[r]}return Object.keys(e.hooks).length===0&&delete e.hooks,gd(e,t),0}catch(e){let t=e instanceof Error?e.message:String(e);return console.error(`
218
+ Uninstallation failed: ${t}`),1}}function gd(e,t){if(qi(e),console.log(` Removed ${t} claude-mem hook(s) from ${ne}`),ht(ve)){let r=Gr(ve,"utf-8"),n=/\n?<claude-mem-context>[\s\S]*?<\/claude-mem-context>\n?/;n.test(r)&&(r=r.replace(n,""),lo(ve,r),console.log(` Removed context section from ${ve}`))}console.log(`
219
219
  Uninstallation complete!
220
220
  `),console.log("Restart Gemini CLI to apply changes.")}function _i(){if(console.log(`
221
221
  Claude-Mem Gemini CLI Hooks Status
222
- `),!Et(ne))return console.log("Gemini CLI settings: Not found"),console.log(` Expected at: ${ne}
222
+ `),!ht(ne))return console.log("Gemini CLI settings: Not found"),console.log(` Expected at: ${ne}
223
223
  `),console.log(`No hooks installed. Run: claude-mem install --ide gemini-cli
224
224
  `),0;let e;try{e=uo()}catch(r){let n=r instanceof Error?r.message:String(r);return r instanceof Error?u.error("WORKER","Failed to read Gemini CLI settings",{path:ne},r):u.error("WORKER","Failed to read Gemini CLI settings",{path:ne},new Error(String(r))),console.log(`Gemini CLI settings: ${n}
225
225
  `),0}if(!e.hooks)return console.log(`Gemini CLI settings: Found, but no hooks configured
226
226
  `),console.log(`No hooks installed. Run: claude-mem install --ide gemini-cli
227
- `),0;let t=[];for(let[r,n]of Object.entries(e.hooks))n.some(s=>s.hooks.some(i=>i.name===er))&&t.push(r);if(t.length===0)return console.log(`Gemini CLI settings: Found, but no claude-mem hooks
227
+ `),0;let t=[];for(let[r,n]of Object.entries(e.hooks))n.some(s=>s.hooks.some(i=>i.name===$t))&&t.push(r);if(t.length===0)return console.log(`Gemini CLI settings: Found, but no claude-mem hooks
228
228
  `),console.log(`Run: claude-mem install --ide gemini-cli
229
- `),0;console.log(`Settings: ${ne}`),console.log("Mode: Unified CLI (bun worker-service.cjs hook gemini-cli)"),console.log(`Events: ${t.length} of ${Object.keys(St).length} mapped`);for(let r of t){let n=St[r]??"unknown";console.log(` ${r} \u2192 ${n}`)}return Et(ve)?Hr(ve,"utf-8").includes("<claude-mem-context>")?console.log(`Context: Active (${ve})`):console.log("Context: GEMINI.md exists but missing claude-mem section"):console.log("Context: No GEMINI.md found"),console.log(""),0}async function hd(e,t){switch(e){case"install":return Xi();case"uninstall":return Qi();case"status":return _i();default:return console.log(`
229
+ `),0;console.log(`Settings: ${ne}`),console.log("Mode: Unified CLI (bun worker-service.cjs hook gemini-cli)"),console.log(`Events: ${t.length} of ${Object.keys(Et).length} mapped`);for(let r of t){let n=Et[r]??"unknown";console.log(` ${r} \u2192 ${n}`)}return ht(ve)?Gr(ve,"utf-8").includes("<claude-mem-context>")?console.log(`Context: Active (${ve})`):console.log("Context: GEMINI.md exists but missing claude-mem section"):console.log("Context: No GEMINI.md found"),console.log(""),0}async function hd(e,t){switch(e){case"install":return Xi();case"uninstall":return Qi();case"status":return _i();default:return console.log(`
230
230
  Claude-Mem Gemini CLI Integration
231
231
 
232
232
  Usage: claude-mem gemini-cli <command>
@@ -242,20 +242,20 @@ Examples:
242
242
  claude-mem gemini-cli uninstall # Remove hooks
243
243
 
244
244
  For more info: https://docs.claude-mem.ai/usage/gemini-provider
245
- `),0}}var Jr,ne,ve,er,ld,St,mo=E(()=>{"use strict";K();$t();Jr=co.join(cd(),".gemini"),ne=co.join(Jr,"settings.json"),ve=co.join(Jr,"GEMINI.md"),er="claude-mem",ld=1e4,St={SessionStart:"context",BeforeAgent:"session-init",AfterAgent:"observation",BeforeTool:"observation",AfterTool:"observation",PreCompress:"summarize",Notification:"observation"}});import Ed from"path";import{existsSync as Sd,readFileSync as yd,writeFileSync as fo,mkdirSync as wd}from"fs";function Kr(e,t,r){let n=Ed.dirname(e);wd(n,{recursive:!0});let o=`${tr}
245
+ `),0}}var Hr,ne,ve,$t,ld,Et,mo=E(()=>{"use strict";K();_t();Hr=co.join(cd(),".gemini"),ne=co.join(Hr,"settings.json"),ve=co.join(Hr,"GEMINI.md"),$t="claude-mem",ld=1e4,Et={SessionStart:"context",BeforeAgent:"session-init",AfterAgent:"observation",BeforeTool:"observation",AfterTool:"observation",PreCompress:"summarize",Notification:"observation"}});import Ed from"path";import{existsSync as Sd,readFileSync as yd,writeFileSync as fo,mkdirSync as wd}from"fs";function Jr(e,t,r){let n=Ed.dirname(e);wd(n,{recursive:!0});let o=`${er}
246
246
  ${t}
247
- ${yt}`;if(Sd(e)){let s=yd(e,"utf-8"),i=s.indexOf(tr),a=s.indexOf(yt);i!==-1&&a!==-1?s=s.slice(0,i)+o+s.slice(a+yt.length):s=s.trimEnd()+`
247
+ ${St}`;if(Sd(e)){let s=yd(e,"utf-8"),i=s.indexOf(er),a=s.indexOf(St);i!==-1&&a!==-1?s=s.slice(0,i)+o+s.slice(a+St.length):s=s.trimEnd()+`
248
248
 
249
249
  `+o+`
250
250
  `,fo(e,s,"utf-8")}else r?fo(e,`${r}
251
251
 
252
252
  ${o}
253
253
  `,"utf-8"):fo(e,o+`
254
- `,"utf-8")}var tr,yt,go=E(()=>{"use strict";tr="<claude-mem-context>",yt="</claude-mem-context>"});var So={};Se(So,{checkOpenCodeStatus:()=>Od,findBuiltPluginPath:()=>ra,getInstalledPluginPath:()=>nr,getOpenCodeAgentsMdPath:()=>rr,getOpenCodeConfigDirectory:()=>Br,getOpenCodePluginsDirectory:()=>ho,injectContextIntoAgentsMd:()=>Eo,installOpenCodeIntegration:()=>Pd,installOpenCodePlugin:()=>na,syncContextToAgentsMd:()=>Md,uninstallOpenCodePlugin:()=>Id});import Be from"path";import{homedir as $i}from"os";import{fileURLToPath as vd}from"url";import{existsSync as wt,readFileSync as ea,writeFileSync as Cd,mkdirSync as kd,copyFileSync as bd,unlinkSync as ta}from"fs";function Br(){return process.env.OPENCODE_CONFIG_DIR?process.env.OPENCODE_CONFIG_DIR:Be.join($i(),".config","opencode")}function ho(){return Be.join(Br(),"plugins")}function rr(){return Be.join(Br(),"AGENTS.md")}function nr(){return Be.join(ho(),"claude-mem.js")}function ra(){let e=[Be.join(process.env.CLAUDE_CONFIG_DIR||Be.join($i(),".claude"),"plugins","marketplaces","thedotmack","dist","opencode-plugin","index.js"),Be.join(Be.dirname(vd(import.meta.url)),"..","..","..","dist","opencode-plugin","index.js")];for(let t of e)if(wt(t))return t;return null}function na(){let e=ra();if(!e)return console.error("Could not find built OpenCode plugin bundle."),console.error(" Expected at: dist/opencode-plugin/index.js"),console.error(" Run the build first: npm run build"),1;let t=ho(),r=nr();try{return kd(t,{recursive:!0}),bd(e,r),console.log(` Plugin installed to: ${r}`),u.info("OPENCODE","Plugin installed",{destination:r}),0}catch(n){let o=n instanceof Error?n.message:String(n);return console.error(`Failed to install OpenCode plugin: ${o}`),1}}function Eo(e){let t=rr();try{return Kr(t,e,"# Claude-Mem Memory Context"),u.info("OPENCODE","Context injected into AGENTS.md",{path:t}),0}catch(r){let n=r instanceof Error?r.message:String(r);return console.error(`Failed to inject context into AGENTS.md: ${n}`),1}}async function Md(e,t){try{await Td(e,t)}catch(r){r instanceof Error?u.debug("WORKER","Worker not available during context sync",{},r):u.debug("WORKER","Worker not available during context sync",{},new Error(String(r)))}}async function xd(){let e=Qt();if(!(await fetch(`http://127.0.0.1:${e}/api/readiness`)).ok)return null;let r=await fetch(`http://127.0.0.1:${e}/api/context/inject?project=opencode`);if(!r.ok)return null;let n=await r.text();return n&&n.trim()?n:null}async function Td(e,t){let r=await fetch(`http://127.0.0.1:${e}/api/context/inject?project=${encodeURIComponent(t)}`);if(!r.ok)return;let n=await r.text();n&&n.trim()&&Eo(n)!==0&&u.warn("OPENCODE","Failed to inject context into AGENTS.md during sync")}function Rd(e,t){t.length===0||t==="# Claude-Mem Memory Context"?(ta(e),console.log(" Removed empty AGENTS.md")):(Cd(e,t+`
255
- `,"utf-8"),console.log(" Cleaned context from AGENTS.md"))}function Id(){let e=!1,t=nr();if(wt(t))try{ta(t),console.log(` Removed plugin: ${t}`)}catch(n){let o=n instanceof Error?n.message:String(n);console.error(` Failed to remove plugin: ${o}`),e=!0}let r=rr();if(wt(r)){let n;try{n=ea(r,"utf-8")}catch(i){let a=i instanceof Error?i.message:String(i);console.error(` Failed to read AGENTS.md: ${a}`),e=!0,n=""}let o=n.indexOf(tr),s=n.indexOf(yt);if(o!==-1&&s!==-1){n=n.slice(0,o).trimEnd()+`
256
- `+n.slice(s+yt.length).trimStart();let i=n.trim();try{Rd(r,i)}catch(a){let c=a instanceof Error?a.message:String(a);console.error(` Failed to clean AGENTS.md: ${c}`),e=!0}}}return e?1:0}function Od(){console.log(`
254
+ `,"utf-8")}var er,St,go=E(()=>{"use strict";er="<claude-mem-context>",St="</claude-mem-context>"});var So={};Se(So,{checkOpenCodeStatus:()=>Od,findBuiltPluginPath:()=>ra,getInstalledPluginPath:()=>rr,getOpenCodeAgentsMdPath:()=>tr,getOpenCodeConfigDirectory:()=>Kr,getOpenCodePluginsDirectory:()=>ho,injectContextIntoAgentsMd:()=>Eo,installOpenCodeIntegration:()=>Pd,installOpenCodePlugin:()=>na,syncContextToAgentsMd:()=>Md,uninstallOpenCodePlugin:()=>Id});import Ke from"path";import{homedir as $i}from"os";import{fileURLToPath as vd}from"url";import{existsSync as yt,readFileSync as ea,writeFileSync as Cd,mkdirSync as kd,copyFileSync as bd,unlinkSync as ta}from"fs";function Kr(){return process.env.OPENCODE_CONFIG_DIR?process.env.OPENCODE_CONFIG_DIR:Ke.join($i(),".config","opencode")}function ho(){return Ke.join(Kr(),"plugins")}function tr(){return Ke.join(Kr(),"AGENTS.md")}function rr(){return Ke.join(ho(),"claude-mem.js")}function ra(){let e=[Ke.join(process.env.CLAUDE_CONFIG_DIR||Ke.join($i(),".claude"),"plugins","marketplaces","thedotmack","dist","opencode-plugin","index.js"),Ke.join(Ke.dirname(vd(import.meta.url)),"..","..","..","dist","opencode-plugin","index.js")];for(let t of e)if(yt(t))return t;return null}function na(){let e=ra();if(!e)return console.error("Could not find built OpenCode plugin bundle."),console.error(" Expected at: dist/opencode-plugin/index.js"),console.error(" Run the build first: npm run build"),1;let t=ho(),r=rr();try{return kd(t,{recursive:!0}),bd(e,r),console.log(` Plugin installed to: ${r}`),u.info("OPENCODE","Plugin installed",{destination:r}),0}catch(n){let o=n instanceof Error?n.message:String(n);return console.error(`Failed to install OpenCode plugin: ${o}`),1}}function Eo(e){let t=tr();try{return Jr(t,e,"# Claude-Mem Memory Context"),u.info("OPENCODE","Context injected into AGENTS.md",{path:t}),0}catch(r){let n=r instanceof Error?r.message:String(r);return console.error(`Failed to inject context into AGENTS.md: ${n}`),1}}async function Md(e,t){try{await Td(e,t)}catch(r){r instanceof Error?u.debug("WORKER","Worker not available during context sync",{},r):u.debug("WORKER","Worker not available during context sync",{},new Error(String(r)))}}async function xd(){let e=Xt();if(!(await fetch(`http://127.0.0.1:${e}/api/readiness`)).ok)return null;let r=await fetch(`http://127.0.0.1:${e}/api/context/inject?project=opencode`);if(!r.ok)return null;let n=await r.text();return n&&n.trim()?n:null}async function Td(e,t){let r=await fetch(`http://127.0.0.1:${e}/api/context/inject?project=${encodeURIComponent(t)}`);if(!r.ok)return;let n=await r.text();n&&n.trim()&&Eo(n)!==0&&u.warn("OPENCODE","Failed to inject context into AGENTS.md during sync")}function Rd(e,t){t.length===0||t==="# Claude-Mem Memory Context"?(ta(e),console.log(" Removed empty AGENTS.md")):(Cd(e,t+`
255
+ `,"utf-8"),console.log(" Cleaned context from AGENTS.md"))}function Id(){let e=!1,t=rr();if(yt(t))try{ta(t),console.log(` Removed plugin: ${t}`)}catch(n){let o=n instanceof Error?n.message:String(n);console.error(` Failed to remove plugin: ${o}`),e=!0}let r=tr();if(yt(r)){let n;try{n=ea(r,"utf-8")}catch(i){let a=i instanceof Error?i.message:String(i);console.error(` Failed to read AGENTS.md: ${a}`),e=!0,n=""}let o=n.indexOf(er),s=n.indexOf(St);if(o!==-1&&s!==-1){n=n.slice(0,o).trimEnd()+`
256
+ `+n.slice(s+St.length).trimStart();let i=n.trim();try{Rd(r,i)}catch(a){let c=a instanceof Error?a.message:String(a);console.error(` Failed to clean AGENTS.md: ${c}`),e=!0}}}return e?1:0}function Od(){console.log(`
257
257
  Claude-Mem OpenCode Integration Status
258
- `);let e=Br(),t=nr(),r=rr();if(console.log(`Config directory: ${e}`),console.log(` Exists: ${wt(e)?"yes":"no"}`),console.log(""),console.log(`Plugin: ${t}`),console.log(` Installed: ${wt(t)?"yes":"no"}`),console.log(""),console.log(`Context (AGENTS.md): ${r}`),wt(r)){let o=ea(r,"utf-8").includes(tr);console.log(" Exists: yes"),console.log(` Has claude-mem context: ${o?"yes":"no"}`)}else console.log(" Exists: no");return console.log(""),0}async function Pd(){console.log(`
258
+ `);let e=Kr(),t=rr(),r=tr();if(console.log(`Config directory: ${e}`),console.log(` Exists: ${yt(e)?"yes":"no"}`),console.log(""),console.log(`Plugin: ${t}`),console.log(` Installed: ${yt(t)?"yes":"no"}`),console.log(""),console.log(`Context (AGENTS.md): ${r}`),yt(r)){let o=ea(r,"utf-8").includes(er);console.log(" Exists: yes"),console.log(` Has claude-mem context: ${o?"yes":"no"}`)}else console.log(" Exists: no");return console.log(""),0}async function Pd(){console.log(`
259
259
  Installing Claude-Mem for OpenCode...
260
260
  `);let e=na();if(e!==0)return e;let r=`# Memory Context from Past Sessions
261
261
 
@@ -264,14 +264,14 @@ Installing Claude-Mem for OpenCode...
264
264
  Use claude-mem search tools for manual memory queries.`,n="placeholder";try{let s=await xd();s&&(r=s,n="existing memory")}catch(s){s instanceof Error?u.debug("WORKER","Worker not available during OpenCode install",{},s):u.debug("WORKER","Worker not available during OpenCode install",{},new Error(String(s)))}return Eo(r)!==0?u.warn("OPENCODE",`Failed to inject ${n} context into AGENTS.md during install`):console.log(n==="existing memory"?" Context injected from existing memory":" Placeholder context created (worker not running)"),console.log(`
265
265
  Installation complete!
266
266
 
267
- Plugin installed to: ${nr()}
268
- Context file: ${rr()}
267
+ Plugin installed to: ${rr()}
268
+ Context file: ${tr()}
269
269
 
270
270
  Next steps:
271
271
  1. Start claude-mem worker: npx claude-mem start
272
272
  2. Restart OpenCode to load the plugin
273
273
  3. Memory capture is automatic from then on
274
- `),0}var yo=E(()=>{"use strict";K();go();Wr()});var Co={};Se(Co,{checkWindsurfHooksStatus:()=>da,handleWindsurfCommand:()=>Jd,installWindsurfHooks:()=>la,readWindsurfRegistry:()=>Zr,registerWindsurfProject:()=>aa,uninstallWindsurfHooks:()=>ua,unregisterWindsurfProject:()=>ca,updateWindsurfContextForProject:()=>Dd,writeWindsurfContextFile:()=>vo,writeWindsurfRegistry:()=>wo});import ge from"path";import{homedir as Ad}from"os";import{existsSync as Ct,readFileSync as Vr,writeFileSync as or,unlinkSync as sa,mkdirSync as zr,renameSync as Nd}from"fs";function Zr(){try{return Ct(vt)?JSON.parse(Vr(vt,"utf-8")):{}}catch(e){return e instanceof Error?u.error("WORKER","Failed to read registry, using empty",{file:vt},e):u.error("WORKER","Failed to read registry, using empty",{file:vt},new Error(String(e))),{}}}function wo(e){let t=ge.dirname(vt);zr(t,{recursive:!0}),or(vt,JSON.stringify(e,null,2))}function aa(e){let t=Zr();t[e]={installedAt:new Date().toISOString()},wo(t),u.info("WINDSURF","Registered project for auto-context updates",{workspacePath:e})}function ca(e){let t=Zr();t[e]&&(delete t[e],wo(t),u.info("WINDSURF","Unregistered project",{workspacePath:e}))}async function Dd(e,t,r){if(Zr()[t])try{let s=await fetch(`http://127.0.0.1:${r}/api/context/inject?project=${encodeURIComponent(e)}`);if(!s.ok)return;let i=await s.text();if(!i||!i.trim())return;vo(t,i),u.debug("WINDSURF","Updated context file",{projectName:e,workspacePath:t})}catch(s){s instanceof Error?u.error("WORKER","Failed to update context file",{projectName:e,workspacePath:t},s):u.error("WORKER","Failed to update context file",{projectName:e,workspacePath:t},new Error(String(s)))}}function vo(e,t){let r=ge.join(e,".windsurf","rules"),n=ge.join(r,"claude-mem-context.md"),o=`${n}.tmp`;zr(r,{recursive:!0});let s=`# Memory Context from Past Sessions
274
+ `),0}var yo=E(()=>{"use strict";K();go();Lr()});var Co={};Se(Co,{checkWindsurfHooksStatus:()=>da,handleWindsurfCommand:()=>Jd,installWindsurfHooks:()=>la,readWindsurfRegistry:()=>zr,registerWindsurfProject:()=>aa,uninstallWindsurfHooks:()=>ua,unregisterWindsurfProject:()=>ca,updateWindsurfContextForProject:()=>Dd,writeWindsurfContextFile:()=>vo,writeWindsurfRegistry:()=>wo});import ge from"path";import{homedir as Ad}from"os";import{existsSync as vt,readFileSync as Yr,writeFileSync as nr,unlinkSync as sa,mkdirSync as Vr,renameSync as Nd}from"fs";function zr(){try{return vt(wt)?JSON.parse(Yr(wt,"utf-8")):{}}catch(e){return e instanceof Error?u.error("WORKER","Failed to read registry, using empty",{file:wt},e):u.error("WORKER","Failed to read registry, using empty",{file:wt},new Error(String(e))),{}}}function wo(e){let t=ge.dirname(wt);Vr(t,{recursive:!0}),nr(wt,JSON.stringify(e,null,2))}function aa(e){let t=zr();t[e]={installedAt:new Date().toISOString()},wo(t),u.info("WINDSURF","Registered project for auto-context updates",{workspacePath:e})}function ca(e){let t=zr();t[e]&&(delete t[e],wo(t),u.info("WINDSURF","Unregistered project",{workspacePath:e}))}async function Dd(e,t,r){if(zr()[t])try{let s=await fetch(`http://127.0.0.1:${r}/api/context/inject?project=${encodeURIComponent(e)}`);if(!s.ok)return;let i=await s.text();if(!i||!i.trim())return;vo(t,i),u.debug("WINDSURF","Updated context file",{projectName:e,workspacePath:t})}catch(s){s instanceof Error?u.error("WORKER","Failed to update context file",{projectName:e,workspacePath:t},s):u.error("WORKER","Failed to update context file",{projectName:e,workspacePath:t},new Error(String(s)))}}function vo(e,t){let r=ge.join(e,".windsurf","rules"),n=ge.join(r,"claude-mem-context.md"),o=`${n}.tmp`;Vr(r,{recursive:!0});let s=`# Memory Context from Past Sessions
275
275
 
276
276
  The following context is from claude-mem, a persistent memory system that tracks your coding sessions.
277
277
 
@@ -282,9 +282,9 @@ ${t}
282
282
  `;s.length>oa&&(s=s.slice(0,oa-50)+`
283
283
 
284
284
  *[Truncated \u2014 use MCP search for full history]*
285
- `),or(o,s),Nd(o,n)}function Ud(e,t,r){let o={pre_user_prompt:"session-init",post_write_code:"file-edit",post_run_command:"observation",post_mcp_tool_use:"observation",post_cascade_response:"observation"}[r]??"observation";return`"${e}" "${t}" hook windsurf ${o}`}function Ld(e,t,r){zr(ia,{recursive:!0});let n={hooks:{}};if(Ct(X))try{n=JSON.parse(Vr(X,"utf-8")),n.hooks||(n.hooks={})}catch(o){throw o instanceof Error?u.error("WORKER","Corrupt hooks.json, refusing to overwrite",{path:X},o):u.error("WORKER","Corrupt hooks.json, refusing to overwrite",{path:X},new Error(String(o))),new Error(`Corrupt hooks.json at ${X}, refusing to overwrite`)}for(let o of Yr){let i={command:Ud(e,t,o),show_output:!1,working_directory:r},a=(n.hooks[o]??[]).filter(c=>!c.command.includes("worker-service")||!c.command.includes("windsurf"));n.hooks[o]=[...a,i]}or(X,JSON.stringify(n,null,2))}async function la(){console.log(`
285
+ `),nr(o,s),Nd(o,n)}function Ud(e,t,r){let o={pre_user_prompt:"session-init",post_write_code:"file-edit",post_run_command:"observation",post_mcp_tool_use:"observation",post_cascade_response:"observation"}[r]??"observation";return`"${e}" "${t}" hook windsurf ${o}`}function Ld(e,t,r){Vr(ia,{recursive:!0});let n={hooks:{}};if(vt(X))try{n=JSON.parse(Yr(X,"utf-8")),n.hooks||(n.hooks={})}catch(o){throw o instanceof Error?u.error("WORKER","Corrupt hooks.json, refusing to overwrite",{path:X},o):u.error("WORKER","Corrupt hooks.json, refusing to overwrite",{path:X},new Error(String(o))),new Error(`Corrupt hooks.json at ${X}, refusing to overwrite`)}for(let o of Br){let i={command:Ud(e,t,o),show_output:!1,working_directory:r},a=(n.hooks[o]??[]).filter(c=>!c.command.includes("worker-service")||!c.command.includes("windsurf"));n.hooks[o]=[...a,i]}nr(X,JSON.stringify(n,null,2))}async function la(){console.log(`
286
286
  Installing Claude-Mem Windsurf hooks (user level)...
287
- `);let e=gt();if(!e)return console.error("Could not find worker-service.cjs"),console.error(" Expected at: ~/.claude/plugins/marketplaces/thedotmack/plugin/scripts/worker-service.cjs"),1;let t=ht();if(!t)return console.error("Could not find Bun runtime"),console.error(" Install Bun: curl -fsSL https://bun.sh/install | bash"),1;let r=ge.dirname(e);console.log(` Using Bun runtime: ${t}`),console.log(` Worker service: ${e}`);let n=process.cwd();try{return await Wd(t,e,r,n),0}catch(o){let s=o instanceof Error?o.message:String(o);return console.error(`
287
+ `);let e=ft();if(!e)return console.error("Could not find worker-service.cjs"),console.error(" Expected at: ~/.claude/plugins/marketplaces/thedotmack/plugin/scripts/worker-service.cjs"),1;let t=gt();if(!t)return console.error("Could not find Bun runtime"),console.error(" Install Bun: curl -fsSL https://bun.sh/install | bash"),1;let r=ge.dirname(e);console.log(` Using Bun runtime: ${t}`),console.log(` Worker service: ${e}`);let n=process.cwd();try{return await Wd(t,e,r,n),0}catch(o){let s=o instanceof Error?o.message:String(o);return console.error(`
288
288
  Installation failed: ${s}`),1}}async function Wd(e,t,r,n){Ld(e,t,r),console.log(" Created/merged hooks.json"),await jd(n),console.log(`
289
289
  Installation complete!
290
290
 
@@ -302,19 +302,19 @@ Next steps:
302
302
  1. Start claude-mem worker: claude-mem start
303
303
  2. Restart Windsurf to load the hooks
304
304
  3. Context is injected via .windsurf/rules/claude-mem-context.md (workspace-level)
305
- `)}async function jd(e){let t=Qt(),r=ge.basename(e),n=!1;console.log(" Generating initial context...");try{n=await Fd(t,r,e)}catch(o){o instanceof Error?u.debug("WORKER","Worker not running during install",{},o):u.debug("WORKER","Worker not running during install",{},new Error(String(o)))}if(!n){let o=ge.join(e,".windsurf","rules");zr(o,{recursive:!0});let s=ge.join(o,"claude-mem-context.md");or(s,`# Memory Context from Past Sessions
305
+ `)}async function jd(e){let t=Xt(),r=ge.basename(e),n=!1;console.log(" Generating initial context...");try{n=await Fd(t,r,e)}catch(o){o instanceof Error?u.debug("WORKER","Worker not running during install",{},o):u.debug("WORKER","Worker not running during install",{},new Error(String(o)))}if(!n){let o=ge.join(e,".windsurf","rules");Vr(o,{recursive:!0});let s=ge.join(o,"claude-mem-context.md");nr(s,`# Memory Context from Past Sessions
306
306
 
307
307
  *No context yet. Complete your first session and context will appear here.*
308
308
 
309
309
  Use claude-mem's MCP search tools for manual memory queries.
310
310
  `),console.log(" Created placeholder context file (will populate after first session)")}aa(e),console.log(" Registered for auto-context updates")}async function Fd(e,t,r){if(!(await fetch(`http://127.0.0.1:${e}/api/readiness`)).ok)return!1;let o=await fetch(`http://127.0.0.1:${e}/api/context/inject?project=${encodeURIComponent(t)}`);if(!o.ok)return!1;let s=await o.text();return s&&s.trim()?(vo(r,s),console.log(" Generated initial context from existing memory"),!0):!1}function ua(){if(console.log(`
311
311
  Uninstalling Claude-Mem Windsurf hooks...
312
- `),Ct(X))try{Gd()}catch(t){t instanceof Error?u.error("WORKER","Could not parse hooks.json during uninstall",{path:X},t):u.error("WORKER","Could not parse hooks.json during uninstall",{path:X},new Error(String(t))),console.log(" Warning: could not parse hooks.json \u2014 leaving file intact to preserve other hooks")}else console.log(" No hooks.json found");let e=process.cwd();try{return Hd(e),0}catch(t){let r=t instanceof Error?t.message:String(t);return console.error(`
313
- Uninstallation failed: ${r}`),1}}function Gd(){let t={hooks:JSON.parse(Vr(X,"utf-8")).hooks??{}};for(let r of Yr){let n=t.hooks[r]??[];n.length>0&&(t.hooks[r]=n.filter(o=>!o.command.includes("worker-service")||!o.command.includes("windsurf")),t.hooks[r].length===0&&delete t.hooks[r])}Object.keys(t.hooks).length===0?(sa(X),console.log(" Removed hooks.json (no hooks remaining)")):(or(X,JSON.stringify(t,null,2)),console.log(" Removed claude-mem entries from hooks.json (other hooks preserved)"))}function Hd(e){let t=ge.join(e,".windsurf","rules","claude-mem-context.md");Ct(t)&&(sa(t),console.log(" Removed context file")),ca(e),console.log(" Unregistered from auto-context updates"),console.log(`
312
+ `),vt(X))try{Gd()}catch(t){t instanceof Error?u.error("WORKER","Could not parse hooks.json during uninstall",{path:X},t):u.error("WORKER","Could not parse hooks.json during uninstall",{path:X},new Error(String(t))),console.log(" Warning: could not parse hooks.json \u2014 leaving file intact to preserve other hooks")}else console.log(" No hooks.json found");let e=process.cwd();try{return Hd(e),0}catch(t){let r=t instanceof Error?t.message:String(t);return console.error(`
313
+ Uninstallation failed: ${r}`),1}}function Gd(){let t={hooks:JSON.parse(Yr(X,"utf-8")).hooks??{}};for(let r of Br){let n=t.hooks[r]??[];n.length>0&&(t.hooks[r]=n.filter(o=>!o.command.includes("worker-service")||!o.command.includes("windsurf")),t.hooks[r].length===0&&delete t.hooks[r])}Object.keys(t.hooks).length===0?(sa(X),console.log(" Removed hooks.json (no hooks remaining)")):(nr(X,JSON.stringify(t,null,2)),console.log(" Removed claude-mem entries from hooks.json (other hooks preserved)"))}function Hd(e){let t=ge.join(e,".windsurf","rules","claude-mem-context.md");vt(t)&&(sa(t),console.log(" Removed context file")),ca(e),console.log(" Unregistered from auto-context updates"),console.log(`
314
314
  Uninstallation complete!
315
315
  `),console.log("Restart Windsurf to apply changes.")}function da(){if(console.log(`
316
316
  Claude-Mem Windsurf Hooks Status
317
- `),Ct(X)){console.log("User-level: Installed"),console.log(` Config: ${X}`);let e=null;try{e=JSON.parse(Vr(X,"utf-8"))}catch(r){let n=r instanceof Error?r:new Error(String(r));u.error("WORKER","Unable to parse hooks.json",{path:X},n),console.log(" Mode: Unable to parse hooks.json")}if(e){let r=Yr.filter(n=>(e?.hooks?.[n]??[]).some(o=>o.command.includes("worker-service")&&o.command.includes("windsurf")));console.log(` Events: ${r.length}/${Yr.length} registered`);for(let n of r)console.log(` - ${n}`)}let t=ge.join(process.cwd(),".windsurf","rules","claude-mem-context.md");Ct(t)?console.log(" Context: Active (current workspace)"):console.log(" Context: Not yet generated for this workspace")}else console.log("User-level: Not installed"),console.log(`
317
+ `),vt(X)){console.log("User-level: Installed"),console.log(` Config: ${X}`);let e=null;try{e=JSON.parse(Yr(X,"utf-8"))}catch(r){let n=r instanceof Error?r:new Error(String(r));u.error("WORKER","Unable to parse hooks.json",{path:X},n),console.log(" Mode: Unable to parse hooks.json")}if(e){let r=Br.filter(n=>(e?.hooks?.[n]??[]).some(o=>o.command.includes("worker-service")&&o.command.includes("windsurf")));console.log(` Events: ${r.length}/${Br.length} registered`);for(let n of r)console.log(` - ${n}`)}let t=ge.join(process.cwd(),".windsurf","rules","claude-mem-context.md");vt(t)?console.log(" Context: Active (current workspace)"):console.log(" Context: Not yet generated for this workspace")}else console.log("User-level: Not installed"),console.log(`
318
318
  No hooks installed. Run: claude-mem windsurf install
319
319
  `);return console.log(""),0}async function Jd(e,t){switch(e){case"install":return la();case"uninstall":return ua();case"status":return da();default:return console.log(`
320
320
  Claude-Mem Windsurf Integration
@@ -332,34 +332,34 @@ Examples:
332
332
  claude-mem windsurf status # Check if hooks are installed
333
333
 
334
334
  For more info: https://docs.claude-mem.ai/windsurf
335
- `),0}}var ia,X,oa,vt,Yr,ko=E(()=>{"use strict";K();Wr();re();$t();ia=ge.join(Ad(),".codeium","windsurf"),X=ge.join(ia,"hooks.json"),oa=6e3,vt=ge.join(N,"windsurf-projects.json"),Yr=["pre_user_prompt","post_write_code","post_run_command","post_mcp_tool_use","post_cascade_response"]});var xo={};Se(xo,{checkOpenClawStatus:()=>qd,findPluginManifestPath:()=>ha,findPluginSkillsDirectory:()=>Ea,findPreBuiltPluginDirectory:()=>ga,getOpenClawClaudeMemExtensionDirectory:()=>ir,getOpenClawConfigDirectory:()=>sr,getOpenClawConfigFilePath:()=>kt,getOpenClawExtensionsDirectory:()=>fa,installOpenClawIntegration:()=>Xd,installOpenClawPlugin:()=>ya,uninstallOpenClawPlugin:()=>Zd});import B from"path";import{homedir as qr}from"os";import{existsSync as Te,readFileSync as Kd,writeFileSync as pa,mkdirSync as ma,cpSync as bo,rmSync as Bd}from"fs";function sr(){return B.join(qr(),".openclaw")}function fa(){return B.join(sr(),"extensions")}function ir(){return B.join(fa(),"claude-mem")}function kt(){return B.join(sr(),"openclaw.json")}function ga(){let e=[B.join(process.env.CLAUDE_CONFIG_DIR||B.join(qr(),".claude"),"plugins","marketplaces","thedotmack"),process.cwd()];for(let t of e){let r=B.join(t,"openclaw","dist"),n=B.join(r,"index.js");if(Te(n))return r}return null}function ha(){let e=[B.join(process.env.CLAUDE_CONFIG_DIR||B.join(qr(),".claude"),"plugins","marketplaces","thedotmack"),process.cwd()];for(let t of e){let r=B.join(t,"openclaw","openclaw.plugin.json");if(Te(r))return r}return null}function Ea(){let e=[B.join(process.env.CLAUDE_CONFIG_DIR||B.join(qr(),".claude"),"plugins","marketplaces","thedotmack"),process.cwd()];for(let t of e){let r=B.join(t,"openclaw","skills");if(Te(r))return r}return null}function Mo(){let e=kt();if(!Te(e))return{};try{return JSON.parse(Kd(e,"utf-8"))}catch(t){let r=t instanceof Error?t:new Error(String(t));throw u.error("WORKER","Failed to parse openclaw.json",{path:e},r),r}}function Sa(e){let t=sr();ma(t,{recursive:!0}),pa(kt(),JSON.stringify(e,null,2)+`
336
- `,"utf-8")}function Yd(e,t="openclaw",r=!0){let n=Mo();if(n.plugins||(n.plugins={}),n.plugins.slots||(n.plugins.slots={}),n.plugins.entries||(n.plugins.entries={}),n.plugins.slots.memory="claude-mem",!n.plugins.entries["claude-mem"])n.plugins.entries["claude-mem"]={enabled:!0,config:{workerPort:e,project:t,syncMemoryFile:r}};else{n.plugins.entries["claude-mem"].enabled=!0,n.plugins.entries["claude-mem"].config||(n.plugins.entries["claude-mem"].config={});let o=n.plugins.entries["claude-mem"].config;o.workerPort===void 0&&(o.workerPort=e),o.project===void 0&&(o.project=t),o.syncMemoryFile===void 0&&(o.syncMemoryFile=r)}Sa(n)}function Vd(){let e=kt();if(!Te(e))return;let t=Mo();t.plugins?.entries?.["claude-mem"]&&delete t.plugins.entries["claude-mem"],t.plugins?.slots?.memory==="claude-mem"&&delete t.plugins.slots.memory,Sa(t)}function ya(){let e=ga();if(!e)return console.error("Could not find pre-built OpenClaw plugin bundle."),console.error(" Expected at: openclaw/dist/index.js"),console.error(" Ensure the npm package includes the openclaw directory."),1;let t=ir(),r=B.join(t,"dist"),n=ha(),o=Ea(),s={name:"claude-mem",version:"1.0.0",type:"module",main:"dist/index.js",openclaw:{extensions:["./dist/index.js"]}};try{return ma(r,{recursive:!0}),zd(e,r,t,n,o,s),0}catch(i){let a=i instanceof Error?i.message:String(i);return console.error(`Failed to install OpenClaw plugin: ${a}`),1}}function zd(e,t,r,n,o,s){if(bo(e,t,{recursive:!0,force:!0}),console.log(` Plugin dist copied to: ${t}`),n){let a=B.join(r,"openclaw.plugin.json");bo(n,a,{force:!0}),console.log(` Plugin manifest copied to: ${a}`)}if(o){let a=B.join(r,"skills");bo(o,a,{recursive:!0,force:!0}),console.log(` Skills copied to: ${a}`)}pa(B.join(r,"package.json"),JSON.stringify(s,null,2)+`
337
- `,"utf-8");let i=Z.getInt("CLAUDE_MEM_WORKER_PORT");Yd(i),console.log(" Registered in openclaw.json"),u.info("OPENCLAW","Plugin installed",{destination:r})}function Zd(){let e=!1,t=ir();if(Te(t))try{Bd(t,{recursive:!0,force:!0}),console.log(` Removed extension: ${t}`)}catch(r){let n=r instanceof Error?r.message:String(r);console.error(` Failed to remove extension directory: ${n}`),e=!0}try{Vd(),console.log(" Unregistered from openclaw.json")}catch(r){let n=r instanceof Error?r.message:String(r);console.error(` Failed to update openclaw.json: ${n}`),e=!0}return e?1:0}function qd(){console.log(`
335
+ `),0}}var ia,X,oa,wt,Br,ko=E(()=>{"use strict";K();Lr();re();_t();ia=ge.join(Ad(),".codeium","windsurf"),X=ge.join(ia,"hooks.json"),oa=6e3,wt=ge.join(N,"windsurf-projects.json"),Br=["pre_user_prompt","post_write_code","post_run_command","post_mcp_tool_use","post_cascade_response"]});var xo={};Se(xo,{checkOpenClawStatus:()=>qd,findPluginManifestPath:()=>ha,findPluginSkillsDirectory:()=>Ea,findPreBuiltPluginDirectory:()=>ga,getOpenClawClaudeMemExtensionDirectory:()=>sr,getOpenClawConfigDirectory:()=>or,getOpenClawConfigFilePath:()=>Ct,getOpenClawExtensionsDirectory:()=>fa,installOpenClawIntegration:()=>Xd,installOpenClawPlugin:()=>ya,uninstallOpenClawPlugin:()=>Zd});import B from"path";import{homedir as Zr}from"os";import{existsSync as Te,readFileSync as Kd,writeFileSync as pa,mkdirSync as ma,cpSync as bo,rmSync as Bd}from"fs";function or(){return B.join(Zr(),".openclaw")}function fa(){return B.join(or(),"extensions")}function sr(){return B.join(fa(),"claude-mem")}function Ct(){return B.join(or(),"openclaw.json")}function ga(){let e=[B.join(process.env.CLAUDE_CONFIG_DIR||B.join(Zr(),".claude"),"plugins","marketplaces","thedotmack"),process.cwd()];for(let t of e){let r=B.join(t,"openclaw","dist"),n=B.join(r,"index.js");if(Te(n))return r}return null}function ha(){let e=[B.join(process.env.CLAUDE_CONFIG_DIR||B.join(Zr(),".claude"),"plugins","marketplaces","thedotmack"),process.cwd()];for(let t of e){let r=B.join(t,"openclaw","openclaw.plugin.json");if(Te(r))return r}return null}function Ea(){let e=[B.join(process.env.CLAUDE_CONFIG_DIR||B.join(Zr(),".claude"),"plugins","marketplaces","thedotmack"),process.cwd()];for(let t of e){let r=B.join(t,"openclaw","skills");if(Te(r))return r}return null}function Mo(){let e=Ct();if(!Te(e))return{};try{return JSON.parse(Kd(e,"utf-8"))}catch(t){let r=t instanceof Error?t:new Error(String(t));throw u.error("WORKER","Failed to parse openclaw.json",{path:e},r),r}}function Sa(e){let t=or();ma(t,{recursive:!0}),pa(Ct(),JSON.stringify(e,null,2)+`
336
+ `,"utf-8")}function Yd(e,t="openclaw",r=!0){let n=Mo();if(n.plugins||(n.plugins={}),n.plugins.slots||(n.plugins.slots={}),n.plugins.entries||(n.plugins.entries={}),n.plugins.slots.memory="claude-mem",!n.plugins.entries["claude-mem"])n.plugins.entries["claude-mem"]={enabled:!0,config:{workerPort:e,project:t,syncMemoryFile:r}};else{n.plugins.entries["claude-mem"].enabled=!0,n.plugins.entries["claude-mem"].config||(n.plugins.entries["claude-mem"].config={});let o=n.plugins.entries["claude-mem"].config;o.workerPort===void 0&&(o.workerPort=e),o.project===void 0&&(o.project=t),o.syncMemoryFile===void 0&&(o.syncMemoryFile=r)}Sa(n)}function Vd(){let e=Ct();if(!Te(e))return;let t=Mo();t.plugins?.entries?.["claude-mem"]&&delete t.plugins.entries["claude-mem"],t.plugins?.slots?.memory==="claude-mem"&&delete t.plugins.slots.memory,Sa(t)}function ya(){let e=ga();if(!e)return console.error("Could not find pre-built OpenClaw plugin bundle."),console.error(" Expected at: openclaw/dist/index.js"),console.error(" Ensure the npm package includes the openclaw directory."),1;let t=sr(),r=B.join(t,"dist"),n=ha(),o=Ea(),s={name:"claude-mem",version:"1.0.0",type:"module",main:"dist/index.js",openclaw:{extensions:["./dist/index.js"]}};try{return ma(r,{recursive:!0}),zd(e,r,t,n,o,s),0}catch(i){let a=i instanceof Error?i.message:String(i);return console.error(`Failed to install OpenClaw plugin: ${a}`),1}}function zd(e,t,r,n,o,s){if(bo(e,t,{recursive:!0,force:!0}),console.log(` Plugin dist copied to: ${t}`),n){let a=B.join(r,"openclaw.plugin.json");bo(n,a,{force:!0}),console.log(` Plugin manifest copied to: ${a}`)}if(o){let a=B.join(r,"skills");bo(o,a,{recursive:!0,force:!0}),console.log(` Skills copied to: ${a}`)}pa(B.join(r,"package.json"),JSON.stringify(s,null,2)+`
337
+ `,"utf-8");let i=Z.getInt("CLAUDE_MEM_WORKER_PORT");Yd(i),console.log(" Registered in openclaw.json"),u.info("OPENCLAW","Plugin installed",{destination:r})}function Zd(){let e=!1,t=sr();if(Te(t))try{Bd(t,{recursive:!0,force:!0}),console.log(` Removed extension: ${t}`)}catch(r){let n=r instanceof Error?r.message:String(r);console.error(` Failed to remove extension directory: ${n}`),e=!0}try{Vd(),console.log(" Unregistered from openclaw.json")}catch(r){let n=r instanceof Error?r.message:String(r);console.error(` Failed to update openclaw.json: ${n}`),e=!0}return e?1:0}function qd(){console.log(`
338
338
  Claude-Mem OpenClaw Integration Status
339
- `);let e=sr(),t=ir(),r=kt(),n=B.join(t,"dist","index.js");if(console.log(`Config directory: ${e}`),console.log(` Exists: ${Te(e)?"yes":"no"}`),console.log(""),console.log(`Extension directory: ${t}`),console.log(` Exists: ${Te(t)?"yes":"no"}`),console.log(` Plugin entry: ${Te(n)?"yes":"no"}`),console.log(""),console.log(`Config (openclaw.json): ${r}`),Te(r)){let o=Mo(),s=o.plugins?.entries?.["claude-mem"]!==void 0,i=o.plugins?.entries?.["claude-mem"]?.enabled===!0,a=o.plugins?.slots?.memory==="claude-mem";if(console.log(" Exists: yes"),console.log(` Registered: ${s?"yes":"no"}`),console.log(` Enabled: ${i?"yes":"no"}`),console.log(` Memory slot: ${a?"yes":"no"}`),s){let c=o.plugins.entries["claude-mem"].config;c&&(console.log(` Worker port: ${c.workerPort??"default"}`),console.log(` Project: ${c.project??"default"}`),console.log(` Sync MEMORY.md: ${c.syncMemoryFile??"default"}`))}}else console.log(" Exists: no");return console.log(""),0}async function Xd(){console.log(`
339
+ `);let e=or(),t=sr(),r=Ct(),n=B.join(t,"dist","index.js");if(console.log(`Config directory: ${e}`),console.log(` Exists: ${Te(e)?"yes":"no"}`),console.log(""),console.log(`Extension directory: ${t}`),console.log(` Exists: ${Te(t)?"yes":"no"}`),console.log(` Plugin entry: ${Te(n)?"yes":"no"}`),console.log(""),console.log(`Config (openclaw.json): ${r}`),Te(r)){let o=Mo(),s=o.plugins?.entries?.["claude-mem"]!==void 0,i=o.plugins?.entries?.["claude-mem"]?.enabled===!0,a=o.plugins?.slots?.memory==="claude-mem";if(console.log(" Exists: yes"),console.log(` Registered: ${s?"yes":"no"}`),console.log(` Enabled: ${i?"yes":"no"}`),console.log(` Memory slot: ${a?"yes":"no"}`),s){let c=o.plugins.entries["claude-mem"].config;c&&(console.log(` Worker port: ${c.workerPort??"default"}`),console.log(` Project: ${c.project??"default"}`),console.log(` Sync MEMORY.md: ${c.syncMemoryFile??"default"}`))}}else console.log(" Exists: no");return console.log(""),0}async function Xd(){console.log(`
340
340
  Installing Claude-Mem for OpenClaw...
341
- `);let e=ya();if(e!==0)return e;let t=ir();return console.log(`
341
+ `);let e=ya();if(e!==0)return e;let t=sr();return console.log(`
342
342
  Installation complete!
343
343
 
344
344
  Plugin installed to: ${t}
345
- Config updated: ${kt()}
345
+ Config updated: ${Ct()}
346
346
 
347
347
  Next steps:
348
348
  1. Start claude-mem worker: npx claude-mem start
349
349
  2. Restart OpenClaw to load the plugin
350
350
  3. Memory capture is automatic from then on
351
- `),0}var To=E(()=>{"use strict";K();Ge()});var Po={};Se(Po,{installCodexCli:()=>mp,uninstallCodexCli:()=>fp});import oe from"path";import{homedir as Io}from"os";import{execFileSync as wa,spawnSync as ka}from"child_process";import{existsSync as Qr,readFileSync as ba,writeFileSync as Oo}from"fs";import{fileURLToPath as Qd}from"url";function Ma(e){try{return process.platform==="win32"?wa("where",[e],{stdio:"ignore"}):wa("which",[e],{stdio:"ignore"}),!0}catch{return!1}}function ep(e){let t=oe.resolve(e);for(;;){if(Qr(oe.join(t,".agents","plugins","marketplace.json")))return t;let r=oe.dirname(t);if(r===t)return null;t=r}}function xa(e){return $d.filter(t=>!Qr(oe.join(e,t)))}function tp(e){let t=oe.resolve(e),r=xa(t);if(r.length>0)throw new Error(`Codex marketplace root ${t} is missing required files: ${r.join(", ")}`);return t}function rp(e){if(e)return tp(e);let t=[process.env.CLAUDE_PLUGIN_ROOT,process.env.PLUGIN_ROOT,process.cwd(),oe.dirname(Qd(import.meta.url))].filter(r=>!!r);for(let r of t){let n=ep(r);if(n&&xa(n).length===0)return n}throw new Error("Could not locate a Codex marketplace root with .agents/plugins/marketplace.json and plugin/.codex-plugin/plugin.json. Run npx claude-mem@latest install from the package or repo root.")}function ar(e){let t=ka("codex",e,{encoding:"utf-8",stdio:["ignore","pipe","pipe"]}),r=console,n=t.stdout?.trimEnd(),o=t.stderr?.trimEnd();if(n&&r.log(n),o&&r.error(o),t.error)throw t.error;if(t.status!==0){let s=t.status??"unknown";throw new Error(`codex ${e.join(" ")} failed with exit code ${s}${o?`: ${o}`:""}`)}}function va(e,t,r){try{return ar(e),console.log(` ${t}`),!0}catch(n){let o=n instanceof Error?n.message:String(n);return console.warn(` ${r}: ${o}`),!1}}function np(e){let t=e instanceof Error?e.message:String(e);return t.includes(`marketplace '${$e}' is already added from a different source`)||t.includes(`marketplace \`${$e}\` is already added from a different source`)}function op(e){try{ar(["plugin","marketplace","add",e]);return}catch(t){if(!np(t))throw t}console.warn(` Codex marketplace ${$e} is already registered from another source; replacing it with ${e}.`),ar(["plugin","marketplace","remove",$e]),ar(["plugin","marketplace","add",e])}function Ca(e){let t=e.match(/(\d+)\.(\d+)\.(\d+)/);return t?[Number(t[1]),Number(t[2]),Number(t[3])]:null}function sp(e,t){return e[0]!==t[0]?e[0]-t[0]:e[1]!==t[1]?e[1]-t[1]:e[2]-t[2]}function ip(){let e=ka("codex",["--version"],{encoding:"utf-8",stdio:["ignore","pipe","pipe"]}),t=`${e.stdout??""}
352
- ${e.stderr??""}`.trim();if(e.error)throw e.error;if(e.status!==0){console.warn(` Could not determine Codex CLI version. Continuing; plugin marketplace support requires ${Xr} or newer.${t?`
353
- ${t}`:""}`);return}let r=Ca(t);if(!r){console.warn(` Could not parse Codex CLI version from "${t||"<empty>"}". Continuing; plugin marketplace support requires ${Xr} or newer.`);return}let n=Ca(Xr);if(n&&sp(r,n)<0)throw new Error(`Codex CLI ${r.join(".")} is too old for plugin marketplace support. Update Codex CLI to ${Xr} or newer, then run: npx claude-mem@latest install`)}function ap(){if(!Qr(Ye))return!0;let e="<claude-mem-context>",t="</claude-mem-context>";try{return cp(e,t),!0}catch(r){let n=r instanceof Error?r.message:String(r);return u.warn("WORKER","Failed to clean AGENTS.md context",{error:n}),!1}}function cp(e,t){let r=ba(Ye,"utf-8"),n=r.indexOf(e),o=r.indexOf(t);if(n===-1||o===-1)return;let s=r.substring(0,n).replace(/\n+$/,""),i=r.substring(o+t.length).replace(/^\n+/,""),a=(s+(i?`
351
+ `),0}var To=E(()=>{"use strict";K();Ge()});var Po={};Se(Po,{installCodexCli:()=>mp,uninstallCodexCli:()=>fp});import oe from"path";import{homedir as Io}from"os";import{execFileSync as wa,spawnSync as ka}from"child_process";import{existsSync as Xr,readFileSync as ba,writeFileSync as Oo}from"fs";import{fileURLToPath as Qd}from"url";function Ma(e){try{return process.platform==="win32"?wa("where",[e],{stdio:"ignore"}):wa("which",[e],{stdio:"ignore"}),!0}catch{return!1}}function ep(e){let t=oe.resolve(e);for(;;){if(Xr(oe.join(t,".agents","plugins","marketplace.json")))return t;let r=oe.dirname(t);if(r===t)return null;t=r}}function xa(e){return $d.filter(t=>!Xr(oe.join(e,t)))}function tp(e){let t=oe.resolve(e),r=xa(t);if(r.length>0)throw new Error(`Codex marketplace root ${t} is missing required files: ${r.join(", ")}`);return t}function rp(e){if(e)return tp(e);let t=[process.env.CLAUDE_PLUGIN_ROOT,process.env.PLUGIN_ROOT,process.cwd(),oe.dirname(Qd(import.meta.url))].filter(r=>!!r);for(let r of t){let n=ep(r);if(n&&xa(n).length===0)return n}throw new Error("Could not locate a Codex marketplace root with .agents/plugins/marketplace.json and plugin/.codex-plugin/plugin.json. Run npx claude-mem@latest install from the package or repo root.")}function ir(e){let t=ka("codex",e,{encoding:"utf-8",stdio:["ignore","pipe","pipe"]}),r=console,n=t.stdout?.trimEnd(),o=t.stderr?.trimEnd();if(n&&r.log(n),o&&r.error(o),t.error)throw t.error;if(t.status!==0){let s=t.status??"unknown";throw new Error(`codex ${e.join(" ")} failed with exit code ${s}${o?`: ${o}`:""}`)}}function va(e,t,r){try{return ir(e),console.log(` ${t}`),!0}catch(n){let o=n instanceof Error?n.message:String(n);return console.warn(` ${r}: ${o}`),!1}}function np(e){let t=e instanceof Error?e.message:String(e);return t.includes(`marketplace '${_e}' is already added from a different source`)||t.includes(`marketplace \`${_e}\` is already added from a different source`)}function op(e){try{ir(["plugin","marketplace","add",e]);return}catch(t){if(!np(t))throw t}console.warn(` Codex marketplace ${_e} is already registered from another source; replacing it with ${e}.`),ir(["plugin","marketplace","remove",_e]),ir(["plugin","marketplace","add",e])}function Ca(e){let t=e.match(/(\d+)\.(\d+)\.(\d+)/);return t?[Number(t[1]),Number(t[2]),Number(t[3])]:null}function sp(e,t){return e[0]!==t[0]?e[0]-t[0]:e[1]!==t[1]?e[1]-t[1]:e[2]-t[2]}function ip(){let e=ka("codex",["--version"],{encoding:"utf-8",stdio:["ignore","pipe","pipe"]}),t=`${e.stdout??""}
352
+ ${e.stderr??""}`.trim();if(e.error)throw e.error;if(e.status!==0){console.warn(` Could not determine Codex CLI version. Continuing; plugin marketplace support requires ${qr} or newer.${t?`
353
+ ${t}`:""}`);return}let r=Ca(t);if(!r){console.warn(` Could not parse Codex CLI version from "${t||"<empty>"}". Continuing; plugin marketplace support requires ${qr} or newer.`);return}let n=Ca(qr);if(n&&sp(r,n)<0)throw new Error(`Codex CLI ${r.join(".")} is too old for plugin marketplace support. Update Codex CLI to ${qr} or newer, then run: npx claude-mem@latest install`)}function ap(){if(!Xr(Be))return!0;let e="<claude-mem-context>",t="</claude-mem-context>";try{return cp(e,t),!0}catch(r){let n=r instanceof Error?r.message:String(r);return u.warn("WORKER","Failed to clean AGENTS.md context",{error:n}),!1}}function cp(e,t){let r=ba(Be,"utf-8"),n=r.indexOf(e),o=r.indexOf(t);if(n===-1||o===-1)return;let s=r.substring(0,n).replace(/\n+$/,""),i=r.substring(o+t.length).replace(/^\n+/,""),a=(s+(i?`
354
354
 
355
- `+i:"")).trim();a?Oo(Ye,a+`
356
- `):Oo(Ye,""),console.log(` Removed legacy global context from ${Ye}`)}function Ro(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function lp(e){return e.name==="codex"||e.schema==="codex"}function up(e){return e==="~"?Io():e.startsWith("~/")||e.startsWith("~\\")?oe.join(Io(),e.slice(2)):e}function dp(e){if(e.mode!=="agents")return!1;let t=e.updateOn;return Array.isArray(t)&&t.length===2&&t.includes("session_start")&&t.includes("session_end")?e.path===void 0?!0:typeof e.path=="string"&&oe.resolve(up(e.path))===Ye:!1}function pp(){if(!Qr(bt))return!0;try{let e=JSON.parse(ba(bt,"utf-8"));if(!Ro(e)||!Array.isArray(e.watches))return!0;let t=!1;for(let r of e.watches)!Ro(r)||!lp(r)||!Ro(r.context)||!dp(r.context)||(delete r.context,t=!0);return t&&(Oo(bt,`${JSON.stringify(e,null,2)}
357
- `),console.log(` Disabled legacy Codex transcript AGENTS.md context in ${bt}`)),!0}catch(e){let t=e instanceof Error?e.message:String(e);return u.warn("WORKER","Failed to disable Codex transcript AGENTS.md context",{error:t}),!1}}async function mp(e){if(console.log(`
355
+ `+i:"")).trim();a?Oo(Be,a+`
356
+ `):Oo(Be,""),console.log(` Removed legacy global context from ${Be}`)}function Ro(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function lp(e){return e.name==="codex"||e.schema==="codex"}function up(e){return e==="~"?Io():e.startsWith("~/")||e.startsWith("~\\")?oe.join(Io(),e.slice(2)):e}function dp(e){if(e.mode!=="agents")return!1;let t=e.updateOn;return Array.isArray(t)&&t.length===2&&t.includes("session_start")&&t.includes("session_end")?e.path===void 0?!0:typeof e.path=="string"&&oe.resolve(up(e.path))===Be:!1}function pp(){if(!Xr(kt))return!0;try{let e=JSON.parse(ba(kt,"utf-8"));if(!Ro(e)||!Array.isArray(e.watches))return!0;let t=!1;for(let r of e.watches)!Ro(r)||!lp(r)||!Ro(r.context)||!dp(r.context)||(delete r.context,t=!0);return t&&(Oo(kt,`${JSON.stringify(e,null,2)}
357
+ `),console.log(` Disabled legacy Codex transcript AGENTS.md context in ${kt}`)),!0}catch(e){let t=e instanceof Error?e.message:String(e);return u.warn("WORKER","Failed to disable Codex transcript AGENTS.md context",{error:t}),!1}}async function mp(e){if(console.log(`
358
358
  Installing Claude-Mem for Codex CLI (native hooks)...
359
- `),!Ma("codex"))return console.error("Codex CLI was not found on PATH."),console.error("Install Codex, then run: npx claude-mem@latest install"),1;try{ip();let t=rp(e);return console.log(` Registering Codex plugin marketplace: ${t}`),op(t),va(["plugin","marketplace","upgrade",$e],"Refreshed Codex marketplace and installed plugin cache.","Could not refresh Codex marketplace cache; reinstall or upgrade claude-mem from /plugins if Codex still uses old MCP config"),va(["features","enable","plugin_hooks"],"Enabled Codex plugin_hooks so claude-mem hooks can run.","Could not enable Codex plugin_hooks; run `codex features enable plugin_hooks` if context hooks do not appear"),Ta()||console.warn(` Native Codex hooks registered, but failed to remove legacy AGENTS.md context from ${Ye}.`),Ra()||console.warn(` Native Codex hooks registered, but failed to disable legacy transcript AGENTS.md context in ${bt}.`),console.log(`
359
+ `),!Ma("codex"))return console.error("Codex CLI was not found on PATH."),console.error("Install Codex, then run: npx claude-mem@latest install"),1;try{ip();let t=rp(e);return console.log(` Registering Codex plugin marketplace: ${t}`),op(t),va(["plugin","marketplace","upgrade",_e],"Refreshed Codex marketplace and installed plugin cache.","Could not refresh Codex marketplace cache; reinstall or upgrade claude-mem from /plugins if Codex still uses old MCP config"),va(["features","enable","plugin_hooks"],"Enabled Codex plugin_hooks so claude-mem hooks can run.","Could not enable Codex plugin_hooks; run `codex features enable plugin_hooks` if context hooks do not appear"),Ta()||console.warn(` Native Codex hooks registered, but failed to remove legacy AGENTS.md context from ${Be}.`),Ra()||console.warn(` Native Codex hooks registered, but failed to disable legacy transcript AGENTS.md context in ${kt}.`),console.log(`
360
360
  Installation complete!
361
361
 
362
- Codex marketplace: ${$e}
362
+ Codex marketplace: ${_e}
363
363
  Plugin source: ${t}
364
364
 
365
365
  Next steps:
@@ -373,32 +373,32 @@ For a fresh setup, the supported entry point is:
373
373
  `),0}catch(t){let r=t instanceof Error?t.message:String(t);return console.error(`
374
374
  Installation failed: ${r}`),1}}function fp(){console.log(`
375
375
  Uninstalling Claude-Mem Codex CLI integration...
376
- `);let e=!1;try{Ma("codex")?ar(["plugin","marketplace","remove",$e]):console.log(" Codex CLI not found; skipping marketplace removal.")}catch(t){let r=t instanceof Error?t.message:String(t);console.error(`
376
+ `);let e=!1;try{Ma("codex")?ir(["plugin","marketplace","remove",_e]):console.log(" Codex CLI not found; skipping marketplace removal.")}catch(t){let r=t instanceof Error?t.message:String(t);console.error(`
377
377
  Codex marketplace removal failed: ${r}`),e=!0}try{Ta()||(console.error(`
378
- Failed to remove legacy AGENTS.md context from ${Ye}.`),e=!0),Ra()||(console.error(`
379
- Failed to disable legacy transcript AGENTS.md context in ${bt}.`),e=!0)}catch(t){let r=t instanceof Error?t.message:String(t);console.error(`
378
+ Failed to remove legacy AGENTS.md context from ${Be}.`),e=!0),Ra()||(console.error(`
379
+ Failed to disable legacy transcript AGENTS.md context in ${kt}.`),e=!0)}catch(t){let r=t instanceof Error?t.message:String(t);console.error(`
380
380
  Legacy context cleanup failed: ${r}`),e=!0}return e?(console.error(`
381
381
  Uninstallation completed with errors.`),1):(console.log(`
382
382
  Uninstallation complete!`),console.log(`Restart Codex CLI to apply changes.
383
- `),0)}var _d,Ye,bt,$e,Xr,$d,Ta,Ra,Ao=E(()=>{"use strict";K();re();_d=oe.join(Io(),".codex"),Ye=oe.join(_d,"AGENTS.md"),bt=G.transcriptsConfig(),$e="claude-mem-local",Xr="0.128.0",$d=[oe.join(".agents","plugins","marketplace.json"),oe.join("plugin",".codex-plugin","plugin.json"),oe.join("plugin",".mcp.json"),oe.join("plugin","hooks","codex-hooks.json"),oe.join("plugin","skills","mem-search","SKILL.md")];Ta=ap;Ra=pp});var Da={};Se(Da,{MCP_IDE_INSTALLERS:()=>Tp,installGooseMcpIntegration:()=>Na});import he from"path";import{homedir as $r}from"os";import{existsSync as Pa,readFileSync as gp,writeFileSync as cr,mkdirSync as Aa}from"fs";function Ep(e){return{command:process.execPath,args:[e]}}function Sp(e,t,r="mcpServers"){let n=he.dirname(e);Aa(n,{recursive:!0});let o=le(e,{});o[r]||(o[r]={}),o[r]["claude-mem"]=Ep(t),cr(e,JSON.stringify(o,null,2)+`
384
- `)}function _r(e){return async()=>{console.log(`
383
+ `),0)}var _d,Be,kt,_e,qr,$d,Ta,Ra,Ao=E(()=>{"use strict";K();re();_d=oe.join(Io(),".codex"),Be=oe.join(_d,"AGENTS.md"),kt=G.transcriptsConfig(),_e="claude-mem-local",qr="0.128.0",$d=[oe.join(".agents","plugins","marketplace.json"),oe.join("plugin",".codex-plugin","plugin.json"),oe.join("plugin",".mcp.json"),oe.join("plugin","hooks","codex-hooks.json"),oe.join("plugin","skills","mem-search","SKILL.md")];Ta=ap;Ra=pp});var Da={};Se(Da,{MCP_IDE_INSTALLERS:()=>Tp,installGooseMcpIntegration:()=>Na});import he from"path";import{homedir as _r}from"os";import{existsSync as Pa,readFileSync as gp,writeFileSync as ar,mkdirSync as Aa}from"fs";function Ep(e){return{command:process.execPath,args:[e]}}function Sp(e,t,r="mcpServers"){let n=he.dirname(e);Aa(n,{recursive:!0});let o=le(e,{});o[r]||(o[r]={}),o[r]["claude-mem"]=Ep(t),ar(e,JSON.stringify(o,null,2)+`
384
+ `)}function Qr(e){return async()=>{console.log(`
385
385
  Installing Claude-Mem MCP integration for ${e.ideLabel}...
386
- `);let t=_t();if(!t)return console.error("Could not find MCP server script"),console.error(" Expected at: ~/.claude/plugins/marketplaces/thedotmack/plugin/scripts/mcp-server.cjs"),1;let r=e.configPath,n=e.ideId==="warp"&&!Pa(he.dirname(r)),o;e.contextFile&&(o=e.contextFile.path);try{return yp(e,r,t,n,o),0}catch(s){let i=s instanceof Error?s.message:String(s);return console.error(`
387
- Installation failed: ${i}`),1}}}function yp(e,t,r,n,o){n?console.log(" Note: ~/.warp/ not found. MCP may need to be configured via Warp Drive UI."):(Sp(t,r,e.configKey),console.log(` MCP config written to: ${t}`)),o&&(Kr(o,hp),console.log(` Context placeholder written to: ${o}`));let s=[`
386
+ `);let t=Qt();if(!t)return console.error("Could not find MCP server script"),console.error(" Expected at: ~/.claude/plugins/marketplaces/thedotmack/plugin/scripts/mcp-server.cjs"),1;let r=e.configPath,n=e.ideId==="warp"&&!Pa(he.dirname(r)),o;e.contextFile&&(o=e.contextFile.path);try{return yp(e,r,t,n,o),0}catch(s){let i=s instanceof Error?s.message:String(s);return console.error(`
387
+ Installation failed: ${i}`),1}}}function yp(e,t,r,n,o){n?console.log(" Note: ~/.warp/ not found. MCP may need to be configured via Warp Drive UI."):(Sp(t,r,e.configKey),console.log(` MCP config written to: ${t}`)),o&&(Jr(o,hp),console.log(` Context placeholder written to: ${o}`));let s=[`
388
388
  Installation complete!
389
389
  `];s.push(`MCP config: ${t}`),o&&s.push(`Context: ${o}`),s.push(""),s.push("Note: This is an MCP-only integration providing search tools and context."),s.push(`Transcript capture is not available for ${e.ideLabel}.`),e.ideId==="warp"&&s.push("If MCP config via file is not supported, configure MCP through Warp Drive UI."),s.push(""),s.push("Next steps:"),s.push(" 1. Start claude-mem worker: npx claude-mem start"),s.push(` 2. Restart ${e.ideLabel} to pick up the MCP server`),s.push(""),console.log(s.join(`
390
- `))}function bp(){return he.join($r(),".config","goose","config.yaml")}function Mp(e){return e.includes("claude-mem:")&&e.includes("mcpServers:")}function Ia(e){return["mcpServers:"," claude-mem:",` command: ${process.execPath}`," args:",` - ${e}`].join(`
390
+ `))}function bp(){return he.join(_r(),".config","goose","config.yaml")}function Mp(e){return e.includes("claude-mem:")&&e.includes("mcpServers:")}function Ia(e){return["mcpServers:"," claude-mem:",` command: ${process.execPath}`," args:",` - ${e}`].join(`
391
391
  `)}function Oa(e){return[" claude-mem:",` command: ${process.execPath}`," args:",` - ${e}`].join(`
392
392
  `)}async function Na(){console.log(`
393
393
  Installing Claude-Mem MCP integration for Goose...
394
- `);let e=_t();if(!e)return console.error("Could not find MCP server script"),console.error(" Expected at: ~/.claude/plugins/marketplaces/thedotmack/plugin/scripts/mcp-server.cjs"),1;let t=bp(),r=he.dirname(t);try{return Aa(r,{recursive:!0}),xp(t,e),0}catch(n){let o=n instanceof Error?n.message:String(n);return console.error(`
394
+ `);let e=Qt();if(!e)return console.error("Could not find MCP server script"),console.error(" Expected at: ~/.claude/plugins/marketplaces/thedotmack/plugin/scripts/mcp-server.cjs"),1;let t=bp(),r=he.dirname(t);try{return Aa(r,{recursive:!0}),xp(t,e),0}catch(n){let o=n instanceof Error?n.message:String(n);return console.error(`
395
395
  Installation failed: ${o}`),1}}function xp(e,t){if(Pa(e)){let r=gp(e,"utf-8");if(Mp(r)){let n=/( {2}claude-mem:\n(?:.*\n)*?(?= {2}\S|\n\n|^\S|$))/m,o=Oa(t)+`
396
- `;if(!n.test(r))throw new Error("Found mcpServers/claude-mem markers but could not locate a replaceable claude-mem block");r=r.replace(n,o),cr(e,r),console.log(` Updated existing claude-mem entry in: ${e}`)}else if(r.includes("mcpServers:")){let o=r.indexOf("mcpServers:")+11,s=`
397
- `+Oa(t);r=r.slice(0,o)+s+r.slice(o),cr(e,r),console.log(` Added claude-mem to existing mcpServers in: ${e}`)}else{let n=`
396
+ `;if(!n.test(r))throw new Error("Found mcpServers/claude-mem markers but could not locate a replaceable claude-mem block");r=r.replace(n,o),ar(e,r),console.log(` Updated existing claude-mem entry in: ${e}`)}else if(r.includes("mcpServers:")){let o=r.indexOf("mcpServers:")+11,s=`
397
+ `+Oa(t);r=r.slice(0,o)+s+r.slice(o),ar(e,r),console.log(` Added claude-mem to existing mcpServers in: ${e}`)}else{let n=`
398
398
  `+Ia(t)+`
399
399
  `;r=r.trimEnd()+`
400
- `+n,cr(e,r),console.log(` Appended mcpServers section to: ${e}`)}}else{let r=Ia(t)+`
401
- `;cr(e,r),console.log(` Created config with MCP server: ${e}`)}console.log(`
400
+ `+n,ar(e,r),console.log(` Appended mcpServers section to: ${e}`)}}else{let r=Ia(t)+`
401
+ `;ar(e,r),console.log(` Created config with MCP server: ${e}`)}console.log(`
402
402
  Installation complete!
403
403
 
404
404
  MCP config: ${e}
@@ -409,28 +409,28 @@ Transcript capture is not available for Goose.
409
409
  Next steps:
410
410
  1. Start claude-mem worker: npx claude-mem start
411
411
  2. Restart Goose to pick up the MCP server
412
- `)}var hp,wp,vp,Cp,kp,Tp,Ua=E(()=>{"use strict";$t();Tt();go();hp=`# claude-mem: Cross-Session Memory
412
+ `)}var hp,wp,vp,Cp,kp,Tp,Ua=E(()=>{"use strict";_t();xt();go();hp=`# claude-mem: Cross-Session Memory
413
413
 
414
414
  *No context yet. Complete your first session and context will appear here.*
415
415
 
416
- Use claude-mem's MCP search tools for manual memory queries.`;wp={ideId:"copilot-cli",ideLabel:"Copilot CLI",configPath:he.join($r(),".github","copilot","mcp.json"),configKey:"servers",contextFile:{path:he.join(process.cwd(),".github","copilot-instructions.md"),isWorkspaceRelative:!0}},vp={ideId:"antigravity",ideLabel:"Antigravity",configPath:he.join($r(),".gemini","antigravity","mcp_config.json"),configKey:"mcpServers",contextFile:{path:he.join(process.cwd(),".agents","rules","claude-mem-context.md"),isWorkspaceRelative:!0}},Cp={ideId:"roo-code",ideLabel:"Roo Code",configPath:he.join(process.cwd(),".roo","mcp.json"),configKey:"mcpServers",contextFile:{path:he.join(process.cwd(),".roo","rules","claude-mem-context.md"),isWorkspaceRelative:!0}},kp={ideId:"warp",ideLabel:"Warp",configPath:he.join($r(),".warp","mcp.json"),configKey:"mcpServers",contextFile:{path:he.join(process.cwd(),"WARP.md"),isWorkspaceRelative:!0}};Tp={"copilot-cli":_r(wp),antigravity:_r(vp),goose:Na,"roo-code":_r(Cp),warp:_r(kp)}});var rn={};Se(rn,{disableClaudeAutoMemory:()=>Ja,runInstallCommand:()=>Bp,runRepairCommand:()=>Yp});import{execSync as Rp}from"child_process";import{cpSync as La,existsSync as Ee,mkdirSync as Wa,readFileSync as tn,rmSync as ja,writeFileSync as Fa}from"fs";import{homedir as Ga}from"os";import{dirname as Ha,join as ce}from"path";function Mt(e){return Z.loadFromFile(lt)[e]}async function en(e){if(Y)await Tr(e);else for(let t of e){let r=await t.task(n=>console.log(` ${n}`));console.log(` ${r}`)}}async function Ve(e){if(!Y)return{result:await e(),output:""};let t="",r=(...o)=>{t+=o.map(s=>typeof s=="string"?s:String(s)).join(" ")+`
417
- `},n={log:console.log,error:console.error,warn:console.warn};console.log=r,console.error=r,console.warn=r;try{return{result:await e(),output:t}}finally{console.log=n.log,console.error=n.error,console.warn=n.warn}}function Ip(){let e=le(nt(),{});e.thedotmack={source:{source:"github",repo:"thedotmack/claude-mem"},installLocation:z(),lastUpdated:new Date().toISOString(),autoUpdate:!0},It(qe()),Ne(nt(),e)}function Op(e){let t=le(ot(),{});t.version||(t.version=2),t.plugins||(t.plugins={});let r=st(e),n=new Date().toISOString();t.plugins["claude-mem@thedotmack"]=[{scope:"user",installPath:r,version:e,installedAt:n,lastUpdated:n}],Ne(ot(),t)}function Pp(){let e=le(Ue(),{});e.enabledPlugins||(e.enabledPlugins={}),e.enabledPlugins["claude-mem@thedotmack"]=!0,Ne(Ue(),e)}function Ja(){let e=le(Ue(),{}),t=e.env&&typeof e.env=="object"?e.env:{};return t.CLAUDE_CODE_DISABLE_AUTO_MEMORY==="1"?!1:(e.env={...t,CLAUDE_CODE_DISABLE_AUTO_MEMORY:"1"},Ne(Ue(),e),!0)}function Ap(e,t,r){let n=(o,s)=>{t.push(e),s&&s.trim().length>0&&r.push(`${o}
418
- ${s.trim()}`)};switch(e){case"claude-code":return{title:"Claude Code: registering plugin",task:async()=>`Claude Code: plugin registered ${m.default.green("OK")}`};case"cursor":return{title:"Cursor: installing hooks + MCP",task:async o=>{o("Loading Cursor installer\u2026");let{installCursorHooks:s,configureCursorMcp:i}=await Promise.resolve().then(()=>($t(),zi));o("Installing Cursor hooks\u2026");let{result:a,output:c}=await Ve(()=>s("user"));if(a!==0)return n("Cursor: hook installation failed",c),`Cursor: hook installation failed ${m.default.red("FAIL")}`;o("Configuring Cursor MCP\u2026");let{result:l}=await Ve(async()=>i("user"));return l===0?`Cursor: hooks + MCP installed ${m.default.green("OK")}`:`Cursor: hooks installed; MCP setup failed \u2014 run \`npx claude-mem cursor mcp\` ${m.default.yellow("!")}`}};case"gemini-cli":return{title:"Gemini CLI: installing hooks",task:async o=>{o("Loading Gemini CLI installer\u2026");let{installGeminiCliHooks:s}=await Promise.resolve().then(()=>(mo(),po));o("Installing Gemini CLI hooks\u2026");let{result:i,output:a}=await Ve(()=>s());return i!==0?(n("Gemini CLI: hook installation failed",a),`Gemini CLI: hook installation failed ${m.default.red("FAIL")}`):`Gemini CLI: hooks installed ${m.default.green("OK")}`}};case"opencode":return{title:"OpenCode: installing plugin",task:async o=>{o("Loading OpenCode installer\u2026");let{installOpenCodeIntegration:s}=await Promise.resolve().then(()=>(yo(),So));o("Installing OpenCode plugin\u2026");let{result:i,output:a}=await Ve(()=>s());return i!==0?(n("OpenCode: plugin installation failed",a),`OpenCode: plugin installation failed ${m.default.red("FAIL")}`):`OpenCode: plugin installed ${m.default.green("OK")}`}};case"windsurf":return{title:"Windsurf: installing hooks",task:async o=>{o("Loading Windsurf installer\u2026");let{installWindsurfHooks:s}=await Promise.resolve().then(()=>(ko(),Co));o("Installing Windsurf hooks\u2026");let{result:i,output:a}=await Ve(()=>s());return i!==0?(n("Windsurf: hook installation failed",a),`Windsurf: hook installation failed ${m.default.red("FAIL")}`):`Windsurf: hooks installed ${m.default.green("OK")}`}};case"openclaw":return{title:"OpenClaw: installing plugin",task:async o=>{o("Loading OpenClaw installer\u2026");let{installOpenClawIntegration:s}=await Promise.resolve().then(()=>(To(),xo));o("Copying plugin files\u2026");let{result:i,output:a}=await Ve(()=>s());return i!==0?(n("OpenClaw: plugin installation failed",a),`OpenClaw: plugin installation failed ${m.default.red("FAIL")}`):`OpenClaw: plugin installed ${m.default.green("OK")}`}};case"codex-cli":return{title:"Codex CLI: registering hooks marketplace",task:async o=>{o("Loading Codex CLI installer\u2026");let{installCodexCli:s}=await Promise.resolve().then(()=>(Ao(),Po));o("Registering native Codex hooks\u2026");let{result:i,output:a}=await Ve(()=>s(z()));return i!==0?(n("Codex CLI: integration setup failed",a),`Codex CLI: integration setup failed ${m.default.red("FAIL")}`):`Codex CLI: hooks marketplace registered ${m.default.green("OK")}`}};case"copilot-cli":case"antigravity":case"goose":case"roo-code":case"warp":{let i=ft().find(a=>a.id===e)?.label??e;return{title:`${i}: installing MCP integration`,task:async a=>{a("Loading MCP installer\u2026");let{MCP_IDE_INSTALLERS:c}=await Promise.resolve().then(()=>(Ua(),Da)),l=c[e];if(!l)return`${i}: MCP installer not found ${m.default.yellow("!")}`;a(`Configuring ${i} MCP\u2026`);let{result:p,output:f}=await Ve(()=>l());return p!==0?(n(`${i}: MCP integration failed`,f),`${i}: MCP integration failed ${m.default.red("FAIL")}`):`${i}: MCP integration installed ${m.default.green("OK")}`}}}default:{let s=ft().find(i=>i.id===e);return s&&!s.supported?{title:`${s.label}: skipping`,task:async()=>`${s.label}: support coming soon ${m.default.yellow("!")}`}:null}}}async function Np(e){let t=[],r=[],n=[];for(let o of e){let s=Ap(o,t,r);s&&n.push(s)}n.length>0&&await en(n);for(let o of r)k.warn(o);return t}function Dp(){let e=Ga(),t=process.env.SHELL??"";if(t.includes("fish"))return{path:ce(e,".config","fish","config.fish"),shell:"fish"};if(t.includes("zsh"))return{path:ce(e,".zshrc"),shell:"zsh"};if(process.platform==="darwin"){let r=ce(e,".bash_profile");if(Ee(r))return{path:r,shell:"bash"}}return{path:ce(e,".bashrc"),shell:"bash"}}function Up(){let e=Ga(),t=ce(e,".local","bin"),r=ce(t,"claude");if(!Ee(r))return;let n=process.env.PATH??"";if(n.split(":").includes(t))return;let{path:s,shell:i}=Dp(),a="$HOME/.local/bin",c=i==="fish"?`set -gx PATH ${t} $PATH`:`export PATH="${a}:$PATH"`,l="";if(Ee(s))try{l=tn(s,"utf-8")}catch(p){k.warn(`Could not read ${s}: ${p instanceof Error?p.message:String(p)}`)}else try{Wa(Ha(s),{recursive:!0})}catch{}if(l.includes(t)||l.includes(a))k.info(`Claude Code PATH already configured in ${s}`);else try{let f=`${l.length===0||l.endsWith(`
416
+ Use claude-mem's MCP search tools for manual memory queries.`;wp={ideId:"copilot-cli",ideLabel:"Copilot CLI",configPath:he.join(_r(),".github","copilot","mcp.json"),configKey:"servers",contextFile:{path:he.join(process.cwd(),".github","copilot-instructions.md"),isWorkspaceRelative:!0}},vp={ideId:"antigravity",ideLabel:"Antigravity",configPath:he.join(_r(),".gemini","antigravity","mcp_config.json"),configKey:"mcpServers",contextFile:{path:he.join(process.cwd(),".agents","rules","claude-mem-context.md"),isWorkspaceRelative:!0}},Cp={ideId:"roo-code",ideLabel:"Roo Code",configPath:he.join(process.cwd(),".roo","mcp.json"),configKey:"mcpServers",contextFile:{path:he.join(process.cwd(),".roo","rules","claude-mem-context.md"),isWorkspaceRelative:!0}},kp={ideId:"warp",ideLabel:"Warp",configPath:he.join(_r(),".warp","mcp.json"),configKey:"mcpServers",contextFile:{path:he.join(process.cwd(),"WARP.md"),isWorkspaceRelative:!0}};Tp={"copilot-cli":Qr(wp),antigravity:Qr(vp),goose:Na,"roo-code":Qr(Cp),warp:Qr(kp)}});var tn={};Se(tn,{disableClaudeAutoMemory:()=>Ja,runInstallCommand:()=>Bp,runRepairCommand:()=>Yp});import{execSync as Rp}from"child_process";import{cpSync as La,existsSync as Ee,mkdirSync as Wa,readFileSync as en,rmSync as ja,writeFileSync as Fa}from"fs";import{homedir as Ga}from"os";import{dirname as Ha,join as ce}from"path";function bt(e){return Z.loadFromFile(ct)[e]}async function $r(e){if(Y)await xr(e);else for(let t of e){let r=await t.task(n=>console.log(` ${n}`));console.log(` ${r}`)}}async function Ye(e){if(!Y)return{result:await e(),output:""};let t="",r=(...o)=>{t+=o.map(s=>typeof s=="string"?s:String(s)).join(" ")+`
417
+ `},n={log:console.log,error:console.error,warn:console.warn};console.log=r,console.error=r,console.warn=r;try{return{result:await e(),output:t}}finally{console.log=n.log,console.error=n.error,console.warn=n.warn}}function Ip(){let e=le(rt(),{});e.thedotmack={source:{source:"github",repo:"thedotmack/claude-mem"},installLocation:z(),lastUpdated:new Date().toISOString(),autoUpdate:!0},Rt(Ze()),Ne(rt(),e)}function Op(e){let t=le(nt(),{});t.version||(t.version=2),t.plugins||(t.plugins={});let r=ot(e),n=new Date().toISOString();t.plugins["claude-mem@thedotmack"]=[{scope:"user",installPath:r,version:e,installedAt:n,lastUpdated:n}],Ne(nt(),t)}function Pp(){let e=le(Ue(),{});e.enabledPlugins||(e.enabledPlugins={}),e.enabledPlugins["claude-mem@thedotmack"]=!0,Ne(Ue(),e)}function Ja(){let e=le(Ue(),{}),t=e.env&&typeof e.env=="object"?e.env:{};return t.CLAUDE_CODE_DISABLE_AUTO_MEMORY==="1"?!1:(e.env={...t,CLAUDE_CODE_DISABLE_AUTO_MEMORY:"1"},Ne(Ue(),e),!0)}function Ap(e,t,r){let n=(o,s)=>{t.push(e),s&&s.trim().length>0&&r.push(`${o}
418
+ ${s.trim()}`)};switch(e){case"claude-code":return{title:"Claude Code: registering plugin",task:async()=>`Claude Code: plugin registered ${m.default.green("OK")}`};case"cursor":return{title:"Cursor: installing hooks + MCP",task:async o=>{o("Loading Cursor installer\u2026");let{installCursorHooks:s,configureCursorMcp:i}=await Promise.resolve().then(()=>(_t(),zi));o("Installing Cursor hooks\u2026");let{result:a,output:c}=await Ye(()=>s("user"));if(a!==0)return n("Cursor: hook installation failed",c),`Cursor: hook installation failed ${m.default.red("FAIL")}`;o("Configuring Cursor MCP\u2026");let{result:l}=await Ye(async()=>i("user"));return l===0?`Cursor: hooks + MCP installed ${m.default.green("OK")}`:`Cursor: hooks installed; MCP setup failed \u2014 run \`npx claude-mem cursor mcp\` ${m.default.yellow("!")}`}};case"gemini-cli":return{title:"Gemini CLI: installing hooks",task:async o=>{o("Loading Gemini CLI installer\u2026");let{installGeminiCliHooks:s}=await Promise.resolve().then(()=>(mo(),po));o("Installing Gemini CLI hooks\u2026");let{result:i,output:a}=await Ye(()=>s());return i!==0?(n("Gemini CLI: hook installation failed",a),`Gemini CLI: hook installation failed ${m.default.red("FAIL")}`):`Gemini CLI: hooks installed ${m.default.green("OK")}`}};case"opencode":return{title:"OpenCode: installing plugin",task:async o=>{o("Loading OpenCode installer\u2026");let{installOpenCodeIntegration:s}=await Promise.resolve().then(()=>(yo(),So));o("Installing OpenCode plugin\u2026");let{result:i,output:a}=await Ye(()=>s());return i!==0?(n("OpenCode: plugin installation failed",a),`OpenCode: plugin installation failed ${m.default.red("FAIL")}`):`OpenCode: plugin installed ${m.default.green("OK")}`}};case"windsurf":return{title:"Windsurf: installing hooks",task:async o=>{o("Loading Windsurf installer\u2026");let{installWindsurfHooks:s}=await Promise.resolve().then(()=>(ko(),Co));o("Installing Windsurf hooks\u2026");let{result:i,output:a}=await Ye(()=>s());return i!==0?(n("Windsurf: hook installation failed",a),`Windsurf: hook installation failed ${m.default.red("FAIL")}`):`Windsurf: hooks installed ${m.default.green("OK")}`}};case"openclaw":return{title:"OpenClaw: installing plugin",task:async o=>{o("Loading OpenClaw installer\u2026");let{installOpenClawIntegration:s}=await Promise.resolve().then(()=>(To(),xo));o("Copying plugin files\u2026");let{result:i,output:a}=await Ye(()=>s());return i!==0?(n("OpenClaw: plugin installation failed",a),`OpenClaw: plugin installation failed ${m.default.red("FAIL")}`):`OpenClaw: plugin installed ${m.default.green("OK")}`}};case"codex-cli":return{title:"Codex CLI: registering hooks marketplace",task:async o=>{o("Loading Codex CLI installer\u2026");let{installCodexCli:s}=await Promise.resolve().then(()=>(Ao(),Po));o("Registering native Codex hooks\u2026");let{result:i,output:a}=await Ye(()=>s(z()));return i!==0?(n("Codex CLI: integration setup failed",a),`Codex CLI: integration setup failed ${m.default.red("FAIL")}`):`Codex CLI: hooks marketplace registered ${m.default.green("OK")}`}};case"copilot-cli":case"antigravity":case"goose":case"roo-code":case"warp":{let i=mt().find(a=>a.id===e)?.label??e;return{title:`${i}: installing MCP integration`,task:async a=>{a("Loading MCP installer\u2026");let{MCP_IDE_INSTALLERS:c}=await Promise.resolve().then(()=>(Ua(),Da)),l=c[e];if(!l)return`${i}: MCP installer not found ${m.default.yellow("!")}`;a(`Configuring ${i} MCP\u2026`);let{result:p,output:f}=await Ye(()=>l());return p!==0?(n(`${i}: MCP integration failed`,f),`${i}: MCP integration failed ${m.default.red("FAIL")}`):`${i}: MCP integration installed ${m.default.green("OK")}`}}}default:{let s=mt().find(i=>i.id===e);return s&&!s.supported?{title:`${s.label}: skipping`,task:async()=>`${s.label}: support coming soon ${m.default.yellow("!")}`}:null}}}async function Np(e){let t=[],r=[],n=[];for(let o of e){let s=Ap(o,t,r);s&&n.push(s)}n.length>0&&await $r(n);for(let o of r)k.warn(o);return t}function Dp(){let e=Ga(),t=process.env.SHELL??"";if(t.includes("fish"))return{path:ce(e,".config","fish","config.fish"),shell:"fish"};if(t.includes("zsh"))return{path:ce(e,".zshrc"),shell:"zsh"};if(process.platform==="darwin"){let r=ce(e,".bash_profile");if(Ee(r))return{path:r,shell:"bash"}}return{path:ce(e,".bashrc"),shell:"bash"}}function Up(){let e=Ga(),t=ce(e,".local","bin"),r=ce(t,"claude");if(!Ee(r))return;let n=process.env.PATH??"";if(n.split(":").includes(t))return;let{path:s,shell:i}=Dp(),a="$HOME/.local/bin",c=i==="fish"?`set -gx PATH ${t} $PATH`:`export PATH="${a}:$PATH"`,l="";if(Ee(s))try{l=en(s,"utf-8")}catch(p){k.warn(`Could not read ${s}: ${p instanceof Error?p.message:String(p)}`)}else try{Wa(Ha(s),{recursive:!0})}catch{}if(l.includes(t)||l.includes(a))k.info(`Claude Code PATH already configured in ${s}`);else try{let f=`${l.length===0||l.endsWith(`
419
419
  `)?"":`
420
420
  `}
421
421
  # Added by claude-mem installer for Claude Code
422
422
  ${c}
423
- `;Fa(s,l+f,"utf-8"),k.success(`Added Claude Code to PATH in ${s}`)}catch(p){k.warn(`Could not update ${s}: ${p instanceof Error?p.message:String(p)}`),k.info(`Run manually: echo '${c}' >> ${s}`);return}process.env.PATH=`${t}:${n}`}async function Lp(){let e=ue?'powershell -ExecutionPolicy ByPass -c "irm https://claude.ai/install.ps1 | iex"':"curl -fsSL https://claude.ai/install.sh | bash",t=Y?jt():null;return t?.start("Installing Claude Code (this can take a few minutes \u2014 downloading the native build)\u2026"),new Promise(r=>{let n="",o=ye(e,[],{shell:ue?process.env.ComSpec??"cmd.exe":"/bin/bash",stdio:t?["inherit","pipe","pipe"]:"inherit"});o.stdout?.on("data",s=>{n+=s.toString()}),o.stderr?.on("data",s=>{n+=s.toString()}),o.on("error",s=>{t?.stop("Claude Code install failed",1),n&&process.stderr.write(n),k.error(`Claude Code install failed: ${s.message}`),k.info("You can install it manually later: https://claude.ai/install.sh"),r(!1)}),o.on("exit",s=>{if(s!==0){t?.stop("Claude Code install failed",1),n&&process.stderr.write(n),k.error(`Claude Code install failed (exit ${s??"unknown"})`),k.info("You can install it manually later: https://claude.ai/install.sh"),r(!1);return}if(t?.stop("Claude Code installed"),!ue)try{Up()}catch(i){k.warn(`Could not auto-apply PATH setup: ${i instanceof Error?i.message:String(i)}`)}r(!0)})})}async function Wp(){let e=ft(),t=e.find(s=>s.id==="claude-code");if(t&&!t.detected){k.warn("Claude Code is not installed. Claude-mem works best in Claude Code, but also works with the IDEs below.");let s=await Fe({message:"Install Claude Code now?",options:[{value:"install",label:"Yes \u2014 install Claude Code (recommended)"},{value:"skip",label:"No \u2014 pick another IDE below"},{value:"cancel",label:"Cancel installation"}],initialValue:"install"});(F(s)||s==="cancel")&&(pe("Installation cancelled."),process.exit(0)),s==="install"&&await Lp()&&(e=ft())}e.filter(s=>s.detected).length===0&&k.warn("No supported IDEs detected \u2014 pick the one(s) you plan to use.");let n=e.map(s=>{let i=s.detected?" [detected]":"",a=s.supported?`${s.hint}${i}`:`coming soon${i}`;return{value:s.id,label:s.label,hint:a}}),o=await Is({message:"Which IDEs do you use?",options:n,initialValues:[],required:!0});return F(o)&&(pe("Installation cancelled."),process.exit(0)),o}function jp(){let e=z(),t=gr();It(e);let r=[".agents",".codex-plugin",".mcp.json","plugin","package.json","package-lock.json","openclaw","dist","LICENSE","README.md","CHANGELOG.md"];for(let n of r){let o=ce(t,n),s=ce(e,n);Ee(o)&&(Ee(s)&&ja(s,{recursive:!0,force:!0}),La(o,s,{recursive:!0,force:!0}))}}function Ka(e){let t=mn(),r=st(e);ja(r,{recursive:!0,force:!0}),It(r),La(t,r,{recursive:!0,force:!0})}function Fp(){let e=z(),t=ce(e,"package.json");Ee(t)&&Rp("npm install --omit=dev --legacy-peer-deps",{cwd:e,stdio:"pipe",encoding:"utf8",...ue?{shell:process.env.ComSpec??"cmd.exe"}:{}})}function Re(e){let t=lt;try{let r={};if(Ee(t))try{let n=tn(t,"utf-8"),o=JSON.parse(n);o&&typeof o=="object"&&o.env&&typeof o.env=="object"?r={...o.env}:o&&typeof o=="object"&&(r={...o})}catch(n){console.warn("[install] Failed to parse existing settings.json, starting from empty:",n instanceof Error?n.message:String(n)),r={}}else{let n=Ha(t);Ee(n)||Wa(n,{recursive:!0})}for(let[n,o]of Object.entries(e))r[n]=o;return Fa(t,JSON.stringify(r,null,2),"utf-8"),!0}catch(r){return k.error(`Failed to write settings to ${t}: ${r instanceof Error?r.message:String(r)}`),!1}}function Gp(){try{if(!Ee(lt))return;let e=JSON.parse(tn(lt,"utf-8")),r=(e.env&&typeof e.env=="object"?e.env:e).CLAUDE_MEM_CLAUDE_AUTH_METHOD;return r==="subscription"||r==="api-key"||r==="gateway"?r:void 0}catch{return}}function No(){let e=Gp();if(e)return e;let t=Gt();return t.ANTHROPIC_BASE_URL?.trim()?"gateway":t.ANTHROPIC_API_KEY?.trim()?"api-key":"subscription"}async function Hp(){if(!Y)return Re({CLAUDE_MEM_RUNTIME:"worker"}),"worker";let e=await Fe({message:"Which runtime should claude-mem start after install?",options:[{value:"worker",label:"Worker",hint:"stable compatibility path"},{value:"server-beta",label:"Server (beta)",hint:"REST V1, API keys, team-ready storage"}],initialValue:"worker"});return F(e)&&(pe("Installation cancelled."),process.exit(0)),Re({CLAUDE_MEM_RUNTIME:e}),e}async function Jp(e){let t=Mt("CLAUDE_MEM_PROVIDER")||"claude",r=g=>{let C=g??No();Re({CLAUDE_MEM_PROVIDER:"claude",CLAUDE_MEM_CLAUDE_AUTH_METHOD:C})&&k.info("Saved Claude Agent SDK configuration to ~/.claude-mem/settings.json")},n=()=>{r("subscription"),Ht({ANTHROPIC_API_KEY:"",ANTHROPIC_BASE_URL:"",ANTHROPIC_AUTH_TOKEN:""}),k.info("Configured claude-mem to use your logged-in Claude SDK account.")},o=async()=>{let g=Gt().ANTHROPIC_API_KEY||"";if(g.trim().length>0){let w=await Fe({message:"An Anthropic API key is already configured. Keep it or enter a new one?",options:[{value:"keep",label:"Keep existing key"},{value:"replace",label:"Enter a new key (rotate)"}],initialValue:"keep"});if(F(w)){k.warn("API key prompt cancelled \u2014 leaving existing configuration untouched.");return}if(w==="keep"){Ht({ANTHROPIC_API_KEY:g.trim(),ANTHROPIC_BASE_URL:"",ANTHROPIC_AUTH_TOKEN:""}),r("api-key");return}}let C=await xr({message:"Paste your Anthropic API key:",mask:"*",validate:w=>!w||w.trim().length===0?"API key required":void 0});if(F(C)){k.warn("API key prompt cancelled \u2014 leaving existing configuration untouched.");return}Ht({ANTHROPIC_API_KEY:String(C).trim(),ANTHROPIC_BASE_URL:"",ANTHROPIC_AUTH_TOKEN:""}),r("api-key"),k.info("Saved Anthropic API key for the Claude Agent SDK path.")},s=async()=>{let g=Gt(),C=await On({message:"Gateway URL:",placeholder:g.ANTHROPIC_BASE_URL||"http://localhost:4000",defaultValue:g.ANTHROPIC_BASE_URL||"",validate:H=>{let R=H?.trim()??"";if(!R)return"Gateway URL required";try{new URL(R);return}catch{return"Enter a valid URL, for example http://localhost:4000"}}});if(F(C)){k.warn("Gateway setup cancelled \u2014 leaving existing configuration untouched.");return}let w=await xr({message:"Gateway key/token (leave blank to keep current token, or type a new one):",mask:"*"}),x=F(w),D=x?"":String(w).trim(),U={ANTHROPIC_API_KEY:"",ANTHROPIC_BASE_URL:String(C).trim()};!x&&D.length>0&&(U.ANTHROPIC_AUTH_TOKEN=D),Ht(U),r("gateway"),x||D.length===0?k.info("Gateway URL saved; existing gateway token preserved."):k.info("Configured Claude Agent SDK gateway in ~/.claude-mem/.env.")};if(!Y)return e.provider?e.provider==="claude"?(r(),"claude"):(Re({CLAUDE_MEM_PROVIDER:e.provider})&&k.info(`Saved provider=${e.provider} to ~/.claude-mem/settings.json`),k.warn(`Provider=${e.provider} requested non-interactively. API key prompt skipped \u2014 set CLAUDE_MEM_${e.provider.toUpperCase()}_API_KEY and CLAUDE_MEM_PROVIDER in settings.json or env manually if not already set.`),e.provider):t;let i=async()=>{let g=No(),w=await Fe({message:"Do you use a subscription plan or an API key/gateway for the memory agent?",options:[{value:"subscription",label:"Subscription plan (recommended \u2014 uses your logged-in Claude SDK account)"},{value:"api-key",label:"API key or gateway (Anthropic, LiteLLM, or compatible proxy)"}],initialValue:g==="subscription"?"subscription":"api-key"});if(F(w)&&(pe("Installation cancelled."),process.exit(0)),w==="subscription"){n();return}let x=await Fe({message:"How should claude-mem connect?",options:[{value:"direct",label:"Anthropic API key"},{value:"gateway",label:"LiteLLM or custom gateway"}],initialValue:g==="gateway"||Gt().ANTHROPIC_BASE_URL?"gateway":"direct"});F(x)&&(pe("Installation cancelled."),process.exit(0)),x==="gateway"?await s():await o()},a;if(e.provider)a=e.provider;else{let g=await Fe({message:"Which memory provider do you want to use?",options:[{value:"claude",label:"Claude Agent SDK (recommended)"},{value:"gemini",label:"Gemini"},{value:"openrouter",label:"OpenRouter"}],initialValue:t});F(g)&&(pe("Installation cancelled."),process.exit(0)),a=g}if(a==="claude")return await i(),"claude";let c=a==="gemini"?"Gemini":"OpenRouter",l=a==="gemini"?"CLAUDE_MEM_GEMINI_API_KEY":"CLAUDE_MEM_OPENROUTER_API_KEY",p=Mt(l);if(p&&p.trim().length>0)return Re({CLAUDE_MEM_PROVIDER:a})&&k.info(`Saved provider=${a} to ~/.claude-mem/settings.json`),a;let f=await xr({message:`Paste your ${c} API key:`,mask:"*",validate:g=>!g||g.trim().length===0?"API key required":void 0});if(F(f))return k.warn("API key prompt cancelled \u2014 falling back to Claude provider."),r(),"claude";let h=String(f).trim();return Re({CLAUDE_MEM_PROVIDER:a,[l]:h})&&k.info(`Saved provider=${a} to ~/.claude-mem/settings.json`),a}async function Kp(e){let t=new Set(["claude-haiku-4-5-20251001","claude-sonnet-4-6","claude-opus-4-7"]),r=No()==="gateway";if(e.model&&!r){if(!t.has(e.model))throw new Error(`Unknown Claude model: ${e.model}. Allowed: ${[...t].join(", ")}`);Re({CLAUDE_MEM_MODEL:e.model})&&k.info(`Saved Claude model=${e.model} to ~/.claude-mem/settings.json`);return}if(e.model&&r){Re({CLAUDE_MEM_MODEL:e.model})&&k.info(`Saved gateway model=${e.model} to ~/.claude-mem/settings.json`);return}if(!Y)return;let n=Mt("CLAUDE_MEM_MODEL");if(r){let c=await On({message:"Which model should the gateway use?",placeholder:"claude-haiku-4-5-20251001",defaultValue:n||"claude-haiku-4-5-20251001",validate:f=>!f||f.trim().length===0?"Model required":void 0});F(c)&&(pe("Installation cancelled."),process.exit(0));let l=String(c).trim();Re({CLAUDE_MEM_MODEL:l})&&k.info(`Saved gateway model=${l} to ~/.claude-mem/settings.json`);return}let o=t.has(n)?n:"claude-haiku-4-5-20251001",s=await Fe({message:`Which Claude model should claude-mem use to compress observations?
424
- This runs whenever you and Claude touch a file \u2014 keep it cheap and fast.`,options:[{value:"claude-haiku-4-5-20251001",label:"Haiku 4.5 (recommended \u2014 fast, cheap, great for compression)"},{value:"claude-sonnet-4-6",label:"Sonnet 4.6 (balanced quality and cost)"},{value:"claude-opus-4-7",label:"Opus 4.7 (highest quality, most expensive)"}],initialValue:o});F(s)&&(pe("Installation cancelled."),process.exit(0));let i=s;Re({CLAUDE_MEM_MODEL:i})&&k.info(`Saved Claude model=${i} to ~/.claude-mem/settings.json`)}async function Bp(e={}){let t=it();Y?(await Ri(),Lt(m.default.bgCyan(m.default.black(" claude-mem install ")))):console.log("claude-mem install");let r=z(),n=Ee(ce(r,"plugin",".claude-plugin","plugin.json")),o;if(n)try{o=JSON.parse(tn(ce(r,"plugin",".claude-plugin","plugin.json"),"utf-8")).version??void 0}catch(v){console.warn("[install] Failed to read existing plugin version:",v instanceof Error?v.message:String(v))}let s=m.default.dim("\xB7"),i=[`${m.default.bold("claude-mem")} ${m.default.cyan(`v${t}`)}`];if(o&&o!==t?i.push(`installed ${m.default.yellow(`v${o}`)}`):o&&i.push(m.default.dim("reinstall")),k.info(i.join(` ${s} `)),n&&process.stdin.isTTY){let v=await Ut({message:"Overwrite existing installation?",initialValue:!0});(F(v)||!v)&&(pe("Installation cancelled."),process.exit(0))}let a;if(e.ide){a=[e.ide];let v=ft(),b=v.find(I=>I.id===e.ide);b&&!b.supported&&(k.error(`Support for ${b.label} coming soon.`),process.exit(1)),b||(k.error(`Unknown IDE: ${e.ide}`),k.info(`Available IDEs: ${v.map(I=>I.id).join(", ")}`),process.exit(1))}else process.stdin.isTTY?a=await Wp():a=["claude-code"];let c=await Hp();await Jp(e)==="claude"&&await Kp(e);let p="dead",f=a.length>0;{if(f){let b=Mt("CLAUDE_MEM_WORKER_PORT"),I=Y?jt():null;I?.start("Stopping running worker (so we can overwrite cleanly)\u2026");try{let q=await Nr(b,1e4);I?I.stop(q.workerWasRunning?"Stopped running worker before overwrite.":"No worker running \u2014 proceeding."):q.workerWasRunning&&k.info("Stopped running worker before overwrite.")}catch(q){let T=q instanceof Error?q.message:String(q);I?I.stop(`Pre-overwrite worker shutdown failed: ${T}`,1):console.warn("[install] Pre-overwrite worker shutdown failed:",T)}}let v=[{title:"Caching plugin version",task:async b=>(b(`Caching v${t}...`),Ka(t),`Plugin cached (v${t}) ${m.default.green("OK")}`)},{title:"Registering marketplace",task:async()=>(Ip(),`Marketplace registered ${m.default.green("OK")}`)},{title:"Registering plugin",task:async()=>(Op(t),`Plugin registered ${m.default.green("OK")}`)},{title:"Enabling plugin in Claude settings",task:async()=>(Pp(),`Plugin enabled ${m.default.green("OK")}`)},{title:"Setting up runtime (first install can take ~30s)",task:async b=>{b("Checking Bun\u2026");let{version:I}=await zt();b("Checking uv\u2026");let{version:q}=await Xn(),T=st(t);if(!vi(T,t)){b("Installing plugin dependencies\u2026");let{bunPath:ie}=await zt();await Qn(T,ie),_n(T,t,I,q)}return`Runtime ready (Bun ${I}, uv ${q}) ${m.default.green("OK")}`}}];f&&(v.unshift({title:"Copying plugin files to marketplace",task:async b=>(b("Copying to marketplace directory..."),jp(),`Plugin files copied ${m.default.green("OK")}`)}),v.push({title:"Installing marketplace dependencies",task:async b=>{b("Running npm install...");try{return Fp(),`Dependencies installed ${m.default.green("OK")}`}catch(I){return console.warn("[install] npm install error:",I instanceof Error?I.message:String(I)),`Dependencies may need manual install ${m.default.yellow("!")}`}}})),await en(v)}let h=await Np(a),S=null;if(a.includes("claude-code"))try{let v=Ja();S=v?"disabled":"already-disabled",v?k.success("Claude Code: auto-memory disabled (CLAUDE_CODE_DISABLE_AUTO_MEMORY=1)."):k.info("Claude Code: auto-memory already disabled, leaving settings.json untouched.")}catch(v){S="failed",k.warn(`Could not disable Claude Code auto-memory: ${v instanceof Error?v.message:String(v)}`)}let g=!Y||e.noAutoStart;await en([{title:c==="server-beta"?"Starting server beta daemon":"Starting worker daemon",task:async v=>{if(g)return Y?"Skipped (--no-auto-start)":"Skipped (non-TTY)";let b=Number(Mt("CLAUDE_MEM_WORKER_PORT")),I=ce(z(),"plugin","scripts","worker-service.cjs"),q=ce(st(t),"scripts","worker-service.cjs"),T=Ee(I)?I:q;switch(v(`Spawning ${c==="server-beta"?"server beta":"worker"} on port ${b}...`),p=await fi(b,T),p){case"ready":return`${c==="server-beta"?"Server beta":"Worker"} ready at http://localhost:${b} ${m.default.green("OK")}`;case"warming":return`${c==="server-beta"?"Server beta":"Worker"} starting on port ${b} \u2014 finishing in background ${m.default.yellow("\u23F3")}`;case"dead":return`${c==="server-beta"?"Server beta":"Worker"} did not start \u2014 try \`${c==="server-beta"?"npx claude-mem server start":"npx claude-mem start"}\` manually ${m.default.yellow("!")}`}}}]);let C=h.length>0?"Installation Partial":"Installation Complete",w=[`Version: ${m.default.cyan(t)}`,`Plugin dir: ${m.default.cyan(r)}`,`IDEs: ${m.default.cyan(a.join(", "))}`];S==="disabled"?w.push(`Auto-memory: ${m.default.cyan("disabled")} (CLAUDE_CODE_DISABLE_AUTO_MEMORY=1)`):S==="already-disabled"?w.push(`Auto-memory: ${m.default.cyan("already disabled")} (CLAUDE_CODE_DISABLE_AUTO_MEMORY=1)`):S==="failed"&&w.push(`Auto-memory: ${m.default.red("write failed")} (see warning above)`),h.length>0&&w.push(`Failed: ${m.default.red(h.join(", "))}`),Y?Wt(w.join(`
423
+ `;Fa(s,l+f,"utf-8"),k.success(`Added Claude Code to PATH in ${s}`)}catch(p){k.warn(`Could not update ${s}: ${p instanceof Error?p.message:String(p)}`),k.info(`Run manually: echo '${c}' >> ${s}`);return}process.env.PATH=`${t}:${n}`}async function Lp(){let e=ue?'powershell -ExecutionPolicy ByPass -c "irm https://claude.ai/install.ps1 | iex"':"curl -fsSL https://claude.ai/install.sh | bash",t=Y?Wt():null;return t?.start("Installing Claude Code (this can take a few minutes \u2014 downloading the native build)\u2026"),new Promise(r=>{let n="",o=ye(e,[],{shell:ue?process.env.ComSpec??"cmd.exe":"/bin/bash",stdio:t?["inherit","pipe","pipe"]:"inherit"});o.stdout?.on("data",s=>{n+=s.toString()}),o.stderr?.on("data",s=>{n+=s.toString()}),o.on("error",s=>{t?.stop("Claude Code install failed",1),n&&process.stderr.write(n),k.error(`Claude Code install failed: ${s.message}`),k.info("You can install it manually later: https://claude.ai/install.sh"),r(!1)}),o.on("exit",s=>{if(s!==0){t?.stop("Claude Code install failed",1),n&&process.stderr.write(n),k.error(`Claude Code install failed (exit ${s??"unknown"})`),k.info("You can install it manually later: https://claude.ai/install.sh"),r(!1);return}if(t?.stop("Claude Code installed"),!ue)try{Up()}catch(i){k.warn(`Could not auto-apply PATH setup: ${i instanceof Error?i.message:String(i)}`)}r(!0)})})}async function Wp(){let e=mt(),t=e.find(s=>s.id==="claude-code");if(t&&!t.detected){k.warn("Claude Code is not installed. Claude-mem works best in Claude Code, but also works with the IDEs below.");let s=await Fe({message:"Install Claude Code now?",options:[{value:"install",label:"Yes \u2014 install Claude Code (recommended)"},{value:"skip",label:"No \u2014 pick another IDE below"},{value:"cancel",label:"Cancel installation"}],initialValue:"install"});(F(s)||s==="cancel")&&(pe("Installation cancelled."),process.exit(0)),s==="install"&&await Lp()&&(e=mt())}e.filter(s=>s.detected).length===0&&k.warn("No supported IDEs detected \u2014 pick the one(s) you plan to use.");let n=e.map(s=>{let i=s.detected?" [detected]":"",a=s.supported?`${s.hint}${i}`:`coming soon${i}`;return{value:s.id,label:s.label,hint:a}}),o=await Is({message:"Which IDEs do you use?",options:n,initialValues:[],required:!0});return F(o)&&(pe("Installation cancelled."),process.exit(0)),o}function jp(){let e=z(),t=fr();Rt(e);let r=[".agents",".codex-plugin",".mcp.json","plugin","package.json","package-lock.json","openclaw","dist","LICENSE","README.md","CHANGELOG.md"];for(let n of r){let o=ce(t,n),s=ce(e,n);Ee(o)&&(Ee(s)&&ja(s,{recursive:!0,force:!0}),La(o,s,{recursive:!0,force:!0}))}}function Ka(e){let t=pn(),r=ot(e);ja(r,{recursive:!0,force:!0}),Rt(r),La(t,r,{recursive:!0,force:!0})}function Fp(){let e=z(),t=ce(e,"package.json");Ee(t)&&Rp("npm install --omit=dev --legacy-peer-deps",{cwd:e,stdio:"pipe",encoding:"utf8",...ue?{shell:process.env.ComSpec??"cmd.exe"}:{}})}function Re(e){let t=ct;try{let r={};if(Ee(t))try{let n=en(t,"utf-8"),o=JSON.parse(n);o&&typeof o=="object"&&o.env&&typeof o.env=="object"?r={...o.env}:o&&typeof o=="object"&&(r={...o})}catch(n){console.warn("[install] Failed to parse existing settings.json, starting from empty:",n instanceof Error?n.message:String(n)),r={}}else{let n=Ha(t);Ee(n)||Wa(n,{recursive:!0})}for(let[n,o]of Object.entries(e))r[n]=o;return Fa(t,JSON.stringify(r,null,2),"utf-8"),!0}catch(r){return k.error(`Failed to write settings to ${t}: ${r instanceof Error?r.message:String(r)}`),!1}}function Gp(){try{if(!Ee(ct))return;let e=JSON.parse(en(ct,"utf-8")),r=(e.env&&typeof e.env=="object"?e.env:e).CLAUDE_MEM_CLAUDE_AUTH_METHOD;return r==="subscription"||r==="api-key"||r==="gateway"?r:void 0}catch{return}}function No(){let e=Gp();if(e)return e;let t=Ft();return t.ANTHROPIC_BASE_URL?.trim()?"gateway":t.ANTHROPIC_API_KEY?.trim()?"api-key":"subscription"}async function Hp(){if(!Y)return Re({CLAUDE_MEM_RUNTIME:"worker"}),"worker";let e=await Fe({message:"Which runtime should claude-mem start after install?",options:[{value:"worker",label:"Worker",hint:"stable compatibility path"},{value:"server-beta",label:"Server (beta)",hint:"REST V1, API keys, team-ready storage"}],initialValue:"worker"});return F(e)&&(pe("Installation cancelled."),process.exit(0)),Re({CLAUDE_MEM_RUNTIME:e}),e}async function Jp(e){let t=bt("CLAUDE_MEM_PROVIDER")||"claude",r=g=>{let C=g??No();Re({CLAUDE_MEM_PROVIDER:"claude",CLAUDE_MEM_CLAUDE_AUTH_METHOD:C})&&k.info("Saved Claude Agent SDK configuration to ~/.claude-mem/settings.json")},n=()=>{r("subscription"),Gt({ANTHROPIC_API_KEY:"",ANTHROPIC_BASE_URL:"",ANTHROPIC_AUTH_TOKEN:""}),k.info("Configured claude-mem to use your logged-in Claude SDK account.")},o=async()=>{let g=Ft().ANTHROPIC_API_KEY||"";if(g.trim().length>0){let w=await Fe({message:"An Anthropic API key is already configured. Keep it or enter a new one?",options:[{value:"keep",label:"Keep existing key"},{value:"replace",label:"Enter a new key (rotate)"}],initialValue:"keep"});if(F(w)){k.warn("API key prompt cancelled \u2014 leaving existing configuration untouched.");return}if(w==="keep"){Gt({ANTHROPIC_API_KEY:g.trim(),ANTHROPIC_BASE_URL:"",ANTHROPIC_AUTH_TOKEN:""}),r("api-key");return}}let C=await Mr({message:"Paste your Anthropic API key:",mask:"*",validate:w=>!w||w.trim().length===0?"API key required":void 0});if(F(C)){k.warn("API key prompt cancelled \u2014 leaving existing configuration untouched.");return}Gt({ANTHROPIC_API_KEY:String(C).trim(),ANTHROPIC_BASE_URL:"",ANTHROPIC_AUTH_TOKEN:""}),r("api-key"),k.info("Saved Anthropic API key for the Claude Agent SDK path.")},s=async()=>{let g=Ft(),C=await In({message:"Gateway URL:",placeholder:g.ANTHROPIC_BASE_URL||"http://localhost:4000",defaultValue:g.ANTHROPIC_BASE_URL||"",validate:H=>{let R=H?.trim()??"";if(!R)return"Gateway URL required";try{new URL(R);return}catch{return"Enter a valid URL, for example http://localhost:4000"}}});if(F(C)){k.warn("Gateway setup cancelled \u2014 leaving existing configuration untouched.");return}let w=await Mr({message:"Gateway key/token (leave blank to keep current token, or type a new one):",mask:"*"}),x=F(w),D=x?"":String(w).trim(),U={ANTHROPIC_API_KEY:"",ANTHROPIC_BASE_URL:String(C).trim()};!x&&D.length>0&&(U.ANTHROPIC_AUTH_TOKEN=D),Gt(U),r("gateway"),x||D.length===0?k.info("Gateway URL saved; existing gateway token preserved."):k.info("Configured Claude Agent SDK gateway in ~/.claude-mem/.env.")};if(!Y)return e.provider?e.provider==="claude"?(r(),"claude"):(Re({CLAUDE_MEM_PROVIDER:e.provider})&&k.info(`Saved provider=${e.provider} to ~/.claude-mem/settings.json`),k.warn(`Provider=${e.provider} requested non-interactively. API key prompt skipped \u2014 set CLAUDE_MEM_${e.provider.toUpperCase()}_API_KEY and CLAUDE_MEM_PROVIDER in settings.json or env manually if not already set.`),e.provider):t;let i=async()=>{let g=No(),w=await Fe({message:"Do you use a subscription plan or an API key/gateway for the memory agent?",options:[{value:"subscription",label:"Subscription plan (recommended \u2014 uses your logged-in Claude SDK account)"},{value:"api-key",label:"API key or gateway (Anthropic, LiteLLM, or compatible proxy)"}],initialValue:g==="subscription"?"subscription":"api-key"});if(F(w)&&(pe("Installation cancelled."),process.exit(0)),w==="subscription"){n();return}let x=await Fe({message:"How should claude-mem connect?",options:[{value:"direct",label:"Anthropic API key"},{value:"gateway",label:"LiteLLM or custom gateway"}],initialValue:g==="gateway"||Ft().ANTHROPIC_BASE_URL?"gateway":"direct"});F(x)&&(pe("Installation cancelled."),process.exit(0)),x==="gateway"?await s():await o()},a;if(e.provider)a=e.provider;else{let g=await Fe({message:"Which memory provider do you want to use?",options:[{value:"claude",label:"Claude Agent SDK (recommended)"},{value:"gemini",label:"Gemini"},{value:"openrouter",label:"OpenRouter"}],initialValue:t});F(g)&&(pe("Installation cancelled."),process.exit(0)),a=g}if(a==="claude")return await i(),"claude";let c=a==="gemini"?"Gemini":"OpenRouter",l=a==="gemini"?"CLAUDE_MEM_GEMINI_API_KEY":"CLAUDE_MEM_OPENROUTER_API_KEY",p=bt(l);if(p&&p.trim().length>0)return Re({CLAUDE_MEM_PROVIDER:a})&&k.info(`Saved provider=${a} to ~/.claude-mem/settings.json`),a;let f=await Mr({message:`Paste your ${c} API key:`,mask:"*",validate:g=>!g||g.trim().length===0?"API key required":void 0});if(F(f))return k.warn("API key prompt cancelled \u2014 falling back to Claude provider."),r(),"claude";let h=String(f).trim();return Re({CLAUDE_MEM_PROVIDER:a,[l]:h})&&k.info(`Saved provider=${a} to ~/.claude-mem/settings.json`),a}async function Kp(e){let t=new Set(["claude-haiku-4-5-20251001","claude-sonnet-4-6","claude-opus-4-7"]),r=No()==="gateway";if(e.model&&!r){if(!t.has(e.model))throw new Error(`Unknown Claude model: ${e.model}. Allowed: ${[...t].join(", ")}`);Re({CLAUDE_MEM_MODEL:e.model})&&k.info(`Saved Claude model=${e.model} to ~/.claude-mem/settings.json`);return}if(e.model&&r){Re({CLAUDE_MEM_MODEL:e.model})&&k.info(`Saved gateway model=${e.model} to ~/.claude-mem/settings.json`);return}if(!Y)return;let n=bt("CLAUDE_MEM_MODEL");if(r){let c=await In({message:"Which model should the gateway use?",placeholder:"claude-haiku-4-5-20251001",defaultValue:n||"claude-haiku-4-5-20251001",validate:f=>!f||f.trim().length===0?"Model required":void 0});F(c)&&(pe("Installation cancelled."),process.exit(0));let l=String(c).trim();Re({CLAUDE_MEM_MODEL:l})&&k.info(`Saved gateway model=${l} to ~/.claude-mem/settings.json`);return}let o=t.has(n)?n:"claude-haiku-4-5-20251001",s=await Fe({message:`Which Claude model should claude-mem use to compress observations?
424
+ This runs whenever you and Claude touch a file \u2014 keep it cheap and fast.`,options:[{value:"claude-haiku-4-5-20251001",label:"Haiku 4.5 (recommended \u2014 fast, cheap, great for compression)"},{value:"claude-sonnet-4-6",label:"Sonnet 4.6 (balanced quality and cost)"},{value:"claude-opus-4-7",label:"Opus 4.7 (highest quality, most expensive)"}],initialValue:o});F(s)&&(pe("Installation cancelled."),process.exit(0));let i=s;Re({CLAUDE_MEM_MODEL:i})&&k.info(`Saved Claude model=${i} to ~/.claude-mem/settings.json`)}async function Bp(e={}){let t=st();Y?(await Ri(),Ut(m.default.bgCyan(m.default.black(" claude-mem install ")))):console.log("claude-mem install");let r=z(),n=Ee(ce(r,"plugin",".claude-plugin","plugin.json")),o;if(n)try{o=JSON.parse(en(ce(r,"plugin",".claude-plugin","plugin.json"),"utf-8")).version??void 0}catch(v){console.warn("[install] Failed to read existing plugin version:",v instanceof Error?v.message:String(v))}let s=m.default.dim("\xB7"),i=[`${m.default.bold("claude-mem")} ${m.default.cyan(`v${t}`)}`];if(o&&o!==t?i.push(`installed ${m.default.yellow(`v${o}`)}`):o&&i.push(m.default.dim("reinstall")),k.info(i.join(` ${s} `)),n&&process.stdin.isTTY){let v=await Dt({message:"Overwrite existing installation?",initialValue:!0});(F(v)||!v)&&(pe("Installation cancelled."),process.exit(0))}let a;if(e.ide){a=[e.ide];let v=mt(),b=v.find(I=>I.id===e.ide);b&&!b.supported&&(k.error(`Support for ${b.label} coming soon.`),process.exit(1)),b||(k.error(`Unknown IDE: ${e.ide}`),k.info(`Available IDEs: ${v.map(I=>I.id).join(", ")}`),process.exit(1))}else process.stdin.isTTY?a=await Wp():a=["claude-code"];let c=await Hp();await Jp(e)==="claude"&&await Kp(e);let p="dead",f=a.length>0;{if(f){let b=bt("CLAUDE_MEM_WORKER_PORT"),I=Y?Wt():null;I?.start("Stopping running worker (so we can overwrite cleanly)\u2026");try{let q=await Ar(b,1e4);I?I.stop(q.workerWasRunning?"Stopped running worker before overwrite.":"No worker running \u2014 proceeding."):q.workerWasRunning&&k.info("Stopped running worker before overwrite.")}catch(q){let T=q instanceof Error?q.message:String(q);I?I.stop(`Pre-overwrite worker shutdown failed: ${T}`,1):console.warn("[install] Pre-overwrite worker shutdown failed:",T)}}let v=[{title:"Caching plugin version",task:async b=>(b(`Caching v${t}...`),Ka(t),`Plugin cached (v${t}) ${m.default.green("OK")}`)},{title:"Registering marketplace",task:async()=>(Ip(),`Marketplace registered ${m.default.green("OK")}`)},{title:"Registering plugin",task:async()=>(Op(t),`Plugin registered ${m.default.green("OK")}`)},{title:"Enabling plugin in Claude settings",task:async()=>(Pp(),`Plugin enabled ${m.default.green("OK")}`)},{title:"Setting up runtime (first install can take ~30s)",task:async b=>{b("Checking Bun\u2026");let{version:I}=await Vt();b("Checking uv\u2026");let{version:q}=await Xn(),T=ot(t);if(!vi(T,t)){b("Installing plugin dependencies\u2026");let{bunPath:ie}=await Vt();await Qn(T,ie),_n(T,t,I,q)}return`Runtime ready (Bun ${I}, uv ${q}) ${m.default.green("OK")}`}}];f&&(v.unshift({title:"Copying plugin files to marketplace",task:async b=>(b("Copying to marketplace directory..."),jp(),`Plugin files copied ${m.default.green("OK")}`)}),v.push({title:"Installing marketplace dependencies",task:async b=>{b("Running npm install...");try{return Fp(),`Dependencies installed ${m.default.green("OK")}`}catch(I){return console.warn("[install] npm install error:",I instanceof Error?I.message:String(I)),`Dependencies may need manual install ${m.default.yellow("!")}`}}})),await $r(v)}let h=await Np(a),S=null;if(a.includes("claude-code"))try{let v=Ja();S=v?"disabled":"already-disabled",v?k.success("Claude Code: auto-memory disabled (CLAUDE_CODE_DISABLE_AUTO_MEMORY=1)."):k.info("Claude Code: auto-memory already disabled, leaving settings.json untouched.")}catch(v){S="failed",k.warn(`Could not disable Claude Code auto-memory: ${v instanceof Error?v.message:String(v)}`)}let g=!Y||e.noAutoStart;await $r([{title:c==="server-beta"?"Starting server beta daemon":"Starting worker daemon",task:async v=>{if(g)return Y?"Skipped (--no-auto-start)":"Skipped (non-TTY)";let b=Number(bt("CLAUDE_MEM_WORKER_PORT")),I=ce(z(),"plugin","scripts","worker-service.cjs"),q=ce(ot(t),"scripts","worker-service.cjs"),T=Ee(I)?I:q;switch(v(`Spawning ${c==="server-beta"?"server beta":"worker"} on port ${b}...`),p=await fi(b,T),p){case"ready":return`${c==="server-beta"?"Server beta":"Worker"} ready at http://localhost:${b} ${m.default.green("OK")}`;case"warming":return`${c==="server-beta"?"Server beta":"Worker"} starting on port ${b} \u2014 finishing in background ${m.default.yellow("\u23F3")}`;case"dead":return`${c==="server-beta"?"Server beta":"Worker"} did not start \u2014 try \`${c==="server-beta"?"npx claude-mem server start":"npx claude-mem start"}\` manually ${m.default.yellow("!")}`}}}]);let C=h.length>0?"Installation Partial":"Installation Complete",w=[`Version: ${m.default.cyan(t)}`,`Plugin dir: ${m.default.cyan(r)}`,`IDEs: ${m.default.cyan(a.join(", "))}`];S==="disabled"?w.push(`Auto-memory: ${m.default.cyan("disabled")} (CLAUDE_CODE_DISABLE_AUTO_MEMORY=1)`):S==="already-disabled"?w.push(`Auto-memory: ${m.default.cyan("already disabled")} (CLAUDE_CODE_DISABLE_AUTO_MEMORY=1)`):S==="failed"&&w.push(`Auto-memory: ${m.default.red("write failed")} (see warning above)`),h.length>0&&w.push(`Failed: ${m.default.red(h.join(", "))}`),Y?Lt(w.join(`
425
425
  `),C):(console.log(`
426
- ${C}`),w.forEach(v=>console.log(` ${v}`)));let x=Mt("CLAUDE_MEM_WORKER_PORT"),D=x,U=!1;if(!g){let v=Y?jt():null;v?.start(`Verifying worker on port ${x}\u2026`);try{let b=await fetch(`http://127.0.0.1:${x}/api/health`,{signal:AbortSignal.timeout(3e3)});if(b.ok){U=!0;try{let I=await b.json();I&&(typeof I.port=="number"||typeof I.port=="string")&&(D=I.port)}catch{}}v?.stop(U?`Worker ready at http://localhost:${D}`:`Worker reachable but not ready on port ${x}`)}catch{v?.stop(`Worker not yet responding on port ${x} (still starting)`)}}let H=p,R=H!=="dead"||U,L=c==="server-beta"?"Server beta":"Worker",j=c==="server-beta"?"npx claude-mem server start":"npx claude-mem start",W=g?`${m.default.yellow("!")} ${L} autostart skipped \u2014 start it manually with ${m.default.bold(j)}`:U||H==="ready"?`${m.default.green("\u2713")} ${L} running at ${m.default.underline(`http://localhost:${D}`)}`:`${m.default.yellow("\u23F3")} ${L} starting at ${m.default.underline(`http://localhost:${D}`)} \u2014 give it ~30s, then refresh`,Q=g?[W,"",`${m.default.bold("First success:")} once the worker is running, keep ${m.default.underline(`http://localhost:${x}`)} open in a browser, then open Claude Code in any project. Observations stream in as Claude reads, edits, and runs commands.`,"",`${m.default.bold("Two paths from here:")}`,` ${m.default.cyan("A.")} Just start working. Memory builds passively from your first prompt. (Recommended.)`,` ${m.default.cyan("B.")} Front-load it: open Claude Code and run ${m.default.bold("/learn-codebase")} to ingest the whole repo (~5 min, optional).`,"","Memory injection starts on your second session in a project.",`Everything stays in ${m.default.cyan("~/.claude-mem")} on this machine.`,"",`${m.default.dim("How it works: /how-it-works \xB7 Disable first-session hint: CLAUDE_MEM_WELCOME_HINT_ENABLED=false")}`,`${m.default.dim("Note: close all Claude Code sessions before uninstalling, or ~/.claude-mem will be recreated by active hooks.")}`]:R?[W,"",`${m.default.bold("First success:")} keep that URL open in a browser, then open Claude Code in any project. Observations stream in as Claude reads, edits, and runs commands.`,"",`${m.default.bold("Two paths from here:")}`,` ${m.default.cyan("A.")} Just start working. Memory builds passively from your first prompt. (Recommended.)`,` ${m.default.cyan("B.")} Front-load it: open Claude Code and run ${m.default.bold("/learn-codebase")} to ingest the whole repo (~5 min, optional).`,"","Memory injection starts on your second session in a project.",`Everything stays in ${m.default.cyan("~/.claude-mem")} on this machine.`,"",`${m.default.dim("How it works: /how-it-works \xB7 Disable first-session hint: CLAUDE_MEM_WELCOME_HINT_ENABLED=false")}`,`${m.default.dim("Note: close all Claude Code sessions before uninstalling, or ~/.claude-mem will be recreated by active hooks.")}`]:[`${m.default.yellow("!")} Worker not yet ready on port ${m.default.cyan(String(x))} -- still starting up; check ${m.default.bold("claude-mem status")} later, or start manually: ${m.default.bold("npx claude-mem start")}`,"",`${m.default.bold("First success:")} keep ${m.default.underline(`http://localhost:${x}`)} open in a browser, then open Claude Code in any project. Observations stream in as Claude reads, edits, and runs commands.`,"",`${m.default.bold("Two paths from here:")}`,` ${m.default.cyan("A.")} Just start working. Memory builds passively from your first prompt. (Recommended.)`,` ${m.default.cyan("B.")} Front-load it: open Claude Code and run ${m.default.bold("/learn-codebase")} to ingest the whole repo (~5 min, optional).`,"","Memory injection starts on your second session in a project.",`Everything stays in ${m.default.cyan("~/.claude-mem")} on this machine.`,"",`${m.default.dim("How it works: /how-it-works \xB7 Disable first-session hint: CLAUDE_MEM_WELCOME_HINT_ENABLED=false")}`,`${m.default.dim("Note: close all Claude Code sessions before uninstalling, or ~/.claude-mem will be recreated by active hooks.")}`];Y?(Wt(Q.join(`
426
+ ${C}`),w.forEach(v=>console.log(` ${v}`)));let x=bt("CLAUDE_MEM_WORKER_PORT"),D=x,U=!1;if(!g){let v=Y?Wt():null;v?.start(`Verifying worker on port ${x}\u2026`);try{let b=await fetch(`http://127.0.0.1:${x}/api/health`,{signal:AbortSignal.timeout(3e3)});if(b.ok){U=!0;try{let I=await b.json();I&&(typeof I.port=="number"||typeof I.port=="string")&&(D=I.port)}catch{}}v?.stop(U?`Worker ready at http://localhost:${D}`:`Worker reachable but not ready on port ${x}`)}catch{v?.stop(`Worker not yet responding on port ${x} (still starting)`)}}let H=p,R=H!=="dead"||U,L=c==="server-beta"?"Server beta":"Worker",j=c==="server-beta"?"npx claude-mem server start":"npx claude-mem start",W=g?`${m.default.yellow("!")} ${L} autostart skipped \u2014 start it manually with ${m.default.bold(j)}`:U||H==="ready"?`${m.default.green("\u2713")} ${L} running at ${m.default.underline(`http://localhost:${D}`)}`:`${m.default.yellow("\u23F3")} ${L} starting at ${m.default.underline(`http://localhost:${D}`)} \u2014 give it ~30s, then refresh`,Q=g?[W,"",`${m.default.bold("First success:")} once the worker is running, keep ${m.default.underline(`http://localhost:${x}`)} open in a browser, then open Claude Code in any project. Observations stream in as Claude reads, edits, and runs commands.`,"",`${m.default.bold("Two paths from here:")}`,` ${m.default.cyan("A.")} Just start working. Memory builds passively from your first prompt. (Recommended.)`,` ${m.default.cyan("B.")} Front-load it: open Claude Code and run ${m.default.bold("/learn-codebase")} to ingest the whole repo (~5 min, optional).`,"","Memory injection starts on your second session in a project.",`Everything stays in ${m.default.cyan("~/.claude-mem")} on this machine.`,"",`${m.default.dim("How it works: /how-it-works \xB7 Disable first-session hint: CLAUDE_MEM_WELCOME_HINT_ENABLED=false")}`,`${m.default.dim("Note: close all Claude Code sessions before uninstalling, or ~/.claude-mem will be recreated by active hooks.")}`]:R?[W,"",`${m.default.bold("First success:")} keep that URL open in a browser, then open Claude Code in any project. Observations stream in as Claude reads, edits, and runs commands.`,"",`${m.default.bold("Two paths from here:")}`,` ${m.default.cyan("A.")} Just start working. Memory builds passively from your first prompt. (Recommended.)`,` ${m.default.cyan("B.")} Front-load it: open Claude Code and run ${m.default.bold("/learn-codebase")} to ingest the whole repo (~5 min, optional).`,"","Memory injection starts on your second session in a project.",`Everything stays in ${m.default.cyan("~/.claude-mem")} on this machine.`,"",`${m.default.dim("How it works: /how-it-works \xB7 Disable first-session hint: CLAUDE_MEM_WELCOME_HINT_ENABLED=false")}`,`${m.default.dim("Note: close all Claude Code sessions before uninstalling, or ~/.claude-mem will be recreated by active hooks.")}`]:[`${m.default.yellow("!")} Worker not yet ready on port ${m.default.cyan(String(x))} -- still starting up; check ${m.default.bold("claude-mem status")} later, or start manually: ${m.default.bold("npx claude-mem start")}`,"",`${m.default.bold("First success:")} keep ${m.default.underline(`http://localhost:${x}`)} open in a browser, then open Claude Code in any project. Observations stream in as Claude reads, edits, and runs commands.`,"",`${m.default.bold("Two paths from here:")}`,` ${m.default.cyan("A.")} Just start working. Memory builds passively from your first prompt. (Recommended.)`,` ${m.default.cyan("B.")} Front-load it: open Claude Code and run ${m.default.bold("/learn-codebase")} to ingest the whole repo (~5 min, optional).`,"","Memory injection starts on your second session in a project.",`Everything stays in ${m.default.cyan("~/.claude-mem")} on this machine.`,"",`${m.default.dim("How it works: /how-it-works \xB7 Disable first-session hint: CLAUDE_MEM_WELCOME_HINT_ENABLED=false")}`,`${m.default.dim("Note: close all Claude Code sessions before uninstalling, or ~/.claude-mem will be recreated by active hooks.")}`];Y?(Lt(Q.join(`
427
427
  `),"Next Steps"),h.length>0?je(m.default.yellow("claude-mem installed with some IDE setup failures.")):je(m.default.green("claude-mem installed successfully!"))):(console.log(`
428
428
  Next Steps`),Q.forEach(v=>console.log(` ${v}`)),h.length>0?(console.log(`
429
429
  claude-mem installed with some IDE setup failures.`),process.exitCode=1):console.log(`
430
- claude-mem installed successfully!`))}async function Yp(){let e=it(),t=st(e);Y?Lt(m.default.bgCyan(m.default.black(" claude-mem repair "))):console.log("claude-mem repair"),k.info(`Version: ${m.default.cyan(e)}`),await en([{title:"Setting up runtime",task:async r=>{r("Checking Bun\u2026");let{version:n}=await zt();r("Checking uv\u2026");let{version:o}=await Xn();Ee(ce(t,"package.json"))||(r("Cache missing \u2014 repopulating from npm package\u2026"),Ka(e)),r("Reinstalling plugin dependencies\u2026");let{bunPath:s}=await zt();return await Qn(t,s),_n(t,e,n,o),`Runtime ready (Bun ${n}, uv ${o}) ${m.default.green("OK")}`}}]),Y?je(m.default.green("claude-mem repair complete.")):console.log("claude-mem repair complete.")}var m,Y,k,nn=E(()=>{"use strict";Pn();m=Ze(rt(),1);at();Ge();re();Js();gi();Ci();Ii();Xe();Tt();eo();Pi();Y=process.stdin.isTTY===!0;k={info:e=>Y?te.info(e):console.log(` ${e}`),success:e=>Y?te.success(e):console.log(` ${e}`),warn:e=>Y?te.warn(e):console.warn(` ${e}`),error:e=>Y?te.error(e):console.error(` ${e}`)}});var Ya={};Se(Ya,{runUninstallCommand:()=>tm});import{existsSync as et,readFileSync as Vp,readdirSync as Do,rmSync as lr,writeFileSync as zp}from"fs";import{homedir as Ba}from"os";import{join as Ie}from"path";function Zp(){let e=z();return et(e)?(lr(e,{recursive:!0,force:!0}),!0):!1}function qp(){let e=Ie(qe(),"cache","thedotmack","claude-mem");return et(e)?(lr(e,{recursive:!0,force:!0}),!0):!1}function Xp(){let e=le(nt(),{});e.thedotmack&&(delete e.thedotmack,Ne(nt(),e))}function Qp(){let e=le(ot(),{});e.plugins?.["claude-mem@thedotmack"]&&(delete e.plugins["claude-mem@thedotmack"],Ne(ot(),e))}function _p(){let e=Ba(),t=[Ie(e,".bashrc"),Ie(e,".zshrc"),Ie(e,"Documents","PowerShell","Microsoft.PowerShell_profile.ps1")],r=/^\s*alias\s+claude-mem\s*=/;for(let n of t){if(!et(n))continue;let o;try{o=Vp(n,"utf-8")}catch(a){console.warn(`[uninstall] Could not read ${n}:`,a instanceof Error?a.message:String(a));continue}let s=o.split(`
430
+ claude-mem installed successfully!`))}async function Yp(){let e=st(),t=ot(e);Y?Ut(m.default.bgCyan(m.default.black(" claude-mem repair "))):console.log("claude-mem repair"),k.info(`Version: ${m.default.cyan(e)}`),await $r([{title:"Setting up runtime",task:async r=>{r("Checking Bun\u2026");let{version:n}=await Vt();r("Checking uv\u2026");let{version:o}=await Xn();Ee(ce(t,"package.json"))||(r("Cache missing \u2014 repopulating from npm package\u2026"),Ka(e)),r("Reinstalling plugin dependencies\u2026");let{bunPath:s}=await Vt();return await Qn(t,s),_n(t,e,n,o),`Runtime ready (Bun ${n}, uv ${o}) ${m.default.green("OK")}`}}]),Y?je(m.default.green("claude-mem repair complete.")):console.log("claude-mem repair complete.")}var m,Y,k,rn=E(()=>{"use strict";On();m=ze(tt(),1);it();Ge();re();Js();gi();Ci();Ii();qe();xt();eo();Pi();Y=process.stdin.isTTY===!0;k={info:e=>Y?te.info(e):console.log(` ${e}`),success:e=>Y?te.success(e):console.log(` ${e}`),warn:e=>Y?te.warn(e):console.warn(` ${e}`),error:e=>Y?te.error(e):console.error(` ${e}`)}});var Ya={};Se(Ya,{runUninstallCommand:()=>tm});import{existsSync as $e,readFileSync as Vp,readdirSync as Do,rmSync as cr,writeFileSync as zp}from"fs";import{homedir as Ba}from"os";import{join as Ie}from"path";function Zp(){let e=z();return $e(e)?(cr(e,{recursive:!0,force:!0}),!0):!1}function qp(){let e=Ie(Ze(),"cache","thedotmack","claude-mem");return $e(e)?(cr(e,{recursive:!0,force:!0}),!0):!1}function Xp(){let e=le(rt(),{});e.thedotmack&&(delete e.thedotmack,Ne(rt(),e))}function Qp(){let e=le(nt(),{});e.plugins?.["claude-mem@thedotmack"]&&(delete e.plugins["claude-mem@thedotmack"],Ne(nt(),e))}function _p(){let e=Ba(),t=[Ie(e,".bashrc"),Ie(e,".zshrc"),Ie(e,"Documents","PowerShell","Microsoft.PowerShell_profile.ps1")],r=/^\s*alias\s+claude-mem\s*=/;for(let n of t){if(!$e(n))continue;let o;try{o=Vp(n,"utf-8")}catch(a){console.warn(`[uninstall] Could not read ${n}:`,a instanceof Error?a.message:String(a));continue}let s=o.split(`
431
431
  `),i=s.filter(a=>!r.test(a));if(i.length!==s.length)try{zp(n,i.join(`
432
- `)),console.error(`Removed legacy claude-mem alias from ${n}`)}catch(a){console.warn(`[uninstall] Could not rewrite ${n}:`,a instanceof Error?a.message:String(a))}}}function $p(){let e=le(Ue(),{});e.enabledPlugins?.["claude-mem@thedotmack"]!==void 0&&(delete e.enabledPlugins["claude-mem@thedotmack"],Ne(Ue(),e))}function em(){let e=Ba(),t=0,r=Ie(e,".npm","_npx");if(et(r)){let s=[];try{s=Do(r)}catch(i){console.warn(`[uninstall] Could not read ${r}:`,i instanceof Error?i.message:String(i))}for(let i of s){let a=Ie(r,i,"node_modules","claude-mem");if(et(a))try{lr(a,{recursive:!0,force:!0}),t++}catch(c){console.warn(`[uninstall] Could not remove ${a}:`,c instanceof Error?c.message:String(c))}}}let n=Ie(e,".cache","claude-cli-nodejs");if(et(n)){let s=[];try{s=Do(n)}catch(i){console.warn(`[uninstall] Could not read ${n}:`,i instanceof Error?i.message:String(i))}for(let i of s){let a=Ie(n,i),c=[];try{c=Do(a)}catch(l){console.warn(`[uninstall] Could not read ${a}:`,l instanceof Error?l.message:String(l));continue}for(let l of c){if(!l.startsWith("mcp-logs-plugin-claude-mem-"))continue;let p=Ie(a,l);try{lr(p,{recursive:!0,force:!0}),t++}catch(f){console.warn(`[uninstall] Could not remove ${p}:`,f instanceof Error?f.message:String(f))}}}}let o=Ie(e,".claude","plugins","data","claude-mem-thedotmack");if(et(o))try{lr(o,{recursive:!0,force:!0}),t++}catch(s){console.warn(`[uninstall] Could not remove ${o}:`,s instanceof Error?s.message:String(s))}return t}async function tm(){if(Lt(se.default.bgRed(se.default.white(" claude-mem uninstall "))),hr()){if(process.stdin.isTTY){let r=await Ut({message:"Are you sure you want to uninstall claude-mem?",initialValue:!1});if(F(r)||!r){pe("Uninstall cancelled.");return}}}else if(te.warn("claude-mem does not appear to be installed."),process.stdin.isTTY){let r=await Ut({message:"Clean up any remaining registration data anyway?",initialValue:!1});if(F(r)||!r){je("Nothing to do.");return}}else{je("Nothing to do.");return}let e=Z.get("CLAUDE_MEM_WORKER_PORT");try{(await Nr(e,1e4)).workerWasRunning&&te.info("Worker service stopped.")}catch(r){console.warn("[uninstall] Worker shutdown attempt failed:",r instanceof Error?r.message:String(r))}await Tr([{title:"Removing marketplace directory",task:async()=>Zp()?`Marketplace directory removed ${se.default.green("OK")}`:`Marketplace directory not found ${se.default.dim("skipped")}`},{title:"Removing cache directory",task:async()=>qp()?`Cache directory removed ${se.default.green("OK")}`:`Cache directory not found ${se.default.dim("skipped")}`},{title:"Removing marketplace registration",task:async()=>(Xp(),`Marketplace registration removed ${se.default.green("OK")}`)},{title:"Removing plugin registration",task:async()=>(Qp(),`Plugin registration removed ${se.default.green("OK")}`)},{title:"Removing from Claude settings",task:async()=>($p(),`Claude settings updated ${se.default.green("OK")}`)},{title:"Removing legacy claude-mem shell alias",task:async()=>(_p(),`Legacy alias check complete ${se.default.green("OK")}`)},{title:"Removing stray claude-mem caches and logs",task:async()=>{let r=em();return r>0?`Stray paths removed: ${r} ${se.default.green("OK")}`:`No stray paths found ${se.default.dim("skipped")}`}}]);let t=[{label:"Gemini CLI hooks",fn:async()=>{let{uninstallGeminiCliHooks:r}=await Promise.resolve().then(()=>(mo(),po));return r()}},{label:"Windsurf hooks",fn:async()=>{let{uninstallWindsurfHooks:r}=await Promise.resolve().then(()=>(ko(),Co));return r()}},{label:"OpenCode plugin",fn:async()=>{let{uninstallOpenCodePlugin:r}=await Promise.resolve().then(()=>(yo(),So));return r()}},{label:"OpenClaw plugin",fn:async()=>{let{uninstallOpenClawPlugin:r}=await Promise.resolve().then(()=>(To(),xo));return r()}},{label:"Codex CLI",fn:async()=>{let{uninstallCodexCli:r}=await Promise.resolve().then(()=>(Ao(),Po));return r()}}];for(let{label:r,fn:n}of t)try{await n()===0&&te.info(`${r}: removed.`)}catch(o){console.warn(`[uninstall] ${r} cleanup failed:`,o instanceof Error?o.message:String(o))}Wt([`Your data directory at ${se.default.cyan("~/.claude-mem")} was preserved.`,"To remove it manually: rm -rf ~/.claude-mem"].join(`
433
- `),"Note"),je(se.default.green("claude-mem has been uninstalled."))}var se,Va=E(()=>{"use strict";Pn();se=Ze(rt(),1);Xe();Tt();Ge();eo()});import{spawnSync as rm}from"child_process";import{existsSync as nm}from"fs";import{homedir as Uo}from"os";import{join as Lo}from"path";function om(){return ue?[Lo(Uo(),".bun","bin","bun.exe"),Lo(process.env.USERPROFILE||Uo(),".bun","bin","bun.exe")]:[Lo(Uo(),".bun","bin","bun"),"/usr/local/bin/bun","/opt/homebrew/bin/bun","/home/linuxbrew/.linuxbrew/bin/bun"]}function za(){let t=rm(ue?"where":"which",["bun"],{encoding:"utf-8",stdio:["pipe","pipe","pipe"],shell:ue});if(t.status===0&&t.stdout.trim())return"bun";for(let r of om())if(nm(r))return r;return null}var Za=E(()=>{"use strict";Xe()});var De={};Se(De,{runAdoptCommand:()=>im,runCleanupCommand:()=>am,runRestartCommand:()=>Bo,runSearchCommand:()=>cm,runServerApiKeyCommand:()=>Vo,runServerBetaRestartCommand:()=>Go,runServerBetaStartCommand:()=>jo,runServerBetaStatusCommand:()=>Ho,runServerBetaStopCommand:()=>Fo,runStartCommand:()=>Jo,runStatusCommand:()=>Yo,runStopCommand:()=>Ko,runTranscriptWatchCommand:()=>lm});import{existsSync as on}from"fs";import{join as Wo}from"path";function ur(){hr()||(console.error(V.default.red("claude-mem is not installed.")),console.error(`Run: ${V.default.bold("npx claude-mem install")}`),process.exit(1))}function sn(){let e=za();return e||(console.error(V.default.red("Bun not found.")),console.error("Install Bun: https://bun.sh"),console.error("After installation, restart your terminal."),process.exit(1)),e}function qa(){return Wo(z(),"plugin","scripts","worker-service.cjs")}function sm(){return Wo(z(),"plugin","scripts","server-beta-service.cjs")}function tt(e,t=[]){ur();let r=sn(),n=qa();on(n)||(console.error(V.default.red(`Worker script not found at: ${n}`)),console.error("The installation may be corrupted. Try: npx claude-mem install"),process.exit(1));let o=[n,e,...t],s=ye(r,o,{stdio:"inherit",cwd:z(),env:process.env});s.on("error",i=>{console.error(V.default.red(`Failed to start Bun: ${i.message}`)),process.exit(1)}),s.on("close",i=>{process.exit(i??0)})}function an(e){ur();let t=sn(),r=sm();on(r)||(console.error(V.default.red(`Server beta script not found at: ${r}`)),console.error("The installation may be corrupted. Try: npx claude-mem install"),process.exit(1));let n=ye(t,[r,e],{stdio:"inherit",cwd:z(),env:process.env});n.on("error",o=>{console.error(V.default.red(`Failed to start Bun: ${o.message}`)),process.exit(1)}),n.on("close",o=>{process.exit(o??0)})}function jo(){an("start")}function Fo(){an("stop")}function Go(){an("restart")}function Ho(){an("status")}function Jo(){tt("start")}function Ko(){tt("stop")}function Bo(){tt("restart")}function Yo(){tt("status")}function Vo(e=[]){tt("server",["api-key",...e])}function im(e=[]){ur();let t=sn(),r=qa();on(r)||(console.error(V.default.red(`Worker script not found at: ${r}`)),console.error("The installation may be corrupted. Try: npx claude-mem install"),process.exit(1));let n=process.cwd(),o=[r,"adopt","--cwd",n,...e],s=ye(t,o,{stdio:"inherit",cwd:z(),env:process.env});s.on("error",i=>{console.error(V.default.red(`Failed to start Bun: ${i.message}`)),process.exit(1)}),s.on("close",i=>{process.exit(i??0)})}function am(e=[]){tt("cleanup",e)}async function cm(e){ur();let t=e.join(" ").trim();t||(console.error(V.default.red("Usage: npx claude-mem search <query>")),process.exit(1));let n=`http://127.0.0.1:${Z.get("CLAUDE_MEM_WORKER_PORT")}/api/search?query=${encodeURIComponent(t)}`,o;try{o=await fetch(n)}catch(i){let a=i instanceof Error?i.message:String(i);((i instanceof Error?i.cause:void 0)?.code==="ECONNREFUSED"||a.includes("ECONNREFUSED"))&&(console.error(V.default.red("Worker is not running.")),console.error(`Start it with: ${V.default.bold("npx claude-mem start")}`),process.exit(1)),console.error(V.default.red(`Search failed: ${a}`)),process.exit(1)}o.ok||(o.status===404&&(console.error(V.default.red("Search endpoint not found. Is the worker running?")),console.error(`Try: ${V.default.bold("npx claude-mem start")}`),process.exit(1)),console.error(V.default.red(`Search failed: HTTP ${o.status}`)),process.exit(1));let s;try{s=await o.json()}catch(i){let a=i instanceof Error?i.message:String(i);console.error(V.default.red(`Search failed: invalid JSON response (${a})`)),process.exit(1)}console.log(typeof s=="object"&&s!==null?JSON.stringify(s,null,2):s)}function lm(){ur();let e=sn(),t=Wo(z(),"plugin","scripts","transcript-watcher.cjs");if(!on(t)){tt("transcript",["watch"]);return}let r=ye(e,[t,"watch"],{stdio:"inherit",cwd:z(),env:process.env});r.on("error",n=>{console.error(V.default.red(`Failed to start transcript watcher: ${n.message}`)),process.exit(1)}),r.on("close",n=>{process.exit(n??0)})}var V,Oe=E(()=>{"use strict";at();V=Ze(rt(),1);Za();Xe();Ge()});var zo={};Se(zo,{runServerCommand:()=>fm,runWorkerAliasCommand:()=>gm});function Xa(){console.error(`Usage: ${xt.default.bold("npx claude-mem server <command>")}`),console.error("Commands: start, stop, restart, status, logs, doctor, migrate, export, import, api-key create|list|revoke")}function dm(e){console.error(xt.default.red(`Server command not implemented yet: ${e}`)),console.error("This CLI route is reserved for the server runtime, but no backend API exists for it yet."),process.exit(1)}function pm(e){switch(e){case"start":return Jo(),!0;case"stop":return Ko(),!0;case"restart":return Bo(),!0;case"status":return Yo(),!0;default:return!1}}function mm(e){switch(e){case"start":return jo(),!0;case"stop":return Fo(),!0;case"restart":return Go(),!0;case"status":return Ho(),!0;default:return!1}}async function fm(e=[]){let t=e[0]?.toLowerCase();if(t||(Xa(),process.exit(1)),um.has(t)&&dm(`server ${t}`),!mm(t)){if(t==="api-key"){let r=e[1]?.toLowerCase();if(r==="create"||r==="list"||r==="revoke"){Vo(e.slice(1));return}console.error(xt.default.red(`Unknown server api-key subcommand: ${r??"(none)"}`)),console.error("Usage: npx claude-mem server api-key create|list|revoke"),process.exit(1)}console.error(xt.default.red(`Unknown server command: ${t}`)),Xa(),process.exit(1)}}function gm(e=[]){let t=e[0]?.toLowerCase();(!t||!pm(t))&&(console.error(xt.default.red(`Unknown worker command: ${t??"(none)"}`)),console.error("Usage: npx claude-mem worker start|stop|restart|status"),process.exit(1))}var xt,um,Zo=E(()=>{"use strict";xt=Ze(rt(),1);Oe();um=new Set(["logs","doctor","migrate","export","import"])});var M=Ze(rt(),1);Xe();var ze=process.argv.slice(2),qo=ze[0]?.toLowerCase()??"",hm=new Set(["-h","--help","-v","--version"]),Qa=qo.startsWith("-")&&!hm.has(qo)?"install":qo;function Em(){let e=it();console.log(`
432
+ `)),console.error(`Removed legacy claude-mem alias from ${n}`)}catch(a){console.warn(`[uninstall] Could not rewrite ${n}:`,a instanceof Error?a.message:String(a))}}}function $p(){let e=le(Ue(),{});e.enabledPlugins?.["claude-mem@thedotmack"]!==void 0&&(delete e.enabledPlugins["claude-mem@thedotmack"],Ne(Ue(),e))}function em(){let e=Ba(),t=0,r=Ie(e,".npm","_npx");if($e(r)){let s=[];try{s=Do(r)}catch(i){console.warn(`[uninstall] Could not read ${r}:`,i instanceof Error?i.message:String(i))}for(let i of s){let a=Ie(r,i,"node_modules","claude-mem");if($e(a))try{cr(a,{recursive:!0,force:!0}),t++}catch(c){console.warn(`[uninstall] Could not remove ${a}:`,c instanceof Error?c.message:String(c))}}}let n=Ie(e,".cache","claude-cli-nodejs");if($e(n)){let s=[];try{s=Do(n)}catch(i){console.warn(`[uninstall] Could not read ${n}:`,i instanceof Error?i.message:String(i))}for(let i of s){let a=Ie(n,i),c=[];try{c=Do(a)}catch(l){console.warn(`[uninstall] Could not read ${a}:`,l instanceof Error?l.message:String(l));continue}for(let l of c){if(!l.startsWith("mcp-logs-plugin-claude-mem-"))continue;let p=Ie(a,l);try{cr(p,{recursive:!0,force:!0}),t++}catch(f){console.warn(`[uninstall] Could not remove ${p}:`,f instanceof Error?f.message:String(f))}}}}let o=Ie(e,".claude","plugins","data","claude-mem-thedotmack");if($e(o))try{cr(o,{recursive:!0,force:!0}),t++}catch(s){console.warn(`[uninstall] Could not remove ${o}:`,s instanceof Error?s.message:String(s))}return t}async function tm(){if(Ut(se.default.bgRed(se.default.white(" claude-mem uninstall "))),gr()){if(process.stdin.isTTY){let r=await Dt({message:"Are you sure you want to uninstall claude-mem?",initialValue:!1});if(F(r)||!r){pe("Uninstall cancelled.");return}}}else if(te.warn("claude-mem does not appear to be installed."),process.stdin.isTTY){let r=await Dt({message:"Clean up any remaining registration data anyway?",initialValue:!1});if(F(r)||!r){je("Nothing to do.");return}}else{je("Nothing to do.");return}let e=Z.get("CLAUDE_MEM_WORKER_PORT");try{(await Ar(e,1e4)).workerWasRunning&&te.info("Worker service stopped.")}catch(r){console.warn("[uninstall] Worker shutdown attempt failed:",r instanceof Error?r.message:String(r))}await xr([{title:"Removing marketplace directory",task:async()=>Zp()?`Marketplace directory removed ${se.default.green("OK")}`:`Marketplace directory not found ${se.default.dim("skipped")}`},{title:"Removing cache directory",task:async()=>qp()?`Cache directory removed ${se.default.green("OK")}`:`Cache directory not found ${se.default.dim("skipped")}`},{title:"Removing marketplace registration",task:async()=>(Xp(),`Marketplace registration removed ${se.default.green("OK")}`)},{title:"Removing plugin registration",task:async()=>(Qp(),`Plugin registration removed ${se.default.green("OK")}`)},{title:"Removing from Claude settings",task:async()=>($p(),`Claude settings updated ${se.default.green("OK")}`)},{title:"Removing legacy claude-mem shell alias",task:async()=>(_p(),`Legacy alias check complete ${se.default.green("OK")}`)},{title:"Removing stray claude-mem caches and logs",task:async()=>{let r=em();return r>0?`Stray paths removed: ${r} ${se.default.green("OK")}`:`No stray paths found ${se.default.dim("skipped")}`}}]);let t=[{label:"Gemini CLI hooks",fn:async()=>{let{uninstallGeminiCliHooks:r}=await Promise.resolve().then(()=>(mo(),po));return r()}},{label:"Windsurf hooks",fn:async()=>{let{uninstallWindsurfHooks:r}=await Promise.resolve().then(()=>(ko(),Co));return r()}},{label:"OpenCode plugin",fn:async()=>{let{uninstallOpenCodePlugin:r}=await Promise.resolve().then(()=>(yo(),So));return r()}},{label:"OpenClaw plugin",fn:async()=>{let{uninstallOpenClawPlugin:r}=await Promise.resolve().then(()=>(To(),xo));return r()}},{label:"Codex CLI",fn:async()=>{let{uninstallCodexCli:r}=await Promise.resolve().then(()=>(Ao(),Po));return r()}}];for(let{label:r,fn:n}of t)try{await n()===0&&te.info(`${r}: removed.`)}catch(o){console.warn(`[uninstall] ${r} cleanup failed:`,o instanceof Error?o.message:String(o))}Lt([`Your data directory at ${se.default.cyan("~/.claude-mem")} was preserved.`,"To remove it manually: rm -rf ~/.claude-mem"].join(`
433
+ `),"Note"),je(se.default.green("claude-mem has been uninstalled."))}var se,Va=E(()=>{"use strict";On();se=ze(tt(),1);qe();xt();Ge();eo()});import{spawnSync as rm}from"child_process";import{existsSync as nm}from"fs";import{homedir as Uo}from"os";import{join as Lo}from"path";function om(){return ue?[Lo(Uo(),".bun","bin","bun.exe"),Lo(process.env.USERPROFILE||Uo(),".bun","bin","bun.exe")]:[Lo(Uo(),".bun","bin","bun"),"/usr/local/bin/bun","/opt/homebrew/bin/bun","/home/linuxbrew/.linuxbrew/bin/bun"]}function za(){let t=rm(ue?"where":"which",["bun"],{encoding:"utf-8",stdio:["pipe","pipe","pipe"],shell:ue});if(t.status===0&&t.stdout.trim())return"bun";for(let r of om())if(nm(r))return r;return null}var Za=E(()=>{"use strict";qe()});var De={};Se(De,{runAdoptCommand:()=>im,runCleanupCommand:()=>am,runRestartCommand:()=>Bo,runSearchCommand:()=>cm,runServerApiKeyCommand:()=>Vo,runServerBetaRestartCommand:()=>Go,runServerBetaStartCommand:()=>jo,runServerBetaStatusCommand:()=>Ho,runServerBetaStopCommand:()=>Fo,runStartCommand:()=>Jo,runStatusCommand:()=>Yo,runStopCommand:()=>Ko,runTranscriptWatchCommand:()=>lm});import{existsSync as nn}from"fs";import{join as Wo}from"path";function lr(){gr()||(console.error(V.default.red("claude-mem is not installed.")),console.error(`Run: ${V.default.bold("npx claude-mem install")}`),process.exit(1))}function on(){let e=za();return e||(console.error(V.default.red("Bun not found.")),console.error("Install Bun: https://bun.sh"),console.error("After installation, restart your terminal."),process.exit(1)),e}function qa(){return Wo(z(),"plugin","scripts","worker-service.cjs")}function sm(){return Wo(z(),"plugin","scripts","server-beta-service.cjs")}function et(e,t=[]){lr();let r=on(),n=qa();nn(n)||(console.error(V.default.red(`Worker script not found at: ${n}`)),console.error("The installation may be corrupted. Try: npx claude-mem install"),process.exit(1));let o=[n,e,...t],s=ye(r,o,{stdio:"inherit",cwd:z(),env:process.env});s.on("error",i=>{console.error(V.default.red(`Failed to start Bun: ${i.message}`)),process.exit(1)}),s.on("close",i=>{process.exit(i??0)})}function sn(e){lr();let t=on(),r=sm();nn(r)||(console.error(V.default.red(`Server beta script not found at: ${r}`)),console.error("The installation may be corrupted. Try: npx claude-mem install"),process.exit(1));let n=ye(t,[r,e],{stdio:"inherit",cwd:z(),env:process.env});n.on("error",o=>{console.error(V.default.red(`Failed to start Bun: ${o.message}`)),process.exit(1)}),n.on("close",o=>{process.exit(o??0)})}function jo(){sn("start")}function Fo(){sn("stop")}function Go(){sn("restart")}function Ho(){sn("status")}function Jo(){et("start")}function Ko(){et("stop")}function Bo(){et("restart")}function Yo(){et("status")}function Vo(e=[]){et("server",["api-key",...e])}function im(e=[]){lr();let t=on(),r=qa();nn(r)||(console.error(V.default.red(`Worker script not found at: ${r}`)),console.error("The installation may be corrupted. Try: npx claude-mem install"),process.exit(1));let n=process.cwd(),o=[r,"adopt","--cwd",n,...e],s=ye(t,o,{stdio:"inherit",cwd:z(),env:process.env});s.on("error",i=>{console.error(V.default.red(`Failed to start Bun: ${i.message}`)),process.exit(1)}),s.on("close",i=>{process.exit(i??0)})}function am(e=[]){et("cleanup",e)}async function cm(e){lr();let t=e.join(" ").trim();t||(console.error(V.default.red("Usage: npx claude-mem search <query>")),process.exit(1));let n=`http://127.0.0.1:${Z.get("CLAUDE_MEM_WORKER_PORT")}/api/search?query=${encodeURIComponent(t)}`,o;try{o=await fetch(n)}catch(i){let a=i instanceof Error?i.message:String(i);((i instanceof Error?i.cause:void 0)?.code==="ECONNREFUSED"||a.includes("ECONNREFUSED"))&&(console.error(V.default.red("Worker is not running.")),console.error(`Start it with: ${V.default.bold("npx claude-mem start")}`),process.exit(1)),console.error(V.default.red(`Search failed: ${a}`)),process.exit(1)}o.ok||(o.status===404&&(console.error(V.default.red("Search endpoint not found. Is the worker running?")),console.error(`Try: ${V.default.bold("npx claude-mem start")}`),process.exit(1)),console.error(V.default.red(`Search failed: HTTP ${o.status}`)),process.exit(1));let s;try{s=await o.json()}catch(i){let a=i instanceof Error?i.message:String(i);console.error(V.default.red(`Search failed: invalid JSON response (${a})`)),process.exit(1)}console.log(typeof s=="object"&&s!==null?JSON.stringify(s,null,2):s)}function lm(){lr();let e=on(),t=Wo(z(),"plugin","scripts","transcript-watcher.cjs");if(!nn(t)){et("transcript",["watch"]);return}let r=ye(e,[t,"watch"],{stdio:"inherit",cwd:z(),env:process.env});r.on("error",n=>{console.error(V.default.red(`Failed to start transcript watcher: ${n.message}`)),process.exit(1)}),r.on("close",n=>{process.exit(n??0)})}var V,Oe=E(()=>{"use strict";it();V=ze(tt(),1);Za();qe();Ge()});var zo={};Se(zo,{runServerCommand:()=>fm,runWorkerAliasCommand:()=>gm});function Xa(){console.error(`Usage: ${Mt.default.bold("npx claude-mem server <command>")}`),console.error("Commands: start, stop, restart, status, logs, doctor, migrate, export, import, api-key create|list|revoke")}function dm(e){console.error(Mt.default.red(`Server command not implemented yet: ${e}`)),console.error("This CLI route is reserved for the server runtime, but no backend API exists for it yet."),process.exit(1)}function pm(e){switch(e){case"start":return Jo(),!0;case"stop":return Ko(),!0;case"restart":return Bo(),!0;case"status":return Yo(),!0;default:return!1}}function mm(e){switch(e){case"start":return jo(),!0;case"stop":return Fo(),!0;case"restart":return Go(),!0;case"status":return Ho(),!0;default:return!1}}async function fm(e=[]){let t=e[0]?.toLowerCase();if(t||(Xa(),process.exit(1)),um.has(t)&&dm(`server ${t}`),!mm(t)){if(t==="api-key"){let r=e[1]?.toLowerCase();if(r==="create"||r==="list"||r==="revoke"){Vo(e.slice(1));return}console.error(Mt.default.red(`Unknown server api-key subcommand: ${r??"(none)"}`)),console.error("Usage: npx claude-mem server api-key create|list|revoke"),process.exit(1)}console.error(Mt.default.red(`Unknown server command: ${t}`)),Xa(),process.exit(1)}}function gm(e=[]){let t=e[0]?.toLowerCase();(!t||!pm(t))&&(console.error(Mt.default.red(`Unknown worker command: ${t??"(none)"}`)),console.error("Usage: npx claude-mem worker start|stop|restart|status"),process.exit(1))}var Mt,um,Zo=E(()=>{"use strict";Mt=ze(tt(),1);Oe();um=new Set(["logs","doctor","migrate","export","import"])});var M=ze(tt(),1);qe();var Ve=process.argv.slice(2),qo=Ve[0]?.toLowerCase()??"",hm=new Set(["-h","--help","-v","--version"]),Qa=qo.startsWith("-")&&!hm.has(qo)?"install":qo;function Em(){let e=st();console.log(`
434
434
  ${M.default.bold("claude-mem")} v${e} \u2014 persistent memory for AI coding assistants
435
435
 
436
436
  ${M.default.bold("Install Commands")} (no Bun required):
@@ -470,4 +470,4 @@ ${M.default.bold("IDE Identifiers")}:
470
470
  claude-code, cursor, gemini-cli, opencode, openclaw,
471
471
  windsurf, codex-cli, copilot-cli, antigravity, goose,
472
472
  roo-code, warp
473
- `)}function Xo(e,t){let r=e.indexOf(t);if(r===-1)return;let n=e[r+1];return(n===void 0||n.startsWith("-"))&&(console.error(M.default.red(`Flag ${t} requires a value.`)),process.exit(1)),n}function Sm(e){let t=Xo(e,"--provider");return t!==void 0&&t!=="claude"&&t!=="gemini"&&t!=="openrouter"&&(console.error(`Unknown --provider: ${t}. Allowed: claude, gemini, openrouter`),process.exit(1)),{ide:Xo(e,"--ide"),provider:t,model:Xo(e,"--model"),noAutoStart:e.includes("--no-auto-start")}}async function ym(){switch(Qa){case"":case"install":{let{runInstallCommand:e}=await Promise.resolve().then(()=>(nn(),rn));await e(Sm(ze));break}case"repair":{let{runRepairCommand:e}=await Promise.resolve().then(()=>(nn(),rn));await e();break}case"update":case"upgrade":{let{runInstallCommand:e}=await Promise.resolve().then(()=>(nn(),rn));await e();break}case"uninstall":case"remove":{let{runUninstallCommand:e}=await Promise.resolve().then(()=>(Va(),Ya));await e();break}case"version":case"--version":case"-v":{console.log(it());break}case"help":case"--help":case"-h":{Em();break}case"start":{let{runStartCommand:e}=await Promise.resolve().then(()=>(Oe(),De));e();break}case"stop":{let{runStopCommand:e}=await Promise.resolve().then(()=>(Oe(),De));e();break}case"restart":{let{runRestartCommand:e}=await Promise.resolve().then(()=>(Oe(),De));e();break}case"status":{let{runStatusCommand:e}=await Promise.resolve().then(()=>(Oe(),De));e();break}case"server":{let{runServerCommand:e}=await Promise.resolve().then(()=>(Zo(),zo));await e(ze.slice(1));break}case"worker":{let{runWorkerAliasCommand:e}=await Promise.resolve().then(()=>(Zo(),zo));e(ze.slice(1));break}case"search":{let{runSearchCommand:e}=await Promise.resolve().then(()=>(Oe(),De));await e(ze.slice(1));break}case"adopt":{let{runAdoptCommand:e}=await Promise.resolve().then(()=>(Oe(),De));e(ze.slice(1));break}case"cleanup":{let{runCleanupCommand:e}=await Promise.resolve().then(()=>(Oe(),De));e(ze.slice(1));break}case"transcript":{let e=ze[1]?.toLowerCase();if(e==="watch"){let{runTranscriptWatchCommand:t}=await Promise.resolve().then(()=>(Oe(),De));t()}else console.error(M.default.red(`Unknown transcript subcommand: ${e??"(none)"}`)),console.error("Usage: npx claude-mem transcript watch"),process.exit(1);break}default:console.error(M.default.red(`Unknown command: ${Qa}`)),console.error(`Run ${M.default.bold("npx claude-mem --help")} for usage information.`),process.exit(1)}}ym().catch(e=>{console.error(M.default.red("Fatal error:"),e.message||e),process.exit(1)});
473
+ `)}function Xo(e,t){let r=e.indexOf(t);if(r===-1)return;let n=e[r+1];return(n===void 0||n.startsWith("-"))&&(console.error(M.default.red(`Flag ${t} requires a value.`)),process.exit(1)),n}function Sm(e){let t=Xo(e,"--provider");return t!==void 0&&t!=="claude"&&t!=="gemini"&&t!=="openrouter"&&(console.error(`Unknown --provider: ${t}. Allowed: claude, gemini, openrouter`),process.exit(1)),{ide:Xo(e,"--ide"),provider:t,model:Xo(e,"--model"),noAutoStart:e.includes("--no-auto-start")}}async function ym(){switch(Qa){case"":case"install":{let{runInstallCommand:e}=await Promise.resolve().then(()=>(rn(),tn));await e(Sm(Ve));break}case"repair":{let{runRepairCommand:e}=await Promise.resolve().then(()=>(rn(),tn));await e();break}case"update":case"upgrade":{let{runInstallCommand:e}=await Promise.resolve().then(()=>(rn(),tn));await e();break}case"uninstall":case"remove":{let{runUninstallCommand:e}=await Promise.resolve().then(()=>(Va(),Ya));await e();break}case"version":case"--version":case"-v":{console.log(st());break}case"help":case"--help":case"-h":{Em();break}case"start":{let{runStartCommand:e}=await Promise.resolve().then(()=>(Oe(),De));e();break}case"stop":{let{runStopCommand:e}=await Promise.resolve().then(()=>(Oe(),De));e();break}case"restart":{let{runRestartCommand:e}=await Promise.resolve().then(()=>(Oe(),De));e();break}case"status":{let{runStatusCommand:e}=await Promise.resolve().then(()=>(Oe(),De));e();break}case"server":{let{runServerCommand:e}=await Promise.resolve().then(()=>(Zo(),zo));await e(Ve.slice(1));break}case"worker":{let{runWorkerAliasCommand:e}=await Promise.resolve().then(()=>(Zo(),zo));e(Ve.slice(1));break}case"search":{let{runSearchCommand:e}=await Promise.resolve().then(()=>(Oe(),De));await e(Ve.slice(1));break}case"adopt":{let{runAdoptCommand:e}=await Promise.resolve().then(()=>(Oe(),De));e(Ve.slice(1));break}case"cleanup":{let{runCleanupCommand:e}=await Promise.resolve().then(()=>(Oe(),De));e(Ve.slice(1));break}case"transcript":{let e=Ve[1]?.toLowerCase();if(e==="watch"){let{runTranscriptWatchCommand:t}=await Promise.resolve().then(()=>(Oe(),De));t()}else console.error(M.default.red(`Unknown transcript subcommand: ${e??"(none)"}`)),console.error("Usage: npx claude-mem transcript watch"),process.exit(1);break}default:console.error(M.default.red(`Unknown command: ${Qa}`)),console.error(`Run ${M.default.bold("npx claude-mem --help")} for usage information.`),process.exit(1)}}ym().catch(e=>{console.error(M.default.red("Fatal error:"),e.message||e),process.exit(1)});