claude-mem 13.3.0 → 13.4.0

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.
@@ -11,7 +11,7 @@ Error generating stack: `+n.message+`
11
11
  In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}var u=!0,i=!1,r;return{s:function(){l=l.call(e)},n:function(){var c=l.next();return u=c.done,c},e:function(c){i=!0,r=c},f:function(){try{!u&&l.return!=null&&l.return()}finally{if(i)throw r}}}}function AE(e,t){if(e){if(typeof e=="string")return rh(e,t);var l=Object.prototype.toString.call(e).slice(8,-1);if(l==="Object"&&e.constructor&&(l=e.constructor.name),l==="Map"||l==="Set")return Array.from(e);if(l==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(l))return rh(e,t)}}function rh(e,t){(t==null||t>e.length)&&(t=e.length);for(var l=0,n=new Array(t);l<t;l++)n[l]=e[l];return n}var ME=uh(),oh={fg:"#FFF",bg:"#000",newline:!1,escapeXML:!1,stream:!1,colors:OE()};function OE(){var e={0:"#000",1:"#A00",2:"#0A0",3:"#A50",4:"#00A",5:"#A0A",6:"#0AA",7:"#AAA",8:"#555",9:"#F55",10:"#5F5",11:"#FF5",12:"#55F",13:"#F5F",14:"#5FF",15:"#FFF"};return Vr(0,5).forEach(function(t){Vr(0,5).forEach(function(l){Vr(0,5).forEach(function(n){return NE(t,l,n,e)})})}),Vr(0,23).forEach(function(t){var l=t+232,n=dh(t*10+8);e[l]="#"+n+n+n}),e}function NE(e,t,l,n){var a=16+e*36+t*6+l,u=e>0?e*40+55:0,i=t>0?t*40+55:0,r=l>0?l*40+55:0;n[a]=DE([u,i,r])}function dh(e){for(var t=e.toString(16);t.length<2;)t="0"+t;return t}function DE(e){var t=[],l=mh(e),n;try{for(l.s();!(n=l.n()).done;){var a=n.value;t.push(dh(a))}}catch(u){l.e(u)}finally{l.f()}return"#"+t.join("")}function ch(e,t,l,n){var a;return t==="text"?a=xE(l,n):t==="display"?a=LE(e,l,n):t==="xterm256Foreground"?a=Zr(e,n.colors[l]):t==="xterm256Background"?a=Kr(e,n.colors[l]):t==="rgb"&&(a=CE(e,l)),a}function CE(e,t){t=t.substring(2).slice(0,-1);var l=+t.substr(0,2),n=t.substring(5).split(";"),a=n.map(function(u){return("0"+Number(u).toString(16)).substr(-2)}).join("");return Qr(e,(l===38?"color:#":"background-color:#")+a)}function LE(e,t,l){t=parseInt(t,10);var n={"-1":function(){return"<br/>"},0:function(){return e.length&&ph(e)},1:function(){return mn(e,"b")},3:function(){return mn(e,"i")},4:function(){return mn(e,"u")},8:function(){return Qr(e,"display:none")},9:function(){return mn(e,"strike")},22:function(){return Qr(e,"font-weight:normal;text-decoration:none;font-style:normal")},23:function(){return fh(e,"i")},24:function(){return fh(e,"u")},39:function(){return Zr(e,l.fg)},49:function(){return Kr(e,l.bg)},53:function(){return Qr(e,"text-decoration:overline")}},a;return n[t]?a=n[t]():4<t&&t<7?a=mn(e,"blink"):29<t&&t<38?a=Zr(e,l.colors[t-30]):39<t&&t<48?a=Kr(e,l.colors[t-40]):89<t&&t<98?a=Zr(e,l.colors[8+(t-90)]):99<t&&t<108&&(a=Kr(e,l.colors[8+(t-100)])),a}function ph(e){var t=e.slice(0);return e.length=0,t.reverse().map(function(l){return"</"+l+">"}).join("")}function Vr(e,t){for(var l=[],n=e;n<=t;n++)l.push(n);return l}function UE(e){return function(t){return(e===null||t.category!==e)&&e!=="all"}}function sh(e){e=parseInt(e,10);var t=null;return e===0?t="all":e===1?t="bold":2<e&&e<5?t="underline":4<e&&e<7?t="blink":e===8?t="hide":e===9?t="strike":29<e&&e<38||e===39||89<e&&e<98?t="foreground-color":(39<e&&e<48||e===49||99<e&&e<108)&&(t="background-color"),t}function xE(e,t){return t.escapeXML?ME.encodeXML(e):e}function mn(e,t,l){return l||(l=""),e.push(t),"<".concat(t).concat(l?' style="'.concat(l,'"'):"",">")}function Qr(e,t){return mn(e,"span",t)}function Zr(e,t){return mn(e,"span","color:"+t)}function Kr(e,t){return mn(e,"span","background-color:"+t)}function fh(e,t){var l;if(e.slice(-1)[0]===t&&(l=e.pop()),l)return"</"+t+">"}function zE(e,t,l){var n=!1,a=3;function u(){return""}function i(A,D){return l("xterm256Foreground",D),""}function r(A,D){return l("xterm256Background",D),""}function o(A){return t.newline?l("display",-1):l("text",A),""}function c(A,D){n=!0,D.trim().length===0&&(D="0"),D=D.trimRight(";").split(";");var O=mh(D),z;try{for(O.s();!(z=O.n()).done;){var w=z.value;l("display",w)}}catch(R){O.e(R)}finally{O.f()}return""}function h(A){return l("text",A),""}function v(A){return l("rgb",A),""}var p=[{pattern:/^\x08+/,sub:u},{pattern:/^\x1b\[[012]?K/,sub:u},{pattern:/^\x1b\[\(B/,sub:u},{pattern:/^\x1b\[[34]8;2;\d+;\d+;\d+m/,sub:v},{pattern:/^\x1b\[38;5;(\d+)m/,sub:i},{pattern:/^\x1b\[48;5;(\d+)m/,sub:r},{pattern:/^\n/,sub:o},{pattern:/^\r+\n/,sub:o},{pattern:/^\r/,sub:o},{pattern:/^\x1b\[((?:\d{1,3};?)+|)m/,sub:c},{pattern:/^\x1b\[\d?J/,sub:u},{pattern:/^\x1b\[\d{0,3};\d{0,3}f/,sub:u},{pattern:/^\x1b\[?[\d;]{0,3}/,sub:u},{pattern:/^(([^\x1b\x08\r\n])+)/,sub:h}];function y(A,D){D>a&&n||(n=!1,e=e.replace(A.pattern,A.sub))}var T=[],M=e,L=M.length;e:for(;L>0;){for(var s=0,f=0,g=p.length;f<g;s=++f){var d=p[s];if(y(d,s),e.length!==L){L=e.length;continue e}}if(e.length===L)break;T.push(0),L=e.length}return T}function HE(e,t,l){return t!=="text"&&(e=e.filter(UE(sh(l))),e.push({token:t,data:l,category:sh(l)})),e}var wE=(function(){function e(t){TE(this,e),t=t||{},t.colors&&(t.colors=Object.assign({},oh.colors,t.colors)),this.options=Object.assign({},oh,t),this.stack=[],this.stickyStack=[]}return _E(e,[{key:"toHtml",value:function(l){var n=this;l=typeof l=="string"?[l]:l;var a=this.stack,u=this.options,i=[];return this.stickyStack.forEach(function(r){var o=ch(a,r.token,r.data,u);o&&i.push(o)}),zE(l.join(""),u,function(r,o){var c=ch(a,r,o,u);c&&i.push(c),u.stream&&(n.stickyStack=HE(n.stickyStack,r,o))}),a.length&&i.push(ph(a)),i.join("")}}]),e})();gh.exports=wE});var vf=ie(ae(),1),Ih=ie(C0(),1);var J=ie(ae(),1);var K=ie(ae(),1);var Ye=ie(ae(),1);function L0({preference:e,onThemeChange:t}){let l=()=>{let u=["system","light","dark"],r=(u.indexOf(e)+1)%u.length;t(u[r])},n=()=>{switch(e){case"light":return Ye.default.createElement("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},Ye.default.createElement("circle",{cx:"12",cy:"12",r:"5"}),Ye.default.createElement("line",{x1:"12",y1:"1",x2:"12",y2:"3"}),Ye.default.createElement("line",{x1:"12",y1:"21",x2:"12",y2:"23"}),Ye.default.createElement("line",{x1:"4.22",y1:"4.22",x2:"5.64",y2:"5.64"}),Ye.default.createElement("line",{x1:"18.36",y1:"18.36",x2:"19.78",y2:"19.78"}),Ye.default.createElement("line",{x1:"1",y1:"12",x2:"3",y2:"12"}),Ye.default.createElement("line",{x1:"21",y1:"12",x2:"23",y2:"12"}),Ye.default.createElement("line",{x1:"4.22",y1:"19.78",x2:"5.64",y2:"18.36"}),Ye.default.createElement("line",{x1:"18.36",y1:"5.64",x2:"19.78",y2:"4.22"}));case"dark":return Ye.default.createElement("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},Ye.default.createElement("path",{d:"M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"}));default:return Ye.default.createElement("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},Ye.default.createElement("rect",{x:"2",y:"3",width:"20",height:"14",rx:"2",ry:"2"}),Ye.default.createElement("line",{x1:"8",y1:"21",x2:"16",y2:"21"}),Ye.default.createElement("line",{x1:"12",y1:"17",x2:"12",y2:"21"}))}},a=()=>{switch(e){case"light":return"Theme: Light (click for Dark)";case"dark":return"Theme: Dark (click for System)";default:return"Theme: System (click for Light)"}};return Ye.default.createElement("button",{className:"theme-toggle-btn",onClick:l,title:a(),"aria-label":a()},n())}var tl=ie(ae(),1);var on=ie(ae(),1);function U0(e,t){let[l,n]=(0,on.useState)(null),[a,u]=(0,on.useState)(!0),[i,r]=(0,on.useState)(null),o=(0,on.useCallback)(async()=>{try{u(!0),r(null);let c=await fetch(`https://api.github.com/repos/${e}/${t}`);if(!c.ok)throw new Error(`GitHub API error: ${c.status}`);let h=await c.json();n(h.stargazers_count)}catch(c){console.error("Failed to fetch GitHub stars:",c),r(c instanceof Error?c:new Error("Unknown error"))}finally{u(!1)}},[e,t]);return(0,on.useEffect)(()=>{o()},[o]),{stars:l,isLoading:a,error:i}}function x0(e){return e<1e3?e.toString():e<1e6?`${(e/1e3).toFixed(1)}k`:`${(e/1e6).toFixed(1)}M`}function z0({username:e,repo:t,className:l=""}){let{stars:n,isLoading:a,error:u}=U0(e,t),i=`https://github.com/${e}/${t}`;return u?tl.default.createElement("a",{href:i,target:"_blank",rel:"noopener noreferrer",title:"GitHub",className:"icon-link"},tl.default.createElement("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"currentColor"},tl.default.createElement("path",{d:"M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z"}))):tl.default.createElement("a",{href:i,target:"_blank",rel:"noopener noreferrer",className:`github-stars-btn ${l}`,title:`Star us on GitHub${n!==null?` (${n.toLocaleString()} stars)`:""}`},tl.default.createElement("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"currentColor",style:{marginRight:"6px"}},tl.default.createElement("path",{d:"M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z"})),tl.default.createElement("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"currentColor",style:{marginRight:"4px"}},tl.default.createElement("path",{d:"M12 .587l3.668 7.431 8.2 1.192-5.934 5.787 1.4 8.166L12 18.896l-7.334 3.867 1.4-8.166-5.934-5.787 8.2-1.192z"})),tl.default.createElement("span",{className:a?"stars-loading":"stars-count"},a?"...":n!==null?x0(n):"\u2014"))}var cn=ie(ae(),1);function H0(e){let t=(0,cn.useRef)(null),l=(0,cn.useRef)(null),n=(0,cn.useRef)(null),a=(0,cn.useRef)(0),u=(0,cn.useRef)(null);(0,cn.useEffect)(()=>{if(l.current||(l.current=document.createElement("canvas"),l.current.width=32,l.current.height=32),n.current||(n.current=new Image,n.current.src="claude-mem-logomark.webp"),!u.current){let v=document.querySelector('link[rel="icon"]');v&&(u.current=v.href)}let i=l.current,r=i.getContext("2d"),o=n.current;if(!r)return;let c=v=>{let p=document.querySelector('link[rel="icon"]');p||(p=document.createElement("link"),p.rel="icon",document.head.appendChild(p)),p.href=v},h=()=>{if(!o.complete){t.current=requestAnimationFrame(h);return}a.current+=2*Math.PI/90,r.clearRect(0,0,32,32),r.save(),r.translate(16,16),r.rotate(a.current),r.drawImage(o,-16,-16,32,32),r.restore(),c(i.toDataURL("image/png")),t.current=requestAnimationFrame(h)};return e?(a.current=0,h()):(t.current&&(cancelAnimationFrame(t.current),t.current=null),u.current&&c(u.current)),()=>{t.current&&(cancelAnimationFrame(t.current),t.current=null)}},[e])}function w0({isConnected:e,projects:t,currentFilter:l,onFilterChange:n,isProcessing:a,queueDepth:u,themePreference:i,onThemeChange:r,onContextPreviewToggle:o,onShowHelp:c}){return H0(a),K.default.createElement("div",{className:"header"},K.default.createElement("div",{className:"header-main"},K.default.createElement("h1",null,K.default.createElement("div",{style:{position:"relative",display:"inline-block"}},K.default.createElement("img",{src:"claude-mem-logomark.webp",alt:"",className:`logomark ${a?"spinning":""}`}),u>0&&K.default.createElement("div",{className:"queue-bubble"},u)),K.default.createElement("span",{className:"logo-text"},"claude-mem"))),K.default.createElement("div",{className:"status"},K.default.createElement("a",{href:"https://docs.claude-mem.ai",target:"_blank",rel:"noopener noreferrer",className:"icon-link",title:"Documentation"},K.default.createElement("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},K.default.createElement("path",{d:"M4 19.5A2.5 2.5 0 0 1 6.5 17H20"}),K.default.createElement("path",{d:"M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z"}))),K.default.createElement("a",{href:"https://x.com/Claude_Memory",target:"_blank",rel:"noopener noreferrer",className:"icon-link",title:"Follow us on X"},K.default.createElement("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"currentColor"},K.default.createElement("path",{d:"M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z"}))),K.default.createElement("a",{href:"https://discord.gg/J4wttp9vDu",target:"_blank",rel:"noopener noreferrer",className:"icon-link",title:"Join our Discord community"},K.default.createElement("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"currentColor"},K.default.createElement("path",{d:"M20.317 4.37a19.791 19.791 0 0 0-4.885-1.515a.074.074 0 0 0-.079.037c-.21.375-.444.864-.608 1.25a18.27 18.27 0 0 0-5.487 0a12.64 12.64 0 0 0-.617-1.25a.077.077 0 0 0-.079-.037A19.736 19.736 0 0 0 3.677 4.37a.07.07 0 0 0-.032.027C.533 9.046-.32 13.58.099 18.057a.082.082 0 0 0 .031.057a19.9 19.9 0 0 0 5.993 3.03a.078.078 0 0 0 .084-.028a14.09 14.09 0 0 0 1.226-1.994a.076.076 0 0 0-.041-.106a13.107 13.107 0 0 1-1.872-.892a.077.077 0 0 1-.008-.128a10.2 10.2 0 0 0 .372-.292a.074.074 0 0 1 .077-.01c3.928 1.793 8.18 1.793 12.062 0a.074.074 0 0 1 .078.01c.12.098.246.198.373.292a.077.077 0 0 1-.006.127a12.299 12.299 0 0 1-1.873.892a.077.077 0 0 0-.041.107c.36.698.772 1.362 1.225 1.993a.076.076 0 0 0 .084.028a19.839 19.839 0 0 0 6.002-3.03a.077.077 0 0 0 .032-.054c.5-5.177-.838-9.674-3.549-13.66a.061.061 0 0 0-.031-.03zM8.02 15.33c-1.183 0-2.157-1.085-2.157-2.419c0-1.333.956-2.419 2.157-2.419c1.21 0 2.176 1.096 2.157 2.42c0 1.333-.956 2.418-2.157 2.418zm7.975 0c-1.183 0-2.157-1.085-2.157-2.419c0-1.333.955-2.419 2.157-2.419c1.21 0 2.176 1.096 2.157 2.42c0 1.333-.946 2.418-2.157 2.418z"}))),K.default.createElement(z0,{username:"thedotmack",repo:"claude-mem"}),K.default.createElement("select",{value:l,onChange:h=>n(h.target.value)},K.default.createElement("option",{value:""},"All Projects"),t.map(h=>K.default.createElement("option",{key:h,value:h},h))),K.default.createElement(L0,{preference:i,onThemeChange:r}),K.default.createElement("button",{className:"settings-btn",onClick:()=>c?.(),title:"Show welcome card","aria-label":"Show welcome card"},K.default.createElement("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},K.default.createElement("circle",{cx:"12",cy:"12",r:"10"}),K.default.createElement("path",{d:"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"}),K.default.createElement("line",{x1:"12",y1:"17",x2:"12.01",y2:"17"}))),K.default.createElement("button",{className:"settings-btn",onClick:o,title:"Settings"},K.default.createElement("svg",{className:"settings-icon",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},K.default.createElement("path",{d:"M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z"}),K.default.createElement("circle",{cx:"12",cy:"12",r:"3"})))))}var _e=ie(ae(),1);var j=ie(ae(),1);function Ra(e){return new Date(e).toLocaleString()}function q0(e){let t=["/Scripts/","/src/","/plugin/","/docs/"];for(let a of t){let u=e.indexOf(a);if(u!==-1)return e.substring(u+1)}let l=e.indexOf("claude-mem/");if(l!==-1)return e.substring(l+11);let n=e.split("/");return n.length>3?n.slice(-3).join("/"):e}function R0({observation:e}){let[t,l]=(0,j.useState)(!1),[n,a]=(0,j.useState)(!1),u=Ra(e.created_at_epoch),i=e.facts?JSON.parse(e.facts):[],r=e.concepts?JSON.parse(e.concepts):[],o=e.files_read?JSON.parse(e.files_read).map(q0):[],c=e.files_modified?JSON.parse(e.files_modified).map(q0):[],h=i.length>0||r.length>0||o.length>0||c.length>0;return j.default.createElement("div",{className:"card"},j.default.createElement("div",{className:"card-header"},j.default.createElement("div",{className:"card-header-left"},j.default.createElement("span",{className:`card-type type-${e.type}`},e.type),j.default.createElement("span",{className:`card-source source-${e.platform_source||"claude"}`},e.platform_source||"claude"),j.default.createElement("span",{className:"card-project"},e.project),e.merged_into_project&&j.default.createElement("span",{className:"card-merged-badge",title:`Merged into ${e.merged_into_project}`},"merged \u2192 ",e.merged_into_project)),j.default.createElement("div",{className:"view-mode-toggles"},h&&j.default.createElement("button",{className:`view-mode-toggle ${t?"active":""}`,onClick:()=>{l(!t),t||a(!1)}},j.default.createElement("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},j.default.createElement("polyline",{points:"9 11 12 14 22 4"}),j.default.createElement("path",{d:"M21 12v7a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11"})),j.default.createElement("span",null,"facts")),e.narrative&&j.default.createElement("button",{className:`view-mode-toggle ${n?"active":""}`,onClick:()=>{a(!n),n||l(!1)}},j.default.createElement("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},j.default.createElement("path",{d:"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"}),j.default.createElement("polyline",{points:"14 2 14 8 20 8"}),j.default.createElement("line",{x1:"16",y1:"13",x2:"8",y2:"13"}),j.default.createElement("line",{x1:"16",y1:"17",x2:"8",y2:"17"})),j.default.createElement("span",null,"narrative")))),j.default.createElement("div",{className:"card-title"},e.title||"Untitled"),j.default.createElement("div",{className:"view-mode-content"},!t&&!n&&e.subtitle&&j.default.createElement("div",{className:"card-subtitle"},e.subtitle),t&&i.length>0&&j.default.createElement("ul",{className:"facts-list"},i.map((v,p)=>j.default.createElement("li",{key:p},v))),n&&e.narrative&&j.default.createElement("div",{className:"narrative"},e.narrative)),j.default.createElement("div",{className:"card-meta"},j.default.createElement("span",{className:"meta-date"},"#",e.id," \u2022 ",u),t&&(r.length>0||o.length>0||c.length>0)&&j.default.createElement("div",{style:{display:"flex",flexWrap:"wrap",gap:"8px",alignItems:"center"}},r.map((v,p)=>j.default.createElement("span",{key:p,style:{padding:"2px 8px",background:"var(--color-type-badge-bg)",color:"var(--color-type-badge-text)",borderRadius:"3px",fontWeight:"500",fontSize:"10px"}},v)),o.length>0&&j.default.createElement("span",{className:"meta-files"},j.default.createElement("span",{className:"file-label"},"read:")," ",o.join(", ")),c.length>0&&j.default.createElement("span",{className:"meta-files"},j.default.createElement("span",{className:"file-label"},"modified:")," ",c.join(", ")))))}var Xe=ie(ae(),1);function B0({summary:e}){let t=Ra(e.created_at_epoch),l=[{key:"investigated",label:"Investigated",content:e.investigated,icon:"/icon-thick-investigated.svg"},{key:"learned",label:"Learned",content:e.learned,icon:"/icon-thick-learned.svg"},{key:"completed",label:"Completed",content:e.completed,icon:"/icon-thick-completed.svg"},{key:"next_steps",label:"Next Steps",content:e.next_steps,icon:"/icon-thick-next-steps.svg"}].filter(n=>n.content);return Xe.default.createElement("article",{className:"card summary-card"},Xe.default.createElement("header",{className:"summary-card-header"},Xe.default.createElement("div",{className:"summary-badge-row"},Xe.default.createElement("span",{className:"card-type summary-badge"},"Session Summary"),Xe.default.createElement("span",{className:`card-source source-${e.platform_source||"claude"}`},e.platform_source||"claude"),Xe.default.createElement("span",{className:"summary-project-badge"},e.project)),e.request&&Xe.default.createElement("h2",{className:"summary-title"},e.request)),Xe.default.createElement("div",{className:"summary-sections"},l.map((n,a)=>Xe.default.createElement("section",{key:n.key,className:"summary-section",style:{animationDelay:`${a*50}ms`}},Xe.default.createElement("div",{className:"summary-section-header"},Xe.default.createElement("img",{src:n.icon,alt:n.label,className:`summary-section-icon summary-section-icon--${n.key}`}),Xe.default.createElement("h3",{className:"summary-section-label"},n.label)),Xe.default.createElement("div",{className:"summary-section-content"},n.content)))),Xe.default.createElement("footer",{className:"summary-card-footer"},Xe.default.createElement("span",{className:"summary-meta-id"},"Session #",e.id),Xe.default.createElement("span",{className:"summary-meta-divider"},"\u2022"),Xe.default.createElement("time",{className:"summary-meta-date",dateTime:new Date(e.created_at_epoch).toISOString()},t)))}var ll=ie(ae(),1);function G0({prompt:e}){let t=Ra(e.created_at_epoch);return ll.default.createElement("div",{className:"card prompt-card"},ll.default.createElement("div",{className:"card-header"},ll.default.createElement("div",{className:"card-header-left"},ll.default.createElement("span",{className:"card-type"},"Prompt"),ll.default.createElement("span",{className:`card-source source-${e.platform_source||"claude"}`},e.platform_source||"claude"),ll.default.createElement("span",{className:"card-project"},e.project))),ll.default.createElement("div",{className:"card-content"},e.prompt_text),ll.default.createElement("div",{className:"card-meta"},ll.default.createElement("span",{className:"meta-date"},"#",e.id," \u2022 ",t)))}var sn=ie(ae(),1);function j0({targetRef:e}){let[t,l]=(0,sn.useState)(!1);(0,sn.useEffect)(()=>{let a=()=>{let i=e.current;i&&l(i.scrollTop>300)},u=e.current;if(u)return u.addEventListener("scroll",a),()=>u.removeEventListener("scroll",a)},[]);let n=()=>{let a=e.current;a&&a.scrollTo({top:0,behavior:"smooth"})};return t?sn.default.createElement("button",{onClick:n,className:"scroll-to-top","aria-label":"Scroll to top"},sn.default.createElement("svg",{width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},sn.default.createElement("polyline",{points:"18 15 12 9 6 15"}))):null}var Pu={PAGINATION_PAGE_SIZE:50,LOAD_MORE_THRESHOLD:.1};function Y0({observations:e,summaries:t,prompts:l,onLoadMore:n,isLoading:a,hasMore:u}){let i=(0,_e.useRef)(null),r=(0,_e.useRef)(null),o=(0,_e.useRef)(n);(0,_e.useEffect)(()=>{o.current=n},[n]),(0,_e.useEffect)(()=>{let h=i.current;if(!h)return;let v=new IntersectionObserver(p=>{p[0].isIntersecting&&u&&!a&&o.current?.()},{threshold:Pu.LOAD_MORE_THRESHOLD});return v.observe(h),()=>{h&&v.unobserve(h),v.disconnect()}},[u,a]);let c=(0,_e.useMemo)(()=>[...e.map(v=>({...v,itemType:"observation"})),...t.map(v=>({...v,itemType:"summary"})),...l.map(v=>({...v,itemType:"prompt"}))].sort((v,p)=>p.created_at_epoch-v.created_at_epoch),[e,t,l]);return _e.default.createElement("div",{className:"feed",ref:r},_e.default.createElement(j0,{targetRef:r}),_e.default.createElement("div",{className:"feed-content"},c.map(h=>{let v=`${h.itemType}-${h.id}`;return h.itemType==="observation"?_e.default.createElement(R0,{key:v,observation:h}):h.itemType==="summary"?_e.default.createElement(B0,{key:v,summary:h}):_e.default.createElement(G0,{key:v,prompt:h})}),c.length===0&&!a&&_e.default.createElement("div",{style:{textAlign:"center",padding:"40px",color:"#8b949e"}},"No items to display"),a&&_e.default.createElement("div",{style:{textAlign:"center",padding:"20px",color:"#8b949e"}},_e.default.createElement("div",{className:"spinner",style:{display:"inline-block",marginRight:"10px"}}),"Loading more..."),u&&!a&&c.length>0&&_e.default.createElement("div",{ref:i,style:{height:"20px",margin:"10px 0"}}),!u&&c.length>0&&_e.default.createElement("div",{style:{textAlign:"center",padding:"20px",color:"#8b949e",fontSize:"14px"}},"No more items to load")))}var S=ie(ae(),1);var qe=ie(ae(),1),Hh=ie(hh(),1);function vh(e,t){(t==null||t>e.length)&&(t=e.length);for(var l=0,n=Array(t);l<t;l++)n[l]=e[l];return n}function qE(e){if(Array.isArray(e))return e}function RE(e,t){var l=e==null?null:typeof Symbol<"u"&&e[Symbol.iterator]||e["@@iterator"];if(l!=null){var n,a,u,i,r=[],o=!0,c=!1;try{if(u=(l=l.call(e)).next,t!==0)for(;!(o=(n=u.call(l)).done)&&(r.push(n.value),r.length!==t);o=!0);}catch(h){c=!0,a=h}finally{try{if(!o&&l.return!=null&&(i=l.return(),Object(i)!==i))return}finally{if(c)throw a}}return r}}function BE(){throw new TypeError(`Invalid attempt to destructure non-iterable instance.
12
12
  In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function GE(e,t){return qE(e)||RE(e,t)||jE(e,t)||BE()}function jE(e,t){if(e){if(typeof e=="string")return vh(e,t);var l={}.toString.call(e).slice(8,-1);return l==="Object"&&e.constructor&&(l=e.constructor.name),l==="Map"||l==="Set"?Array.from(e):l==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(l)?vh(e,t):void 0}}var Lh=Object.entries,yh=Object.setPrototypeOf,YE=Object.isFrozen,XE=Object.getPrototypeOf,kE=Object.getOwnPropertyDescriptor,lt=Object.freeze,Gt=Object.seal,Xa=Object.create,Uh=typeof Reflect<"u"&&Reflect,ff=Uh.apply,mf=Uh.construct;lt||(lt=function(t){return t});Gt||(Gt=function(t){return t});ff||(ff=function(t,l){for(var n=arguments.length,a=new Array(n>2?n-2:0),u=2;u<n;u++)a[u-2]=arguments[u];return t.apply(l,a)});mf||(mf=function(t){for(var l=arguments.length,n=new Array(l>1?l-1:0),a=1;a<l;a++)n[a-1]=arguments[a];return new t(...n)});var Ba=Ue(Array.prototype.forEach),VE=Ue(Array.prototype.lastIndexOf),Eh=Ue(Array.prototype.pop),Ga=Ue(Array.prototype.push),QE=Ue(Array.prototype.splice),tt=Array.isArray,ti=Ue(String.prototype.toLowerCase),uf=Ue(String.prototype.toString),Sh=Ue(String.prototype.match),ja=Ue(String.prototype.replace),bh=Ue(String.prototype.indexOf),ZE=Ue(String.prototype.trim),KE=Ue(Number.prototype.toString),JE=Ue(Boolean.prototype.toString),Th=typeof BigInt>"u"?null:Ue(BigInt.prototype.toString),_h=typeof Symbol>"u"?null:Ue(Symbol.prototype.toString),ye=Ue(Object.prototype.hasOwnProperty),ei=Ue(Object.prototype.toString),Fe=Ue(RegExp.prototype.test),Jr=FE(TypeError);function Ue(e){return function(t){t instanceof RegExp&&(t.lastIndex=0);for(var l=arguments.length,n=new Array(l>1?l-1:0),a=1;a<l;a++)n[a-1]=arguments[a];return ff(e,t,n)}}function FE(e){return function(){for(var t=arguments.length,l=new Array(t),n=0;n<t;n++)l[n]=arguments[n];return mf(e,l)}}function G(e,t){let l=arguments.length>2&&arguments[2]!==void 0?arguments[2]:ti;if(yh&&yh(e,null),!tt(t))return e;let n=t.length;for(;n--;){let a=t[n];if(typeof a=="string"){let u=l(a);u!==a&&(YE(t)||(t[n]=u),a=u)}e[a]=!0}return e}function IE(e){for(let t=0;t<e.length;t++)ye(e,t)||(e[t]=null);return e}function mt(e){let t=Xa(null);for(let n of Lh(e)){var l=GE(n,2);let a=l[0],u=l[1];ye(e,a)&&(tt(u)?t[a]=IE(u):u&&typeof u=="object"&&u.constructor===Object?t[a]=mt(u):t[a]=u)}return t}function WE(e){switch(typeof e){case"string":return e;case"number":return KE(e);case"boolean":return JE(e);case"bigint":return Th?Th(e):"0";case"symbol":return _h?_h(e):"Symbol()";case"undefined":return ei(e);case"function":case"object":{if(e===null)return ei(e);let t=e,l=Rn(t,"toString");if(typeof l=="function"){let n=l(t);return typeof n=="string"?n:ei(n)}return ei(e)}default:return ei(e)}}function Rn(e,t){for(;e!==null;){let n=kE(e,t);if(n){if(n.get)return Ue(n.get);if(typeof n.value=="function")return Ue(n.value)}e=XE(e)}function l(){return null}return l}function PE(e){try{return Fe(e,""),!0}catch{return!1}}var Ah=lt(["a","abbr","acronym","address","area","article","aside","audio","b","bdi","bdo","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","content","data","datalist","dd","decorator","del","details","dfn","dialog","dir","div","dl","dt","element","em","fieldset","figcaption","figure","font","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","img","input","ins","kbd","label","legend","li","main","map","mark","marquee","menu","menuitem","meter","nav","nobr","ol","optgroup","option","output","p","picture","pre","progress","q","rp","rt","ruby","s","samp","search","section","select","shadow","slot","small","source","spacer","span","strike","strong","style","sub","summary","sup","table","tbody","td","template","textarea","tfoot","th","thead","time","tr","track","tt","u","ul","var","video","wbr"]),rf=lt(["svg","a","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","circle","clippath","defs","desc","ellipse","enterkeyhint","exportparts","filter","font","g","glyph","glyphref","hkern","image","inputmode","line","lineargradient","marker","mask","metadata","mpath","part","path","pattern","polygon","polyline","radialgradient","rect","stop","style","switch","symbol","text","textpath","title","tref","tspan","view","vkern"]),of=lt(["feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feDistantLight","feDropShadow","feFlood","feFuncA","feFuncB","feFuncG","feFuncR","feGaussianBlur","feImage","feMerge","feMergeNode","feMorphology","feOffset","fePointLight","feSpecularLighting","feSpotLight","feTile","feTurbulence"]),$E=lt(["animate","color-profile","cursor","discard","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","foreignobject","hatch","hatchpath","mesh","meshgradient","meshpatch","meshrow","missing-glyph","script","set","solidcolor","unknown","use"]),cf=lt(["math","menclose","merror","mfenced","mfrac","mglyph","mi","mlabeledtr","mmultiscripts","mn","mo","mover","mpadded","mphantom","mroot","mrow","ms","mspace","msqrt","mstyle","msub","msup","msubsup","mtable","mtd","mtext","mtr","munder","munderover","mprescripts"]),eS=lt(["maction","maligngroup","malignmark","mlongdiv","mscarries","mscarry","msgroup","mstack","msline","msrow","semantics","annotation","annotation-xml","mprescripts","none"]),Mh=lt(["#text"]),Oh=lt(["accept","action","align","alt","autocapitalize","autocomplete","autopictureinpicture","autoplay","background","bgcolor","border","capture","cellpadding","cellspacing","checked","cite","class","clear","color","cols","colspan","command","commandfor","controls","controlslist","coords","crossorigin","datetime","decoding","default","dir","disabled","disablepictureinpicture","disableremoteplayback","download","draggable","enctype","enterkeyhint","exportparts","face","for","headers","height","hidden","high","href","hreflang","id","inert","inputmode","integrity","ismap","kind","label","lang","list","loading","loop","low","max","maxlength","media","method","min","minlength","multiple","muted","name","nonce","noshade","novalidate","nowrap","open","optimum","part","pattern","placeholder","playsinline","popover","popovertarget","popovertargetaction","poster","preload","pubdate","radiogroup","readonly","rel","required","rev","reversed","role","rows","rowspan","spellcheck","scope","selected","shape","size","sizes","slot","span","srclang","start","src","srcset","step","style","summary","tabindex","title","translate","type","usemap","valign","value","width","wrap","xmlns"]),sf=lt(["accent-height","accumulate","additive","alignment-baseline","amplitude","ascent","attributename","attributetype","azimuth","basefrequency","baseline-shift","begin","bias","by","class","clip","clippathunits","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","cx","cy","d","dx","dy","diffuseconstant","direction","display","divisor","dur","edgemode","elevation","end","exponent","fill","fill-opacity","fill-rule","filter","filterunits","flood-color","flood-opacity","font-family","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-weight","fx","fy","g1","g2","glyph-name","glyphref","gradientunits","gradienttransform","height","href","id","image-rendering","in","in2","intercept","k","k1","k2","k3","k4","kerning","keypoints","keysplines","keytimes","lang","lengthadjust","letter-spacing","kernelmatrix","kernelunitlength","lighting-color","local","marker-end","marker-mid","marker-start","markerheight","markerunits","markerwidth","maskcontentunits","maskunits","max","mask","mask-type","media","method","mode","min","name","numoctaves","offset","operator","opacity","order","orient","orientation","origin","overflow","paint-order","path","pathlength","patterncontentunits","patterntransform","patternunits","points","preservealpha","preserveaspectratio","primitiveunits","r","rx","ry","radius","refx","refy","repeatcount","repeatdur","restart","result","rotate","scale","seed","shape-rendering","slope","specularconstant","specularexponent","spreadmethod","startoffset","stddeviation","stitchtiles","stop-color","stop-opacity","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke","stroke-width","style","surfacescale","systemlanguage","tabindex","tablevalues","targetx","targety","transform","transform-origin","text-anchor","text-decoration","text-rendering","textlength","type","u1","u2","unicode","values","viewbox","visibility","version","vert-adv-y","vert-origin-x","vert-origin-y","width","word-spacing","wrap","writing-mode","xchannelselector","ychannelselector","x","x1","x2","xmlns","y","y1","y2","z","zoomandpan"]),Nh=lt(["accent","accentunder","align","bevelled","close","columnalign","columnlines","columnspacing","columnspan","denomalign","depth","dir","display","displaystyle","encoding","fence","frame","height","href","id","largeop","length","linethickness","lquote","lspace","mathbackground","mathcolor","mathsize","mathvariant","maxsize","minsize","movablelimits","notation","numalign","open","rowalign","rowlines","rowspacing","rowspan","rspace","rquote","scriptlevel","scriptminsize","scriptsizemultiplier","selection","separator","separators","stretchy","subscriptshift","supscriptshift","symmetric","voffset","width","xmlns"]),Fr=lt(["xlink:href","xml:id","xlink:title","xml:space","xmlns:xlink"]),tS=Gt(/{{[\w\W]*|^[\w\W]*}}/g),lS=Gt(/<%[\w\W]*|^[\w\W]*%>/g),nS=Gt(/\${[\w\W]*/g),aS=Gt(/^data-[\-\w.\u00B7-\uFFFF]+$/),uS=Gt(/^aria-[\-\w]+$/),Dh=Gt(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),iS=Gt(/^(?:\w+script|data):/i),rS=Gt(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),oS=Gt(/^html$/i),cS=Gt(/^[a-z][.\w]*(-[.\w]+)+$/i),Ya={element:1,text:3,progressingInstruction:7,comment:8,document:9},sS=function(){return typeof window>"u"?null:window},fS=function(t,l){if(typeof t!="object"||typeof t.createPolicy!="function")return null;let n=null,a="data-tt-policy-suffix";l&&l.hasAttribute(a)&&(n=l.getAttribute(a));let u="dompurify"+(n?"#"+n:"");try{return t.createPolicy(u,{createHTML(i){return i},createScriptURL(i){return i}})}catch{return console.warn("TrustedTypes policy "+u+" could not be created."),null}},Ch=function(){return{afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}};function xh(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:sS(),t=x=>xh(x);if(t.version="3.4.5",t.removed=[],!e||!e.document||e.document.nodeType!==Ya.document||!e.Element)return t.isSupported=!1,t;let l=e.document,n=l,a=n.currentScript,u=e.DocumentFragment,i=e.HTMLTemplateElement,r=e.Node,o=e.Element,c=e.NodeFilter,h=e.NamedNodeMap,v=h===void 0?e.NamedNodeMap||e.MozNamedAttrMap:h,p=e.HTMLFormElement,y=e.DOMParser,T=e.trustedTypes,M=o.prototype,L=Rn(M,"cloneNode"),s=Rn(M,"remove"),f=Rn(M,"nextSibling"),g=Rn(M,"childNodes"),d=Rn(M,"parentNode"),A=r&&r.prototype?Rn(r.prototype,"nodeType"):null;if(typeof i=="function"){let x=l.createElement("template");x.content&&x.content.ownerDocument&&(l=x.content.ownerDocument)}let D,O="",z=l,w=z.implementation,R=z.createNodeIterator,Ie=z.createDocumentFragment,ge=z.getElementsByTagName,pt=n.importNode,xe=Ch();t.isSupported=typeof Lh=="function"&&typeof d=="function"&&w&&w.createHTMLDocument!==void 0;let Dl=tS,Cl=lS,al=nS,Bn=aS,Gn=uS,Ae=iS,_=rS,de=cS,ne=Dh,F=null,Qt=G({},[...Ah,...rf,...of,...cf,...Mh]),Ee=null,jn=G({},[...Oh,...sf,...Nh,...Fr]),Se=Object.seal(Xa(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),Ka=null,ai=null,Ll=Object.seal(Xa(null,{tagCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeCheck:{writable:!0,configurable:!1,enumerable:!0,value:null}})),yf=!0,$r=!0,Ef=!1,Sf=!0,Ul=!1,Ja=!0,pn=!1,eo=!1,to=!1,Yn=!1,ui=!1,ii=!1,bf=!0,Tf=!1,_f="user-content-",lo=!0,Fa=!1,Xn={},Zt=null,no=G({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]),Af=null,Mf=G({},["audio","video","img","source","image","track"]),ao=null,Of=G({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),ri="http://www.w3.org/1998/Math/MathML",oi="http://www.w3.org/2000/svg",Kt="http://www.w3.org/1999/xhtml",kn=Kt,uo=!1,io=null,Ph=G({},[ri,oi,Kt],uf),ro=G({},["mi","mo","mn","ms","mtext"]),oo=G({},["annotation-xml"]),$h=G({},["title","style","font","a","script"]),Ia=null,e1=["application/xhtml+xml","text/html"],t1="text/html",ze=null,Vn=null,l1=l.createElement("form"),Nf=function(m){return m instanceof RegExp||m instanceof Function},co=function(){let m=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(Vn&&Vn===m)return;(!m||typeof m!="object")&&(m={}),m=mt(m),Ia=e1.indexOf(m.PARSER_MEDIA_TYPE)===-1?t1:m.PARSER_MEDIA_TYPE,ze=Ia==="application/xhtml+xml"?uf:ti,F=ye(m,"ALLOWED_TAGS")&&tt(m.ALLOWED_TAGS)?G({},m.ALLOWED_TAGS,ze):Qt,Ee=ye(m,"ALLOWED_ATTR")&&tt(m.ALLOWED_ATTR)?G({},m.ALLOWED_ATTR,ze):jn,io=ye(m,"ALLOWED_NAMESPACES")&&tt(m.ALLOWED_NAMESPACES)?G({},m.ALLOWED_NAMESPACES,uf):Ph,ao=ye(m,"ADD_URI_SAFE_ATTR")&&tt(m.ADD_URI_SAFE_ATTR)?G(mt(Of),m.ADD_URI_SAFE_ATTR,ze):Of,Af=ye(m,"ADD_DATA_URI_TAGS")&&tt(m.ADD_DATA_URI_TAGS)?G(mt(Mf),m.ADD_DATA_URI_TAGS,ze):Mf,Zt=ye(m,"FORBID_CONTENTS")&&tt(m.FORBID_CONTENTS)?G({},m.FORBID_CONTENTS,ze):no,Ka=ye(m,"FORBID_TAGS")&&tt(m.FORBID_TAGS)?G({},m.FORBID_TAGS,ze):mt({}),ai=ye(m,"FORBID_ATTR")&&tt(m.FORBID_ATTR)?G({},m.FORBID_ATTR,ze):mt({}),Xn=ye(m,"USE_PROFILES")?m.USE_PROFILES&&typeof m.USE_PROFILES=="object"?mt(m.USE_PROFILES):m.USE_PROFILES:!1,yf=m.ALLOW_ARIA_ATTR!==!1,$r=m.ALLOW_DATA_ATTR!==!1,Ef=m.ALLOW_UNKNOWN_PROTOCOLS||!1,Sf=m.ALLOW_SELF_CLOSE_IN_ATTR!==!1,Ul=m.SAFE_FOR_TEMPLATES||!1,Ja=m.SAFE_FOR_XML!==!1,pn=m.WHOLE_DOCUMENT||!1,Yn=m.RETURN_DOM||!1,ui=m.RETURN_DOM_FRAGMENT||!1,ii=m.RETURN_TRUSTED_TYPE||!1,to=m.FORCE_BODY||!1,bf=m.SANITIZE_DOM!==!1,Tf=m.SANITIZE_NAMED_PROPS||!1,lo=m.KEEP_CONTENT!==!1,Fa=m.IN_PLACE||!1,ne=PE(m.ALLOWED_URI_REGEXP)?m.ALLOWED_URI_REGEXP:Dh,kn=typeof m.NAMESPACE=="string"?m.NAMESPACE:Kt,ro=ye(m,"MATHML_TEXT_INTEGRATION_POINTS")&&m.MATHML_TEXT_INTEGRATION_POINTS&&typeof m.MATHML_TEXT_INTEGRATION_POINTS=="object"?mt(m.MATHML_TEXT_INTEGRATION_POINTS):G({},["mi","mo","mn","ms","mtext"]),oo=ye(m,"HTML_INTEGRATION_POINTS")&&m.HTML_INTEGRATION_POINTS&&typeof m.HTML_INTEGRATION_POINTS=="object"?mt(m.HTML_INTEGRATION_POINTS):G({},["annotation-xml"]);let b=ye(m,"CUSTOM_ELEMENT_HANDLING")&&m.CUSTOM_ELEMENT_HANDLING&&typeof m.CUSTOM_ELEMENT_HANDLING=="object"?mt(m.CUSTOM_ELEMENT_HANDLING):Xa(null);if(Se=Xa(null),ye(b,"tagNameCheck")&&Nf(b.tagNameCheck)&&(Se.tagNameCheck=b.tagNameCheck),ye(b,"attributeNameCheck")&&Nf(b.attributeNameCheck)&&(Se.attributeNameCheck=b.attributeNameCheck),ye(b,"allowCustomizedBuiltInElements")&&typeof b.allowCustomizedBuiltInElements=="boolean"&&(Se.allowCustomizedBuiltInElements=b.allowCustomizedBuiltInElements),Ul&&($r=!1),ui&&(Yn=!0),Xn&&(F=G({},Mh),Ee=Xa(null),Xn.html===!0&&(G(F,Ah),G(Ee,Oh)),Xn.svg===!0&&(G(F,rf),G(Ee,sf),G(Ee,Fr)),Xn.svgFilters===!0&&(G(F,of),G(Ee,sf),G(Ee,Fr)),Xn.mathMl===!0&&(G(F,cf),G(Ee,Nh),G(Ee,Fr))),Ll.tagCheck=null,Ll.attributeCheck=null,ye(m,"ADD_TAGS")&&(typeof m.ADD_TAGS=="function"?Ll.tagCheck=m.ADD_TAGS:tt(m.ADD_TAGS)&&(F===Qt&&(F=mt(F)),G(F,m.ADD_TAGS,ze))),ye(m,"ADD_ATTR")&&(typeof m.ADD_ATTR=="function"?Ll.attributeCheck=m.ADD_ATTR:tt(m.ADD_ATTR)&&(Ee===jn&&(Ee=mt(Ee)),G(Ee,m.ADD_ATTR,ze))),ye(m,"ADD_URI_SAFE_ATTR")&&tt(m.ADD_URI_SAFE_ATTR)&&G(ao,m.ADD_URI_SAFE_ATTR,ze),ye(m,"FORBID_CONTENTS")&&tt(m.FORBID_CONTENTS)&&(Zt===no&&(Zt=mt(Zt)),G(Zt,m.FORBID_CONTENTS,ze)),ye(m,"ADD_FORBID_CONTENTS")&&tt(m.ADD_FORBID_CONTENTS)&&(Zt===no&&(Zt=mt(Zt)),G(Zt,m.ADD_FORBID_CONTENTS,ze)),lo&&(F["#text"]=!0),pn&&G(F,["html","head","body"]),F.table&&(G(F,["tbody"]),delete Ka.tbody),m.TRUSTED_TYPES_POLICY){if(typeof m.TRUSTED_TYPES_POLICY.createHTML!="function")throw Jr('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if(typeof m.TRUSTED_TYPES_POLICY.createScriptURL!="function")throw Jr('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');D=m.TRUSTED_TYPES_POLICY,O=D.createHTML("")}else D===void 0&&(D=fS(T,a)),D!==null&&typeof O=="string"&&(O=D.createHTML(""));lt&&lt(m),Vn=m},Df=G({},[...rf,...of,...$E]),Cf=G({},[...cf,...eS]),n1=function(m){let b=d(m);(!b||!b.tagName)&&(b={namespaceURI:kn,tagName:"template"});let C=ti(m.tagName),X=ti(b.tagName);return io[m.namespaceURI]?m.namespaceURI===oi?b.namespaceURI===Kt?C==="svg":b.namespaceURI===ri?C==="svg"&&(X==="annotation-xml"||ro[X]):!!Df[C]:m.namespaceURI===ri?b.namespaceURI===Kt?C==="math":b.namespaceURI===oi?C==="math"&&oo[X]:!!Cf[C]:m.namespaceURI===Kt?b.namespaceURI===oi&&!oo[X]||b.namespaceURI===ri&&!ro[X]?!1:!Cf[C]&&($h[C]||!Df[C]):!!(Ia==="application/xhtml+xml"&&io[m.namespaceURI]):!1},jt=function(m){Ga(t.removed,{element:m});try{d(m).removeChild(m)}catch{s(m)}},gn=function(m,b){try{Ga(t.removed,{attribute:b.getAttributeNode(m),from:b})}catch{Ga(t.removed,{attribute:null,from:b})}if(b.removeAttribute(m),m==="is")if(Yn||ui)try{jt(b)}catch{}else try{b.setAttribute(m,"")}catch{}},Lf=function(m){let b=null,C=null;if(to)m="<remove></remove>"+m;else{let Oe=Sh(m,/^[\r\n\t ]+/);C=Oe&&Oe[0]}Ia==="application/xhtml+xml"&&kn===Kt&&(m='<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>'+m+"</body></html>");let X=D?D.createHTML(m):m;if(kn===Kt)try{b=new y().parseFromString(X,Ia)}catch{}if(!b||!b.documentElement){b=w.createDocument(kn,"template",null);try{b.documentElement.innerHTML=uo?O:X}catch{}}let Me=b.body||b.documentElement;return m&&C&&Me.insertBefore(l.createTextNode(C),Me.childNodes[0]||null),kn===Kt?ge.call(b,pn?"html":"body")[0]:pn?b.documentElement:Me},Uf=function(m){return R.call(m.ownerDocument||m,m,c.SHOW_ELEMENT|c.SHOW_COMMENT|c.SHOW_TEXT|c.SHOW_PROCESSING_INSTRUCTION|c.SHOW_CDATA_SECTION,null)},xf=function(m){m.normalize();let b=R.call(m.ownerDocument||m,m,c.SHOW_TEXT|c.SHOW_COMMENT|c.SHOW_CDATA_SECTION|c.SHOW_PROCESSING_INSTRUCTION,null),C=b.nextNode();for(;C;){let X=C.data;Ba([Dl,Cl,al],Me=>{X=ja(X,Me," ")}),C.data=X,C=b.nextNode()}},so=function(m){return m instanceof p&&(typeof m.nodeName!="string"||typeof m.textContent!="string"||typeof m.removeChild!="function"||!(m.attributes instanceof v)||typeof m.removeAttribute!="function"||typeof m.setAttribute!="function"||typeof m.namespaceURI!="string"||typeof m.insertBefore!="function"||typeof m.hasChildNodes!="function")},ci=function(m){if(!A||typeof m!="object"||m===null)return!1;try{return typeof A(m)=="number"}catch{return!1}};function ul(x,m,b){Ba(x,C=>{C.call(t,m,b,Vn)})}let zf=function(m){let b=null;if(ul(xe.beforeSanitizeElements,m,null),so(m))return jt(m),!0;let C=ze(m.nodeName);if(ul(xe.uponSanitizeElement,m,{tagName:C,allowedTags:F}),Ja&&m.hasChildNodes()&&!ci(m.firstElementChild)&&Fe(/<[/\w!]/g,m.innerHTML)&&Fe(/<[/\w!]/g,m.textContent)||Ja&&m.namespaceURI===Kt&&C==="style"&&ci(m.firstElementChild)||m.nodeType===Ya.progressingInstruction||Ja&&m.nodeType===Ya.comment&&Fe(/<[/\w]/g,m.data))return jt(m),!0;if(Ka[C]||!(Ll.tagCheck instanceof Function&&Ll.tagCheck(C))&&!F[C]){if(!Ka[C]&&wf(C)&&(Se.tagNameCheck instanceof RegExp&&Fe(Se.tagNameCheck,C)||Se.tagNameCheck instanceof Function&&Se.tagNameCheck(C)))return!1;if(lo&&!Zt[C]){let X=d(m)||m.parentNode,Me=g(m)||m.childNodes;if(Me&&X){let Oe=Me.length;for(let nt=Oe-1;nt>=0;--nt){let xl=L(Me[nt],!0);X.insertBefore(xl,f(m))}}}return jt(m),!0}return m instanceof o&&!n1(m)||(C==="noscript"||C==="noembed"||C==="noframes")&&Fe(/<\/no(script|embed|frames)/i,m.innerHTML)?(jt(m),!0):(Ul&&m.nodeType===Ya.text&&(b=m.textContent,Ba([Dl,Cl,al],X=>{b=ja(b,X," ")}),m.textContent!==b&&(Ga(t.removed,{element:m.cloneNode()}),m.textContent=b)),ul(xe.afterSanitizeElements,m,null),!1)},Hf=function(m,b,C){if(ai[b]||bf&&(b==="id"||b==="name")&&(C in l||C in l1))return!1;let X=Ee[b]||Ll.attributeCheck instanceof Function&&Ll.attributeCheck(b,m);if(!($r&&!ai[b]&&Fe(Bn,b))){if(!(yf&&Fe(Gn,b))){if(!X||ai[b]){if(!(wf(m)&&(Se.tagNameCheck instanceof RegExp&&Fe(Se.tagNameCheck,m)||Se.tagNameCheck instanceof Function&&Se.tagNameCheck(m))&&(Se.attributeNameCheck instanceof RegExp&&Fe(Se.attributeNameCheck,b)||Se.attributeNameCheck instanceof Function&&Se.attributeNameCheck(b,m))||b==="is"&&Se.allowCustomizedBuiltInElements&&(Se.tagNameCheck instanceof RegExp&&Fe(Se.tagNameCheck,C)||Se.tagNameCheck instanceof Function&&Se.tagNameCheck(C))))return!1}else if(!ao[b]){if(!Fe(ne,ja(C,_,""))){if(!((b==="src"||b==="xlink:href"||b==="href")&&m!=="script"&&bh(C,"data:")===0&&Af[m])){if(!(Ef&&!Fe(Ae,ja(C,_,"")))){if(C)return!1}}}}}}return!0},a1=G({},["annotation-xml","color-profile","font-face","font-face-format","font-face-name","font-face-src","font-face-uri","missing-glyph"]),wf=function(m){return!a1[ti(m)]&&Fe(de,m)},qf=function(m){ul(xe.beforeSanitizeAttributes,m,null);let b=m.attributes;if(!b||so(m))return;let C={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:Ee,forceKeepAttr:void 0},X=b.length;for(;X--;){let Me=b[X],Oe=Me.name,nt=Me.namespaceURI,xl=Me.value,il=ze(Oe),mo=xl,Re=Oe==="value"?mo:ZE(mo);if(C.attrName=il,C.attrValue=Re,C.keepAttr=!0,C.forceKeepAttr=void 0,ul(xe.uponSanitizeAttribute,m,C),Re=C.attrValue,Tf&&(il==="id"||il==="name")&&bh(Re,_f)!==0&&(gn(Oe,m),Re=_f+Re),Ja&&Fe(/((--!?|])>)|<\/(style|script|title|xmp|textarea|noscript|iframe|noembed|noframes)/i,Re)){gn(Oe,m);continue}if(il==="attributename"&&Sh(Re,"href")){gn(Oe,m);continue}if(C.forceKeepAttr)continue;if(!C.keepAttr){gn(Oe,m);continue}if(!Sf&&Fe(/\/>/i,Re)){gn(Oe,m);continue}Ul&&Ba([Dl,Cl,al],Bf=>{Re=ja(Re,Bf," ")});let Rf=ze(m.nodeName);if(!Hf(Rf,il,Re)){gn(Oe,m);continue}if(D&&typeof T=="object"&&typeof T.getAttributeType=="function"&&!nt)switch(T.getAttributeType(Rf,il)){case"TrustedHTML":{Re=D.createHTML(Re);break}case"TrustedScriptURL":{Re=D.createScriptURL(Re);break}}if(Re!==mo)try{nt?m.setAttributeNS(nt,Oe,Re):m.setAttribute(Oe,Re),so(m)?jt(m):Eh(t.removed)}catch{gn(Oe,m)}}ul(xe.afterSanitizeAttributes,m,null)},fo=function(m){let b=null,C=Uf(m);for(ul(xe.beforeSanitizeShadowDOM,m,null);b=C.nextNode();)ul(xe.uponSanitizeShadowNode,b,null),zf(b),qf(b),b.content instanceof u&&fo(b.content);ul(xe.afterSanitizeShadowDOM,m,null)},si=function(m){if(m.nodeType===Ya.element&&m.shadowRoot instanceof u){let X=m.shadowRoot;si(X),fo(X)}let b=m.childNodes;if(!b)return;let C=[];Ba(b,X=>{Ga(C,X)});for(let X of C)si(X)};return t.sanitize=function(x){let m=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},b=null,C=null,X=null,Me=null;if(uo=!x,uo&&(x="<!-->"),typeof x!="string"&&!ci(x)&&(x=WE(x),typeof x!="string"))throw Jr("dirty is not a string, aborting");if(!t.isSupported)return x;if(eo||co(m),t.removed=[],typeof x=="string"&&(Fa=!1),Fa){let xl=x.nodeName;if(typeof xl=="string"){let il=ze(xl);if(!F[il]||Ka[il])throw Jr("root node is forbidden and cannot be sanitized in-place")}si(x)}else if(ci(x))b=Lf("<!---->"),C=b.ownerDocument.importNode(x,!0),C.nodeType===Ya.element&&C.nodeName==="BODY"||C.nodeName==="HTML"?b=C:b.appendChild(C),si(C);else{if(!Yn&&!Ul&&!pn&&x.indexOf("<")===-1)return D&&ii?D.createHTML(x):x;if(b=Lf(x),!b)return Yn?null:ii?O:""}b&&to&&jt(b.firstChild);let Oe=Uf(Fa?x:b);for(;X=Oe.nextNode();)zf(X),qf(X),X.content instanceof u&&fo(X.content);if(Fa)return Ul&&xf(x),x;if(Yn){if(Ul&&xf(b),ui)for(Me=Ie.call(b.ownerDocument);b.firstChild;)Me.appendChild(b.firstChild);else Me=b;return(Ee.shadowroot||Ee.shadowrootmode)&&(Me=pt.call(n,Me,!0)),Me}let nt=pn?b.outerHTML:b.innerHTML;return pn&&F["!doctype"]&&b.ownerDocument&&b.ownerDocument.doctype&&b.ownerDocument.doctype.name&&Fe(oS,b.ownerDocument.doctype.name)&&(nt="<!DOCTYPE "+b.ownerDocument.doctype.name+`>
13
13
  `+nt),Ul&&Ba([Dl,Cl,al],xl=>{nt=ja(nt,xl," ")}),D&&ii?D.createHTML(nt):nt},t.setConfig=function(){let x=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};co(x),eo=!0},t.clearConfig=function(){Vn=null,eo=!1},t.isValidAttribute=function(x,m,b){Vn||co({});let C=ze(x),X=ze(m);return Hf(C,X,b)},t.addHook=function(x,m){typeof m=="function"&&Ga(xe[x],m)},t.removeHook=function(x,m){if(m!==void 0){let b=VE(xe[x],m);return b===-1?void 0:QE(xe[x],b,1)[0]}return Eh(xe[x])},t.removeHooks=function(x){xe[x]=[]},t.removeAllHooks=function(){xe=Ch()},t}var zh=xh();var mS=new Hh.default({fg:"#dcd6cc",bg:"#252320",newline:!1,escapeXML:!0,stream:!1});function wh({content:e,isLoading:t=!1,className:l=""}){let n=(0,qe.useRef)(null),a=(0,qe.useRef)(0),[u,i]=(0,qe.useState)(!0),r=(0,qe.useMemo)(()=>{if(n.current&&(a.current=n.current.scrollTop),!e)return"";let c=mS.toHtml(e);return zh.sanitize(c,{ALLOWED_TAGS:["span","div","br"],ALLOWED_ATTR:["style","class"],ALLOW_DATA_ATTR:!1})},[e]);return(0,qe.useLayoutEffect)(()=>{n.current&&a.current>0&&(n.current.scrollTop=a.current)},[r]),qe.default.createElement("div",{className:l,style:{backgroundColor:"var(--color-bg-card)",border:"1px solid var(--color-border-primary)",borderRadius:"8px",overflow:"hidden",height:"100%",display:"flex",flexDirection:"column",boxShadow:"0 10px 40px rgba(0, 0, 0, 0.4), 0 4px 12px rgba(0, 0, 0, 0.3)"}},qe.default.createElement("div",{style:{padding:"12px",borderBottom:"1px solid var(--color-border-primary)",display:"flex",gap:"6px",alignItems:"center",backgroundColor:"var(--color-bg-header)"}},qe.default.createElement("div",{style:{width:"12px",height:"12px",borderRadius:"50%",backgroundColor:"#ff5f57"}}),qe.default.createElement("div",{style:{width:"12px",height:"12px",borderRadius:"50%",backgroundColor:"#ffbd2e"}}),qe.default.createElement("div",{style:{width:"12px",height:"12px",borderRadius:"50%",backgroundColor:"#28c840"}}),qe.default.createElement("button",{onClick:()=>i(!u),style:{marginLeft:"auto",padding:"4px 8px",fontSize:"11px",fontWeight:500,color:u?"var(--color-text-secondary)":"var(--color-accent-primary)",backgroundColor:"transparent",border:"1px solid",borderColor:u?"var(--color-border-primary)":"var(--color-accent-primary)",borderRadius:"4px",cursor:"pointer",transition:"all 0.2s",whiteSpace:"nowrap"},onMouseEnter:c=>{c.currentTarget.style.borderColor="var(--color-accent-primary)",c.currentTarget.style.color="var(--color-accent-primary)"},onMouseLeave:c=>{c.currentTarget.style.borderColor=u?"var(--color-border-primary)":"var(--color-accent-primary)",c.currentTarget.style.color=u?"var(--color-text-secondary)":"var(--color-accent-primary)"},title:u?"Disable word wrap (scroll horizontally)":"Enable word wrap"},u?"\u2922 Wrap":"\u21C4 Scroll")),t?qe.default.createElement("div",{style:{padding:"16px",fontFamily:"var(--font-terminal)",fontSize:"12px",color:"var(--color-text-secondary)"}},"Loading preview..."):qe.default.createElement("div",{style:{position:"relative",flex:1,overflow:"hidden"}},qe.default.createElement("pre",{ref:n,style:{padding:"16px",margin:0,fontFamily:"var(--font-terminal)",fontSize:"12px",lineHeight:"1.6",overflow:"auto",color:"var(--color-text-primary)",backgroundColor:"var(--color-bg-card)",whiteSpace:u?"pre-wrap":"pre",wordBreak:u?"break-word":"normal",position:"absolute",inset:0},dangerouslySetInnerHTML:{__html:r}})))}var dt=ie(ae(),1);function Mt(e,t){return fetch(e,t)}function dS(e){return e.includes("claude")?"claude":e.includes("codex")?"codex":e[0]||null}function pS(e){let t=["claude","codex",...e];return Array.from(new Set(t))}function qh(e){let[t,l]=(0,dt.useState)(""),[n,a]=(0,dt.useState)(!1),[u,i]=(0,dt.useState)(null),[r,o]=(0,dt.useState)({projects:[],sources:[],projectsBySource:{}}),[c,h]=(0,dt.useState)([]),[v,p]=(0,dt.useState)(null),[y,T]=(0,dt.useState)(null);(0,dt.useEffect)(()=>{async function L(){let s;try{s=await(await Mt("/api/projects")).json()}catch(d){console.error("Failed to fetch projects:",d instanceof Error?d.message:String(d));return}let f={projects:s.projects||[],sources:pS(s.sources||[]),projectsBySource:s.projectsBySource||{}};o(f);let g=dS(f.sources);if(p(g),g){let d=f.projectsBySource[g]||[];h(d),T(d[0]||null);return}h(f.projects),T(f.projects[0]||null)}L()},[]),(0,dt.useEffect)(()=>{if(!v){h(r.projects),T(s=>s&&r.projects.includes(s)?s:r.projects[0]||null);return}let L=r.projectsBySource[v]||[];h(L),T(s=>s&&L.includes(s)?s:L[0]||null)},[r,v]);let M=(0,dt.useCallback)(async()=>{if(!y){l("No project selected");return}a(!0),i(null);let L=new URLSearchParams({project:y});v&&L.append("platformSource",v);try{let s=await Mt(`/api/context/preview?${L}`),f=await s.text();s.ok?l(f):i("Failed to load preview")}catch(s){console.error("Failed to load context preview:",s instanceof Error?s.message:String(s)),i("Failed to load preview")}a(!1)},[y,v]);return(0,dt.useEffect)(()=>{let L=setTimeout(()=>{M()},300);return()=>clearTimeout(L)},[e,M]),{preview:t,isLoading:n,error:u,refresh:M,projects:c,sources:r.sources,selectedSource:v,setSelectedSource:p,selectedProject:y,setSelectedProject:T}}function df({title:e,description:t,children:l,defaultOpen:n=!0}){let[a,u]=(0,S.useState)(n);return S.default.createElement("div",{className:`settings-section-collapsible ${a?"open":""}`},S.default.createElement("button",{className:"section-header-btn",onClick:()=>u(!a),type:"button"},S.default.createElement("div",{className:"section-header-content"},S.default.createElement("span",{className:"section-title"},e),t&&S.default.createElement("span",{className:"section-description"},t)),S.default.createElement("svg",{className:`chevron-icon ${a?"rotated":""}`,width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2"},S.default.createElement("polyline",{points:"6 9 12 15 18 9"}))),a&&S.default.createElement("div",{className:"section-content"},l))}function Ot({label:e,tooltip:t,children:l}){return S.default.createElement("div",{className:"form-field"},S.default.createElement("label",{className:"form-field-label"},e,t&&S.default.createElement("span",{className:"tooltip-trigger",title:t},S.default.createElement("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2"},S.default.createElement("circle",{cx:"12",cy:"12",r:"10"}),S.default.createElement("path",{d:"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"}),S.default.createElement("line",{x1:"12",y1:"17",x2:"12.01",y2:"17"})))),l)}function ka({id:e,label:t,description:l,checked:n,onChange:a,disabled:u}){return S.default.createElement("div",{className:"toggle-row"},S.default.createElement("div",{className:"toggle-info"},S.default.createElement("label",{htmlFor:e,className:"toggle-label"},t),l&&S.default.createElement("span",{className:"toggle-description"},l)),S.default.createElement("button",{type:"button",id:e,role:"switch","aria-checked":n,className:`toggle-switch ${n?"on":""} ${u?"disabled":""}`,onClick:()=>!u&&a(!n),disabled:u},S.default.createElement("span",{className:"toggle-knob"})))}function Rh({isOpen:e,onClose:t,settings:l,onSave:n,isSaving:a,saveStatus:u}){let[i,r]=(0,S.useState)(l);(0,S.useEffect)(()=>{r(l)},[l]);let{preview:o,isLoading:c,error:h,projects:v,sources:p,selectedSource:y,setSelectedSource:T,selectedProject:M,setSelectedProject:L}=qh(i),s=(0,S.useCallback)((d,A)=>{let D={...i,[d]:A};r(D)},[i]),f=(0,S.useCallback)(()=>{n(i)},[i,n]),g=(0,S.useCallback)(d=>{let D=i[d]==="true"?"false":"true";s(d,D)},[i,s]);return(0,S.useEffect)(()=>{let d=A=>{A.key==="Escape"&&t()};if(e)return window.addEventListener("keydown",d),()=>window.removeEventListener("keydown",d)},[e,t]),e?S.default.createElement("div",{className:"modal-backdrop",onClick:t},S.default.createElement("div",{className:"context-settings-modal",onClick:d=>d.stopPropagation()},S.default.createElement("div",{className:"modal-header"},S.default.createElement("h2",null,"Settings"),S.default.createElement("div",{className:"header-controls"},S.default.createElement("label",{className:"preview-selector"},"Source:",S.default.createElement("select",{value:y||"",onChange:d=>T(d.target.value),disabled:p.length===0},p.map(d=>S.default.createElement("option",{key:d,value:d},d)))),S.default.createElement("label",{className:"preview-selector"},"Project:",S.default.createElement("select",{value:M||"",onChange:d=>L(d.target.value),disabled:v.length===0},v.map(d=>S.default.createElement("option",{key:d,value:d},d)))),S.default.createElement("button",{onClick:t,className:"modal-close-btn",title:"Close (Esc)"},S.default.createElement("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2"},S.default.createElement("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),S.default.createElement("line",{x1:"6",y1:"6",x2:"18",y2:"18"}))))),S.default.createElement("div",{className:"modal-body"},S.default.createElement("div",{className:"preview-column"},S.default.createElement("div",{className:"preview-content"},h?S.default.createElement("div",{style:{color:"#ff6b6b"}},"Error loading preview: ",h):S.default.createElement(wh,{content:o,isLoading:c}))),S.default.createElement("div",{className:"settings-column"},S.default.createElement(df,{title:"Loading",description:"How many observations to inject"},S.default.createElement(Ot,{label:"Observations",tooltip:"Number of recent observations to include in context (1-200)"},S.default.createElement("input",{type:"number",min:"1",max:"200",value:i.CLAUDE_MEM_CONTEXT_OBSERVATIONS||"50",onChange:d=>s("CLAUDE_MEM_CONTEXT_OBSERVATIONS",d.target.value)})),S.default.createElement(Ot,{label:"Sessions",tooltip:"Number of recent sessions to pull observations from (1-50)"},S.default.createElement("input",{type:"number",min:"1",max:"50",value:i.CLAUDE_MEM_CONTEXT_SESSION_COUNT||"10",onChange:d=>s("CLAUDE_MEM_CONTEXT_SESSION_COUNT",d.target.value)}))),S.default.createElement(df,{title:"Display",description:"What to show in context tables"},S.default.createElement("div",{className:"display-subsection"},S.default.createElement("span",{className:"subsection-label"},"Full Observations"),S.default.createElement(Ot,{label:"Count",tooltip:"How many observations show expanded details (0-20)"},S.default.createElement("input",{type:"number",min:"0",max:"20",value:i.CLAUDE_MEM_CONTEXT_FULL_COUNT||"5",onChange:d=>s("CLAUDE_MEM_CONTEXT_FULL_COUNT",d.target.value)})),S.default.createElement(Ot,{label:"Field",tooltip:"Which field to expand for full observations"},S.default.createElement("select",{value:i.CLAUDE_MEM_CONTEXT_FULL_FIELD||"narrative",onChange:d=>s("CLAUDE_MEM_CONTEXT_FULL_FIELD",d.target.value)},S.default.createElement("option",{value:"narrative"},"Narrative"),S.default.createElement("option",{value:"facts"},"Facts")))),S.default.createElement("div",{className:"display-subsection"},S.default.createElement("span",{className:"subsection-label"},"Token Economics"),S.default.createElement("div",{className:"toggle-group"},S.default.createElement(ka,{id:"show-read-tokens",label:"Read cost",description:"Tokens to read this observation",checked:i.CLAUDE_MEM_CONTEXT_SHOW_READ_TOKENS==="true",onChange:()=>g("CLAUDE_MEM_CONTEXT_SHOW_READ_TOKENS")}),S.default.createElement(ka,{id:"show-work-tokens",label:"Work investment",description:"Tokens spent creating this observation",checked:i.CLAUDE_MEM_CONTEXT_SHOW_WORK_TOKENS==="true",onChange:()=>g("CLAUDE_MEM_CONTEXT_SHOW_WORK_TOKENS")}),S.default.createElement(ka,{id:"show-savings-amount",label:"Savings",description:"Total tokens saved by reusing context",checked:i.CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_AMOUNT==="true",onChange:()=>g("CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_AMOUNT")})))),S.default.createElement(df,{title:"Advanced",description:"AI provider and model selection",defaultOpen:!1},S.default.createElement(Ot,{label:"AI Provider",tooltip:"Choose between Claude (via Agent SDK) or Gemini (via REST API)"},S.default.createElement("select",{value:i.CLAUDE_MEM_PROVIDER||"claude",onChange:d=>s("CLAUDE_MEM_PROVIDER",d.target.value)},S.default.createElement("option",{value:"claude"},"Claude (uses your Claude account)"),S.default.createElement("option",{value:"gemini"},"Gemini (uses API key)"),S.default.createElement("option",{value:"openrouter"},"OpenRouter (multi-model)"))),i.CLAUDE_MEM_PROVIDER==="claude"&&S.default.createElement(Ot,{label:"Claude Model",tooltip:"Claude model used for generating observations"},S.default.createElement("select",{value:i.CLAUDE_MEM_MODEL||"haiku",onChange:d=>s("CLAUDE_MEM_MODEL",d.target.value)},S.default.createElement("option",{value:"haiku"},"haiku (fastest)"),S.default.createElement("option",{value:"sonnet"},"sonnet (balanced)"),S.default.createElement("option",{value:"opus"},"opus (highest quality)"))),i.CLAUDE_MEM_PROVIDER==="gemini"&&S.default.createElement(S.default.Fragment,null,S.default.createElement(Ot,{label:"Gemini API Key",tooltip:"Your Google AI Studio API key (or set GEMINI_API_KEY env var)"},S.default.createElement("input",{type:"password",value:i.CLAUDE_MEM_GEMINI_API_KEY||"",onChange:d=>s("CLAUDE_MEM_GEMINI_API_KEY",d.target.value),placeholder:"Enter Gemini API key..."})),S.default.createElement(Ot,{label:"Gemini Model",tooltip:"Gemini model used for generating observations"},S.default.createElement("select",{value:i.CLAUDE_MEM_GEMINI_MODEL||"gemini-2.5-flash-lite",onChange:d=>s("CLAUDE_MEM_GEMINI_MODEL",d.target.value)},S.default.createElement("option",{value:"gemini-2.5-flash-lite"},"gemini-2.5-flash-lite (10 RPM free)"),S.default.createElement("option",{value:"gemini-2.5-flash"},"gemini-2.5-flash (5 RPM free)"),S.default.createElement("option",{value:"gemini-3-flash-preview"},"gemini-3-flash-preview (5 RPM free)"))),S.default.createElement("div",{className:"toggle-group",style:{marginTop:"8px"}},S.default.createElement(ka,{id:"gemini-rate-limiting",label:"Rate Limiting",description:"Enable for free tier (10-30 RPM). Disable if you have billing set up (1000+ RPM).",checked:i.CLAUDE_MEM_GEMINI_RATE_LIMITING_ENABLED==="true",onChange:d=>s("CLAUDE_MEM_GEMINI_RATE_LIMITING_ENABLED",d?"true":"false")}))),i.CLAUDE_MEM_PROVIDER==="openrouter"&&S.default.createElement(S.default.Fragment,null,S.default.createElement(Ot,{label:"OpenRouter API Key",tooltip:"Your OpenRouter API key from openrouter.ai (or set OPENROUTER_API_KEY env var)"},S.default.createElement("input",{type:"password",value:i.CLAUDE_MEM_OPENROUTER_API_KEY||"",onChange:d=>s("CLAUDE_MEM_OPENROUTER_API_KEY",d.target.value),placeholder:"Enter OpenRouter API key..."})),S.default.createElement(Ot,{label:"OpenRouter Model",tooltip:"Model identifier from OpenRouter (e.g., anthropic/claude-3.5-sonnet, google/gemini-2.0-flash-thinking-exp)"},S.default.createElement("input",{type:"text",value:i.CLAUDE_MEM_OPENROUTER_MODEL||"xiaomi/mimo-v2-flash:free",onChange:d=>s("CLAUDE_MEM_OPENROUTER_MODEL",d.target.value),placeholder:"e.g., xiaomi/mimo-v2-flash:free"})),S.default.createElement(Ot,{label:"Site URL (Optional)",tooltip:"Your site URL for OpenRouter analytics (optional)"},S.default.createElement("input",{type:"text",value:i.CLAUDE_MEM_OPENROUTER_SITE_URL||"",onChange:d=>s("CLAUDE_MEM_OPENROUTER_SITE_URL",d.target.value),placeholder:"https://yoursite.com"})),S.default.createElement(Ot,{label:"App Name (Optional)",tooltip:"Your app name for OpenRouter analytics (optional)"},S.default.createElement("input",{type:"text",value:i.CLAUDE_MEM_OPENROUTER_APP_NAME||"claude-mem",onChange:d=>s("CLAUDE_MEM_OPENROUTER_APP_NAME",d.target.value),placeholder:"claude-mem"}))),S.default.createElement(Ot,{label:"Worker Port",tooltip:"Port for the background worker service"},S.default.createElement("input",{type:"number",min:"1024",max:"65535",value:i.CLAUDE_MEM_WORKER_PORT||"37777",onChange:d=>s("CLAUDE_MEM_WORKER_PORT",d.target.value)})),S.default.createElement("div",{className:"toggle-group",style:{marginTop:"12px"}},S.default.createElement(ka,{id:"show-last-summary",label:"Include last summary",description:"Add previous session's summary to context",checked:i.CLAUDE_MEM_CONTEXT_SHOW_LAST_SUMMARY==="true",onChange:()=>g("CLAUDE_MEM_CONTEXT_SHOW_LAST_SUMMARY")}),S.default.createElement(ka,{id:"show-last-message",label:"Include last message",description:"Add previous session's final message",checked:i.CLAUDE_MEM_CONTEXT_SHOW_LAST_MESSAGE==="true",onChange:()=>g("CLAUDE_MEM_CONTEXT_SHOW_LAST_MESSAGE")}))))),S.default.createElement("div",{className:"modal-footer"},S.default.createElement("div",{className:"save-status"},u&&S.default.createElement("span",{className:u.includes("\u2713")?"success":u.includes("\u2717")?"error":""},u)),S.default.createElement("button",{className:"save-btn",onClick:f,disabled:a},a?"Saving...":"Save")))):null}var N=ie(ae(),1);var li=[{key:"DEBUG",label:"Debug",icon:"\u{1F50D}",color:"#8b8b8b"},{key:"INFO",label:"Info",icon:"\u2139\uFE0F",color:"#58a6ff"},{key:"WARN",label:"Warn",icon:"\u26A0\uFE0F",color:"#d29922"},{key:"ERROR",label:"Error",icon:"\u274C",color:"#f85149"}],ni=[{key:"HOOK",label:"Hook",icon:"\u{1FA9D}",color:"#a371f7"},{key:"WORKER",label:"Worker",icon:"\u2699\uFE0F",color:"#58a6ff"},{key:"SDK",label:"SDK",icon:"\u{1F4E6}",color:"#3fb950"},{key:"PARSER",label:"Parser",icon:"\u{1F4C4}",color:"#79c0ff"},{key:"DB",label:"DB",icon:"\u{1F5C4}\uFE0F",color:"#f0883e"},{key:"SYSTEM",label:"System",icon:"\u{1F4BB}",color:"#8b949e"},{key:"HTTP",label:"HTTP",icon:"\u{1F310}",color:"#39d353"},{key:"SESSION",label:"Session",icon:"\u{1F4CB}",color:"#db61a2"},{key:"CHROMA",label:"Chroma",icon:"\u{1F52E}",color:"#a855f7"}];function gS(e){let t=/^\[([^\]]+)\]\s+\[(\w+)\s*\]\s+\[(\w+)\s*\]\s+(?:\[([^\]]+)\]\s+)?(.*)$/,l=e.match(t);if(!l)return{raw:e};let[,n,a,u,i,r]=l,o;return r.startsWith("\u2192")?o="dataIn":r.startsWith("\u2190")?o="dataOut":r.startsWith("\u2713")?o="success":r.startsWith("\u2717")?o="failure":r.startsWith("\u23F1")?o="timing":r.includes("[HAPPY-PATH]")&&(o="happyPath"),{raw:e,timestamp:n,level:a?.trim(),component:u?.trim(),correlationId:i||void 0,message:r,isSpecial:o}}function Bh({isOpen:e,onClose:t}){let[l,n]=(0,N.useState)(""),[a,u]=(0,N.useState)(!1),[i,r]=(0,N.useState)(null),[o,c]=(0,N.useState)(!1),[h,v]=(0,N.useState)(350),[p,y]=(0,N.useState)(!1),T=(0,N.useRef)(0),M=(0,N.useRef)(0),L=(0,N.useRef)(null),s=(0,N.useRef)(!0),[f,g]=(0,N.useState)(new Set(["DEBUG","INFO","WARN","ERROR"])),[d,A]=(0,N.useState)(new Set(["HOOK","WORKER","SDK","PARSER","DB","SYSTEM","HTTP","SESSION","CHROMA"])),[D,O]=(0,N.useState)(!1),z=(0,N.useMemo)(()=>l?l.split(`
14
- `).map(gS):[],[l]),w=(0,N.useMemo)(()=>z.filter(_=>D?_.raw.includes("[ALIGNMENT]"):!_.level||!_.component?!0:f.has(_.level)&&d.has(_.component)),[z,f,d,D]),R=(0,N.useCallback)(()=>{if(!L.current)return!0;let{scrollTop:_,scrollHeight:de,clientHeight:ne}=L.current;return de-_-ne<50},[]),Ie=(0,N.useCallback)(()=>{L.current&&s.current&&(L.current.scrollTop=L.current.scrollHeight)},[]),ge=(0,N.useCallback)(async()=>{s.current=R(),u(!0),r(null);try{let _=await Mt("/api/logs");if(!_.ok)throw new Error(`Failed to fetch logs: ${_.statusText}`);let de=await _.json();n(de.logs||"")}catch(_){r(_ instanceof Error?_.message:"Unknown error")}finally{u(!1)}},[R]);(0,N.useEffect)(()=>{Ie()},[l,Ie]);let pt=(0,N.useCallback)(async()=>{if(confirm("Are you sure you want to clear all logs?")){u(!0),r(null);try{let _=await Mt("/api/logs/clear",{method:"POST"});if(!_.ok)throw new Error(`Failed to clear logs: ${_.statusText}`);n("")}catch(_){r(_ instanceof Error?_.message:"Unknown error")}finally{u(!1)}}},[]),xe=(0,N.useCallback)(_=>{_.preventDefault(),y(!0),T.current=_.clientY,M.current=h},[h]);(0,N.useEffect)(()=>{if(!p)return;let _=ne=>{let F=T.current-ne.clientY,Qt=Math.min(Math.max(150,M.current+F),window.innerHeight-100);v(Qt)},de=()=>{y(!1)};return document.addEventListener("mousemove",_),document.addEventListener("mouseup",de),()=>{document.removeEventListener("mousemove",_),document.removeEventListener("mouseup",de)}},[p]),(0,N.useEffect)(()=>{e&&(s.current=!0,ge())},[e,ge]),(0,N.useEffect)(()=>{if(!e||!o)return;let _=setInterval(ge,2e3);return()=>clearInterval(_)},[e,o,ge]);let Dl=(0,N.useCallback)(_=>{g(de=>{let ne=new Set(de);return ne.has(_)?ne.delete(_):ne.add(_),ne})},[]),Cl=(0,N.useCallback)(_=>{A(de=>{let ne=new Set(de);return ne.has(_)?ne.delete(_):ne.add(_),ne})},[]),al=(0,N.useCallback)(_=>{g(_?new Set(["DEBUG","INFO","WARN","ERROR"]):new Set)},[]),Bn=(0,N.useCallback)(_=>{A(_?new Set(["HOOK","WORKER","SDK","PARSER","DB","SYSTEM","HTTP","SESSION","CHROMA"]):new Set)},[]);if(!e)return null;let Gn=_=>{let de=li.find(jn=>jn.key===_.level),ne=ni.find(jn=>jn.key===_.component),F="var(--color-text-primary)",Qt="normal",Ee="transparent";return _.level==="ERROR"?(F="#f85149",Ee="rgba(248, 81, 73, 0.1)"):_.level==="WARN"?(F="#d29922",Ee="rgba(210, 153, 34, 0.05)"):_.isSpecial==="success"?F="#3fb950":_.isSpecial==="failure"?F="#f85149":_.isSpecial==="happyPath"?F="#d29922":de&&(F=de.color),{color:F,fontWeight:Qt,backgroundColor:Ee,padding:"1px 0",borderRadius:"2px"}},Ae=(_,de)=>{if(!_.timestamp)return N.default.createElement("div",{key:de,className:"log-line log-line-raw"},_.raw);let ne=li.find(Qt=>Qt.key===_.level),F=ni.find(Qt=>Qt.key===_.component);return N.default.createElement("div",{key:de,className:"log-line",style:Gn(_)},N.default.createElement("span",{className:"log-timestamp"},"[",_.timestamp,"]")," ",N.default.createElement("span",{className:"log-level",style:{color:ne?.color},title:_.level},"[",ne?.icon||""," ",_.level?.padEnd(5),"]")," ",N.default.createElement("span",{className:"log-component",style:{color:F?.color},title:_.component},"[",F?.icon||""," ",_.component?.padEnd(7),"]")," ",_.correlationId&&N.default.createElement(N.default.Fragment,null,N.default.createElement("span",{className:"log-correlation"},"[",_.correlationId,"]")," "),N.default.createElement("span",{className:"log-message"},_.message))};return N.default.createElement("div",{className:"console-drawer",style:{height:`${h}px`}},N.default.createElement("div",{className:"console-resize-handle",onMouseDown:xe},N.default.createElement("div",{className:"console-resize-bar"})),N.default.createElement("div",{className:"console-header"},N.default.createElement("div",{className:"console-tabs"},N.default.createElement("div",{className:"console-tab active"},"Console")),N.default.createElement("div",{className:"console-controls"},N.default.createElement("label",{className:"console-auto-refresh"},N.default.createElement("input",{type:"checkbox",checked:o,onChange:_=>c(_.target.checked)}),"Auto-refresh"),N.default.createElement("button",{className:"console-control-btn",onClick:ge,disabled:a,title:"Refresh logs"},"\u21BB"),N.default.createElement("button",{className:"console-control-btn",onClick:()=>{s.current=!0,Ie()},title:"Scroll to bottom"},"\u2B07"),N.default.createElement("button",{className:"console-control-btn console-clear-btn",onClick:pt,disabled:a,title:"Clear logs"},"\u{1F5D1}"),N.default.createElement("button",{className:"console-control-btn",onClick:t,title:"Close console"},"\u2715"))),N.default.createElement("div",{className:"console-filters"},N.default.createElement("div",{className:"console-filter-section"},N.default.createElement("span",{className:"console-filter-label"},"Quick:"),N.default.createElement("div",{className:"console-filter-chips"},N.default.createElement("button",{className:`console-filter-chip ${D?"active":""}`,onClick:()=>O(!D),style:{"--chip-color":"#f0883e"},title:"Show only session alignment logs"},"\u{1F517} Alignment"))),N.default.createElement("div",{className:"console-filter-section"},N.default.createElement("span",{className:"console-filter-label"},"Levels:"),N.default.createElement("div",{className:"console-filter-chips"},li.map(_=>N.default.createElement("button",{key:_.key,className:`console-filter-chip ${f.has(_.key)?"active":""}`,onClick:()=>Dl(_.key),style:{"--chip-color":_.color},title:_.label},_.icon," ",_.label)),N.default.createElement("button",{className:"console-filter-action",onClick:()=>al(f.size===0),title:f.size===li.length?"Select none":"Select all"},f.size===li.length?"\u25CB":"\u25CF"))),N.default.createElement("div",{className:"console-filter-section"},N.default.createElement("span",{className:"console-filter-label"},"Components:"),N.default.createElement("div",{className:"console-filter-chips"},ni.map(_=>N.default.createElement("button",{key:_.key,className:`console-filter-chip ${d.has(_.key)?"active":""}`,onClick:()=>Cl(_.key),style:{"--chip-color":_.color},title:_.label},_.icon," ",_.label)),N.default.createElement("button",{className:"console-filter-action",onClick:()=>Bn(d.size===0),title:d.size===ni.length?"Select none":"Select all"},d.size===ni.length?"\u25CB":"\u25CF")))),i&&N.default.createElement("div",{className:"console-error"},"\u26A0 ",i),N.default.createElement("div",{className:"console-content",ref:L},N.default.createElement("div",{className:"console-logs"},w.length===0?N.default.createElement("div",{className:"log-line log-line-empty"},"No logs available"):w.map((_,de)=>Ae(_,de)))))}var U=ie(ae(),1),pf="claude-mem-welcome-dismissed-v3",hS="/api/onboarding/explainer",vS="https://docs.claude-mem.ai";function Gh(){try{return localStorage.getItem(pf)==="true"}catch(e){return console.warn("Failed to read welcome-dismissed from localStorage:",e instanceof Error?e.message:String(e)),!1}}function gf(e){try{e?localStorage.setItem(pf,"true"):localStorage.removeItem(pf)}catch(t){console.warn("Failed to save welcome-dismissed to localStorage:",t instanceof Error?t.message:String(t))}}function yS({onClick:e}){return U.default.createElement("button",{type:"button",className:"welcome-modal-dismiss",onClick:e,"aria-label":"Close welcome",title:"Close (Esc)"},U.default.createElement("svg",{width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},U.default.createElement("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),U.default.createElement("line",{x1:"6",y1:"6",x2:"18",y2:"18"})))}function ES(){return U.default.createElement("svg",{className:"welcome-modal-feature-art",viewBox:"0 0 96 96",fill:"none",stroke:"currentColor",strokeWidth:"1.75",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true"},U.default.createElement("rect",{x:"14",y:"56",width:"68",height:"22",rx:"4"}),U.default.createElement("line",{x1:"20",y1:"56",x2:"20",y2:"78",stroke:"var(--color-border-prompt)",strokeWidth:"3"}),U.default.createElement("line",{x1:"30",y1:"64",x2:"56",y2:"64",opacity:"0.6"}),U.default.createElement("line",{x1:"30",y1:"71",x2:"48",y2:"71",opacity:"0.6"}),U.default.createElement("rect",{x:"10",y:"30",width:"68",height:"22",rx:"4"}),U.default.createElement("line",{x1:"16",y1:"30",x2:"16",y2:"52",stroke:"var(--color-border-summary)",strokeWidth:"3"}),U.default.createElement("line",{x1:"26",y1:"38",x2:"60",y2:"38",opacity:"0.6"}),U.default.createElement("line",{x1:"26",y1:"45",x2:"52",y2:"45",opacity:"0.6"}),U.default.createElement("rect",{x:"18",y:"6",width:"68",height:"22",rx:"4"}),U.default.createElement("line",{x1:"24",y1:"6",x2:"24",y2:"28",stroke:"var(--color-border-observation)",strokeWidth:"3"}),U.default.createElement("line",{x1:"34",y1:"14",x2:"68",y2:"14",opacity:"0.6"}),U.default.createElement("line",{x1:"34",y1:"21",x2:"60",y2:"21",opacity:"0.6"}))}function SS(){return U.default.createElement("svg",{className:"welcome-modal-feature-art",viewBox:"0 0 96 96",fill:"none",stroke:"currentColor",strokeWidth:"1.75",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true"},U.default.createElement("line",{x1:"14",y1:"26",x2:"82",y2:"26"}),U.default.createElement("line",{x1:"14",y1:"48",x2:"82",y2:"48"}),U.default.createElement("line",{x1:"14",y1:"70",x2:"82",y2:"70"}),U.default.createElement("circle",{cx:"32",cy:"26",r:"6",fill:"var(--color-bg-card)"}),U.default.createElement("circle",{cx:"62",cy:"48",r:"6",fill:"var(--color-bg-card)"}),U.default.createElement("circle",{cx:"44",cy:"70",r:"6",fill:"var(--color-bg-card)"}),U.default.createElement("circle",{cx:"32",cy:"26",r:"2.5",fill:"currentColor",stroke:"none"}),U.default.createElement("circle",{cx:"62",cy:"48",r:"2.5",fill:"currentColor",stroke:"none"}),U.default.createElement("circle",{cx:"44",cy:"70",r:"2.5",fill:"currentColor",stroke:"none"}))}function bS(){return U.default.createElement("svg",{className:"welcome-modal-feature-art",viewBox:"0 0 96 96",fill:"none",stroke:"currentColor",strokeWidth:"1.75",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true"},U.default.createElement("rect",{x:"10",y:"14",width:"58",height:"40",rx:"4",opacity:"0.45"}),U.default.createElement("line",{x1:"20",y1:"24",x2:"56",y2:"24",opacity:"0.45"}),U.default.createElement("line",{x1:"20",y1:"32",x2:"48",y2:"32",opacity:"0.45"}),U.default.createElement("line",{x1:"20",y1:"40",x2:"52",y2:"40",opacity:"0.45"}),U.default.createElement("rect",{x:"18",y:"26",width:"58",height:"40",rx:"4",fill:"var(--color-bg-card)"}),U.default.createElement("line",{x1:"28",y1:"36",x2:"64",y2:"36",opacity:"0.6"}),U.default.createElement("line",{x1:"28",y1:"44",x2:"56",y2:"44",opacity:"0.6"}),U.default.createElement("line",{x1:"28",y1:"52",x2:"60",y2:"52",opacity:"0.6"}),U.default.createElement("circle",{cx:"62",cy:"62",r:"14",fill:"var(--color-bg-card)",stroke:"currentColor",strokeWidth:"2.25"}),U.default.createElement("line",{x1:"73",y1:"73",x2:"84",y2:"84",strokeWidth:"2.5"}))}var TS=[{kind:"stream",illustration:U.default.createElement(ES,null),title:"Live feed",description:"Observations, summaries, and prompts stream in live."},{kind:"tune",illustration:U.default.createElement(SS,null),title:"Tune it",description:"The gear in the top-right tunes memory injection."},{kind:"recall",illustration:U.default.createElement(bS,null),title:"Recall it",description:"Ask Claude or run /mem-search to find past work."}];function jh({onDismiss:e}){let t=()=>{gf(!0),e()};return(0,U.useEffect)(()=>{let l=n=>{n.key==="Escape"&&t()};return window.addEventListener("keydown",l),()=>window.removeEventListener("keydown",l)},[]),U.default.createElement("div",{className:"welcome-modal-backdrop",onClick:t},U.default.createElement("article",{className:"welcome-modal",onClick:l=>l.stopPropagation(),role:"dialog","aria-modal":"true","aria-labelledby":"welcome-modal-title"},U.default.createElement(yS,{onClick:t}),U.default.createElement("header",{className:"welcome-modal-header"},U.default.createElement("img",{className:"welcome-modal-logo",src:"claude-mem-logo-stylized.png",alt:"",width:"96",height:"96"}),U.default.createElement("h2",{id:"welcome-modal-title"},"Welcome to claude-mem"),U.default.createElement("p",null,"Persistent memory for Claude Code.")),U.default.createElement("div",{className:"welcome-modal-grid"},TS.map(l=>U.default.createElement("div",{key:l.kind,className:`welcome-modal-feature welcome-modal-feature-${l.kind}`},U.default.createElement("div",{className:"welcome-modal-feature-inner"},l.illustration,U.default.createElement("h3",{className:"welcome-modal-feature-title"},l.title),U.default.createElement("p",{className:"welcome-modal-feature-desc"},l.description))))),U.default.createElement("footer",{className:"welcome-modal-footer"},U.default.createElement("a",{href:hS,target:"_blank",rel:"noopener noreferrer"},"How it works"),U.default.createElement("span",{className:"welcome-modal-footer-sep"},"\xB7"),U.default.createElement("a",{href:vS,target:"_blank",rel:"noopener noreferrer"},"Read the docs"))))}var Nt=ie(ae(),1);var Vt={OBSERVATIONS:"/api/observations",SUMMARIES:"/api/summaries",PROMPTS:"/api/prompts",SETTINGS:"/api/settings",STATS:"/api/stats",PROCESSING_STATUS:"/api/processing-status",STREAM:"/stream"};var Ir={SSE_RECONNECT_DELAY_MS:3e3,STATS_REFRESH_INTERVAL_MS:1e4,SAVE_STATUS_DISPLAY_DURATION_MS:3e3};function Yh(){let[e,t]=(0,Nt.useState)([]),[l,n]=(0,Nt.useState)([]),[a,u]=(0,Nt.useState)([]),[i,r]=(0,Nt.useState)([]),[o,c]=(0,Nt.useState)(!1),[h,v]=(0,Nt.useState)(!1),[p,y]=(0,Nt.useState)(0),T=(0,Nt.useRef)(null),M=(0,Nt.useRef)(),L=s=>{r(f=>f.includes(s)?f:[...f,s])};return(0,Nt.useEffect)(()=>{let s=()=>{T.current&&T.current.close();let f=new EventSource(Vt.STREAM);T.current=f,f.onopen=()=>{console.log("[SSE] Connected"),c(!0),M.current&&clearTimeout(M.current)},f.onerror=g=>{console.error("[SSE] Connection error:",g),c(!1),f.close(),M.current=setTimeout(()=>{M.current=void 0,console.log("[SSE] Attempting to reconnect..."),s()},Ir.SSE_RECONNECT_DELAY_MS)},f.onmessage=g=>{let d=JSON.parse(g.data);switch(d.type){case"initial_load":console.log("[SSE] Initial load:",{projects:d.projects?.length||0}),r(d.projects||[]);break;case"new_observation":d.observation&&(console.log("[SSE] New observation:",d.observation.id),L(d.observation.project),t(A=>[d.observation,...A]));break;case"new_summary":d.summary&&(console.log("[SSE] New summary:",d.summary.id),L(d.summary.project),n(A=>[d.summary,...A]));break;case"new_prompt":d.prompt&&(console.log("[SSE] New prompt:",d.prompt.id),L(d.prompt.project),u(A=>[d.prompt,...A]));break;case"processing_status":typeof d.isProcessing=="boolean"&&(console.log("[SSE] Processing status:",d.isProcessing,"Queue depth:",d.queueDepth),v(d.isProcessing),y(d.queueDepth||0));break}}};return s(),()=>{T.current&&T.current.close(),M.current&&clearTimeout(M.current)}},[]),{observations:e,summaries:l,prompts:a,projects:i,isProcessing:h,queueDepth:p,isConnected:o}}var Va=ie(ae(),1);var pe={CLAUDE_MEM_MODEL:"claude-sonnet-4-6",CLAUDE_MEM_CONTEXT_OBSERVATIONS:"50",CLAUDE_MEM_WORKER_PORT:"37777",CLAUDE_MEM_WORKER_HOST:"127.0.0.1",CLAUDE_MEM_PROVIDER:"claude",CLAUDE_MEM_GEMINI_API_KEY:"",CLAUDE_MEM_GEMINI_MODEL:"gemini-2.5-flash-lite",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_GEMINI_RATE_LIMITING_ENABLED:"true",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_EXCLUDED_PROJECTS:"",CLAUDE_MEM_FOLDER_MD_EXCLUDE:"[]"};function Xh(){let[e,t]=(0,Va.useState)(pe),[l,n]=(0,Va.useState)(!1),[a,u]=(0,Va.useState)("");return(0,Va.useEffect)(()=>{Mt(Vt.SETTINGS).then(async r=>{if(!r.ok)throw new Error(`Failed to load settings (${r.status})`);return r.json()}).then(r=>{t({CLAUDE_MEM_MODEL:r.CLAUDE_MEM_MODEL??pe.CLAUDE_MEM_MODEL,CLAUDE_MEM_CONTEXT_OBSERVATIONS:r.CLAUDE_MEM_CONTEXT_OBSERVATIONS??pe.CLAUDE_MEM_CONTEXT_OBSERVATIONS,CLAUDE_MEM_WORKER_PORT:r.CLAUDE_MEM_WORKER_PORT??pe.CLAUDE_MEM_WORKER_PORT,CLAUDE_MEM_WORKER_HOST:r.CLAUDE_MEM_WORKER_HOST??pe.CLAUDE_MEM_WORKER_HOST,CLAUDE_MEM_PROVIDER:r.CLAUDE_MEM_PROVIDER??pe.CLAUDE_MEM_PROVIDER,CLAUDE_MEM_GEMINI_API_KEY:r.CLAUDE_MEM_GEMINI_API_KEY??pe.CLAUDE_MEM_GEMINI_API_KEY,CLAUDE_MEM_GEMINI_MODEL:r.CLAUDE_MEM_GEMINI_MODEL??pe.CLAUDE_MEM_GEMINI_MODEL,CLAUDE_MEM_GEMINI_RATE_LIMITING_ENABLED:r.CLAUDE_MEM_GEMINI_RATE_LIMITING_ENABLED??pe.CLAUDE_MEM_GEMINI_RATE_LIMITING_ENABLED,CLAUDE_MEM_OPENROUTER_API_KEY:r.CLAUDE_MEM_OPENROUTER_API_KEY??pe.CLAUDE_MEM_OPENROUTER_API_KEY,CLAUDE_MEM_OPENROUTER_MODEL:r.CLAUDE_MEM_OPENROUTER_MODEL??pe.CLAUDE_MEM_OPENROUTER_MODEL,CLAUDE_MEM_OPENROUTER_SITE_URL:r.CLAUDE_MEM_OPENROUTER_SITE_URL??pe.CLAUDE_MEM_OPENROUTER_SITE_URL,CLAUDE_MEM_OPENROUTER_APP_NAME:r.CLAUDE_MEM_OPENROUTER_APP_NAME??pe.CLAUDE_MEM_OPENROUTER_APP_NAME,CLAUDE_MEM_CONTEXT_SHOW_READ_TOKENS:r.CLAUDE_MEM_CONTEXT_SHOW_READ_TOKENS??pe.CLAUDE_MEM_CONTEXT_SHOW_READ_TOKENS,CLAUDE_MEM_CONTEXT_SHOW_WORK_TOKENS:r.CLAUDE_MEM_CONTEXT_SHOW_WORK_TOKENS??pe.CLAUDE_MEM_CONTEXT_SHOW_WORK_TOKENS,CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_AMOUNT:r.CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_AMOUNT??pe.CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_AMOUNT,CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_PERCENT:r.CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_PERCENT??pe.CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_PERCENT,CLAUDE_MEM_CONTEXT_FULL_COUNT:r.CLAUDE_MEM_CONTEXT_FULL_COUNT??pe.CLAUDE_MEM_CONTEXT_FULL_COUNT,CLAUDE_MEM_CONTEXT_FULL_FIELD:r.CLAUDE_MEM_CONTEXT_FULL_FIELD??pe.CLAUDE_MEM_CONTEXT_FULL_FIELD,CLAUDE_MEM_CONTEXT_SESSION_COUNT:r.CLAUDE_MEM_CONTEXT_SESSION_COUNT??pe.CLAUDE_MEM_CONTEXT_SESSION_COUNT,CLAUDE_MEM_CONTEXT_SHOW_LAST_SUMMARY:r.CLAUDE_MEM_CONTEXT_SHOW_LAST_SUMMARY??pe.CLAUDE_MEM_CONTEXT_SHOW_LAST_SUMMARY,CLAUDE_MEM_CONTEXT_SHOW_LAST_MESSAGE:r.CLAUDE_MEM_CONTEXT_SHOW_LAST_MESSAGE??pe.CLAUDE_MEM_CONTEXT_SHOW_LAST_MESSAGE})}).catch(r=>{console.error("Failed to load settings:",r)})},[]),{settings:e,saveSettings:async r=>{n(!0),u("Saving...");try{let o=await Mt(Vt.SETTINGS,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(r)});if(!o.ok){u(`\u2717 Error: ${o.status===401?"Unauthorized":o.statusText}`),n(!1);return}let c=await o.json();c.success?(t(r),u("\u2713 Saved"),setTimeout(()=>u(""),Ir.SAVE_STATUS_DISPLAY_DURATION_MS)):u(`\u2717 Error: ${c.error}`)}catch(o){u(`\u2717 Error: ${o instanceof Error?o.message:"Network error"}`)}n(!1)},isSaving:l,saveStatus:a}}var Qa=ie(ae(),1);function kh(){let[e,t]=(0,Qa.useState)({}),l=(0,Qa.useCallback)(async()=>{try{let a=await(await Mt(Vt.STATS)).json();t(a)}catch(n){console.error("Failed to load stats:",n instanceof Error?n.message:String(n))}},[]);return(0,Qa.useEffect)(()=>{l()},[l]),{stats:e,refreshStats:l}}var dn=ie(ae(),1);function hf(e,t,l){let[n,a]=(0,dn.useState)({isLoading:!1,hasMore:!0}),u=(0,dn.useRef)(0),i=(0,dn.useRef)(l),r=(0,dn.useRef)(n),o=(0,dn.useCallback)(async()=>{let c=i.current!==l;if(c){u.current=0,i.current=l;let T={isLoading:!1,hasMore:!0};a(T),r.current=T}if(!c&&(r.current.isLoading||!r.current.hasMore))return[];r.current={...r.current,isLoading:!0},a(T=>({...T,isLoading:!0}));let h=new URLSearchParams({offset:u.current.toString(),limit:Pu.PAGINATION_PAGE_SIZE.toString()});l&&h.append("project",l);let v=await Mt(`${e}?${h}`);if(!v.ok)throw new Error(`Failed to load ${t}: ${v.statusText}`);let p=await v.json(),y={...r.current,isLoading:!1,hasMore:p.hasMore};return r.current=y,a(T=>({...T,isLoading:!1,hasMore:p.hasMore})),u.current+=Pu.PAGINATION_PAGE_SIZE,p.items},[l,e,t]);return{...n,loadMore:o}}function Vh(e){let t=hf(Vt.OBSERVATIONS,"observations",e),l=hf(Vt.SUMMARIES,"summaries",e),n=hf(Vt.PROMPTS,"prompts",e);return{observations:t,summaries:l,prompts:n}}var Za=ie(ae(),1),Kh="claude-mem-theme";function _S(){return typeof window>"u"||window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}function Qh(){try{let e=localStorage.getItem(Kh);if(e==="system"||e==="light"||e==="dark")return e}catch(e){console.warn("Failed to read theme preference from localStorage:",e instanceof Error?e.message:String(e))}return"system"}function Zh(e){return e==="system"?_S():e}function Jh(){let[e,t]=(0,Za.useState)(Qh),[l,n]=(0,Za.useState)(()=>Zh(Qh()));return(0,Za.useEffect)(()=>{let u=Zh(e);n(u),document.documentElement.setAttribute("data-theme",u)},[e]),(0,Za.useEffect)(()=>{if(e!=="system")return;let u=window.matchMedia("(prefers-color-scheme: dark)"),i=r=>{let o=r.matches?"dark":"light";n(o),document.documentElement.setAttribute("data-theme",o)};return u.addEventListener("change",i),()=>u.removeEventListener("change",i)},[e]),{preference:e,resolvedTheme:l,setThemePreference:u=>{try{localStorage.setItem(Kh,u),t(u)}catch(i){console.warn("Failed to save theme preference to localStorage:",i instanceof Error?i.message:String(i)),t(u)}}}}function Wr(e,t){let l=new Set;return[...e,...t].filter(n=>l.has(n.id)?!1:(l.add(n.id),!0))}function Fh(){let[e,t]=(0,J.useState)(""),[l,n]=(0,J.useState)(!1),[a,u]=(0,J.useState)(!1),[i,r]=(0,J.useState)(Gh),[o,c]=(0,J.useState)([]),[h,v]=(0,J.useState)([]),[p,y]=(0,J.useState)([]),{observations:T,summaries:M,prompts:L,projects:s,isProcessing:f,queueDepth:g,isConnected:d}=Yh(),{settings:A,saveSettings:D,isSaving:O,saveStatus:z}=Xh(),{refreshStats:w}=kh(),{preference:R,setThemePreference:Ie}=Jh(),ge=Vh(e),pt=(0,J.useCallback)(Ae=>!e||Ae.project===e,[e]);(0,J.useEffect)(()=>{e&&!s.includes(e)&&t("")},[s,e]);let xe=(0,J.useMemo)(()=>{let Ae=T.filter(pt),_=o.filter(pt);return Wr(Ae,_)},[T,o,pt]),Dl=(0,J.useMemo)(()=>{let Ae=M.filter(pt),_=h.filter(pt);return Wr(Ae,_)},[M,h,pt]),Cl=(0,J.useMemo)(()=>{let Ae=L.filter(pt),_=p.filter(pt);return Wr(Ae,_)},[L,p,pt]),al=(0,J.useCallback)(()=>{n(Ae=>!Ae)},[]),Bn=(0,J.useCallback)(()=>{u(Ae=>!Ae)},[]),Gn=(0,J.useCallback)(async()=>{try{let[Ae,_,de]=await Promise.all([ge.observations.loadMore(),ge.summaries.loadMore(),ge.prompts.loadMore()]);Ae.length>0&&c(ne=>[...ne,...Ae]),_.length>0&&v(ne=>[...ne,..._]),de.length>0&&y(ne=>[...ne,...de])}catch(Ae){console.error("Failed to load more data:",Ae)}},[ge.observations,ge.summaries,ge.prompts]);return(0,J.useEffect)(()=>{c([]),v([]),y([]),Gn()},[e]),(0,J.useEffect)(()=>{w()},[T.length]),J.default.createElement(J.default.Fragment,null,J.default.createElement(w0,{isConnected:d,projects:s,currentFilter:e,onFilterChange:t,isProcessing:f,queueDepth:g,themePreference:R,onThemeChange:Ie,onContextPreviewToggle:al,onShowHelp:()=>{gf(!1),r(!1)}}),J.default.createElement(Y0,{observations:xe,summaries:Dl,prompts:Cl,onLoadMore:Gn,isLoading:ge.observations.isLoading||ge.summaries.isLoading||ge.prompts.isLoading,hasMore:ge.observations.hasMore||ge.summaries.hasMore||ge.prompts.hasMore}),!i&&J.default.createElement(jh,{onDismiss:()=>r(!0)}),J.default.createElement(Rh,{isOpen:l,onClose:al,settings:A,onSave:D,isSaving:O,saveStatus:z}),J.default.createElement("button",{className:"console-toggle-btn",onClick:Bn,title:"Toggle Console"},J.default.createElement("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},J.default.createElement("polyline",{points:"4 17 10 11 4 5"}),J.default.createElement("line",{x1:"12",y1:"19",x2:"20",y2:"19"}))),J.default.createElement(Bh,{isOpen:a,onClose:Bn}))}var Nl=ie(ae(),1),Pr=class extends Nl.Component{constructor(t){super(t),this.state={hasError:!1,error:null,errorInfo:null}}static getDerivedStateFromError(t){return{hasError:!0,error:t}}componentDidCatch(t,l){console.error("[ErrorBoundary] Caught error:",t,l),this.setState({error:t,errorInfo:l})}render(){return this.state.hasError?Nl.default.createElement("div",{style:{padding:"20px",color:"#ff6b6b",backgroundColor:"#1a1a1a",minHeight:"100vh"}},Nl.default.createElement("h1",{style:{fontSize:"24px",marginBottom:"10px"}},"Something went wrong"),Nl.default.createElement("p",{style:{marginBottom:"10px",color:"#8b949e"}},"The application encountered an error. Please refresh the page to try again."),this.state.error&&Nl.default.createElement("details",{style:{marginTop:"20px",color:"#8b949e"}},Nl.default.createElement("summary",{style:{cursor:"pointer",marginBottom:"10px"}},"Error details"),Nl.default.createElement("pre",{style:{backgroundColor:"#0d1117",padding:"10px",borderRadius:"6px",overflow:"auto"}},this.state.error.toString(),this.state.errorInfo&&`
14
+ `).map(gS):[],[l]),w=(0,N.useMemo)(()=>z.filter(_=>D?_.raw.includes("[ALIGNMENT]"):!_.level||!_.component?!0:f.has(_.level)&&d.has(_.component)),[z,f,d,D]),R=(0,N.useCallback)(()=>{if(!L.current)return!0;let{scrollTop:_,scrollHeight:de,clientHeight:ne}=L.current;return de-_-ne<50},[]),Ie=(0,N.useCallback)(()=>{L.current&&s.current&&(L.current.scrollTop=L.current.scrollHeight)},[]),ge=(0,N.useCallback)(async()=>{s.current=R(),u(!0),r(null);try{let _=await Mt("/api/logs");if(!_.ok)throw new Error(`Failed to fetch logs: ${_.statusText}`);let de=await _.json();n(de.logs||"")}catch(_){r(_ instanceof Error?_.message:"Unknown error")}finally{u(!1)}},[R]);(0,N.useEffect)(()=>{Ie()},[l,Ie]);let pt=(0,N.useCallback)(async()=>{if(confirm("Are you sure you want to clear all logs?")){u(!0),r(null);try{let _=await Mt("/api/logs/clear",{method:"POST"});if(!_.ok)throw new Error(`Failed to clear logs: ${_.statusText}`);n("")}catch(_){r(_ instanceof Error?_.message:"Unknown error")}finally{u(!1)}}},[]),xe=(0,N.useCallback)(_=>{_.preventDefault(),y(!0),T.current=_.clientY,M.current=h},[h]);(0,N.useEffect)(()=>{if(!p)return;let _=ne=>{let F=T.current-ne.clientY,Qt=Math.min(Math.max(150,M.current+F),window.innerHeight-100);v(Qt)},de=()=>{y(!1)};return document.addEventListener("mousemove",_),document.addEventListener("mouseup",de),()=>{document.removeEventListener("mousemove",_),document.removeEventListener("mouseup",de)}},[p]),(0,N.useEffect)(()=>{e&&(s.current=!0,ge())},[e,ge]),(0,N.useEffect)(()=>{if(!e||!o)return;let _=setInterval(ge,2e3);return()=>clearInterval(_)},[e,o,ge]);let Dl=(0,N.useCallback)(_=>{g(de=>{let ne=new Set(de);return ne.has(_)?ne.delete(_):ne.add(_),ne})},[]),Cl=(0,N.useCallback)(_=>{A(de=>{let ne=new Set(de);return ne.has(_)?ne.delete(_):ne.add(_),ne})},[]),al=(0,N.useCallback)(_=>{g(_?new Set(["DEBUG","INFO","WARN","ERROR"]):new Set)},[]),Bn=(0,N.useCallback)(_=>{A(_?new Set(["HOOK","WORKER","SDK","PARSER","DB","SYSTEM","HTTP","SESSION","CHROMA"]):new Set)},[]);if(!e)return null;let Gn=_=>{let de=li.find(jn=>jn.key===_.level),ne=ni.find(jn=>jn.key===_.component),F="var(--color-text-primary)",Qt="normal",Ee="transparent";return _.level==="ERROR"?(F="#f85149",Ee="rgba(248, 81, 73, 0.1)"):_.level==="WARN"?(F="#d29922",Ee="rgba(210, 153, 34, 0.05)"):_.isSpecial==="success"?F="#3fb950":_.isSpecial==="failure"?F="#f85149":_.isSpecial==="happyPath"?F="#d29922":de&&(F=de.color),{color:F,fontWeight:Qt,backgroundColor:Ee,padding:"1px 0",borderRadius:"2px"}},Ae=(_,de)=>{if(!_.timestamp)return N.default.createElement("div",{key:de,className:"log-line log-line-raw"},_.raw);let ne=li.find(Qt=>Qt.key===_.level),F=ni.find(Qt=>Qt.key===_.component);return N.default.createElement("div",{key:de,className:"log-line",style:Gn(_)},N.default.createElement("span",{className:"log-timestamp"},"[",_.timestamp,"]")," ",N.default.createElement("span",{className:"log-level",style:{color:ne?.color},title:_.level},"[",ne?.icon||""," ",_.level?.padEnd(5),"]")," ",N.default.createElement("span",{className:"log-component",style:{color:F?.color},title:_.component},"[",F?.icon||""," ",_.component?.padEnd(7),"]")," ",_.correlationId&&N.default.createElement(N.default.Fragment,null,N.default.createElement("span",{className:"log-correlation"},"[",_.correlationId,"]")," "),N.default.createElement("span",{className:"log-message"},_.message))};return N.default.createElement("div",{className:"console-drawer",style:{height:`${h}px`}},N.default.createElement("div",{className:"console-resize-handle",onMouseDown:xe},N.default.createElement("div",{className:"console-resize-bar"})),N.default.createElement("div",{className:"console-header"},N.default.createElement("div",{className:"console-tabs"},N.default.createElement("div",{className:"console-tab active"},"Console")),N.default.createElement("div",{className:"console-controls"},N.default.createElement("label",{className:"console-auto-refresh"},N.default.createElement("input",{type:"checkbox",checked:o,onChange:_=>c(_.target.checked)}),"Auto-refresh"),N.default.createElement("button",{className:"console-control-btn",onClick:ge,disabled:a,title:"Refresh logs"},"\u21BB"),N.default.createElement("button",{className:"console-control-btn",onClick:()=>{s.current=!0,Ie()},title:"Scroll to bottom"},"\u2B07"),N.default.createElement("button",{className:"console-control-btn console-clear-btn",onClick:pt,disabled:a,title:"Clear logs"},"\u{1F5D1}"),N.default.createElement("button",{className:"console-control-btn",onClick:t,title:"Close console"},"\u2715"))),N.default.createElement("div",{className:"console-filters"},N.default.createElement("div",{className:"console-filter-section"},N.default.createElement("span",{className:"console-filter-label"},"Quick:"),N.default.createElement("div",{className:"console-filter-chips"},N.default.createElement("button",{className:`console-filter-chip ${D?"active":""}`,onClick:()=>O(!D),style:{"--chip-color":"#f0883e"},title:"Show only session alignment logs"},"\u{1F517} Alignment"))),N.default.createElement("div",{className:"console-filter-section"},N.default.createElement("span",{className:"console-filter-label"},"Levels:"),N.default.createElement("div",{className:"console-filter-chips"},li.map(_=>N.default.createElement("button",{key:_.key,className:`console-filter-chip ${f.has(_.key)?"active":""}`,onClick:()=>Dl(_.key),style:{"--chip-color":_.color},title:_.label},_.icon," ",_.label)),N.default.createElement("button",{className:"console-filter-action",onClick:()=>al(f.size===0),title:f.size===li.length?"Select none":"Select all"},f.size===li.length?"\u25CB":"\u25CF"))),N.default.createElement("div",{className:"console-filter-section"},N.default.createElement("span",{className:"console-filter-label"},"Components:"),N.default.createElement("div",{className:"console-filter-chips"},ni.map(_=>N.default.createElement("button",{key:_.key,className:`console-filter-chip ${d.has(_.key)?"active":""}`,onClick:()=>Cl(_.key),style:{"--chip-color":_.color},title:_.label},_.icon," ",_.label)),N.default.createElement("button",{className:"console-filter-action",onClick:()=>Bn(d.size===0),title:d.size===ni.length?"Select none":"Select all"},d.size===ni.length?"\u25CB":"\u25CF")))),i&&N.default.createElement("div",{className:"console-error"},"\u26A0 ",i),N.default.createElement("div",{className:"console-content",ref:L},N.default.createElement("div",{className:"console-logs"},w.length===0?N.default.createElement("div",{className:"log-line log-line-empty"},"No logs available"):w.map((_,de)=>Ae(_,de)))))}var U=ie(ae(),1),pf="claude-mem-welcome-dismissed-v3",hS="/api/onboarding/explainer",vS="https://docs.claude-mem.ai";function Gh(){try{return localStorage.getItem(pf)==="true"}catch(e){return console.warn("Failed to read welcome-dismissed from localStorage:",e instanceof Error?e.message:String(e)),!1}}function gf(e){try{e?localStorage.setItem(pf,"true"):localStorage.removeItem(pf)}catch(t){console.warn("Failed to save welcome-dismissed to localStorage:",t instanceof Error?t.message:String(t))}}function yS({onClick:e}){return U.default.createElement("button",{type:"button",className:"welcome-modal-dismiss",onClick:e,"aria-label":"Close welcome",title:"Close (Esc)"},U.default.createElement("svg",{width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},U.default.createElement("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),U.default.createElement("line",{x1:"6",y1:"6",x2:"18",y2:"18"})))}function ES(){return U.default.createElement("svg",{className:"welcome-modal-feature-art",viewBox:"0 0 96 96",fill:"none",stroke:"currentColor",strokeWidth:"1.75",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true"},U.default.createElement("rect",{x:"14",y:"56",width:"68",height:"22",rx:"4"}),U.default.createElement("line",{x1:"20",y1:"56",x2:"20",y2:"78",stroke:"var(--color-border-prompt)",strokeWidth:"3"}),U.default.createElement("line",{x1:"30",y1:"64",x2:"56",y2:"64",opacity:"0.6"}),U.default.createElement("line",{x1:"30",y1:"71",x2:"48",y2:"71",opacity:"0.6"}),U.default.createElement("rect",{x:"10",y:"30",width:"68",height:"22",rx:"4"}),U.default.createElement("line",{x1:"16",y1:"30",x2:"16",y2:"52",stroke:"var(--color-border-summary)",strokeWidth:"3"}),U.default.createElement("line",{x1:"26",y1:"38",x2:"60",y2:"38",opacity:"0.6"}),U.default.createElement("line",{x1:"26",y1:"45",x2:"52",y2:"45",opacity:"0.6"}),U.default.createElement("rect",{x:"18",y:"6",width:"68",height:"22",rx:"4"}),U.default.createElement("line",{x1:"24",y1:"6",x2:"24",y2:"28",stroke:"var(--color-border-observation)",strokeWidth:"3"}),U.default.createElement("line",{x1:"34",y1:"14",x2:"68",y2:"14",opacity:"0.6"}),U.default.createElement("line",{x1:"34",y1:"21",x2:"60",y2:"21",opacity:"0.6"}))}function SS(){return U.default.createElement("svg",{className:"welcome-modal-feature-art",viewBox:"0 0 96 96",fill:"none",stroke:"currentColor",strokeWidth:"1.75",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true"},U.default.createElement("line",{x1:"14",y1:"26",x2:"82",y2:"26"}),U.default.createElement("line",{x1:"14",y1:"48",x2:"82",y2:"48"}),U.default.createElement("line",{x1:"14",y1:"70",x2:"82",y2:"70"}),U.default.createElement("circle",{cx:"32",cy:"26",r:"6",fill:"var(--color-bg-card)"}),U.default.createElement("circle",{cx:"62",cy:"48",r:"6",fill:"var(--color-bg-card)"}),U.default.createElement("circle",{cx:"44",cy:"70",r:"6",fill:"var(--color-bg-card)"}),U.default.createElement("circle",{cx:"32",cy:"26",r:"2.5",fill:"currentColor",stroke:"none"}),U.default.createElement("circle",{cx:"62",cy:"48",r:"2.5",fill:"currentColor",stroke:"none"}),U.default.createElement("circle",{cx:"44",cy:"70",r:"2.5",fill:"currentColor",stroke:"none"}))}function bS(){return U.default.createElement("svg",{className:"welcome-modal-feature-art",viewBox:"0 0 96 96",fill:"none",stroke:"currentColor",strokeWidth:"1.75",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true"},U.default.createElement("rect",{x:"10",y:"14",width:"58",height:"40",rx:"4",opacity:"0.45"}),U.default.createElement("line",{x1:"20",y1:"24",x2:"56",y2:"24",opacity:"0.45"}),U.default.createElement("line",{x1:"20",y1:"32",x2:"48",y2:"32",opacity:"0.45"}),U.default.createElement("line",{x1:"20",y1:"40",x2:"52",y2:"40",opacity:"0.45"}),U.default.createElement("rect",{x:"18",y:"26",width:"58",height:"40",rx:"4",fill:"var(--color-bg-card)"}),U.default.createElement("line",{x1:"28",y1:"36",x2:"64",y2:"36",opacity:"0.6"}),U.default.createElement("line",{x1:"28",y1:"44",x2:"56",y2:"44",opacity:"0.6"}),U.default.createElement("line",{x1:"28",y1:"52",x2:"60",y2:"52",opacity:"0.6"}),U.default.createElement("circle",{cx:"62",cy:"62",r:"14",fill:"var(--color-bg-card)",stroke:"currentColor",strokeWidth:"2.25"}),U.default.createElement("line",{x1:"73",y1:"73",x2:"84",y2:"84",strokeWidth:"2.5"}))}var TS=[{kind:"stream",illustration:U.default.createElement(ES,null),title:"Live feed",description:"Observations, summaries, and prompts stream in live."},{kind:"tune",illustration:U.default.createElement(SS,null),title:"Tune it",description:"The gear in the top-right tunes memory injection."},{kind:"recall",illustration:U.default.createElement(bS,null),title:"Recall it",description:"Ask Claude or run /mem-search to find past work."}];function jh({onDismiss:e}){let t=()=>{gf(!0),e()};return(0,U.useEffect)(()=>{let l=n=>{n.key==="Escape"&&t()};return window.addEventListener("keydown",l),()=>window.removeEventListener("keydown",l)},[]),U.default.createElement("div",{className:"welcome-modal-backdrop",onClick:t},U.default.createElement("article",{className:"welcome-modal",onClick:l=>l.stopPropagation(),role:"dialog","aria-modal":"true","aria-labelledby":"welcome-modal-title"},U.default.createElement(yS,{onClick:t}),U.default.createElement("header",{className:"welcome-modal-header"},U.default.createElement("img",{className:"welcome-modal-logo",src:"claude-mem-logo-stylized.png",alt:"",width:"96",height:"96"}),U.default.createElement("h2",{id:"welcome-modal-title"},"Welcome to claude-mem"),U.default.createElement("p",null,"Persistent memory for Claude Code.")),U.default.createElement("div",{className:"welcome-modal-grid"},TS.map(l=>U.default.createElement("div",{key:l.kind,className:`welcome-modal-feature welcome-modal-feature-${l.kind}`},U.default.createElement("div",{className:"welcome-modal-feature-inner"},l.illustration,U.default.createElement("h3",{className:"welcome-modal-feature-title"},l.title),U.default.createElement("p",{className:"welcome-modal-feature-desc"},l.description))))),U.default.createElement("footer",{className:"welcome-modal-footer"},U.default.createElement("a",{href:hS,target:"_blank",rel:"noopener noreferrer"},"How it works"),U.default.createElement("span",{className:"welcome-modal-footer-sep"},"\xB7"),U.default.createElement("a",{href:vS,target:"_blank",rel:"noopener noreferrer"},"Read the docs"))))}var Nt=ie(ae(),1);var Vt={OBSERVATIONS:"/api/observations",SUMMARIES:"/api/summaries",PROMPTS:"/api/prompts",SETTINGS:"/api/settings",STATS:"/api/stats",PROCESSING_STATUS:"/api/processing-status",STREAM:"/stream"};var Ir={SSE_RECONNECT_DELAY_MS:3e3,STATS_REFRESH_INTERVAL_MS:1e4,SAVE_STATUS_DISPLAY_DURATION_MS:3e3};function Yh(){let[e,t]=(0,Nt.useState)([]),[l,n]=(0,Nt.useState)([]),[a,u]=(0,Nt.useState)([]),[i,r]=(0,Nt.useState)([]),[o,c]=(0,Nt.useState)(!1),[h,v]=(0,Nt.useState)(!1),[p,y]=(0,Nt.useState)(0),T=(0,Nt.useRef)(null),M=(0,Nt.useRef)(void 0),L=s=>{r(f=>f.includes(s)?f:[...f,s])};return(0,Nt.useEffect)(()=>{let s=()=>{T.current&&T.current.close();let f=new EventSource(Vt.STREAM);T.current=f,f.onopen=()=>{console.log("[SSE] Connected"),c(!0),M.current&&clearTimeout(M.current)},f.onerror=g=>{console.error("[SSE] Connection error:",g),c(!1),f.close(),M.current=setTimeout(()=>{M.current=void 0,console.log("[SSE] Attempting to reconnect..."),s()},Ir.SSE_RECONNECT_DELAY_MS)},f.onmessage=g=>{let d=JSON.parse(g.data);switch(d.type){case"initial_load":console.log("[SSE] Initial load:",{projects:d.projects?.length||0}),r(d.projects||[]);break;case"new_observation":d.observation&&(console.log("[SSE] New observation:",d.observation.id),L(d.observation.project),t(A=>[d.observation,...A]));break;case"new_summary":d.summary&&(console.log("[SSE] New summary:",d.summary.id),L(d.summary.project),n(A=>[d.summary,...A]));break;case"new_prompt":d.prompt&&(console.log("[SSE] New prompt:",d.prompt.id),L(d.prompt.project),u(A=>[d.prompt,...A]));break;case"processing_status":typeof d.isProcessing=="boolean"&&(console.log("[SSE] Processing status:",d.isProcessing,"Queue depth:",d.queueDepth),v(d.isProcessing),y(d.queueDepth||0));break}}};return s(),()=>{T.current&&T.current.close(),M.current&&clearTimeout(M.current)}},[]),{observations:e,summaries:l,prompts:a,projects:i,isProcessing:h,queueDepth:p,isConnected:o}}var Va=ie(ae(),1);var pe={CLAUDE_MEM_MODEL:"claude-sonnet-4-6",CLAUDE_MEM_CONTEXT_OBSERVATIONS:"50",CLAUDE_MEM_WORKER_PORT:"37777",CLAUDE_MEM_WORKER_HOST:"127.0.0.1",CLAUDE_MEM_PROVIDER:"claude",CLAUDE_MEM_GEMINI_API_KEY:"",CLAUDE_MEM_GEMINI_MODEL:"gemini-2.5-flash-lite",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_GEMINI_RATE_LIMITING_ENABLED:"true",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_EXCLUDED_PROJECTS:"",CLAUDE_MEM_FOLDER_MD_EXCLUDE:"[]"};function Xh(){let[e,t]=(0,Va.useState)(pe),[l,n]=(0,Va.useState)(!1),[a,u]=(0,Va.useState)("");return(0,Va.useEffect)(()=>{Mt(Vt.SETTINGS).then(async r=>{if(!r.ok)throw new Error(`Failed to load settings (${r.status})`);return r.json()}).then(r=>{t({CLAUDE_MEM_MODEL:r.CLAUDE_MEM_MODEL??pe.CLAUDE_MEM_MODEL,CLAUDE_MEM_CONTEXT_OBSERVATIONS:r.CLAUDE_MEM_CONTEXT_OBSERVATIONS??pe.CLAUDE_MEM_CONTEXT_OBSERVATIONS,CLAUDE_MEM_WORKER_PORT:r.CLAUDE_MEM_WORKER_PORT??pe.CLAUDE_MEM_WORKER_PORT,CLAUDE_MEM_WORKER_HOST:r.CLAUDE_MEM_WORKER_HOST??pe.CLAUDE_MEM_WORKER_HOST,CLAUDE_MEM_PROVIDER:r.CLAUDE_MEM_PROVIDER??pe.CLAUDE_MEM_PROVIDER,CLAUDE_MEM_GEMINI_API_KEY:r.CLAUDE_MEM_GEMINI_API_KEY??pe.CLAUDE_MEM_GEMINI_API_KEY,CLAUDE_MEM_GEMINI_MODEL:r.CLAUDE_MEM_GEMINI_MODEL??pe.CLAUDE_MEM_GEMINI_MODEL,CLAUDE_MEM_GEMINI_RATE_LIMITING_ENABLED:r.CLAUDE_MEM_GEMINI_RATE_LIMITING_ENABLED??pe.CLAUDE_MEM_GEMINI_RATE_LIMITING_ENABLED,CLAUDE_MEM_OPENROUTER_API_KEY:r.CLAUDE_MEM_OPENROUTER_API_KEY??pe.CLAUDE_MEM_OPENROUTER_API_KEY,CLAUDE_MEM_OPENROUTER_MODEL:r.CLAUDE_MEM_OPENROUTER_MODEL??pe.CLAUDE_MEM_OPENROUTER_MODEL,CLAUDE_MEM_OPENROUTER_SITE_URL:r.CLAUDE_MEM_OPENROUTER_SITE_URL??pe.CLAUDE_MEM_OPENROUTER_SITE_URL,CLAUDE_MEM_OPENROUTER_APP_NAME:r.CLAUDE_MEM_OPENROUTER_APP_NAME??pe.CLAUDE_MEM_OPENROUTER_APP_NAME,CLAUDE_MEM_CONTEXT_SHOW_READ_TOKENS:r.CLAUDE_MEM_CONTEXT_SHOW_READ_TOKENS??pe.CLAUDE_MEM_CONTEXT_SHOW_READ_TOKENS,CLAUDE_MEM_CONTEXT_SHOW_WORK_TOKENS:r.CLAUDE_MEM_CONTEXT_SHOW_WORK_TOKENS??pe.CLAUDE_MEM_CONTEXT_SHOW_WORK_TOKENS,CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_AMOUNT:r.CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_AMOUNT??pe.CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_AMOUNT,CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_PERCENT:r.CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_PERCENT??pe.CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_PERCENT,CLAUDE_MEM_CONTEXT_FULL_COUNT:r.CLAUDE_MEM_CONTEXT_FULL_COUNT??pe.CLAUDE_MEM_CONTEXT_FULL_COUNT,CLAUDE_MEM_CONTEXT_FULL_FIELD:r.CLAUDE_MEM_CONTEXT_FULL_FIELD??pe.CLAUDE_MEM_CONTEXT_FULL_FIELD,CLAUDE_MEM_CONTEXT_SESSION_COUNT:r.CLAUDE_MEM_CONTEXT_SESSION_COUNT??pe.CLAUDE_MEM_CONTEXT_SESSION_COUNT,CLAUDE_MEM_CONTEXT_SHOW_LAST_SUMMARY:r.CLAUDE_MEM_CONTEXT_SHOW_LAST_SUMMARY??pe.CLAUDE_MEM_CONTEXT_SHOW_LAST_SUMMARY,CLAUDE_MEM_CONTEXT_SHOW_LAST_MESSAGE:r.CLAUDE_MEM_CONTEXT_SHOW_LAST_MESSAGE??pe.CLAUDE_MEM_CONTEXT_SHOW_LAST_MESSAGE})}).catch(r=>{console.error("Failed to load settings:",r)})},[]),{settings:e,saveSettings:async r=>{n(!0),u("Saving...");try{let o=await Mt(Vt.SETTINGS,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(r)});if(!o.ok){u(`\u2717 Error: ${o.status===401?"Unauthorized":o.statusText}`),n(!1);return}let c=await o.json();c.success?(t(r),u("\u2713 Saved"),setTimeout(()=>u(""),Ir.SAVE_STATUS_DISPLAY_DURATION_MS)):u(`\u2717 Error: ${c.error}`)}catch(o){u(`\u2717 Error: ${o instanceof Error?o.message:"Network error"}`)}n(!1)},isSaving:l,saveStatus:a}}var Qa=ie(ae(),1);function kh(){let[e,t]=(0,Qa.useState)({}),l=(0,Qa.useCallback)(async()=>{try{let a=await(await Mt(Vt.STATS)).json();t(a)}catch(n){console.error("Failed to load stats:",n instanceof Error?n.message:String(n))}},[]);return(0,Qa.useEffect)(()=>{l()},[l]),{stats:e,refreshStats:l}}var dn=ie(ae(),1);function hf(e,t,l){let[n,a]=(0,dn.useState)({isLoading:!1,hasMore:!0}),u=(0,dn.useRef)(0),i=(0,dn.useRef)(l),r=(0,dn.useRef)(n),o=(0,dn.useCallback)(async()=>{let c=i.current!==l;if(c){u.current=0,i.current=l;let T={isLoading:!1,hasMore:!0};a(T),r.current=T}if(!c&&(r.current.isLoading||!r.current.hasMore))return[];r.current={...r.current,isLoading:!0},a(T=>({...T,isLoading:!0}));let h=new URLSearchParams({offset:u.current.toString(),limit:Pu.PAGINATION_PAGE_SIZE.toString()});l&&h.append("project",l);let v=await Mt(`${e}?${h}`);if(!v.ok)throw new Error(`Failed to load ${t}: ${v.statusText}`);let p=await v.json(),y={...r.current,isLoading:!1,hasMore:p.hasMore};return r.current=y,a(T=>({...T,isLoading:!1,hasMore:p.hasMore})),u.current+=Pu.PAGINATION_PAGE_SIZE,p.items},[l,e,t]);return{...n,loadMore:o}}function Vh(e){let t=hf(Vt.OBSERVATIONS,"observations",e),l=hf(Vt.SUMMARIES,"summaries",e),n=hf(Vt.PROMPTS,"prompts",e);return{observations:t,summaries:l,prompts:n}}var Za=ie(ae(),1),Kh="claude-mem-theme";function _S(){return typeof window>"u"||window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}function Qh(){try{let e=localStorage.getItem(Kh);if(e==="system"||e==="light"||e==="dark")return e}catch(e){console.warn("Failed to read theme preference from localStorage:",e instanceof Error?e.message:String(e))}return"system"}function Zh(e){return e==="system"?_S():e}function Jh(){let[e,t]=(0,Za.useState)(Qh),[l,n]=(0,Za.useState)(()=>Zh(Qh()));return(0,Za.useEffect)(()=>{let u=Zh(e);n(u),document.documentElement.setAttribute("data-theme",u)},[e]),(0,Za.useEffect)(()=>{if(e!=="system")return;let u=window.matchMedia("(prefers-color-scheme: dark)"),i=r=>{let o=r.matches?"dark":"light";n(o),document.documentElement.setAttribute("data-theme",o)};return u.addEventListener("change",i),()=>u.removeEventListener("change",i)},[e]),{preference:e,resolvedTheme:l,setThemePreference:u=>{try{localStorage.setItem(Kh,u),t(u)}catch(i){console.warn("Failed to save theme preference to localStorage:",i instanceof Error?i.message:String(i)),t(u)}}}}function Wr(e,t){let l=new Set;return[...e,...t].filter(n=>l.has(n.id)?!1:(l.add(n.id),!0))}function Fh(){let[e,t]=(0,J.useState)(""),[l,n]=(0,J.useState)(!1),[a,u]=(0,J.useState)(!1),[i,r]=(0,J.useState)(Gh),[o,c]=(0,J.useState)([]),[h,v]=(0,J.useState)([]),[p,y]=(0,J.useState)([]),{observations:T,summaries:M,prompts:L,projects:s,isProcessing:f,queueDepth:g,isConnected:d}=Yh(),{settings:A,saveSettings:D,isSaving:O,saveStatus:z}=Xh(),{refreshStats:w}=kh(),{preference:R,setThemePreference:Ie}=Jh(),ge=Vh(e),pt=(0,J.useCallback)(Ae=>!e||Ae.project===e,[e]);(0,J.useEffect)(()=>{e&&!s.includes(e)&&t("")},[s,e]);let xe=(0,J.useMemo)(()=>{let Ae=T.filter(pt),_=o.filter(pt);return Wr(Ae,_)},[T,o,pt]),Dl=(0,J.useMemo)(()=>{let Ae=M.filter(pt),_=h.filter(pt);return Wr(Ae,_)},[M,h,pt]),Cl=(0,J.useMemo)(()=>{let Ae=L.filter(pt),_=p.filter(pt);return Wr(Ae,_)},[L,p,pt]),al=(0,J.useCallback)(()=>{n(Ae=>!Ae)},[]),Bn=(0,J.useCallback)(()=>{u(Ae=>!Ae)},[]),Gn=(0,J.useCallback)(async()=>{try{let[Ae,_,de]=await Promise.all([ge.observations.loadMore(),ge.summaries.loadMore(),ge.prompts.loadMore()]);Ae.length>0&&c(ne=>[...ne,...Ae]),_.length>0&&v(ne=>[...ne,..._]),de.length>0&&y(ne=>[...ne,...de])}catch(Ae){console.error("Failed to load more data:",Ae)}},[ge.observations,ge.summaries,ge.prompts]);return(0,J.useEffect)(()=>{c([]),v([]),y([]),Gn()},[e]),(0,J.useEffect)(()=>{w()},[T.length]),J.default.createElement(J.default.Fragment,null,J.default.createElement(w0,{isConnected:d,projects:s,currentFilter:e,onFilterChange:t,isProcessing:f,queueDepth:g,themePreference:R,onThemeChange:Ie,onContextPreviewToggle:al,onShowHelp:()=>{gf(!1),r(!1)}}),J.default.createElement(Y0,{observations:xe,summaries:Dl,prompts:Cl,onLoadMore:Gn,isLoading:ge.observations.isLoading||ge.summaries.isLoading||ge.prompts.isLoading,hasMore:ge.observations.hasMore||ge.summaries.hasMore||ge.prompts.hasMore}),!i&&J.default.createElement(jh,{onDismiss:()=>r(!0)}),J.default.createElement(Rh,{isOpen:l,onClose:al,settings:A,onSave:D,isSaving:O,saveStatus:z}),J.default.createElement("button",{className:"console-toggle-btn",onClick:Bn,title:"Toggle Console"},J.default.createElement("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"},J.default.createElement("polyline",{points:"4 17 10 11 4 5"}),J.default.createElement("line",{x1:"12",y1:"19",x2:"20",y2:"19"}))),J.default.createElement(Bh,{isOpen:a,onClose:Bn}))}var Nl=ie(ae(),1),Pr=class extends Nl.Component{constructor(t){super(t),this.state={hasError:!1,error:null,errorInfo:null}}static getDerivedStateFromError(t){return{hasError:!0,error:t}}componentDidCatch(t,l){console.error("[ErrorBoundary] Caught error:",t,l),this.setState({error:t,errorInfo:l})}render(){return this.state.hasError?Nl.default.createElement("div",{style:{padding:"20px",color:"#ff6b6b",backgroundColor:"#1a1a1a",minHeight:"100vh"}},Nl.default.createElement("h1",{style:{fontSize:"24px",marginBottom:"10px"}},"Something went wrong"),Nl.default.createElement("p",{style:{marginBottom:"10px",color:"#8b949e"}},"The application encountered an error. Please refresh the page to try again."),this.state.error&&Nl.default.createElement("details",{style:{marginTop:"20px",color:"#8b949e"}},Nl.default.createElement("summary",{style:{cursor:"pointer",marginBottom:"10px"}},"Error details"),Nl.default.createElement("pre",{style:{backgroundColor:"#0d1117",padding:"10px",borderRadius:"6px",overflow:"auto"}},this.state.error.toString(),this.state.errorInfo&&`
15
15
 
16
16
  `+this.state.errorInfo.componentStack))):this.props.children}};var Wh=document.getElementById("root");if(!Wh)throw new Error("Root element not found");var AS=(0,Ih.createRoot)(Wh);AS.render(vf.default.createElement(Pr,null,vf.default.createElement(Fh,null)));})();
17
17
  /*! Bundled license information: