claude-mem 12.3.4 → 12.3.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/npx-cli/index.js +27 -27
- package/dist/opencode-plugin/index.js +2 -2
- package/package.json +1 -1
- package/plugin/.claude-plugin/plugin.json +1 -1
- package/plugin/hooks/hooks.json +3 -3
- package/plugin/package.json +1 -1
- package/plugin/scripts/context-generator.cjs +1 -1
- package/plugin/scripts/mcp-server.cjs +2 -2
- package/plugin/scripts/worker-service.cjs +160 -156
- package/plugin/ui/viewer-bundle.js +10 -10
package/dist/npx-cli/index.js
CHANGED
|
@@ -1,24 +1,24 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
var zr=Object.create;var Gt=Object.defineProperty;var Zr=Object.getOwnPropertyDescriptor;var Qr=Object.getOwnPropertyNames;var es=Object.getPrototypeOf,ts=Object.prototype.hasOwnProperty;var ns=(t=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(t,{get:(e,n)=>(typeof require<"u"?require:e)[n]}):t)(function(t){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+t+'" is not supported')});var f=(t,e)=>()=>(t&&(e=t(t=0)),e);var Kn=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),V=(t,e)=>{for(var n in e)Gt(t,n,{get:e[n],enumerable:!0})},os=(t,e,n,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of Qr(e))!ts.call(t,s)&&s!==n&&Gt(t,s,{get:()=>e[s],enumerable:!(r=Zr(e,s))||r.enumerable});return t};var ue=(t,e,n)=>(n=t!=null?zr(es(t)):{},os(e||!t||!t.__esModule?Gt(n,"default",{value:t,enumerable:!0}):n,t));var me=Kn((
|
|
3
|
-
`,"utf-8")}var q,ce=f(()=>{"use strict";Me();q=process.platform==="win32"});var Yt=Kn((Oa,qn)=>{"use strict";var Xt={to(t,e){return e?`\x1B[${e+1};${t+1}H`:`\x1B[${t+1}G`},move(t,e){let n="";return t<0?n+=`\x1B[${-t}D`:t>0&&(n+=`\x1B[${t}C`),e<0?n+=`\x1B[${-e}A`:e>0&&(n+=`\x1B[${e}B`),n},up:(t=1)=>`\x1B[${t}A`,down:(t=1)=>`\x1B[${t}B`,forward:(t=1)=>`\x1B[${t}C`,backward:(t=1)=>`\x1B[${t}D`,nextLine:(t=1)=>"\x1B[E".repeat(t),prevLine:(t=1)=>"\x1B[F".repeat(t),left:"\x1B[G",hide:"\x1B[?25l",show:"\x1B[?25h",save:"\x1B7",restore:"\x1B8"},ms={up:(t=1)=>"\x1B[S".repeat(t),down:(t=1)=>"\x1B[T".repeat(t)},ps={screen:"\x1B[2J",up:(t=1)=>"\x1B[1J".repeat(t),down:(t=1)=>"\x1B[J".repeat(t),line:"\x1B[2K",lineEnd:"\x1B[K",lineStart:"\x1B[1K",lines(t){let e="";for(let n=0;n<t;n++)e+=this.line+(n<t-1?Xt.up():"");return t&&(e+=Xt.left),e}};qn.exports={cursor:Xt,scroll:ms,erase:ps,beep:"\x07"}});import{stdin as so,stdout as io}from"node:process";import*as Q from"node:readline";import zn from"node:readline";import{WriteStream as gs}from"node:tty";function fs({onlyFirst:t=!1}={}){let e=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?(?:\\u0007|\\u001B\\u005C|\\u009C))","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]))"].join("|");return new RegExp(e,t?void 0:"g")}function uo(t){if(typeof t!="string")throw new TypeError(`Expected a \`string\`, got \`${typeof t}\``);return t.replace(Cs,"")}function ao(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}function Te(t,e={}){if(typeof t!="string"||t.length===0||(e={ambiguousIsNarrow:!0,...e},t=uo(t),t.length===0))return 0;t=t.replace(ys()," ");let n=e.ambiguousIsNarrow?1:2,r=0;for(let s of t){let i=s.codePointAt(0);if(!(i<=31||i>=127&&i<=159||i>=768&&i<=879))switch(hs.eastAsianWidth(s)){case"F":case"W":r+=2;break;case"A":r+=n;break;default:r+=1}}return r}function
|
|
2
|
+
var zr=Object.create;var Gt=Object.defineProperty;var Zr=Object.getOwnPropertyDescriptor;var Qr=Object.getOwnPropertyNames;var es=Object.getPrototypeOf,ts=Object.prototype.hasOwnProperty;var ns=(t=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(t,{get:(e,n)=>(typeof require<"u"?require:e)[n]}):t)(function(t){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+t+'" is not supported')});var f=(t,e)=>()=>(t&&(e=t(t=0)),e);var Kn=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),V=(t,e)=>{for(var n in e)Gt(t,n,{get:e[n],enumerable:!0})},os=(t,e,n,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of Qr(e))!ts.call(t,s)&&s!==n&&Gt(t,s,{get:()=>e[s],enumerable:!(r=Zr(e,s))||r.enumerable});return t};var ue=(t,e,n)=>(n=t!=null?zr(es(t)):{},os(e||!t||!t.__esModule?Gt(n,"default",{value:t,enumerable:!0}):n,t));var me=Kn((va,Ht)=>{var st=process||{},Jn=st.argv||[],rt=st.env||{},rs=!(rt.NO_COLOR||Jn.includes("--no-color"))&&(!!rt.FORCE_COLOR||Jn.includes("--color")||st.platform==="win32"||(st.stdout||{}).isTTY&&rt.TERM!=="dumb"||!!rt.CI),ss=(t,e,n=t)=>r=>{let s=""+r,i=s.indexOf(e,t.length);return~i?t+is(s,e,n,i)+e:t+s+e},is=(t,e,n,r)=>{let s="",i=0;do s+=t.substring(i,r)+n,i=r+e.length,r=t.indexOf(e,i);while(~r);return s+t.substring(i)},Vn=(t=rs)=>{let e=t?ss:()=>String;return{isColorSupported:t,reset:e("\x1B[0m","\x1B[0m"),bold:e("\x1B[1m","\x1B[22m","\x1B[22m\x1B[1m"),dim:e("\x1B[2m","\x1B[22m","\x1B[22m\x1B[2m"),italic:e("\x1B[3m","\x1B[23m"),underline:e("\x1B[4m","\x1B[24m"),inverse:e("\x1B[7m","\x1B[27m"),hidden:e("\x1B[8m","\x1B[28m"),strikethrough:e("\x1B[9m","\x1B[29m"),black:e("\x1B[30m","\x1B[39m"),red:e("\x1B[31m","\x1B[39m"),green:e("\x1B[32m","\x1B[39m"),yellow:e("\x1B[33m","\x1B[39m"),blue:e("\x1B[34m","\x1B[39m"),magenta:e("\x1B[35m","\x1B[39m"),cyan:e("\x1B[36m","\x1B[39m"),white:e("\x1B[37m","\x1B[39m"),gray:e("\x1B[90m","\x1B[39m"),bgBlack:e("\x1B[40m","\x1B[49m"),bgRed:e("\x1B[41m","\x1B[49m"),bgGreen:e("\x1B[42m","\x1B[49m"),bgYellow:e("\x1B[43m","\x1B[49m"),bgBlue:e("\x1B[44m","\x1B[49m"),bgMagenta:e("\x1B[45m","\x1B[49m"),bgCyan:e("\x1B[46m","\x1B[49m"),bgWhite:e("\x1B[47m","\x1B[49m"),blackBright:e("\x1B[90m","\x1B[39m"),redBright:e("\x1B[91m","\x1B[39m"),greenBright:e("\x1B[92m","\x1B[39m"),yellowBright:e("\x1B[93m","\x1B[39m"),blueBright:e("\x1B[94m","\x1B[39m"),magentaBright:e("\x1B[95m","\x1B[39m"),cyanBright:e("\x1B[96m","\x1B[39m"),whiteBright:e("\x1B[97m","\x1B[39m"),bgBlackBright:e("\x1B[100m","\x1B[49m"),bgRedBright:e("\x1B[101m","\x1B[49m"),bgGreenBright:e("\x1B[102m","\x1B[49m"),bgYellowBright:e("\x1B[103m","\x1B[49m"),bgBlueBright:e("\x1B[104m","\x1B[49m"),bgMagentaBright:e("\x1B[105m","\x1B[49m"),bgCyanBright:e("\x1B[106m","\x1B[49m"),bgWhiteBright:e("\x1B[107m","\x1B[49m")}};Ht.exports=Vn();Ht.exports.createColors=Vn});import{existsSync as us,readFileSync as as}from"fs";function W(t,e){if(!us(t))return e;try{return JSON.parse(as(t,"utf-8"))}catch(n){throw new Error(`Corrupt JSON file, refusing to overwrite: ${t}: ${n instanceof Error?n.message:String(n)}`)}}var Me=f(()=>{"use strict"});import{existsSync as Ie,mkdirSync as cs,readFileSync as Xn,writeFileSync as ls}from"fs";import{homedir as Ds}from"os";import{dirname as Yn,join as O}from"path";import{fileURLToPath as ds}from"url";function Kt(){return process.env.CLAUDE_CONFIG_DIR||O(Ds(),".claude")}function k(){return O(Kt(),"plugins","marketplaces","thedotmack")}function ae(){return O(Kt(),"plugins")}function pe(){return O(ae(),"known_marketplaces.json")}function ge(){return O(ae(),"installed_plugins.json")}function fe(){return O(Kt(),"settings.json")}function Jt(t){return O(ae(),"cache","thedotmack","claude-mem",t)}function it(){let t=ds(import.meta.url),e=O(Yn(t),"..","..");if(!Ie(O(e,"package.json")))throw new Error(`npmPackageRootDirectory: expected package.json at ${e}. Bundle structure may have changed \u2014 update the path walk.`);return e}function Vt(){return O(it(),"plugin")}function Oe(){let t=O(Vt(),".claude-plugin","plugin.json");if(Ie(t))try{let n=JSON.parse(Xn(t,"utf-8"));if(n.version)return n.version}catch{}let e=O(it(),"package.json");if(Ie(e))try{let n=JSON.parse(Xn(e,"utf-8"));if(n.version)return n.version}catch{}return"0.0.0"}function ut(){let t=k();return Ie(O(t,"plugin",".claude-plugin","plugin.json"))}function Re(t){Ie(t)||cs(t,{recursive:!0})}function Z(t,e){Re(Yn(t)),ls(t,JSON.stringify(e,null,2)+`
|
|
3
|
+
`,"utf-8")}var q,ce=f(()=>{"use strict";Me();q=process.platform==="win32"});var Yt=Kn((Oa,qn)=>{"use strict";var Xt={to(t,e){return e?`\x1B[${e+1};${t+1}H`:`\x1B[${t+1}G`},move(t,e){let n="";return t<0?n+=`\x1B[${-t}D`:t>0&&(n+=`\x1B[${t}C`),e<0?n+=`\x1B[${-e}A`:e>0&&(n+=`\x1B[${e}B`),n},up:(t=1)=>`\x1B[${t}A`,down:(t=1)=>`\x1B[${t}B`,forward:(t=1)=>`\x1B[${t}C`,backward:(t=1)=>`\x1B[${t}D`,nextLine:(t=1)=>"\x1B[E".repeat(t),prevLine:(t=1)=>"\x1B[F".repeat(t),left:"\x1B[G",hide:"\x1B[?25l",show:"\x1B[?25h",save:"\x1B7",restore:"\x1B8"},ms={up:(t=1)=>"\x1B[S".repeat(t),down:(t=1)=>"\x1B[T".repeat(t)},ps={screen:"\x1B[2J",up:(t=1)=>"\x1B[1J".repeat(t),down:(t=1)=>"\x1B[J".repeat(t),line:"\x1B[2K",lineEnd:"\x1B[K",lineStart:"\x1B[1K",lines(t){let e="";for(let n=0;n<t;n++)e+=this.line+(n<t-1?Xt.up():"");return t&&(e+=Xt.left),e}};qn.exports={cursor:Xt,scroll:ms,erase:ps,beep:"\x07"}});import{stdin as so,stdout as io}from"node:process";import*as Q from"node:readline";import zn from"node:readline";import{WriteStream as gs}from"node:tty";function fs({onlyFirst:t=!1}={}){let e=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?(?:\\u0007|\\u001B\\u005C|\\u009C))","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]))"].join("|");return new RegExp(e,t?void 0:"g")}function uo(t){if(typeof t!="string")throw new TypeError(`Expected a \`string\`, got \`${typeof t}\``);return t.replace(Cs,"")}function ao(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}function Te(t,e={}){if(typeof t!="string"||t.length===0||(e={ambiguousIsNarrow:!0,...e},t=uo(t),t.length===0))return 0;t=t.replace(ys()," ");let n=e.ambiguousIsNarrow?1:2,r=0;for(let s of t){let i=s.codePointAt(0);if(!(i<=31||i>=127&&i<=159||i>=768&&i<=879))switch(hs.eastAsianWidth(s)){case"F":case"W":r+=2;break;case"A":r+=n;break;default:r+=1}}return r}function vs(){let t=new Map;for(let[e,n]of Object.entries(C)){for(let[r,s]of Object.entries(n))C[r]={open:`\x1B[${s[0]}m`,close:`\x1B[${s[1]}m`},n[r]=C[r],t.set(s[0],s[1]);Object.defineProperty(C,e,{value:n,enumerable:!1})}return Object.defineProperty(C,"codes",{value:t,enumerable:!1}),C.color.close="\x1B[39m",C.bgColor.close="\x1B[49m",C.color.ansi=Zn(),C.color.ansi256=Qn(),C.color.ansi16m=eo(),C.bgColor.ansi=Zn(qt),C.bgColor.ansi256=Qn(qt),C.bgColor.ansi16m=eo(qt),Object.defineProperties(C,{rgbToAnsi256:{value:(e,n,r)=>e===n&&n===r?e<8?16:e>248?231:Math.round((e-8)/247*24)+232:16+36*Math.round(e/255*5)+6*Math.round(n/255*5)+Math.round(r/255*5),enumerable:!1},hexToRgb:{value:e=>{let n=/[a-f\d]{6}|[a-f\d]{3}/i.exec(e.toString(16));if(!n)return[0,0,0];let[r]=n;r.length===3&&(r=[...r].map(i=>i+i).join(""));let s=Number.parseInt(r,16);return[s>>16&255,s>>8&255,s&255]},enumerable:!1},hexToAnsi256:{value:e=>C.rgbToAnsi256(...C.hexToRgb(e)),enumerable:!1},ansi256ToAnsi:{value:e=>{if(e<8)return 30+e;if(e<16)return 90+(e-8);let n,r,s;if(e>=232)n=((e-232)*10+8)/255,r=n,s=n;else{e-=16;let u=e%36;n=Math.floor(e/36)/5,r=Math.floor(u/6)/5,s=u%6/5}let i=Math.max(n,r,s)*2;if(i===0)return 30;let o=30+(Math.round(s)<<2|Math.round(r)<<1|Math.round(n));return i===2&&(o+=60),o},enumerable:!1},rgbToAnsi:{value:(e,n,r)=>C.ansi256ToAnsi(C.rgbToAnsi256(e,n,r)),enumerable:!1},hexToAnsi:{value:e=>C.ansi256ToAnsi(C.hexToAnsi256(e)),enumerable:!1}}),C}function oo(t,e,n){return String(t).normalize().replace(/\r\n/g,`
|
|
4
4
|
`).split(`
|
|
5
5
|
`).map(r=>$s(r,e,n)).join(`
|
|
6
6
|
`)}function tn(t,e){if(typeof t=="string")return ct.aliases.get(t)===e;for(let n of t)if(n!==void 0&&tn(n,e))return!0;return!1}function Is(t,e){if(t===e)return;let n=t.split(`
|
|
7
7
|
`),r=e.split(`
|
|
8
|
-
`),s=[];for(let i=0;i<Math.max(n.length,r.length);i++)n[i]!==r[i]&&s.push(i);return s}function ee(t){return t===Zt}function at(t,e){let n=t;n.isTTY&&n.setRawMode(e)}function mo({input:t=so,output:e=io,overwrite:n=!0,hideCursor:r=!0}={}){let s=Q.createInterface({input:t,output:e,prompt:"",tabSize:1});Q.emitKeypressEvents(t,s),t.isTTY&&t.setRawMode(!0);let i=(o,{name:u,sequence:c})=>{let d=String(o);if(tn([d,u,c],"cancel")){r&&e.write(A.cursor.show),process.exit(0);return}if(!n)return;Q.moveCursor(e,u==="return"?0:-1,u==="return"?-1:0,()=>{Q.clearLine(e,1,()=>{t.once("keypress",i)})})};return r&&e.write(A.cursor.hide),t.once("keypress",i),()=>{t.off("keypress",i),r&&e.write(A.cursor.show),t.isTTY&&!Os&&t.setRawMode(!1),s.terminal=!1,s.close()}}var A,Cs,co,Es,hs,Fs,ys,qt,Zn,Qn,eo,C,xs,vs,_s,dt,ws,Qt,lo,As,Do,en,to,no,bs,zt,ks,$s,Ms,ct,Os,Zt,Rs,Ts,R,lt,Dt,Bs,Ps,ro,po,nn=f(()=>{A=ue(Yt(),1);Cs=fs();co={exports:{}};(function(t){var e={};t.exports=e,e.eastAsianWidth=function(r){var s=r.charCodeAt(0),i=r.length==2?r.charCodeAt(1):0,o=s;return 55296<=s&&s<=56319&&56320<=i&&i<=57343&&(s&=1023,i&=1023,o=s<<10|i,o+=65536),o==12288||65281<=o&&o<=65376||65504<=o&&o<=65510?"F":o==8361||65377<=o&&o<=65470||65474<=o&&o<=65479||65482<=o&&o<=65487||65490<=o&&o<=65495||65498<=o&&o<=65500||65512<=o&&o<=65518?"H":4352<=o&&o<=4447||4515<=o&&o<=4519||4602<=o&&o<=4607||9001<=o&&o<=9002||11904<=o&&o<=11929||11931<=o&&o<=12019||12032<=o&&o<=12245||12272<=o&&o<=12283||12289<=o&&o<=12350||12353<=o&&o<=12438||12441<=o&&o<=12543||12549<=o&&o<=12589||12593<=o&&o<=12686||12688<=o&&o<=12730||12736<=o&&o<=12771||12784<=o&&o<=12830||12832<=o&&o<=12871||12880<=o&&o<=13054||13056<=o&&o<=19903||19968<=o&&o<=42124||42128<=o&&o<=42182||43360<=o&&o<=43388||44032<=o&&o<=55203||55216<=o&&o<=55238||55243<=o&&o<=55291||63744<=o&&o<=64255||65040<=o&&o<=65049||65072<=o&&o<=65106||65108<=o&&o<=65126||65128<=o&&o<=65131||110592<=o&&o<=110593||127488<=o&&o<=127490||127504<=o&&o<=127546||127552<=o&&o<=127560||127568<=o&&o<=127569||131072<=o&&o<=194367||177984<=o&&o<=196605||196608<=o&&o<=262141?"W":32<=o&&o<=126||162<=o&&o<=163||165<=o&&o<=166||o==172||o==175||10214<=o&&o<=10221||10629<=o&&o<=10630?"Na":o==161||o==164||167<=o&&o<=168||o==170||173<=o&&o<=174||176<=o&&o<=180||182<=o&&o<=186||188<=o&&o<=191||o==198||o==208||215<=o&&o<=216||222<=o&&o<=225||o==230||232<=o&&o<=234||236<=o&&o<=237||o==240||242<=o&&o<=243||247<=o&&o<=250||o==252||o==254||o==257||o==273||o==275||o==283||294<=o&&o<=295||o==299||305<=o&&o<=307||o==312||319<=o&&o<=322||o==324||328<=o&&o<=331||o==333||338<=o&&o<=339||358<=o&&o<=359||o==363||o==462||o==464||o==466||o==468||o==470||o==472||o==474||o==476||o==593||o==609||o==708||o==711||713<=o&&o<=715||o==717||o==720||728<=o&&o<=731||o==733||o==735||768<=o&&o<=879||913<=o&&o<=929||931<=o&&o<=937||945<=o&&o<=961||963<=o&&o<=969||o==1025||1040<=o&&o<=1103||o==1105||o==8208||8211<=o&&o<=8214||8216<=o&&o<=8217||8220<=o&&o<=8221||8224<=o&&o<=8226||8228<=o&&o<=8231||o==8240||8242<=o&&o<=8243||o==8245||o==8251||o==8254||o==8308||o==8319||8321<=o&&o<=8324||o==8364||o==8451||o==8453||o==8457||o==8467||o==8470||8481<=o&&o<=8482||o==8486||o==8491||8531<=o&&o<=8532||8539<=o&&o<=8542||8544<=o&&o<=8555||8560<=o&&o<=8569||o==8585||8592<=o&&o<=8601||8632<=o&&o<=8633||o==8658||o==8660||o==8679||o==8704||8706<=o&&o<=8707||8711<=o&&o<=8712||o==8715||o==8719||o==8721||o==8725||o==8730||8733<=o&&o<=8736||o==8739||o==8741||8743<=o&&o<=8748||o==8750||8756<=o&&o<=8759||8764<=o&&o<=8765||o==8776||o==8780||o==8786||8800<=o&&o<=8801||8804<=o&&o<=8807||8810<=o&&o<=8811||8814<=o&&o<=8815||8834<=o&&o<=8835||8838<=o&&o<=8839||o==8853||o==8857||o==8869||o==8895||o==8978||9312<=o&&o<=9449||9451<=o&&o<=9547||9552<=o&&o<=9587||9600<=o&&o<=9615||9618<=o&&o<=9621||9632<=o&&o<=9633||9635<=o&&o<=9641||9650<=o&&o<=9651||9654<=o&&o<=9655||9660<=o&&o<=9661||9664<=o&&o<=9665||9670<=o&&o<=9672||o==9675||9678<=o&&o<=9681||9698<=o&&o<=9701||o==9711||9733<=o&&o<=9734||o==9737||9742<=o&&o<=9743||9748<=o&&o<=9749||o==9756||o==9758||o==9792||o==9794||9824<=o&&o<=9825||9827<=o&&o<=9829||9831<=o&&o<=9834||9836<=o&&o<=9837||o==9839||9886<=o&&o<=9887||9918<=o&&o<=9919||9924<=o&&o<=9933||9935<=o&&o<=9953||o==9955||9960<=o&&o<=9983||o==10045||o==10071||10102<=o&&o<=10111||11093<=o&&o<=11097||12872<=o&&o<=12879||57344<=o&&o<=63743||65024<=o&&o<=65039||o==65533||127232<=o&&o<=127242||127248<=o&&o<=127277||127280<=o&&o<=127337||127344<=o&&o<=127386||917760<=o&&o<=917999||983040<=o&&o<=1048573||1048576<=o&&o<=1114109?"A":"N"},e.characterLength=function(r){var s=this.eastAsianWidth(r);return s=="F"||s=="W"||s=="A"?2:1};function n(r){return r.match(/[\uD800-\uDBFF][\uDC00-\uDFFF]|[^\uD800-\uDFFF]/g)||[]}e.length=function(r){for(var s=n(r),i=0,o=0;o<s.length;o++)i=i+this.characterLength(s[o]);return i},e.slice=function(r,s,i){textLen=e.length(r),s=s||0,i=i||1,s<0&&(s=textLen+s),i<0&&(i=textLen+i);for(var o="",u=0,c=n(r),d=0;d<c.length;d++){var m=c[d],l=e.length(m);if(u>=s-(l==2?1:0))if(u+l<=i)o+=m;else break;u+=l}return o}})(co);Es=co.exports,hs=ao(Es),Fs=function(){return/\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67)\uDB40\uDC7F|(?:\uD83E\uDDD1\uD83C\uDFFF\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFC-\uDFFF])|\uD83D\uDC68(?:\uD83C\uDFFB(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|[\u2695\u2696\u2708]\uFE0F|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))?|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])\uFE0F|\u200D(?:(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D[\uDC66\uDC67])|\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC)?|(?:\uD83D\uDC69(?:\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69]))|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC69(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83E\uDDD1(?:\u200D(?:\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDE36\u200D\uD83C\uDF2B|\uD83C\uDFF3\uFE0F\u200D\u26A7|\uD83D\uDC3B\u200D\u2744|(?:(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\uD83C\uDFF4\u200D\u2620|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])\u200D[\u2640\u2642]|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u2600-\u2604\u260E\u2611\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26B0\u26B1\u26C8\u26CF\u26D1\u26D3\u26E9\u26F0\u26F1\u26F4\u26F7\u26F8\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u3030\u303D\u3297\u3299]|\uD83C[\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]|\uD83D[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3])\uFE0F|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDE35\u200D\uD83D\uDCAB|\uD83D\uDE2E\u200D\uD83D\uDCA8|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83E\uDDD1(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83D\uDC69(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF6\uD83C\uDDE6|\uD83C\uDDF4\uD83C\uDDF2|\uD83D\uDC08\u200D\u2B1B|\u2764\uFE0F\u200D(?:\uD83D\uDD25|\uD83E\uDE79)|\uD83D\uDC41\uFE0F|\uD83C\uDFF3\uFE0F|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|[#\*0-9]\uFE0F\u20E3|\u2764\uFE0F|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|\uD83C\uDFF4|(?:[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270C\u270D]|\uD83D[\uDD74\uDD90])(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC08\uDC15\uDC3B\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE2E\uDE35\uDE36\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5]|\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD]|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF]|[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0D\uDD0E\uDD10-\uDD17\uDD1D\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78\uDD7A-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCB\uDDD0\uDDE0-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6]|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26A7\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5-\uDED7\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])\uFE0F|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDD77\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g},ys=ao(Fs);qt=10,Zn=(t=0)=>e=>`\x1B[${e+t}m`,Qn=(t=0)=>e=>`\x1B[${38+t};5;${e}m`,eo=(t=0)=>(e,n,r)=>`\x1B[${38+t};2;${e};${n};${r}m`,C={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],gray:[90,39],grey:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgGray:[100,49],bgGrey:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}};Object.keys(C.modifier);xs=Object.keys(C.color),vs=Object.keys(C.bgColor);[...xs,...vs];_s=Ss(),dt=new Set(["\x1B","\x9B"]),ws=39,Qt="\x07",lo="[",As="]",Do="m",en=`${As}8;;`,to=t=>`${dt.values().next().value}${lo}${t}${Do}`,no=t=>`${dt.values().next().value}${en}${t}${Qt}`,bs=t=>t.split(" ").map(e=>Te(e)),zt=(t,e,n)=>{let r=[...e],s=!1,i=!1,o=Te(uo(t[t.length-1]));for(let[u,c]of r.entries()){let d=Te(c);if(o+d<=n?t[t.length-1]+=c:(t.push(c),o=0),dt.has(c)&&(s=!0,i=r.slice(u+1).join("").startsWith(en)),s){i?c===Qt&&(s=!1,i=!1):c===Do&&(s=!1);continue}o+=d,o===n&&u<r.length-1&&(t.push(""),o=0)}!o&&t[t.length-1].length>0&&t.length>1&&(t[t.length-2]+=t.pop())},ks=t=>{let e=t.split(" "),n=e.length;for(;n>0&&!(Te(e[n-1])>0);)n--;return n===e.length?t:e.slice(0,n).join(" ")+e.slice(n).join("")},$s=(t,e,n={})=>{if(n.trim!==!1&&t.trim()==="")return"";let r="",s,i,o=bs(t),u=[""];for(let[d,m]of t.split(" ").entries()){n.trim!==!1&&(u[u.length-1]=u[u.length-1].trimStart());let l=Te(u[u.length-1]);if(d!==0&&(l>=e&&(n.wordWrap===!1||n.trim===!1)&&(u.push(""),l=0),(l>0||n.trim===!1)&&(u[u.length-1]+=" ",l++)),n.hard&&o[d]>e){let E=e-l,S=1+Math.floor((o[d]-E-1)/e);Math.floor((o[d]-1)/e)<S&&u.push(""),zt(u,m,e);continue}if(l+o[d]>e&&l>0&&o[d]>0){if(n.wordWrap===!1&&l<e){zt(u,m,e);continue}u.push("")}if(l+o[d]>e&&n.wordWrap===!1){zt(u,m,e);continue}u[u.length-1]+=m}n.trim!==!1&&(u=u.map(d=>ks(d)));let c=[...u.join(`
|
|
9
|
-
`)];for(let[d,m]of c.entries()){if(r+=m,dt.has(m)){let{groups:E}=new RegExp(`(?:\\${lo}(?<code>\\d+)m|\\${en}(?<uri>.*)${Qt})`).exec(c.slice(d).join(""))||{groups:{}};if(E.code!==void 0){let
|
|
8
|
+
`),s=[];for(let i=0;i<Math.max(n.length,r.length);i++)n[i]!==r[i]&&s.push(i);return s}function ee(t){return t===Zt}function at(t,e){let n=t;n.isTTY&&n.setRawMode(e)}function mo({input:t=so,output:e=io,overwrite:n=!0,hideCursor:r=!0}={}){let s=Q.createInterface({input:t,output:e,prompt:"",tabSize:1});Q.emitKeypressEvents(t,s),t.isTTY&&t.setRawMode(!0);let i=(o,{name:u,sequence:c})=>{let d=String(o);if(tn([d,u,c],"cancel")){r&&e.write(A.cursor.show),process.exit(0);return}if(!n)return;Q.moveCursor(e,u==="return"?0:-1,u==="return"?-1:0,()=>{Q.clearLine(e,1,()=>{t.once("keypress",i)})})};return r&&e.write(A.cursor.hide),t.once("keypress",i),()=>{t.off("keypress",i),r&&e.write(A.cursor.show),t.isTTY&&!Os&&t.setRawMode(!1),s.terminal=!1,s.close()}}var A,Cs,co,Es,hs,Fs,ys,qt,Zn,Qn,eo,C,xs,Ss,_s,dt,ws,Qt,lo,As,Do,en,to,no,bs,zt,ks,$s,Ms,ct,Os,Zt,Rs,Ts,R,lt,Dt,Bs,Ps,ro,po,nn=f(()=>{A=ue(Yt(),1);Cs=fs();co={exports:{}};(function(t){var e={};t.exports=e,e.eastAsianWidth=function(r){var s=r.charCodeAt(0),i=r.length==2?r.charCodeAt(1):0,o=s;return 55296<=s&&s<=56319&&56320<=i&&i<=57343&&(s&=1023,i&=1023,o=s<<10|i,o+=65536),o==12288||65281<=o&&o<=65376||65504<=o&&o<=65510?"F":o==8361||65377<=o&&o<=65470||65474<=o&&o<=65479||65482<=o&&o<=65487||65490<=o&&o<=65495||65498<=o&&o<=65500||65512<=o&&o<=65518?"H":4352<=o&&o<=4447||4515<=o&&o<=4519||4602<=o&&o<=4607||9001<=o&&o<=9002||11904<=o&&o<=11929||11931<=o&&o<=12019||12032<=o&&o<=12245||12272<=o&&o<=12283||12289<=o&&o<=12350||12353<=o&&o<=12438||12441<=o&&o<=12543||12549<=o&&o<=12589||12593<=o&&o<=12686||12688<=o&&o<=12730||12736<=o&&o<=12771||12784<=o&&o<=12830||12832<=o&&o<=12871||12880<=o&&o<=13054||13056<=o&&o<=19903||19968<=o&&o<=42124||42128<=o&&o<=42182||43360<=o&&o<=43388||44032<=o&&o<=55203||55216<=o&&o<=55238||55243<=o&&o<=55291||63744<=o&&o<=64255||65040<=o&&o<=65049||65072<=o&&o<=65106||65108<=o&&o<=65126||65128<=o&&o<=65131||110592<=o&&o<=110593||127488<=o&&o<=127490||127504<=o&&o<=127546||127552<=o&&o<=127560||127568<=o&&o<=127569||131072<=o&&o<=194367||177984<=o&&o<=196605||196608<=o&&o<=262141?"W":32<=o&&o<=126||162<=o&&o<=163||165<=o&&o<=166||o==172||o==175||10214<=o&&o<=10221||10629<=o&&o<=10630?"Na":o==161||o==164||167<=o&&o<=168||o==170||173<=o&&o<=174||176<=o&&o<=180||182<=o&&o<=186||188<=o&&o<=191||o==198||o==208||215<=o&&o<=216||222<=o&&o<=225||o==230||232<=o&&o<=234||236<=o&&o<=237||o==240||242<=o&&o<=243||247<=o&&o<=250||o==252||o==254||o==257||o==273||o==275||o==283||294<=o&&o<=295||o==299||305<=o&&o<=307||o==312||319<=o&&o<=322||o==324||328<=o&&o<=331||o==333||338<=o&&o<=339||358<=o&&o<=359||o==363||o==462||o==464||o==466||o==468||o==470||o==472||o==474||o==476||o==593||o==609||o==708||o==711||713<=o&&o<=715||o==717||o==720||728<=o&&o<=731||o==733||o==735||768<=o&&o<=879||913<=o&&o<=929||931<=o&&o<=937||945<=o&&o<=961||963<=o&&o<=969||o==1025||1040<=o&&o<=1103||o==1105||o==8208||8211<=o&&o<=8214||8216<=o&&o<=8217||8220<=o&&o<=8221||8224<=o&&o<=8226||8228<=o&&o<=8231||o==8240||8242<=o&&o<=8243||o==8245||o==8251||o==8254||o==8308||o==8319||8321<=o&&o<=8324||o==8364||o==8451||o==8453||o==8457||o==8467||o==8470||8481<=o&&o<=8482||o==8486||o==8491||8531<=o&&o<=8532||8539<=o&&o<=8542||8544<=o&&o<=8555||8560<=o&&o<=8569||o==8585||8592<=o&&o<=8601||8632<=o&&o<=8633||o==8658||o==8660||o==8679||o==8704||8706<=o&&o<=8707||8711<=o&&o<=8712||o==8715||o==8719||o==8721||o==8725||o==8730||8733<=o&&o<=8736||o==8739||o==8741||8743<=o&&o<=8748||o==8750||8756<=o&&o<=8759||8764<=o&&o<=8765||o==8776||o==8780||o==8786||8800<=o&&o<=8801||8804<=o&&o<=8807||8810<=o&&o<=8811||8814<=o&&o<=8815||8834<=o&&o<=8835||8838<=o&&o<=8839||o==8853||o==8857||o==8869||o==8895||o==8978||9312<=o&&o<=9449||9451<=o&&o<=9547||9552<=o&&o<=9587||9600<=o&&o<=9615||9618<=o&&o<=9621||9632<=o&&o<=9633||9635<=o&&o<=9641||9650<=o&&o<=9651||9654<=o&&o<=9655||9660<=o&&o<=9661||9664<=o&&o<=9665||9670<=o&&o<=9672||o==9675||9678<=o&&o<=9681||9698<=o&&o<=9701||o==9711||9733<=o&&o<=9734||o==9737||9742<=o&&o<=9743||9748<=o&&o<=9749||o==9756||o==9758||o==9792||o==9794||9824<=o&&o<=9825||9827<=o&&o<=9829||9831<=o&&o<=9834||9836<=o&&o<=9837||o==9839||9886<=o&&o<=9887||9918<=o&&o<=9919||9924<=o&&o<=9933||9935<=o&&o<=9953||o==9955||9960<=o&&o<=9983||o==10045||o==10071||10102<=o&&o<=10111||11093<=o&&o<=11097||12872<=o&&o<=12879||57344<=o&&o<=63743||65024<=o&&o<=65039||o==65533||127232<=o&&o<=127242||127248<=o&&o<=127277||127280<=o&&o<=127337||127344<=o&&o<=127386||917760<=o&&o<=917999||983040<=o&&o<=1048573||1048576<=o&&o<=1114109?"A":"N"},e.characterLength=function(r){var s=this.eastAsianWidth(r);return s=="F"||s=="W"||s=="A"?2:1};function n(r){return r.match(/[\uD800-\uDBFF][\uDC00-\uDFFF]|[^\uD800-\uDFFF]/g)||[]}e.length=function(r){for(var s=n(r),i=0,o=0;o<s.length;o++)i=i+this.characterLength(s[o]);return i},e.slice=function(r,s,i){textLen=e.length(r),s=s||0,i=i||1,s<0&&(s=textLen+s),i<0&&(i=textLen+i);for(var o="",u=0,c=n(r),d=0;d<c.length;d++){var m=c[d],l=e.length(m);if(u>=s-(l==2?1:0))if(u+l<=i)o+=m;else break;u+=l}return o}})(co);Es=co.exports,hs=ao(Es),Fs=function(){return/\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67)\uDB40\uDC7F|(?:\uD83E\uDDD1\uD83C\uDFFF\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFC-\uDFFF])|\uD83D\uDC68(?:\uD83C\uDFFB(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|[\u2695\u2696\u2708]\uFE0F|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))?|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])\uFE0F|\u200D(?:(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D[\uDC66\uDC67])|\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC)?|(?:\uD83D\uDC69(?:\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69]))|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC69(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83E\uDDD1(?:\u200D(?:\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDE36\u200D\uD83C\uDF2B|\uD83C\uDFF3\uFE0F\u200D\u26A7|\uD83D\uDC3B\u200D\u2744|(?:(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\uD83C\uDFF4\u200D\u2620|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])\u200D[\u2640\u2642]|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u2600-\u2604\u260E\u2611\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26B0\u26B1\u26C8\u26CF\u26D1\u26D3\u26E9\u26F0\u26F1\u26F4\u26F7\u26F8\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u3030\u303D\u3297\u3299]|\uD83C[\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]|\uD83D[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3])\uFE0F|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDE35\u200D\uD83D\uDCAB|\uD83D\uDE2E\u200D\uD83D\uDCA8|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83E\uDDD1(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83D\uDC69(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF6\uD83C\uDDE6|\uD83C\uDDF4\uD83C\uDDF2|\uD83D\uDC08\u200D\u2B1B|\u2764\uFE0F\u200D(?:\uD83D\uDD25|\uD83E\uDE79)|\uD83D\uDC41\uFE0F|\uD83C\uDFF3\uFE0F|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|[#\*0-9]\uFE0F\u20E3|\u2764\uFE0F|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|\uD83C\uDFF4|(?:[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270C\u270D]|\uD83D[\uDD74\uDD90])(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC08\uDC15\uDC3B\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE2E\uDE35\uDE36\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5]|\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD]|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF]|[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0D\uDD0E\uDD10-\uDD17\uDD1D\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78\uDD7A-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCB\uDDD0\uDDE0-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6]|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26A7\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5-\uDED7\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])\uFE0F|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDD77\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g},ys=ao(Fs);qt=10,Zn=(t=0)=>e=>`\x1B[${e+t}m`,Qn=(t=0)=>e=>`\x1B[${38+t};5;${e}m`,eo=(t=0)=>(e,n,r)=>`\x1B[${38+t};2;${e};${n};${r}m`,C={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],gray:[90,39],grey:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgGray:[100,49],bgGrey:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}};Object.keys(C.modifier);xs=Object.keys(C.color),Ss=Object.keys(C.bgColor);[...xs,...Ss];_s=vs(),dt=new Set(["\x1B","\x9B"]),ws=39,Qt="\x07",lo="[",As="]",Do="m",en=`${As}8;;`,to=t=>`${dt.values().next().value}${lo}${t}${Do}`,no=t=>`${dt.values().next().value}${en}${t}${Qt}`,bs=t=>t.split(" ").map(e=>Te(e)),zt=(t,e,n)=>{let r=[...e],s=!1,i=!1,o=Te(uo(t[t.length-1]));for(let[u,c]of r.entries()){let d=Te(c);if(o+d<=n?t[t.length-1]+=c:(t.push(c),o=0),dt.has(c)&&(s=!0,i=r.slice(u+1).join("").startsWith(en)),s){i?c===Qt&&(s=!1,i=!1):c===Do&&(s=!1);continue}o+=d,o===n&&u<r.length-1&&(t.push(""),o=0)}!o&&t[t.length-1].length>0&&t.length>1&&(t[t.length-2]+=t.pop())},ks=t=>{let e=t.split(" "),n=e.length;for(;n>0&&!(Te(e[n-1])>0);)n--;return n===e.length?t:e.slice(0,n).join(" ")+e.slice(n).join("")},$s=(t,e,n={})=>{if(n.trim!==!1&&t.trim()==="")return"";let r="",s,i,o=bs(t),u=[""];for(let[d,m]of t.split(" ").entries()){n.trim!==!1&&(u[u.length-1]=u[u.length-1].trimStart());let l=Te(u[u.length-1]);if(d!==0&&(l>=e&&(n.wordWrap===!1||n.trim===!1)&&(u.push(""),l=0),(l>0||n.trim===!1)&&(u[u.length-1]+=" ",l++)),n.hard&&o[d]>e){let E=e-l,v=1+Math.floor((o[d]-E-1)/e);Math.floor((o[d]-1)/e)<v&&u.push(""),zt(u,m,e);continue}if(l+o[d]>e&&l>0&&o[d]>0){if(n.wordWrap===!1&&l<e){zt(u,m,e);continue}u.push("")}if(l+o[d]>e&&n.wordWrap===!1){zt(u,m,e);continue}u[u.length-1]+=m}n.trim!==!1&&(u=u.map(d=>ks(d)));let c=[...u.join(`
|
|
9
|
+
`)];for(let[d,m]of c.entries()){if(r+=m,dt.has(m)){let{groups:E}=new RegExp(`(?:\\${lo}(?<code>\\d+)m|\\${en}(?<uri>.*)${Qt})`).exec(c.slice(d).join(""))||{groups:{}};if(E.code!==void 0){let v=Number.parseFloat(E.code);s=v===ws?void 0:v}else E.uri!==void 0&&(i=E.uri.length===0?void 0:E.uri)}let l=_s.codes.get(Number(s));c[d+1]===`
|
|
10
10
|
`?(i&&(r+=no("")),s&&l&&(r+=to(l))):m===`
|
|
11
11
|
`&&(s&&l&&(r+=to(s)),i&&(r+=no(i)))}return r};Ms=["up","down","left","right","space","enter","cancel"],ct={actions:new Set(Ms),aliases:new Map([["k","up"],["j","down"],["h","left"],["l","right"],["","cancel"],["escape","cancel"]])};Os=globalThis.process.platform.startsWith("win"),Zt=Symbol("clack:cancel");Rs=Object.defineProperty,Ts=(t,e,n)=>e in t?Rs(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,R=(t,e,n)=>(Ts(t,typeof e!="symbol"?e+"":e,n),n),lt=class{constructor(e,n=!0){R(this,"input"),R(this,"output"),R(this,"_abortSignal"),R(this,"rl"),R(this,"opts"),R(this,"_render"),R(this,"_track",!1),R(this,"_prevFrame",""),R(this,"_subscribers",new Map),R(this,"_cursor",0),R(this,"state","initial"),R(this,"error",""),R(this,"value");let{input:r=so,output:s=io,render:i,signal:o,...u}=e;this.opts=u,this.onKeypress=this.onKeypress.bind(this),this.close=this.close.bind(this),this.render=this.render.bind(this),this._render=i.bind(this),this._track=n,this._abortSignal=o,this.input=r,this.output=s}unsubscribe(){this._subscribers.clear()}setSubscriber(e,n){let r=this._subscribers.get(e)??[];r.push(n),this._subscribers.set(e,r)}on(e,n){this.setSubscriber(e,{cb:n})}once(e,n){this.setSubscriber(e,{cb:n,once:!0})}emit(e,...n){let r=this._subscribers.get(e)??[],s=[];for(let i of r)i.cb(...n),i.once&&s.push(()=>r.splice(r.indexOf(i),1));for(let i of s)i()}prompt(){return new Promise((e,n)=>{if(this._abortSignal){if(this._abortSignal.aborted)return this.state="cancel",this.close(),e(Zt);this._abortSignal.addEventListener("abort",()=>{this.state="cancel",this.close()},{once:!0})}let r=new gs(0);r._write=(s,i,o)=>{this._track&&(this.value=this.rl?.line.replace(/\t/g,""),this._cursor=this.rl?.cursor??0,this.emit("value",this.value)),o()},this.input.pipe(r),this.rl=zn.createInterface({input:this.input,output:r,tabSize:2,prompt:"",escapeCodeTimeout:50}),zn.emitKeypressEvents(this.input,this.rl),this.rl.prompt(),this.opts.initialValue!==void 0&&this._track&&this.rl.write(this.opts.initialValue),this.input.on("keypress",this.onKeypress),at(this.input,!0),this.output.on("resize",this.render),this.render(),this.once("submit",()=>{this.output.write(A.cursor.show),this.output.off("resize",this.render),at(this.input,!1),e(this.value)}),this.once("cancel",()=>{this.output.write(A.cursor.show),this.output.off("resize",this.render),at(this.input,!1),e(Zt)})})}onKeypress(e,n){if(this.state==="error"&&(this.state="active"),n?.name&&(!this._track&&ct.aliases.has(n.name)&&this.emit("cursor",ct.aliases.get(n.name)),ct.actions.has(n.name)&&this.emit("cursor",n.name)),e&&(e.toLowerCase()==="y"||e.toLowerCase()==="n")&&this.emit("confirm",e.toLowerCase()==="y"),e===" "&&this.opts.placeholder&&(this.value||(this.rl?.write(this.opts.placeholder),this.emit("value",this.opts.placeholder))),e&&this.emit("key",e.toLowerCase()),n?.name==="return"){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.value))}this.state!=="error"&&(this.state="submit")}tn([e,n?.name,n?.sequence],"cancel")&&(this.state="cancel"),(this.state==="submit"||this.state==="cancel")&&this.emit("finalize"),this.render(),(this.state==="submit"||this.state==="cancel")&&this.close()}close(){this.input.unpipe(),this.input.removeListener("keypress",this.onKeypress),this.output.write(`
|
|
12
12
|
`),at(this.input,!1),this.rl?.close(),this.rl=void 0,this.emit(`${this.state}`,this.value),this.unsubscribe()}restoreCursor(){let e=oo(this._prevFrame,process.stdout.columns,{hard:!0}).split(`
|
|
13
13
|
`).length-1;this.output.write(A.cursor.move(-999,e*-1))}render(){let e=oo(this._render(this)??"",process.stdout.columns,{hard:!0});if(e!==this._prevFrame){if(this.state==="initial")this.output.write(A.cursor.hide);else{let n=Is(this._prevFrame,e);if(this.restoreCursor(),n&&n?.length===1){let r=n[0];this.output.write(A.cursor.move(0,r)),this.output.write(A.erase.lines(1));let s=e.split(`
|
|
14
14
|
`);this.output.write(s[r]),this._prevFrame=e,this.output.write(A.cursor.move(0,s.length-r-1));return}if(n&&n?.length>1){let r=n[0];this.output.write(A.cursor.move(0,r)),this.output.write(A.erase.down());let s=e.split(`
|
|
15
15
|
`).slice(r);this.output.write(s.join(`
|
|
16
|
-
`)),this._prevFrame=e;return}this.output.write(A.erase.down())}this.output.write(e),this.state==="initial"&&(this.state="active"),this._prevFrame=e}}},Dt=class extends lt{get cursor(){return this.value?0:1}get _value(){return this.cursor===0}constructor(e){super(e,!1),this.value=!!e.initialValue,this.on("value",()=>{this.value=this._value}),this.on("confirm",n=>{this.output.write(A.cursor.move(0,-1)),this.value=n,this.state="submit",this.close()}),this.on("cursor",()=>{this.value=!this.value})}},Bs=Object.defineProperty,Ps=(t,e,n)=>e in t?Bs(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,ro=(t,e,n)=>(Ps(t,typeof e!="symbol"?e+"":e,n),n),po=class extends lt{constructor(t){super(t,!1),ro(this,"options"),ro(this,"cursor",0),this.options=t.options,this.value=[...t.initialValues??[]],this.cursor=Math.max(this.options.findIndex(({value:e})=>e===t.cursorAt),0),this.on("key",e=>{e==="a"&&this.toggleAll()}),this.on("cursor",e=>{switch(e){case"left":case"up":this.cursor=this.cursor===0?this.options.length-1:this.cursor-1;break;case"down":case"right":this.cursor=this.cursor===this.options.length-1?0:this.cursor+1;break;case"space":this.toggleValue();break}})}get _value(){return this.options[this.cursor].value}toggleAll(){let t=this.value.length===this.options.length;this.value=t?[]:this.options.map(e=>e.value)}toggleValue(){let t=this.value.includes(this._value);this.value=t?this.value.filter(e=>e!==this._value):[...this.value,this._value]}}});import{stripVTControlCharacters as on}from"node:util";import G from"node:process";function Ls(){return G.platform!=="win32"?G.env.TERM!=="linux":!!G.env.CI||!!G.env.WT_SESSION||!!G.env.TERMINUS_SUBLIME||G.env.ConEmuTask==="{cmd::Cmder}"||G.env.TERM_PROGRAM==="Terminus-Sublime"||G.env.TERM_PROGRAM==="vscode"||G.env.TERM==="xterm-256color"||G.env.TERM==="alacritty"||G.env.TERMINAL_EMULATOR==="JetBrains-JediTerm"}var a,mt,rn,x,js,Fo,yo,pt,Ns,y,Be,go,fo,Us,Co,Ws,Xa,Eo,Gs,Hs,Ks,Js,Vs,Xs,Ys,xo,ho,Pe,
|
|
16
|
+
`)),this._prevFrame=e;return}this.output.write(A.erase.down())}this.output.write(e),this.state==="initial"&&(this.state="active"),this._prevFrame=e}}},Dt=class extends lt{get cursor(){return this.value?0:1}get _value(){return this.cursor===0}constructor(e){super(e,!1),this.value=!!e.initialValue,this.on("value",()=>{this.value=this._value}),this.on("confirm",n=>{this.output.write(A.cursor.move(0,-1)),this.value=n,this.state="submit",this.close()}),this.on("cursor",()=>{this.value=!this.value})}},Bs=Object.defineProperty,Ps=(t,e,n)=>e in t?Bs(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,ro=(t,e,n)=>(Ps(t,typeof e!="symbol"?e+"":e,n),n),po=class extends lt{constructor(t){super(t,!1),ro(this,"options"),ro(this,"cursor",0),this.options=t.options,this.value=[...t.initialValues??[]],this.cursor=Math.max(this.options.findIndex(({value:e})=>e===t.cursorAt),0),this.on("key",e=>{e==="a"&&this.toggleAll()}),this.on("cursor",e=>{switch(e){case"left":case"up":this.cursor=this.cursor===0?this.options.length-1:this.cursor-1;break;case"down":case"right":this.cursor=this.cursor===this.options.length-1?0:this.cursor+1;break;case"space":this.toggleValue();break}})}get _value(){return this.options[this.cursor].value}toggleAll(){let t=this.value.length===this.options.length;this.value=t?[]:this.options.map(e=>e.value)}toggleValue(){let t=this.value.includes(this._value);this.value=t?this.value.filter(e=>e!==this._value):[...this.value,this._value]}}});import{stripVTControlCharacters as on}from"node:util";import G from"node:process";function Ls(){return G.platform!=="win32"?G.env.TERM!=="linux":!!G.env.CI||!!G.env.WT_SESSION||!!G.env.TERMINUS_SUBLIME||G.env.ConEmuTask==="{cmd::Cmder}"||G.env.TERM_PROGRAM==="Terminus-Sublime"||G.env.TERM_PROGRAM==="vscode"||G.env.TERM==="xterm-256color"||G.env.TERM==="alacritty"||G.env.TERMINAL_EMULATOR==="JetBrains-JediTerm"}var a,mt,rn,x,js,Fo,yo,pt,Ns,y,Be,go,fo,Us,Co,Ws,Xa,Eo,Gs,Hs,Ks,Js,Vs,Xs,Ys,xo,ho,Pe,So,Le,je,gt,le,$,qs,ft,sn=f(()=>{nn();nn();a=ue(me(),1),mt=ue(Yt(),1);rn=Ls(),x=(t,e)=>rn?t:e,js=x("\u25C6","*"),Fo=x("\u25A0","x"),yo=x("\u25B2","x"),pt=x("\u25C7","o"),Ns=x("\u250C","T"),y=x("\u2502","|"),Be=x("\u2514","\u2014"),go=x("\u25CF",">"),fo=x("\u25CB"," "),Us=x("\u25FB","[\u2022]"),Co=x("\u25FC","[+]"),Ws=x("\u25FB","[ ]"),Xa=x("\u25AA","\u2022"),Eo=x("\u2500","-"),Gs=x("\u256E","+"),Hs=x("\u251C","+"),Ks=x("\u256F","+"),Js=x("\u25CF","\u2022"),Vs=x("\u25C6","*"),Xs=x("\u25B2","!"),Ys=x("\u25A0","x"),xo=t=>{switch(t){case"initial":case"active":return a.default.cyan(js);case"cancel":return a.default.red(Fo);case"error":return a.default.yellow(yo);case"submit":return a.default.green(pt)}},ho=t=>{let{cursor:e,options:n,style:r}=t,s=t.maxItems??Number.POSITIVE_INFINITY,i=Math.max(process.stdout.rows-4,0),o=Math.min(i,Math.max(s,5)),u=0;e>=u+o-3?u=Math.max(Math.min(e-o+3,n.length-o),0):e<u+2&&(u=Math.max(e-2,0));let c=o<n.length&&u>0,d=o<n.length&&u+o<n.length;return n.slice(u,u+o).map((m,l,E)=>{let v=l===0&&c,de=l===E.length-1&&d;return v||de?a.default.dim("..."):r(m,l+u===e)})},Pe=t=>{let e=t.active??"Yes",n=t.inactive??"No";return new Dt({active:e,inactive:n,initialValue:t.initialValue??!0,render(){let r=`${a.default.gray(y)}
|
|
17
17
|
${xo(this.state)} ${t.message}
|
|
18
18
|
`,s=this.value?e:n;switch(this.state){case"submit":return`${r}${a.default.gray(y)} ${a.default.dim(s)}`;case"cancel":return`${r}${a.default.gray(y)} ${a.default.strikethrough(a.default.dim(s))}
|
|
19
19
|
${a.default.gray(y)}`;default:return`${r}${a.default.cyan(y)} ${this.value?`${a.default.green(go)} ${e}`:`${a.default.dim(fo)} ${a.default.dim(e)}`} ${a.default.dim("/")} ${this.value?`${a.default.dim(fo)} ${a.default.dim(n)}`:`${a.default.green(go)} ${n}`}
|
|
20
20
|
${a.default.cyan(Be)}
|
|
21
|
-
`}}}).prompt()},
|
|
21
|
+
`}}}).prompt()},So=t=>{let e=(n,r)=>{let s=n.label??String(n.value);return r==="active"?`${a.default.cyan(Us)} ${s} ${n.hint?a.default.dim(`(${n.hint})`):""}`:r==="selected"?`${a.default.green(Co)} ${a.default.dim(s)}`:r==="cancelled"?`${a.default.strikethrough(a.default.dim(s))}`:r==="active-selected"?`${a.default.green(Co)} ${s} ${n.hint?a.default.dim(`(${n.hint})`):""}`:r==="submitted"?`${a.default.dim(s)}`:`${a.default.dim(Ws)} ${a.default.dim(s)}`};return new po({options:t.options,initialValues:t.initialValues,required:t.required??!0,cursorAt:t.cursorAt,validate(n){if(this.required&&n.length===0)return`Please select at least one option.
|
|
22
22
|
${a.default.reset(a.default.dim(`Press ${a.default.gray(a.default.bgWhite(a.default.inverse(" space ")))} to select, ${a.default.gray(a.default.bgWhite(a.default.inverse(" enter ")))} to submit`))}`},render(){let n=`${a.default.gray(y)}
|
|
23
23
|
${xo(this.state)} ${t.message}
|
|
24
24
|
`,r=(s,i)=>{let o=this.value.includes(s.value);return i&&o?e(s,"active-selected"):o?e(s,"selected"):e(s,i?"active":"inactive")};switch(this.state){case"submit":return`${n}${a.default.gray(y)} ${this.options.filter(({value:s})=>this.value.includes(s)).map(s=>e(s,"submitted")).join(a.default.dim(", "))||a.default.dim("none")}`;case"cancel":{let s=this.options.filter(({value:i})=>this.value.includes(i)).map(i=>e(i,"cancelled")).join(a.default.dim(", "));return`${n}${a.default.gray(y)} ${s.trim()?`${s}
|
|
@@ -47,19 +47,19 @@ ${a.default.gray(Be)} ${t}
|
|
|
47
47
|
`)},$={message:(t="",{symbol:e=a.default.gray(y)}={})=>{let n=[`${a.default.gray(y)}`];if(t){let[r,...s]=t.split(`
|
|
48
48
|
`);n.push(`${e} ${r}`,...s.map(i=>`${a.default.gray(y)} ${i}`))}process.stdout.write(`${n.join(`
|
|
49
49
|
`)}
|
|
50
|
-
`)},info:t=>{$.message(t,{symbol:a.default.blue(Js)})},success:t=>{$.message(t,{symbol:a.default.green(Vs)})},step:t=>{$.message(t,{symbol:a.default.green(pt)})},warn:t=>{$.message(t,{symbol:a.default.yellow(Xs)})},warning:t=>{$.warn(t)},error:t=>{$.message(t,{symbol:a.default.red(Ys)})}},qs=()=>{let t=rn?["\u25D2","\u25D0","\u25D3","\u25D1"]:["\u2022","o","O","0"],e=rn?80:120,n=process.env.CI==="true",r,s,i=!1,o="",u,c=I=>{let U=I>1?"Something went wrong":"Canceled";i&&$e(U,I)},d=()=>c(2),m=()=>c(1),l=()=>{process.on("uncaughtExceptionMonitor",d),process.on("unhandledRejection",d),process.on("SIGINT",m),process.on("SIGTERM",m),process.on("exit",c)},E=()=>{process.removeListener("uncaughtExceptionMonitor",d),process.removeListener("unhandledRejection",d),process.removeListener("SIGINT",m),process.removeListener("SIGTERM",m),process.removeListener("exit",c)},
|
|
50
|
+
`)},info:t=>{$.message(t,{symbol:a.default.blue(Js)})},success:t=>{$.message(t,{symbol:a.default.green(Vs)})},step:t=>{$.message(t,{symbol:a.default.green(pt)})},warn:t=>{$.message(t,{symbol:a.default.yellow(Xs)})},warning:t=>{$.warn(t)},error:t=>{$.message(t,{symbol:a.default.red(Ys)})}},qs=()=>{let t=rn?["\u25D2","\u25D0","\u25D3","\u25D1"]:["\u2022","o","O","0"],e=rn?80:120,n=process.env.CI==="true",r,s,i=!1,o="",u,c=I=>{let U=I>1?"Something went wrong":"Canceled";i&&$e(U,I)},d=()=>c(2),m=()=>c(1),l=()=>{process.on("uncaughtExceptionMonitor",d),process.on("unhandledRejection",d),process.on("SIGINT",m),process.on("SIGTERM",m),process.on("exit",c)},E=()=>{process.removeListener("uncaughtExceptionMonitor",d),process.removeListener("unhandledRejection",d),process.removeListener("SIGINT",m),process.removeListener("SIGTERM",m),process.removeListener("exit",c)},v=()=>{if(u===void 0)return;n&&process.stdout.write(`
|
|
51
51
|
`);let I=u.split(`
|
|
52
52
|
`);process.stdout.write(mt.cursor.move(-999,I.length-1)),process.stdout.write(mt.erase.down(I.length))},de=I=>I.replace(/\.+$/,""),Hn=(I="")=>{i=!0,r=mo(),o=de(I),process.stdout.write(`${a.default.gray(y)}
|
|
53
|
-
`);let U=0,z=0;l(),s=setInterval(()=>{if(n&&o===u)return;
|
|
53
|
+
`);let U=0,z=0;l(),s=setInterval(()=>{if(n&&o===u)return;v(),u=o;let Yr=a.default.magenta(t[U]),qr=n?"...":".".repeat(Math.floor(z)).slice(0,3);process.stdout.write(`${Yr} ${o}${qr}`),U=U+1<t.length?U+1:0,z=z<t.length?z+.125:0},e)},$e=(I="",U=0)=>{i=!1,clearInterval(s),v();let z=U===0?a.default.green(pt):U===1?a.default.red(Fo):a.default.red(yo);o=de(I??o),process.stdout.write(`${z} ${o}
|
|
54
54
|
`),E(),r()};return{start:Hn,stop:$e,message:(I="")=>{o=de(I??o)}}},ft=async t=>{for(let e of t){if(e.enabled===!1)continue;let n=qs();n.start(e.title);let r=await e.task(n.message);n.stop(r||e.title)}}});import{execSync as zs}from"child_process";import{existsSync as H,readdirSync as Zs}from"fs";import{homedir as _o}from"os";import{join as K}from"path";function Ne(t){try{return zs(`${q?"where":"which"} ${t}`,{stdio:"pipe"}),!0}catch(e){return process.env.DEBUG&&console.error(`[ide-detection] ${t} not in PATH:`,e instanceof Error?e.message:String(e)),!1}}function Qs(t){let e=K(_o(),".vscode","extensions");if(!H(e))return!1;try{return Zs(e).some(r=>r.toLowerCase().includes(t.toLowerCase()))}catch(n){return console.warn("[ide-detection] Failed to read VS Code extensions directory:",n instanceof Error?n.message:String(n)),!1}}function Ue(){let t=_o();return[{id:"claude-code",label:"Claude Code",detected:H(K(t,".claude")),supported:!0,hint:"recommended"},{id:"gemini-cli",label:"Gemini CLI",detected:H(K(t,".gemini")),supported:!0},{id:"opencode",label:"OpenCode",detected:H(K(t,".config","opencode"))||Ne("opencode"),supported:!0,hint:"plugin-based integration"},{id:"openclaw",label:"OpenClaw",detected:H(K(t,".openclaw")),supported:!0,hint:"plugin-based integration"},{id:"windsurf",label:"Windsurf",detected:H(K(t,".codeium","windsurf")),supported:!0},{id:"codex-cli",label:"Codex CLI",detected:H(K(t,".codex")),supported:!0,hint:"transcript-based integration"},{id:"cursor",label:"Cursor",detected:H(K(t,".cursor")),supported:!0,hint:"hooks + MCP integration"},{id:"copilot-cli",label:"Copilot CLI",detected:Ne("copilot"),supported:!0,hint:"MCP-based integration"},{id:"antigravity",label:"Antigravity",detected:H(K(t,".gemini","antigravity")),supported:!0,hint:"MCP-based integration"},{id:"goose",label:"Goose",detected:H(K(t,".config","goose"))||Ne("goose"),supported:!0,hint:"MCP-based integration"},{id:"crush",label:"Crush",detected:Ne("crush"),supported:!0,hint:"MCP-based integration"},{id:"roo-code",label:"Roo Code",detected:Qs("roo-code"),supported:!0,hint:"MCP-based integration"},{id:"warp",label:"Warp",detected:H(K(t,".warp"))||Ne("warp"),supported:!0,hint:"MCP-based integration"}]}var wo=f(()=>{"use strict";ce()});import{appendFileSync as ei,existsSync as Ao,mkdirSync as ti,readFileSync as ni}from"fs";import{join as Ct}from"path";import{homedir as oi}from"os";var un,bo,an,D,X=f(()=>{"use strict";un=(i=>(i[i.DEBUG=0]="DEBUG",i[i.INFO=1]="INFO",i[i.WARN=2]="WARN",i[i.ERROR=3]="ERROR",i[i.SILENT=4]="SILENT",i))(un||{}),bo=Ct(oi(),".claude-mem"),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 e=Ct(bo,"logs");Ao(e)||ti(e,{recursive:!0});let n=new Date().toISOString().split("T")[0];this.logFilePath=Ct(e,`claude-mem-${n}.log`)}catch(e){console.error("[LOGGER] Failed to initialize log file:",e instanceof Error?e.message:String(e)),this.logFilePath=null}}}getLevel(){if(this.level===null)try{let e=Ct(bo,"settings.json");if(Ao(e)){let n=ni(e,"utf-8"),s=(JSON.parse(n).CLAUDE_MEM_LOG_LEVEL||"INFO").toUpperCase();this.level=un[s]??1}else this.level=1}catch(e){console.error("[LOGGER] Failed to load log level from settings:",e instanceof Error?e.message:String(e)),this.level=1}return this.level}correlationId(e,n){return`obs-${e}-${n}`}sessionId(e){return`session-${e}`}formatData(e){if(e==null)return"";if(typeof e=="string")return e;if(typeof e=="number"||typeof e=="boolean")return e.toString();if(typeof e=="object"){if(e instanceof Error)return this.getLevel()===0?`${e.message}
|
|
55
55
|
${e.stack}`:e.message;if(Array.isArray(e))return`[${e.length} items]`;let n=Object.keys(e);return n.length===0?"{}":n.length<=3?JSON.stringify(e):`{${n.length} keys: ${n.slice(0,3).join(", ")}...}`}return String(e)}formatTool(e,n){if(!n)return e;let r=n;if(typeof n=="string")try{r=JSON.parse(n)}catch{r=n}if(e==="Bash"&&r.command)return`${e}(${r.command})`;if(r.file_path)return`${e}(${r.file_path})`;if(r.notebook_path)return`${e}(${r.notebook_path})`;if(e==="Glob"&&r.pattern)return`${e}(${r.pattern})`;if(e==="Grep"&&r.pattern)return`${e}(${r.pattern})`;if(r.url)return`${e}(${r.url})`;if(r.query)return`${e}(${r.query})`;if(e==="Task"){if(r.subagent_type)return`${e}(${r.subagent_type})`;if(r.description)return`${e}(${r.description})`}return e==="Skill"&&r.skill?`${e}(${r.skill})`:e==="LSP"&&r.operation?`${e}(${r.operation})`:e}formatTimestamp(e){let n=e.getFullYear(),r=String(e.getMonth()+1).padStart(2,"0"),s=String(e.getDate()).padStart(2,"0"),i=String(e.getHours()).padStart(2,"0"),o=String(e.getMinutes()).padStart(2,"0"),u=String(e.getSeconds()).padStart(2,"0"),c=String(e.getMilliseconds()).padStart(3,"0");return`${n}-${r}-${s} ${i}:${o}:${u}.${c}`}log(e,n,r,s,i){if(e<this.getLevel())return;this.ensureLogFileInitialized();let o=this.formatTimestamp(new Date),u=un[e].padEnd(5),c=n.padEnd(6),d="";s?.correlationId?d=`[${s.correlationId}] `:s?.sessionId&&(d=`[session-${s.sessionId}] `);let m="";i!=null&&(i instanceof Error?m=this.getLevel()===0?`
|
|
56
56
|
${i.message}
|
|
57
57
|
${i.stack}`:` ${i.message}`:this.getLevel()===0&&typeof i=="object"?m=`
|
|
58
|
-
`+JSON.stringify(i,null,2):m=" "+this.formatData(i));let l="";if(s){let{sessionId:
|
|
59
|
-
`,"utf8")}catch(
|
|
58
|
+
`+JSON.stringify(i,null,2):m=" "+this.formatData(i));let l="";if(s){let{sessionId:v,memorySessionId:de,correlationId:Hn,...$e}=s;Object.keys($e).length>0&&(l=` {${Object.entries($e).map(([U,z])=>`${U}=${z}`).join(", ")}}`)}let E=`[${o}] [${u}] [${c}] ${d}${r}${l}${m}`;if(this.logFilePath)try{ei(this.logFilePath,E+`
|
|
59
|
+
`,"utf8")}catch(v){process.stderr.write(`[LOGGER] Failed to write to log file: ${v instanceof Error?v.message:String(v)}
|
|
60
60
|
`)}else process.stderr.write(E+`
|
|
61
61
|
`)}debug(e,n,r,s){this.log(0,e,n,r,s)}info(e,n,r,s){this.log(1,e,n,r,s)}warn(e,n,r,s){this.log(2,e,n,r,s)}error(e,n,r,s){this.log(3,e,n,r,s)}dataIn(e,n,r,s){this.info(e,`\u2192 ${n}`,r,s)}dataOut(e,n,r,s){this.info(e,`\u2190 ${n}`,r,s)}success(e,n,r,s){this.info(e,`\u2713 ${n}`,r,s)}failure(e,n,r,s){this.error(e,`\u2717 ${n}`,r,s)}timing(e,n,r,s){this.info(e,`\u23F1 ${n}`,s,{duration:`${r}ms`})}happyPathError(e,n,r,s,i=""){let d=((new Error().stack||"").split(`
|
|
62
|
-
`)[2]||"").match(/at\s+(?:.*\s+)?\(?([^:]+):(\d+):(\d+)\)?/),m=d?`${d[1].split("/").pop()}:${d[2]}`:"unknown",l={...r,location:m};return this.warn(e,`[HAPPY-PATH] ${n}`,l,s),i}},D=new an});function ko(t){return process.platform==="win32"?Math.round(t*cn.WINDOWS_MULTIPLIER):t}var cn,$o=f(()=>{"use strict";cn={DEFAULT:3e5,HEALTH_CHECK:3e3,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}});import{readFileSync as ri,writeFileSync as Mo,existsSync as Io,mkdirSync as si}from"fs";import{join as Oo,dirname as ii}from"path";import{homedir as Ro}from"os";var De,To=f(()=>{"use strict";De=class{static DEFAULTS={CLAUDE_MEM_MODEL:"claude-sonnet-4-6",CLAUDE_MEM_CONTEXT_OBSERVATIONS:"50",CLAUDE_MEM_WORKER_PORT:
|
|
62
|
+
`)[2]||"").match(/at\s+(?:.*\s+)?\(?([^:]+):(\d+):(\d+)\)?/),m=d?`${d[1].split("/").pop()}:${d[2]}`:"unknown",l={...r,location:m};return this.warn(e,`[HAPPY-PATH] ${n}`,l,s),i}},D=new an});function ko(t){return process.platform==="win32"?Math.round(t*cn.WINDOWS_MULTIPLIER):t}var cn,$o=f(()=>{"use strict";cn={DEFAULT:3e5,HEALTH_CHECK:3e3,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}});import{readFileSync as ri,writeFileSync as Mo,existsSync as Io,mkdirSync as si}from"fs";import{join as Oo,dirname as ii}from"path";import{homedir as Ro}from"os";var De,To=f(()=>{"use strict";De=class{static DEFAULTS={CLAUDE_MEM_MODEL:"claude-sonnet-4-6",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:"cli",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:Oo(Ro(),".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_FOLDER_CLAUDEMD_ENABLED:"false",CLAUDE_MEM_FOLDER_USE_LOCAL_MD:"false",CLAUDE_MEM_TRANSCRIPTS_ENABLED:"true",CLAUDE_MEM_TRANSCRIPTS_CONFIG_PATH:Oo(Ro(),".claude-mem","transcript-watch.json"),CLAUDE_MEM_MAX_CONCURRENT_AGENTS:"2",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"};static getAllDefaults(){return{...this.DEFAULTS}}static get(e){return process.env[e]??this.DEFAULTS[e]}static getInt(e){let n=this.get(e);return parseInt(n,10)}static getBool(e){let n=this.get(e);return n==="true"||n===!0}static applyEnvOverrides(e){let n={...e};for(let r of Object.keys(this.DEFAULTS))process.env[r]!==void 0&&(n[r]=process.env[r]);return n}static loadFromFile(e){try{if(!Io(e)){let o=this.getAllDefaults();try{let u=ii(e);Io(u)||si(u,{recursive:!0}),Mo(e,JSON.stringify(o,null,2),"utf-8"),console.log("[SETTINGS] Created settings file with defaults:",e)}catch(u){console.warn("[SETTINGS] Failed to create settings file, using in-memory defaults:",e,u instanceof Error?u.message:String(u))}return this.applyEnvOverrides(o)}let n=ri(e,"utf-8"),r=JSON.parse(n),s=r;if(r.env&&typeof r.env=="object"){s=r.env;try{Mo(e,JSON.stringify(s,null,2),"utf-8"),console.log("[SETTINGS] Migrated settings file from nested to flat schema:",e)}catch(o){console.warn("[SETTINGS] Failed to auto-migrate settings file:",e,o instanceof Error?o.message:String(o))}}let i={...this.DEFAULTS};for(let o of Object.keys(this.DEFAULTS))s[o]!==void 0&&(i[o]=s[o]);return this.applyEnvOverrides(i)}catch(n){return console.warn("[SETTINGS] Failed to load settings, using defaults:",e,n instanceof Error?n.message:String(n)),this.applyEnvOverrides(this.getAllDefaults())}}}});import{join as b,dirname as ui,basename as ai}from"path";import{homedir as Bo}from"os";import{existsSync as ci,mkdirSync as gc}from"fs";import{execSync as Cc}from"child_process";import{fileURLToPath as li}from"url";function Di(){return typeof __dirname<"u"?__dirname:ui(li(import.meta.url))}function di(){if(process.env.CLAUDE_MEM_DATA_DIR)return process.env.CLAUDE_MEM_DATA_DIR;let t=b(Bo(),".claude-mem"),e=b(t,"settings.json");try{if(ci(e)){let{readFileSync:n}=ns("fs"),r=JSON.parse(n(e,"utf-8")),s=r.env??r;if(s.CLAUDE_MEM_DATA_DIR)return s.CLAUDE_MEM_DATA_DIR}}catch{}return t}var Fc,T,Ce,Et,yc,xc,Sc,vc,_c,wc,Ac,bc,mi,kc,$c,Mc,Ic,ht=f(()=>{"use strict";X();Fc=Di();T=di(),Ce=process.env.CLAUDE_CONFIG_DIR||b(Bo(),".claude"),Et=b(Ce,"plugins","marketplaces","thedotmack"),yc=b(T,"archives"),xc=b(T,"logs"),Sc=b(T,"trash"),vc=b(T,"backups"),_c=b(T,"modes"),wc=b(T,"settings.json"),Ac=b(T,"claude-mem.db"),bc=b(T,"vector-db"),mi=b(T,"observer-sessions"),kc=ai(mi),$c=b(Ce,"settings.json"),Mc=b(Ce,"commands"),Ic=b(Ce,"CLAUDE.md")});import Po from"path";import{readFileSync as Bc}from"fs";function gi(t,e={},n){return new Promise((r,s)=>{let i=setTimeout(()=>s(new Error(`Request timed out after ${n}ms`)),n);fetch(t,e).then(o=>{clearTimeout(i),r(o)},o=>{clearTimeout(i),s(o)})})}function We(){if(Ft!==null)return Ft;let t=Po.join(De.get("CLAUDE_MEM_DATA_DIR"),"settings.json"),e=De.loadFromFile(t);return Ft=parseInt(e.CLAUDE_MEM_WORKER_PORT,10),Ft}function fi(){if(yt!==null)return yt;let t=Po.join(De.get("CLAUDE_MEM_DATA_DIR"),"settings.json");return yt=De.loadFromFile(t).CLAUDE_MEM_WORKER_HOST,yt}function Ci(t){return`http://${fi()}:${We()}${t}`}function xt(t,e={}){let n=e.method??"GET",r=e.timeoutMs??pi,s=Ci(t),i={method:n};return e.headers&&(i.headers=e.headers),e.body&&(i.body=e.body),r>0?gi(s,i,r):fetch(s,i)}var pi,Ft,yt,St=f(()=>{"use strict";X();$o();To();ht();pi=(()=>{let t=process.env.CLAUDE_MEM_HEALTH_TIMEOUT_MS;if(t){let e=parseInt(t,10);if(Number.isFinite(e)&&e>=500&&e<=3e5)return e;D.warn("SYSTEM","Invalid CLAUDE_MEM_HEALTH_TIMEOUT_MS, using default",{value:t,min:500,max:3e5})}return ko(cn.HEALTH_CHECK)})();Ft=null,yt=null});import{existsSync as Ei,readFileSync as hi,writeFileSync as Lo,mkdirSync as jo,renameSync as Fi}from"fs";import{join as ln,basename as Hc}from"path";function No(t){try{return Ei(t)?JSON.parse(hi(t,"utf-8")):{}}catch(e){return D.error("CONFIG","Failed to read Cursor registry, using empty registry",{file:t,error:e instanceof Error?e.message:String(e)}),{}}}function Uo(t,e){let n=ln(t,"..");jo(n,{recursive:!0}),Lo(t,JSON.stringify(e,null,2))}function Dn(t,e){let n=ln(t,".cursor","rules"),r=ln(n,"claude-mem-context.mdc"),s=`${r}.tmp`;jo(n,{recursive:!0});let i=`---
|
|
63
63
|
alwaysApply: true
|
|
64
64
|
description: "Claude-mem context from past sessions (auto-updated)"
|
|
65
65
|
---
|
|
@@ -72,7 +72,7 @@ ${e}
|
|
|
72
72
|
|
|
73
73
|
---
|
|
74
74
|
*Updated after last session. Use claude-mem's MCP search tools for more detailed queries.*
|
|
75
|
-
`;Lo(s,i),Fi(s,r)}var Wo=f(()=>{"use strict";X()});var zo={};V(zo,{checkCursorHooksStatus:()=>qo,configureCursorMcp:()=>wi,detectClaudeCode:()=>Mi,detectPlatform:()=>Ko,findBunPath:()=>he,findMcpServerPath:()=>Ge,findWorkerServicePath:()=>Ee,getScriptExtension:()=>
|
|
75
|
+
`;Lo(s,i),Fi(s,r)}var Wo=f(()=>{"use strict";X()});var zo={};V(zo,{checkCursorHooksStatus:()=>qo,configureCursorMcp:()=>wi,detectClaudeCode:()=>Mi,detectPlatform:()=>Ko,findBunPath:()=>he,findMcpServerPath:()=>Ge,findWorkerServicePath:()=>Ee,getScriptExtension:()=>vi,getTargetDir:()=>wt,handleCursorCommand:()=>Ii,installCursorHooks:()=>Xo,readCursorRegistry:()=>_t,registerCursorProject:()=>Jo,uninstallCursorHooks:()=>Yo,unregisterCursorProject:()=>Vo,updateCursorContextForProject:()=>_i,writeCursorRegistry:()=>gn});import p from"path";import{homedir as vt}from"os";import{existsSync as P,readFileSync as Go,writeFileSync as mn,unlinkSync as dn,mkdirSync as pn}from"fs";import{exec as yi}from"child_process";import{promisify as xi}from"util";function Ko(){return process.platform==="win32"?"windows":"unix"}function vi(){return Ko()==="windows"?".ps1":".sh"}function _t(){return No(Ho)}function gn(t){Uo(Ho,t)}function Jo(t,e){let n=_t();n[t]={workspacePath:e,installedAt:new Date().toISOString()},gn(n),D.info("CURSOR","Registered project for auto-context updates",{projectName:t,workspacePath:e})}function Vo(t){let e=_t();e[t]&&(delete e[t],gn(e),D.info("CURSOR","Unregistered project",{projectName:t}))}async function _i(t,e){let r=_t()[t];if(r)try{let s=await xt(`/api/context/inject?project=${encodeURIComponent(t)}`);if(!s.ok)return;let i=await s.text();if(!i||!i.trim())return;Dn(r.workspacePath,i),D.debug("CURSOR","Updated context file",{projectName:t,workspacePath:r.workspacePath})}catch(s){s instanceof Error?D.error("WORKER","Failed to update context file",{projectName:t},s):D.error("WORKER","Failed to update context file",{projectName:t},new Error(String(s)))}}function Ge(){let t=[p.join(Et,"plugin","scripts","mcp-server.cjs"),p.join(process.cwd(),"plugin","scripts","mcp-server.cjs")];for(let e of t)if(P(e))return e;return null}function Ee(){let t=[p.join(Et,"plugin","scripts","worker-service.cjs"),p.join(process.cwd(),"plugin","scripts","worker-service.cjs")];for(let e of t)if(P(e))return e;return null}function he(){let t=[p.join(vt(),".bun","bin","bun"),"/usr/local/bin/bun","/usr/bin/bun",...process.platform==="win32"?[p.join(vt(),".bun","bin","bun.exe"),p.join(process.env.LOCALAPPDATA||"","bun","bun.exe")]:[]];for(let e of t)if(e&&P(e))return e;return"bun"}function wt(t){switch(t){case"project":return p.join(process.cwd(),".cursor");case"user":return p.join(vt(),".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 wi(t){let e=Ge();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 n=wt(t);if(!n)return console.error(`Invalid target: ${t}. Use: project or user`),1;let r=p.join(n,"mcp.json");try{pn(n,{recursive:!0});let s={mcpServers:{}};if(P(r))try{s=JSON.parse(Go(r,"utf-8")),s.mcpServers||(s.mcpServers={})}catch(i){i instanceof Error?D.error("WORKER","Corrupt mcp.json, creating new config",{path:r},i):D.error("WORKER","Corrupt mcp.json, creating new config",{path:r},new Error(String(i))),s={mcpServers:{}}}return s.mcpServers["claude-mem"]={command:"node",args:[e]},mn(r,JSON.stringify(s,null,2)),console.log(` Configured MCP server in ${t==="user"?"~/.cursor":".cursor"}/mcp.json`),console.log(` Server path: ${e}`),0}catch(s){return console.error(`Failed to configure MCP: ${s.message}`),1}}async function Xo(t){console.log(`
|
|
76
76
|
Installing Claude-Mem Cursor hooks (${t} level)...
|
|
77
77
|
`);let e=wt(t);if(!e)return console.error(`Invalid target: ${t}. Use: project, user, or enterprise`),1;let n=Ee();if(!n)return console.error("Could not find worker-service.cjs"),console.error(" Expected at: ~/.claude/plugins/marketplaces/thedotmack/plugin/scripts/worker-service.cjs"),1;let r=process.cwd(),s=p.join(e,"hooks.json"),i=he(),o=i.replace(/\\/g,"\\\\"),u=n.replace(/\\/g,"\\\\"),c=m=>`"${o}" "${u}" hook cursor ${m}`;console.log(` Using Bun runtime: ${i}`);let d={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 pn(e,{recursive:!0}),await Ai(s,d,n,t,e,r),0}catch(m){let l=m instanceof Error?m.message:String(m);return console.error(`
|
|
78
78
|
Installation failed: ${l}`),t==="enterprise"&&console.error(" Tip: Enterprise installation may require sudo/admin privileges"),1}}async function Ai(t,e,n,r,s,i){mn(t,JSON.stringify(e,null,2)),console.log(" Created hooks.json (unified CLI mode)"),console.log(` Worker service: ${n}`),r==="project"&&await bi(s,i),console.log(`
|
|
@@ -106,8 +106,8 @@ Uninstallation failed: ${c}`),1}}function $i(t,e,n,r,s){for(let i of e){let o=p.
|
|
|
106
106
|
Uninstallation complete!
|
|
107
107
|
`),console.log("Restart Cursor to apply changes.")}function qo(){console.log(`
|
|
108
108
|
Claude-Mem Cursor Hooks Status
|
|
109
|
-
`);let t=[{name:"Project",dir:p.join(process.cwd(),".cursor")},{name:"User",dir:p.join(
|
|
110
|
-
`),0}async function Mi(){try{let{stdout:e}=await
|
|
109
|
+
`);let t=[{name:"Project",dir:p.join(process.cwd(),".cursor")},{name:"User",dir:p.join(vt(),".cursor")}];process.platform==="darwin"?t.push({name:"Enterprise",dir:"/Library/Application Support/Cursor"}):process.platform==="linux"&&t.push({name:"Enterprise",dir:"/etc/cursor"});let e=!1;for(let n of t){let r=p.join(n.dir,"hooks.json"),s=p.join(n.dir,"hooks");if(P(r)){e=!0,console.log(`${n.name}: Installed`),console.log(` Config: ${r}`);let i=null;try{i=JSON.parse(Go(r,"utf-8"))}catch(o){o instanceof Error?D.error("WORKER","Unable to parse hooks.json",{path:r},o):D.error("WORKER","Unable to parse hooks.json",{path:r},new Error(String(o))),console.log(" Mode: Unable to parse hooks.json")}if(i){let o=i?.hooks?.beforeSubmitPrompt?.[0]?.command||"";if(o.includes("worker-service.cjs")&&o.includes("hook cursor"))console.log(" Mode: Unified CLI (bun worker-service.cjs)");else{let u=["session-init.sh","context-inject.sh","save-observation.sh"],c=["session-init.ps1","context-inject.ps1","save-observation.ps1"],d=u.some(l=>P(p.join(s,l))),m=c.some(l=>P(p.join(s,l)));d||m?(console.log(" Mode: Legacy shell scripts (consider reinstalling for unified CLI)"),d&&m?console.log(" Platform: Both (bash + PowerShell)"):d?console.log(" Platform: Unix (bash)"):m&&console.log(" Platform: Windows (PowerShell)")):console.log(" Mode: Unknown configuration")}}if(n.name==="Project"){let o=p.join(n.dir,"rules","claude-mem-context.mdc");P(o)?console.log(" Context: Active"):console.log(" Context: Not yet generated (will be created on first prompt)")}}else console.log(`${n.name}: Not installed`);console.log("")}return e||console.log(`No hooks installed. Run: claude-mem cursor install
|
|
110
|
+
`),0}async function Mi(){try{let{stdout:e}=await Si("which claude || where claude",{timeout:5e3});if(e.trim())return!0}catch(e){e instanceof Error?D.debug("WORKER","Claude CLI not in PATH",{},e):D.debug("WORKER","Claude CLI not in PATH",{},new Error(String(e)))}let t=p.join(Ce,"plugins");return!!P(t)}async function Ii(t,e){switch(t){case"install":{let n=e[0]||"project";return Xo(n)}case"uninstall":{let n=e[0]||"project";return Yo(n)}case"status":return qo();case"setup":return console.log("Use the main entry point for setup"),0;default:return console.log(`
|
|
111
111
|
Claude-Mem Cursor Integration
|
|
112
112
|
|
|
113
113
|
Usage: claude-mem cursor <command> [options]
|
|
@@ -131,7 +131,7 @@ Examples:
|
|
|
131
131
|
claude-mem cursor status # Check if hooks are installed
|
|
132
132
|
|
|
133
133
|
For more info: https://docs.claude-mem.ai/cursor
|
|
134
|
-
`),0}}var
|
|
134
|
+
`),0}}var Si,Ho,He=f(()=>{"use strict";X();St();ht();Wo();Si=xi(yi),Ho=p.join(T,"cursor-projects.json")});var hn={};V(hn,{checkGeminiCliHooksStatus:()=>nr,handleGeminiCliCommand:()=>Ui,installGeminiCliHooks:()=>er,uninstallGeminiCliHooks:()=>tr});import fn from"path";import{homedir as Oi}from"os";import{existsSync as Fe,readFileSync as At,writeFileSync as Cn,mkdirSync as Zo}from"fs";function Ti(t,e,n){let r=ye[n];if(!r)throw new Error(`Unknown Gemini CLI event: ${n}`);let s=t.replace(/\\/g,"\\\\"),i=e.replace(/\\/g,"\\\\");return`"${s}" "${i}" hook gemini-cli ${r}`}function Bi(t){return{matcher:"*",hooks:[{name:Ke,type:"command",command:t,timeout:Ri}]}}function En(){if(!Fe(M))return{};let t=At(M,"utf-8");try{return JSON.parse(t)}catch(e){throw e instanceof Error?D.error("WORKER","Corrupt JSON in Gemini settings",{path:M},e):D.error("WORKER","Corrupt JSON in Gemini settings",{path:M},new Error(String(e))),new Error(`Corrupt JSON in ${M}, refusing to overwrite user settings`)}}function Qo(t){Zo(bt,{recursive:!0}),Cn(M,JSON.stringify(t,null,2)+`
|
|
135
135
|
`)}function Pi(t,e){let n={...t};n.hooks||(n.hooks={});for(let[r,s]of Object.entries(e)){let i=n.hooks[r]??[];for(let o of s){let u=i.findIndex(c=>c.hooks.some(d=>d.name===Ke));if(u>=0){let c=i[u],d=c.hooks.findIndex(m=>m.name===Ke);d>=0?c.hooks[d]=o.hooks[0]:c.hooks.push(o.hooks[0])}else i.push(o)}n.hooks[r]=i}return n}function Li(){let t="<claude-mem-context>",n=`${t}
|
|
136
136
|
# Memory Context from Past Sessions
|
|
137
137
|
|
|
@@ -197,17 +197,17 @@ ${xe}`;if(Gi(t)){let i=Hi(t,"utf-8"),o=i.indexOf(Je),u=i.indexOf(xe);o!==-1&&u!=
|
|
|
197
197
|
|
|
198
198
|
${s}
|
|
199
199
|
`,"utf-8"):yn(t,s+`
|
|
200
|
-
`,"utf-8")}var Je,xe,xn=f(()=>{"use strict";Je="<claude-mem-context>",xe="</claude-mem-context>"});var _n={};V(_n,{checkOpenCodeStatus:()=>tu,findBuiltPluginPath:()=>ir,getInstalledPluginPath:()=>Xe,getOpenCodeAgentsMdPath:()=>Ve,getOpenCodeConfigDirectory:()=>$t,getOpenCodePluginsDirectory:()=>
|
|
201
|
-
`,"utf-8"),console.log(" Cleaned context from AGENTS.md"))}function eu(){let t=!1,e=Xe();if(
|
|
200
|
+
`,"utf-8")}var Je,xe,xn=f(()=>{"use strict";Je="<claude-mem-context>",xe="</claude-mem-context>"});var _n={};V(_n,{checkOpenCodeStatus:()=>tu,findBuiltPluginPath:()=>ir,getInstalledPluginPath:()=>Xe,getOpenCodeAgentsMdPath:()=>Ve,getOpenCodeConfigDirectory:()=>$t,getOpenCodePluginsDirectory:()=>Sn,injectContextIntoAgentsMd:()=>vn,installOpenCodeIntegration:()=>nu,installOpenCodePlugin:()=>ur,syncContextToAgentsMd:()=>qi,uninstallOpenCodePlugin:()=>eu});import te from"path";import{homedir as or}from"os";import{fileURLToPath as Ji}from"url";import{existsSync as Se,readFileSync as rr,writeFileSync as Vi,mkdirSync as Xi,copyFileSync as Yi,unlinkSync as sr}from"fs";function $t(){return process.env.OPENCODE_CONFIG_DIR?process.env.OPENCODE_CONFIG_DIR:te.join(or(),".config","opencode")}function Sn(){return te.join($t(),"plugins")}function Ve(){return te.join($t(),"AGENTS.md")}function Xe(){return te.join(Sn(),"claude-mem.js")}function ir(){let t=[te.join(process.env.CLAUDE_CONFIG_DIR||te.join(or(),".claude"),"plugins","marketplaces","thedotmack","dist","opencode-plugin","index.js"),te.join(te.dirname(Ji(import.meta.url)),"..","..","..","dist","opencode-plugin","index.js")];for(let e of t)if(Se(e))return e;return null}function ur(){let t=ir();if(!t)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 e=Sn(),n=Xe();try{return Xi(e,{recursive:!0}),Yi(t,n),console.log(` Plugin installed to: ${n}`),D.info("OPENCODE","Plugin installed",{destination:n}),0}catch(r){let s=r instanceof Error?r.message:String(r);return console.error(`Failed to install OpenCode plugin: ${s}`),1}}function vn(t){let e=Ve();try{return kt(e,t,"# Claude-Mem Memory Context"),D.info("OPENCODE","Context injected into AGENTS.md",{path:e}),0}catch(n){let r=n instanceof Error?n.message:String(n);return console.error(`Failed to inject context into AGENTS.md: ${r}`),1}}async function qi(t,e){try{await Zi(t,e)}catch(n){n instanceof Error?D.debug("WORKER","Worker not available during context sync",{},n):D.debug("WORKER","Worker not available during context sync",{},new Error(String(n)))}}async function zi(){let t=We();if(!(await fetch(`http://127.0.0.1:${t}/api/readiness`)).ok)return null;let n=await fetch(`http://127.0.0.1:${t}/api/context/inject?project=opencode`);if(!n.ok)return null;let r=await n.text();return r&&r.trim()?r:null}async function Zi(t,e){let n=await fetch(`http://127.0.0.1:${t}/api/context/inject?project=${encodeURIComponent(e)}`);if(!n.ok)return;let r=await n.text();r&&r.trim()&&vn(r)!==0&&D.warn("OPENCODE","Failed to inject context into AGENTS.md during sync")}function Qi(t,e){e.length===0||e==="# Claude-Mem Memory Context"?(sr(t),console.log(" Removed empty AGENTS.md")):(Vi(t,e+`
|
|
201
|
+
`,"utf-8"),console.log(" Cleaned context from AGENTS.md"))}function eu(){let t=!1,e=Xe();if(Se(e))try{sr(e),console.log(` Removed plugin: ${e}`)}catch(r){let s=r instanceof Error?r.message:String(r);console.error(` Failed to remove plugin: ${s}`),t=!0}let n=Ve();if(Se(n)){let r;try{r=rr(n,"utf-8")}catch(o){let u=o instanceof Error?o.message:String(o);console.error(` Failed to read AGENTS.md: ${u}`),t=!0,r=""}let s=r.indexOf(Je),i=r.indexOf(xe);if(s!==-1&&i!==-1){r=r.slice(0,s).trimEnd()+`
|
|
202
202
|
`+r.slice(i+xe.length).trimStart();let o=r.trim();try{Qi(n,o)}catch(u){let c=u instanceof Error?u.message:String(u);console.error(` Failed to clean AGENTS.md: ${c}`),t=!0}}}return t?1:0}function tu(){console.log(`
|
|
203
203
|
Claude-Mem OpenCode Integration Status
|
|
204
|
-
`);let t=$t(),e=Xe(),n=Ve();if(console.log(`Config directory: ${t}`),console.log(` Exists: ${
|
|
204
|
+
`);let t=$t(),e=Xe(),n=Ve();if(console.log(`Config directory: ${t}`),console.log(` Exists: ${Se(t)?"yes":"no"}`),console.log(""),console.log(`Plugin: ${e}`),console.log(` Installed: ${Se(e)?"yes":"no"}`),console.log(""),console.log(`Context (AGENTS.md): ${n}`),Se(n)){let s=rr(n,"utf-8").includes(Je);console.log(" Exists: yes"),console.log(` Has claude-mem context: ${s?"yes":"no"}`)}else console.log(" Exists: no");return console.log(""),0}async function nu(){console.log(`
|
|
205
205
|
Installing Claude-Mem for OpenCode...
|
|
206
206
|
`);let t=ur();if(t!==0)return t;let n=`# Memory Context from Past Sessions
|
|
207
207
|
|
|
208
208
|
*No context yet. Complete your first session and context will appear here.*
|
|
209
209
|
|
|
210
|
-
Use claude-mem search tools for manual memory queries.`,r="placeholder";try{let i=await zi();i&&(n=i,r="existing memory")}catch(i){i instanceof Error?D.debug("WORKER","Worker not available during OpenCode install",{},i):D.debug("WORKER","Worker not available during OpenCode install",{},new Error(String(i)))}return
|
|
210
|
+
Use claude-mem search tools for manual memory queries.`,r="placeholder";try{let i=await zi();i&&(n=i,r="existing memory")}catch(i){i instanceof Error?D.debug("WORKER","Worker not available during OpenCode install",{},i):D.debug("WORKER","Worker not available during OpenCode install",{},new Error(String(i)))}return vn(n)!==0?D.warn("OPENCODE",`Failed to inject ${r} context into AGENTS.md during install`):console.log(r==="existing memory"?" Context injected from existing memory":" Placeholder context created (worker not running)"),console.log(`
|
|
211
211
|
Installation complete!
|
|
212
212
|
|
|
213
213
|
Plugin installed to: ${Xe()}
|
|
@@ -217,7 +217,7 @@ Next steps:
|
|
|
217
217
|
1. Start claude-mem worker: npx claude-mem start
|
|
218
218
|
2. Restart OpenCode to load the plugin
|
|
219
219
|
3. Memory capture is automatic from then on
|
|
220
|
-
`),0}var wn=f(()=>{"use strict";X();xn();
|
|
220
|
+
`),0}var wn=f(()=>{"use strict";X();xn();St()});var kn={};V(kn,{checkWindsurfHooksStatus:()=>gr,handleWindsurfCommand:()=>mu,installWindsurfHooks:()=>mr,readWindsurfRegistry:()=>Rt,registerWindsurfProject:()=>Dr,uninstallWindsurfHooks:()=>pr,unregisterWindsurfProject:()=>dr,updateWindsurfContextForProject:()=>su,writeWindsurfContextFile:()=>bn,writeWindsurfRegistry:()=>An});import L from"path";import{homedir as ou}from"os";import{existsSync as _e,readFileSync as It,writeFileSync as Ye,unlinkSync as cr,mkdirSync as Ot,renameSync as ru}from"fs";function Rt(){try{return _e(ve)?JSON.parse(It(ve,"utf-8")):{}}catch(t){return t instanceof Error?D.error("WORKER","Failed to read registry, using empty",{file:ve},t):D.error("WORKER","Failed to read registry, using empty",{file:ve},new Error(String(t))),{}}}function An(t){let e=L.dirname(ve);Ot(e,{recursive:!0}),Ye(ve,JSON.stringify(t,null,2))}function Dr(t){let e=Rt();e[t]={installedAt:new Date().toISOString()},An(e),D.info("WINDSURF","Registered project for auto-context updates",{workspacePath:t})}function dr(t){let e=Rt();e[t]&&(delete e[t],An(e),D.info("WINDSURF","Unregistered project",{workspacePath:t}))}async function su(t,e,n){if(Rt()[e])try{let i=await fetch(`http://127.0.0.1:${n}/api/context/inject?project=${encodeURIComponent(t)}`);if(!i.ok)return;let o=await i.text();if(!o||!o.trim())return;bn(e,o),D.debug("WINDSURF","Updated context file",{projectName:t,workspacePath:e})}catch(i){i instanceof Error?D.error("WORKER","Failed to update context file",{projectName:t,workspacePath:e},i):D.error("WORKER","Failed to update context file",{projectName:t,workspacePath:e},new Error(String(i)))}}function bn(t,e){let n=L.join(t,".windsurf","rules"),r=L.join(n,"claude-mem-context.md"),s=`${r}.tmp`;Ot(n,{recursive:!0});let i=`# Memory Context from Past Sessions
|
|
221
221
|
|
|
222
222
|
The following context is from claude-mem, a persistent memory system that tracks your coding sessions.
|
|
223
223
|
|
|
@@ -278,13 +278,13 @@ Examples:
|
|
|
278
278
|
claude-mem windsurf status # Check if hooks are installed
|
|
279
279
|
|
|
280
280
|
For more info: https://docs.claude-mem.ai/windsurf
|
|
281
|
-
`),0}}var lr,_,ar,
|
|
282
|
-
`,"utf-8")}function fu(t=37777,e="openclaw",n=!0){let r=In();if(r.plugins||(r.plugins={}),r.plugins.slots||(r.plugins.slots={}),r.plugins.entries||(r.plugins.entries={}),r.plugins.slots.memory="claude-mem",!r.plugins.entries["claude-mem"])r.plugins.entries["claude-mem"]={enabled:!0,config:{workerPort:t,project:e,syncMemoryFile:n}};else{r.plugins.entries["claude-mem"].enabled=!0,r.plugins.entries["claude-mem"].config||(r.plugins.entries["claude-mem"].config={});let s=r.plugins.entries["claude-mem"].config;s.workerPort===void 0&&(s.workerPort=t),s.project===void 0&&(s.project=e),s.syncMemoryFile===void 0&&(s.syncMemoryFile=n)}xr(r)}function Cu(){let t=we();if(!Y(t))return;let e=In();e.plugins?.entries?.["claude-mem"]&&delete e.plugins.entries["claude-mem"],e.plugins?.slots?.memory==="claude-mem"&&delete e.plugins.slots.memory,xr(e)}function
|
|
281
|
+
`),0}}var lr,_,ar,ve,Mt,$n=f(()=>{"use strict";X();St();ht();He();lr=L.join(ou(),".codeium","windsurf"),_=L.join(lr,"hooks.json"),ar=6e3,ve=L.join(T,"windsurf-projects.json"),Mt=["pre_user_prompt","post_write_code","post_run_command","post_mcp_tool_use","post_cascade_response"]});var On={};V(On,{checkOpenClawStatus:()=>Fu,findPluginManifestPath:()=>Fr,findPluginSkillsDirectory:()=>yr,findPreBuiltPluginDirectory:()=>hr,getOpenClawClaudeMemExtensionDirectory:()=>ze,getOpenClawConfigDirectory:()=>qe,getOpenClawConfigFilePath:()=>we,getOpenClawExtensionsDirectory:()=>Er,installOpenClawIntegration:()=>yu,installOpenClawPlugin:()=>Sr,uninstallOpenClawPlugin:()=>hu});import S from"path";import{homedir as Tt}from"os";import{existsSync as Y,readFileSync as pu,writeFileSync as fr,mkdirSync as Cr,cpSync as Mn,rmSync as gu}from"fs";function qe(){return S.join(Tt(),".openclaw")}function Er(){return S.join(qe(),"extensions")}function ze(){return S.join(Er(),"claude-mem")}function we(){return S.join(qe(),"openclaw.json")}function hr(){let t=[S.join(process.env.CLAUDE_CONFIG_DIR||S.join(Tt(),".claude"),"plugins","marketplaces","thedotmack"),process.cwd()];for(let e of t){let n=S.join(e,"openclaw","dist"),r=S.join(n,"index.js");if(Y(r))return n}return null}function Fr(){let t=[S.join(process.env.CLAUDE_CONFIG_DIR||S.join(Tt(),".claude"),"plugins","marketplaces","thedotmack"),process.cwd()];for(let e of t){let n=S.join(e,"openclaw","openclaw.plugin.json");if(Y(n))return n}return null}function yr(){let t=[S.join(process.env.CLAUDE_CONFIG_DIR||S.join(Tt(),".claude"),"plugins","marketplaces","thedotmack"),process.cwd()];for(let e of t){let n=S.join(e,"openclaw","skills");if(Y(n))return n}return null}function In(){let t=we();if(!Y(t))return{};try{return JSON.parse(pu(t,"utf-8"))}catch(e){let n=e instanceof Error?e:new Error(String(e));throw D.error("WORKER","Failed to parse openclaw.json",{path:t},n),n}}function xr(t){let e=qe();Cr(e,{recursive:!0}),fr(we(),JSON.stringify(t,null,2)+`
|
|
282
|
+
`,"utf-8")}function fu(t=37777,e="openclaw",n=!0){let r=In();if(r.plugins||(r.plugins={}),r.plugins.slots||(r.plugins.slots={}),r.plugins.entries||(r.plugins.entries={}),r.plugins.slots.memory="claude-mem",!r.plugins.entries["claude-mem"])r.plugins.entries["claude-mem"]={enabled:!0,config:{workerPort:t,project:e,syncMemoryFile:n}};else{r.plugins.entries["claude-mem"].enabled=!0,r.plugins.entries["claude-mem"].config||(r.plugins.entries["claude-mem"].config={});let s=r.plugins.entries["claude-mem"].config;s.workerPort===void 0&&(s.workerPort=t),s.project===void 0&&(s.project=e),s.syncMemoryFile===void 0&&(s.syncMemoryFile=n)}xr(r)}function Cu(){let t=we();if(!Y(t))return;let e=In();e.plugins?.entries?.["claude-mem"]&&delete e.plugins.entries["claude-mem"],e.plugins?.slots?.memory==="claude-mem"&&delete e.plugins.slots.memory,xr(e)}function Sr(){let t=hr();if(!t)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 e=ze(),n=S.join(e,"dist"),r=Fr(),s=yr(),i={name:"claude-mem",version:"1.0.0",type:"module",main:"dist/index.js",openclaw:{extensions:["./dist/index.js"]}};try{return Cr(n,{recursive:!0}),Eu(t,n,e,r,s,i),0}catch(o){let u=o instanceof Error?o.message:String(o);return console.error(`Failed to install OpenClaw plugin: ${u}`),1}}function Eu(t,e,n,r,s,i){if(Mn(t,e,{recursive:!0,force:!0}),console.log(` Plugin dist copied to: ${e}`),r){let o=S.join(n,"openclaw.plugin.json");Mn(r,o,{force:!0}),console.log(` Plugin manifest copied to: ${o}`)}if(s){let o=S.join(n,"skills");Mn(s,o,{recursive:!0,force:!0}),console.log(` Skills copied to: ${o}`)}fr(S.join(n,"package.json"),JSON.stringify(i,null,2)+`
|
|
283
283
|
`,"utf-8"),fu(),console.log(" Registered in openclaw.json"),D.info("OPENCLAW","Plugin installed",{destination:n})}function hu(){let t=!1,e=ze();if(Y(e))try{gu(e,{recursive:!0,force:!0}),console.log(` Removed extension: ${e}`)}catch(n){let r=n instanceof Error?n.message:String(n);console.error(` Failed to remove extension directory: ${r}`),t=!0}try{Cu(),console.log(" Unregistered from openclaw.json")}catch(n){let r=n instanceof Error?n.message:String(n);console.error(` Failed to update openclaw.json: ${r}`),t=!0}return t?1:0}function Fu(){console.log(`
|
|
284
284
|
Claude-Mem OpenClaw Integration Status
|
|
285
|
-
`);let t=qe(),e=ze(),n=we(),r=
|
|
285
|
+
`);let t=qe(),e=ze(),n=we(),r=S.join(e,"dist","index.js");if(console.log(`Config directory: ${t}`),console.log(` Exists: ${Y(t)?"yes":"no"}`),console.log(""),console.log(`Extension directory: ${e}`),console.log(` Exists: ${Y(e)?"yes":"no"}`),console.log(` Plugin entry: ${Y(r)?"yes":"no"}`),console.log(""),console.log(`Config (openclaw.json): ${n}`),Y(n)){let s=In(),i=s.plugins?.entries?.["claude-mem"]!==void 0,o=s.plugins?.entries?.["claude-mem"]?.enabled===!0,u=s.plugins?.slots?.memory==="claude-mem";if(console.log(" Exists: yes"),console.log(` Registered: ${i?"yes":"no"}`),console.log(` Enabled: ${o?"yes":"no"}`),console.log(` Memory slot: ${u?"yes":"no"}`),i){let c=s.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 yu(){console.log(`
|
|
286
286
|
Installing Claude-Mem for OpenClaw...
|
|
287
|
-
`);let t=
|
|
287
|
+
`);let t=Sr();if(t!==0)return t;let e=ze();return console.log(`
|
|
288
288
|
Installation complete!
|
|
289
289
|
|
|
290
290
|
Plugin installed to: ${e}
|
|
@@ -294,7 +294,7 @@ Next steps:
|
|
|
294
294
|
1. Start claude-mem worker: npx claude-mem start
|
|
295
295
|
2. Restart OpenClaw to load the plugin
|
|
296
296
|
3. Memory capture is automatic from then on
|
|
297
|
-
`),0}var Rn=f(()=>{"use strict";X()});import{existsSync as Ml,readFileSync as Il,writeFileSync as Ol,mkdirSync as Rl}from"fs";import{homedir as
|
|
297
|
+
`),0}var Rn=f(()=>{"use strict";X()});import{existsSync as Ml,readFileSync as Il,writeFileSync as Ol,mkdirSync as Rl}from"fs";import{homedir as vr}from"os";import{join as _r,dirname as Pl}from"path";var j,Ze,xu,Bt,wr=f(()=>{"use strict";j=_r(vr(),".claude-mem","transcript-watch.json"),Ze=_r(vr(),".claude-mem","transcript-watch-state.json"),xu={name:"codex",version:"0.3",description:"Schema for Codex session JSONL files under ~/.codex/sessions.",events:[{name:"session-meta",match:{path:"type",equals:"session_meta"},action:"session_context",fields:{sessionId:"payload.id",cwd:"payload.cwd"}},{name:"turn-context",match:{path:"type",equals:"turn_context"},action:"session_context",fields:{cwd:"payload.cwd"}},{name:"user-message",match:{path:"payload.type",equals:"user_message"},action:"session_init",fields:{prompt:"payload.message"}},{name:"assistant-message",match:{path:"payload.type",equals:"agent_message"},action:"assistant_message",fields:{message:"payload.message"}},{name:"tool-use",match:{path:"payload.type",in:["function_call","custom_tool_call","web_search_call","exec_command"]},action:"tool_use",fields:{toolId:"payload.call_id",toolName:{coalesce:["payload.name","payload.type",{value:"web_search"}]},toolInput:{coalesce:["payload.arguments","payload.input","payload.command","payload.action"]}}},{name:"tool-result",match:{path:"payload.type",in:["function_call_output","custom_tool_call_output","exec_command_output"]},action:"tool_result",fields:{toolId:"payload.call_id",toolResponse:"payload.output"}},{name:"session-end",match:{path:"payload.type",in:["turn_aborted","turn_completed"]},action:"session_end"}]},Bt={version:1,schemas:{codex:xu},watches:[{name:"codex",path:"~/.codex/sessions/**/*.jsonl",schema:"codex",startAtEnd:!0,context:{mode:"agents",updateOn:["session_start","session_end"]}}],stateFile:Ze}});var Bn={};V(Bn,{checkCodexCliStatus:()=>Mu,installCodexCli:()=>bu,uninstallCodexCli:()=>$u});import jt from"path";import{homedir as Ar}from"os";import{existsSync as Ae,readFileSync as Pt,writeFileSync as Lt,mkdirSync as Su}from"fs";function Tn(){let t=j;if(!Ae(t))return{version:1,schemas:{},watches:[],stateFile:Ze};try{let e=Pt(t,"utf-8"),n=JSON.parse(e);return n.version||(n.version=1),n.watches||(n.watches=[]),n.schemas||(n.schemas={}),n.stateFile||(n.stateFile=Ze),n}catch(e){e instanceof Error?D.error("WORKER","Corrupt transcript-watch.json, creating backup",{path:t},e):D.error("WORKER","Corrupt transcript-watch.json, creating backup",{path:t},new Error(String(e)));let n=`${t}.backup.${Date.now()}`;return Lt(n,Pt(t)),console.warn(` Backed up corrupt transcript-watch.json to ${n}`),{version:1,schemas:{},watches:[],stateFile:Ze}}}function _u(t){let e={...t};e.schemas={...e.schemas};let n=Bt.schemas?.[oe];n&&(e.schemas[oe]=n);let r=Bt.watches.find(s=>s.name===oe);if(r){let s=e.watches.findIndex(i=>i.name===oe);s!==-1?e.watches[s]=r:e.watches.push(r)}return e}function kr(t){Su(vu,{recursive:!0}),Lt(j,JSON.stringify(t,null,2)+`
|
|
298
298
|
`)}function wu(){if(!Ae(ne))return;let t="<claude-mem-context>",e="</claude-mem-context>";try{Au(t,e)}catch(n){let r=n instanceof Error?n.message:String(n);D.warn("WORKER","Failed to clean AGENTS.md context",{error:r})}}function Au(t,e){let n=Pt(ne,"utf-8"),r=n.indexOf(t),s=n.indexOf(e);if(r===-1||s===-1)return;let i=n.substring(0,r).replace(/\n+$/,""),o=n.substring(s+e.length).replace(/^\n+/,""),u=(i+(o?`
|
|
299
299
|
|
|
300
300
|
`+o:"")).trim();u?Lt(ne,u+`
|
|
@@ -326,7 +326,7 @@ Claude-Mem Codex CLI Integration Status
|
|
|
326
326
|
Run: npx claude-mem install --ide codex-cli
|
|
327
327
|
`),0;let t;try{t=Tn()}catch(s){return s instanceof Error?D.error("WORKER","Could not parse transcript-watch.json",{path:j},s):D.error("WORKER","Could not parse transcript-watch.json",{path:j},new Error(String(s))),console.log("Status: Unknown"),console.log(" Could not parse transcript-watch.json."),console.log(""),0}let e=t.watches.find(s=>s.name===oe),n=t.schemas?.[oe];if(!e)return console.log("Status: Not installed"),console.log(" transcript-watch.json exists but no codex watch configured."),console.log(`
|
|
328
328
|
Run: npx claude-mem install --ide codex-cli
|
|
329
|
-
`),0;console.log("Status: Installed"),console.log(` Config: ${j}`),console.log(` Watch path: ${e.path}`),console.log(` Schema: ${n?`codex (v${n.version??"?"})`:"missing"}`),console.log(` Start at end: ${e.startAtEnd??!1}`),e.context&&(console.log(` Context mode: ${e.context.mode}`),console.log(` Context path: ${e.context.path??"<workspace>/AGENTS.md (default)"}`),console.log(` Context updates on: ${e.context.updateOn?.join(", ")??"none"}`)),Ae(ne)?Pt(ne,"utf-8").includes("<claude-mem-context>")?console.log(` Legacy global context: Present (${ne})`):console.log(" Legacy global context: Not active"):console.log(" Legacy global context: None");let r=jt.join(br,"sessions");return Ae(r)?console.log(" Sessions directory: exists"):console.log(" Sessions directory: not yet created (use Codex CLI to generate sessions)"),console.log(""),0}var br,ne,
|
|
329
|
+
`),0;console.log("Status: Installed"),console.log(` Config: ${j}`),console.log(` Watch path: ${e.path}`),console.log(` Schema: ${n?`codex (v${n.version??"?"})`:"missing"}`),console.log(` Start at end: ${e.startAtEnd??!1}`),e.context&&(console.log(` Context mode: ${e.context.mode}`),console.log(` Context path: ${e.context.path??"<workspace>/AGENTS.md (default)"}`),console.log(` Context updates on: ${e.context.updateOn?.join(", ")??"none"}`)),Ae(ne)?Pt(ne,"utf-8").includes("<claude-mem-context>")?console.log(` Legacy global context: Present (${ne})`):console.log(" Legacy global context: Not active"):console.log(" Legacy global context: None");let r=jt.join(br,"sessions");return Ae(r)?console.log(" Sessions directory: exists"):console.log(" Sessions directory: not yet created (use Codex CLI to generate sessions)"),console.log(""),0}var br,ne,vu,oe,$r,Pn=f(()=>{"use strict";X();wr();br=jt.join(Ar(),".codex"),ne=jt.join(br,"AGENTS.md"),vu=jt.join(Ar(),".claude-mem"),oe="codex";$r=wu});var Br={};V(Br,{MCP_IDE_INSTALLERS:()=>Ku,installGooseMcpIntegration:()=>Tr});import B from"path";import{homedir as tt}from"os";import{existsSync as Or,readFileSync as Iu,writeFileSync as et,mkdirSync as Rr}from"fs";function Ru(t){return{command:process.execPath,args:[t]}}function Tu(t,e,n="mcpServers"){let r=B.dirname(t);Rr(r,{recursive:!0});let s=W(t,{});s[n]||(s[n]={}),s[n]["claude-mem"]=Ru(e),et(t,JSON.stringify(s,null,2)+`
|
|
330
330
|
`)}function Qe(t){return async()=>{console.log(`
|
|
331
331
|
Installing Claude-Mem MCP integration for ${t.ideLabel}...
|
|
332
332
|
`);let e=Ge();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 n=t.configPath,r=t.ideId==="warp"&&!Or(B.dirname(n)),s;t.contextFile&&(s=t.contextFile.path);try{return Bu(t,n,e,r,s),0}catch(i){let o=i instanceof Error?i.message:String(i);return console.error(`
|
|
@@ -359,7 +359,7 @@ Next steps:
|
|
|
359
359
|
|
|
360
360
|
*No context yet. Complete your first session and context will appear here.*
|
|
361
361
|
|
|
362
|
-
Use claude-mem's MCP search tools for manual memory queries.`;Pu={ideId:"copilot-cli",ideLabel:"Copilot CLI",configPath:B.join(tt(),".github","copilot","mcp.json"),configKey:"servers",contextFile:{path:B.join(process.cwd(),".github","copilot-instructions.md"),isWorkspaceRelative:!0}},Lu={ideId:"antigravity",ideLabel:"Antigravity",configPath:B.join(tt(),".gemini","antigravity","mcp_config.json"),configKey:"mcpServers",contextFile:{path:B.join(process.cwd(),".agent","rules","claude-mem-context.md"),isWorkspaceRelative:!0}},ju={ideId:"crush",ideLabel:"Crush",configPath:B.join(tt(),".config","crush","mcp.json"),configKey:"mcpServers"},Nu={ideId:"roo-code",ideLabel:"Roo Code",configPath:B.join(process.cwd(),".roo","mcp.json"),configKey:"mcpServers",contextFile:{path:B.join(process.cwd(),".roo","rules","claude-mem-context.md"),isWorkspaceRelative:!0}},Uu={ideId:"warp",ideLabel:"Warp",configPath:B.join(tt(),".warp","mcp.json"),configKey:"mcpServers",contextFile:{path:B.join(process.cwd(),"WARP.md"),isWorkspaceRelative:!0}};Ku={"copilot-cli":Qe(Pu),antigravity:Qe(Lu),goose:Tr,crush:Qe(ju),"roo-code":Qe(Nu),warp:Qe(Uu)}});var Nt={};V(Nt,{runInstallCommand:()=>oa});import{execSync as Ln}from"child_process";import{cpSync as Lr,existsSync as nt,readFileSync as Ju,rmSync as jr}from"fs";import{join as be}from"path";async function Vu(t){if(re)await ft(t);else for(let e of t){let n=await e.task(r=>console.log(` ${r}`));console.log(` ${n}`)}}function Xu(){let t=W(pe(),{});t.thedotmack={source:{source:"github",repo:"thedotmack/claude-mem"},installLocation:k(),lastUpdated:new Date().toISOString(),autoUpdate:!0},Re(ae()),Z(pe(),t)}function Yu(t){let e=W(ge(),{});e.version||(e.version=2),e.plugins||(e.plugins={});let n=Jt(t),r=new Date().toISOString();e.plugins["claude-mem@thedotmack"]=[{scope:"user",installPath:n,version:t,installedAt:r,lastUpdated:r}],Z(ge(),e)}function qu(){let t=W(fe(),{});t.enabledPlugins||(t.enabledPlugins={}),t.enabledPlugins["claude-mem@thedotmack"]=!0,Z(fe(),t)}async function zu(t){let e=[];for(let n of t)switch(n){case"claude-code":{try{Ln("claude plugin marketplace add thedotmack/claude-mem && claude plugin install claude-mem",{stdio:"inherit"}),g.success("Claude Code: plugin installed via CLI.")}catch(r){console.error("[install] Claude Code plugin install error:",r instanceof Error?r.message:String(r)),g.error("Claude Code: plugin install failed. Is `claude` CLI on your PATH?"),e.push(n)}break}case"cursor":{let{installCursorHooks:r,configureCursorMcp:s}=await Promise.resolve().then(()=>(He(),zo));await r("user")===0?s("user")===0?g.success("Cursor: hooks + MCP installed."):g.success("Cursor: hooks installed (MCP setup failed \u2014 run `npx claude-mem cursor mcp` to retry)."):(g.error("Cursor: hook installation failed."),e.push(n));break}case"gemini-cli":{let{installGeminiCliHooks:r}=await Promise.resolve().then(()=>(Fn(),hn));await r()===0?g.success("Gemini CLI: hooks installed."):(g.error("Gemini CLI: hook installation failed."),e.push(n));break}case"opencode":{let{installOpenCodeIntegration:r}=await Promise.resolve().then(()=>(wn(),_n));await r()===0?g.success("OpenCode: plugin installed."):(g.error("OpenCode: plugin installation failed."),e.push(n));break}case"windsurf":{let{installWindsurfHooks:r}=await Promise.resolve().then(()=>($n(),kn));await r()===0?g.success("Windsurf: hooks installed."):(g.error("Windsurf: hook installation failed."),e.push(n));break}case"openclaw":{let{installOpenClawIntegration:r}=await Promise.resolve().then(()=>(Rn(),On));await r()===0?g.success("OpenClaw: plugin installed."):(g.error("OpenClaw: plugin installation failed."),e.push(n));break}case"codex-cli":{let{installCodexCli:r}=await Promise.resolve().then(()=>(Pn(),Bn));await r()===0?g.success("Codex CLI: transcript watching configured."):(g.error("Codex CLI: integration setup failed."),e.push(n));break}case"copilot-cli":case"antigravity":case"goose":case"crush":case"roo-code":case"warp":{let{MCP_IDE_INSTALLERS:r}=await Promise.resolve().then(()=>(Pr(),Br)),s=r[n];if(s){let i=await s(),c=Ue().find(d=>d.id===n)?.label??n;i===0?g.success(`${c}: MCP integration installed.`):(g.error(`${c}: MCP integration failed.`),e.push(n))}break}default:{let s=Ue().find(i=>i.id===n);s&&!s.supported&&g.warn(`Support for ${s.label} coming soon.`);break}}return e}async function Zu(){let e=Ue().filter(s=>s.detected);if(e.length===0)return g.warn("No supported IDEs detected. Installing for Claude Code by default."),["claude-code"];let n=e.map(s=>({value:s.id,label:s.label,hint:s.supported?s.hint:"coming soon"})),r=await
|
|
362
|
+
Use claude-mem's MCP search tools for manual memory queries.`;Pu={ideId:"copilot-cli",ideLabel:"Copilot CLI",configPath:B.join(tt(),".github","copilot","mcp.json"),configKey:"servers",contextFile:{path:B.join(process.cwd(),".github","copilot-instructions.md"),isWorkspaceRelative:!0}},Lu={ideId:"antigravity",ideLabel:"Antigravity",configPath:B.join(tt(),".gemini","antigravity","mcp_config.json"),configKey:"mcpServers",contextFile:{path:B.join(process.cwd(),".agent","rules","claude-mem-context.md"),isWorkspaceRelative:!0}},ju={ideId:"crush",ideLabel:"Crush",configPath:B.join(tt(),".config","crush","mcp.json"),configKey:"mcpServers"},Nu={ideId:"roo-code",ideLabel:"Roo Code",configPath:B.join(process.cwd(),".roo","mcp.json"),configKey:"mcpServers",contextFile:{path:B.join(process.cwd(),".roo","rules","claude-mem-context.md"),isWorkspaceRelative:!0}},Uu={ideId:"warp",ideLabel:"Warp",configPath:B.join(tt(),".warp","mcp.json"),configKey:"mcpServers",contextFile:{path:B.join(process.cwd(),"WARP.md"),isWorkspaceRelative:!0}};Ku={"copilot-cli":Qe(Pu),antigravity:Qe(Lu),goose:Tr,crush:Qe(ju),"roo-code":Qe(Nu),warp:Qe(Uu)}});var Nt={};V(Nt,{runInstallCommand:()=>oa});import{execSync as Ln}from"child_process";import{cpSync as Lr,existsSync as nt,readFileSync as Ju,rmSync as jr}from"fs";import{join as be}from"path";async function Vu(t){if(re)await ft(t);else for(let e of t){let n=await e.task(r=>console.log(` ${r}`));console.log(` ${n}`)}}function Xu(){let t=W(pe(),{});t.thedotmack={source:{source:"github",repo:"thedotmack/claude-mem"},installLocation:k(),lastUpdated:new Date().toISOString(),autoUpdate:!0},Re(ae()),Z(pe(),t)}function Yu(t){let e=W(ge(),{});e.version||(e.version=2),e.plugins||(e.plugins={});let n=Jt(t),r=new Date().toISOString();e.plugins["claude-mem@thedotmack"]=[{scope:"user",installPath:n,version:t,installedAt:r,lastUpdated:r}],Z(ge(),e)}function qu(){let t=W(fe(),{});t.enabledPlugins||(t.enabledPlugins={}),t.enabledPlugins["claude-mem@thedotmack"]=!0,Z(fe(),t)}async function zu(t){let e=[];for(let n of t)switch(n){case"claude-code":{try{Ln("claude plugin marketplace add thedotmack/claude-mem && claude plugin install claude-mem",{stdio:"inherit"}),g.success("Claude Code: plugin installed via CLI.")}catch(r){console.error("[install] Claude Code plugin install error:",r instanceof Error?r.message:String(r)),g.error("Claude Code: plugin install failed. Is `claude` CLI on your PATH?"),e.push(n)}break}case"cursor":{let{installCursorHooks:r,configureCursorMcp:s}=await Promise.resolve().then(()=>(He(),zo));await r("user")===0?s("user")===0?g.success("Cursor: hooks + MCP installed."):g.success("Cursor: hooks installed (MCP setup failed \u2014 run `npx claude-mem cursor mcp` to retry)."):(g.error("Cursor: hook installation failed."),e.push(n));break}case"gemini-cli":{let{installGeminiCliHooks:r}=await Promise.resolve().then(()=>(Fn(),hn));await r()===0?g.success("Gemini CLI: hooks installed."):(g.error("Gemini CLI: hook installation failed."),e.push(n));break}case"opencode":{let{installOpenCodeIntegration:r}=await Promise.resolve().then(()=>(wn(),_n));await r()===0?g.success("OpenCode: plugin installed."):(g.error("OpenCode: plugin installation failed."),e.push(n));break}case"windsurf":{let{installWindsurfHooks:r}=await Promise.resolve().then(()=>($n(),kn));await r()===0?g.success("Windsurf: hooks installed."):(g.error("Windsurf: hook installation failed."),e.push(n));break}case"openclaw":{let{installOpenClawIntegration:r}=await Promise.resolve().then(()=>(Rn(),On));await r()===0?g.success("OpenClaw: plugin installed."):(g.error("OpenClaw: plugin installation failed."),e.push(n));break}case"codex-cli":{let{installCodexCli:r}=await Promise.resolve().then(()=>(Pn(),Bn));await r()===0?g.success("Codex CLI: transcript watching configured."):(g.error("Codex CLI: integration setup failed."),e.push(n));break}case"copilot-cli":case"antigravity":case"goose":case"crush":case"roo-code":case"warp":{let{MCP_IDE_INSTALLERS:r}=await Promise.resolve().then(()=>(Pr(),Br)),s=r[n];if(s){let i=await s(),c=Ue().find(d=>d.id===n)?.label??n;i===0?g.success(`${c}: MCP integration installed.`):(g.error(`${c}: MCP integration failed.`),e.push(n))}break}default:{let s=Ue().find(i=>i.id===n);s&&!s.supported&&g.warn(`Support for ${s.label} coming soon.`);break}}return e}async function Zu(){let e=Ue().filter(s=>s.detected);if(e.length===0)return g.warn("No supported IDEs detected. Installing for Claude Code by default."),["claude-code"];let n=e.map(s=>({value:s.id,label:s.label,hint:s.supported?s.hint:"coming soon"})),r=await So({message:"Which IDEs do you use?",options:n,initialValues:e.filter(s=>s.supported).map(s=>s.id),required:!0});return ee(r)&&(je("Installation cancelled."),process.exit(0)),r}function Qu(){let t=k(),e=it();Re(t);let n=["plugin","package.json","package-lock.json","node_modules","openclaw","dist","LICENSE","README.md","CHANGELOG.md"];for(let r of n){let s=be(e,r),i=be(t,r);nt(s)&&(nt(i)&&jr(i,{recursive:!0,force:!0}),Lr(s,i,{recursive:!0,force:!0}))}}function ea(t){let e=Vt(),n=Jt(t);jr(n,{recursive:!0,force:!0}),Re(n),Lr(e,n,{recursive:!0,force:!0})}function ta(){let t=k(),e=be(t,"package.json");nt(e)&&Ln("npm install --production",{cwd:t,stdio:"pipe",...q?{shell:!0}:{}})}function na(){let t=be(k(),"plugin","scripts","smart-install.js");if(!nt(t))return g.warn("smart-install.js not found \u2014 skipping Bun/uv auto-install."),!1;try{return Ln(`node "${t}"`,{stdio:"inherit",...q?{shell:!0}:{}}),!0}catch(e){return console.warn("[install] smart-install error:",e instanceof Error?e.message:String(e)),g.warn("smart-install encountered an issue. You may need to install Bun/uv manually."),!1}}async function oa(t={}){let e=Oe();re?gt(h.default.bgCyan(h.default.black(" claude-mem install "))):console.log("claude-mem install"),g.info(`Version: ${h.default.cyan(e)}`),g.info(`Platform: ${process.platform} (${process.arch})`);let n=k();if(nt(be(n,"plugin",".claude-plugin","plugin.json"))){try{let l=JSON.parse(Ju(be(n,"plugin",".claude-plugin","plugin.json"),"utf-8"));g.warn(`Existing installation detected (v${l.version??"unknown"}).`)}catch(l){console.warn("[install] Failed to read existing plugin version:",l instanceof Error?l.message:String(l)),g.warn("Existing installation detected.")}if(process.stdin.isTTY){let l=await Pe({message:"Overwrite existing installation?",initialValue:!0});(ee(l)||!l)&&(je("Installation cancelled."),process.exit(0))}}let s;if(t.ide){s=[t.ide];let l=Ue(),E=l.find(v=>v.id===t.ide);E&&!E.supported&&(g.error(`Support for ${E.label} coming soon.`),process.exit(1)),E||(g.error(`Unknown IDE: ${t.ide}`),g.info(`Available IDEs: ${l.map(v=>v.id).join(", ")}`),process.exit(1))}else process.stdin.isTTY?s=await Zu():s=["claude-code"];s.some(l=>l!=="claude-code")&&await Vu([{title:"Copying plugin files",task:async l=>(l("Copying to marketplace directory..."),Qu(),`Plugin files copied ${h.default.green("OK")}`)},{title:"Caching plugin version",task:async l=>(l(`Caching v${e}...`),ea(e),`Plugin cached (v${e}) ${h.default.green("OK")}`)},{title:"Registering marketplace",task:async()=>(Xu(),`Marketplace registered ${h.default.green("OK")}`)},{title:"Registering plugin",task:async()=>(Yu(e),`Plugin registered ${h.default.green("OK")}`)},{title:"Enabling plugin in Claude settings",task:async()=>(qu(),`Plugin enabled ${h.default.green("OK")}`)},{title:"Installing dependencies",task:async l=>{l("Running npm install...");try{return ta(),`Dependencies installed ${h.default.green("OK")}`}catch(E){return console.warn("[install] npm install error:",E instanceof Error?E.message:String(E)),`Dependencies may need manual install ${h.default.yellow("!")}`}}},{title:"Setting up Bun and uv",task:async l=>(l("Running smart-install..."),na()?`Runtime dependencies ready ${h.default.green("OK")}`:`Runtime setup may need attention ${h.default.yellow("!")}`)}]);let o=await zu(s),u=o.length>0?"Installation Partial":"Installation Complete",c=[`Version: ${h.default.cyan(e)}`,`Plugin dir: ${h.default.cyan(n)}`,`IDEs: ${h.default.cyan(s.join(", "))}`];o.length>0&&c.push(`Failed: ${h.default.red(o.join(", "))}`),re?Le(c.join(`
|
|
363
363
|
`),u):(console.log(`
|
|
364
364
|
${u}`),c.forEach(l=>console.log(` ${l}`)));let d=process.env.CLAUDE_MEM_WORKER_PORT||"37777",m=["Open Claude Code and start a conversation -- memory is automatic!",`View your memories: ${h.default.underline(`http://localhost:${d}`)}`,`Search past work: use ${h.default.bold("/mem-search")} in Claude Code`,`Start worker: ${h.default.bold("npx claude-mem start")}`];re?(Le(m.join(`
|
|
365
365
|
`),"Next Steps"),o.length>0?le(h.default.yellow("claude-mem installed with some IDE setup failures.")):le(h.default.green("claude-mem installed successfully!"))):(console.log(`
|