signetai 0.109.21 → 0.110.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.
- package/dashboard/_app/immutable/assets/0.DyI51DwC.css +1 -0
- package/dashboard/_app/immutable/assets/2.BZxc-RrJ.css +1 -0
- package/dashboard/_app/immutable/assets/{AuditTab.DfUZSCcu.css → AuditTab.Hc64_Jqx.css} +1 -1
- package/dashboard/_app/immutable/assets/{ChangelogTab.8iCG0PUY.css → ChangelogTab.DPMB6GBV.css} +1 -1
- package/dashboard/_app/immutable/assets/{CortexTab.DLYwEPvJ.css → CortexTab.3C3a8KlW.css} +1 -1
- package/dashboard/_app/immutable/assets/{CortexTasksPanel.C4153GOT.css → CortexTasksPanel.BfHb49Cs.css} +1 -1
- package/dashboard/_app/immutable/assets/HomeTab.DnDpEIrk.css +1 -0
- package/dashboard/_app/immutable/assets/{MarketplaceTab.D-PeLdJA.css → MarketplaceTab.BfahzuSs.css} +1 -1
- package/dashboard/_app/immutable/assets/{OsTab.BABNhat-.css → OsTab.D_wVYC7y.css} +1 -1
- package/dashboard/_app/immutable/assets/{PageBanner.BodUOjhn.css → PageBanner.BY6Ub6Kn.css} +1 -1
- package/dashboard/_app/immutable/assets/{SecretsTab.DEoZs2Z_.css → SecretsTab.ZE-D0CIi.css} +1 -1
- package/dashboard/_app/immutable/assets/{SettingsTab.B1PZQtAW.css → SettingsTab.Lj9vR6l3.css} +1 -1
- package/dashboard/_app/immutable/assets/SourcesTab.BR4pyfYb.css +1 -0
- package/dashboard/_app/immutable/assets/{TroubleshooterPanel.Bj27xjMc.css → TroubleshooterPanel.CS4J0zfS.css} +1 -1
- package/dashboard/_app/immutable/chunks/{BiAb5cst.js → 6hALFWxe.js} +1 -1
- package/dashboard/_app/immutable/chunks/{BfoUO9DF.js → 8jfrEnwZ.js} +1 -1
- package/dashboard/_app/immutable/chunks/9UFGYsgU.js +1 -0
- package/dashboard/_app/immutable/chunks/{DCGZzQhv.js → B4MV25Cw.js} +1 -1
- package/dashboard/_app/immutable/chunks/{CzPN5M7F.js → B75W1jKu.js} +1 -1
- package/dashboard/_app/immutable/chunks/{DtHU_KyL.js → B8FOX1OE.js} +11 -11
- package/dashboard/_app/immutable/chunks/{CyB1_UBK.js → B9q9Ge2R.js} +1 -1
- package/dashboard/_app/immutable/chunks/{By_N1VYQ.js → BUrbURB6.js} +1 -1
- package/dashboard/_app/immutable/chunks/{sPXpc0N5.js → BX3ohALu.js} +1 -1
- package/dashboard/_app/immutable/chunks/{B8H0-1W-.js → BZDosIrh.js} +1 -1
- package/dashboard/_app/immutable/chunks/{DPZ6SyF-.js → B_FilWeQ.js} +1 -1
- package/dashboard/_app/immutable/chunks/BcWwjGf6.js +262 -0
- package/dashboard/_app/immutable/chunks/{DNGDC21S.js → BiBX3uai.js} +1 -1
- package/dashboard/_app/immutable/chunks/{EOE2EklU.js → BjckOom6.js} +1 -1
- package/dashboard/_app/immutable/chunks/{T-ShU8zN.js → Bmj_guSY.js} +1 -1
- package/dashboard/_app/immutable/chunks/{BSy63mmK.js → Bqh2yyHq.js} +1 -1
- package/dashboard/_app/immutable/chunks/{Dj7lwzP_.js → Bt_5fpG6.js} +1 -1
- package/dashboard/_app/immutable/chunks/{CuhH2hEa.js → Bw9cJchw.js} +1 -1
- package/dashboard/_app/immutable/chunks/ByGbV-Ik.js +32 -0
- package/dashboard/_app/immutable/chunks/C57S4WwD.js +16 -0
- package/dashboard/_app/immutable/chunks/CAqbdsRf.js +1 -0
- package/dashboard/_app/immutable/chunks/CBEN-ChP.js +4 -0
- package/dashboard/_app/immutable/chunks/{DztUtVIN.js → CEcPoaRJ.js} +1 -1
- package/dashboard/_app/immutable/chunks/CKVqiaWK.js +2 -0
- package/dashboard/_app/immutable/chunks/{DtdJ80sh.js → CTru9r3k.js} +1 -1
- package/dashboard/_app/immutable/chunks/CUNvCZVi.js +1 -0
- package/dashboard/_app/immutable/chunks/{KKQFryJf.js → C__P7n-d.js} +1 -1
- package/dashboard/_app/immutable/chunks/{D8So1UBc.js → CdpckCxA.js} +1 -1
- package/dashboard/_app/immutable/chunks/CmNyRv9_.js +3 -0
- package/dashboard/_app/immutable/chunks/{CwfMbyo9.js → Cnu2Gy6H.js} +1 -1
- package/dashboard/_app/immutable/chunks/CoBEMRYx.js +27 -0
- package/dashboard/_app/immutable/chunks/{aSrCnYtQ.js → CtP16pip.js} +1 -1
- package/dashboard/_app/immutable/chunks/{B0LCqdOS.js → CtffxXur.js} +1 -1
- package/dashboard/_app/immutable/chunks/{CoewuoXd.js → D2hKtolS.js} +1 -1
- package/dashboard/_app/immutable/chunks/{ql8Es_E1.js → DDBGvgR1.js} +1 -1
- package/dashboard/_app/immutable/chunks/DE4e4GZP.js +3 -0
- package/dashboard/_app/immutable/chunks/DQidaz0T.js +4 -0
- package/dashboard/_app/immutable/chunks/DQycX93q.js +31 -0
- package/dashboard/_app/immutable/chunks/{CD494UvJ.js → DWOk1mMF.js} +1 -1
- package/dashboard/_app/immutable/chunks/{OaTG8fit.js → DXr5J1T5.js} +2 -2
- package/dashboard/_app/immutable/chunks/{Bc-tUO5p.js → DcHgi7Cc.js} +1 -1
- package/dashboard/_app/immutable/chunks/{AqBnhsD5.js → DdMf_Qgk.js} +1 -1
- package/dashboard/_app/immutable/chunks/{SA9_q96K.js → DjQJhaws.js} +1 -1
- package/dashboard/_app/immutable/chunks/{BfkEASdS.js → DlEHdTiv.js} +1 -1
- package/dashboard/_app/immutable/chunks/DlaWiL1c.js +1 -0
- package/dashboard/_app/immutable/chunks/{C73w3ldq.js → DqvbULwl.js} +2 -2
- package/dashboard/_app/immutable/chunks/{BiDzZsdZ.js → DrHj0jJA.js} +1 -1
- package/dashboard/_app/immutable/chunks/E8aDzCah.js +64 -0
- package/dashboard/_app/immutable/chunks/{rdAZcnWE.js → Gx2iNUl2.js} +1 -1
- package/dashboard/_app/immutable/chunks/{BWFOfv6z.js → WOdSatfk.js} +1 -1
- package/dashboard/_app/immutable/chunks/{DvMqwpw_.js → e2kluLpm.js} +1 -1
- package/dashboard/_app/immutable/chunks/{BS1btvRn.js → fNoP8D6S.js} +3 -3
- package/dashboard/_app/immutable/chunks/{BykyFGyF.js → gdh5sBCP.js} +1 -1
- package/dashboard/_app/immutable/chunks/{DK3bAoxY.js → nI8gUPgM.js} +1 -1
- package/dashboard/_app/immutable/chunks/ptf-RpEv.js +15 -0
- package/dashboard/_app/immutable/entry/{app.D5uuC30L.js → app.BLkOA8b7.js} +2 -2
- package/dashboard/_app/immutable/entry/start.DWeeSVup.js +1 -0
- package/dashboard/_app/immutable/nodes/{0.CZy1mb1E.js → 0.C3a2CrM0.js} +1 -1
- package/dashboard/_app/immutable/nodes/{1.CaBl0no1.js → 1.Bv-vjpsu.js} +1 -1
- package/dashboard/_app/immutable/nodes/2.DA545kOI.js +1 -0
- package/dashboard/_app/version.json +1 -1
- package/dashboard/fonts/NectoMono-Regular.otf +0 -0
- package/dashboard/fonts/PixelifySans-Regular.woff2 +0 -0
- package/dashboard/fonts/Silkscreen-Bold.woff2 +0 -0
- package/dashboard/fonts/Silkscreen-Regular.woff2 +0 -0
- package/dashboard/fonts/Tiny5-Regular.woff2 +0 -0
- package/dashboard/fonts/VT323-Regular.woff2 +0 -0
- package/dashboard/index.html +11 -10
- package/dashboard/source-logos/highlevel-favicon.ico +0 -0
- package/dashboard/source-logos/highlevel-official-help-logo.png +0 -0
- package/dist/cli.js +2864 -1520
- package/dist/daemon.js +2369 -1122
- package/dist/mcp-stdio.js +60 -2
- package/dist/synthesis-render-worker.js +60 -2
- package/package.json +1 -1
- package/dashboard/_app/immutable/assets/0.fVSjfxN5.css +0 -1
- package/dashboard/_app/immutable/assets/2.DA3KZL1j.css +0 -1
- package/dashboard/_app/immutable/assets/HomeTab.Dl5L71iA.css +0 -1
- package/dashboard/_app/immutable/chunks/B9jE78TQ.js +0 -27
- package/dashboard/_app/immutable/chunks/BPP5Agft.js +0 -64
- package/dashboard/_app/immutable/chunks/Bhn2wIIa.js +0 -264
- package/dashboard/_app/immutable/chunks/BmDss2Lk.js +0 -1
- package/dashboard/_app/immutable/chunks/BnXfOKea.js +0 -1
- package/dashboard/_app/immutable/chunks/C6OK3hJs.js +0 -1
- package/dashboard/_app/immutable/chunks/CVA40-SC.js +0 -15
- package/dashboard/_app/immutable/chunks/CfqYG94h.js +0 -16
- package/dashboard/_app/immutable/chunks/CidL-rbF.js +0 -4
- package/dashboard/_app/immutable/chunks/CsmFKXf6.js +0 -4
- package/dashboard/_app/immutable/chunks/CtKZ1_IS.js +0 -32
- package/dashboard/_app/immutable/chunks/DIaDWJbV.js +0 -31
- package/dashboard/_app/immutable/chunks/DU0PzCMp.js +0 -2
- package/dashboard/_app/immutable/chunks/DuNSmCyM.js +0 -3
- package/dashboard/_app/immutable/entry/start.6jrH-2n0.js +0 -1
- package/dashboard/_app/immutable/nodes/2.D4vLhsbS.js +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{p as wn,o as v,e as Ie,Q as ne,v as n,j as l,F as hr,i as e,t as d,k as j,l as i,b as u,d as Sn,u as Q,D as fn,O as Y,N as Ar,m as b,P as Mn,g as cr,y as F,B as xt,f as be,w as gr,a9 as Bt,z as h,A as Mt,K as kt,c as pr,q as No,$ as Fo,h as Yt,ab as Jt,ac as Br,I as dr,ad as oa,U as un,ae as Po}from"./C__P7n-d.js";import{x as Co,A as gn,n as sa,y as Lo,z as ia,C as Do,D as la,F as Ao,H as Ro,h as Oo,i as Yo,J as pn,K as Xo,L as jo,N as Ho,t as Mr}from"./E8aDzCah.js";import{P as Go}from"./nI8gUPgM.js";import{T as zo}from"./B9q9Ge2R.js";import{C as Pr,a as Cr,b as Lr}from"./BiBX3uai.js";import{w as kr,s as Bo}from"./DcHgi7Cc.js";import{f as da,a as ca,b as ua,c as ga,e as pa,g as va}from"./qiR1fnXB.js";import{C as Dr}from"./Gx2iNUl2.js";const Wr=600,Wo=5e3,fa="signet-embeddings-graph-physics",Ir={centerForce:.28,repelForce:-260,linkForce:.12,linkDistance:92},xn={"claude-code":"#5eada4",clawdbot:"#a78bfa",daemon:"#22c55e","signet-daemon":"#22c55e",openclaw:"#facc15","openclaw-memory":"#facc15",opencode:"#60a5fa",user:"#ef4444",manual:"#f472b6",unknown:"#737373"},xa=3600*1e3,Ko=24*xa,ba=7*Ko,ma=900*1e3,ha=6*xa;function bn(y){const o=(f,S,p)=>Math.min(p,Math.max(S,f));return{centerForce:o(y.centerForce,0,1),repelForce:o(y.repelForce,-600,-10),linkForce:o(y.linkForce,.01,1),linkDistance:o(y.linkDistance,12,280)}}function kn(y){const o=Number.parseInt(y.slice(1),16);return[o>>16&255,o>>8&255,o&255]}function ya(y,o){const[f,S,p]=kn(xn[y??"unknown"]??xn.unknown);return`rgba(${f}, ${S}, ${p}, ${o})`}function _a(y){if(!y)return null;const o=new Date(y).getTime();return Number.isNaN(o)?null:o}function qo(y,o){const f=_a(y);if(f===null)return .22;const S=Math.max(0,o-f);return S<=ma?1:S<=ha?.76:S<=ba?.52:.22}function In(y){return y>=.95?"minutes":y>=.7?"hours":y>=.45?"week":"older"}function wa(y,o){const f=In(y);return f==="minutes"?`rgba(255, 176, 74, ${o})`:f==="hours"?`rgba(168, 34, 98, ${o})`:f==="week"?`rgba(76, 34, 122, ${o})`:`rgba(118, 111, 102, ${o})`}function Uo(y,o){if(o===null)return!1;const f=_a(y);return f===null?!1:f>o}function yr(y){const o=y.content??y.text??"";return o.length>160?`${o.slice(0,160)}...`:o}function Vo(y){const o=y.sourceType??"memory",f=y.sourceId??y.id;return`${o}:${f}`}function Jo(y,o,f,S,p,_){const U=f!==null&&!f.has(y),K=f!==null&&!f.has(o);if(U||K)return"rgba(120, 120, 120, 0.12)";if(_){const V=p.has(y),pe=p.has(o);return V&&pe?"rgba(220, 220, 220, 0.72)":"rgba(90, 90, 90, 0.08)"}return S.get(y)||S.get(o)?"rgba(200, 200, 200, 0.6)":"rgba(180, 180, 180, 0.4)"}const qr={person:"#eab308",project:"#06b6d4",system:"#a855f7",tool:"#10b981",concept:"#f43f5e",skill:"#f59e0b",task:"#64748b",unknown:"#737373"};function mn(y){return qr[y.toLowerCase()]??qr.unknown}function Kr(y,o){const f=mn(y),[S,p,_]=kn(f);return`rgba(${S}, ${p}, ${_}, ${o})`}function Qo(y,o){const f=.8+o*1.2;switch(y){case"uses":case"requires":return{color:"rgba(180, 180, 200, 0.35)",width:f,dash:[]};case"owned_by":return{color:"rgba(160, 160, 180, 0.25)",width:f+.4,dash:[]};case"blocks":return{color:"rgba(220, 100, 100, 0.4)",width:f,dash:[4,3]};case"informs":return{color:"rgba(100, 160, 220, 0.35)",width:f,dash:[2,3]};default:return{color:"rgba(150, 150, 160, 0.3)",width:f,dash:[]}}}function Zo(y){return 5+Math.min(y,1)*3}function $o(y){return 3+Math.min(y,1)}function es(y){const o=y.aspects.length+y.aspects.reduce((f,S)=>f+S.attributes.length*.5,0);return 10+Math.min(o,24)*.5}function ts(y){switch(y){case"entity":return-200;case"aspect":return-40;case"attribute":return-15;case"memory":return-5;default:return-5}}function Sa(y,o){const[f,S,p]=kn(y);return`rgba(${f}, ${S}, ${p}, ${o})`}const rs=[.85],ns=[.3,.5,.7,.75,.9],hn={};for(const[y,o]of Object.entries(xn)){const f={};for(const S of rs)f[S]=Sa(o,S);hn[y]=f}const yn={};for(const[y,o]of Object.entries(qr)){const f={};for(const S of ns)f[S]=Sa(o,S);yn[y]=f}function _n(y,o){const S=hn[y??"unknown"]?.[o]??hn.unknown?.[o];return S||ya(y,o)}function mr(y,o){const f=y.toLowerCase(),S=yn[f]?.[o]??yn.unknown?.[o];return S||Kr(y,o)}const as={minutes:{.9:"rgba(255, 176, 74, 0.9)",1:"rgba(255, 176, 74, 1)"},hours:{.9:"rgba(168, 34, 98, 0.9)",1:"rgba(168, 34, 98, 1)"},week:{.9:"rgba(76, 34, 122, 0.9)",1:"rgba(76, 34, 122, 1)"},older:{.9:"rgba(118, 111, 102, 0.9)",1:"rgba(118, 111, 102, 1)"}};function os(y,o){const f=In(y),S=as[f]?.[o];return S||wa(y,o)}function Ma(y){if(!y)return 0;const o=new Date(y).getTime();return Number.isNaN(o)?0:o}function ss(y,o){if(y===0)return .22;const f=Math.max(0,o-y);return f<=ma?1:f<=ha?.76:f<=ba?.52:.22}class is{fills;constructor(o,f,S,p,_,U,K,V,pe,ot){const ae=new Array(o.length);for(let Ae=0;Ae<o.length;Ae++){const Re=o[Ae];if(Re.nodeType&&Re.nodeType!=="memory"){ae[Ae]="";continue}ae[Ae]=this.compute(Re,f,S,p,_,U,K,V,pe,ot)}this.fills=ae}compute(o,f,S,p,_,U,K,V,pe,ot){const ae=o.data.id,Ae=p.get(ae)??null,Re=S!==null&&!S.has(ae),st=_.has(ae),Oe=K&&!U.has(ae);if(f===ae)return"rgba(255, 255, 255, 0.95)";if(Oe)return Re?"rgba(80, 80, 80, 0.08)":"rgba(95, 95, 95, 0.15)";if(Ae==="similar")return V==="none"?Re?"rgba(160, 170, 185, 0.3)":"rgba(198, 210, 228, 0.84)":Re?"rgba(129, 180, 255, 0.35)":"rgba(129, 180, 255, 0.9)";if(Ae==="dissimilar")return V==="none"?Re?"rgba(165, 150, 150, 0.28)":"rgba(208, 190, 190, 0.8)":Re?"rgba(255, 146, 146, 0.35)":"rgba(255, 146, 146, 0.9)";if(st)return Re?"rgba(220, 220, 220, 0.42)":"rgba(235, 235, 235, 0.95)";if(Re)return"rgba(120, 120, 120, 0.2)";if(V==="none")return"rgba(168, 168, 168, 0.82)";if(V==="newness"){const Je=o.createdMs??Ma(o.data.createdAt),Pt=ss(Je,pe);if(In(Pt)==="older"){const It=o.data.who??"unknown";if(ot!==null&&ot.has(It))return _n(It,.85)}return os(Pt,.9)}return _n(o.data.who,.85)}}const or=50;class ls{minX=-100;maxX=100;minY=-100;maxY=100;cells=new Map;cols=1;offsetX=0;offsetY=0;rebuild(o){if(this.cells.clear(),o.length===0){this.minX=-100,this.maxX=100,this.minY=-100,this.maxY=100,this.cols=1;return}let f=Number.POSITIVE_INFINITY,S=Number.NEGATIVE_INFINITY,p=Number.POSITIVE_INFINITY,_=Number.NEGATIVE_INFINITY;for(const K of o)K.x<f&&(f=K.x),K.x>S&&(S=K.x),K.y<p&&(p=K.y),K.y>_&&(_=K.y);const U=or;this.minX=f-U,this.maxX=S+U,this.minY=p-U,this.maxY=_+U,this.offsetX=this.minX,this.offsetY=this.minY,this.cols=Math.max(1,Math.ceil((this.maxX-this.minX)/or));for(const K of o){const V=Math.floor((K.x-this.offsetX)/or),ot=Math.floor((K.y-this.offsetY)/or)*this.cols+V,ae=this.cells.get(ot);ae?ae.push(K):this.cells.set(ot,[K])}}query(o,f,S){const p=S+or*.5,_=Math.floor((o-p-this.offsetX)/or),U=Math.floor((o+p-this.offsetX)/or),K=Math.floor((f-p-this.offsetY)/or),V=Math.floor((f+p-this.offsetY)/or),pe=Math.ceil((this.maxY-this.minY)/or),ot=[];for(let ae=Math.max(0,K);ae<=V&&ae<pe;ae++)for(let Ae=Math.max(0,_);Ae<=Math.min(this.cols-1,U);Ae++){const Re=this.cells.get(ae*this.cols+Ae);if(Re)for(const st of Re)ot.push(st)}return ot}}function vn(y,o,f,S){y.beginPath();for(let p=0;p<6;p++){const _=Math.PI/3*p-Math.PI/6,U=o+S*Math.cos(_),K=f+S*Math.sin(_);p===0?y.moveTo(U,K):y.lineTo(U,K)}y.closePath()}var ds=b('<canvas class="minimap svelte-reb91a" aria-label="Graph navigation minimap"></canvas>'),cs=b('<div class="canvas-wrapper svelte-reb91a"><canvas class="main-canvas svelte-reb91a"></canvas> <!></div>');function us(y,o){wn(o,!0);let f=v(null),S=0,p=0,_=.15,U=!1,K=!1,V=!1,pe=null,ot=0,ae=0,Ae=0,Re=0;const st=4;let Oe=null,Je=0,Pt=null,It=!1,tr=0,Te=!0,Qt=null,bt=!1,Wt=new Map;const mt=new ls;let Xt=!0,jt=null,ht=[],G=[],Z=[],ue=0,ze=0,dt=!1;const xe=160,Ye=120,Be=50;let Ze=v(null),Xe=!0,$e=0;const ct=4;let Ct=v(Ie({minX:-100,maxX:100,minY:-100,maxY:100}));const me=Q(()=>o.nodes.length>Be);let Ue=!1;function ve(){if(Te=!0,Xe=!0,!Je){const s=e(f)?.getContext("2d");s&&(Je=requestAnimationFrame(I=>$(s,I)))}}const ut=12e3,ie=8e3,Ee=5e3;function ye(){S=0,p=0,_=.15,bt=!1,je=!1}let je=!1;function it(s){const I=Wt.get(s);I&&(S=I.x,p=I.y,_=Math.max(_,1.6),bt=!0)}function Tt(s,I,B=o.graphPhysics){Oe?.stop(),je=!1;const de=bn(B);Oe=da(s).force("link",ca(I).distance(de.linkDistance).strength(de.linkForce)).force("charge",ua().strength(de.repelForce)).force("x",ga(0).strength(de.centerForce)).force("y",pa(0).strength(de.centerForce)).force("collide",va().radius(H=>H.radius+2)).alphaDecay(.04).on("tick",()=>{Xt=!0,jt=null,ve()}).on("end",()=>{bt||gt()})}function yt(s,I){Oe?.stop(),je=!1;const B=ca(I).distance(H=>{const _e=H.source,ge=H.target;return H.edgeType==="dependency"?120:_e.nodeType==="entity"&&ge.nodeType==="aspect"?50:_e.nodeType==="aspect"&&ge.nodeType==="attribute"?30:_e.nodeType==="attribute"&&ge.nodeType==="memory"?20:50}).strength(H=>{if(H.edgeType==="dependency")return .05;const _e=H.source,ge=H.target;return _e.nodeType==="entity"&&ge.nodeType==="aspect"?.3:_e.nodeType==="aspect"&&ge.nodeType==="attribute"?.4:_e.nodeType==="attribute"&&ge.nodeType==="memory"?.5:.3}),de=ua().strength(H=>ts(H.nodeType));Oe=da(s).force("link",B).force("charge",de).force("x",ga(0).strength(.03)).force("y",pa(0).strength(.03)).force("collide",va().radius(H=>H.radius+2)).alphaDecay(.04).on("tick",()=>{Xt=!0,jt=null,ve()}).on("end",()=>{bt||gt()})}function Lt(s){Oe&&(Tt(o.nodes,o.edges,s),ve())}function fe(){Oe?.stop(),Oe=null}function He(s=!1){lt(),!s&&!bt&&o.nodes.length>0&>(),It||(window.addEventListener("resize",lt),It=!0),_t(),Te=!0;const I=e(f)?.getContext("2d");I&&(cancelAnimationFrame(Je),$(I,0))}function We(){Te=!0;const s=e(f)?.getContext("2d");s&&(cancelAnimationFrame(Je),$(s,0))}function Dt(){cancelAnimationFrame(Je)}function lt(){if(!e(f))return;let s=e(f).parentElement;for(;s&&getComputedStyle(s).display==="contents";)s=s.parentElement;const I=s?.getBoundingClientRect();!I||I.width===0||(e(f).width=I.width,e(f).height=I.height,!bt&&je&>(),ve())}function gt(){if(!e(f))return;if(o.nodes.length===0){S=0,p=0,_=.15;return}const s=Ht(),I=Math.max(s.maxX-s.minX,1),B=Math.max(s.maxY-s.minY,1),de=Math.max(e(f).width,1),H=Math.max(e(f).height,1),_e=Math.min(de/I,H/B)*.92;S=(s.minX+s.maxX)/2,p=(s.minY+s.maxY)/2,_=Math.max(.08,_e),je=!0}function et(s,I){if(!e(f))return[0,0];const B=e(f).getBoundingClientRect(),de=B.width/2,H=B.height/2;return[(s-B.left-de)/_+S,(I-B.top-H)/_+p]}function tt(s,I){Xt&&(mt.rebuild(o.nodes),Xt=!1);const B=mt.query(s,I,28),de=["entity","aspect","attribute","memory",void 0];for(const H of de)for(let _e=B.length-1;_e>=0;_e--){const ge=B[_e];if(ge.nodeType!==H)continue;const se=ge.x-s,Ke=ge.y-I,P=ge.radius+(H==="entity"?6:H==="aspect"?5:4);if(se*se+Ke*Ke<=P*P)return ge}return null}function Ht(){return o.nodes.length===0?{minX:-100,maxX:100,minY:-100,maxY:100}:Xt?(mt.rebuild(o.nodes),Xt=!1,{minX:mt.minX,maxX:mt.maxX,minY:mt.minY,maxY:mt.maxY}):{minX:mt.minX,maxX:mt.maxX,minY:mt.minY,maxY:mt.maxY}}ne(()=>{o.nodes.length>0&&(Wt=new Map(o.nodes.map(s=>[s.data.id,s])),Xt=!0,jt=null,n(Ct,Ht(),!0),Xe=!0)});function $t(){if(!e(Ze)||!e(f))return;const s=e(Ze).getContext("2d");if(!s)return;const{minX:I,maxX:B,minY:de,maxY:H}=e(Ct),_e=B-I,ge=H-de;s.fillStyle="#050505",s.fillRect(0,0,xe,Ye);const se=(xe-8)/_e,Ke=(Ye-8)/ge,P=Math.min(se,Ke),qe=(xe-_e*P)/2,x=(Ye-ge*P)/2;s.fillStyle="rgba(140, 140, 150, 0.5)";for(const sr of o.nodes){const Rr=qe+(sr.x-I)*P,Or=x+(sr.y-de)*P;s.fillRect(Rr-.5,Or-.5,1,1)}const q=e(f).width/_,W=e(f).height/_,C=S-q/2,O=p-W/2;let X=qe+(C-I)*P,we=x+(O-de)*P,Nt=q*P,Ut=W*P;const vt=2;X=Math.max(vt,Math.min(xe-vt-1,X)),we=Math.max(vt,Math.min(Ye-vt-1,we)),Nt=Math.max(2,Math.min(xe-X-vt,Nt)),Ut=Math.max(2,Math.min(Ye-we-vt,Ut)),s.strokeStyle="rgba(255, 255, 255, 0.75)",s.lineWidth=1.5,s.strokeRect(X,we,Nt,Ut),s.fillStyle="rgba(255, 255, 255, 0.03)",s.fillRect(X,we,Nt,Ut)}function E(s){if(!e(Ze))return null;const I=e(Ze).getBoundingClientRect(),B=s.clientX-I.left,de=s.clientY-I.top,{minX:H,maxX:_e,minY:ge,maxY:se}=e(Ct),Ke=_e-H,P=se-ge,qe=(xe-8)/Ke,x=(Ye-8)/P,q=Math.min(qe,x),W=(xe-Ke*q)/2,C=(Ye-P*q)/2,O=H+(B-W)/q,X=ge+(de-C)/q;return[O,X]}function oe(s){s.preventDefault(),s.stopPropagation(),Ue=!0,Kt(s)}function Ge(s){Ue&&Kt(s)}function Kt(s){const I=E(s);if(!I)return;const[B,de]=I;if(S=B,p=de,Xe=!0,Te=!0,!Je){const H=e(f)?.getContext("2d");H&&(Je=requestAnimationFrame(_e=>$(H,_e)))}}function Et(){Ue=!1}function $(s,I){if(!e(f))return;const B=Oe?.alpha?.()??0;if(!(B>.001)&&!Te){Je=0;return}Te=!1;const H=o.edges.length>14e3||o.nodes.length>2200,_e=B>0&&B<.05,ge=H||_e?33:16;if(I>0&&I-tr<ge){Je=requestAnimationFrame(x=>$(s,x));return}if(tr=I,dt){dt=!1;const[x,q]=et(ue,ze),W=tt(x,q),C=W?.data.id??null;C!==Qt&&(Qt=C,o.onhovernode(W?.data??null)),e(f)&&(e(f).style.cursor=W?"pointer":"grab")}const se=e(f).width,Ke=e(f).height;s.fillStyle="#050505",s.fillRect(0,0,se,Ke),s.save(),s.translate(se/2,Ke/2),s.scale(_,_),s.translate(-S,-p);const P=o.graphSelected?.id??null;jt||(jt=new is(o.nodes,P,o.embeddingFilterIds,o.relationLookup,o.pinnedIds,o.lensIds,o.clusterLensMode,o.colorMode,o.nowMs,o.sourceFocusSources));const qe=_>=1.4?ut:_>=.8?ie:Ee;if(ht.length>0){const x=Math.max(1,Math.ceil(ht.length/qe));s.beginPath();for(let q=0;q<ht.length;q+=x){const W=ht[q],C=W.source,O=W.target;typeof C=="number"||typeof O=="number"||!C||!O||(s.moveTo(C.x,C.y),s.lineTo(O.x,O.y))}s.strokeStyle="rgba(255, 255, 255, 0.03)",s.lineWidth=.4/_,s.stroke()}if(G.length>0){const x=Math.max(1,Math.ceil(G.length/qe)),q=new Map;for(let W=0;W<G.length;W+=x){const C=G[W],O=C.source,X=C.target;if(typeof O=="number"||typeof X=="number"||!O||!X)continue;const we=Jo(O.data.id,X.data.id,o.embeddingFilterIds,o.relationLookup,o.lensIds,o.clusterLensMode),Nt=q.get(we);Nt?Nt.push([O.x,O.y,X.x,X.y]):q.set(we,[[O.x,O.y,X.x,X.y]])}s.lineWidth=.8/_;for(const[W,C]of q){s.beginPath();for(const[O,X,we,Nt]of C)s.moveTo(O,X),s.lineTo(we,Nt);s.strokeStyle=W,s.stroke()}}if(Z.length>0){const x=Math.max(1,Math.floor(qe/4)),q=Math.max(1,Math.ceil(Z.length/x));for(let W=0;W<Z.length;W+=q){const C=Z[W],O=C.source,X=C.target;if(typeof O=="number"||typeof X=="number"||!O||!X)continue;const we=Qo(C.dependencyType??"",C.strength??.5);s.beginPath(),we.dash.length>0&&s.setLineDash(we.dash.map(Nt=>Nt/_)),s.moveTo(O.x,O.y),s.lineTo(X.x,X.y),s.strokeStyle=we.color,s.lineWidth=we.width/_,s.stroke(),we.dash.length>0&&s.setLineDash([])}}{const x=new Map,q=[],W=[];let C=null;for(let O=0;O<o.nodes.length;O++){const X=o.nodes[O];if(X.nodeType!=="memory"&&X.nodeType!==void 0)continue;const we=jt.fills[O],Nt=x.get(we);Nt?Nt.push(X):x.set(we,[X]),o.colorMode!=="none"&&o.showNewSinceLastSeen&&Uo(X.data.createdAt,o.lastSeenMs)&&q.push(X),o.pinnedIds.has(X.data.id)&&W.push(X),P===X.data.id&&(C=X)}for(const[O,X]of x){s.beginPath();for(const we of X)s.moveTo(we.x+we.radius,we.y),s.arc(we.x,we.y,we.radius,0,Math.PI*2);s.fillStyle=O,s.fill()}if(q.length>0){s.beginPath();for(const O of q)s.moveTo(O.x+O.radius+2.2,O.y),s.arc(O.x,O.y,O.radius+2.2,0,Math.PI*2);s.strokeStyle="rgba(246, 194, 107, 0.85)",s.lineWidth=1.1/_,s.stroke()}if(W.length>0){s.strokeStyle="rgba(240, 240, 240, 0.8)",s.lineWidth=1.2/_;for(const O of W){const X=(O.radius+2.5)*2;s.strokeRect(O.x-X/2,O.y-X/2,X,X)}}C&&(s.beginPath(),s.arc(C.x,C.y,C.radius+3,0,Math.PI*2),s.strokeStyle="rgba(255, 255, 255, 0.95)",s.lineWidth=1.5/_,s.stroke())}for(const x of o.nodes){if(x.nodeType!=="attribute")continue;const q=x.data.who??"unknown";s.beginPath(),s.arc(x.x,x.y,x.radius,0,Math.PI*2),s.fillStyle=mr(q,.3),s.fill(),s.strokeStyle=mr(q,.5),s.lineWidth=.6/_,s.stroke(),P===x.data.id&&(s.beginPath(),s.arc(x.x,x.y,x.radius+3,0,Math.PI*2),s.strokeStyle="rgba(255, 255, 255, 0.95)",s.lineWidth=1.5/_,s.stroke())}for(const x of o.nodes){if(x.nodeType!=="aspect")continue;const q=x.data.who??"unknown";if(s.beginPath(),s.arc(x.x,x.y,x.radius,0,Math.PI*2),s.fillStyle=mr(q,.5),s.fill(),s.strokeStyle=mr(q,.75),s.lineWidth=.8/_,s.stroke(),P===x.data.id&&(s.beginPath(),s.arc(x.x,x.y,x.radius+3,0,Math.PI*2),s.strokeStyle="rgba(255, 255, 255, 0.95)",s.lineWidth=1.5/_,s.stroke()),o.graphHovered&&x.data.id===o.graphHovered.id||P===x.data.id){const W=Math.max(7,9/_);s.font=`${W}px var(--font-mono)`,s.fillStyle="rgba(210, 210, 210, 0.85)",s.textAlign="center",s.fillText(x.aspectData?.name??"",x.x,x.y+x.radius+W+1/_),s.textAlign="start"}}for(const x of o.nodes){if(x.nodeType!=="entity")continue;const q=x.entityData?.entityType??"unknown";s.save(),s.shadowColor=mr(q,.5),s.shadowBlur=12/_,vn(s,x.x,x.y,x.radius),s.fillStyle=mr(q,.7),s.fill(),s.restore(),vn(s,x.x,x.y,x.radius),s.strokeStyle=mr(q,.9),s.lineWidth=1.2/_,s.stroke(),P===x.data.id&&(vn(s,x.x,x.y,x.radius+4),s.strokeStyle="rgba(255, 255, 255, 0.95)",s.lineWidth=1.5/_,s.stroke());const W=Math.max(8,10/_);s.font=`bold ${W}px var(--font-mono)`,s.fillStyle="rgba(230, 230, 230, 0.9)",s.textAlign="center",s.fillText(x.entityData?.name??"",x.x,x.y+x.radius+W+2/_),s.textAlign="start"}if(o.graphHovered){const x=Wt.get(o.graphHovered.id);if(x&&x.nodeType!=="entity"&&x.nodeType!=="aspect"){const q=x.nodeType==="attribute"?x.attributeData?.content??yr(o.graphHovered):yr(o.graphHovered),W=9/_;s.font=`${W}px var(--font-mono)`,s.fillStyle="rgba(220, 220, 220, 0.9)",s.textAlign="left";const C=80;s.fillText(q.length>C?`${q.slice(0,C)}...`:q,x.x+x.radius+5/_,x.y+W*.35),s.textAlign="start"}}s.restore(),e(me)&&($e++,(Xe||$e>=ct)&&($t(),Xe=!1,$e=0)),Je=requestAnimationFrame(x=>$(s,x))}function _t(){if(!e(f))return;Pt&&(Pt(),Pt=null);const s=e(f),I=se=>{const[Ke,P]=et(se.clientX,se.clientY),qe=tt(Ke,P);V=!1,qe?(K=!0,pe=qe,ot=se.clientX,ae=se.clientY):(U=!0,ot=se.clientX,ae=se.clientY,Ae=S,Re=p)},B=se=>{if(K&&pe){const Ke=se.clientX-ot,P=se.clientY-ae;if(!V&&Ke*Ke+P*P<st*st)return;V||(V=!0,bt=!0,pe.fx=pe.x,pe.fy=pe.y,Oe?.alphaTarget(.3).restart());const[qe,x]=et(se.clientX,se.clientY);pe.fx=qe,pe.fy=x,ve();return}if(U){bt=!0,S=Ae-(se.clientX-ot)/_,p=Re-(se.clientY-ae)/_,ve();return}ue=se.clientX,ze=se.clientY,dt=!0,ve()},de=()=>{if(K&&pe){V&&(pe.fx=null,pe.fy=null,Oe?.alphaTarget(0)),pe=null,K=!1,ve();return}U=!1},H=()=>{U=!1,Qt!==null&&(Qt=null,o.onhovernode(null))},_e=se=>{if(V)return;const[Ke,P]=et(se.clientX,se.clientY),qe=tt(Ke,P);o.onselectnode(qe?.data??null)},ge=se=>{se.preventDefault(),bt=!0;const Ke=se.deltaY>0?.9:1.1,P=Math.max(.1,Math.min(5,_*Ke)),qe=s.getBoundingClientRect(),x=qe.width/2,q=qe.height/2,W=se.clientX-qe.left-x,C=se.clientY-qe.top-q,O=W/_+S,X=C/_+p;_=P,S=O-W/_,p=X-C/_,ve()};s.addEventListener("pointerdown",I),s.addEventListener("pointermove",B),s.addEventListener("pointerup",de),s.addEventListener("pointerleave",H),s.addEventListener("click",_e),s.addEventListener("wheel",ge,{passive:!1}),Pt=()=>{s.removeEventListener("pointerdown",I),s.removeEventListener("pointermove",B),s.removeEventListener("pointerup",de),s.removeEventListener("pointerleave",H),s.removeEventListener("click",_e),s.removeEventListener("wheel",ge)}}ne(()=>{o.graphSelected,o.graphHovered,o.embeddingFilterIds,o.relationLookup,o.pinnedIds,o.lensIds,o.clusterLensMode,jt=null,ve()}),ne(()=>{const s=o.edges,I=[],B=[],de=[];for(const H of s)H.edgeType==="hierarchy"?I.push(H):H.edgeType==="dependency"?de.push(H):B.push(H);ht=I,G=B,Z=de}),ne(()=>()=>{Oe?.stop(),Oe=null,Pt&&(Pt(),Pt=null),It&&(window.removeEventListener("resize",lt),It=!1),cancelAnimationFrame(Je)});var rr={resetCamera:ye,focusNode:it,startSimulation:Tt,startKnowledgeGraphSimulation:yt,updatePhysics:Lt,stopSimulation:fe,startRendering:He,resumeRendering:We,stopRendering:Dt,requestRedraw:ve},nr=cs(),ar=l(nr);hr(ar,s=>n(f,s),()=>e(f));var qt=d(ar,2);{var pt=s=>{var I=ds();fn(I,"width",xe),fn(I,"height",Ye),hr(I,B=>n(Ze,B),()=>e(Ze)),Y("mousedown",I,oe),Y("mousemove",I,Ge),Y("mouseup",I,Et),Ar("mouseleave",I,Et),u(s,I)};j(qt,s=>{e(me)&&s(pt)})}return i(nr),u(y,nr),Sn(rr)}Mn(["mousedown","mousemove","mouseup"]);var gs=b('<button class="text-[11px] text-[var(--sig-accent)] bg-transparent border-none cursor-pointer p-0 hover:underline">Clear</button>'),ps=b('<span class="font-mono text-[10px] text-[var(--sig-text-bright)] border border-[var(--sig-text-bright)] px-[7px] py-[2px] bg-[rgba(255,255,255,0.08)]">pinned</span>'),vs=b('<button class="grid grid-cols-[auto_1fr] gap-2 items-start w-full text-left border border-[var(--sig-border-strong)] bg-[rgba(255,255,255,0.03)] text-[var(--sig-text)] px-2 py-[7px] cursor-pointer hover:border-[var(--sig-text-muted)] hover:bg-[var(--sig-surface-raised)]"><span class="font-mono text-[10px] text-[var(--sig-accent)] whitespace-nowrap"> </span> <span class="text-[12px] leading-[1.45] text-[var(--sig-text-bright)] line-clamp-2"> </span></button>'),fs=b('<div class="font-mono text-[10px] text-[var(--sig-text-muted)] tracking-[0.04em] uppercase"> </div> <div class="flex flex-col gap-2"></div>',1),xs=b('<button class="grid grid-cols-[auto_1fr] gap-2 items-start w-full text-left border border-[var(--sig-border-strong)] bg-[rgba(255,255,255,0.03)] text-[var(--sig-text)] px-2 py-[7px] cursor-pointer hover:border-[var(--sig-text-muted)] hover:bg-[var(--sig-surface-raised)]"><span class="font-mono text-[10px] text-[var(--sig-accent)] whitespace-nowrap"> </span> <span class="text-[12px] leading-[1.45] text-[var(--sig-text-bright)] line-clamp-2"> </span></button>'),bs=b('<div class="font-mono text-[10px] text-[var(--sig-text-muted)] tracking-[0.04em] uppercase">Dependencies</div> <div class="flex flex-col gap-2"></div>',1),ms=b('<div class="flex flex-wrap gap-[6px]"><span class="font-mono text-[10px] border px-[7px] py-[2px]"> </span> <!></div> <div class="font-mono text-[14px] text-[var(--sig-text-bright)] font-bold"> </div> <div class="grid grid-cols-3 gap-1 text-[10px] font-mono text-[var(--sig-text-muted)]"><div class="border border-[var(--sig-border-strong)] px-2 py-1 text-center"><div class="text-[var(--sig-text-bright)]"> </div> <div>aspects</div></div> <div class="border border-[var(--sig-border-strong)] px-2 py-1 text-center"><div class="text-[var(--sig-text-bright)]"> </div> <div>attributes</div></div> <div class="border border-[var(--sig-border-strong)] px-2 py-1 text-center"><div class="text-[var(--sig-text-bright)]"> </div> <div>deps</div></div></div> <div class="flex gap-2"><button class="px-3 py-1 font-mono text-[10px] font-medium tracking-[0.1em] uppercase bg-transparent border border-[var(--sig-text-bright)] text-[var(--sig-text-bright)] cursor-pointer enabled:hover:bg-[var(--sig-text-bright)] enabled:hover:text-[var(--sig-bg)]">Center</button></div> <!> <!>',1),hs=b('<button class="w-full text-left border border-[var(--sig-border-strong)] bg-[rgba(255,255,255,0.03)] text-[var(--sig-text)] px-2 py-[7px] cursor-pointer hover:border-[var(--sig-text-muted)] hover:bg-[var(--sig-surface-raised)]"><span class="font-mono text-[10px] text-[var(--sig-text-muted)] uppercase">Parent entity</span> <div class="text-[12px] text-[var(--sig-text-bright)]"> </div></button>'),ys=b('<button class="grid grid-cols-[auto_1fr] gap-2 items-start w-full text-left border border-[var(--sig-border-strong)] bg-[rgba(255,255,255,0.03)] text-[var(--sig-text)] px-2 py-[7px] cursor-pointer hover:border-[var(--sig-text-muted)] hover:bg-[var(--sig-surface-raised)]"><span class="font-mono text-[10px] text-[var(--sig-accent)] whitespace-nowrap"> </span> <span class="text-[12px] leading-[1.45] text-[var(--sig-text-bright)] line-clamp-2"> </span></button>'),_s=b('<div class="font-mono text-[10px] text-[var(--sig-text-muted)] tracking-[0.04em] uppercase"> </div> <div class="flex flex-col gap-2"></div>',1),ws=b('<div class="flex flex-wrap gap-[6px]"><span class="font-mono text-[10px] border border-[var(--sig-border-strong)] px-[7px] py-[2px] bg-[rgba(255,255,255,0.04)] text-[var(--sig-text)]">aspect</span> <span class="font-mono text-[10px] border border-[var(--sig-border-strong)] px-[7px] py-[2px] bg-[rgba(255,255,255,0.04)] text-[var(--sig-text)]"> </span></div> <div class="font-mono text-[14px] text-[var(--sig-text-bright)] font-bold"> </div> <!> <div class="flex gap-2"><button class="px-3 py-1 font-mono text-[10px] font-medium tracking-[0.1em] uppercase bg-transparent border border-[var(--sig-text-bright)] text-[var(--sig-text-bright)] cursor-pointer enabled:hover:bg-[var(--sig-text-bright)] enabled:hover:text-[var(--sig-bg)]">Center</button></div> <!>',1),Ss=b('<button class="w-full text-left border border-[var(--sig-border-strong)] bg-[rgba(255,255,255,0.03)] text-[var(--sig-text)] px-2 py-[7px] cursor-pointer hover:border-[var(--sig-text-muted)] hover:bg-[var(--sig-surface-raised)]"><span class="font-mono text-[10px] text-[var(--sig-text-muted)] uppercase">Parent entity</span> <div class="text-[12px] text-[var(--sig-text-bright)]"> </div></button>'),Ms=b('<button class="w-full text-left border border-[var(--sig-border-strong)] bg-[rgba(255,255,255,0.03)] text-[var(--sig-text)] px-2 py-[7px] cursor-pointer hover:border-[var(--sig-text-muted)] hover:bg-[var(--sig-surface-raised)]"><span class="font-mono text-[10px] text-[var(--sig-text-muted)] uppercase">Parent aspect</span> <div class="text-[12px] text-[var(--sig-text-bright)]"> </div></button>'),ks=b('<div class="font-mono text-[10px] text-[var(--sig-text-muted)] tracking-[0.04em] uppercase">Linked memory</div> <button class="grid grid-cols-[auto_1fr] gap-2 items-start w-full text-left border border-[var(--sig-border-strong)] bg-[rgba(255,255,255,0.03)] text-[var(--sig-text)] px-2 py-[7px] cursor-pointer hover:border-[var(--sig-text-muted)] hover:bg-[var(--sig-surface-raised)]"><span class="font-mono text-[10px] text-[var(--sig-accent)] whitespace-nowrap"> </span> <span class="text-[12px] leading-[1.45] text-[var(--sig-text-bright)] line-clamp-2"> </span></button>',1),Is=b('<div class="flex flex-wrap gap-[6px]"><span class="font-mono text-[10px] border border-[var(--sig-border-strong)] px-[7px] py-[2px] bg-[rgba(255,255,255,0.04)] text-[var(--sig-text)]"> </span> <span class="font-mono text-[10px] border border-[var(--sig-border-strong)] px-[7px] py-[2px] bg-[rgba(255,255,255,0.04)] text-[var(--sig-text)]"> </span></div> <p class="m-0 text-[13px] leading-[1.55] text-[var(--sig-text-bright)] whitespace-pre-wrap break-words"> </p> <!> <!> <div class="flex gap-2"><button class="px-3 py-1 font-mono text-[10px] font-medium tracking-[0.1em] uppercase bg-transparent border border-[var(--sig-text-bright)] text-[var(--sig-text-bright)] cursor-pointer enabled:hover:bg-[var(--sig-text-bright)] enabled:hover:text-[var(--sig-bg)]">Center</button></div> <!>',1),Ts=b('<span class="font-mono text-[10px] text-[var(--sig-text)] border border-[var(--sig-border-strong)] px-[7px] py-[2px] bg-[rgba(255,255,255,0.04)]"> </span>'),Es=b('<span class="font-mono text-[10px] text-[var(--sig-text-bright)] border border-[var(--sig-text-bright)] px-[7px] py-[2px] bg-[rgba(255,255,255,0.08)]">pinned</span>'),Ns=b('<span class="font-mono text-[10px] text-[var(--sig-text)] border border-[var(--sig-border-strong)] px-[7px] py-[2px] bg-[rgba(255,255,255,0.04)]"> </span>'),Fs=b('<div class="flex flex-wrap gap-[6px]"></div>'),Ps=b('<div class="border border-dashed border-[var(--sig-danger)] p-2 text-[11px] text-[var(--sig-danger)] leading-[1.5]"> </div>'),Cs=b('<div class="border border-dashed border-[var(--sig-border-strong)] p-3 text-[12px] text-[var(--sig-text-muted)] leading-[1.5]">No related memories in this view.</div>'),Ls=b('<button class="grid grid-cols-[auto_1fr] gap-2 items-start w-full text-left border border-[var(--sig-border-strong)] bg-[rgba(255,255,255,0.03)] text-[var(--sig-text)] px-2 py-[7px] cursor-pointer hover:border-[var(--sig-text-muted)] hover:bg-[var(--sig-surface-raised)]"><span class="font-mono text-[10px] text-[var(--sig-accent)] whitespace-nowrap"> </span> <span class="text-[12px] leading-[1.45] text-[var(--sig-text-bright)] line-clamp-2"> </span></button>'),Ds=b('<div class="border border-dashed border-[var(--sig-border-strong)] p-3 text-[12px] text-[var(--sig-text-muted)] leading-[1.5]">Finding similar memories...</div>'),As=b('<button class="grid grid-cols-[auto_1fr] gap-2 items-start w-full text-left border border-[var(--sig-border-strong)] bg-[rgba(255,255,255,0.03)] text-[var(--sig-text)] px-2 py-[7px] cursor-pointer hover:border-[var(--sig-text-muted)] hover:bg-[var(--sig-surface-raised)]"><span class="font-mono text-[10px] text-[var(--sig-accent)] whitespace-nowrap">global</span> <span class="text-[12px] leading-[1.45] text-[var(--sig-text-bright)] line-clamp-2"> </span></button>'),Rs=b('<div class="font-mono text-[10px] text-[var(--sig-text-muted)] tracking-[0.04em] uppercase">Global similar</div> <div class="flex flex-col gap-2"></div>',1),Os=b('<div class="flex flex-wrap gap-[6px]"><span class="font-mono text-[10px] text-[var(--sig-text)] border border-[var(--sig-border-strong)] px-[7px] py-[2px] bg-[rgba(255,255,255,0.04)]"> </span> <!> <span class="font-mono text-[10px] text-[var(--sig-text)] border border-[var(--sig-border-strong)] px-[7px] py-[2px] bg-[rgba(255,255,255,0.04)]"> </span> <!></div> <div class="font-mono text-[10px] text-[var(--sig-accent)] border border-[var(--sig-border-strong)] px-[7px] py-[5px] bg-transparent break-all"> </div> <p class="m-0 text-[13px] leading-[1.55] text-[var(--sig-text-bright)] whitespace-pre-wrap break-words"> </p> <!> <div class="flex gap-2"><button class="px-3 py-1 font-mono text-[10px] font-medium tracking-[0.1em] uppercase bg-transparent border border-[var(--sig-text-bright)] text-[var(--sig-text-bright)] cursor-pointer enabled:hover:bg-[var(--sig-text-bright)] enabled:hover:text-[var(--sig-bg)] disabled:opacity-40 disabled:cursor-not-allowed">Center</button> <button class="px-3 py-1 font-mono text-[10px] font-medium tracking-[0.1em] uppercase bg-transparent border border-[var(--sig-text-bright)] text-[var(--sig-text-bright)] cursor-pointer enabled:hover:bg-[var(--sig-text-bright)] enabled:hover:text-[var(--sig-bg)] disabled:opacity-40 disabled:cursor-not-allowed"> </button> <button class="px-3 py-1 font-mono text-[10px] font-medium tracking-[0.1em] uppercase bg-transparent border border-[var(--sig-text-bright)] text-[var(--sig-text-bright)] cursor-pointer enabled:hover:bg-[var(--sig-text-bright)] enabled:hover:text-[var(--sig-bg)] disabled:opacity-40 disabled:cursor-not-allowed"> </button></div> <!> <div class="self-start flex border border-[var(--sig-border-strong)] overflow-hidden"><button>Similar</button> <button>Dissimilar</button></div> <div class="flex flex-col gap-2"><!></div> <!>',1),Ys=b('<button class="grid grid-cols-[auto_1fr] gap-2 items-start w-full text-left border border-[var(--sig-border-strong)] bg-[rgba(255,255,255,0.03)] text-[var(--sig-text)] px-2 py-[7px] cursor-pointer hover:border-[var(--sig-text-muted)] hover:bg-[var(--sig-surface-raised)]"><span class="font-mono text-[10px] text-[var(--sig-accent)] whitespace-nowrap"> </span> <span class="text-[12px] leading-[1.45] text-[var(--sig-text-bright)] line-clamp-2"> </span></button>'),Xs=b('<div class="font-mono text-[10px] text-[var(--sig-text-muted)] tracking-[0.04em] uppercase">Search matches</div> <div class="flex flex-col gap-2"></div>',1),js=b('<div class="border border-dashed border-[var(--sig-border-strong)] p-3 text-[12px] text-[var(--sig-text-muted)] leading-[1.5]">Select a node to inspect content, source metadata, and similar or dissimilar neighbors.</div> <!>',1),Hs=b('<aside><div class="flex items-center justify-between gap-2"><span class="font-mono text-[11px] tracking-[0.06em] uppercase text-[var(--sig-text)]">Inspector</span> <!></div> <!></aside>');function Gs(y,o){wn(o,!0);let f=cr(o,"containerClass",3,""),S=cr(o,"selectedNodeType",3,void 0),p=cr(o,"selectedEntityData",3,null),_=cr(o,"selectedAspectData",3,null),U=cr(o,"selectedAttributeData",3,null),K=cr(o,"parentEntityId",3,null),V=cr(o,"parentAspectId",3,null),pe=cr(o,"constellationOverlay",3,null);const ot=Q(()=>S()==="entity"&&p()!==null),ae=Q(()=>S()==="aspect"&&_()!==null),Ae=Q(()=>S()==="attribute"&&U()!==null),Re=Q(()=>{if(!p()||!pe())return[];const G=p().id;return pe().dependencies.filter(Z=>Z.sourceEntityId===G||Z.targetEntityId===G)}),st=Q(()=>!K()||!pe()?null:pe().entities.find(G=>G.id===K())??null),Oe=Q(()=>!V()||!e(st)?null:e(st).aspects.find(G=>G.id===V())??null);function Je(G){return pe()?pe().entities.find(ue=>ue.id===G)?.name??G:G}function Pt(G){return o.embeddingById.get(G)??null}var It=Hs(),tr=l(It),Te=d(l(tr),2);{var Qt=G=>{var Z=gs();Y("click",Z,function(...ue){o.onclearselection?.apply(this,ue)}),u(G,Z)};j(Te,G=>{o.graphSelected&&G(Qt)})}i(tr);var bt=d(tr,2);{var Wt=G=>{var Z=ms(),ue=be(Z),ze=l(ue),dt=l(ze,!0);i(ze);var xe=d(ze,2);{var Ye=fe=>{var He=ps();u(fe,He)};j(xe,fe=>{p().pinned&&fe(Ye)})}i(ue);var Be=d(ue,2),Ze=l(Be,!0);i(Be);var Xe=d(Be,2),$e=l(Xe),ct=l($e),Ct=l(ct,!0);i(ct),gr(2),i($e);var me=d($e,2),Ue=l(me),ve=l(Ue,!0);i(Ue),gr(2),i(me);var ut=d(me,2),ie=l(ut),Ee=l(ie,!0);i(ie),gr(2),i(ut),i(Xe);var ye=d(Xe,2),je=l(ye);i(ye);var it=d(ye,2);{var Tt=fe=>{var He=fs(),We=be(He),Dt=l(We);i(We);var lt=d(We,2);Mt(lt,21,()=>p().aspects,kt,(gt,et)=>{var tt=vs(),Ht=l(tt),$t=l(Ht);i(Ht);var E=d(Ht,2),oe=l(E,!0);i(E),i(tt),F(Ge=>{h($t,`w${Ge??""}%`),h(oe,e(et).name)},[()=>Math.round(e(et).weight*100)]),Y("click",tt,()=>o.onselectembedding(`aspect:${e(et).id}`)),u(gt,tt)}),i(lt),F(()=>h(Dt,`Aspects (${p().aspects.length??""})`)),u(fe,He)};j(it,fe=>{p().aspects.length>0&&fe(Tt)})}var yt=d(it,2);{var Lt=fe=>{var He=bs(),We=d(be(He),2);Mt(We,21,()=>e(Re),kt,(Dt,lt)=>{const gt=Q(()=>e(lt).sourceEntityId===p().id),et=Q(()=>e(gt)?e(lt).targetEntityId:e(lt).sourceEntityId);var tt=xs(),Ht=l(tt),$t=l(Ht);i(Ht);var E=d(Ht,2),oe=l(E,!0);i(E),i(tt),F(Ge=>{h($t,`${e(gt)?"->":"<-"} ${e(lt).dependencyType??""}`),h(oe,Ge)},[()=>Je(e(et))]),Y("click",tt,()=>o.onselectembedding(`entity:${e(et)}`)),u(Dt,tt)}),i(We),u(fe,He)};j(yt,fe=>{e(Re).length>0&&fe(Lt)})}F((fe,He)=>{Bt(ze,fe),h(dt,p().entityType),h(Ze,p().name),h(Ct,p().aspects.length),h(ve,He),h(Ee,e(Re).length)},[()=>`color: ${mn(p().entityType)}; border-color: ${mn(p().entityType)}; background: rgba(255,255,255,0.04);`,()=>p().aspects.reduce((fe,He)=>fe+He.attributes.length,0)]),Y("click",je,function(...fe){o.onfocusembedding?.apply(this,fe)}),u(G,Z)},mt=G=>{var Z=ws(),ue=be(Z),ze=d(l(ue),2),dt=l(ze);i(ze),i(ue);var xe=d(ue,2),Ye=l(xe,!0);i(xe);var Be=d(xe,2);{var Ze=me=>{var Ue=hs(),ve=d(l(Ue),2),ut=l(ve,!0);i(ve),i(Ue),F(()=>h(ut,e(st).name)),Y("click",Ue,()=>e(st)&&o.onselectembedding(`entity:${e(st).id}`)),u(me,Ue)};j(Be,me=>{e(st)&&me(Ze)})}var Xe=d(Be,2),$e=l(Xe);i(Xe);var ct=d(Xe,2);{var Ct=me=>{var Ue=_s(),ve=be(Ue),ut=l(ve);i(ve);var ie=d(ve,2);Mt(ie,21,()=>_().attributes,kt,(Ee,ye)=>{var je=ys(),it=l(je),Tt=l(it,!0);i(it);var yt=d(it,2),Lt=l(yt,!0);i(yt),i(je),F(()=>{h(Tt,e(ye).kind),h(Lt,e(ye).content)}),Y("click",je,()=>o.onselectembedding(`attr:${e(ye).id}`)),u(Ee,je)}),i(ie),F(()=>h(ut,`Attributes (${_().attributes.length??""})`)),u(me,Ue)};j(ct,me=>{_().attributes.length>0&&me(Ct)})}F(me=>{h(dt,`weight ${me??""}%`),h(Ye,_().name)},[()=>Math.round(_().weight*100)]),Y("click",$e,function(...me){o.onfocusembedding?.apply(this,me)}),u(G,Z)},Xt=G=>{var Z=Is(),ue=be(Z),ze=l(ue),dt=l(ze,!0);i(ze);var xe=d(ze,2),Ye=l(xe);i(xe),i(ue);var Be=d(ue,2),Ze=l(Be,!0);i(Be);var Xe=d(Be,2);{var $e=ie=>{var Ee=Ss(),ye=d(l(Ee),2),je=l(ye,!0);i(ye),i(Ee),F(()=>h(je,e(st).name)),Y("click",Ee,()=>e(st)&&o.onselectembedding(`entity:${e(st).id}`)),u(ie,Ee)};j(Xe,ie=>{e(st)&&ie($e)})}var ct=d(Xe,2);{var Ct=ie=>{var Ee=Ms(),ye=d(l(Ee),2),je=l(ye,!0);i(ye),i(Ee),F(()=>h(je,e(Oe).name)),Y("click",Ee,()=>e(Oe)&&o.onselectembedding(`aspect:${e(Oe).id}`)),u(ie,Ee)};j(ct,ie=>{e(Oe)&&ie(Ct)})}var me=d(ct,2),Ue=l(me);i(me);var ve=d(me,2);{var ut=ie=>{const Ee=Q(()=>o.embeddingById.get(U().memoryId));var ye=pr(),je=be(ye);{var it=Tt=>{var yt=ks(),Lt=d(be(yt),2),fe=l(Lt),He=l(fe,!0);i(fe);var We=d(fe,2),Dt=l(We,!0);i(We),i(Lt),F(lt=>{h(He,e(Ee).who??"memory"),h(Dt,lt)},[()=>yr(e(Ee))]),Y("click",Lt,()=>e(Ee)&&o.onselectembedding(e(Ee).id)),u(Tt,yt)};j(je,Tt=>{e(Ee)&&Tt(it)})}u(ie,ye)};j(ve,ie=>{U().memoryId&&ie(ut)})}F(ie=>{h(dt,U().kind),h(Ye,`importance ${ie??""}%`),h(Ze,U().content)},[()=>Math.round(U().importance*100)]),Y("click",Ue,function(...ie){o.onfocusembedding?.apply(this,ie)}),u(G,Z)},jt=G=>{var Z=Os(),ue=be(Z),ze=l(ue),dt=l(ze,!0);i(ze);var xe=d(ze,2);{var Ye=E=>{var oe=Ts(),Ge=l(oe,!0);i(oe),F(()=>h(Ge,o.graphSelected.type)),u(E,oe)};j(xe,E=>{o.graphSelected.type&&E(Ye)})}var Be=d(xe,2),Ze=l(Be);i(Be);var Xe=d(Be,2);{var $e=E=>{var oe=Es();u(E,oe)};j(Xe,E=>{o.graphSelected.pinned&&E($e)})}i(ue);var ct=d(ue,2),Ct=l(ct,!0);i(ct);var me=d(ct,2),Ue=l(me,!0);i(me);var ve=d(me,2);{var ut=E=>{var oe=Fs();Mt(oe,21,()=>o.graphSelected.tags.slice(0,8),kt,(Ge,Kt)=>{var Et=Ns(),$=l(Et);i(Et),F(()=>h($,`#${e(Kt)??""}`)),u(Ge,Et)}),i(oe),u(E,oe)};j(ve,E=>{o.graphSelected.tags?.length&&E(ut)})}var ie=d(ve,2),Ee=l(ie),ye=d(Ee,2),je=l(ye,!0);i(ye);var it=d(ye,2),Tt=l(it,!0);i(it),i(ie);var yt=d(ie,2);{var Lt=E=>{var oe=Ps(),Ge=l(oe,!0);i(oe),F(()=>h(Ge,o.pinError)),u(E,oe)};j(yt,E=>{o.pinError&&E(Lt)})}var fe=d(yt,2),He=l(fe),We=d(He,2);i(fe);var Dt=d(fe,2),lt=l(Dt);{var gt=E=>{var oe=Cs();u(E,oe)},et=E=>{var oe=pr(),Ge=be(oe);Mt(Ge,17,()=>o.activeNeighbors,kt,(Kt,Et)=>{const $=Q(()=>Pt(e(Et).id));var _t=pr(),rr=be(_t);{var nr=ar=>{var qt=Ls(),pt=l(qt),s=l(pt,!0);i(pt);var I=d(pt,2),B=l(I,!0);i(I),i(qt),F((de,H)=>{h(s,de),h(B,H)},[()=>Math.round(e(Et).score*1e3)/1e3,()=>yr(e($))]),Y("click",qt,()=>o.onselectembedding(e($).id)),u(ar,qt)};j(rr,ar=>{e($)&&ar(nr)})}u(Kt,_t)}),u(E,oe)};j(lt,E=>{o.activeNeighbors.length===0?E(gt):E(et,-1)})}i(Dt);var tt=d(Dt,2);{var Ht=E=>{var oe=Ds();u(E,oe)},$t=E=>{var oe=Rs(),Ge=d(be(oe),2);Mt(Ge,21,()=>o.globalSimilar,kt,(Kt,Et)=>{var $=As(),_t=d(l($),2),rr=l(_t,!0);i(_t),i($),F(()=>h(rr,e(Et).content)),Y("click",$,()=>o.onopenglobalsimilar(e(Et))),u(Kt,$)}),i(Ge),u(E,oe)};j(tt,E=>{o.loadingGlobalSimilar?E(Ht):o.globalSimilar.length>0&&E($t,1)})}F((E,oe)=>{h(dt,o.graphSelected.who??"unknown"),h(Ze,`importance ${E??""}%`),h(Ct,oe),h(Ue,o.graphSelected.content??o.graphSelected.text??"(No content preview available)"),ye.disabled=o.pinBusy,h(je,o.pinBusy?"Saving...":o.graphSelected.pinned?"Unpin":"Pin"),it.disabled=o.loadingGlobalSimilar,h(Tt,o.loadingGlobalSimilar?"Loading...":"Global similar"),xt(He,1,`px-2 py-0.5 text-[10px] font-medium font-mono bg-transparent border-none cursor-pointer tracking-[0.04em] hover:text-[var(--sig-text)] hover:bg-[var(--sig-surface-raised)] ${o.relationMode==="similar"?"text-[var(--sig-text-bright)] bg-[var(--sig-surface-raised)]":"text-[var(--sig-text-muted)]"}`),xt(We,1,`px-2 py-0.5 text-[10px] font-medium font-mono bg-transparent border-none cursor-pointer tracking-[0.04em] hover:text-[var(--sig-text)] hover:bg-[var(--sig-surface-raised)] ${o.relationMode==="dissimilar"?"text-[var(--sig-text-bright)] bg-[var(--sig-surface-raised)]":"text-[var(--sig-text-muted)]"}`)},[()=>Math.round((o.graphSelected.importance??0)*100),()=>Vo(o.graphSelected)]),Y("click",Ee,function(...E){o.onfocusembedding?.apply(this,E)}),Y("click",ye,function(...E){o.onpintoggle?.apply(this,E)}),Y("click",it,function(...E){o.onloadglobalsimilar?.apply(this,E)}),Y("click",He,()=>o.onsetrelationmode("similar")),Y("click",We,()=>o.onsetrelationmode("dissimilar")),u(G,Z)},ht=G=>{var Z=js(),ue=d(be(Z),2);{var ze=dt=>{var xe=Xs(),Ye=d(be(xe),2);Mt(Ye,21,()=>o.embeddingSearchMatches,kt,(Be,Ze)=>{var Xe=Ys(),$e=l(Xe),ct=l($e,!0);i($e);var Ct=d($e,2),me=l(Ct,!0);i(Ct),i(Xe),F(Ue=>{h(ct,e(Ze).who),h(me,Ue)},[()=>yr(e(Ze))]),Y("click",Xe,()=>o.onselectembedding(e(Ze).id)),u(Be,Xe)}),i(Ye),u(dt,xe)};j(ue,dt=>{o.embeddingSearch&&o.embeddingSearchMatches.length>0&&dt(ze)})}u(G,Z)};j(bt,G=>{e(ot)&&p()?G(Wt):e(ae)&&_()?G(mt,1):e(Ae)&&U()?G(Xt,2):o.graphSelected?G(jt,3):G(ht,-1)})}i(It),F(()=>xt(It,1,`flex flex-col gap-3 p-3 overflow-y-auto ${f()}`)),u(y,It),Sn()}Mn(["click"]);var zs=b('<div class="absolute right-3 z-[9] pointer-events-none"><button type="button" class="pointer-events-auto px-2 py-[2px] font-mono text-[10px] uppercase border border-[var(--sig-text-bright)] text-[var(--sig-text-bright)] bg-[rgba(5,5,5,0.74)] hover:bg-[var(--sig-text-bright)] hover:text-[var(--sig-bg)]"> </button></div>'),Bs=b('<span class="text-[#c4a24a]"> </span>'),Ws=b('<div class="mt-0.5 font-mono text-[9px] text-[var(--sig-text-muted)] leading-[1.3]"> </div>'),Ks=b('<div class="mt-1"><div class="flex items-center justify-between font-mono text-[9px] text-[var(--sig-text-muted)]"><span> </span> <span> </span></div> <div class="mt-1 h-[5px] border border-[rgba(255,255,255,0.2)] bg-[rgba(255,255,255,0.05)]"><div class="h-full bg-[#c4a24a]"></div></div> <div class="mt-1 font-mono text-[9px] text-[var(--sig-text-muted)]"> </div></div>'),qs=b('<div class="mb-2 border border-[rgba(255,255,255,0.14)] bg-[rgba(255,255,255,0.03)] px-1.5 py-1.5"><div class="font-mono text-[9px] text-[var(--sig-text)] leading-[1.3]"> </div> <!> <!></div>'),Us=b('<button type="button" class="mt-1 font-mono text-[9px] text-[#c4a24a] hover:text-[var(--sig-text-bright)] underline underline-offset-2 disabled:opacity-40 disabled:no-underline"> </button>'),Vs=b('<div class="flex items-start gap-1.5 px-1.5 py-1 border border-[rgba(255,255,255,0.1)] bg-[rgba(255,255,255,0.02)]"><span class="inline-block w-[6px] h-[6px] rounded-full shrink-0 mt-[4px]"></span> <div class="flex-1 min-w-0"><div class="flex items-center justify-between gap-2"><span class="font-mono text-[10px] text-[var(--sig-text)]"> </span> <span class="font-mono text-[9px] text-[var(--sig-text-muted)] uppercase"> </span></div> <div class="font-mono text-[9px] text-[var(--sig-text-muted)] leading-[1.3] mt-0.5"> </div> <!></div></div>'),Js=b('<div class="mt-1 border border-[rgba(255,255,255,0.22)] bg-[rgba(5,5,5,0.92)] px-2 py-2 w-[320px]"><div class="flex items-center justify-between mb-2"><span class="font-mono text-[10px] text-[var(--sig-text-muted)] uppercase tracking-[0.06em]">Constellation Health</span> <span class="font-mono text-[10px] text-[var(--sig-text-muted)]"> </span></div> <!> <div class="space-y-1"></div></div>'),Qs=b('<div class="absolute top-2 right-3 z-[8] pointer-events-none"><div class="pointer-events-auto"><button type="button" class="flex items-center gap-1.5 px-2 py-[4px] font-mono text-[10px] uppercase border border-[rgba(255,255,255,0.22)] bg-[rgba(5,5,5,0.75)] text-[var(--sig-text-muted)] hover:text-[var(--sig-text-bright)]"><span class="inline-block w-[7px] h-[7px] rounded-full shrink-0"></span> <span class="text-[var(--sig-text-muted)]"> </span> <!></button> <!></div></div>'),Zs=b("<span>Legend</span> <!>",1),$s=b("<span> </span>"),ei=b('<div class="flex flex-wrap items-center gap-x-3 gap-y-1 text-[10px] text-[var(--sig-text-muted)] mb-1.5"><span class="inline-flex items-center gap-1"><span class="inline-block w-[8px] h-[8px] rounded-full"></span>last few minutes</span> <span class="inline-flex items-center gap-1"><span class="inline-block w-[8px] h-[8px] rounded-full"></span>last few hours</span> <span class="inline-flex items-center gap-1"><span class="inline-block w-[8px] h-[8px] rounded-full"></span>last week</span> <span class="inline-flex items-center gap-1"><span class="inline-block w-[8px] h-[8px] rounded-full"></span>older</span></div> <div class="flex flex-wrap gap-1 mb-1.5"></div>',1),ti=b('<span><span class="inline-block w-[6px] h-[6px] rounded-full"></span> </span>'),ri=b('<div class="flex flex-wrap gap-1 mb-1.5"></div>'),ni=b('<div class="text-[10px] text-[var(--sig-text-muted)] leading-[1.35] mb-1.5">No color applied - all nodes are shown in gray.</div>'),ai=b('<div class="text-[10px] text-[var(--sig-text-muted)] leading-[1.35] mb-1"><span class="text-[var(--sig-text)]">Outline</span> = new since last seen</div>'),oi=b('<span class="h-5 inline-flex items-center gap-1 px-1.5 py-0 font-mono text-[10px] text-[var(--sig-text-muted)] border border-[rgba(255,255,255,0.14)] bg-transparent"><span class="inline-block w-[8px] h-[8px]"></span> </span>'),si=b('<div class="mt-2 pt-2 border-t border-[rgba(255,255,255,0.1)]"><div class="text-[10px] font-mono uppercase tracking-[0.06em] text-[var(--sig-text-muted)] mb-1">Knowledge Graph</div> <div class="flex flex-wrap gap-1 mb-1.5"></div> <div class="text-[10px] text-[var(--sig-text-muted)] leading-[1.35] space-y-0.5"><div><span class="text-[var(--sig-text)]">Hexagon</span> = entity (large, labeled)</div> <div><span class="text-[var(--sig-text)]">Circle</span> = aspect (medium, orbits entity)</div> <div><span class="text-[var(--sig-text)]">Small dot</span> = attribute (orbits aspect)</div> <div><span class="text-[var(--sig-text)]">Tiny dot</span> = linked memory (leaf node)</div> <div><span class="text-[var(--sig-text)]">Faint lines</span> = parent-child hierarchy</div> <div><span class="text-[var(--sig-text)]">Styled line</span> = entity dependency</div></div></div>'),ii=b('<div class="text-[10px] text-[var(--sig-text-muted)] leading-[1.35] mb-1"><span class="text-[var(--sig-text)]">Color</span> </div> <!> <div class="text-[10px] text-[var(--sig-text-muted)] leading-[1.35] mb-1"><span class="text-[var(--sig-text)]">Radius</span> = importance</div> <div class="flex items-center gap-2 text-[10px] text-[var(--sig-text-muted)] mb-1.5"><span class="inline-block w-[6px] h-[6px] rounded-full border border-[rgba(255,255,255,0.24)]"></span> <span class="inline-block w-[9px] h-[9px] rounded-full border border-[rgba(255,255,255,0.28)]"></span> <span class="inline-block w-[12px] h-[12px] rounded-full border border-[rgba(255,255,255,0.32)]"></span> <span>low to high</span></div> <!> <div class="text-[10px] text-[var(--sig-text-muted)] leading-[1.35]"><span class="text-[var(--sig-text)]">Relation highlight</span> = selected node neighborhood emphasis</div> <!>',1),li=b("<!> <!>",1),di=b('<div class="absolute inset-0 flex items-center justify-center bg-[var(--sig-bg)] z-10"><p> </p></div>'),ci=b('<div class="absolute inset-0 flex items-center justify-center bg-[var(--sig-bg)] z-10"><p class="text-[var(--sig-danger)]"> </p></div>'),ui=b('<div class="absolute inset-0 flex items-center justify-center bg-[var(--sig-bg)] z-10"><p>No memories found</p></div>'),gi=b('<div class="absolute inset-0 flex items-center justify-center bg-[var(--sig-bg)] z-10"><p>Loading...</p></div>'),pi=b('<span class="font-mono text-[10px] text-[var(--sig-text)] border border-[var(--sig-border-strong)] px-1.5 py-[1px] bg-[rgba(255,255,255,0.04)]"> </span>'),vi=b('<span class="font-mono text-[10px] text-[var(--sig-text-bright)] border border-[var(--sig-text-bright)] px-1.5 py-[1px] bg-[rgba(255,255,255,0.08)]">pinned</span>'),fi=b('<span class="font-mono text-[10px] text-[var(--sig-text-bright)] border border-[var(--sig-text-bright)] px-1.5 py-[1px] bg-[rgba(255,255,255,0.08)]">locked</span>'),xi=b('<div class="grid grid-cols-[1fr_auto] items-start gap-2 border border-[rgba(255,255,255,0.14)] bg-[rgba(255,255,255,0.02)] px-1.5 py-1"><span class="text-[10px] leading-[1.35] text-[var(--sig-text)] line-clamp-1"> </span> <span class="text-[10px] text-[var(--sig-text-muted)]"> </span></div>'),bi=b('<div class="mt-2 pt-2 border-t border-[rgba(255,255,255,0.14)]"><div class="font-mono text-[10px] text-[var(--sig-text-muted)] uppercase tracking-[0.06em] mb-1">Local neighbors</div> <div class="space-y-1"></div></div>'),mi=b('<div class="z-[9] w-[320px] pointer-events-none border border-[rgba(255,255,255,0.26)] bg-[rgba(5,5,5,0.92)] px-2 py-2" style="position:absolute;top:0;left:0;will-change:transform"><div class="flex items-center gap-1.5 flex-wrap mb-1.5"><span class="font-mono text-[10px] text-[var(--sig-text)] border border-[var(--sig-border-strong)] px-1.5 py-[1px] bg-[rgba(255,255,255,0.04)]"> </span> <!> <!> <!></div> <div class="font-mono text-[10px] text-[var(--sig-text-muted)] mb-1.5"> </div> <p class="m-0 text-[12px] leading-[1.45] text-[var(--sig-text-bright)] line-clamp-3"> </p> <div class="mt-1 text-[10px] text-[var(--sig-text-muted)]"> </div> <!></div>'),hi=b('<div class="absolute inset-0 flex items-center justify-center bg-[#050505]"><span class="text-[var(--sig-text-muted)] font-mono text-[11px]"> </span></div>'),yi=b('<div class="absolute inset-0 flex items-center justify-center bg-[#050505]"><span class="text-[var(--sig-danger)] font-mono text-[11px]"> </span></div>'),_i=b('<div class="absolute inset-0 flex items-center justify-center bg-[#050505]"><span class="text-[var(--sig-text-muted)] font-mono text-[11px]"> </span></div>'),wi=b("<span>View Controls</span> <!>",1),Si=b('<span class="font-mono text-[10px] text-[var(--sig-text-muted)] border border-[var(--sig-border)] px-2 py-1"> </span>'),Mi=b('<div class="p-2 space-y-2 border-t border-[var(--sig-border)]"><div class="flex items-center gap-2"><input type="text" class="flex-1 font-mono text-[11px] text-[var(--sig-text-bright)] bg-[var(--sig-surface)] border border-[var(--sig-border-strong)] px-[9px] py-[6px] outline-none" placeholder="Search constellation"/> <!></div> <div class="text-[10px] font-mono text-[var(--sig-text-muted)]"> </div> <div class="flex flex-wrap gap-1"><button>Pinned</button> <button>Neighborhood</button> <button>Lens</button> <button class="px-2 py-[2px] font-mono text-[10px] uppercase border border-[var(--sig-border-strong)] text-[var(--sig-text-muted)] hover:text-[var(--sig-text-bright)]"> </button></div> <div class="border border-[var(--sig-border)] px-2 py-2 space-y-1.5"><div class="font-mono text-[10px] uppercase tracking-[0.08em] text-[var(--sig-text-muted)]">Color Mode</div> <div class="flex flex-wrap gap-1"><button>Newness</button> <button>Source</button> <button>None</button></div></div> <div class="border border-[var(--sig-border)] px-2 py-2 space-y-1.5"><div class="font-mono text-[10px] uppercase tracking-[0.08em] text-[var(--sig-text-muted)]">Overlays</div> <div class="flex flex-wrap gap-1"><button>New since last seen</button> <button> </button></div></div> <div class="border border-[var(--sig-border)] px-2 py-2 space-y-1.5" style="accent-color: var(--sig-highlight);"><div class="font-mono text-[10px] uppercase tracking-[0.08em] text-[var(--sig-text-muted)]">Graph Physics</div> <label class="block"><div class="flex items-center justify-between text-[10px] font-mono text-[var(--sig-text-muted)]"><span>center force</span> <span> </span></div> <input type="range" min="0" max="1" step="0.01"/></label> <label class="block"><div class="flex items-center justify-between text-[10px] font-mono text-[var(--sig-text-muted)]"><span>repel force</span> <span> </span></div> <input type="range" min="-600" max="-10" step="5"/></label> <label class="block"><div class="flex items-center justify-between text-[10px] font-mono text-[var(--sig-text-muted)]"><span>link force</span> <span> </span></div> <input type="range" min="0.01" max="1" step="0.01"/></label> <label class="block"><div class="flex items-center justify-between text-[10px] font-mono text-[var(--sig-text-muted)]"><span>link distance</span> <span> </span></div> <input type="range" min="12" max="280" step="1"/></label> <button type="button" class="px-2 py-[2px] font-mono text-[10px] uppercase border border-[var(--sig-border-strong)] text-[var(--sig-text-muted)] hover:text-[var(--sig-text-bright)]">Physics Reset</button></div></div>'),ki=b("<!> <!>",1),Ii=b("<span>Presets</span> <!>",1),Ti=b("<button> </button>"),Ei=b('<div class="inline-flex items-center border border-[var(--sig-border-strong)]"><button> </button> <button class="px-1.5 py-[2px] font-mono text-[10px] text-[var(--sig-text-muted)] hover:text-[var(--sig-text-bright)]">×</button></div>'),Ni=b('<div class="p-2 border-t border-[var(--sig-border)] flex flex-wrap gap-1"><!> <!> <button class="px-2 py-[2px] font-mono text-[10px] uppercase border border-[var(--sig-border-strong)] text-[var(--sig-text-muted)] hover:text-[var(--sig-text-bright)]"> </button></div>'),Fi=b("<!> <!>",1),Pi=b("<span>Sources</span> <!>",1),Ci=b('<span class="text-[10px] text-[var(--sig-text-muted)]">No sources</span>'),Li=b("<button> </button>"),Di=b('<div class="p-2 border-t border-[var(--sig-border)] flex flex-wrap gap-1"><!></div>'),Ai=b("<!> <!>",1),Ri=b("<span>Advanced</span> <!>",1),Oi=b('<div class="flex items-center gap-1 flex-wrap"><input type="date" class="font-mono text-[10px] text-[var(--sig-text-bright)] bg-[var(--sig-bg)] border border-[var(--sig-border-strong)] px-1.5 py-[2px] outline-none"/> <input type="date" class="font-mono text-[10px] text-[var(--sig-text-bright)] bg-[var(--sig-bg)] border border-[var(--sig-border-strong)] px-1.5 py-[2px] outline-none"/></div>'),Yi=b('<span class="text-[10px] text-[var(--sig-text-muted)] font-mono">none</span>'),Xi=b("<button> </button>"),ji=b("<button> </button>"),Hi=b('<div class="flex items-center gap-1 flex-wrap"><span class="px-1 text-[10px] text-[var(--sig-text-muted)] uppercase font-mono">Type</span> <!></div>'),Gi=b("<button> </button>"),zi=b('<div class="flex items-center gap-1 flex-wrap"><span class="px-1 text-[10px] text-[var(--sig-text-muted)] uppercase font-mono">Source type</span> <!></div>'),Bi=b('<div class="p-2 border-t border-[var(--sig-border)] space-y-2"><div class="flex items-center gap-1 flex-wrap"><span class="px-1 text-[10px] text-[var(--sig-text-muted)] uppercase font-mono">Window</span> <input type="number" min="0" max="100000" class="w-[70px] font-mono text-[10px] text-[var(--sig-text-bright)] bg-[var(--sig-bg)] border border-[var(--sig-border-strong)] px-1.5 py-[2px] outline-none"/> <span class="text-[10px] text-[var(--sig-text-muted)] font-mono">to</span> <input type="number" min="1" max="100000" class="w-[70px] font-mono text-[10px] text-[var(--sig-text-bright)] bg-[var(--sig-bg)] border border-[var(--sig-border-strong)] px-1.5 py-[2px] outline-none"/> <select class="font-mono text-[10px] text-[var(--sig-text-bright)] bg-[var(--sig-bg)] border border-[var(--sig-border-strong)] px-1.5 py-[2px] outline-none"><option>time: all</option><option>time: 24h</option><option>time: 7d</option><option>time: 30d</option><option>time: 90d</option><option>time: custom</option></select></div> <!> <div class="flex items-center gap-1 flex-wrap"><select class="font-mono text-[10px] text-[var(--sig-text-bright)] bg-[var(--sig-bg)] border border-[var(--sig-border-strong)] px-1.5 py-[2px] outline-none"><option>pins: all</option><option>pins: pinned</option><option>pins: unpinned</option></select> <input type="text" class="w-[140px] font-mono text-[10px] text-[var(--sig-text-bright)] bg-[var(--sig-bg)] border border-[var(--sig-border-strong)] px-1.5 py-[2px] outline-none" placeholder="server query"/> <input type="text" class="w-[110px] font-mono text-[10px] text-[var(--sig-text-bright)] bg-[var(--sig-bg)] border border-[var(--sig-border-strong)] px-1.5 py-[2px] outline-none" placeholder="tags csv"/> <input type="text" class="w-[60px] font-mono text-[10px] text-[var(--sig-text-bright)] bg-[var(--sig-bg)] border border-[var(--sig-border-strong)] px-1.5 py-[2px] outline-none" placeholder="imp>"/> <input type="text" class="w-[60px] font-mono text-[10px] text-[var(--sig-text-bright)] bg-[var(--sig-bg)] border border-[var(--sig-border-strong)] px-1.5 py-[2px] outline-none" placeholder="imp<"/></div> <div class="flex items-center gap-1 flex-wrap"><span class="px-1 text-[10px] text-[var(--sig-text-muted)] uppercase font-mono">Harness</span> <!></div> <!> <!></div>'),Wi=b("<!> <!>",1),Ki=b('<div class="flex flex-col flex-1 min-h-0 overflow-hidden"><!> <div class="flex flex-1 min-h-0 bg-[#050505] max-lg:flex-col"><div class="flex-1 relative overflow-hidden bg-[#050505]" role="presentation"><!> <!> <div class="absolute left-3 top-3 bottom-3 z-[8] pointer-events-none flex flex-col justify-end items-start max-w-[220px]"><!></div> <!> <div class="absolute left-[14px] z-[6] font-mono text-[10px] text-[var(--sig-text-muted)] tracking-[0.08em] uppercase pointer-events-none" aria-hidden="true">:: ○ ○ 01 10 11 // latent topology</div> <div class="absolute inset-0 pointer-events-none z-[5]" aria-hidden="true"><span class="absolute top-[10px] left-[10px] w-[14px] h-[14px] border-[rgba(255,255,255,0.22)]" style="border-style:solid;border-width:1px 0 0 1px"></span> <span class="absolute top-[10px] right-[10px] w-[14px] h-[14px] border-[rgba(255,255,255,0.22)]" style="border-style:solid;border-width:1px 1px 0 0"></span> <span class="absolute bottom-[10px] left-[10px] w-[14px] h-[14px] border-[rgba(255,255,255,0.22)]" style="border-style:solid;border-width:0 0 1px 1px"></span> <span class="absolute bottom-[10px] right-[10px] w-[14px] h-[14px] border-[rgba(255,255,255,0.22)]" style="border-style:solid;border-width:0 1px 1px 0"></span></div> <!> <div><!></div> <div><!></div></div> <div class="w-[360px] min-w-[320px] border-l border-[var(--sig-border)] bg-[var(--sig-surface)] flex flex-col min-h-0 max-lg:w-full max-lg:min-w-0 max-lg:max-h-[48%] max-lg:border-l-0 max-lg:border-t max-lg:border-t-[var(--sig-border)]"><div class="p-3 border-b border-[var(--sig-border)] space-y-2 overflow-y-auto"><!> <!> <!> <!></div> <!></div></div></div>');function tl(y,o){wn(o,!0);let f=cr(o,"embedded",3,!1),S=v(!1),p=v(null),_=v(null),U=v(""),K=v(""),V=v(Ie([])),pe=v(0),ot=v(!1),ae=v(!1),Ae=v(""),Re=v(""),st=0,Oe=v(Ie([])),Je,Pt=v(null),It=v(null),tr=v(null),Te=v(Ie(new Set)),Qt=v(Ie([])),bt=v(!1),Wt=v(!0),mt=v(Ie(new Set)),Xt=v(!1),jt=v(""),ht=v(!0),G=v(Ie(new Set)),Z=v("focus"),ue=v(Ie([])),ze=v(!1),dt=v(!1),xe=v(!0),Ye=v(!1),Be=v(!0);const Ze=["daemon","user","opencode"],Xe=new Set(Ze),$e="signet-constellation-color-mode-session",ct="signet-constellation-new-since-session",Ct="signet-constellation-color-mode",me="signet-constellation-new-since",Ue="signet-constellation-last-seen";let ve=v(0),ut=v(Ie(Wr)),ie=v("all"),Ee=v(Ie(Date.now())),ye=v(""),je=v(""),it=v(""),Tt=v(""),yt=v("all"),Lt=v(""),fe=v(""),He=v(Ie([])),We=v(Ie(new Set)),Dt=v(Ie([])),lt=v(Ie([])),gt=v(Ie(new Set)),et=v(Ie(new Set)),tt=v(""),Ht=0,$t=v("similar"),E=v(Ie([])),oe=v(Ie([])),Ge=v(Ie([])),Kt=v(!1),Et=v(Ie([])),$=v("source"),_t=v(!1),rr=v(null),nr=v(null),ar=v(!1),qt=v(Ie(Date.now())),pt=v(Ie([])),s=v(Ie([])),I=v(Ie([])),B=v(!1),de=v(null),H=v(!1);const _e="signet-constellation-entity-overlay";let ge=v("2d"),se=v(Ie([])),Ke=0,P=v(Ie(Ir)),qe=v(!1),x=v(Ie(new Map)),q=v(Ie(new Map)),W=v(Ie(new Map)),C=v(null),O=v(null),X=v(null),we=0,Nt=0,Ut=null,vt=v(null),sr=v(null),Rr=v(null),Or=v(!1),Tn=v(!1),ur=v(null),Ur=v(!1),_r=v(!1),Vr,ir=v(null),lr=v(null),At=v(null),Yr;No(()=>{n(xe,kr.embeddings.controlsOpen,!0),n(Ye,kr.embeddings.presetsOpen,!0),n(Be,kr.embeddings.sourcesOpen,!0)});function ka(t){if(sa.activeTab!=="embeddings"||t.defaultPrevented)return;const r=t.target,a=r instanceof HTMLElement&&(r.tagName==="INPUT"||r.tagName==="TEXTAREA"||r.tagName==="SELECT"||r.isContentEditable),c=r instanceof HTMLElement&&r.getAttribute("data-memory-tab")==="embeddings";if(t.key==="ArrowDown"&&c){t.preventDefault(),e(xe)?Je?.focus():(n(xe,!0),un().then(()=>Je?.focus()));return}if(t.key==="ArrowUp"&&r===Je){t.preventDefault();const g=document.querySelector('[data-memory-tab="embeddings"]');g?g.focus():Je?.blur();return}}async function Tr(){n(ur,await Lo(),!0)}function Ia(t){const r=t.match(/cooldown active,\s*(\d+)ms remaining/i);if(!r?.[1])return null;const a=Number.parseInt(r[1],10);return Number.isFinite(a)&&a>=0?a:null}function En(t){const r=Math.ceil(t/1e3);if(r<60)return`${r}s`;const a=Math.floor(r/60),c=r%60;return c>0?`${a}m ${c}s`:`${a}m`}function Ta(t){const r=t.match(/([\d,]+)\s+memories?\s+missing\s+embeddings/i);if(!r?.[1])return null;const a=Number.parseInt(r[1].replaceAll(",",""),10);return Number.isFinite(a)&&a>=0?a:null}function Er(){Yr&&(clearInterval(Yr),Yr=void 0)}function Ea(t){const r=Math.max(1,Math.floor(t/1e3));if(r<60)return`${r}s`;const a=Math.floor(r/60),c=r%60;return c>0?`${a}m ${c}s`:`${a}m`}function Nn(t){Er();const r=Date.now();let a=t,c=!1,g=0;n(ir,"Re-embedding in progress"),n(lr,t===null?"Collecting progress...":`${t.toLocaleString()} missing at start`,!0),n(At,null);const M=async()=>{if(!c){c=!0;try{const m=await pn(),T=Ea(Date.now()-r);if(n(ir,`Re-embedding in progress (${T})`),m){a===null&&(a=m.unembedded);const w=Math.max(0,a??m.unembedded),L=Math.max(0,w-m.unembedded),le=w>0?Math.min(100,L/w*100):100;n(At,{baseline:w,completed:L,remaining:m.unembedded,percent:le,coverage:m.coverage},!0),n(lr,a===null?`${m.unembedded.toLocaleString()} still missing (${m.coverage} coverage)`:`${L.toLocaleString()} completed, ${m.unembedded.toLocaleString()} remaining (${m.coverage} coverage)`,!0)}g%2===0&&await Tr(),g++}finally{c=!1}}};M(),Yr=setInterval(()=>{M()},3e3)}async function Na(t){if(e(_r))return;n(_r,!0);const r=t.name==="coverage"||t.name==="null-vectors";if(r||(n(ir,`Running ${t.name} repair...`),n(lr,null),n(At,null)),r){const a=Ta(t.message);if(a!==null)Nn(a);else{const c=await pn();Nn(c?.unembedded??null)}}try{let a;if(t.name==="orphaned-embeddings")a=await Xo();else if(t.name==="vec-table-sync")a=await jo();else if(t.name==="coverage"||t.name==="null-vectors")a=await Ho();else{Mr(`Repair action not wired for ${t.name}`,"warning");return}if(!a.success){if(Er(),a.status===429){const c=Ia(a.message);c!==null?(n(ir,"Repair blocked by cooldown"),n(lr,`Try again in ${En(c)}.`),Mr(`Repair on cooldown. Try again in ${En(c)}.`,"warning",4500)):(n(ir,"Repair blocked by policy"),n(lr,a.message,!0),Mr(`Repair temporarily blocked: ${a.message}`,"warning",5e3)),await Tr();return}n(ir,"Repair failed"),n(lr,a.message,!0),n(At,null),Mr(`Repair failed: ${a.message}`,"error",5e3);return}if(Er(),n(ir,"Repair completed"),n(lr,a.message,!0),r){const c=await pn();if(c&&e(At)){const g=e(At).baseline,M=Math.max(0,g-c.unembedded);n(At,{baseline:g,completed:M,remaining:c.unembedded,percent:g>0?Math.min(100,M/g*100):100,coverage:c.coverage},!0)}}a.affected>0?Mr(a.message,"success",4500):Mr(a.message,"info",4500),await Tr(),r&&a.affected>0&&await en()}finally{Er(),n(_r,!1)}}function Fa(t){return t==="healthy"?"#4a7a5e":t==="degraded"?"#c4a24a":"#8a4a48"}function Pa(t){return t==="ok"?"#4a7a5e":t==="warn"?"#c4a24a":"#8a4a48"}ne(()=>(Tr(),Vr=setInterval(Tr,6e4),()=>{Er(),Vr&&clearInterval(Vr)}));let Jr=!1;function Xr(){Jr||(Jr=!0,queueMicrotask(()=>{Jr=!1,e(ge)==="3d"&&e(sr)?.refreshAppearance()}))}function Ca(t){return{id:t.id,content:t.content,who:t.who,importance:t.importance,type:t.type,tags:t.tags,pinned:t.pinned??!1,sourceType:t.sourceType,sourceId:t.sourceId,createdAt:t.createdAt}}function La(t){if(!t)return"-";const r=new Date(t);return Number.isNaN(r.getTime())?"-":r.toLocaleString(void 0,{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})}function jr(t,r){const a=new Date(e(qt)-t).toISOString();return wa(qo(a,e(qt)),r)}function Qr(){const t=Number.isFinite(e(ve))?Math.max(0,Math.trunc(e(ve))):0,r=Number.isFinite(e(ut))?Math.max(1,Math.trunc(e(ut))):Wr,a=Math.max(t+1,Math.min(r,t+Wo));return{offset:t,limit:a-t}}function Zr(){const{offset:t,limit:r}=Qr();n(ve,t,!0),n(ut,t+r)}function Fn(t,r){const a=t.trim();if(!a)return;const c=r?"T23:59:59.999":"T00:00:00.000",g=new Date(`${a}${c}`);if(!Number.isNaN(g.getTime()))return g.toISOString()}function Pn(t){const r=t.trim();if(!r)return;const a=Number.parseFloat(r);if(Number.isFinite(a))return Math.min(1,Math.max(0,a))}function Hr(t,r){const a=t.currentTarget;if(!(a instanceof HTMLInputElement))return r;const c=Number.parseFloat(a.value);return Number.isFinite(c)?c:r}function Nr(t){n(P,bn({...e(P),...t}),!0)}function Da(t,r){if(t==="all"||t==="custom")return;const a=t==="24h"?1440*60*1e3:t==="7d"?10080*60*1e3:t==="30d"?720*60*60*1e3:2160*60*60*1e3;return new Date(r-a).toISOString()}function Cn(){const{offset:t,limit:r}=Qr(),a={offset:t,limit:r},c=e(it).trim();c.length>0&&(a.q=c);const g=[...e(We)];g.length>0&&(a.who=g);const M=[...e(gt)];M.length>0&&(a.types=M);const m=[...e(et)];m.length>0&&(a.sourceTypes=m);const T=e(Tt).split(",").map(N=>N.trim()).filter(N=>N.length>0);T.length>0&&(a.tags=T),e(yt)==="pinned"&&(a.pinned=!0),e(yt)==="unpinned"&&(a.pinned=!1);let w,L;e(ie)==="custom"?(w=Fn(e(ye),!1),L=Fn(e(je),!0)):w=Da(e(ie),e(Ee)),w&&(a.since=w),L&&(a.until=L);let le=Pn(e(Lt)),k=Pn(e(fe));if(typeof le=="number"&&typeof k=="number"&&le>k){const N=le;le=k,k=N}return typeof le=="number"&&(a.importanceMin=le),typeof k=="number"&&(a.importanceMax=k),a}function Ln(t){return JSON.stringify({offset:t.offset??0,limit:t.limit??Wr,q:t.q??"",who:[...t.who??[]].sort(),types:[...t.types??[]].sort(),sourceTypes:[...t.sourceTypes??[]].sort(),tags:[...t.tags??[]].sort(),pinned:t.pinned??"all",since:t.since??"",until:t.until??"",importanceMin:typeof t.importanceMin=="number"?t.importanceMin:"",importanceMax:typeof t.importanceMax=="number"?t.importanceMax:""})}function Aa(t){let r=null;for(const a of t)if(a!==null){if(r===null){r=new Set(a);continue}if(r.size<=a.size)for(const c of r)a.has(c)||r.delete(c);else{const c=new Set;for(const g of a)r.has(g)&&c.add(g);r=c}}return r}function Ra(t,r){const a=e(V).findIndex(M=>M.id===t);if(a<0)return;const c=r(e(V)[a]);e(V)[a]=c,n(V,e(V),!0),e(x).set(t,c),n(x,e(x),!0);const g=e(pt).findIndex(M=>M.data.id===t);g>=0&&(e(pt)[g]={...e(pt)[g],data:c},n(pt,e(pt),!0)),e(p)?.id===t&&n(p,c,!0),e(_)?.id===t&&n(_,c,!0)}function Oa(t){const r=new Set(e(Te));r.has(t)?r.delete(t):r.add(t),n(Te,r,!0)}function Ya(t){const r=new Set(e(We));r.has(t)?r.delete(t):r.add(t),n(We,r,!0)}function Xa(t){const r=new Set(e(gt));r.has(t)?r.delete(t):r.add(t),n(gt,r,!0)}function ja(t){const r=new Set(e(et));r.has(t)?r.delete(t):r.add(t),n(et,r,!0)}function Ha(){n(ve,0),n(ut,Wr,!0),n(ie,"all"),n(ye,""),n(je,""),n(it,""),n(Tt,""),n(yt,"all"),n(Lt,""),n(fe,""),n(We,new Set,!0),n(gt,new Set,!0),n(et,new Set,!0),Zr()}function Ga(){n(bt,!e(bt)),n(Z,"custom-live")}function Dn(){if(e(p))return e(p);if(e(Gt))return n(p,e(Gt),!0),e(Gt);const t=e(V)[0]??null;return t&&n(p,t,!0),t}function za(){!e(Wt)&&!Dn()||(n(Wt,!e(Wt)),n(Z,"custom-live"))}function Ba(){!e(ht)&&!Dn()||(n(ht,!e(ht)),n(Z,"custom-live"))}function Wa(t){Oa(t),n(Z,"custom-live")}function An(){if(!e(X)||!Ut)return;const t=Math.max(12,Ut.width-334),r=Math.max(12,Ut.height-170),a=Math.min(Math.max(12,we+14),t),c=Math.min(Math.max(12,Nt+14),r);e(X).style.transform=`translate3d(${a}px, ${c}px, 0)`}function Ka(t){Ut&&(we=t.clientX-Ut.left,Nt=t.clientY-Ut.top,An())}function Rn(t){e(C)||!t&&!e(_)||t&&e(_)&&t.id===e(_).id||n(_,t,!0)}function qa(){e(p)||e(_)&&n(C,e(_).id,!0)}function On(){n(C,null)}function Yn(t){return typeof t=="number"?e(I)[t]??null:t?.data.id??null}const Xn="signet-embeddings-filter-presets",Ua=[{id:"all",name:"All",search:"",sources:[],pinnedOnly:!1,neighborhoodOnly:!1,clusterLensMode:!1},{id:"pinned",name:"Pinned",search:"",sources:[],pinnedOnly:!0,neighborhoodOnly:!1,clusterLensMode:!1},{id:"focus",name:"Focus",search:"",sources:[],pinnedOnly:!1,neighborhoodOnly:!0,clusterLensMode:!0}];function Va(t,r){return{id:r,name:t,search:e(Ae),sources:[...e(Te)],pinnedOnly:e(bt),neighborhoodOnly:e(Wt),clusterLensMode:e(ht)}}function jn(t){n(Ae,t.search,!0),n(Te,new Set(t.sources),!0),n(bt,t.pinnedOnly,!0),n(Wt,t.neighborhoodOnly,!0),n(ht,t.clusterLensMode,!0),n(Z,t.id,!0)}function Ja(){if(typeof window>"u")return;const t=e(p)?`Cluster: ${e(p).who??"source"}`:"Custom preset",a=window.prompt("Preset name",t)?.trim();if(!a)return;const c=`custom-${Date.now()}`,g=Va(a,c);n(ue,[g,...e(ue)].slice(0,8),!0),n(Z,c)}function Qa(t){n(ue,e(ue).filter(r=>r.id!==t),!0),e(Z)===t&&n(Z,"all")}async function Hn(){if(e(ae))return;n(ae,!0),n(K,""),n(U,"Loading projection...");const t=++Ke,r=Cn(),a=Ln(r);try{let c=await ia(2,r),g=0;const M=30;for(;c.status==="computing";){if(t!==Ke)return;if(g++,g>=M){n(K,"Projection timed out after 60s. Try refreshing."),n(tt,a,!0);return}n(U,"Computing layout..."),await new Promise(A=>setTimeout(A,2e3)),c=await ia(2,r)}if(c.status==="error"){n(K,c.message??"Projection computation failed",!0),n(tt,a,!0);return}if(t!==Ke)return;const m=c.nodes??[];if(n(V,m.map(Ca),!0),n(pe,c.total??m.length,!0),n(ot,!!(c.hasMore??(c.count??m.length)<(c.total??m.length)),!0),n(tt,a,!0),n(x,new Map(e(V).map(A=>[A.id,A])),!0),m.length===0){n(U,"");return}let T=Number.POSITIVE_INFINITY,w=Number.NEGATIVE_INFINITY,L=Number.POSITIVE_INFINITY,le=Number.NEGATIVE_INFINITY;for(const A of m)A.x<T&&(T=A.x),A.x>w&&(w=A.x),A.y<L&&(L=A.y),A.y>le&&(le=A.y);const k=w-T||1,N=le-L||1,D=560;if(n(pt,m.map((A,te)=>({x:((A.x-T)/k-.5)*D,y:((A.y-L)/N-.5)*D,radius:2.3+(A.importance??.5)*2.8,color:_n(A.who,.85),data:e(V)[te],createdMs:Ma(A.createdAt)})),!0),n(I,e(V).map(A=>A.id),!0),n(s,(c.edges??[]).map(([A,te])=>({source:A,target:te,edgeType:"knn"})),!0),e(B)&&await Za(),n(U,""),await un(),t!==Ke)return;e(B)?(e(vt)?.startKnowledgeGraphSimulation(e(pt),e(s)),e(vt)?.startRendering(!0)):(e(vt)?.startSimulation(e(pt),e(s),e(P)),e(vt)?.startRendering())}catch(c){n(K,c.message||"Failed to load projection",!0),n(U,""),n(tt,a,!0)}}async function Za(){n(H,!0);try{const t=await Do(o.agentId);if(!t){n(de,null);return}n(de,t,!0);const r=new Map;for(const w of e(pt))r.set(w.data.id,w);const a=[],c=[],g=[],M=new Map,m=new Map,T=400;for(const w of t.entities){const L=`entity:${w.id}`,le=es(w),k=(Math.random()-.5)*T,N=(Math.random()-.5)*T,D={id:L,content:w.name,who:w.entityType,importance:.9,pinned:w.pinned,tags:[],createdAt:void 0},A=a.length;m.set(w.id,A),a.push({x:k,y:N,radius:le,color:Kr(w.entityType,.7),data:D,nodeType:"entity",entityData:w}),g.push(L),M.set(L,D);for(const te of w.aspects){const Pe=`aspect:${te.id}`,Ce=Zo(te.weight),Se={id:Pe,content:te.name,who:w.entityType,importance:te.weight,pinned:!1,tags:[],createdAt:void 0},R=a.length;a.push({x:k+(Math.random()-.5)*80,y:N+(Math.random()-.5)*80,radius:Ce,color:Kr(w.entityType,.5),data:Se,nodeType:"aspect",aspectData:te,parentEntityId:w.id}),g.push(Pe),M.set(Pe,Se),c.push({source:A,target:R,edgeType:"hierarchy"});for(const z of te.attributes){const re=`attr:${z.id}`,ee=$o(z.importance),Me={id:re,content:z.content,who:w.entityType,importance:z.importance,pinned:!1,tags:[],createdAt:void 0},he=a.length;if(a.push({x:a[R].x+(Math.random()-.5)*40,y:a[R].y+(Math.random()-.5)*40,radius:ee,color:Kr(w.entityType,.3),data:Me,nodeType:"attribute",attributeData:z,parentEntityId:w.id,parentAspectId:te.id}),g.push(re),M.set(re,Me),c.push({source:R,target:he,edgeType:"hierarchy"}),z.memoryId){const ce=r.get(z.memoryId);if(ce){const Le=a.length;a.push({x:a[he].x+(Math.random()-.5)*25,y:a[he].y+(Math.random()-.5)*25,radius:2,color:ce.color,data:ce.data,nodeType:"memory"}),g.push(ce.data.id),M.set(ce.data.id,ce.data),c.push({source:he,target:Le,edgeType:"hierarchy"})}}}}}if(a.length>3e3){const w=new Map;let L=0;for(let k=0;k<a.length;k++)a[k].nodeType!=="memory"&&(w.set(k,L),a[L]=a[k],g[L]=g[k],L++);a.length=L,g.length=L;let le=0;for(const k of c){const N=w.get(k.source),D=w.get(k.target);N!==void 0&&D!==void 0&&(c[le]={...k,source:N,target:D},le++)}c.length=le,M.clear();for(const k of a)M.set(k.data.id,k.data)}for(const w of t.dependencies){const L=m.get(w.sourceEntityId),le=m.get(w.targetEntityId);L!==void 0&&le!==void 0&&c.push({source:L,target:le,edgeType:"dependency",dependencyType:w.dependencyType,strength:w.strength})}n(pt,a,!0),n(I,g,!0),n(s,c,!0),n(x,M,!0)}finally{n(H,!1)}}async function $a(t){if(!t){n(E,[],!0),n(oe,[],!0),n(Ge,[],!0),n(W,new Map,!0);return}const r=await la(t.id,10);n(E,r.map(a=>({id:a.id,score:a.score??0,kind:"similar"})),!0),n(oe,[],!0),n(Ge,e(E),!0),n(W,new Map(e(E).map(a=>[a.id,a.kind])),!0)}function eo(){n(p,null),n(_,null),n(C,null),n(Et,[],!0),n(jt,"")}function $r(t){const r=e(x).get(t)??null;r&&(n(C,null),n(p,r,!0))}function to(t){if(e(ge)==="2d"){e(vt)?.focusNode(t);return}e(sr)?.focusNode(t)}async function ro(){if(!e(p)||e(Xt))return;n(Xt,!0),n(jt,"");const t=e(p).id,r=!(e(p).pinned??!1),a=await Ao(t,r);if(!a.success){n(jt,a.error??"Failed to update pin state",!0),n(Xt,!1);return}Ra(t,c=>({...c,pinned:r})),e(ge)==="3d"&&e(sr)?.refreshAppearance(),n(Xt,!1)}async function no(){if(e(p)){n(Kt,!0);try{n(Et,await la(e(p).id,10,Ro.filterType||void 0),!0)}finally{n(Kt,!1)}}}async function en(){n(ae,!1),n(U,""),n(K,""),n(se,[],!0),n(p,null),n(_,null),n(C,null),n(Et,[],!0),n(Kt,!1),n(x,new Map,!0),n(W,new Map,!0),n(E,[],!0),n(oe,[],!0),n(Ge,[],!0),n(V,[],!0),n(pe,0),n(ot,!1),n(pt,[],!0),n(s,[],!0),n(I,[],!0),n(jt,""),e(vt)?.stopSimulation(),e(vt)?.stopRendering(),e(vt)?.resetCamera(),e(sr)?.destroy(),n(ge,"2d"),await un(),Hn()}ne(()=>{const t=e(V),r=new Set,a=new Map,c=new Map,g=new Map,M=new Map;for(const m of t){m.pinned&&r.add(m.id);const T=m.who??"unknown";a.set(T,(a.get(T)??0)+1),typeof m.type=="string"&&m.type.length>0&&c.set(m.type,(c.get(m.type)??0)+1);const w=m.sourceType??"memory";g.set(w,(g.get(w)??0)+1),M.set(m.id,[m.content,m.text??"",m.who??"",m.type??"",m.sourceType??"",m.sourceId??"",...m.tags??[]].join(" ").toLowerCase())}if(n(mt,r,!0),n(q,M,!0),n(Qt,[...a.entries()].sort((m,T)=>T[1]-m[1]||m[0].localeCompare(T[0])).map(([m,T])=>({who:m,count:T})),!0),n(Dt,[...c.entries()].sort((m,T)=>T[1]-m[1]||m[0].localeCompare(T[0])).map(([m,T])=>({value:m,count:T})),!0),n(lt,[...g.entries()].sort((m,T)=>T[1]-m[1]||m[0].localeCompare(T[0])).map(([m,T])=>({value:m,count:T})),!0),e(Te).size>0){const m=new Set([...e(Te)].filter(T=>a.has(T)));m.size!==e(Te).size&&n(Te,m,!0)}}),ne(()=>{let t=!1;return(async()=>{const r=await Co();t||n(He,r.filter(a=>a.trim().length>0),!0)})(),()=>{t=!0}}),ne(()=>{if(e(We).size===0||e(He).length===0)return;const t=new Set(e(He)),r=new Set([...e(We)].filter(a=>t.has(a)));r.size!==e(We).size&&n(We,r,!0)}),ne(()=>{const t=e(ie);t==="all"||t==="custom"||n(Ee,Date.now(),!0)}),ne(()=>{const t=e(Ae);if(!t.trim()){clearTimeout(st),n(Re,""),n(It,null),n(Oe,[],!0);return}const r=window.setTimeout(()=>{n(Re,t,!0)},180);return st=r,()=>clearTimeout(r)}),ne(()=>{const t=e(Re).trim().toLowerCase(),r=e(V);if(!t){n(It,null),n(Oe,[],!0);return}const a=new Set,c=[];for(const g of r){const M=e(q).get(g.id);M&&M.includes(t)&&(a.add(g.id),c.push(g))}if(e(B))for(const[g,M]of e(x)){if(a.has(g))continue;[M.content,M.who??"",...M.tags??[]].join(" ").toLowerCase().includes(t)&&(a.add(g),c.push(M))}n(It,a,!0),n(Oe,c.slice(0,50),!0)}),ne(()=>{const t=e(Te);if(t.size===0){n(tr,null);return}n(tr,new Set(e(V).filter(r=>t.has(r.who??"unknown")).map(r=>r.id)),!0)}),ne(()=>{if(!(typeof window>"u"||e(ze))){try{const t=window.localStorage.getItem(Xn);if(t){const r=JSON.parse(t);if(Array.isArray(r)){const a=r.filter(c=>{if(typeof c!="object"||c===null)return!1;const g=c;return typeof g.id=="string"&&typeof g.name=="string"&&typeof g.search=="string"&&Array.isArray(g.sources)&&typeof g.pinnedOnly=="boolean"&&typeof g.neighborhoodOnly=="boolean"&&typeof g.clusterLensMode=="boolean"});n(ue,a.slice(0,8),!0)}}}catch{n(ue,[],!0)}n(ze,!0)}}),ne(()=>{typeof window>"u"||!e(ze)||window.localStorage.setItem(Xn,JSON.stringify(e(ue)))}),ne(()=>{if(!(typeof window>"u"||e(qe)))try{const t=window.localStorage.getItem(fa);if(t){const r=JSON.parse(t);if(typeof r=="object"&&r!==null){const a=r;n(P,bn({centerForce:typeof a.centerForce=="number"?a.centerForce:Ir.centerForce,repelForce:typeof a.repelForce=="number"?a.repelForce:Ir.repelForce,linkForce:typeof a.linkForce=="number"?a.linkForce:Ir.linkForce,linkDistance:typeof a.linkDistance=="number"?a.linkDistance:Ir.linkDistance}),!0)}}}finally{n(qe,!0)}}),ne(()=>{typeof window>"u"||!e(qe)||window.localStorage.setItem(fa,JSON.stringify(e(P)))}),ne(()=>{if(!(typeof window>"u"||e(ar))){try{const t=window.sessionStorage.getItem($e);(t==="source"||t==="newness"||t==="none")&&n($,t,!0),window.sessionStorage.getItem(ct)==="true"&&n(_t,!0)}catch{}try{const t=window.localStorage.getItem(Ue);if(t){const r=Number.parseInt(t,10);Number.isNaN(r)||n(rr,r,!0)}}catch{}try{window.localStorage.removeItem(Ct),window.localStorage.removeItem(me)}catch{}n(ar,!0)}}),ne(()=>{if(!(typeof window>"u"||!e(ar))){try{e($)==="source"?window.sessionStorage.removeItem($e):window.sessionStorage.setItem($e,e($))}catch{}try{e(_t)&&e($)!=="none"?window.sessionStorage.setItem(ct,"true"):window.sessionStorage.removeItem(ct)}catch{}try{e(nr)!==null&&window.localStorage.setItem(Ue,String(e(nr)))}catch{}}}),ne(()=>{if(!(typeof window>"u"))try{window.sessionStorage.getItem(_e)==="true"&&n(B,!0)}catch{}}),ne(()=>{if(!(typeof window>"u"))try{e(B)?window.sessionStorage.setItem(_e,"true"):window.sessionStorage.removeItem(_e)}catch{}}),ne(()=>{if(typeof window>"u")return;const t=window.setInterval(()=>{n(qt,Date.now(),!0)},6e4);return()=>window.clearInterval(t)}),ne(()=>{const t=new Set;if(e(ht)){const r=e(p)??e(Gt);if(r){t.add(r.id);const a=e(p)!==null?e(Ge):e(Gr);for(const c of a)t.add(c.id)}}n(G,t,!0)}),ne(()=>{e(ht),e(G),Xr()}),ne(()=>{e($),e(_t),e(qt),e(rr),e(ge)==="2d"&&e(vt)?.requestRedraw(),Xr()}),ne(()=>{!e(ae)||typeof window>"u"||e(nr)===null&&n(nr,Date.now(),!0)}),ne(()=>{e(P),e(ae)&&e(ge)==="2d"&&e(vt)?.updatePhysics(e(P))});const ao=Q(()=>Ln(Cn()));ne(()=>{const t=e(ao);if(!e(ae)||e(U).length>0||t===e(tt))return;clearTimeout(Ht);const r=window.setTimeout(()=>{en()},220);return Ht=r,()=>clearTimeout(r)}),ne(()=>{const t=e(bt)===!0?new Set(e(mt)):null,r=e(p)??e(Gt),a=e(p)?e(Ge):e(Gr),c=e(Wt)===!0&&r?new Set([r.id,...a.map(g=>g.id)]):null;n(Pt,Aa([e(It),e(tr),t,c]),!0),Xr()}),ne(()=>{$a(e(p))}),ne(()=>{const t=e($t),r=e(E),a=e(oe);n(Ge,t==="similar"?r:a,!0),n(W,new Map(e(Ge).map(c=>[c.id,c.kind])),!0),Xr()});const Gt=Q(()=>e(C)?e(x).get(e(C))??null:e(_)),Gn=Q(Qr),oo=Q(()=>{e(I);const t=e(s),r=new Map;for(const a of t){const c=Yn(a.source),g=Yn(a.target);if(!c||!g||c===g)continue;const M=r.get(c)??new Map;M.set(g,(M.get(g)??0)+1),r.set(c,M);const m=r.get(g)??new Map;m.set(c,(m.get(c)??0)+1),r.set(g,m)}return r}),Gr=Q(()=>{const t=e(Gt);if(!t)return[];const r=e(oo).get(t.id);if(!r||r.size===0)return[];const a=[...r.entries()].sort((g,M)=>M[1]-g[1]).slice(0,6),c=a[0]?.[1]??1;return a.map(([g,M])=>({id:g,score:M/c,kind:"similar"}))}),so=Q(()=>new Map(e(Gr).map(t=>[t.id,"similar"]))),zn=Q(()=>e(p)?e(W):e(so)),wr=Q(()=>{const t=e(p);return t?e(pt).find(r=>r.data.id===t.id)??null:null}),tn=Q(()=>e(p)?[]:e(Gr)),Bn=Q(()=>{const t=new Map(e(Qt).map(c=>[c.who,c])),r=Ze.map(c=>t.get(c)).filter(c=>!!c),a=e(Qt).filter(c=>!Xe.has(c.who));return[...r,...a].slice(0,8)});ne(()=>{e(p)&&e(C)&&n(C,null)}),ne(()=>{const t=e(C);t&&(e(x).has(t)||n(C,null))}),ne(()=>{const t=e(O);if(!t)return;Ut=t.getBoundingClientRect();const r=new ResizeObserver(()=>{Ut=t.getBoundingClientRect()});return r.observe(t),()=>r.disconnect()}),ne(()=>{e(X)&&An()}),ne(()=>{if(typeof window>"u")return;const t=r=>{if(r.key==="Shift"){qa();return}r.key==="Escape"&&On()};return window.addEventListener("keydown",t),()=>{window.removeEventListener("keydown",t)}}),ne(()=>{if(!e(O))return;const t=new IntersectionObserver(r=>{r[0].isIntersecting&&!e(ae)&&!e(Tn)&&(n(Tn,!0),Hn())},{threshold:.1});return t.observe(e(O)),()=>t.disconnect()}),ne(()=>{kr.embeddings.controlsOpen=e(xe),kr.embeddings.presetsOpen=e(Ye),kr.embeddings.sourcesOpen=e(Be),Bo()});var rn=Ki();Ar("keydown",Fo,ka);var Wn=l(rn);{var io=t=>{Go(t,{title:"Constellation",children:(r,a)=>{zo(r,{group:"memory",get tabs(){return Yo},get activeTab(){return sa.activeTab},onselect:(c,g)=>Oo(g)})}})};j(Wn,t=>{f()||t(io)})}var Kn=d(Wn,2),Sr=l(Kn),qn=l(Sr);{var lo=t=>{var r=zs();Bt(r,"",{},{top:"52px"});var a=l(r),c=l(a);i(a),i(r),F(()=>h(c,`${gn.Unlock} preview`)),Y("click",a,On),u(t,r)};j(qn,t=>{e(C)&&t(lo)})}var Un=d(qn,2);{var co=t=>{var r=Qs(),a=l(r),c=l(a),g=l(c),M=d(g),m=d(M),T=l(m);i(m);var w=d(m,2);{var L=N=>{var D=Bs(),A=l(D);i(D),F(te=>h(A,`${te??""}%`),[()=>Math.round(e(At).percent)]),u(N,D)};j(w,N=>{e(_r)&&e(At)&&N(L)})}i(c);var le=d(c,2);{var k=N=>{var D=Js(),A=l(D),te=d(l(A),2),Pe=l(te);i(te),i(A);var Ce=d(A,2);{var Se=z=>{var re=qs(),ee=l(re),Me=l(ee,!0);i(ee);var he=d(ee,2);{var ce=Ne=>{var ke=Ws(),Fe=l(ke,!0);i(ke),F(()=>h(Fe,e(lr))),u(Ne,ke)};j(he,Ne=>{e(lr)&&Ne(ce)})}var Le=d(he,2);{var Ve=Ne=>{var ke=Ks(),Fe=l(ke),rt=l(Fe),wt=l(rt);i(rt);var ft=d(rt,2),Qe=l(ft);i(ft),i(Fe);var De=d(Fe,2),St=l(De);i(De);var Zt=d(De,2),vr=l(Zt);i(Zt),i(ke),F((fr,xr,J,nt,Vt)=>{h(wt,`${fr??""} / ${xr??""}`),h(Qe,`${J??""}%`),Bt(St,nt),h(vr,`${Vt??""} remaining · ${e(At).coverage??""} coverage`)},[()=>e(At).completed.toLocaleString(),()=>e(At).baseline.toLocaleString(),()=>Math.round(e(At).percent),()=>`width:${Math.max(0,Math.min(100,e(At).percent))}%`,()=>e(At).remaining.toLocaleString()]),u(Ne,ke)};j(Le,Ne=>{e(At)&&Ne(Ve)})}i(re),F(()=>h(Me,e(ir))),u(z,re)};j(Ce,z=>{e(ir)&&z(Se)})}var R=d(Ce,2);Mt(R,21,()=>e(ur).checks,kt,(z,re)=>{var ee=Vs(),Me=l(ee),he=d(Me,2),ce=l(he),Le=l(ce),Ve=l(Le,!0);i(Le);var Ne=d(Le,2),ke=l(Ne,!0);i(Ne),i(ce);var Fe=d(ce,2),rt=l(Fe,!0);i(Fe);var wt=d(Fe,2);{var ft=Qe=>{var De=Us(),St=l(De,!0);i(De),F(()=>{De.disabled=e(_r),h(St,e(_r)?"running...":e(re).fix)}),Y("click",De,()=>Na(e(re))),u(Qe,De)};j(wt,Qe=>{e(re).fix&&e(re).status!=="ok"&&Qe(ft)})}i(he),i(ee),F(Qe=>{Bt(Me,`background:${Qe??""}`),h(Ve,e(re).name),h(ke,e(re).status),h(rt,e(re).message)},[()=>Pa(e(re).status)]),u(z,ee)}),i(R),i(D),F(()=>h(Pe,`${e(ur).config.provider??""}/${e(ur).config.model??""}`)),u(N,D)};j(le,N=>{e(Ur)&&N(k)})}i(a),i(r),F((N,D)=>{Bt(g,`background:${N??""}`),h(M,` ${e(ur).status??""} `),h(T,`${D??""}%`)},[()=>Fa(e(ur).status),()=>Math.round(e(ur).score*100)]),Y("click",c,()=>n(Ur,!e(Ur))),u(t,r)};j(Un,t=>{e(ur)&&t(co)})}var nn=d(Un,2),uo=l(nn);Yt(uo,()=>Lr,(t,r)=>{r(t,{class:"pointer-events-auto flex min-w-[180px] max-h-full flex-col-reverse",get open(){return e(S)},set open(a){n(S,a,!0)},children:(a,c)=>{var g=li(),M=be(g);Yt(M,()=>Pr,(T,w)=>{w(T,{class:"flex w-full items-center gap-2 px-3 py-1.5 min-w-[180px] border border-[var(--sig-border)] text-[10px] font-mono uppercase tracking-[0.06em] text-[var(--sig-text-muted)] bg-transparent",get"aria-expanded"(){return e(S)},children:(L,le)=>{var k=Zs(),N=d(be(k),2);{let D=Q(()=>`size-3 text-[var(--sig-text-muted)] transition-transform ${e(S)?"rotate-180":""}`);Dr(N,{get class(){return e(D)}})}u(L,k)},$$slots:{default:!0}})});var m=d(M,2);Yt(m,()=>Cr,(T,w)=>{w(T,{class:"min-h-0 max-h-[min(40vh,24rem)] overflow-y-auto border border-[var(--sig-border)] bg-[rgba(5,5,5,0.88)] px-3 py-2",children:(L,le)=>{var k=ii(),N=be(k),D=d(l(N));i(N);var A=d(N,2);{var te=ee=>{var Me=ei(),he=be(Me),ce=l(he),Le=l(ce);gr(),i(ce);var Ve=d(ce,2),Ne=l(Ve);gr(),i(Ve);var ke=d(Ve,2),Fe=l(ke);gr(),i(ke);var rt=d(ke,2),wt=l(rt);gr(),i(rt),i(he);var ft=d(he,2);Mt(ft,21,()=>e(Bn),kt,(Qe,De)=>{var St=$s(),Zt=l(St);i(St),F(vr=>{xt(St,1,`h-5 inline-flex items-center gap-1 px-1.5 py-0 font-mono text-[10px] border border-[rgba(255,255,255,0.14)] ${vr??""}`),h(Zt,`${e(De).who??""} ${e(De).count??""}`)},[()=>e(Te).size===0||e(Te).has(e(De).who)?"bg-[rgba(255,255,255,0.08)] text-[var(--sig-text-bright)]":"bg-transparent text-[var(--sig-text-muted)]"]),u(Qe,St)}),i(ft),F((Qe,De,St,Zt)=>{Bt(Le,Qe),Bt(Ne,De),Bt(Fe,St),Bt(wt,Zt)},[()=>`background:${jr(3e5,.95)}`,()=>`background:${jr(108e5,.9)}`,()=>`background:${jr(2592e5,.85)}`,()=>`background:${jr(2592e6,.85)}`]),u(ee,Me)},Pe=ee=>{var Me=ri();Mt(Me,21,()=>e(Bn),kt,(he,ce)=>{var Le=ti(),Ve=l(Le),Ne=d(Ve);i(Le),F((ke,Fe)=>{xt(Le,1,`h-5 inline-flex items-center gap-1 px-1.5 py-0 font-mono text-[10px] border border-[rgba(255,255,255,0.14)] ${ke??""}`),Bt(Ve,Fe),h(Ne,` ${e(ce).who??""} ${e(ce).count??""}`)},[()=>e(Te).size===0||e(Te).has(e(ce).who)?"bg-[rgba(255,255,255,0.08)] text-[var(--sig-text-bright)]":"bg-transparent text-[var(--sig-text-muted)]",()=>`background:${ya(e(ce).who,1)}`]),u(he,Le)}),i(Me),u(ee,Me)},Ce=ee=>{var Me=ni();u(ee,Me)};j(A,ee=>{e($)==="newness"?ee(te):e($)==="source"?ee(Pe,1):ee(Ce,-1)})}var Se=d(A,6);{var R=ee=>{var Me=ai();u(ee,Me)};j(Se,ee=>{e(_t)&&e($)!=="none"&&ee(R)})}var z=d(Se,4);{var re=ee=>{var Me=si(),he=d(l(Me),2);Mt(he,21,()=>Object.entries(qr),kt,(ce,Le)=>{var Ve=Q(()=>Po(e(Le),2));let Ne=()=>e(Ve)[0],ke=()=>e(Ve)[1];var Fe=pr(),rt=be(Fe);{var wt=ft=>{var Qe=oi(),De=l(Qe),St=d(De);i(Qe),F(()=>{Bt(De,`background:${ke()}; clip-path: polygon(50% 0%, 100% 25%, 100% 75%, 50% 100%, 0% 75%, 0% 25%);`),h(St,` ${Ne()??""}`)}),u(ft,Qe)};j(rt,ft=>{Ne()!=="unknown"&&ft(wt)})}u(ce,Fe)}),i(he),gr(2),i(Me),u(ee,Me)};j(z,ee=>{e(B)&&ee(re)})}F(()=>h(D,` = ${e($)==="none"?"off":e($)==="newness"?"by recency":"by source"}`)),u(L,k)},$$slots:{default:!0}})}),u(a,g)},$$slots:{default:!0}})}),i(nn);var Vn=d(nn,2);{var go=t=>{var r=di(),a=l(r),c=l(a,!0);i(a),i(r),F(()=>h(c,e(U))),u(t,r)},po=t=>{var r=ci(),a=l(r),c=l(a,!0);i(a),i(r),F(()=>h(c,e(K))),u(t,r)},vo=t=>{var r=ui();u(t,r)},fo=t=>{var r=gi();u(t,r)};j(Vn,t=>{e(U)?t(go):e(K)?t(po,1):e(ae)&&e(V).length===0?t(vo,2):e(ae)||t(fo,3)})}var Jn=d(Vn,2);Bt(Jn,"",{},{top:"20px"});var Qn=d(Jn,4);{var xo=t=>{var r=mi(),a=l(r),c=l(a),g=l(c,!0);i(c);var M=d(c,2);{var m=R=>{var z=pi(),re=l(z,!0);i(z),F(()=>h(re,e(Gt).type)),u(R,z)};j(M,R=>{e(Gt).type&&R(m)})}var T=d(M,2);{var w=R=>{var z=vi();u(R,z)};j(T,R=>{e(Gt).pinned&&R(w)})}var L=d(T,2);{var le=R=>{var z=fi();u(R,z)};j(L,R=>{e(C)&&R(le)})}i(a);var k=d(a,2),N=l(k);i(k);var D=d(k,2),A=l(D,!0);i(D);var te=d(D,2),Pe=l(te,!0);i(te);var Ce=d(te,2);{var Se=R=>{var z=bi(),re=d(l(z),2);Mt(re,21,()=>e(tn),kt,(ee,Me)=>{const he=Q(()=>e(x).get(e(Me).id));var ce=pr(),Le=be(ce);{var Ve=Ne=>{var ke=xi(),Fe=l(ke),rt=l(Fe,!0);i(Fe);var wt=d(Fe,2),ft=l(wt);i(wt),i(ke),F((Qe,De)=>{h(rt,Qe),h(ft,`${De??""}%`)},[()=>yr(e(he)),()=>Math.round(e(Me).score*100)]),u(Ne,ke)};j(Le,Ne=>{e(he)&&Ne(Ve)})}u(ee,ce)}),i(re),i(z),u(R,z)};j(Ce,R=>{e(tn).length>0&&R(Se)})}i(r),hr(r,R=>n(X,R),()=>e(X)),F((R,z,re)=>{h(g,e(Gt).who??"unknown"),h(N,`importance ${R??""}% · ${z??""} · linked ${e(tn).length??""}`),h(A,re),h(Pe,e(C)?"ESC or Unlock Preview button":"Hold Shift to lock preview")},[()=>Math.round((e(Gt).importance??0)*100),()=>La(e(Gt).createdAt),()=>yr(e(Gt))]),u(t,r)};j(Qn,t=>{e(Gt)&&t(xo)})}var zr=d(Qn,2);let Zn;var bo=l(zr);{var mo=t=>{{let r=Q(()=>e(ht)&&e(G).size>0),a=Q(()=>e(Te).size>0?e(Te):null);hr(us(t,{get nodes(){return e(pt)},get edges(){return e(s)},get graphPhysics(){return e(P)},get graphSelected(){return e(p)},get graphHovered(){return e(Gt)},get embeddingFilterIds(){return e(Pt)},get relationLookup(){return e(zn)},get pinnedIds(){return e(mt)},get lensIds(){return e(G)},get clusterLensMode(){return e(r)},get colorMode(){return e($)},get nowMs(){return e(qt)},get showNewSinceLastSeen(){return e(_t)},get lastSeenMs(){return e(rr)},get sourceFocusSources(){return e(a)},onselectnode:c=>{c?$r(c.id):n(p,null)},onhovernode:Rn}),c=>n(vt,c,!0),()=>e(vt))}},ho=t=>{var r=hi(),a=l(r),c=l(a,!0);i(a),i(r),F(()=>h(c,e(U))),u(t,r)},yo=t=>{var r=yi(),a=l(r),c=l(a,!0);i(a),i(r),F(()=>h(c,e(K))),u(t,r)};j(bo,t=>{e(ae)?t(mo):e(U)?t(ho,1):e(K)&&t(yo,2)})}i(zr);var an=d(zr,2);let $n;var _o=l(an);{var wo=t=>{var r=pr(),a=be(r);{let c=Q(()=>e(ht)&&e(G).size>0),g=Q(()=>e(Te).size>0?e(Te):null);Yt(a,()=>e(Rr),(M,m)=>{hr(m(M,{get embeddings(){return e(V)},get projected3d(){return e(se)},get graphSelected(){return e(p)},get embeddingFilterIds(){return e(Pt)},get relationLookup(){return e(zn)},get pinnedIds(){return e(mt)},get lensIds(){return e(G)},get clusterLensMode(){return e(c)},get embeddingById(){return e(x)},get colorMode(){return e($)},get nowMs(){return e(qt)},get showNewSinceLastSeen(){return e(_t)},get lastSeenMs(){return e(rr)},get sourceFocusSources(){return e(g)},onselectnode:T=>{T?$r(T.id):n(p,null)},onhovernode:Rn}),T=>n(sr,T,!0),()=>e(sr))})}u(t,r)},So=t=>{var r=_i(),a=l(r),c=l(a,!0);i(a),i(r),F(()=>h(c,e(U)||"Loading 3D...")),u(t,r)};j(_o,t=>{e(Rr)&&!e(Or)?t(wo):e(Or)&&t(So,1)})}i(an),i(Sr),hr(Sr,t=>n(O,t),()=>e(O));var ea=d(Sr,2),on=l(ea),ta=l(on);Yt(ta,()=>Lr,(t,r)=>{r(t,{class:"border border-[var(--sig-border)]",get open(){return e(xe)},set open(a){n(xe,a,!0)},children:(a,c)=>{var g=ki(),M=be(g);Yt(M,()=>Pr,(T,w)=>{w(T,{class:"flex w-full items-center justify-between px-2 py-1.5 border-none text-[10px] uppercase tracking-[0.08em] font-mono text-[var(--sig-highlight)]",style:"background: color-mix(in srgb, var(--sig-highlight), var(--sig-bg) 94%);",children:(L,le)=>{var k=wi(),N=d(be(k),2);{let D=Q(()=>`size-3 text-[var(--sig-text-muted)] transition-transform ${e(xe)?"rotate-180":""}`);Dr(N,{get class(){return e(D)}})}u(L,k)},$$slots:{default:!0}})});var m=d(M,2);Yt(m,()=>Cr,(T,w)=>{w(T,{children:(L,le)=>{var k=Mi(),N=l(k),D=l(N);Jt(D),hr(D,Ft=>Je=Ft,()=>Je);var A=d(D,2);{var te=Ft=>{var Fr=Si(),cn=l(Fr,!0);i(Fr),F(()=>h(cn,e(Oe).length)),u(Ft,Fr)};j(A,Ft=>{e(Ae)&&Ft(te)})}i(N);var Pe=d(N,2),Ce=l(Pe);i(Pe);var Se=d(Pe,2),R=l(Se),z=d(R,2),re=d(z,2),ee=d(re,2),Me=l(ee,!0);i(ee),i(Se);var he=d(Se,2),ce=d(l(he),2),Le=l(ce),Ve=d(Le,2),Ne=d(Ve,2);i(ce),i(he);var ke=d(he,2),Fe=d(l(ke),2),rt=l(Fe),wt=d(rt,2),ft=l(wt,!0);i(wt),i(Fe),i(ke);var Qe=d(ke,2),De=d(l(Qe),2),St=l(De),Zt=d(l(St),2),vr=l(Zt,!0);i(Zt),i(St);var fr=d(St,2);Jt(fr),i(De);var xr=d(De,2),J=l(xr),nt=d(l(J),2),Vt=l(nt,!0);i(nt),i(J);var Rt=d(J,2);Jt(Rt),i(xr);var at=d(xr,2),zt=l(at),Ot=d(l(zt),2),br=l(Ot,!0);i(Ot),i(zt);var er=d(zt,2);Jt(er),i(at);var sn=d(at,2),ln=l(sn),aa=d(l(ln),2),Io=l(aa,!0);i(aa),i(ln);var dn=d(ln,2);Jt(dn),i(sn);var To=d(sn,2);i(Qe),i(k),F((Ft,Fr,cn,Eo)=>{h(Ce,`Window ${e(Gn).offset+1}-${e(Gn).offset+e(V).length} / ${e(pe)??""}`),xt(R,1,`px-2 py-[2px] font-mono text-[10px] uppercase border border-[var(--sig-border-strong)] ${e(bt)?"text-[var(--sig-highlight)] bg-[color-mix(in_srgb,var(--sig-highlight),var(--sig-bg)_90%)]":"text-[var(--sig-text-muted)] bg-transparent"}`),xt(z,1,`px-2 py-[2px] font-mono text-[10px] uppercase border border-[var(--sig-border-strong)] ${e(Wt)?"text-[var(--sig-highlight)] bg-[color-mix(in_srgb,var(--sig-highlight),var(--sig-bg)_90%)]":"text-[var(--sig-text-muted)] bg-transparent"}`),xt(re,1,`px-2 py-[2px] font-mono text-[10px] uppercase border border-[var(--sig-border-strong)] ${e(ht)?"text-[var(--sig-highlight)] bg-[color-mix(in_srgb,var(--sig-highlight),var(--sig-bg)_90%)]":"text-[var(--sig-text-muted)] bg-transparent"}`),h(Me,gn.Reset),xt(Le,1,`px-2 py-[2px] font-mono text-[10px] uppercase border border-[var(--sig-border-strong)] ${e($)==="newness"?"text-[var(--sig-highlight)] bg-[color-mix(in_srgb,var(--sig-highlight),var(--sig-bg)_90%)]":"text-[var(--sig-text-muted)] bg-transparent"}`),xt(Ve,1,`px-2 py-[2px] font-mono text-[10px] uppercase border border-[var(--sig-border-strong)] ${e($)==="source"?"text-[var(--sig-highlight)] bg-[color-mix(in_srgb,var(--sig-highlight),var(--sig-bg)_90%)]":"text-[var(--sig-text-muted)] bg-transparent"}`),xt(Ne,1,`px-2 py-[2px] font-mono text-[10px] uppercase border border-[var(--sig-border-strong)] ${e($)==="none"?"text-[var(--sig-highlight)] bg-[color-mix(in_srgb,var(--sig-highlight),var(--sig-bg)_90%)]":"text-[var(--sig-text-muted)] bg-transparent"}`),xt(rt,1,`px-2 py-[2px] font-mono text-[10px] uppercase border border-[var(--sig-border-strong)] ${e(_t)&&e($)!=="none"?"text-[var(--sig-highlight)] bg-[color-mix(in_srgb,var(--sig-highlight),var(--sig-bg)_90%)]":"text-[var(--sig-text-muted)] bg-transparent"} ${e($)==="none"?"opacity-60 cursor-not-allowed":""}`),rt.disabled=e($)==="none",xt(wt,1,`px-2 py-[2px] font-mono text-[10px] uppercase border border-[var(--sig-border-strong)] ${e(B)?"text-[var(--sig-highlight)] bg-[color-mix(in_srgb,var(--sig-highlight),var(--sig-bg)_90%)]":"text-[var(--sig-text-muted)] bg-transparent"}`),h(ft,e(H)?"Loading...":"Entities"),h(vr,Ft),Br(fr,e(P).centerForce),h(Vt,Fr),Br(Rt,e(P).repelForce),h(br,cn),Br(er,e(P).linkForce),h(Io,Eo),Br(dn,e(P).linkDistance)},[()=>e(P).centerForce.toFixed(2),()=>Math.round(e(P).repelForce),()=>e(P).linkForce.toFixed(2),()=>Math.round(e(P).linkDistance)]),Y("input",D,()=>n(Z,"custom-live")),dr(D,()=>e(Ae),Ft=>n(Ae,Ft)),Y("click",R,Ga),Y("click",z,za),Y("click",re,Ba),Y("click",ee,Ha),Y("click",Le,()=>n($,"newness")),Y("click",Ve,()=>n($,"source")),Y("click",Ne,()=>{n($,"none"),n(_t,!1)}),Y("click",rt,()=>n(_t,!e(_t))),Y("click",wt,()=>{n(B,!e(B)),e(ae)&&en()}),Y("input",fr,Ft=>Nr({centerForce:Hr(Ft,e(P).centerForce)})),Y("input",Rt,Ft=>Nr({repelForce:Hr(Ft,e(P).repelForce)})),Y("input",er,Ft=>Nr({linkForce:Hr(Ft,e(P).linkForce)})),Y("input",dn,Ft=>Nr({linkDistance:Hr(Ft,e(P).linkDistance)})),Y("click",To,()=>Nr(Ir)),u(L,k)},$$slots:{default:!0}})}),u(a,g)},$$slots:{default:!0}})});var ra=d(ta,2);Yt(ra,()=>Lr,(t,r)=>{r(t,{class:"border border-[var(--sig-border)]",get open(){return e(Ye)},set open(a){n(Ye,a,!0)},children:(a,c)=>{var g=Fi(),M=be(g);Yt(M,()=>Pr,(T,w)=>{w(T,{class:"flex w-full items-center justify-between px-2 py-1.5 border-none text-[10px] uppercase tracking-[0.08em] font-mono text-[var(--sig-highlight)]",style:"background: color-mix(in srgb, var(--sig-highlight), var(--sig-bg) 94%);",children:(L,le)=>{var k=Ii(),N=d(be(k),2);{let D=Q(()=>`size-3 text-[var(--sig-text-muted)] transition-transform ${e(Ye)?"rotate-180":""}`);Dr(N,{get class(){return e(D)}})}u(L,k)},$$slots:{default:!0}})});var m=d(M,2);Yt(m,()=>Cr,(T,w)=>{w(T,{children:(L,le)=>{var k=Ni(),N=l(k);Mt(N,17,()=>Ua,kt,(Pe,Ce)=>{var Se=Ti(),R=l(Se,!0);i(Se),F(()=>{xt(Se,1,`px-2 py-[2px] font-mono text-[10px] uppercase border border-[var(--sig-border-strong)] ${e(Z)===e(Ce).id?"text-[var(--sig-highlight)] bg-[color-mix(in_srgb,var(--sig-highlight),var(--sig-bg)_90%)]":"text-[var(--sig-text-muted)] bg-transparent"}`),h(R,e(Ce).name)}),Y("click",Se,()=>jn(e(Ce))),u(Pe,Se)});var D=d(N,2);Mt(D,17,()=>e(ue),kt,(Pe,Ce)=>{var Se=Ei(),R=l(Se),z=l(R,!0);i(R);var re=d(R,2);i(Se),F(()=>{xt(R,1,`px-2 py-[2px] font-mono text-[10px] ${e(Z)===e(Ce).id?"text-[var(--sig-highlight)] bg-[color-mix(in_srgb,var(--sig-highlight),var(--sig-bg)_90%)]":"text-[var(--sig-text-muted)] bg-transparent"}`),h(z,e(Ce).name),fn(re,"aria-label",`Delete ${e(Ce).name} preset`)}),Y("click",R,()=>jn(e(Ce))),Y("click",re,()=>Qa(e(Ce).id)),u(Pe,Se)});var A=d(D,2),te=l(A,!0);i(A),i(k),F(()=>h(te,gn.Save)),Y("click",A,Ja),u(L,k)},$$slots:{default:!0}})}),u(a,g)},$$slots:{default:!0}})});var na=d(ra,2);Yt(na,()=>Lr,(t,r)=>{r(t,{class:"border border-[var(--sig-border)]",get open(){return e(Be)},set open(a){n(Be,a,!0)},children:(a,c)=>{var g=Ai(),M=be(g);Yt(M,()=>Pr,(T,w)=>{w(T,{class:"flex w-full items-center justify-between px-2 py-1.5 border-none text-[10px] uppercase tracking-[0.08em] font-mono text-[var(--sig-highlight)]",style:"background: color-mix(in srgb, var(--sig-highlight), var(--sig-bg) 94%);",children:(L,le)=>{var k=Pi(),N=d(be(k),2);{let D=Q(()=>`size-3 text-[var(--sig-text-muted)] transition-transform ${e(Be)?"rotate-180":""}`);Dr(N,{get class(){return e(D)}})}u(L,k)},$$slots:{default:!0}})});var m=d(M,2);Yt(m,()=>Cr,(T,w)=>{w(T,{children:(L,le)=>{var k=Di(),N=l(k);{var D=te=>{var Pe=Ci();u(te,Pe)},A=te=>{var Pe=pr(),Ce=be(Pe);Mt(Ce,17,()=>e(Qt),kt,(Se,R)=>{var z=Li(),re=l(z);i(z),F(ee=>{xt(z,1,`px-2 py-[2px] font-mono text-[10px] border border-[var(--sig-border-strong)] ${ee??""}`),h(re,`${e(R).who??""} ${e(R).count??""}`)},[()=>e(Te).size===0||e(Te).has(e(R).who)?"text-[var(--sig-highlight)] bg-[color-mix(in_srgb,var(--sig-highlight),var(--sig-bg)_90%)]":"text-[var(--sig-text-muted)] bg-transparent"]),Y("click",z,()=>Wa(e(R).who)),u(Se,z)}),u(te,Pe)};j(N,te=>{e(Qt).length===0?te(D):te(A,-1)})}i(k),u(L,k)},$$slots:{default:!0}})}),u(a,g)},$$slots:{default:!0}})});var Mo=d(na,2);Yt(Mo,()=>Lr,(t,r)=>{r(t,{class:"border border-[var(--sig-border)]",get open(){return e(dt)},set open(a){n(dt,a,!0)},children:(a,c)=>{var g=Wi(),M=be(g);Yt(M,()=>Pr,(T,w)=>{w(T,{class:"flex w-full items-center justify-between px-2 py-1.5 border-none text-[10px] uppercase tracking-[0.08em] font-mono text-[var(--sig-highlight)]",style:"background: color-mix(in srgb, var(--sig-highlight), var(--sig-bg) 94%);",children:(L,le)=>{var k=Ri(),N=d(be(k),2);{let D=Q(()=>`size-3 text-[var(--sig-text-muted)] transition-transform ${e(dt)?"rotate-180":""}`);Dr(N,{get class(){return e(D)}})}u(L,k)},$$slots:{default:!0}})});var m=d(M,2);Yt(m,()=>Cr,(T,w)=>{w(T,{children:(L,le)=>{var k=Bi(),N=l(k),D=d(l(N),2);Jt(D);var A=d(D,4);Jt(A);var te=d(A,2),Pe=l(te);Pe.value=Pe.__value="all";var Ce=d(Pe);Ce.value=Ce.__value="24h";var Se=d(Ce);Se.value=Se.__value="7d";var R=d(Se);R.value=R.__value="30d";var z=d(R);z.value=z.__value="90d";var re=d(z);re.value=re.__value="custom",i(te),i(N);var ee=d(N,2);{var Me=J=>{var nt=Oi(),Vt=l(nt);Jt(Vt);var Rt=d(Vt,2);Jt(Rt),i(nt),dr(Vt,()=>e(ye),at=>n(ye,at)),dr(Rt,()=>e(je),at=>n(je,at)),u(J,nt)};j(ee,J=>{e(ie)==="custom"&&J(Me)})}var he=d(ee,2),ce=l(he),Le=l(ce);Le.value=Le.__value="all";var Ve=d(Le);Ve.value=Ve.__value="pinned";var Ne=d(Ve);Ne.value=Ne.__value="unpinned",i(ce);var ke=d(ce,2);Jt(ke);var Fe=d(ke,2);Jt(Fe);var rt=d(Fe,2);Jt(rt);var wt=d(rt,2);Jt(wt),i(he);var ft=d(he,2),Qe=d(l(ft),2);{var De=J=>{var nt=Yi();u(J,nt)},St=J=>{var nt=pr(),Vt=be(nt);Mt(Vt,17,()=>e(He),kt,(Rt,at)=>{var zt=Xi(),Ot=l(zt,!0);i(zt),F(br=>{xt(zt,1,`px-2 py-[2px] font-mono text-[10px] border border-[var(--sig-border-strong)] ${br??""}`),h(Ot,e(at))},[()=>e(We).has(e(at))?"text-[var(--sig-highlight)] bg-[color-mix(in_srgb,var(--sig-highlight),var(--sig-bg)_90%)]":"text-[var(--sig-text-muted)] bg-transparent"]),Y("click",zt,()=>Ya(e(at))),u(Rt,zt)}),u(J,nt)};j(Qe,J=>{e(He).length===0?J(De):J(St,-1)})}i(ft);var Zt=d(ft,2);{var vr=J=>{var nt=Hi(),Vt=d(l(nt),2);Mt(Vt,17,()=>[...new Set([...e(gt),...e(Dt).map(Rt=>Rt.value)])],kt,(Rt,at)=>{const zt=Q(()=>e(Dt).find(er=>er.value===e(at))?.count??0);var Ot=ji(),br=l(Ot);i(Ot),F(er=>{xt(Ot,1,`px-2 py-[2px] font-mono text-[10px] border border-[var(--sig-border-strong)] ${er??""}`),h(br,`${e(at)??""}${e(zt)>0?` ${e(zt)}`:""}`)},[()=>e(gt).has(e(at))?"text-[var(--sig-highlight)] bg-[color-mix(in_srgb,var(--sig-highlight),var(--sig-bg)_90%)]":"text-[var(--sig-text-muted)] bg-transparent"]),Y("click",Ot,()=>Xa(e(at))),u(Rt,Ot)}),i(nt),u(J,nt)};j(Zt,J=>{(e(Dt).length>0||e(gt).size>0)&&J(vr)})}var fr=d(Zt,2);{var xr=J=>{var nt=zi(),Vt=d(l(nt),2);Mt(Vt,17,()=>[...new Set([...e(et),...e(lt).map(Rt=>Rt.value)])],kt,(Rt,at)=>{const zt=Q(()=>e(lt).find(er=>er.value===e(at))?.count??0);var Ot=Gi(),br=l(Ot);i(Ot),F(er=>{xt(Ot,1,`px-2 py-[2px] font-mono text-[10px] border border-[var(--sig-border-strong)] ${er??""}`),h(br,`${e(at)??""}${e(zt)>0?` ${e(zt)}`:""}`)},[()=>e(et).has(e(at))?"text-[var(--sig-highlight)] bg-[color-mix(in_srgb,var(--sig-highlight),var(--sig-bg)_90%)]":"text-[var(--sig-text-muted)] bg-transparent"]),Y("click",Ot,()=>ja(e(at))),u(Rt,Ot)}),i(nt),u(J,nt)};j(fr,J=>{(e(lt).length>0||e(et).size>0)&&J(xr)})}i(k),Ar("blur",D,Zr),dr(D,()=>e(ve),J=>n(ve,J)),Ar("blur",A,Zr),dr(A,()=>e(ut),J=>n(ut,J)),oa(te,()=>e(ie),J=>n(ie,J)),oa(ce,()=>e(yt),J=>n(yt,J)),dr(ke,()=>e(it),J=>n(it,J)),dr(Fe,()=>e(Tt),J=>n(Tt,J)),dr(rt,()=>e(Lt),J=>n(Lt,J)),dr(wt,()=>e(fe),J=>n(fe,J)),u(L,k)},$$slots:{default:!0}})}),u(a,g)},$$slots:{default:!0}})}),i(on);var ko=d(on,2);{let t=Q(()=>e(wr)?.nodeType??void 0),r=Q(()=>e(wr)?.entityData??null),a=Q(()=>e(wr)?.aspectData??null),c=Q(()=>e(wr)?.attributeData??null),g=Q(()=>e(wr)?.parentEntityId??null),M=Q(()=>e(wr)?.parentAspectId??null);Gs(ko,{containerClass:"flex-1 min-h-0 w-full min-w-0 border-l-0 border-t-0 max-lg:max-h-none",get graphSelected(){return e(p)},get embeddings(){return e(V)},get embeddingById(){return e(x)},get activeNeighbors(){return e(Ge)},get relationMode(){return e($t)},get loadingGlobalSimilar(){return e(Kt)},get globalSimilar(){return e(Et)},get embeddingSearchMatches(){return e(Oe)},get embeddingSearch(){return e(Ae)},get pinBusy(){return e(Xt)},get pinError(){return e(jt)},get selectedNodeType(){return e(t)},get selectedEntityData(){return e(r)},get selectedAspectData(){return e(a)},get selectedAttributeData(){return e(c)},get parentEntityId(){return e(g)},get parentAspectId(){return e(M)},get constellationOverlay(){return e(de)},onselectembedding:$r,onclearselection:eo,onloadglobalsimilar:no,get onopenglobalsimilar(){return o.onopenglobalsimilar},onsetrelationmode:m=>n($t,m,!0),onfocusembedding:()=>e(p)&&to(e(p).id),onpintoggle:ro})}i(ea),i(Kn),i(rn),F(()=>{Zn=Bt(zr,"",Zn,{display:e(ge)==="2d"?"contents":"none"}),$n=Bt(an,"",$n,{display:e(ge)==="3d"?"contents":"none"})}),Y("mousemove",Sr,Ka),Ar("mouseleave",Sr,()=>{e(C)||n(_,null)}),u(y,rn),Sn()}Mn(["mousemove","click","input"]);export{tl as default};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import{p as se,s as be,c as C,f as
|
|
1
|
+
import{p as se,s as be,c as C,f as T,a as fe,n as ge,b as c,d as re,r as ke,e as pe,o as me,j as u,A as Y,h as G,i as s,t as y,l as p,k as A,w as ue,x as Z,y as z,z as H,u as ee,a9 as Ke,O as he,aa as We,a2 as Fe,K as Ue,m as w,v as te,U as Ve,P as Qe}from"./C__P7n-d.js";import{I as ye,w as Xe,o as ae}from"./E8aDzCah.js";import{S as Ye,a as Ze,b as et,c as tt}from"./CTru9r3k.js";import{W as at,L as ve}from"./CtP16pip.js";import{T as st}from"./Bw9cJchw.js";function rt(P,f){se(f,!0);let _=ke(f,["$$slots","$$events","$$legacy"]);const g=[["path",{d:"M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2"}]];ye(P,be({name:"activity"},()=>_,{get iconNode(){return g},children:(h,O)=>{var x=C(),E=T(x);fe(E,()=>f.children??ge),c(h,x)},$$slots:{default:!0}})),re()}function nt(P,f){se(f,!0);let _=ke(f,["$$slots","$$events","$$legacy"]);const g=[["path",{d:"M12 19h8"}],["path",{d:"m4 17 6-6-6-6"}]];ye(P,be({name:"terminal"},()=>_,{get iconNode(){return g},children:(h,O)=>{var x=C(),E=T(x);fe(E,()=>f.children??ge),c(h,x)},$$slots:{default:!0}})),re()}var it=w('<span class="ts-panel-count svelte-c36e65"> </span>'),lt=w("<!> <!>",1),ot=w('<div class="ts-control svelte-c36e65"><div class="ts-control-head svelte-c36e65"><div class="ts-control-title-wrap svelte-c36e65"><!> <span class="ts-control-title svelte-c36e65"> </span> <!></div> <!></div> <div class="ts-action-bar svelte-c36e65"><!> <button class="ts-run svelte-c36e65"><!></button></div></div>'),ct=w('<button class="ts-clear svelte-c36e65" title="Clear output"><!></button>'),dt=w('<div class="ts-empty svelte-c36e65">no output yet</div>'),pt=w('<div class="ts-line svelte-c36e65"></div>'),mt=w('<div class="ts-root svelte-c36e65"><div class="ts-controls svelte-c36e65"></div> <div class="ts-terminal-wrap svelte-c36e65"><div class="ts-terminal-head svelte-c36e65"><span class="ts-control-title svelte-c36e65">Terminal</span> <!></div> <div class="ts-term svelte-c36e65" role="log"><!></div></div></div>');function yt(P,f){se(f,!0);const _=[{id:"cli",title:"CLI",icon:nt,color:"var(--sig-highlight)",commands:[{label:"Status",kind:"cli",key:"status"},{label:"Daemon Status",kind:"cli",key:"daemon-status"},{label:"Daemon Logs",kind:"cli",key:"daemon-logs"},{label:"Sync",kind:"cli",key:"sync"},{label:"Embed Audit",kind:"cli",key:"embed-audit"},{label:"Skill List",kind:"cli",key:"skill-list"},{label:"Secret List",kind:"cli",key:"secret-list"},{label:"Recall Test",kind:"cli",key:"recall-test"}]},{id:"status",title:"Status",icon:rt,color:"var(--sig-highlight)",commands:[{label:"Health",kind:"api",method:"GET",path:"/health"},{label:"Diagnostics",kind:"api",method:"GET",path:"/api/diagnostics"},{label:"Pipeline",kind:"api",method:"GET",path:"/api/pipeline/status"},{label:"Predictor",kind:"api",method:"GET",path:"/api/predictor/status"},{label:"Git",kind:"api",method:"GET",path:"/api/git/status"},{label:"Embeddings",kind:"api",method:"GET",path:"/api/embeddings/health"}]},{id:"info",title:"Info",icon:Xe,color:"var(--sig-highlight)",commands:[{label:"Embed Gaps",kind:"api",method:"GET",path:"/api/repair/embedding-gaps"},{label:"Dedup Stats",kind:"api",method:"GET",path:"/api/repair/dedup-stats"},{label:"Cold Stats",kind:"api",method:"GET",path:"/api/repair/cold-stats"}]},{id:"repair",title:"Repair",icon:at,color:"var(--sig-highlight)",commands:[{label:"Check FTS",kind:"api",method:"POST",path:"/api/repair/check-fts"},{label:"Re-embed",kind:"api",method:"POST",path:"/api/repair/re-embed"},{label:"Resync Vec",kind:"api",method:"POST",path:"/api/repair/resync-vec"},{label:"Clean Orphans",kind:"api",method:"POST",path:"/api/repair/clean-orphans"},{label:"Deduplicate",kind:"api",method:"POST",path:"/api/repair/deduplicate"},{label:"Retention",kind:"api",method:"POST",path:"/api/repair/retention-sweep"},{label:"Requeue Dead",kind:"api",method:"POST",path:"/api/repair/requeue-dead"},{label:"Release Leases",kind:"api",method:"POST",path:"/api/repair/release-leases"},{label:"Backfill Skipped",kind:"api",method:"POST",path:"/api/repair/backfill-skipped"},{label:"Reclassify",kind:"api",method:"POST",path:"/api/repair/reclassify-entities"},{label:"Prune Chunks",kind:"api",method:"POST",path:"/api/repair/prune-chunk-groups"},{label:"Prune Singletons",kind:"api",method:"POST",path:"/api/repair/prune-singleton-entities"},{label:"Stop Daemon",kind:"cli",key:"daemon-stop"},{label:"Restart Daemon",kind:"cli",key:"daemon-restart"},{label:"Update Signet",kind:"cli",key:"update"}]}],g=pe(Object.fromEntries(_.map(e=>[e.id,{lines:[],running:!1,selected:0}])));let h=me(pe([])),O=me(void 0);const x=Object.fromEntries(_.map(e=>[e.id,e]));function E(e){te(O,e,!0)}async function v(e){await Ve(),s(O)?.scrollTo({top:s(O).scrollHeight,behavior:"smooth"})}function o(e,t){const a=g[e];if(!a)return;a.lines=[...a.lines,t];const i=x[e]?.title??e;te(h,[...s(h),t?`[${i}] ${t}`:""],!0)}function _e(){te(h,[],!0);for(const e of _)g[e.id].lines=[]}async function xe(e,t){const a=g[e];if(!a||a.running||!t.key)return;a.running=!0,o(e,`\x1B[32m$\x1B[0m signet ${t.key.replace(/-/g," ")}`),await v();const i=new AbortController;let r=!1;try{const n=await fetch(`${ae}/api/troubleshoot/exec`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({key:t.key}),signal:i.signal});if(!n.ok){const D=await n.json().catch(()=>({error:"request failed"}));o(e,`\x1B[31merror:\x1B[0m ${D.error??n.statusText}`),a.running=!1,await v(e);return}const d=n.body?.getReader();if(!d){o(e,"\x1B[31merror:\x1B[0m no stream"),a.running=!1;return}t.key==="daemon-restart"&&(r=!0);const b=new TextDecoder;let $="";try{for(;;){const{done:D,value:W}=await d.read();if(D)break;$+=b.decode(W,{stream:!0});const N=$.split(`
|
|
2
2
|
|
|
3
3
|
`);$=N.pop()??"";for(const F of N){const R=F.match(/^data:\s*(.+)$/m);if(R)try{const m=JSON.parse(R[1]);if(m.type==="started"&&(r=!0),m.type==="stdout"||m.type==="stderr"){const S=String(m.data).replace(/\n$/,"");if(S){for(const I of S.split(`
|
|
4
4
|
`))o(e,m.type==="stderr"?`\x1B[33m${I}\x1B[0m`:I);await v(e)}}else m.type==="exit"?(o(e,m.code===0?"\x1B[32m✓ exit 0\x1B[0m":`\x1B[31m✗ exit ${m.code}\x1B[0m`),await v(e)):m.type==="error"&&(o(e,`\x1B[31merror:\x1B[0m ${m.message}`),await v(e))}catch{}}}}finally{d.releaseLock()}}catch(n){i.signal.aborted||(t.key==="daemon-stop"||t.key==="daemon-restart"?o(e,"\x1B[33mDaemon process ended\x1B[0m"):o(e,`\x1B[31merror:\x1B[0m ${n instanceof Error?n.message:"fetch failed"}`))}if(t.key==="daemon-restart"&&r){o(e,"\x1B[90mWaiting for daemon to restart...\x1B[0m"),await v();let n=!1;for(let d=0;d<15;d++){await new Promise(b=>setTimeout(b,1e3));try{if((await fetch(`${ae}/health`)).ok){n=!0;break}}catch{}}o(e,n?"\x1B[32m✓ Daemon restarted\x1B[0m":"\x1B[31m✗ Daemon did not restart within 15s\x1B[0m"),await v()}o(e,""),a.running=!1,await v()}async function $e(e,t){const a=g[e];if(!a||a.running||!t.path||!t.method)return;a.running=!0;const i=performance.now();o(e,`\x1B[32m$\x1B[0m ${t.method} ${t.path}`),await v();try{const r=await fetch(`${ae}${t.path}`,{method:t.method}),n=Math.round(performance.now()-i),b=(r.headers.get("content-type")??"").includes("json")?JSON.stringify(await r.json(),null,2):await r.text();o(e,r.ok?`\x1B[32m${r.status} OK\x1B[0m \x1B[90m${n}ms\x1B[0m`:`\x1B[31m${r.status} FAILED\x1B[0m \x1B[90m${n}ms\x1B[0m`);for(const $ of b.split(`
|
|
5
|
-
`))o(e,$)}catch(r){o(e,`\x1B[31merror:\x1B[0m ${r instanceof Error?r.message:"fetch failed"}`)}o(e,""),a.running=!1,await v()}function Se(e,t){t.kind==="cli"?xe(e,t):$e(e,t)}function
|
|
5
|
+
`))o(e,$)}catch(r){o(e,`\x1B[31merror:\x1B[0m ${r instanceof Error?r.message:"fetch failed"}`)}o(e,""),a.running=!1,await v()}function Se(e,t){t.kind==="cli"?xe(e,t):$e(e,t)}function we(e){return e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">")}const Te=new RegExp("\\u001b\\[(\\d+)m([\\s\\S]*?)\\u001b\\[0m","g"),Pe=new RegExp("\\u001b\\[\\d+m","g");function Oe(e){const t={31:"var(--sig-danger)",32:"var(--sig-success)",33:"var(--sig-warning, #e8a832)",90:"var(--sig-text-muted)",36:"var(--sig-accent)"};let a=we(e);return a=a.replace(Te,(i,r,n)=>{const d=t[r];return d?`<span style="color:${d}">${n}</span>`:r==="1"?`<strong>${n}</strong>`:n}),a=a.replace(Pe,""),a=a.replace(/("(?:\\.|[^&])*?")\s*:/g,(i,r)=>`<span style="color:var(--sig-accent)">${r}</span>:`),a=a.replace(/:\s*("(?:\\.|[^&])*?")(?=[,\n\r}\]])/g,(i,r)=>`: <span style="color:var(--sig-success)">${r}</span>`),a=a.replace(/:\s*(true|false|null)(?=[,\n\r}\]])/g,(i,r)=>`: <span style="color:var(--sig-warning, #e8a832)">${r}</span>`),a=a.replace(/:\s*(\d+\.?\d*)(?=[,\n\r}\]])/g,(i,r)=>`: <span style="color:var(--sig-highlight-text)">${r}</span>`),a}var M=mt(),B=u(M);Y(B,21,()=>_,e=>e.id,(e,t)=>{const a=ee(()=>g[s(t).id]);var i=ot(),r=u(i),n=u(r),d=u(n);G(d,()=>s(t).icon,(l,k)=>{k(l,{class:"size-3.5",get style(){return`color: ${s(t).color??""}`}})});var b=y(d,2),$=u(b,!0);p(b);var D=y(b,2);{var W=l=>{ve(l,{class:"size-3 ts-spin",style:"color: var(--sig-highlight-text)"})};A(D,l=>{s(a).running&&l(W)})}p(n);var N=y(n,2);{var F=l=>{var k=it(),U=u(k,!0);p(k),z(()=>H(U,s(a).lines.length)),c(l,k)};A(N,l=>{s(a).lines.length>0&&l(F)})}p(r);var R=y(r,2),m=u(R);{let l=ee(()=>String(s(a).selected));G(m,()=>tt,(k,U)=>{U(k,{type:"single",get value(){return s(l)},onValueChange:j=>{j!==void 0&&(s(a).selected=Number(j))},get disabled(){return s(a).running},children:(j,ut)=>{var ie=lt(),le=T(ie);G(le,()=>Ye,(V,Q)=>{Q(V,{class:"ts-select",children:(X,Ie)=>{ue();var L=Z();z(()=>H(L,s(t).commands[s(a).selected]?.label??"Select command")),c(X,L)},$$slots:{default:!0}})});var Ne=y(le,2);G(Ne,()=>Ze,(V,Q)=>{Q(V,{class:"ts-select-content",children:(X,Ie)=>{var L=C(),je=T(L);Y(je,19,()=>s(t).commands,q=>q.key??q.path,(q,oe,qe)=>{var ce=C(),ze=T(ce);{let He=ee(()=>String(s(qe)));G(ze,()=>et,(Me,Be)=>{Be(Me,{get value(){return s(He)},get label(){return s(oe).label},class:"ts-select-item",children:(Je,ht)=>{ue();var de=Z();z(()=>H(de,s(oe).label)),c(Je,de)},$$slots:{default:!0}})})}c(q,ce)}),c(X,L)},$$slots:{default:!0}})}),c(j,ie)},$$slots:{default:!0}})})}var S=y(m,2),I=u(S);{var Ae=l=>{ve(l,{class:"size-3 ts-spin"})},Ce=l=>{var k=Z("Run");c(l,k)};A(I,l=>{s(a).running?l(Ae):l(Ce,-1)})}p(S),p(R),p(i),z(()=>{Ke(i,`--panel-color: ${s(t).color??""}`),H($,s(t).title),S.disabled=s(a).running}),he("click",S,()=>Se(s(t).id,s(t).commands[s(a).selected])),c(e,i)}),p(B);var ne=y(B,2),J=u(ne),Ee=y(u(J),2);{var De=e=>{var t=ct(),a=u(t);st(a,{class:"size-3"}),p(t),he("click",t,_e),c(e,t)};A(Ee,e=>{s(h).length>0&&e(De)})}p(J);var K=y(J,2),Re=u(K);{var Le=e=>{var t=dt();c(e,t)},Ge=e=>{var t=C(),a=T(t);Y(a,17,()=>s(h),Ue,(i,r)=>{var n=pt();Fe(n,()=>Oe(s(r))||" ",!0),p(n),c(i,n)}),c(e,t)};A(Re,e=>{s(h).length===0?e(Le):e(Ge,-1)})}p(K),We(K,e=>E?.(e)),p(ne),p(M),c(P,M),re()}Qe(["click"]);export{yt as default};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{p as re,c as Ut,f as N,k as rt,i as t,b as s,d as se,u as C,D as l,j as r,A as Lt,t as e,l as a,y as k,z as d,K as ce,N as Se,v as y,m as v,af as ie,o as Z,B as ke,g as Ee,h as O,w as lt,x as Pt,s as Re,a as Be,n as De,r as Le,a9 as Ne,ab as Ce,ac as je,O as we,P as Oe,e as qt,q as ze}from"./KKQFryJf.js";import{Y as ue,Z as ge,_ as pe,I as We,B as He,f as Ge,n as Ke,E as qe,o as Dt}from"./BPP5Agft.js";import{P as Je}from"./DK3bAoxY.js";import{T as Ve}from"./CyB1_UBK.js";import{B as xe}from"./B8H0-1W-.js";import{a as Ye,C as Ze}from"./DztUtVIN.js";import{C as Qe}from"./CD494UvJ.js";import{C as Ue}from"./EOE2EklU.js";import{C as Xe,a as ta,b as ea}from"./DNGDC21S.js";import{P as aa,a as ra,b as sa}from"./DCGZzQhv.js";import{Z as ia}from"./CoewuoXd.js";import{R as na}from"./BWFOfv6z.js";import{C as oa}from"./rdAZcnWE.js";var la=v('<div class="flex items-center justify-center h-full"><span class="sig-label text-[var(--sig-text-muted)]">no comparison data yet</span></div>'),da=ie('<line stroke="var(--sig-border)" stroke-width="0.5" stroke-dasharray="4,4"></line><text text-anchor="end" fill="var(--sig-text-muted)" font-size="11" font-family="var(--font-mono)"> </text>',1),va=ie('<circle r="3"></circle>'),ca=ie('<line stroke="var(--sig-border)" stroke-width="0.5" stroke-dasharray="3,3"></line><circle r="4" fill="var(--sig-text-muted)" stroke="var(--sig-bg)" stroke-width="1.5"></circle><circle r="4" fill="var(--sig-success)" stroke="var(--sig-bg)" stroke-width="1.5"></circle>',1),ua=ie('<rect fill="transparent"></rect><!>',1),ga=v('<div class="sig-meta text-[var(--sig-text-muted)] mt-0.5"> </div>'),pa=v('<div class="absolute z-10 bg-[var(--sig-surface-raised)] border border-[var(--sig-border)] rounded px-2 py-1.5 shadow-md pointer-events-none" style="top: 4px; right: 8px;"><div class="sig-label text-[var(--sig-text-muted)]"> </div> <div class="flex gap-3 mt-0.5"><span class="sig-label"><span class="text-[var(--sig-text-muted)]">base</span> <span class="text-[var(--sig-text)] ml-1"> </span></span> <span class="sig-label"><span class="text-[var(--sig-success)]">pred</span> <span class="text-[var(--sig-text)] ml-1"> </span></span> <span> </span></div> <!></div>'),xa=ie('<svg width="100%" height="100%" preserveAspectRatio="xMidYMid meet" class="select-none"><!><text text-anchor="end" fill="var(--sig-text-muted)" font-size="11" font-family="var(--font-mono)">1.00</text><text text-anchor="end" fill="var(--sig-text-muted)" font-size="11" font-family="var(--font-mono)">0.00</text><polyline fill="none" stroke="var(--sig-text-muted)" stroke-width="1.5" stroke-linejoin="round" stroke-linecap="round" opacity="0.5"></polyline><polyline fill="none" stroke="var(--sig-success)" stroke-width="2" stroke-linejoin="round" stroke-linecap="round"></polyline><!><!><line stroke="var(--sig-text-muted)" stroke-width="1.5" opacity="0.5"></line><text fill="var(--sig-text-muted)" font-size="11" font-family="var(--font-mono)">baseline</text><line stroke="var(--sig-success)" stroke-width="2"></line><text fill="var(--sig-success)" font-size="11" font-family="var(--font-mono)">predictor</text></svg><!>',1);function fa(kt,u){re(u,!0);const g={top:12,right:12,bottom:20,left:32},h=1200,p=200,st=h-g.left-g.right,X=p-g.top-g.bottom,j=C(()=>[...u.comparisons].reverse());function A(n){return t(j).length<=1?g.left+st/2:g.left+n/(t(j).length-1)*st}function K(n){return g.top+(1-n)*X}function dt(n){return t(j).map((c,M)=>`${A(M).toFixed(1)},${K(n(c)).toFixed(1)}`).join(" ")}const _t=C(()=>dt(n=>n.baselineNdcg)),E=C(()=>dt(n=>n.predictorNdcg)),Q=[.25,.5,.75];let R=Z(null);function pt(n){const c=new Date(n);return Number.isNaN(c.getTime())?n:c.toLocaleString(void 0,{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})}var q=Ut(),H=N(q);{var _=n=>{var c=la();s(n,c)},x=n=>{var c=xa(),M=N(c);l(M,"viewBox","0 0 1200 200");var b=r(M);Lt(b,17,()=>Q,ce,(J,f)=>{var w=da(),T=N(w),D=e(T),ut=r(D,!0);a(D),k((ft,mt,wt,gt)=>{l(T,"x1",g.left),l(T,"y1",ft),l(T,"x2",h-g.right),l(T,"y2",mt),l(D,"x",g.left-6),l(D,"y",wt),d(ut,gt)},[()=>K(t(f)),()=>K(t(f)),()=>K(t(f))+4,()=>t(f).toFixed(2)]),s(J,w)});var $=e(b),P=e($),F=e(P),G=e(F),tt=e(G);Lt(tt,17,()=>t(j),ce,(J,f,w)=>{var T=va();l(T,"cy",p-6),k(D=>{l(T,"cx",D),l(T,"fill",t(f).predictorWon?"var(--sig-success)":"var(--sig-danger)"),l(T,"opacity",t(f).predictorWon?.8:.5)},[()=>A(w)]),s(J,T)});var B=e(tt);Lt(B,17,()=>t(j),ce,(J,f,w)=>{var T=ua(),D=N(T);l(D,"y",0),l(D,"height",p);var ut=e(D);{var ft=mt=>{var wt=ca(),gt=N(wt),Ct=e(gt),Jt=e(Ct);k((i,o,z,S,nt,W)=>{l(gt,"x1",i),l(gt,"y1",g.top),l(gt,"x2",o),l(gt,"y2",p-g.bottom),l(Ct,"cx",z),l(Ct,"cy",S),l(Jt,"cx",nt),l(Jt,"cy",W)},[()=>A(w),()=>A(w),()=>A(w),()=>K(t(f).baselineNdcg),()=>A(w),()=>K(t(f).predictorNdcg)]),s(mt,wt)};rt(ut,mt=>{t(R)===w&&mt(ft)})}k((mt,wt)=>{l(D,"x",mt),l(D,"width",wt)},[()=>A(w)-Math.max(st/t(j).length,16)/2,()=>Math.max(st/t(j).length,16)]),Se("mouseenter",D,()=>y(R,w,!0)),Se("mouseleave",D,()=>y(R,null)),s(J,T)});var et=e(B);l(et,"y1",10),l(et,"y2",10);var it=e(et);l(it,"y",14);var vt=e(it);l(vt,"y1",10),l(vt,"y2",10);var $t=e(vt);l($t,"y",14),a(M);var xt=e(M);{var ct=J=>{const f=C(()=>t(j)[t(R)]);var w=pa(),T=r(w),D=r(T,!0);a(T);var ut=e(T,2),ft=r(ut),mt=e(r(ft),2),wt=r(mt,!0);a(mt),a(ft);var gt=e(ft,2),Ct=e(r(gt),2),Jt=r(Ct,!0);a(Ct),a(gt);var i=e(gt,2);let o;var z=r(i);a(i),a(ut);var S=e(ut,2);{var nt=W=>{var m=ga(),V=r(m,!0);a(m),k(()=>d(V,t(f).project)),s(W,m)};rt(S,W=>{t(f).project&&W(nt)})}a(w),k((W,m,V,jt)=>{d(D,W),d(wt,m),d(Jt,V),o=ke(i,1,"sig-label",null,o,{"text-[var(--sig-success)]":t(f).margin>0,"text-[var(--sig-danger)]":t(f).margin<0}),d(z,`${t(f).margin>0?"+":""}${jt??""}`)},[()=>pt(t(f).createdAt),()=>t(f).baselineNdcg.toFixed(3),()=>t(f).predictorNdcg.toFixed(3),()=>t(f).margin.toFixed(3)]),s(J,w)};rt(xt,J=>{t(R)!==null&&t(j)[t(R)]&&J(ct)})}k((J,f)=>{l($,"x",g.left-6),l($,"y",J),l(P,"x",g.left-6),l(P,"y",f),l(F,"points",t(_t)),l(G,"points",t(E)),l(et,"x1",h-g.right-160),l(et,"x2",h-g.right-146),l(it,"x",h-g.right-142),l(vt,"x1",h-g.right-80),l(vt,"x2",h-g.right-66),l($t,"x",h-g.right-62)},[()=>K(1)+4,()=>K(0)+4]),s(n,c)};rt(H,n=>{t(j).length===0?n(_):n(x,-1)})}s(kt,q),se()}var ma=v('<div class="flex items-baseline gap-2"><span class="text-2xl font-display font-bold text-foreground"> </span> <span class="sig-label text-[var(--sig-text-muted)]">ranking quality</span></div>'),_a=v("<!> <!>",1),ha=v('<div class="sig-label text-[var(--sig-text)] truncate pl-2 border-l border-[var(--sig-border)]"> </div>'),ba=v('<div class="sig-label text-[var(--sig-text-muted)] pl-2 italic">no ranking data yet</div>'),ya=v('<div class="flex justify-between sig-label"><span class="text-[var(--sig-text-muted)]"> </span> <span class="text-[var(--sig-text)]"> </span></div>'),$a=v("<!> <!>",1),wa=v('<div class="flex justify-between sig-label"><span class="text-[var(--sig-text-muted)]"> </span> <span class="text-[var(--sig-text)]"> </span></div>'),Pa=v('<div class="flex flex-col gap-2 p-3 bg-card rounded-lg border border-border min-w-0"><div class="flex items-center gap-2"><span class="sig-eyebrow tracking-wider text-[var(--sig-text-muted)]"> </span> <!></div> <!> <div class="space-y-1"><span class="sig-label text-[var(--sig-text-muted)]">recent top picks:</span> <!></div> <div class="mt-auto space-y-1 pt-2 border-t border-[var(--sig-border)]"></div></div>');function Pe(kt,u){re(u,!0);let g=Ee(u,"offline",3,!1);const h=C(()=>Math.round(u.ndcg*100)),p=C(()=>u.side==="baseline"?"Heuristic Baseline":"Predictor Model"),st=C(()=>`How well this system ranks memories. NDCG@10 = ${u.ndcg.toFixed(3)}`);var X=Pa(),j=r(X),A=r(j),K=r(A,!0);a(A);var dt=e(A,2);{var _t=_=>{xe(_,{variant:"destructive",class:"text-[8px] px-1.5 py-0",children:(x,n)=>{lt();var c=Pt("OFFLINE");s(x,c)},$$slots:{default:!0}})};rt(dt,_=>{g()&&_(_t)})}a(j);var E=e(j,2);O(E,()=>pe,(_,x)=>{x(_,{children:(n,c)=>{var M=_a(),b=N(M);O(b,()=>ue,(P,F)=>{F(P,{class:"text-left",children:(G,tt)=>{var B=ma(),et=r(B),it=r(et);a(et),lt(2),a(B),k(()=>d(it,`${t(h)??""}%`)),s(G,B)},$$slots:{default:!0}})});var $=e(b,2);O($,()=>ge,(P,F)=>{F(P,{class:"bg-[var(--sig-surface-raised)] border border-[var(--sig-border)] text-[var(--sig-text)] px-2 py-1 rounded text-xs",children:(G,tt)=>{lt();var B=Pt();k(()=>d(B,t(st))),s(G,B)},$$slots:{default:!0}})}),s(n,M)},$$slots:{default:!0}})});var Q=e(E,2),R=e(r(Q),2);{var pt=_=>{var x=Ut(),n=N(x);Lt(n,17,()=>u.topPicks.slice(0,3),c=>c.id,(c,M)=>{var b=ha(),$=r(b);a(b),k(P=>{l(b,"title",t(M).content),d($,`${P??""}${t(M).content.length>60?"...":""}`)},[()=>t(M).content.slice(0,60)]),s(c,b)}),s(_,x)},q=_=>{var x=ba();s(_,x)};rt(R,_=>{u.topPicks.length>0?_(pt):_(q,-1)})}a(Q);var H=e(Q,2);Lt(H,21,()=>u.stats,_=>_.label,(_,x)=>{var n=Ut(),c=N(n);{var M=$=>{var P=Ut(),F=N(P);O(F,()=>pe,(G,tt)=>{tt(G,{children:(B,et)=>{var it=$a(),vt=N(it);O(vt,()=>ue,(xt,ct)=>{ct(xt,{class:"w-full text-left",children:(J,f)=>{var w=ya(),T=r(w),D=r(T,!0);a(T);var ut=e(T,2),ft=r(ut,!0);a(ut),a(w),k(()=>{d(D,t(x).label),d(ft,t(x).value)}),s(J,w)},$$slots:{default:!0}})});var $t=e(vt,2);O($t,()=>ge,(xt,ct)=>{ct(xt,{class:"bg-[var(--sig-surface-raised)] border border-[var(--sig-border)] text-[var(--sig-text)] px-2 py-1 rounded text-xs",children:(J,f)=>{lt();var w=Pt();k(()=>d(w,t(x).tooltip)),s(J,w)},$$slots:{default:!0}})}),s(B,it)},$$slots:{default:!0}})}),s($,P)},b=$=>{var P=wa(),F=r(P),G=r(F,!0);a(F);var tt=e(F,2),B=r(tt,!0);a(tt),a(P),k(()=>{d(G,t(x).label),d(B,t(x).value)}),s($,P)};rt(c,$=>{t(x).tooltip?$(M):$(b,-1)})}s(_,n)}),a(H),a(X),k(()=>d(K,t(p))),s(kt,X),se()}function ka(kt,u){re(u,!0);let g=Le(u,["$$slots","$$events","$$legacy"]);const h=[["path",{d:"M14 17H5"}],["path",{d:"M19 7h-9"}],["circle",{cx:"17",cy:"17",r:"3"}],["circle",{cx:"7",cy:"7",r:"3"}]];We(kt,Re({name:"settings-2"},()=>g,{get iconNode(){return h},children:(p,st)=>{var X=Ut(),j=N(X);Be(j,()=>u.children??De),s(p,X)},$$slots:{default:!0}})),se()}var Na=v('<span class="sig-meta text-[var(--sig-text-muted)] shrink-0">alpha</span> <div class="flex gap-px h-2.5 flex-1 rounded overflow-hidden"><div class="bg-[var(--sig-text-muted)] transition-all duration-300"></div> <div class="bg-[var(--sig-accent)] transition-all duration-300"></div></div> <span class="sig-meta text-[var(--sig-text)] font-mono"> </span>',1),Ta=v("<!> <!>",1),Sa=v('<span class="sig-label text-[var(--sig-text)]">win rate: <span class="font-bold"> </span></span>'),Ca=v("<!> <!>",1),ja=v('<div class="sig-eyebrow text-[var(--sig-text-muted)]">training config</div> <div class="space-y-1"><div class="flex justify-between items-center"><span class="sig-label text-[var(--sig-text-muted)]">epochs per run</span> <input type="number" min="1" max="20" class="w-14 bg-[var(--sig-surface-raised)] border border-[var(--sig-border)] rounded px-1.5 py-0.5 text-center sig-label text-[var(--sig-text)] focus:outline-none focus:border-[var(--sig-accent)]"/></div> <span class="sig-meta text-[var(--sig-text-muted)]">more epochs = longer but more thorough</span></div> <div class="space-y-1"><div class="flex justify-between items-center"><span class="sig-label text-[var(--sig-text-muted)]">max samples</span> <input type="number" min="100" max="50000" step="500" class="w-20 bg-[var(--sig-surface-raised)] border border-[var(--sig-border)] rounded px-1.5 py-0.5 text-center sig-label text-[var(--sig-text)] focus:outline-none focus:border-[var(--sig-accent)]"/></div> <span class="sig-meta text-[var(--sig-text-muted)]">training pairs to use per run</span></div> <div class="space-y-1"><div class="flex justify-between items-center"><span class="sig-label text-[var(--sig-text-muted)]">auto-trains every</span> <span class="sig-label text-[var(--sig-text)]"> </span></div> <span class="sig-meta text-[var(--sig-text-muted)]">change in settings</span></div> <div class="pt-1 border-t border-[var(--sig-border)]"><span class="sig-meta text-[var(--sig-text-muted)]"> </span></div>',1),Ma=v("<!> <!>",1),Fa=v("<!> <!>",1),Ia=v('<div class="flex items-center gap-3 px-3 py-2 bg-card rounded-lg border border-border"><!> <!> <!> <div class="flex-1"></div> <!> <!> <button class="flex items-center p-1 rounded text-[var(--sig-text-muted)] hover:text-[var(--sig-text)] hover:bg-[var(--sig-surface-raised)] transition-colors disabled:opacity-40"><!></button></div>');function Aa(kt,u){re(u,!0);const g=C(()=>{switch(u.healthStatus){case"healthy":return"default";case"degraded":case"cold_start":return"secondary";case"unhealthy":return"destructive";default:return"outline"}});let h=Z(!1);var p=Ia(),st=r(p);xe(st,{get variant(){return t(g)},class:"text-[9px] shrink-0",children:(E,Q)=>{lt();var R=Pt();k(()=>d(R,u.healthStatus)),s(E,R)},$$slots:{default:!0}});var X=e(st,2);O(X,()=>pe,(E,Q)=>{Q(E,{children:(R,pt)=>{var q=Ta(),H=N(q);O(H,()=>ue,(x,n)=>{n(x,{class:"flex items-center gap-2 min-w-[120px]",children:(c,M)=>{var b=Na(),$=e(N(b),2),P=r($),F=e(P,2);a($);var G=e($,2),tt=r(G,!0);a(G),k(B=>{Ne(P,`width: ${u.alpha*100}%`),Ne(F,`width: ${(1-u.alpha)*100}%`),d(tt,B)},[()=>u.alpha.toFixed(2)]),s(c,b)},$$slots:{default:!0}})});var _=e(H,2);O(_,()=>ge,(x,n)=>{n(x,{class:"bg-[var(--sig-surface-raised)] border border-[var(--sig-border)] text-[var(--sig-text)] px-2 py-1 rounded text-xs max-w-[240px]",children:(c,M)=>{lt();var b=Pt("Baseline weight in scoring. Shifts toward predictor as it proves itself.");s(c,b)},$$slots:{default:!0}})}),s(R,q)},$$slots:{default:!0}})});var j=e(X,2);O(j,()=>pe,(E,Q)=>{Q(E,{children:(R,pt)=>{var q=Ca(),H=N(q);O(H,()=>ue,(x,n)=>{n(x,{children:(c,M)=>{var b=Sa(),$=e(r(b)),P=r($);a($),a(b),k(F=>d(P,`${F??""}%`),[()=>Math.round(u.winRate*100)]),s(c,b)},$$slots:{default:!0}})});var _=e(H,2);O(_,()=>ge,(x,n)=>{n(x,{class:"bg-[var(--sig-surface-raised)] border border-[var(--sig-border)] text-[var(--sig-text)] px-2 py-1 rounded text-xs max-w-[240px]",children:(c,M)=>{lt();var b=Pt("Sessions where predictor ranked better than heuristic baseline.");s(c,b)},$$slots:{default:!0}})}),s(R,q)},$$slots:{default:!0}})});var A=e(j,4);O(A,()=>sa,(E,Q)=>{Q(E,{get open(){return t(h)},set open(R){y(h,R,!0)},children:(R,pt)=>{var q=Ma(),H=N(q);O(H,()=>aa,(x,n)=>{n(x,{class:"flex items-center gap-1 sig-label text-[var(--sig-text-muted)] hover:text-[var(--sig-text)] transition-colors p-1 rounded hover:bg-[var(--sig-surface-raised)]",children:(c,M)=>{ka(c,{class:"w-3.5 h-3.5"})},$$slots:{default:!0}})});var _=e(H,2);O(_,()=>ra,(x,n)=>{n(x,{class:"w-[260px] bg-[var(--sig-surface)] border border-[var(--sig-border)] rounded-lg shadow-lg p-3 space-y-3",side:"bottom",align:"end",children:(c,M)=>{var b=ja(),$=e(N(b),2),P=r($),F=e(r(P),2);Ce(F),a(P),lt(2),a($);var G=e($,2),tt=r(G),B=e(r(tt),2);Ce(B),a(tt),lt(2),a(G);var et=e(G,2),it=r(et),vt=e(r(it),2),$t=r(vt);a(vt),a(it),lt(2),a(et);var xt=e(et,2),ct=r(xt),J=r(ct);a(ct),a(xt),k(f=>{je(F,u.trainEpochs),je(B,u.trainLimit),d($t,`${u.trainInterval??""} sessions`),d(J,`${f??""} training pairs available`)},[()=>u.trainingPairs.toLocaleString()]),we("input",F,f=>u.onEpochsChange(Number(f.currentTarget.value))),we("input",B,f=>u.onLimitChange(Number(f.currentTarget.value))),s(c,b)},$$slots:{default:!0}})}),s(R,q)},$$slots:{default:!0}})});var K=e(A,2);{let E=C(()=>u.training||!u.sidecarAlive);He(K,{variant:"default",size:"sm",class:"sig-label gap-1.5",get onclick(){return u.onTrain},get disabled(){return t(E)},children:(Q,R)=>{var pt=Fa(),q=N(pt);ia(q,{class:"w-3.5 h-3.5"});var H=e(q,2);{var _=n=>{var c=Pt("training...");s(n,c)},x=n=>{var c=Pt("train now");s(n,c)};rt(H,n=>{u.training?n(_):n(x,-1)})}s(Q,pt)},$$slots:{default:!0}})}var dt=e(K,2),_t=r(dt);{let E=C(()=>u.loading?"animate-spin":"");na(_t,{get class(){return`w-3.5 h-3.5 ${t(E)??""}`}})}a(dt),a(p),k(()=>dt.disabled=u.loading),we("click",dt,function(...E){u.onRefresh?.apply(this,E)}),s(kt,p),se()}Oe(["input","click"]);var Ea=v('<div class="flex items-center justify-center col-span-full row-span-full"><span class="sig-label text-[var(--sig-text-muted)]">loading predictor data...</span></div>'),Ra=v('<div class="flex items-center justify-center col-span-full row-span-full"><span class="sig-label text-[var(--sig-text-muted)]">unable to reach predictor -- check daemon status</span></div>'),Ba=v("Predictor <!>",1),Da=v(`<p class="sig-label text-[var(--sig-text-muted)]">The predictive memory scorer learns which memories matter most for each
|
|
1
|
+
import{p as re,c as Ut,f as N,k as rt,i as t,b as s,d as se,u as C,D as l,j as r,A as Lt,t as e,l as a,y as k,z as d,K as ce,N as Se,v as y,m as v,af as ie,o as Z,B as ke,g as Ee,h as O,w as lt,x as Pt,s as Re,a as Be,n as De,r as Le,a9 as Ne,ab as Ce,ac as je,O as we,P as Oe,e as qt,q as ze}from"./C__P7n-d.js";import{W as ue,Y as ge,Z as pe,I as We,B as He,f as Ge,n as Ke,E as qe,o as Dt}from"./E8aDzCah.js";import{P as Je}from"./nI8gUPgM.js";import{T as Ve}from"./B9q9Ge2R.js";import{B as xe}from"./BZDosIrh.js";import{a as Ye,C as Ze}from"./CEcPoaRJ.js";import{C as Qe}from"./DWOk1mMF.js";import{C as Ue}from"./BjckOom6.js";import{C as Xe,a as ta,b as ea}from"./BiBX3uai.js";import{P as aa,a as ra,b as sa}from"./B4MV25Cw.js";import{Z as ia}from"./D2hKtolS.js";import{R as na}from"./WOdSatfk.js";import{C as oa}from"./Gx2iNUl2.js";var la=v('<div class="flex items-center justify-center h-full"><span class="sig-label text-[var(--sig-text-muted)]">no comparison data yet</span></div>'),da=ie('<line stroke="var(--sig-border)" stroke-width="0.5" stroke-dasharray="4,4"></line><text text-anchor="end" fill="var(--sig-text-muted)" font-size="11" font-family="var(--font-mono)"> </text>',1),va=ie('<circle r="3"></circle>'),ca=ie('<line stroke="var(--sig-border)" stroke-width="0.5" stroke-dasharray="3,3"></line><circle r="4" fill="var(--sig-text-muted)" stroke="var(--sig-bg)" stroke-width="1.5"></circle><circle r="4" fill="var(--sig-success)" stroke="var(--sig-bg)" stroke-width="1.5"></circle>',1),ua=ie('<rect fill="transparent"></rect><!>',1),ga=v('<div class="sig-meta text-[var(--sig-text-muted)] mt-0.5"> </div>'),pa=v('<div class="absolute z-10 bg-[var(--sig-surface-raised)] border border-[var(--sig-border)] rounded px-2 py-1.5 shadow-md pointer-events-none" style="top: 4px; right: 8px;"><div class="sig-label text-[var(--sig-text-muted)]"> </div> <div class="flex gap-3 mt-0.5"><span class="sig-label"><span class="text-[var(--sig-text-muted)]">base</span> <span class="text-[var(--sig-text)] ml-1"> </span></span> <span class="sig-label"><span class="text-[var(--sig-success)]">pred</span> <span class="text-[var(--sig-text)] ml-1"> </span></span> <span> </span></div> <!></div>'),xa=ie('<svg width="100%" height="100%" preserveAspectRatio="xMidYMid meet" class="select-none"><!><text text-anchor="end" fill="var(--sig-text-muted)" font-size="11" font-family="var(--font-mono)">1.00</text><text text-anchor="end" fill="var(--sig-text-muted)" font-size="11" font-family="var(--font-mono)">0.00</text><polyline fill="none" stroke="var(--sig-text-muted)" stroke-width="1.5" stroke-linejoin="round" stroke-linecap="round" opacity="0.5"></polyline><polyline fill="none" stroke="var(--sig-success)" stroke-width="2" stroke-linejoin="round" stroke-linecap="round"></polyline><!><!><line stroke="var(--sig-text-muted)" stroke-width="1.5" opacity="0.5"></line><text fill="var(--sig-text-muted)" font-size="11" font-family="var(--font-mono)">baseline</text><line stroke="var(--sig-success)" stroke-width="2"></line><text fill="var(--sig-success)" font-size="11" font-family="var(--font-mono)">predictor</text></svg><!>',1);function fa(kt,u){re(u,!0);const g={top:12,right:12,bottom:20,left:32},h=1200,p=200,st=h-g.left-g.right,X=p-g.top-g.bottom,j=C(()=>[...u.comparisons].reverse());function A(n){return t(j).length<=1?g.left+st/2:g.left+n/(t(j).length-1)*st}function K(n){return g.top+(1-n)*X}function dt(n){return t(j).map((c,M)=>`${A(M).toFixed(1)},${K(n(c)).toFixed(1)}`).join(" ")}const _t=C(()=>dt(n=>n.baselineNdcg)),E=C(()=>dt(n=>n.predictorNdcg)),Q=[.25,.5,.75];let R=Z(null);function pt(n){const c=new Date(n);return Number.isNaN(c.getTime())?n:c.toLocaleString(void 0,{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})}var q=Ut(),H=N(q);{var _=n=>{var c=la();s(n,c)},x=n=>{var c=xa(),M=N(c);l(M,"viewBox","0 0 1200 200");var b=r(M);Lt(b,17,()=>Q,ce,(J,f)=>{var w=da(),T=N(w),D=e(T),ut=r(D,!0);a(D),k((ft,mt,wt,gt)=>{l(T,"x1",g.left),l(T,"y1",ft),l(T,"x2",h-g.right),l(T,"y2",mt),l(D,"x",g.left-6),l(D,"y",wt),d(ut,gt)},[()=>K(t(f)),()=>K(t(f)),()=>K(t(f))+4,()=>t(f).toFixed(2)]),s(J,w)});var $=e(b),P=e($),F=e(P),G=e(F),tt=e(G);Lt(tt,17,()=>t(j),ce,(J,f,w)=>{var T=va();l(T,"cy",p-6),k(D=>{l(T,"cx",D),l(T,"fill",t(f).predictorWon?"var(--sig-success)":"var(--sig-danger)"),l(T,"opacity",t(f).predictorWon?.8:.5)},[()=>A(w)]),s(J,T)});var B=e(tt);Lt(B,17,()=>t(j),ce,(J,f,w)=>{var T=ua(),D=N(T);l(D,"y",0),l(D,"height",p);var ut=e(D);{var ft=mt=>{var wt=ca(),gt=N(wt),Ct=e(gt),Jt=e(Ct);k((i,o,z,S,nt,W)=>{l(gt,"x1",i),l(gt,"y1",g.top),l(gt,"x2",o),l(gt,"y2",p-g.bottom),l(Ct,"cx",z),l(Ct,"cy",S),l(Jt,"cx",nt),l(Jt,"cy",W)},[()=>A(w),()=>A(w),()=>A(w),()=>K(t(f).baselineNdcg),()=>A(w),()=>K(t(f).predictorNdcg)]),s(mt,wt)};rt(ut,mt=>{t(R)===w&&mt(ft)})}k((mt,wt)=>{l(D,"x",mt),l(D,"width",wt)},[()=>A(w)-Math.max(st/t(j).length,16)/2,()=>Math.max(st/t(j).length,16)]),Se("mouseenter",D,()=>y(R,w,!0)),Se("mouseleave",D,()=>y(R,null)),s(J,T)});var et=e(B);l(et,"y1",10),l(et,"y2",10);var it=e(et);l(it,"y",14);var vt=e(it);l(vt,"y1",10),l(vt,"y2",10);var $t=e(vt);l($t,"y",14),a(M);var xt=e(M);{var ct=J=>{const f=C(()=>t(j)[t(R)]);var w=pa(),T=r(w),D=r(T,!0);a(T);var ut=e(T,2),ft=r(ut),mt=e(r(ft),2),wt=r(mt,!0);a(mt),a(ft);var gt=e(ft,2),Ct=e(r(gt),2),Jt=r(Ct,!0);a(Ct),a(gt);var i=e(gt,2);let o;var z=r(i);a(i),a(ut);var S=e(ut,2);{var nt=W=>{var m=ga(),V=r(m,!0);a(m),k(()=>d(V,t(f).project)),s(W,m)};rt(S,W=>{t(f).project&&W(nt)})}a(w),k((W,m,V,jt)=>{d(D,W),d(wt,m),d(Jt,V),o=ke(i,1,"sig-label",null,o,{"text-[var(--sig-success)]":t(f).margin>0,"text-[var(--sig-danger)]":t(f).margin<0}),d(z,`${t(f).margin>0?"+":""}${jt??""}`)},[()=>pt(t(f).createdAt),()=>t(f).baselineNdcg.toFixed(3),()=>t(f).predictorNdcg.toFixed(3),()=>t(f).margin.toFixed(3)]),s(J,w)};rt(xt,J=>{t(R)!==null&&t(j)[t(R)]&&J(ct)})}k((J,f)=>{l($,"x",g.left-6),l($,"y",J),l(P,"x",g.left-6),l(P,"y",f),l(F,"points",t(_t)),l(G,"points",t(E)),l(et,"x1",h-g.right-160),l(et,"x2",h-g.right-146),l(it,"x",h-g.right-142),l(vt,"x1",h-g.right-80),l(vt,"x2",h-g.right-66),l($t,"x",h-g.right-62)},[()=>K(1)+4,()=>K(0)+4]),s(n,c)};rt(H,n=>{t(j).length===0?n(_):n(x,-1)})}s(kt,q),se()}var ma=v('<div class="flex items-baseline gap-2"><span class="text-2xl font-display font-bold text-foreground"> </span> <span class="sig-label text-[var(--sig-text-muted)]">ranking quality</span></div>'),_a=v("<!> <!>",1),ha=v('<div class="sig-label text-[var(--sig-text)] truncate pl-2 border-l border-[var(--sig-border)]"> </div>'),ba=v('<div class="sig-label text-[var(--sig-text-muted)] pl-2 italic">no ranking data yet</div>'),ya=v('<div class="flex justify-between sig-label"><span class="text-[var(--sig-text-muted)]"> </span> <span class="text-[var(--sig-text)]"> </span></div>'),$a=v("<!> <!>",1),wa=v('<div class="flex justify-between sig-label"><span class="text-[var(--sig-text-muted)]"> </span> <span class="text-[var(--sig-text)]"> </span></div>'),Pa=v('<div class="flex flex-col gap-2 p-3 bg-card rounded-lg border border-border min-w-0"><div class="flex items-center gap-2"><span class="sig-eyebrow tracking-wider text-[var(--sig-text-muted)]"> </span> <!></div> <!> <div class="space-y-1"><span class="sig-label text-[var(--sig-text-muted)]">recent top picks:</span> <!></div> <div class="mt-auto space-y-1 pt-2 border-t border-[var(--sig-border)]"></div></div>');function Pe(kt,u){re(u,!0);let g=Ee(u,"offline",3,!1);const h=C(()=>Math.round(u.ndcg*100)),p=C(()=>u.side==="baseline"?"Heuristic Baseline":"Predictor Model"),st=C(()=>`How well this system ranks memories. NDCG@10 = ${u.ndcg.toFixed(3)}`);var X=Pa(),j=r(X),A=r(j),K=r(A,!0);a(A);var dt=e(A,2);{var _t=_=>{xe(_,{variant:"destructive",class:"text-[8px] px-1.5 py-0",children:(x,n)=>{lt();var c=Pt("OFFLINE");s(x,c)},$$slots:{default:!0}})};rt(dt,_=>{g()&&_(_t)})}a(j);var E=e(j,2);O(E,()=>pe,(_,x)=>{x(_,{children:(n,c)=>{var M=_a(),b=N(M);O(b,()=>ue,(P,F)=>{F(P,{class:"text-left",children:(G,tt)=>{var B=ma(),et=r(B),it=r(et);a(et),lt(2),a(B),k(()=>d(it,`${t(h)??""}%`)),s(G,B)},$$slots:{default:!0}})});var $=e(b,2);O($,()=>ge,(P,F)=>{F(P,{class:"bg-[var(--sig-surface-raised)] border border-[var(--sig-border)] text-[var(--sig-text)] px-2 py-1 rounded text-xs",children:(G,tt)=>{lt();var B=Pt();k(()=>d(B,t(st))),s(G,B)},$$slots:{default:!0}})}),s(n,M)},$$slots:{default:!0}})});var Q=e(E,2),R=e(r(Q),2);{var pt=_=>{var x=Ut(),n=N(x);Lt(n,17,()=>u.topPicks.slice(0,3),c=>c.id,(c,M)=>{var b=ha(),$=r(b);a(b),k(P=>{l(b,"title",t(M).content),d($,`${P??""}${t(M).content.length>60?"...":""}`)},[()=>t(M).content.slice(0,60)]),s(c,b)}),s(_,x)},q=_=>{var x=ba();s(_,x)};rt(R,_=>{u.topPicks.length>0?_(pt):_(q,-1)})}a(Q);var H=e(Q,2);Lt(H,21,()=>u.stats,_=>_.label,(_,x)=>{var n=Ut(),c=N(n);{var M=$=>{var P=Ut(),F=N(P);O(F,()=>pe,(G,tt)=>{tt(G,{children:(B,et)=>{var it=$a(),vt=N(it);O(vt,()=>ue,(xt,ct)=>{ct(xt,{class:"w-full text-left",children:(J,f)=>{var w=ya(),T=r(w),D=r(T,!0);a(T);var ut=e(T,2),ft=r(ut,!0);a(ut),a(w),k(()=>{d(D,t(x).label),d(ft,t(x).value)}),s(J,w)},$$slots:{default:!0}})});var $t=e(vt,2);O($t,()=>ge,(xt,ct)=>{ct(xt,{class:"bg-[var(--sig-surface-raised)] border border-[var(--sig-border)] text-[var(--sig-text)] px-2 py-1 rounded text-xs",children:(J,f)=>{lt();var w=Pt();k(()=>d(w,t(x).tooltip)),s(J,w)},$$slots:{default:!0}})}),s(B,it)},$$slots:{default:!0}})}),s($,P)},b=$=>{var P=wa(),F=r(P),G=r(F,!0);a(F);var tt=e(F,2),B=r(tt,!0);a(tt),a(P),k(()=>{d(G,t(x).label),d(B,t(x).value)}),s($,P)};rt(c,$=>{t(x).tooltip?$(M):$(b,-1)})}s(_,n)}),a(H),a(X),k(()=>d(K,t(p))),s(kt,X),se()}function ka(kt,u){re(u,!0);let g=Le(u,["$$slots","$$events","$$legacy"]);const h=[["path",{d:"M14 17H5"}],["path",{d:"M19 7h-9"}],["circle",{cx:"17",cy:"17",r:"3"}],["circle",{cx:"7",cy:"7",r:"3"}]];We(kt,Re({name:"settings-2"},()=>g,{get iconNode(){return h},children:(p,st)=>{var X=Ut(),j=N(X);Be(j,()=>u.children??De),s(p,X)},$$slots:{default:!0}})),se()}var Na=v('<span class="sig-meta text-[var(--sig-text-muted)] shrink-0">alpha</span> <div class="flex gap-px h-2.5 flex-1 rounded overflow-hidden"><div class="bg-[var(--sig-text-muted)] transition-all duration-300"></div> <div class="bg-[var(--sig-accent)] transition-all duration-300"></div></div> <span class="sig-meta text-[var(--sig-text)] font-mono"> </span>',1),Ta=v("<!> <!>",1),Sa=v('<span class="sig-label text-[var(--sig-text)]">win rate: <span class="font-bold"> </span></span>'),Ca=v("<!> <!>",1),ja=v('<div class="sig-eyebrow text-[var(--sig-text-muted)]">training config</div> <div class="space-y-1"><div class="flex justify-between items-center"><span class="sig-label text-[var(--sig-text-muted)]">epochs per run</span> <input type="number" min="1" max="20" class="w-14 bg-[var(--sig-surface-raised)] border border-[var(--sig-border)] rounded px-1.5 py-0.5 text-center sig-label text-[var(--sig-text)] focus:outline-none focus:border-[var(--sig-accent)]"/></div> <span class="sig-meta text-[var(--sig-text-muted)]">more epochs = longer but more thorough</span></div> <div class="space-y-1"><div class="flex justify-between items-center"><span class="sig-label text-[var(--sig-text-muted)]">max samples</span> <input type="number" min="100" max="50000" step="500" class="w-20 bg-[var(--sig-surface-raised)] border border-[var(--sig-border)] rounded px-1.5 py-0.5 text-center sig-label text-[var(--sig-text)] focus:outline-none focus:border-[var(--sig-accent)]"/></div> <span class="sig-meta text-[var(--sig-text-muted)]">training pairs to use per run</span></div> <div class="space-y-1"><div class="flex justify-between items-center"><span class="sig-label text-[var(--sig-text-muted)]">auto-trains every</span> <span class="sig-label text-[var(--sig-text)]"> </span></div> <span class="sig-meta text-[var(--sig-text-muted)]">change in settings</span></div> <div class="pt-1 border-t border-[var(--sig-border)]"><span class="sig-meta text-[var(--sig-text-muted)]"> </span></div>',1),Ma=v("<!> <!>",1),Fa=v("<!> <!>",1),Ia=v('<div class="flex items-center gap-3 px-3 py-2 bg-card rounded-lg border border-border"><!> <!> <!> <div class="flex-1"></div> <!> <!> <button class="flex items-center p-1 rounded text-[var(--sig-text-muted)] hover:text-[var(--sig-text)] hover:bg-[var(--sig-surface-raised)] transition-colors disabled:opacity-40"><!></button></div>');function Aa(kt,u){re(u,!0);const g=C(()=>{switch(u.healthStatus){case"healthy":return"default";case"degraded":case"cold_start":return"secondary";case"unhealthy":return"destructive";default:return"outline"}});let h=Z(!1);var p=Ia(),st=r(p);xe(st,{get variant(){return t(g)},class:"text-[9px] shrink-0",children:(E,Q)=>{lt();var R=Pt();k(()=>d(R,u.healthStatus)),s(E,R)},$$slots:{default:!0}});var X=e(st,2);O(X,()=>pe,(E,Q)=>{Q(E,{children:(R,pt)=>{var q=Ta(),H=N(q);O(H,()=>ue,(x,n)=>{n(x,{class:"flex items-center gap-2 min-w-[120px]",children:(c,M)=>{var b=Na(),$=e(N(b),2),P=r($),F=e(P,2);a($);var G=e($,2),tt=r(G,!0);a(G),k(B=>{Ne(P,`width: ${u.alpha*100}%`),Ne(F,`width: ${(1-u.alpha)*100}%`),d(tt,B)},[()=>u.alpha.toFixed(2)]),s(c,b)},$$slots:{default:!0}})});var _=e(H,2);O(_,()=>ge,(x,n)=>{n(x,{class:"bg-[var(--sig-surface-raised)] border border-[var(--sig-border)] text-[var(--sig-text)] px-2 py-1 rounded text-xs max-w-[240px]",children:(c,M)=>{lt();var b=Pt("Baseline weight in scoring. Shifts toward predictor as it proves itself.");s(c,b)},$$slots:{default:!0}})}),s(R,q)},$$slots:{default:!0}})});var j=e(X,2);O(j,()=>pe,(E,Q)=>{Q(E,{children:(R,pt)=>{var q=Ca(),H=N(q);O(H,()=>ue,(x,n)=>{n(x,{children:(c,M)=>{var b=Sa(),$=e(r(b)),P=r($);a($),a(b),k(F=>d(P,`${F??""}%`),[()=>Math.round(u.winRate*100)]),s(c,b)},$$slots:{default:!0}})});var _=e(H,2);O(_,()=>ge,(x,n)=>{n(x,{class:"bg-[var(--sig-surface-raised)] border border-[var(--sig-border)] text-[var(--sig-text)] px-2 py-1 rounded text-xs max-w-[240px]",children:(c,M)=>{lt();var b=Pt("Sessions where predictor ranked better than heuristic baseline.");s(c,b)},$$slots:{default:!0}})}),s(R,q)},$$slots:{default:!0}})});var A=e(j,4);O(A,()=>sa,(E,Q)=>{Q(E,{get open(){return t(h)},set open(R){y(h,R,!0)},children:(R,pt)=>{var q=Ma(),H=N(q);O(H,()=>aa,(x,n)=>{n(x,{class:"flex items-center gap-1 sig-label text-[var(--sig-text-muted)] hover:text-[var(--sig-text)] transition-colors p-1 rounded hover:bg-[var(--sig-surface-raised)]",children:(c,M)=>{ka(c,{class:"w-3.5 h-3.5"})},$$slots:{default:!0}})});var _=e(H,2);O(_,()=>ra,(x,n)=>{n(x,{class:"w-[260px] bg-[var(--sig-surface)] border border-[var(--sig-border)] rounded-lg shadow-lg p-3 space-y-3",side:"bottom",align:"end",children:(c,M)=>{var b=ja(),$=e(N(b),2),P=r($),F=e(r(P),2);Ce(F),a(P),lt(2),a($);var G=e($,2),tt=r(G),B=e(r(tt),2);Ce(B),a(tt),lt(2),a(G);var et=e(G,2),it=r(et),vt=e(r(it),2),$t=r(vt);a(vt),a(it),lt(2),a(et);var xt=e(et,2),ct=r(xt),J=r(ct);a(ct),a(xt),k(f=>{je(F,u.trainEpochs),je(B,u.trainLimit),d($t,`${u.trainInterval??""} sessions`),d(J,`${f??""} training pairs available`)},[()=>u.trainingPairs.toLocaleString()]),we("input",F,f=>u.onEpochsChange(Number(f.currentTarget.value))),we("input",B,f=>u.onLimitChange(Number(f.currentTarget.value))),s(c,b)},$$slots:{default:!0}})}),s(R,q)},$$slots:{default:!0}})});var K=e(A,2);{let E=C(()=>u.training||!u.sidecarAlive);He(K,{variant:"default",size:"sm",class:"sig-label gap-1.5",get onclick(){return u.onTrain},get disabled(){return t(E)},children:(Q,R)=>{var pt=Fa(),q=N(pt);ia(q,{class:"w-3.5 h-3.5"});var H=e(q,2);{var _=n=>{var c=Pt("training...");s(n,c)},x=n=>{var c=Pt("train now");s(n,c)};rt(H,n=>{u.training?n(_):n(x,-1)})}s(Q,pt)},$$slots:{default:!0}})}var dt=e(K,2),_t=r(dt);{let E=C(()=>u.loading?"animate-spin":"");na(_t,{get class(){return`w-3.5 h-3.5 ${t(E)??""}`}})}a(dt),a(p),k(()=>dt.disabled=u.loading),we("click",dt,function(...E){u.onRefresh?.apply(this,E)}),s(kt,p),se()}Oe(["input","click"]);var Ea=v('<div class="flex items-center justify-center col-span-full row-span-full"><span class="sig-label text-[var(--sig-text-muted)]">loading predictor data...</span></div>'),Ra=v('<div class="flex items-center justify-center col-span-full row-span-full"><span class="sig-label text-[var(--sig-text-muted)]">unable to reach predictor -- check daemon status</span></div>'),Ba=v("Predictor <!>",1),Da=v(`<p class="sig-label text-[var(--sig-text-muted)]">The predictive memory scorer learns which memories matter most for each
|
|
2
2
|
session. Enable it in your pipeline configuration to start training.</p>`),La=v("<!> <!>",1),Oa=v('<div class="flex items-center justify-center col-span-full row-span-full"><!></div>'),za=v('<!> <div class="flex flex-col items-center justify-center gap-2 p-3 bg-card rounded-lg border border-border border-dashed"><span class="sig-eyebrow tracking-wider text-[var(--sig-text-muted)]">predictor model</span> <span class="sig-label text-[var(--sig-text-muted)]">collecting training data</span> <div class="w-full max-w-[180px] space-y-1"><div class="flex justify-between sig-meta text-[var(--sig-text-muted)]"><span> </span> <span> </span></div> <div class="w-full h-1.5 rounded-full bg-[var(--sig-surface-raised)] overflow-hidden"><div class="h-full rounded-full bg-[var(--sig-accent)] transition-all duration-300 animate-pulse"></div></div></div> <span class="sig-meta text-[var(--sig-text-muted)] max-w-[200px] text-center">needs more sessions before it can start ranking</span></div>',1),Wa=v("<!> <!>",1),Ha=v('<div class="sig-label text-[var(--sig-success)]"> </div>'),Ga=v('<div class="sig-label text-[var(--sig-danger)]"> </div>'),Ka=v("<!> details <!>",1),qa=v('<tr class="border-b border-[var(--sig-border)] border-opacity-30"><td class="py-1 pr-3"><span></span> </td><td class="text-right py-1 px-2"> </td><td class="text-right py-1 px-2"> </td><td> </td><td class="py-1 px-2 max-w-[120px] truncate"> </td><td class="py-1 pl-2 text-[var(--sig-text-muted)]"> </td></tr>'),Ja=v('<div><span class="sig-eyebrow text-[var(--sig-text-muted)]">recent comparisons</span> <table class="w-full sig-label mt-1"><thead><tr class="text-[var(--sig-text-muted)] border-b border-[var(--sig-border)]"><th class="text-left py-1 pr-3">session</th><th class="text-right py-1 px-2">pred</th><th class="text-right py-1 px-2">base</th><th class="text-right py-1 px-2">margin</th><th class="text-left py-1 px-2">project</th><th class="text-left py-1 pl-2">time</th></tr></thead><tbody></tbody></table></div>'),Va=v('<tr class="border-b border-[var(--sig-border)] border-opacity-30"><td class="py-1 pr-3"> </td><td class="text-right py-1 px-2"> </td><td class="text-right py-1 px-2"> </td><td class="text-right py-1 px-2"> </td><td class="text-right py-1 px-2"> </td><td class="py-1 pl-2 text-[var(--sig-text-muted)]"> </td></tr>'),Ya=v('<div><span class="sig-eyebrow text-[var(--sig-text-muted)]">training history</span> <table class="w-full sig-label mt-1"><thead><tr class="text-[var(--sig-text-muted)] border-b border-[var(--sig-border)]"><th class="text-left py-1 pr-3">version</th><th class="text-right py-1 px-2">loss</th><th class="text-right py-1 px-2">samples</th><th class="text-right py-1 px-2">duration</th><th class="text-right py-1 px-2">canary</th><th class="text-left py-1 pl-2">time</th></tr></thead><tbody></tbody></table></div>'),Za=v('<div class="flex items-start gap-2 sig-label"><span class="text-[var(--sig-text-muted)] shrink-0"> </span> <span class="text-[var(--sig-danger)] font-mono"> </span> <span class="text-[var(--sig-text)] truncate"> </span></div>'),Qa=v('<div><span class="sig-eyebrow text-[var(--sig-text-muted)]">errors</span> <div class="space-y-1 mt-1"></div></div>'),Ua=v('<div class="mt-2 max-h-[200px] overflow-y-auto space-y-3 pr-1"><!> <!> <!></div>'),Xa=v("<!> <!>",1),tr=v('<!> <div class="grid grid-cols-2 gap-3"><!></div> <div class="relative min-h-0"><!></div> <div class="space-y-1.5"><!> <!></div>',1),er=v('<div class="flex flex-col flex-1 min-h-0 overflow-hidden"><!> <div class="grid flex-1 min-h-0 overflow-y-auto gap-3 p-3" style="grid-template-rows: auto auto auto 1fr auto;"><!></div></div>');function xr(kt,u){re(u,!0);let g=Z(null),h=Z(null),p=Z(qt([])),st=Z(qt([])),X=Z(!0),j=Z(!1),A=Z(null),K=Z(null),dt=Z(0),_t=Z(qt([])),E=Z(!1);const Q="signet-predictor-train-config";function R(){try{const i=localStorage.getItem(Q);if(i)return JSON.parse(i)}catch{}return{epochs:3,limit:5e3}}function pt(i,o){localStorage.setItem(Q,JSON.stringify({epochs:i,limit:o}))}const q=R();let H=Z(qt(q.epochs)),_=Z(qt(q.limit)),x=10,n=Z(qt([])),c=Z(qt([]));const M=C(()=>t(g)!==null&&!t(g).enabled),b=C(()=>t(h)!==null&&!t(h).coldStartExited&&t(h).sidecarAlive),$=C(()=>t(h)!==null&&!t(h).sidecarAlive&&t(g)!==null&&t(g).enabled),P=10,F=C(()=>Math.min(1,t(p).length/P)),G=C(()=>t(p).length===0?0:t(p).filter(o=>o.predictorWon).length/t(p).length),tt=C(()=>t(p).length===0?0:t(p).reduce((i,o)=>i+o.predictorNdcg,0)/t(p).length),B=C(()=>t(p).length===0?0:t(p).reduce((i,o)=>i+o.baselineNdcg,0)/t(p).length),et=C(()=>t(p).length===0?0:t(p).reduce((i,o)=>i+o.scorerConfidence,0)/t(p).length),it=C(()=>[{label:"sessions evaluated",value:`${t(p).length}`},{label:"avg confidence",value:t(et).toFixed(2)}]),vt=C(()=>[{label:"win rate",value:`${Math.round(t(G)*100)}%`,tooltip:"Sessions where predictor ranked better than heuristic baseline."},{label:"training pairs",value:t(dt).toLocaleString(),tooltip:"Memory-relevance examples the model has learned from."},{label:"model",value:t(h)?`v${t(h).modelVersion} ${t(h).lastTrainedAt?`· ${T(t(h).lastTrainedAt)}`:""}`:"-"}]);let $t=Z(!1),xt=Z(!1);async function ct(){if(!t($t)){y($t,!0),y(X,t(g)===null);try{const[i,o,z,S,nt,W]=await Promise.allSettled([fetch(`${Dt}/api/predictor/status`),fetch(`${Dt}/api/diagnostics/predictor`),fetch(`${Dt}/api/predictor/comparisons?limit=50`),fetch(`${Dt}/api/predictor/training?limit=10`),fetch(`${Dt}/api/analytics/errors`),fetch(`${Dt}/api/predictor/training-pairs-count`)]);if(i.status==="fulfilled"&&i.value.ok&&y(g,await i.value.json(),!0),o.status==="fulfilled"&&o.value.ok&&y(h,await o.value.json(),!0),z.status==="fulfilled"&&z.value.ok){const m=await z.value.json();y(p,m.items??[],!0)}if(S.status==="fulfilled"&&S.value.ok){const m=await S.value.json();y(st,m.items??[],!0)}if(nt.status==="fulfilled"&&nt.value.ok){const V=(await nt.value.json()).errors??[];y(_t,V.filter(jt=>jt.stage==="predictor"),!0)}if(W.status==="fulfilled"&&W.value.ok){const m=await W.value.json();y(dt,m.count??0,!0)}}catch{}t(g)===null&&y(xt,!0),y(X,!1),y($t,!1),J().catch(()=>{})}}async function J(){try{if(t(p).length===0)return;const i=t(p)[0],o=i.predictorTopIds??[],z=i.baselineTopIds??[],S=[...new Set([...o.slice(0,5),...z.slice(0,5)])];if(S.length===0)return;const nt=await Promise.allSettled(S.map(m=>fetch(`${Dt}/api/memory/${m}`).then(V=>V.ok?V.json():null))),W=new Map;for(let m=0;m<S.length;m++){const V=nt[m];V.status==="fulfilled"&&V.value!==null&&W.set(S[m],V.value.content??"")}y(n,o.slice(0,5).filter(m=>W.has(m)).map(m=>({id:m,content:W.get(m)??""})),!0),y(c,z.slice(0,5).filter(m=>W.has(m)).map(m=>({id:m,content:W.get(m)??""})),!0)}catch{y(n,[],!0),y(c,[],!0)}}async function f(){y(j,!0),y(A,null),y(K,null);try{const i=await fetch(`${Dt}/api/predictor/train`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({epochs:t(H),limit:t(_)})}),o=await i.json();i.ok?(y(A,o,!0),await ct()):y(K,o.error??`HTTP ${i.status}`,!0)}catch(i){y(K,String(i),!0)}y(j,!1)}function w(i){const o=new Date(i);return Number.isNaN(o.getTime())?i:o.toLocaleString(void 0,{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})}function T(i){const o=Date.now()-new Date(i).getTime();if(Number.isNaN(o))return i;const z=Math.floor(o/6e4);if(z<1)return"just now";if(z<60)return`${z}m ago`;const S=Math.floor(z/60);return S<24?`${S}h ago`:`${Math.floor(S/24)}d ago`}ze(()=>{ct();const i=setInterval(ct,15e3);return()=>clearInterval(i)});var D=er(),ut=r(D);Je(ut,{title:"Predictor",children:(i,o)=>{Ve(i,{group:"engine",get tabs(){return qe},get activeTab(){return Ke.activeTab},onselect:(z,S)=>Ge(S)})}});var ft=e(ut,2),mt=r(ft);{var wt=i=>{var o=Ea();s(i,o)},gt=i=>{var o=Ra();s(i,o)},Ct=i=>{var o=Oa(),z=r(o);O(z,()=>Ze,(S,nt)=>{nt(S,{class:"max-w-md",children:(W,m)=>{var V=La(),jt=N(V);O(jt,()=>Qe,(Vt,Xt)=>{Xt(Vt,{children:(te,fe)=>{var L=Ut(),Y=N(L);O(Y,()=>Ue,(U,at)=>{at(U,{class:"flex items-center gap-2 text-sm",children:(Nt,Ot)=>{lt();var Mt=Ba(),zt=e(N(Mt));xe(zt,{variant:"outline",children:(Ft,Yt)=>{lt();var Zt=Pt("disabled");s(Ft,Zt)},$$slots:{default:!0}}),s(Nt,Mt)},$$slots:{default:!0}})}),s(te,L)},$$slots:{default:!0}})});var ne=e(jt,2);O(ne,()=>Ye,(Vt,Xt)=>{Xt(Vt,{children:(te,fe)=>{var L=Da();s(te,L)},$$slots:{default:!0}})}),s(W,V)},$$slots:{default:!0}})}),a(o),s(i,o)},Jt=i=>{var o=tr(),z=N(o);{let L=C(()=>t(h)?.status??"unknown"),Y=C(()=>t(h)?.alpha??1),U=C(()=>t(h)?.sidecarAlive??!1);Aa(z,{get healthStatus(){return t(L)},get alpha(){return t(Y)},get winRate(){return t(G)},get sidecarAlive(){return t(U)},get training(){return t(j)},get loading(){return t(X)},get trainingPairs(){return t(dt)},get trainEpochs(){return t(H)},get trainLimit(){return t(_)},trainInterval:x,onTrain:f,onRefresh:ct,onEpochsChange:at=>{y(H,at,!0),pt(at,t(_))},onLimitChange:at=>{y(_,at,!0),pt(t(H),at)}})}var S=e(z,2),nt=r(S);{var W=L=>{var Y=za(),U=N(Y);Pe(U,{side:"baseline",get ndcg(){return t(B)},get topPicks(){return t(c)},get stats(){return t(it)}});var at=e(U,2),Nt=e(r(at),4),Ot=r(Nt),Mt=r(Ot),zt=r(Mt);a(Mt);var Ft=e(Mt,2),Yt=r(Ft);a(Ft),a(Ot);var Zt=e(Ot,2),It=r(Zt);a(Zt),a(Nt),lt(2),a(at),k(Wt=>{d(zt,`${t(p).length??""} / 10 sessions`),d(Yt,`${Wt??""}%`),Ne(It,`width: ${t(F)*100}%`)},[()=>Math.round(t(F)*100)]),s(L,Y)},m=L=>{var Y=Wa(),U=N(Y);Pe(U,{side:"baseline",get ndcg(){return t(B)},get topPicks(){return t(c)},get stats(){return t(it)}});var at=e(U,2);Pe(at,{side:"predictor",get ndcg(){return t(tt)},get topPicks(){return t(n)},get stats(){return t(vt)},get offline(){return t($)}}),s(L,Y)};rt(nt,L=>{t(b)?L(W):L(m,-1)})}a(S);var V=e(S,2),jt=r(V);fa(jt,{get comparisons(){return t(p)}}),a(V);var ne=e(V,2),Vt=r(ne);{var Xt=L=>{var Y=Ha(),U=r(Y);a(Y),k((at,Nt)=>d(U,`trained v${t(A).step??""} -- ${t(A).samples_used??""} samples, loss ${at??""}, ${Nt??""}s`),[()=>t(A).loss.toFixed(4),()=>(t(A).duration_ms/1e3).toFixed(1)]),s(L,Y)},te=L=>{var Y=Ga(),U=r(Y,!0);a(Y),k(()=>d(U,t(K))),s(L,Y)};rt(Vt,L=>{t(A)?L(Xt):t(K)&&L(te,1)})}var fe=e(Vt,2);O(fe,()=>ea,(L,Y)=>{Y(L,{get open(){return t(E)},set open(U){y(E,U,!0)},children:(U,at)=>{var Nt=Xa(),Ot=N(Nt);O(Ot,()=>Xe,(zt,Ft)=>{Ft(zt,{class:"flex items-center gap-1.5 sig-label text-[var(--sig-text-muted)] hover:text-[var(--sig-text)] transition-colors",children:(Yt,Zt)=>{var It=Ka(),Wt=N(It);{let Ht=C(()=>t(E)?"0deg":"-90deg");oa(Wt,{class:"w-3 h-3 transition-transform duration-200",get style(){return`transform: rotate(${t(Ht)??""})`}})}var me=e(Wt,2);{var oe=Ht=>{xe(Ht,{variant:"destructive",class:"text-[8px] px-1 py-0 ml-1",children:(_e,Te)=>{lt();var ot=Pt();k(()=>d(ot,t(_t).length)),s(_e,ot)},$$slots:{default:!0}})};rt(me,Ht=>{t(_t).length>0&&Ht(oe)})}s(Yt,It)},$$slots:{default:!0}})});var Mt=e(Ot,2);O(Mt,()=>ta,(zt,Ft)=>{Ft(zt,{children:(Yt,Zt)=>{var It=Ua(),Wt=r(It);{var me=ot=>{var ht=Ja(),At=e(r(ht),2),Gt=e(r(At));Lt(Gt,21,()=>t(p).slice(0,15),bt=>bt.sessionKey,(bt,I)=>{var yt=qa(),Tt=r(yt),Et=r(Tt);let Rt;var Qt=e(Et);a(Tt);var St=e(Tt),ee=r(St,!0);a(St);var Kt=e(St),he=r(Kt,!0);a(Kt);var Bt=e(Kt);let le;var de=r(Bt);a(Bt);var ae=e(Bt),be=r(ae,!0);a(ae);var ve=e(ae),ye=r(ve,!0);a(ve),a(yt),k(($e,Me,Fe,Ie,Ae)=>{Rt=ke(Et,1,"w-2 h-2 inline-block rounded-full mr-1",null,Rt,{"bg-[var(--sig-success)]":t(I).predictorWon,"bg-[var(--sig-danger)]":!t(I).predictorWon}),d(Qt,` ${$e??""}`),d(ee,Me),d(he,Fe),le=ke(Bt,1,"text-right py-1 px-2",null,le,{"text-[var(--sig-success)]":t(I).margin>0,"text-[var(--sig-danger)]":t(I).margin<0}),d(de,`${t(I).margin>0?"+":""}${Ie??""}`),d(be,t(I).project??"-"),d(ye,Ae)},[()=>t(I).sessionKey.slice(0,8),()=>t(I).predictorNdcg.toFixed(3),()=>t(I).baselineNdcg.toFixed(3),()=>t(I).margin.toFixed(3),()=>w(t(I).createdAt)]),s(bt,yt)}),a(Gt),a(At),a(ht),s(ot,ht)};rt(Wt,ot=>{t(p).length>0&&ot(me)})}var oe=e(Wt,2);{var Ht=ot=>{var ht=Ya(),At=e(r(ht),2),Gt=e(r(At));Lt(Gt,21,()=>t(st),bt=>bt.id,(bt,I)=>{var yt=Va(),Tt=r(yt),Et=r(Tt);a(Tt);var Rt=e(Tt),Qt=r(Rt,!0);a(Rt);var St=e(Rt),ee=r(St,!0);a(St);var Kt=e(St),he=r(Kt);a(Kt);var Bt=e(Kt),le=r(Bt,!0);a(Bt);var de=e(Bt),ae=r(de,!0);a(de),a(yt),k((be,ve,ye,$e)=>{d(Et,`v${t(I).modelVersion??""}`),d(Qt,be),d(ee,t(I).sampleCount),d(he,`${ve??""}s`),d(le,ye),d(ae,$e)},[()=>t(I).loss.toFixed(4),()=>(t(I).durationMs/1e3).toFixed(1),()=>t(I).canaryNdcg!==null?t(I).canaryNdcg.toFixed(3):"-",()=>w(t(I).createdAt)]),s(bt,yt)}),a(Gt),a(At),a(ht),s(ot,ht)};rt(oe,ot=>{t(st).length>0&&ot(Ht)})}var _e=e(oe,2);{var Te=ot=>{var ht=Qa(),At=e(r(ht),2);Lt(At,21,()=>t(_t).slice(0,10),ce,(Gt,bt)=>{var I=Za(),yt=r(I),Tt=r(yt,!0);a(yt);var Et=e(yt,2),Rt=r(Et,!0);a(Et);var Qt=e(Et,2),St=r(Qt,!0);a(Qt),a(I),k(ee=>{d(Tt,ee),d(Rt,t(bt).code),d(St,t(bt).message)},[()=>w(t(bt).timestamp)]),s(Gt,I)}),a(At),a(ht),s(ot,ht)};rt(_e,ot=>{t(_t).length>0&&ot(Te)})}a(It),s(Yt,It)},$$slots:{default:!0}})}),s(U,Nt)},$$slots:{default:!0}})}),a(ne),s(i,o)};rt(mt,i=>{t(X)&&!t(g)&&!t(xt)?i(wt):t(xt)&&!t(g)?i(gt,1):t(M)?i(Ct,2):i(Jt,-1)})}a(ft),a(D),s(kt,D),se()}export{xr as default};
|