signetai 0.75.3 → 0.76.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/chunks/{C6Ojb3BH.js → 0clLSmnW.js} +1 -1
- package/dashboard/_app/immutable/chunks/{38c9eNlN.js → 3zVBfrdZ.js} +1 -1
- package/dashboard/_app/immutable/chunks/{BFfroN3L.js → B2jsalUy.js} +1 -1
- package/dashboard/_app/immutable/chunks/{Dd28wzrT.js → B8RkrkP2.js} +1 -1
- package/dashboard/_app/immutable/chunks/{y1slZt5Q.js → BGoUmRC5.js} +1 -1
- package/dashboard/_app/immutable/chunks/{C1IW0UhY.js → BOyo_MI2.js} +1 -1
- package/dashboard/_app/immutable/chunks/{D62dTc4G.js → BadoTVvL.js} +1 -1
- package/dashboard/_app/immutable/chunks/{HbCZjZcf.js → BbCiCc-S.js} +1 -1
- package/dashboard/_app/immutable/chunks/{ByvY1L5-.js → BmlXCwyO.js} +1 -1
- package/dashboard/_app/immutable/chunks/{DR_gnCzD.js → BnoQwUby.js} +1 -1
- package/dashboard/_app/immutable/chunks/{CDCXzqLs.js → ByjLSowq.js} +1 -1
- package/dashboard/_app/immutable/chunks/{DchYlK02.js → C2ZZbuiG.js} +1 -1
- package/dashboard/_app/immutable/chunks/{C3APymHh.js → C66QHYsa.js} +1 -1
- package/dashboard/_app/immutable/chunks/{ChxTDNIC.js → CAselS2a.js} +1 -1
- package/dashboard/_app/immutable/chunks/{DfP1YA_a.js → CGOrOrWU.js} +1 -1
- package/dashboard/_app/immutable/chunks/{CnFzFIh5.js → CGuKwt_O.js} +1 -1
- package/dashboard/_app/immutable/chunks/{DcntxIJ-.js → CHRUdggZ.js} +1 -1
- package/dashboard/_app/immutable/chunks/{CySkQkj7.js → CIz1qIuR.js} +1 -1
- package/dashboard/_app/immutable/chunks/{D93TQaqS.js → CXEXZMc1.js} +1 -1
- package/dashboard/_app/immutable/chunks/{C-sB2hkF.js → CXYsM7jF.js} +1 -1
- package/dashboard/_app/immutable/chunks/{B0JyiJfJ.js → CXy0jFjr.js} +1 -1
- package/dashboard/_app/immutable/chunks/{CW5IgVLe.js → CYfL1h3k.js} +1 -1
- package/dashboard/_app/immutable/chunks/{DiuFrEkV.js → CakBuH19.js} +2 -2
- package/dashboard/_app/immutable/chunks/{Tp-mbLmg.js → CkKq6V9e.js} +1 -1
- package/dashboard/_app/immutable/chunks/{SO1qThqK.js → Cn9W5J_c.js} +3 -3
- package/dashboard/_app/immutable/chunks/{vmtgDHAx.js → CoHp4Bdn.js} +1 -1
- package/dashboard/_app/immutable/chunks/{BRv-guih.js → CziNCBQn.js} +1 -1
- package/dashboard/_app/immutable/chunks/{B7WqGkzA.js → D6cd2usj.js} +1 -1
- package/dashboard/_app/immutable/chunks/D7iVIHZZ.js +1 -0
- package/dashboard/_app/immutable/chunks/{B-YEkkwW.js → D9mN4pgD.js} +1 -1
- package/dashboard/_app/immutable/chunks/{BHOw2Svy.js → DBfNNVC5.js} +1 -1
- package/dashboard/_app/immutable/chunks/{Q_i6rg6j.js → DJIs9bhB.js} +1 -1
- package/dashboard/_app/immutable/chunks/{DgqgJ0gT.js → DN6yGQLc.js} +1 -1
- package/dashboard/_app/immutable/chunks/{BoOBEA23.js → DP4CvwXd.js} +1 -1
- package/dashboard/_app/immutable/chunks/{CMmNZXyh.js → DXF7ZgZf.js} +1 -1
- package/dashboard/_app/immutable/chunks/{BDBt_caX.js → Dd59PHvt.js} +1 -1
- package/dashboard/_app/immutable/chunks/{BzVjpW9e.js → DmAxos8M.js} +1 -1
- package/dashboard/_app/immutable/chunks/{jLwo3fsc.js → Dmq7121K.js} +1 -1
- package/dashboard/_app/immutable/chunks/{Dc84ZbIq.js → DmznbP6q.js} +1 -1
- package/dashboard/_app/immutable/chunks/{BOdDhdAQ.js → DohRBaT0.js} +1 -1
- package/dashboard/_app/immutable/chunks/{yT2jjS94.js → DpKVa2Sd.js} +1 -1
- package/dashboard/_app/immutable/chunks/{D_wzmUwK.js → DtX_cpUj.js} +1 -1
- package/dashboard/_app/immutable/chunks/{5WXc-QW-.js → DxXJeUTe.js} +1 -1
- package/dashboard/_app/immutable/chunks/{Be2eWA32.js → XP9JsOOK.js} +1 -1
- package/dashboard/_app/immutable/chunks/{A02CeJeZ.js → cZYS1l8j.js} +1 -1
- package/dashboard/_app/immutable/chunks/{D0knx-lv.js → wZE3jJFf.js} +1 -1
- package/dashboard/_app/immutable/chunks/{BtA8M2-a.js → xhBU3KSt.js} +1 -1
- package/dashboard/_app/immutable/entry/{app.DzBJhbnx.js → app.Bjn677nV.js} +2 -2
- package/dashboard/_app/immutable/entry/start.Cz6XB5Z0.js +1 -0
- package/dashboard/_app/immutable/nodes/{1.ck9Tp0E9.js → 1.CtzhdM1P.js} +1 -1
- package/dashboard/_app/immutable/nodes/2.Cp4fGHP3.js +1 -0
- package/dashboard/_app/version.json +1 -1
- package/dashboard/index.html +6 -6
- package/dist/cli.js +1362 -773
- package/dist/daemon.js +282 -39
- package/package.json +1 -1
- package/dashboard/_app/immutable/chunks/CtdjfmVJ.js +0 -1
- package/dashboard/_app/immutable/entry/start.Dz1LStgD.js +0 -1
- package/dashboard/_app/immutable/nodes/2.DkduBJZu.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{p as n,s as d,c as h,f as c,a as i,n as l,b as m,d as f,r as v}from"./Bh3nIh1p.js";import{I as u}from"./
|
|
1
|
+
import{p as n,s as d,c as h,f as c,a as i,n as l,b as m,d as f,r as v}from"./Bh3nIh1p.js";import{I as u}from"./Cn9W5J_c.js";function g(t,a){n(a,!0);let e=v(a,["$$slots","$$events","$$legacy"]);const o=[["path",{d:"M10 11v6"}],["path",{d:"M14 11v6"}],["path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6"}],["path",{d:"M3 6h18"}],["path",{d:"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"}]];u(t,d({name:"trash-2"},()=>e,{get iconNode(){return o},children:(r,$)=>{var s=h(),p=c(s);i(p,()=>a.children??l),m(r,s)},$$slots:{default:!0}})),f()}export{g as T};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{p as h,g as s,c as o,f as d,M as p,F as m,E as x,a as y,n as w,b as c,d as _,r as k}from"./Bh3nIh1p.js";import{c as B,e as V}from"./
|
|
1
|
+
import{p as h,g as s,c as o,f as d,M as p,F as m,E as x,a as y,n as w,b as c,d as _,r as k}from"./Bh3nIh1p.js";import{c as B,e as V}from"./Cn9W5J_c.js";const j=V({base:"focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive inline-flex w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-full border px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-[color,box-shadow] focus-visible:ring-[3px] [&>svg]:pointer-events-none [&>svg]:size-3",variants:{variant:{default:"bg-primary text-primary-foreground [a&]:hover:bg-primary/90 border-transparent",secondary:"bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90 border-transparent",destructive:"bg-destructive [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/70 border-transparent text-white",outline:"text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground"}},defaultVariants:{variant:"default"}});function F(v,e){h(e,!0);let a=s(e,"ref",15,null),f=s(e,"variant",3,"default"),l=k(e,["$$slots","$$events","$$legacy","ref","href","class","variant","children"]);var t=o(),u=d(t);p(u,()=>e.href?"a":"span",!1,(i,g)=>{m(i,r=>a(r),()=>a()),x(i,r=>({"data-slot":"badge",href:e.href,class:r,...l}),[()=>B(j({variant:f()}),e.class)]);var n=o(),b=d(n);y(b,()=>e.children??w),c(g,n)}),c(v,t),_()}export{F as B};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{p,s as c,c as d,f as l,a as i,n as f,b as m,d as h,r as u}from"./Bh3nIh1p.js";import{I as $}from"./
|
|
1
|
+
import{p,s as c,c as d,f as l,a as i,n as f,b as m,d as h,r as u}from"./Bh3nIh1p.js";import{I as $}from"./Cn9W5J_c.js";function C(o,e){p(e,!0);let t=u(e,["$$slots","$$events","$$legacy"]);const r=[["path",{d:"m15 18-6-6 6-6"}]];$(o,c({name:"chevron-left"},()=>t,{get iconNode(){return r},children:(a,v)=>{var s=d(),n=l(s);i(n,()=>e.children??f),m(a,s)},$$slots:{default:!0}})),h()}export{C};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{p as _,g as o,c as w,f as k,k as I,b as s,d as E,E as c,F as f,K as F,J as v,m as g,r as J}from"./Bh3nIh1p.js";import{c as b}from"./
|
|
1
|
+
import{p as _,g as o,c as w,f as k,k as I,b as s,d as E,E as c,F as f,K as F,J as v,m as g,r as J}from"./Bh3nIh1p.js";import{c as b}from"./Cn9W5J_c.js";var K=g("<input/>"),P=g("<input/>");function q(p,i){_(i,!0);let a=o(i,"ref",15,null),d=o(i,"value",15),m=o(i,"files",15),n=o(i,"data-slot",3,"input"),l=J(i,["$$slots","$$events","$$legacy","ref","value","type","files","class","data-slot"]);var u=w(),x=k(u);{var y=t=>{var e=K();c(e,r=>({"data-slot":n(),class:r,type:"file",...l}),[()=>b("selection:bg-primary dark:bg-input/30 selection:text-primary-foreground border-input ring-offset-background placeholder:text-muted-foreground flex h-9 w-full min-w-0 rounded-md border bg-transparent px-3 pt-1.5 text-sm font-medium shadow-xs transition-[color,box-shadow] outline-none disabled:cursor-not-allowed disabled:opacity-50","focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]","aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",i.class)],void 0,void 0,void 0,!0),f(e,r=>a(r),()=>a()),F(e,m),v(e,d),s(t,e)},h=t=>{var e=P();c(e,r=>({"data-slot":n(),class:r,type:i.type,...l}),[()=>b("border-input bg-background selection:bg-primary dark:bg-input/30 selection:text-primary-foreground ring-offset-background placeholder:text-muted-foreground flex h-9 w-full min-w-0 rounded-md border px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm","focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]","aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",i.class)],void 0,void 0,void 0,!0),f(e,r=>a(r),()=>a()),v(e,d),s(t,e)};I(x,t=>{i.type==="file"?t(y):t(h,-1)})}s(p,u),E()}export{q as I};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{e as Rt,p as tt,Q as Ft,i as e,v as x,j as r,k as I,t as s,l as t,y as _,B as Fe,D as v,z as f,O as mt,b as l,d as rt,u as E,o as V,aj as de,P as Ut,f as Z,A as Oe,G as pt,N as $t,ai as jt,c as Ve,h as ke,w as he,x as Ee,m as D,q as nr,s as ir,ad as Bt,F as lr}from"./Bh3nIh1p.js";import{B as Tt}from"./38c9eNlN.js";import{aP as dr,S as cr,J as vr,K as ur,N as fr,L as gr,aQ as mr,t as zt,aR as pr,f as hr,n as xr,E as br,B as gt}from"./SO1qThqK.js";import{S as Wt}from"./5WXc-QW-.js";import{P as _r,a as yr,b as wr}from"./Tp-mbLmg.js";import{w as Pt,s as Yt}from"./pP_VsnEc.js";import{P as kr}from"./Bfse3fCo.js";import{T as Sr}from"./CjrslgAi.js";const Te={harness:"#4dabf7",daemon:"#ff922b",pipeline:"#da77f2",db:"#ffd43b",search:"#da77f2",files:"#20c997",configs:"#4dabf7",llm:"#fcc419"},Ge={harness:"AI Harness",daemon:"Signet Daemon",pipeline:"Pipeline Workers",db:"memories.db",search:"Hybrid Recall",files:"~/.agents/",configs:"Harness Configs",llm:"LLM Provider"},Cr={harness:{x:20,y:20,w:240,h:120,label:Ge.harness,color:Te.harness},daemon:{x:300,y:20,w:340,h:280,label:Ge.daemon,color:Te.daemon},pipeline:{x:20,y:360,w:620,h:140,label:Ge.pipeline,color:Te.pipeline},db:{x:680,y:160,w:200,h:200,label:Ge.db,color:Te.db},search:{x:920,y:160,w:200,h:140,label:Ge.search,color:Te.search},files:{x:680,y:400,w:200,h:100,label:Ge.files,color:Te.files},configs:{x:920,y:400,w:200,h:100,label:Ge.configs,color:Te.configs},llm:{x:680,y:540,w:200,h:80,label:Ge.llm,color:Te.llm}},at=[{id:"harness",label:"AI Client",group:"harness",x:40,y:55,w:200,h:50,logCategories:["hooks","session-tracker"],icon:"terminal",description:"Claude Code / OpenCode / OpenClaw — sends session hooks"},{id:"hooks",label:"Hook Handlers",group:"daemon",x:320,y:50,w:140,h:40,logCategories:["hooks"],icon:"webhook",description:"Session lifecycle hooks (start, submit, remember, recall, end)"},{id:"mutex",label:"Session Mutex",group:"daemon",x:320,y:110,w:140,h:40,logCategories:["session-tracker"],icon:"lock",description:"Plugin vs legacy runtime path enforcement"},{id:"queue",label:"Job Queues",group:"daemon",x:320,y:170,w:140,h:40,logCategories:["pipeline"],diagnosticDomain:"queue",icon:"layers",description:"memory_jobs + summary_jobs durable queues"},{id:"watcher",label:"File Watcher",group:"daemon",x:490,y:110,w:130,h:40,logCategories:["watcher"],icon:"eye",description:"Chokidar file change detection on ~/.agents/"},{id:"sync",label:"Harness Sync",group:"daemon",x:490,y:170,w:130,h:40,logCategories:["sync"],diagnosticDomain:"connector",icon:"refresh-cw",description:"Generate CLAUDE.md, AGENTS.md from identity files"},{id:"extraction",label:"Extraction",group:"pipeline",x:40,y:395,w:110,h:40,logCategories:["pipeline"],diagnosticDomain:"queue",icon:"cpu",description:"LLM extracts facts + entities (2s poll)"},{id:"summary",label:"Summary",group:"pipeline",x:165,y:395,w:100,h:40,logCategories:["summary-worker"],icon:"file-text",description:"Session-end transcript summarizer (5s poll)"},{id:"document",label:"Document",group:"pipeline",x:280,y:395,w:100,h:40,logCategories:["document-worker"],icon:"file-plus",description:"Chunk + embed documents (10s poll)"},{id:"retention",label:"Retention",group:"pipeline",x:395,y:395,w:100,h:40,logCategories:["retention"],diagnosticDomain:"mutation",icon:"trash-2",description:"Purge expired data (6h interval)"},{id:"maintenance",label:"Maintenance",group:"pipeline",x:510,y:395,w:110,h:40,logCategories:["maintenance"],icon:"wrench",description:"Self-repair + diagnostics (30min interval)"},{id:"database",label:"SQLite",group:"db",x:710,y:220,w:140,h:80,logCategories:["memory","embedding"],diagnosticDomain:"storage",icon:"database",description:"memories, embeddings, entities, relations, history"},{id:"search",label:"Hybrid Recall",group:"search",x:940,y:200,w:160,h:60,logCategories:["memory"],diagnosticDomain:"index",icon:"search",description:"BM25 + vector similarity + graph boost"},{id:"files",label:"Identity Files",group:"files",x:710,y:430,w:140,h:40,logCategories:["sync"],icon:"folder",description:"AGENTS.md, SOUL.md, IDENTITY.md, USER.md, MEMORY.md"},{id:"configs",label:"CLAUDE.md",group:"configs",x:950,y:430,w:140,h:40,logCategories:["harness"],icon:"file-code",description:"Generated harness config files"},{id:"llm",label:"LLM Provider",group:"llm",x:710,y:560,w:140,h:40,logCategories:["llm"],diagnosticDomain:"provider",icon:"brain",description:"Ollama qwen3:4b (or configured provider)"}],qt=new Map(at.map(g=>[g.id,g])),Pr=[{from:"harness",to:"hooks",label:"POST"},{from:"hooks",to:"mutex"},{from:"hooks",to:"queue",label:"enqueue"},{from:"queue",to:"extraction"},{from:"queue",to:"summary"},{from:"queue",to:"document"},{from:"extraction",to:"database",label:"write"},{from:"summary",to:"database"},{from:"document",to:"database"},{from:"retention",to:"database"},{from:"maintenance",to:"database"},{from:"extraction",to:"llm"},{from:"summary",to:"llm"},{from:"database",to:"search"},{from:"search",to:"harness",dashed:!0,label:"recall"},{from:"watcher",to:"sync"},{from:"files",to:"watcher"},{from:"sync",to:"configs"},{from:"files",to:"sync"},{from:"summary",to:"files",label:".md"},{from:"configs",to:"harness",dashed:!0,label:"next session"}];function $r(){return{health:"unknown",score:0,lastActivity:null,pulseCount:0,queueDepth:0,processingRate:0,errorCount:0,recentLogs:[],metrics:{}}}const Gt=new Map;for(const g of at)for(const o of g.logCategories){const i=Gt.get(o);i?i.push(g.id):Gt.set(o,[g.id])}const Xt=20;function Tr(){const g={};for(const o of at)g[o.id]=$r();return g}const Vt=50,S=Rt({nodes:Tr(),mode:"unknown",connected:!1,lastPoll:null,selectedNodeId:null,feed:[]});let pe=null;function Zt(){pe&&(pe.close(),pe=null);const g="";pe=new EventSource(`${g}/api/logs/stream`),pe.onopen=()=>{S.connected=!0},pe.onmessage=o=>{try{const i=JSON.parse(o.data);if(i.type==="connected"){S.connected=!0;return}const d=[...S.feed,i];S.feed=d.length>Vt?d.slice(-Vt):d;const c=Gt.get(i.category);if(!c)return;for(const N of c){const M=S.nodes[N];if(!M)continue;M.pulseCount+=1,M.lastActivity=i.timestamp;const A=[...M.recentLogs,i];M.recentLogs=A.length>Xt?A.slice(-Xt):A,i.level==="error"&&(M.errorCount+=1)}}catch{}},pe.onerror=()=>{S.connected=!1,pe?.close(),pe=null,setTimeout(()=>{pe||Zt()},3e3)}}function Er(){S.connected=!1,pe?.close(),pe=null}let ht=null;function Mr(g){return g>=.8?"healthy":g>=.5?"degraded":g>0?"unhealthy":"unknown"}function Dr(g){for(const o of at){if(!o.diagnosticDomain)continue;const i=g[o.diagnosticDomain];if(!i)continue;const d=S.nodes[o.id];if(!d)continue;const c=typeof i.score=="number"?i.score:0;d.score=c,d.health=Mr(c),d.metrics=i}}function Lr(g){const o=S.nodes.queue;if(o){const c=g.memory,N=g.summary;o.queueDepth=c.pending+c.leased+N.pending+N.leased,o.metrics={memory:c,summary:N}}const i=S.nodes.extraction;i&&(i.queueDepth=g.memory.pending);const d=S.nodes.summary;d&&(d.queueDepth=g.summary.pending)}async function Qt(){try{const g=await dr();if(!g)return;if(S.mode=g.mode,S.lastPoll=new Date().toISOString(),g.diagnostics&&Dr(g.diagnostics),g.queues&&Lr(g.queues),g.workers)for(const[o,i]of Object.entries(g.workers)){const d=S.nodes[o];d&&i.running&&d.health==="unknown"&&(d.health="healthy",d.score=1)}if(g.errorSummary)for(const[o,i]of Object.entries(g.errorSummary)){const d=o==="extraction"||o==="decision"?"extraction":o==="embedding"||o==="mutation"?"database":o==="connector"?"sync":null;if(d){const c=S.nodes[d];c&&(c.errorCount=i)}}}catch{}}function Or(g=5e3){ht||(Qt(),ht=setInterval(Qt,g))}function Nr(){ht&&(clearInterval(ht),ht=null)}function Jt(g){S.selectedNodeId=g}var Ar=de('<rect class="glow-bg svelte-1tib701" x="-6" y="-6" rx="10" ry="10" opacity="0.12"></rect>'),Ir=de('<rect class="pulse-ring svelte-1tib701" x="-4" y="-4" rx="10" ry="10" fill="none"></rect>'),Rr=de('<rect class="flash-overlay svelte-1tib701" rx="6" ry="6"></rect>'),jr=de('<animate attributeName="opacity" values="1;0.4;1" dur="1.5s" repeatCount="indefinite" class="svelte-1tib701"></animate>'),qr=de('<g class="svelte-1tib701"><rect x="-12" y="-7" width="24" height="14" rx="7" opacity="0.95" class="svelte-1tib701"></rect><text x="0" y="1" text-anchor="middle" dominant-baseline="middle" fill="#fff" font-size="9" font-weight="600" font-family="var(--font-mono)" class="svelte-1tib701"> </text></g>'),Gr=de('<g transform="translate(8, -6)" class="svelte-1tib701"><rect x="-12" y="-7" width="24" height="14" rx="7" fill="#ef4444" opacity="0.95" class="svelte-1tib701"></rect><text x="0" y="1" text-anchor="middle" dominant-baseline="middle" fill="#fff" font-size="9" font-weight="600" font-family="var(--font-mono)" class="svelte-1tib701"> </text></g>'),Fr=de('<g style="cursor: pointer"><!><!><rect class="node-rect svelte-1tib701" rx="6" ry="6"></rect><!><circle cx="10" class="svelte-1tib701"><!></circle><text text-anchor="middle" dominant-baseline="middle" font-size="11" font-family="var(--font-mono)" class="svelte-1tib701"> </text><!><!></g>');function Hr(g,o){tt(o,!0);let i=E(()=>Te[o.def.group]);const d={healthy:"#4ade80",degraded:"#fbbf24",unhealthy:"#f87171",unknown:"#6b6b76"};let c=E(()=>d[o.nodeState.health]),N=E(()=>o.nodeState.health==="unknown"?e(i)+"88":e(c)),M=V(0),A=V(!1),y=V(!1),C=null;Ft(()=>{if(o.nodeState.pulseCount>e(M)){x(M,o.nodeState.pulseCount,!0),x(A,!0);const h=setTimeout(()=>{x(A,!1)},1200);return x(y,!0),C&&clearTimeout(C),C=setTimeout(()=>{x(y,!1)},3e3),()=>{clearTimeout(h),C&&clearTimeout(C)}}});function ee(){o.onselectnode(o.def.id)}var P=Fr();let $;var L=r(P);{var H=h=>{var p=Ar();_(()=>{v(p,"width",o.def.w+12),v(p,"height",o.def.h+12),v(p,"fill",e(i))}),l(h,p)};I(L,h=>{e(y)&&h(H)})}var B=s(L);{var Q=h=>{var p=Ir();_(()=>{v(p,"width",o.def.w+8),v(p,"height",o.def.h+8),v(p,"stroke",e(i))}),l(h,p)};I(B,h=>{e(A)&&h(Q)})}var b=s(B),w=s(b);{var T=h=>{var p=Rr();_(()=>{v(p,"width",o.def.w),v(p,"height",o.def.h),v(p,"fill",e(i))}),l(h,p)};I(w,h=>{e(A)&&h(T)})}var O=s(w),J=r(O);{var F=h=>{var p=jr();l(h,p)};I(J,h=>{e(y)&&h(F)})}t(O);var R=s(O),u=r(R,!0);t(R);var k=s(R);{var q=h=>{var p=qr(),Y=r(p),te=s(Y),Ne=r(te,!0);t(te),t(p),_(()=>{v(p,"transform",`translate(${o.def.w-8}, -6)`),v(Y,"fill",e(i)),f(Ne,o.nodeState.queueDepth)}),l(h,p)};I(k,h=>{o.nodeState.queueDepth>0&&h(q)})}var j=s(k);{var K=h=>{var p=Gr(),Y=s(r(p)),te=r(Y,!0);t(Y),t(p),_(()=>f(te,o.nodeState.errorCount)),l(h,p)};I(j,h=>{o.nodeState.errorCount>0&&h(K)})}t(P),_(()=>{$=Fe(P,0,"pipeline-node svelte-1tib701",null,$,{"pipeline-node--selected":o.selected,"pipeline-node--active":e(y)}),v(P,"transform",`translate(${o.def.x??""}, ${o.def.y??""})`),v(b,"width",o.def.w),v(b,"height",o.def.h),v(b,"fill",e(y)?e(i)+"18":"var(--sig-surface-raised)"),v(b,"stroke",e(y)?e(i):e(N)),v(b,"stroke-width",o.selected?2.5:e(y)?1.5:1),v(O,"cy",o.def.h/2),v(O,"r",e(y)?4:3),v(O,"fill",e(y)?e(i):e(c)),v(O,"opacity",e(y)?1:.7),v(R,"x",o.def.w/2),v(R,"y",o.def.h/2+1),v(R,"fill",e(y)?e(i):"var(--sig-text-bright)"),v(R,"font-weight",e(y)?"600":"400"),f(u,o.def.label)}),mt("click",P,ee),l(g,P),rt()}Ut(["click"]);var Br=de('<path fill="none" stroke-width="4" opacity="0.15" class="edge-glow svelte-kl8ook"></path>'),zr=de('<circle r="2" opacity="0.6" class="svelte-kl8ook"><animateMotion repeatCount="indefinite" begin="0.5s" class="svelte-kl8ook"></animateMotion></circle>'),Yr=de('<circle class="svelte-kl8ook"><animateMotion repeatCount="indefinite" class="svelte-kl8ook"></animateMotion></circle><!>',1),Xr=de('<text text-anchor="middle" font-size="9" font-family="var(--font-mono)" class="svelte-kl8ook"> </text>'),Vr=de('<g class="pipeline-edge svelte-kl8ook"><path fill="none"></path><!><!><!></g>');function Qr(g,o){tt(o,!0);let i=E(()=>qt.get(o.edge.from)),d=E(()=>qt.get(o.edge.to)),c=E(()=>e(i)?Te[e(i).group]:"#6b6b76"),N=E(()=>{if(!e(i)||!e(d))return"";const b=e(i).x+e(i).w/2,w=e(i).y+e(i).h/2,T=e(d).x+e(d).w/2,O=e(d).y+e(d).h/2,J=(b+T)/2,F=(w+O)/2,R=Math.abs(T-b),u=Math.abs(O-w);return R>u?`M ${b} ${w} Q ${J} ${w}, ${J} ${F} Q ${J} ${O}, ${T} ${O}`:`M ${b} ${w} Q ${b} ${F}, ${J} ${F} Q ${T} ${F}, ${T} ${O}`}),M=E(()=>!e(i)||!e(d)?{x:0,y:0}:{x:(e(i).x+e(i).w/2+e(d).x+e(d).w/2)/2,y:(e(i).y+e(i).h/2+e(d).y+e(d).h/2)/2-8}),A=E(()=>o.active?"1s":"3s");var y=Vr(),C=r(y);let ee;var P=s(C);{var $=b=>{var w=Br();_(()=>{v(w,"d",e(N)),v(w,"stroke",e(c))}),l(b,w)};I(P,b=>{o.active&&!o.edge.dashed&&b($)})}var L=s(P);{var H=b=>{var w=Yr(),T=Z(w),O=r(T);t(T);var J=s(T);{var F=R=>{var u=zr(),k=r(u);t(u),_(()=>{v(u,"fill",e(c)),v(k,"dur",e(A)),v(k,"path",e(N))}),l(R,u)};I(J,R=>{o.active&&R(F)})}_(()=>{v(T,"r",o.active?3.5:2),v(T,"fill",o.active?e(c):"var(--sig-border)"),v(T,"opacity",o.active?1:.3),v(O,"dur",e(A)),v(O,"path",e(N))}),l(b,w)};I(L,b=>{o.edge.dashed||b(H)})}var B=s(L);{var Q=b=>{var w=Xr(),T=r(w,!0);t(w),_(()=>{v(w,"x",e(M).x),v(w,"y",e(M).y),v(w,"fill",o.active?e(c):"var(--sig-text-muted)"),v(w,"opacity",o.active?.9:.45),f(T,o.edge.label)}),l(b,w)};I(B,b=>{o.edge.label&&b(Q)})}t(y),_(()=>{v(C,"d",e(N)),v(C,"stroke",o.active?e(c):"var(--sig-border)"),v(C,"stroke-width",o.active?1.5:.8),v(C,"stroke-dasharray",o.edge.dashed?"6 4":"none"),v(C,"opacity",o.active?.8:.25),ee=Fe(C,0,"svelte-kl8ook",null,ee,{"edge-active":o.active})}),l(g,y),rt()}var Ur=de('<g><rect rx="8" ry="8" fill-opacity="0.06" stroke-opacity="0.25" stroke-width="1" stroke-dasharray="4 3"></rect><text font-size="9" font-family="var(--font-mono)" opacity="0.6" letter-spacing="0.08em"> </text></g>'),Wr=de('<svg viewBox="0 0 1160 650" preserveAspectRatio="xMidYMid meet" class="w-full h-full select-none" xmlns="http://www.w3.org/2000/svg" role="application" aria-label="Pipeline graph. Use mouse wheel to zoom, drag background to pan, double-click to reset."><defs><filter id="glow" x="-50%" y="-50%" width="200%" height="200%"><feGaussianBlur stdDeviation="3" result="blur"></feGaussianBlur><feMerge><feMergeNode in="blur"></feMergeNode><feMergeNode in="SourceGraphic"></feMergeNode></feMerge></filter><marker id="arrow" viewBox="0 0 10 10" refX="10" refY="5" markerWidth="6" markerHeight="6" orient="auto-start-reverse"><path d="M 0 0 L 10 5 L 0 10 z" fill="var(--sig-border-strong)"></path></marker></defs><g><!><!><!></g></svg>');function Zr(g,o){tt(o,!0);const i=Object.entries(Cr),d=.7,c=2.4,N=.12;let M=V(1),A=V(0),y=V(0),C=V(!1),ee=V(0),P=V(0);function $(u){const k=S.nodes[u];return k?.lastActivity?Date.now()-new Date(k.lastActivity).getTime()<5e3:!1}function L(u){return Math.min(c,Math.max(d,u))}function H(){x(M,1),x(A,0),x(y,0)}function B(u){u.preventDefault();const k=u.currentTarget;if(!(k instanceof SVGSVGElement))return;const q=k.getBoundingClientRect(),j=u.clientX-q.left,K=u.clientY-q.top,h=u.deltaY<0?1:-1,p=L(e(M)+h*N);if(p===e(M))return;const Y=(j-e(A))/e(M),te=(K-e(y))/e(M);x(M,p,!0),x(A,j-Y*p),x(y,K-te*p)}function Q(u){if(u.button!==0||u.target!==u.currentTarget)return;const k=u.currentTarget;k instanceof SVGSVGElement&&k.setPointerCapture(u.pointerId),x(C,!0),x(ee,u.clientX,!0),x(P,u.clientY,!0)}function b(u){if(!e(C))return;const k=u.clientX-e(ee),q=u.clientY-e(P);x(ee,u.clientX,!0),x(P,u.clientY,!0),x(A,e(A)+k),x(y,e(y)+q)}function w(u){if(!e(C))return;const k=u.currentTarget;k instanceof SVGSVGElement&&k.releasePointerCapture(u.pointerId),x(C,!1)}var T=Wr(),O=s(r(T)),J=r(O);Oe(J,17,()=>i,pt,(u,k)=>{var q=E(()=>jt(e(k),2));let j=()=>e(q)[1];var K=Ur(),h=r(K),p=s(h),Y=r(p,!0);t(p),t(K),_(te=>{v(h,"x",j().x),v(h,"y",j().y),v(h,"width",j().w),v(h,"height",j().h),v(h,"fill",j().color),v(h,"stroke",j().color),v(p,"x",j().x+8),v(p,"y",j().y+14),v(p,"fill",j().color),f(Y,te)},[()=>j().label.toUpperCase()]),l(u,K)});var F=s(J);Oe(F,17,()=>Pr,u=>u.from+"-"+u.to,(u,k)=>{{let q=E(()=>$(e(k).from));Qr(u,{get edge(){return e(k)},get active(){return e(q)}})}});var R=s(F);Oe(R,17,()=>at,u=>u.id,(u,k)=>{{let q=E(()=>S.selectedNodeId===e(k).id);Hr(u,{get def(){return e(k)},get nodeState(){return S.nodes[e(k).id]},get selected(){return e(q)},get onselectnode(){return o.onselectnode}})}}),t(O),t(T),_(()=>v(O,"transform",`translate(${e(A)} ${e(y)}) scale(${e(M)})`)),$t("wheel",T,B),mt("pointerdown",T,Q),mt("pointermove",T,b),mt("pointerup",T,w),$t("pointercancel",T,w),$t("pointerleave",T,w),mt("dblclick",T,H),l(g,T),rt()}Ut(["pointerdown","pointermove","pointerup","dblclick"]);var Jr=D(" <!>",1),Kr=D("<!> <!>",1),ea=D('<div class="flex justify-between px-2"><span class="text-[var(--sig-text-muted)]"> </span> <span class="text-[var(--sig-text-bright)]"> </span></div>'),ta=D('<div class="text-[var(--sig-text-muted)] mt-1"> </div> <!>',1),ra=D('<div class="flex justify-between"><span class="text-[var(--sig-text-muted)]"> </span> <span class="text-[var(--sig-text-bright)]"> </span></div>'),aa=D('<section><h4 class="text-[10px] uppercase tracking-[0.1em] text-[var(--sig-text-muted)] mb-2 font-[family-name:var(--font-display)]">Queue Details</h4> <div class="space-y-1 text-[11px] font-[family-name:var(--font-mono)]"></div></section>'),oa=D('<section><h4 class="text-[10px] uppercase tracking-[0.1em] text-[var(--sig-text-muted)] mb-1 font-[family-name:var(--font-display)]">Last Activity</h4> <span class="text-[11px] text-[var(--sig-text)] font-[family-name:var(--font-mono)]"> </span></section>'),sa=D('<div class="flex gap-2 py-1 px-1 text-[10px] font-[family-name:var(--font-mono)] hover:bg-[var(--sig-surface-raised)] rounded"><span class="text-[var(--sig-text-muted)] shrink-0 w-[52px]"> </span> <span> </span> <span class="text-[var(--sig-text)] truncate"> </span></div>'),na=D('<div class="text-[10px] text-[var(--sig-text-muted)] italic py-2">No recent activity</div>'),ia=D('<!> <div class="mt-4 space-y-4 overflow-y-auto pr-2" style="max-height: calc(100vh - 140px);"><section><h4 class="text-[10px] uppercase tracking-[0.1em] text-[var(--sig-text-muted)] mb-2 font-[family-name:var(--font-display)]">Metrics</h4> <div class="grid grid-cols-3 gap-2"><div class="p-2 rounded bg-[var(--sig-surface)] border border-[var(--sig-border)]"><div class="text-[9px] text-[var(--sig-text-muted)] uppercase">Score</div> <div class="text-[15px] text-[var(--sig-text-bright)] font-[family-name:var(--font-mono)]"> </div></div> <div class="p-2 rounded bg-[var(--sig-surface)] border border-[var(--sig-border)]"><div class="text-[9px] text-[var(--sig-text-muted)] uppercase">Queue</div> <div class="text-[15px] text-[var(--sig-text-bright)] font-[family-name:var(--font-mono)]"> </div></div> <div class="p-2 rounded bg-[var(--sig-surface)] border border-[var(--sig-border)]"><div class="text-[9px] text-[var(--sig-text-muted)] uppercase">Errors</div> <div> </div></div></div></section> <!> <!> <section><h4 class="text-[10px] uppercase tracking-[0.1em] text-[var(--sig-text-muted)] mb-2 font-[family-name:var(--font-display)]"> </h4> <div class="space-y-px max-h-[300px] overflow-y-auto"><!> <!></div></section></div>',1);function la(g,o){tt(o,!0);let i=E(()=>S.selectedNodeId),d=E(()=>e(i)?qt.get(e(i))??null:null),c=E(()=>e(i)?S.nodes[e(i)]??null:null),N=E(()=>e(i)!==null);function M($){$||Jt(null)}function A($){try{return new Date($).toLocaleTimeString(void 0,{hour:"2-digit",minute:"2-digit",second:"2-digit"})}catch{return $}}function y($){switch($){case"error":return"text-[#e06c75]";case"warn":return"text-[#e5c07b]";case"debug":return"text-[#6b6b76]";default:return"text-[var(--sig-text)]"}}let C=E(()=>{if(!e(c)?.metrics)return null;const $=e(c).metrics;return $.memory||$.summary||typeof $.depth=="number"?$:null});var ee=Ve(),P=Z(ee);ke(P,()=>fr,($,L)=>{L($,{get open(){return e(N)},onOpenChange:M,children:(H,B)=>{var Q=Ve(),b=Z(Q);ke(b,()=>cr,(w,T)=>{T(w,{side:"right",class:"w-[380px] bg-[var(--sig-bg)] border-l border-[var(--sig-border)]",children:(O,J)=>{var F=Ve(),R=Z(F);{var u=k=>{var q=ia(),j=Z(q);ke(j,()=>vr,(G,X)=>{X(G,{children:(re,ge)=>{var me=Kr(),ce=Z(me);ke(ce,()=>ur,(se,be)=>{be(se,{class:"flex items-center gap-2 font-[family-name:var(--font-display)] text-[var(--sig-text-bright)]",children:(Me,Be)=>{he();var ae=Jr(),ve=Z(ae),ne=s(ve);{let _e=E(()=>e(c).health==="healthy"?"border-[#4a7a5e] text-[#4a7a5e]":e(c).health==="degraded"?"border-[#b8860b] text-[#b8860b]":e(c).health==="unhealthy"?"border-[#8a4a48] text-[#8a4a48]":"border-[var(--sig-border)] text-[var(--sig-text-muted)]");Tt(ne,{variant:"outline",get class(){return`text-[9px] px-1.5 py-0 font-[family-name:var(--font-mono)]
|
|
1
|
+
import{e as Rt,p as tt,Q as Ft,i as e,v as x,j as r,k as I,t as s,l as t,y as _,B as Fe,D as v,z as f,O as mt,b as l,d as rt,u as E,o as V,aj as de,P as Ut,f as Z,A as Oe,G as pt,N as $t,ai as jt,c as Ve,h as ke,w as he,x as Ee,m as D,q as nr,s as ir,ad as Bt,F as lr}from"./Bh3nIh1p.js";import{B as Tt}from"./3zVBfrdZ.js";import{aP as dr,S as cr,J as vr,K as ur,N as fr,L as gr,aQ as mr,t as zt,aR as pr,f as hr,n as xr,E as br,B as gt}from"./Cn9W5J_c.js";import{S as Wt}from"./DxXJeUTe.js";import{P as _r,a as yr,b as wr}from"./CkKq6V9e.js";import{w as Pt,s as Yt}from"./pP_VsnEc.js";import{P as kr}from"./Bfse3fCo.js";import{T as Sr}from"./CjrslgAi.js";const Te={harness:"#4dabf7",daemon:"#ff922b",pipeline:"#da77f2",db:"#ffd43b",search:"#da77f2",files:"#20c997",configs:"#4dabf7",llm:"#fcc419"},Ge={harness:"AI Harness",daemon:"Signet Daemon",pipeline:"Pipeline Workers",db:"memories.db",search:"Hybrid Recall",files:"~/.agents/",configs:"Harness Configs",llm:"LLM Provider"},Cr={harness:{x:20,y:20,w:240,h:120,label:Ge.harness,color:Te.harness},daemon:{x:300,y:20,w:340,h:280,label:Ge.daemon,color:Te.daemon},pipeline:{x:20,y:360,w:620,h:140,label:Ge.pipeline,color:Te.pipeline},db:{x:680,y:160,w:200,h:200,label:Ge.db,color:Te.db},search:{x:920,y:160,w:200,h:140,label:Ge.search,color:Te.search},files:{x:680,y:400,w:200,h:100,label:Ge.files,color:Te.files},configs:{x:920,y:400,w:200,h:100,label:Ge.configs,color:Te.configs},llm:{x:680,y:540,w:200,h:80,label:Ge.llm,color:Te.llm}},at=[{id:"harness",label:"AI Client",group:"harness",x:40,y:55,w:200,h:50,logCategories:["hooks","session-tracker"],icon:"terminal",description:"Claude Code / OpenCode / OpenClaw — sends session hooks"},{id:"hooks",label:"Hook Handlers",group:"daemon",x:320,y:50,w:140,h:40,logCategories:["hooks"],icon:"webhook",description:"Session lifecycle hooks (start, submit, remember, recall, end)"},{id:"mutex",label:"Session Mutex",group:"daemon",x:320,y:110,w:140,h:40,logCategories:["session-tracker"],icon:"lock",description:"Plugin vs legacy runtime path enforcement"},{id:"queue",label:"Job Queues",group:"daemon",x:320,y:170,w:140,h:40,logCategories:["pipeline"],diagnosticDomain:"queue",icon:"layers",description:"memory_jobs + summary_jobs durable queues"},{id:"watcher",label:"File Watcher",group:"daemon",x:490,y:110,w:130,h:40,logCategories:["watcher"],icon:"eye",description:"Chokidar file change detection on ~/.agents/"},{id:"sync",label:"Harness Sync",group:"daemon",x:490,y:170,w:130,h:40,logCategories:["sync"],diagnosticDomain:"connector",icon:"refresh-cw",description:"Generate CLAUDE.md, AGENTS.md from identity files"},{id:"extraction",label:"Extraction",group:"pipeline",x:40,y:395,w:110,h:40,logCategories:["pipeline"],diagnosticDomain:"queue",icon:"cpu",description:"LLM extracts facts + entities (2s poll)"},{id:"summary",label:"Summary",group:"pipeline",x:165,y:395,w:100,h:40,logCategories:["summary-worker"],icon:"file-text",description:"Session-end transcript summarizer (5s poll)"},{id:"document",label:"Document",group:"pipeline",x:280,y:395,w:100,h:40,logCategories:["document-worker"],icon:"file-plus",description:"Chunk + embed documents (10s poll)"},{id:"retention",label:"Retention",group:"pipeline",x:395,y:395,w:100,h:40,logCategories:["retention"],diagnosticDomain:"mutation",icon:"trash-2",description:"Purge expired data (6h interval)"},{id:"maintenance",label:"Maintenance",group:"pipeline",x:510,y:395,w:110,h:40,logCategories:["maintenance"],icon:"wrench",description:"Self-repair + diagnostics (30min interval)"},{id:"database",label:"SQLite",group:"db",x:710,y:220,w:140,h:80,logCategories:["memory","embedding"],diagnosticDomain:"storage",icon:"database",description:"memories, embeddings, entities, relations, history"},{id:"search",label:"Hybrid Recall",group:"search",x:940,y:200,w:160,h:60,logCategories:["memory"],diagnosticDomain:"index",icon:"search",description:"BM25 + vector similarity + graph boost"},{id:"files",label:"Identity Files",group:"files",x:710,y:430,w:140,h:40,logCategories:["sync"],icon:"folder",description:"AGENTS.md, SOUL.md, IDENTITY.md, USER.md, MEMORY.md"},{id:"configs",label:"CLAUDE.md",group:"configs",x:950,y:430,w:140,h:40,logCategories:["harness"],icon:"file-code",description:"Generated harness config files"},{id:"llm",label:"LLM Provider",group:"llm",x:710,y:560,w:140,h:40,logCategories:["llm"],diagnosticDomain:"provider",icon:"brain",description:"Ollama qwen3:4b (or configured provider)"}],qt=new Map(at.map(g=>[g.id,g])),Pr=[{from:"harness",to:"hooks",label:"POST"},{from:"hooks",to:"mutex"},{from:"hooks",to:"queue",label:"enqueue"},{from:"queue",to:"extraction"},{from:"queue",to:"summary"},{from:"queue",to:"document"},{from:"extraction",to:"database",label:"write"},{from:"summary",to:"database"},{from:"document",to:"database"},{from:"retention",to:"database"},{from:"maintenance",to:"database"},{from:"extraction",to:"llm"},{from:"summary",to:"llm"},{from:"database",to:"search"},{from:"search",to:"harness",dashed:!0,label:"recall"},{from:"watcher",to:"sync"},{from:"files",to:"watcher"},{from:"sync",to:"configs"},{from:"files",to:"sync"},{from:"summary",to:"files",label:".md"},{from:"configs",to:"harness",dashed:!0,label:"next session"}];function $r(){return{health:"unknown",score:0,lastActivity:null,pulseCount:0,queueDepth:0,processingRate:0,errorCount:0,recentLogs:[],metrics:{}}}const Gt=new Map;for(const g of at)for(const o of g.logCategories){const i=Gt.get(o);i?i.push(g.id):Gt.set(o,[g.id])}const Xt=20;function Tr(){const g={};for(const o of at)g[o.id]=$r();return g}const Vt=50,S=Rt({nodes:Tr(),mode:"unknown",connected:!1,lastPoll:null,selectedNodeId:null,feed:[]});let pe=null;function Zt(){pe&&(pe.close(),pe=null);const g="";pe=new EventSource(`${g}/api/logs/stream`),pe.onopen=()=>{S.connected=!0},pe.onmessage=o=>{try{const i=JSON.parse(o.data);if(i.type==="connected"){S.connected=!0;return}const d=[...S.feed,i];S.feed=d.length>Vt?d.slice(-Vt):d;const c=Gt.get(i.category);if(!c)return;for(const N of c){const M=S.nodes[N];if(!M)continue;M.pulseCount+=1,M.lastActivity=i.timestamp;const A=[...M.recentLogs,i];M.recentLogs=A.length>Xt?A.slice(-Xt):A,i.level==="error"&&(M.errorCount+=1)}}catch{}},pe.onerror=()=>{S.connected=!1,pe?.close(),pe=null,setTimeout(()=>{pe||Zt()},3e3)}}function Er(){S.connected=!1,pe?.close(),pe=null}let ht=null;function Mr(g){return g>=.8?"healthy":g>=.5?"degraded":g>0?"unhealthy":"unknown"}function Dr(g){for(const o of at){if(!o.diagnosticDomain)continue;const i=g[o.diagnosticDomain];if(!i)continue;const d=S.nodes[o.id];if(!d)continue;const c=typeof i.score=="number"?i.score:0;d.score=c,d.health=Mr(c),d.metrics=i}}function Lr(g){const o=S.nodes.queue;if(o){const c=g.memory,N=g.summary;o.queueDepth=c.pending+c.leased+N.pending+N.leased,o.metrics={memory:c,summary:N}}const i=S.nodes.extraction;i&&(i.queueDepth=g.memory.pending);const d=S.nodes.summary;d&&(d.queueDepth=g.summary.pending)}async function Qt(){try{const g=await dr();if(!g)return;if(S.mode=g.mode,S.lastPoll=new Date().toISOString(),g.diagnostics&&Dr(g.diagnostics),g.queues&&Lr(g.queues),g.workers)for(const[o,i]of Object.entries(g.workers)){const d=S.nodes[o];d&&i.running&&d.health==="unknown"&&(d.health="healthy",d.score=1)}if(g.errorSummary)for(const[o,i]of Object.entries(g.errorSummary)){const d=o==="extraction"||o==="decision"?"extraction":o==="embedding"||o==="mutation"?"database":o==="connector"?"sync":null;if(d){const c=S.nodes[d];c&&(c.errorCount=i)}}}catch{}}function Or(g=5e3){ht||(Qt(),ht=setInterval(Qt,g))}function Nr(){ht&&(clearInterval(ht),ht=null)}function Jt(g){S.selectedNodeId=g}var Ar=de('<rect class="glow-bg svelte-1tib701" x="-6" y="-6" rx="10" ry="10" opacity="0.12"></rect>'),Ir=de('<rect class="pulse-ring svelte-1tib701" x="-4" y="-4" rx="10" ry="10" fill="none"></rect>'),Rr=de('<rect class="flash-overlay svelte-1tib701" rx="6" ry="6"></rect>'),jr=de('<animate attributeName="opacity" values="1;0.4;1" dur="1.5s" repeatCount="indefinite" class="svelte-1tib701"></animate>'),qr=de('<g class="svelte-1tib701"><rect x="-12" y="-7" width="24" height="14" rx="7" opacity="0.95" class="svelte-1tib701"></rect><text x="0" y="1" text-anchor="middle" dominant-baseline="middle" fill="#fff" font-size="9" font-weight="600" font-family="var(--font-mono)" class="svelte-1tib701"> </text></g>'),Gr=de('<g transform="translate(8, -6)" class="svelte-1tib701"><rect x="-12" y="-7" width="24" height="14" rx="7" fill="#ef4444" opacity="0.95" class="svelte-1tib701"></rect><text x="0" y="1" text-anchor="middle" dominant-baseline="middle" fill="#fff" font-size="9" font-weight="600" font-family="var(--font-mono)" class="svelte-1tib701"> </text></g>'),Fr=de('<g style="cursor: pointer"><!><!><rect class="node-rect svelte-1tib701" rx="6" ry="6"></rect><!><circle cx="10" class="svelte-1tib701"><!></circle><text text-anchor="middle" dominant-baseline="middle" font-size="11" font-family="var(--font-mono)" class="svelte-1tib701"> </text><!><!></g>');function Hr(g,o){tt(o,!0);let i=E(()=>Te[o.def.group]);const d={healthy:"#4ade80",degraded:"#fbbf24",unhealthy:"#f87171",unknown:"#6b6b76"};let c=E(()=>d[o.nodeState.health]),N=E(()=>o.nodeState.health==="unknown"?e(i)+"88":e(c)),M=V(0),A=V(!1),y=V(!1),C=null;Ft(()=>{if(o.nodeState.pulseCount>e(M)){x(M,o.nodeState.pulseCount,!0),x(A,!0);const h=setTimeout(()=>{x(A,!1)},1200);return x(y,!0),C&&clearTimeout(C),C=setTimeout(()=>{x(y,!1)},3e3),()=>{clearTimeout(h),C&&clearTimeout(C)}}});function ee(){o.onselectnode(o.def.id)}var P=Fr();let $;var L=r(P);{var H=h=>{var p=Ar();_(()=>{v(p,"width",o.def.w+12),v(p,"height",o.def.h+12),v(p,"fill",e(i))}),l(h,p)};I(L,h=>{e(y)&&h(H)})}var B=s(L);{var Q=h=>{var p=Ir();_(()=>{v(p,"width",o.def.w+8),v(p,"height",o.def.h+8),v(p,"stroke",e(i))}),l(h,p)};I(B,h=>{e(A)&&h(Q)})}var b=s(B),w=s(b);{var T=h=>{var p=Rr();_(()=>{v(p,"width",o.def.w),v(p,"height",o.def.h),v(p,"fill",e(i))}),l(h,p)};I(w,h=>{e(A)&&h(T)})}var O=s(w),J=r(O);{var F=h=>{var p=jr();l(h,p)};I(J,h=>{e(y)&&h(F)})}t(O);var R=s(O),u=r(R,!0);t(R);var k=s(R);{var q=h=>{var p=qr(),Y=r(p),te=s(Y),Ne=r(te,!0);t(te),t(p),_(()=>{v(p,"transform",`translate(${o.def.w-8}, -6)`),v(Y,"fill",e(i)),f(Ne,o.nodeState.queueDepth)}),l(h,p)};I(k,h=>{o.nodeState.queueDepth>0&&h(q)})}var j=s(k);{var K=h=>{var p=Gr(),Y=s(r(p)),te=r(Y,!0);t(Y),t(p),_(()=>f(te,o.nodeState.errorCount)),l(h,p)};I(j,h=>{o.nodeState.errorCount>0&&h(K)})}t(P),_(()=>{$=Fe(P,0,"pipeline-node svelte-1tib701",null,$,{"pipeline-node--selected":o.selected,"pipeline-node--active":e(y)}),v(P,"transform",`translate(${o.def.x??""}, ${o.def.y??""})`),v(b,"width",o.def.w),v(b,"height",o.def.h),v(b,"fill",e(y)?e(i)+"18":"var(--sig-surface-raised)"),v(b,"stroke",e(y)?e(i):e(N)),v(b,"stroke-width",o.selected?2.5:e(y)?1.5:1),v(O,"cy",o.def.h/2),v(O,"r",e(y)?4:3),v(O,"fill",e(y)?e(i):e(c)),v(O,"opacity",e(y)?1:.7),v(R,"x",o.def.w/2),v(R,"y",o.def.h/2+1),v(R,"fill",e(y)?e(i):"var(--sig-text-bright)"),v(R,"font-weight",e(y)?"600":"400"),f(u,o.def.label)}),mt("click",P,ee),l(g,P),rt()}Ut(["click"]);var Br=de('<path fill="none" stroke-width="4" opacity="0.15" class="edge-glow svelte-kl8ook"></path>'),zr=de('<circle r="2" opacity="0.6" class="svelte-kl8ook"><animateMotion repeatCount="indefinite" begin="0.5s" class="svelte-kl8ook"></animateMotion></circle>'),Yr=de('<circle class="svelte-kl8ook"><animateMotion repeatCount="indefinite" class="svelte-kl8ook"></animateMotion></circle><!>',1),Xr=de('<text text-anchor="middle" font-size="9" font-family="var(--font-mono)" class="svelte-kl8ook"> </text>'),Vr=de('<g class="pipeline-edge svelte-kl8ook"><path fill="none"></path><!><!><!></g>');function Qr(g,o){tt(o,!0);let i=E(()=>qt.get(o.edge.from)),d=E(()=>qt.get(o.edge.to)),c=E(()=>e(i)?Te[e(i).group]:"#6b6b76"),N=E(()=>{if(!e(i)||!e(d))return"";const b=e(i).x+e(i).w/2,w=e(i).y+e(i).h/2,T=e(d).x+e(d).w/2,O=e(d).y+e(d).h/2,J=(b+T)/2,F=(w+O)/2,R=Math.abs(T-b),u=Math.abs(O-w);return R>u?`M ${b} ${w} Q ${J} ${w}, ${J} ${F} Q ${J} ${O}, ${T} ${O}`:`M ${b} ${w} Q ${b} ${F}, ${J} ${F} Q ${T} ${F}, ${T} ${O}`}),M=E(()=>!e(i)||!e(d)?{x:0,y:0}:{x:(e(i).x+e(i).w/2+e(d).x+e(d).w/2)/2,y:(e(i).y+e(i).h/2+e(d).y+e(d).h/2)/2-8}),A=E(()=>o.active?"1s":"3s");var y=Vr(),C=r(y);let ee;var P=s(C);{var $=b=>{var w=Br();_(()=>{v(w,"d",e(N)),v(w,"stroke",e(c))}),l(b,w)};I(P,b=>{o.active&&!o.edge.dashed&&b($)})}var L=s(P);{var H=b=>{var w=Yr(),T=Z(w),O=r(T);t(T);var J=s(T);{var F=R=>{var u=zr(),k=r(u);t(u),_(()=>{v(u,"fill",e(c)),v(k,"dur",e(A)),v(k,"path",e(N))}),l(R,u)};I(J,R=>{o.active&&R(F)})}_(()=>{v(T,"r",o.active?3.5:2),v(T,"fill",o.active?e(c):"var(--sig-border)"),v(T,"opacity",o.active?1:.3),v(O,"dur",e(A)),v(O,"path",e(N))}),l(b,w)};I(L,b=>{o.edge.dashed||b(H)})}var B=s(L);{var Q=b=>{var w=Xr(),T=r(w,!0);t(w),_(()=>{v(w,"x",e(M).x),v(w,"y",e(M).y),v(w,"fill",o.active?e(c):"var(--sig-text-muted)"),v(w,"opacity",o.active?.9:.45),f(T,o.edge.label)}),l(b,w)};I(B,b=>{o.edge.label&&b(Q)})}t(y),_(()=>{v(C,"d",e(N)),v(C,"stroke",o.active?e(c):"var(--sig-border)"),v(C,"stroke-width",o.active?1.5:.8),v(C,"stroke-dasharray",o.edge.dashed?"6 4":"none"),v(C,"opacity",o.active?.8:.25),ee=Fe(C,0,"svelte-kl8ook",null,ee,{"edge-active":o.active})}),l(g,y),rt()}var Ur=de('<g><rect rx="8" ry="8" fill-opacity="0.06" stroke-opacity="0.25" stroke-width="1" stroke-dasharray="4 3"></rect><text font-size="9" font-family="var(--font-mono)" opacity="0.6" letter-spacing="0.08em"> </text></g>'),Wr=de('<svg viewBox="0 0 1160 650" preserveAspectRatio="xMidYMid meet" class="w-full h-full select-none" xmlns="http://www.w3.org/2000/svg" role="application" aria-label="Pipeline graph. Use mouse wheel to zoom, drag background to pan, double-click to reset."><defs><filter id="glow" x="-50%" y="-50%" width="200%" height="200%"><feGaussianBlur stdDeviation="3" result="blur"></feGaussianBlur><feMerge><feMergeNode in="blur"></feMergeNode><feMergeNode in="SourceGraphic"></feMergeNode></feMerge></filter><marker id="arrow" viewBox="0 0 10 10" refX="10" refY="5" markerWidth="6" markerHeight="6" orient="auto-start-reverse"><path d="M 0 0 L 10 5 L 0 10 z" fill="var(--sig-border-strong)"></path></marker></defs><g><!><!><!></g></svg>');function Zr(g,o){tt(o,!0);const i=Object.entries(Cr),d=.7,c=2.4,N=.12;let M=V(1),A=V(0),y=V(0),C=V(!1),ee=V(0),P=V(0);function $(u){const k=S.nodes[u];return k?.lastActivity?Date.now()-new Date(k.lastActivity).getTime()<5e3:!1}function L(u){return Math.min(c,Math.max(d,u))}function H(){x(M,1),x(A,0),x(y,0)}function B(u){u.preventDefault();const k=u.currentTarget;if(!(k instanceof SVGSVGElement))return;const q=k.getBoundingClientRect(),j=u.clientX-q.left,K=u.clientY-q.top,h=u.deltaY<0?1:-1,p=L(e(M)+h*N);if(p===e(M))return;const Y=(j-e(A))/e(M),te=(K-e(y))/e(M);x(M,p,!0),x(A,j-Y*p),x(y,K-te*p)}function Q(u){if(u.button!==0||u.target!==u.currentTarget)return;const k=u.currentTarget;k instanceof SVGSVGElement&&k.setPointerCapture(u.pointerId),x(C,!0),x(ee,u.clientX,!0),x(P,u.clientY,!0)}function b(u){if(!e(C))return;const k=u.clientX-e(ee),q=u.clientY-e(P);x(ee,u.clientX,!0),x(P,u.clientY,!0),x(A,e(A)+k),x(y,e(y)+q)}function w(u){if(!e(C))return;const k=u.currentTarget;k instanceof SVGSVGElement&&k.releasePointerCapture(u.pointerId),x(C,!1)}var T=Wr(),O=s(r(T)),J=r(O);Oe(J,17,()=>i,pt,(u,k)=>{var q=E(()=>jt(e(k),2));let j=()=>e(q)[1];var K=Ur(),h=r(K),p=s(h),Y=r(p,!0);t(p),t(K),_(te=>{v(h,"x",j().x),v(h,"y",j().y),v(h,"width",j().w),v(h,"height",j().h),v(h,"fill",j().color),v(h,"stroke",j().color),v(p,"x",j().x+8),v(p,"y",j().y+14),v(p,"fill",j().color),f(Y,te)},[()=>j().label.toUpperCase()]),l(u,K)});var F=s(J);Oe(F,17,()=>Pr,u=>u.from+"-"+u.to,(u,k)=>{{let q=E(()=>$(e(k).from));Qr(u,{get edge(){return e(k)},get active(){return e(q)}})}});var R=s(F);Oe(R,17,()=>at,u=>u.id,(u,k)=>{{let q=E(()=>S.selectedNodeId===e(k).id);Hr(u,{get def(){return e(k)},get nodeState(){return S.nodes[e(k).id]},get selected(){return e(q)},get onselectnode(){return o.onselectnode}})}}),t(O),t(T),_(()=>v(O,"transform",`translate(${e(A)} ${e(y)}) scale(${e(M)})`)),$t("wheel",T,B),mt("pointerdown",T,Q),mt("pointermove",T,b),mt("pointerup",T,w),$t("pointercancel",T,w),$t("pointerleave",T,w),mt("dblclick",T,H),l(g,T),rt()}Ut(["pointerdown","pointermove","pointerup","dblclick"]);var Jr=D(" <!>",1),Kr=D("<!> <!>",1),ea=D('<div class="flex justify-between px-2"><span class="text-[var(--sig-text-muted)]"> </span> <span class="text-[var(--sig-text-bright)]"> </span></div>'),ta=D('<div class="text-[var(--sig-text-muted)] mt-1"> </div> <!>',1),ra=D('<div class="flex justify-between"><span class="text-[var(--sig-text-muted)]"> </span> <span class="text-[var(--sig-text-bright)]"> </span></div>'),aa=D('<section><h4 class="text-[10px] uppercase tracking-[0.1em] text-[var(--sig-text-muted)] mb-2 font-[family-name:var(--font-display)]">Queue Details</h4> <div class="space-y-1 text-[11px] font-[family-name:var(--font-mono)]"></div></section>'),oa=D('<section><h4 class="text-[10px] uppercase tracking-[0.1em] text-[var(--sig-text-muted)] mb-1 font-[family-name:var(--font-display)]">Last Activity</h4> <span class="text-[11px] text-[var(--sig-text)] font-[family-name:var(--font-mono)]"> </span></section>'),sa=D('<div class="flex gap-2 py-1 px-1 text-[10px] font-[family-name:var(--font-mono)] hover:bg-[var(--sig-surface-raised)] rounded"><span class="text-[var(--sig-text-muted)] shrink-0 w-[52px]"> </span> <span> </span> <span class="text-[var(--sig-text)] truncate"> </span></div>'),na=D('<div class="text-[10px] text-[var(--sig-text-muted)] italic py-2">No recent activity</div>'),ia=D('<!> <div class="mt-4 space-y-4 overflow-y-auto pr-2" style="max-height: calc(100vh - 140px);"><section><h4 class="text-[10px] uppercase tracking-[0.1em] text-[var(--sig-text-muted)] mb-2 font-[family-name:var(--font-display)]">Metrics</h4> <div class="grid grid-cols-3 gap-2"><div class="p-2 rounded bg-[var(--sig-surface)] border border-[var(--sig-border)]"><div class="text-[9px] text-[var(--sig-text-muted)] uppercase">Score</div> <div class="text-[15px] text-[var(--sig-text-bright)] font-[family-name:var(--font-mono)]"> </div></div> <div class="p-2 rounded bg-[var(--sig-surface)] border border-[var(--sig-border)]"><div class="text-[9px] text-[var(--sig-text-muted)] uppercase">Queue</div> <div class="text-[15px] text-[var(--sig-text-bright)] font-[family-name:var(--font-mono)]"> </div></div> <div class="p-2 rounded bg-[var(--sig-surface)] border border-[var(--sig-border)]"><div class="text-[9px] text-[var(--sig-text-muted)] uppercase">Errors</div> <div> </div></div></div></section> <!> <!> <section><h4 class="text-[10px] uppercase tracking-[0.1em] text-[var(--sig-text-muted)] mb-2 font-[family-name:var(--font-display)]"> </h4> <div class="space-y-px max-h-[300px] overflow-y-auto"><!> <!></div></section></div>',1);function la(g,o){tt(o,!0);let i=E(()=>S.selectedNodeId),d=E(()=>e(i)?qt.get(e(i))??null:null),c=E(()=>e(i)?S.nodes[e(i)]??null:null),N=E(()=>e(i)!==null);function M($){$||Jt(null)}function A($){try{return new Date($).toLocaleTimeString(void 0,{hour:"2-digit",minute:"2-digit",second:"2-digit"})}catch{return $}}function y($){switch($){case"error":return"text-[#e06c75]";case"warn":return"text-[#e5c07b]";case"debug":return"text-[#6b6b76]";default:return"text-[var(--sig-text)]"}}let C=E(()=>{if(!e(c)?.metrics)return null;const $=e(c).metrics;return $.memory||$.summary||typeof $.depth=="number"?$:null});var ee=Ve(),P=Z(ee);ke(P,()=>fr,($,L)=>{L($,{get open(){return e(N)},onOpenChange:M,children:(H,B)=>{var Q=Ve(),b=Z(Q);ke(b,()=>cr,(w,T)=>{T(w,{side:"right",class:"w-[380px] bg-[var(--sig-bg)] border-l border-[var(--sig-border)]",children:(O,J)=>{var F=Ve(),R=Z(F);{var u=k=>{var q=ia(),j=Z(q);ke(j,()=>vr,(G,X)=>{X(G,{children:(re,ge)=>{var me=Kr(),ce=Z(me);ke(ce,()=>ur,(se,be)=>{be(se,{class:"flex items-center gap-2 font-[family-name:var(--font-display)] text-[var(--sig-text-bright)]",children:(Me,Be)=>{he();var ae=Jr(),ve=Z(ae),ne=s(ve);{let _e=E(()=>e(c).health==="healthy"?"border-[#4a7a5e] text-[#4a7a5e]":e(c).health==="degraded"?"border-[#b8860b] text-[#b8860b]":e(c).health==="unhealthy"?"border-[#8a4a48] text-[#8a4a48]":"border-[var(--sig-border)] text-[var(--sig-text-muted)]");Tt(ne,{variant:"outline",get class(){return`text-[9px] px-1.5 py-0 font-[family-name:var(--font-mono)]
|
|
2
2
|
${e(_e)??""}`},children:(Re,ze)=>{he();var Ze=Ee();_(()=>f(Ze,e(c).health)),l(Re,Ze)},$$slots:{default:!0}})}_(()=>f(ve,`${e(d).label??""} `)),l(Me,ae)},$$slots:{default:!0}})});var Pe=s(ce,2);{var xe=se=>{var be=Ve(),Me=Z(be);ke(Me,()=>gr,(Be,ae)=>{ae(Be,{class:"text-[11px] text-[var(--sig-text-muted)] font-[family-name:var(--font-mono)]",children:(ve,ne)=>{he();var _e=Ee();_(()=>f(_e,e(d).description)),l(ve,_e)},$$slots:{default:!0}})}),l(se,be)};I(Pe,se=>{e(d).description&&se(xe)})}l(re,me)},$$slots:{default:!0}})});var K=s(j,2),h=r(K),p=s(r(h),2),Y=r(p),te=s(r(Y),2),Ne=r(te,!0);t(te),t(Y);var U=s(Y,2),fe=s(r(U),2),Se=r(fe,!0);t(fe),t(U);var Ce=s(U,2),Ae=s(r(Ce),2);let Ie;var Qe=r(Ae,!0);t(Ae),t(Ce),t(p),t(h);var He=s(h,2);{var ot=G=>{var X=aa(),re=s(r(X),2);Oe(re,21,()=>Object.entries(e(C)),pt,(ge,me)=>{var ce=E(()=>jt(e(me),2));let Pe=()=>e(ce)[0],xe=()=>e(ce)[1];var se=Ve(),be=Z(se);{var Me=ae=>{var ve=ta(),ne=Z(ve),_e=r(ne,!0);t(ne);var Re=s(ne,2);Oe(Re,17,()=>Object.entries(xe()),pt,(ze,Ze)=>{var Ye=E(()=>jt(e(Ze),2));let yt=()=>e(Ye)[0],Lt=()=>e(Ye)[1];var nt=ea(),it=r(nt),a=r(it,!0);t(it);var n=s(it,2),m=r(n,!0);t(n),t(nt),_(()=>{f(a,yt()),f(m,Lt())}),l(ze,nt)}),_(()=>f(_e,Pe())),l(ae,ve)},Be=ae=>{var ve=ra(),ne=r(ve),_e=r(ne,!0);t(ne);var Re=s(ne,2),ze=r(Re,!0);t(Re),t(ve),_(()=>{f(_e,Pe()),f(ze,xe())}),l(ae,ve)};I(be,ae=>{typeof xe()=="object"&&xe()!==null?ae(Me):ae(Be,-1)})}l(ge,se)}),t(re),t(X),l(G,X)};I(He,G=>{e(C)&&G(ot)})}var st=s(He,2);{var Et=G=>{var X=oa(),re=s(r(X),2),ge=r(re,!0);t(re),t(X),_(me=>f(ge,me),[()=>A(e(c).lastActivity)]),l(G,X)};I(st,G=>{e(c).lastActivity&&G(Et)})}var xt=s(st,2),Ue=r(xt),Mt=r(Ue);t(Ue);var bt=s(Ue,2),We=r(bt);Oe(We,17,()=>e(c).recentLogs,pt,(G,X)=>{var re=sa(),ge=r(re),me=r(ge,!0);t(ge);var ce=s(ge,2),Pe=r(ce,!0);t(ce);var xe=s(ce,2),se=r(xe,!0);t(xe),t(re),_((be,Me)=>{f(me,be),Fe(ce,1,`${Me??""} shrink-0 w-[34px] uppercase`),f(Pe,e(X).level),f(se,e(X).message)},[()=>A(e(X).timestamp),()=>y(e(X).level)]),l(G,re)});var Dt=s(We,2);{var _t=G=>{var X=na();l(G,X)};I(Dt,G=>{e(c).recentLogs.length===0&&G(_t)})}t(bt),t(xt),t(K),_(G=>{f(Ne,G),f(Se,e(c).queueDepth),Ie=Fe(Ae,1,"text-[15px] font-[family-name:var(--font-mono)]",null,Ie,{"text-[#8a4a48]":e(c).errorCount>0,"text-[var(--sig-text-bright)]":e(c).errorCount===0}),f(Qe,e(c).errorCount),f(Mt,`Recent Logs (${e(c).recentLogs.length??""})`)},[()=>e(c).score>0?(e(c).score*100).toFixed(0)+"%":"--"]),l(k,q)};I(R,k=>{e(d)&&e(c)&&k(u)})}l(O,F)},$$slots:{default:!0}})}),l(H,Q)},$$slots:{default:!0}})}),l(g,ee),rt()}var da=D('<div class="border-t border-[var(--sig-border)]"></div>'),ca=D('<!> <div class="flex items-center justify-between px-3 py-2 gap-3"><div class="flex items-center gap-3 min-w-0"><span class="font-mono text-[var(--font-size-sm)] text-[var(--sig-text)] truncate"> </span> <!> <span class="sig-meta text-[var(--sig-text-muted)] shrink-0"> </span></div> <div class="flex items-center gap-2 shrink-0"><span> </span> <!></div></div>',1),va=D('<div class="mb-4"><div class="flex items-center gap-2 mb-2"><span class="sig-heading">ACTIVE SESSIONS</span> <!></div> <div class="rounded-md border border-[var(--sig-border)]" style="background: var(--sig-surface)"></div></div>');function ua(g,o){tt(o,!0);let i=V(Rt([])),d=V(!0),c=V(Rt(new Set));async function N(){try{const P=await mr();x(i,[...P.sessions],!0)}catch{zt("Failed to load sessions","error")}finally{x(d,!1)}}async function M(P,$){if(!e(c).has(P.key)){x(c,new Set([...e(c),P.key]),!0);try{const L=await pr(P.key,$);L?x(i,e(i).map(H=>H.key===P.key?{...H,bypassed:L.bypassed}:H),!0):zt("Failed to toggle bypass","error")}finally{const L=new Set(e(c));L.delete(P.key),x(c,L,!0)}}}function A(P){const $=Date.now()-new Date(P).getTime();if(!Number.isFinite($)||$<0)return"just now";const L=Math.floor($/1e3);if(L<60)return`${L}s ago`;const H=Math.floor(L/60);if(H<60)return`${H}m ago`;const B=Math.floor(H/60);return B<24?`${B}h ago`:`${Math.floor(B/24)}d ago`}Ft(()=>{N();const P=setInterval(N,3e4);return()=>clearInterval(P)});var y=Ve(),C=Z(y);{var ee=P=>{var $=va(),L=r($),H=s(r(L),2);Tt(H,{variant:"outline",class:"sig-badge px-1.5 py-0",children:(Q,b)=>{he();var w=Ee();_(()=>f(w,e(i).length)),l(Q,w)},$$slots:{default:!0}}),t(L);var B=s(L,2);Oe(B,23,()=>e(i),Q=>Q.key,(Q,b,w)=>{var T=ca(),O=Z(T);{var J=U=>{var fe=da();l(U,fe)};I(O,U=>{e(w)>0&&U(J)})}var F=s(O,2),R=r(F),u=r(R),k=r(u,!0);t(u);var q=s(u,2);Tt(q,{variant:"outline",class:"sig-badge px-1.5 py-0 shrink-0",children:(U,fe)=>{he();var Se=Ee();_(()=>f(Se,e(b).runtimePath)),l(U,Se)},$$slots:{default:!0}});var j=s(q,2),K=r(j,!0);t(j),t(R);var h=s(R,2),p=r(h);let Y;var te=r(p,!0);t(p);var Ne=s(p,2);{let U=E(()=>e(c).has(e(b).key));ke(Ne,()=>Wt,(fe,Se)=>{Se(fe,{get checked(){return e(b).bypassed},get disabled(){return e(U)},onCheckedChange:Ce=>M(e(b),Ce),get"aria-label"(){return`Bypass session ${e(b).key??""}`},children:(Ce,Ae)=>{var Ie=Ve(),Qe=Z(Ie);ke(Qe,()=>{},(He,ot)=>{ot(He,{})}),l(Ce,Ie)},$$slots:{default:!0}})})}t(h),t(F),_((U,fe)=>{v(u,"title",e(b).key),f(k,U),f(K,fe),Y=Fe(p,1,"sig-meta",null,Y,{"text-[var(--sig-text-muted)]":!e(b).bypassed,"text-[var(--sig-accent)]":e(b).bypassed}),f(te,e(b).bypassed?"bypassed":"active")},[()=>e(b).key.slice(0,12),()=>A(e(b).claimedAt)]),l(Q,T)}),t(B),t($),l(P,$)};I(C,P=>{!e(d)&&e(i).length>0&&P(ee)})}l(g,y),rt()}var fa=D('<span class="sig-eyebrow text-[#4ade80]"> </span>'),ga=D('<span class="sig-meta"> </span>'),ma=D('<div class="flex flex-col gap-1"><!> <!></div>'),pa=D("<!> <!>",1),ha=D('<div class="flex items-start justify-between gap-2 border-b border-[var(--sig-border)]/30 pb-[1px]"><span class="text-[var(--sig-text-muted)]"> </span> <span class="text-[var(--sig-text)] break-all text-right normal-case"> </span></div>'),xa=D('<div class="mt-1 pl-[56px] sig-micro"> </div>'),ba=D('<div class="mt-1 pl-[56px] sig-meta text-[#f87171] whitespace-pre-wrap break-words"> </div>'),_a=D('<details class="mt-1 pl-[56px]"><summary class="cursor-pointer sig-micro">Raw payload</summary> <pre class="mt-1 p-2 border border-[var(--sig-border)] bg-[var(--sig-surface)] sig-micro text-[var(--sig-text)] whitespace-pre-wrap break-words normal-case"> </pre></details>'),ya=D('<div class="mt-1 pl-[56px] inline-flex items-center gap-2 sig-micro"><span class="px-1 py-[1px] border border-[var(--sig-border)]"> </span> <span> </span></div> <div class="sig-eyebrow text-[var(--sig-text)] mt-0.5 pl-[56px] whitespace-pre-wrap break-words normal-case tracking-normal"> </div> <div class="mt-1 pl-[56px] grid grid-cols-1 md:grid-cols-2 gap-x-3 gap-y-1 sig-micro"></div> <!> <!> <!>',1),wa=D('<details class="mt-0.5 pl-[56px] group"><summary class="list-none cursor-pointer sig-eyebrow text-[var(--sig-text)] normal-case tracking-normal line-clamp-2 break-words [&::-webkit-details-marker]:hidden"> </summary> <div class="mt-1 sig-eyebrow text-[var(--sig-text)] normal-case tracking-normal whitespace-pre-wrap break-words"> </div></details>'),ka=D('<div class="sig-eyebrow text-[var(--sig-text)] normal-case tracking-normal mt-0.5 pl-[56px] whitespace-pre-wrap break-words"> </div>'),Sa=D('<span class="sig-micro pl-[56px]"> </span>'),Ca=D("<!> <!>",1),Pa=D('<div class="feed-entry px-2 py-1.5 rounded hover:bg-[var(--sig-surface-raised)] transition-colors svelte-1kgvdra"><div class="flex items-center gap-1.5"><span class="sig-meta shrink-0 w-[48px]"> </span> <span class="inline-block w-1.5 h-1.5 rounded-full shrink-0"></span> <span class="sig-meta shrink-0"> </span></div> <!></div>'),$a=D('<div class="flex items-center justify-center h-full sig-label italic">Waiting for events...</div>'),Ta=D('<div class="flex flex-col flex-1 min-h-0 overflow-hidden"><!> <div class="flex items-center justify-between px-4 py-2 border-b border-[var(--sig-border)] shrink-0"><div class="flex items-center gap-3"><div class="flex items-center gap-1.5"><span></span> <span class="sig-eyebrow"> </span></div> <!> <!></div> <div class="flex items-center gap-3"><!></div></div> <div class="px-4 pt-2"><!></div> <div class="flex flex-1 min-h-0 flex-col lg:flex-row"><div class="flex-1 min-w-0 min-h-[46vh] lg:min-h-0 p-4 overflow-auto"><!></div> <div><div class="px-3 py-2 border-b border-[var(--sig-border)] space-y-2"><div class="flex items-center justify-between gap-2"><span class="sig-heading text-[10px]">Live Feed</span> <div class="flex items-center gap-2"><span class="sig-meta"> </span> <span> </span></div></div> <div class="flex items-center justify-between gap-2 min-w-0"><label class="inline-flex items-center gap-1.5 sig-eyebrow text-[var(--sig-text)] cursor-pointer min-w-0"><!> <span>Auto-scroll</span></label> <div class="hidden lg:flex items-center gap-1.5 shrink-0"><!> <!></div> <div class="lg:hidden shrink-0"><!></div></div></div> <div class="flex-1 overflow-y-auto px-1 py-1"><!> <!></div></div></div></div> <!>',1);function Ra(g,o){tt(o,!0);function i(a){Jt(S.selectedNodeId===a?null:a)}let d=V(null),c=V(!0),N=V(!1),M=V(!1);const A=24;let y=V(!0),C=V(!0),ee=E(()=>e(N)?"lg:w-[420px]":"lg:w-[320px]"),P=E(()=>e(y)?"Latest":"Oldest"),$=E(()=>e(N)?"Expanded":"Compact");function L(a="smooth"){e(d)&&e(d).scrollTo({top:e(d).scrollHeight,behavior:a})}function H(){return e(d)?e(d).scrollHeight-e(d).scrollTop-e(d).clientHeight<=A:!0}function B(){if(!(!e(d)||(x(C,H(),!0),!(e(d).scrollHeight-e(d).clientHeight>A)))){if(e(C)){x(y,!0);return}e(d).scrollTop<=A&&x(y,!1)}}function Q(a){e(d)&&(e(y)?(x(c,!1),x(C,!1),x(y,!1),e(d).scrollTo({top:0,behavior:"smooth"})):(x(c,!0),x(C,!0),x(y,!0),L("auto")),a?.currentTarget instanceof HTMLElement&&a.currentTarget.blur(),x(M,!1))}function b(a){x(c,a,!0),Pt.pipeline.autoScroll=a,Yt(),a&&(x(C,!0),x(y,!0),requestAnimationFrame(()=>{L("auto"),B()}))}function w(a){x(N,!e(N)),Pt.pipeline.feedExpanded=e(N),Yt(),a?.currentTarget instanceof HTMLElement&&a.currentTarget.blur(),x(M,!1)}function T(a){if(!a)return"";const n=Object.keys(a);if(n.length===0)return"";const m=n.slice(0,4).join(", ");return n.length>4?`${m} +${n.length-4}`:m}Ft(()=>{if(S.feed.length,B(),e(c)&&e(d)){if(!e(C))return;requestAnimationFrame(()=>{L("auto"),x(C,!0),x(y,!0),B()})}}),nr(()=>(Zt(),Or(),x(c,Pt.pipeline.autoScroll,!0),x(N,Pt.pipeline.feedExpanded,!0),()=>{Er(),Nr()}));const O={"controlled-write":"border-[#4ade80] text-[#4ade80]",shadow:"border-[#fbbf24] text-[#fbbf24]",frozen:"border-[#94a3b8] text-[#94a3b8]",disabled:"border-[#f87171] text-[#f87171]",unknown:"border-[var(--sig-border)] text-[var(--sig-text-muted)]"};let J=E(()=>O[S.mode]??O.unknown),F=E(()=>at.filter(a=>{const n=S.nodes[a.id];return n?.lastActivity?Date.now()-new Date(n.lastActivity).getTime()<5e3:!1}).length);function R(a){try{return new Date(a).toLocaleTimeString(void 0,{hour:"2-digit",minute:"2-digit",second:"2-digit"})}catch{return a}}const u={error:"#f87171",warn:"#fbbf24",info:"#4ade80",debug:"#6b6b76"},k={hooks:"#4dabf7","session-tracker":"#4dabf7",pipeline:"#da77f2","summary-worker":"#da77f2","document-worker":"#da77f2",retention:"#da77f2",maintenance:"#da77f2",memory:"#ffd43b",embedding:"#ffd43b",sync:"#ff922b",watcher:"#ff922b",harness:"#4dabf7",llm:"#fcc419"},q=["jobId","memoryId","sessionKey","project","attempt","maxRetries","mode","provider","model","facts","entities","proposals","added","updated","deleted","deduped","skippedLowConfidence","blockedDestructive","runId","taskId","path","port","pid","error"];function j(a){const n=Date.now()-new Date(a).getTime();if(!Number.isFinite(n)||n<0)return"just now";const m=Math.floor(n/1e3);if(m<60)return`${m}s ago`;const z=Math.floor(m/60);if(z<60)return`${z}m ago`;const W=Math.floor(z/60);return W<24?`${W}h ago`:`${Math.floor(W/24)}d ago`}function K(a){return a.replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/[_-]+/g," ").replace(/^./,n=>n.toUpperCase())}function h(a){return a===null?"null":a===void 0?"undefined":typeof a=="string"?a:typeof a=="number"||typeof a=="boolean"?String(a):Array.isArray(a)?`[${a.length} items]`:typeof a=="object"?"{object}":String(a)}function p(a){const n=a.message.toLowerCase(),m=a.category.replace(/-/g," ");if(n.includes("job failed")){const z=a.data?.attempt;return typeof z=="number"?`${m} failed (attempt ${z})`:`${m} failed`}return n.includes("completed")?`${m} completed`:n.includes("started")||n.includes("starting")?`${m} started`:n.includes("enqueued")?`${m} queued`:n.includes("failed")?`${m} warning`:n.includes("file changed")?"watcher detected file change":`${m} event`}function Y(a){const n=[{label:"Level",value:a.level},{label:"Category",value:a.category}];a.duration!==void 0&&n.push({label:"Duration",value:`${a.duration} ms`});const m=a.data;if(!m)return n;const z=new Set;for(const W of q)W in m&&(n.push({label:K(W),value:h(m[W])}),z.add(W));for(const W of Object.keys(m).sort())z.has(W)||n.push({label:K(W),value:h(m[W])});return n}function te(a){const n={};if(a.data&&(n.data=a.data),a.error&&(n.error=a.error),Object.keys(n).length===0)return"";const m=JSON.stringify(n,null,2);if(!m)return"";const z=3200;return m.length<=z?m:`${m.slice(0,z)}
|
|
3
3
|
...truncated`}var Ne=Ta(),U=Z(Ne),fe=r(U);kr(fe,{title:"Pipeline",children:(a,n)=>{Sr(a,{group:"engine",get tabs(){return br},get activeTab(){return xr.activeTab},onselect:(m,z)=>hr(z)})}});var Se=s(fe,2),Ce=r(Se),Ae=r(Ce),Ie=r(Ae);let Qe;var He=s(Ie,2),ot=r(He,!0);t(He),t(Ae);var st=s(Ae,2);Tt(st,{variant:"outline",get class(){return`sig-badge px-1.5 py-0 ${e(J)??""}`},children:(a,n)=>{he();var m=Ee();_(()=>f(m,S.mode)),l(a,m)},$$slots:{default:!0}});var Et=s(st,2);{var xt=a=>{var n=fa(),m=r(n);t(n),_(()=>f(m,`${e(F)??""} active`)),l(a,n)};I(Et,a=>{e(F)>0&&a(xt)})}t(Ce);var Ue=s(Ce,2),Mt=r(Ue);{var bt=a=>{var n=ga(),m=r(n);t(n),_(z=>f(m,`polled ${z??""}`),[()=>R(S.lastPoll)]),l(a,n)};I(Mt,a=>{S.lastPoll&&a(bt)})}t(Ue),t(Se);var We=s(Se,2),Dt=r(We);ua(Dt,{}),t(We);var _t=s(We,2),G=r(_t),X=r(G);Zr(X,{onselectnode:i}),t(G);var re=s(G,2),ge=r(re),me=r(ge),ce=s(r(me),2),Pe=r(ce),xe=r(Pe);t(Pe);var se=s(Pe,2);let be;var Me=r(se,!0);t(se),t(ce),t(me);var Be=s(me,2),ae=r(Be),ve=r(ae);ke(ve,()=>Wt,(a,n)=>{n(a,{get checked(){return e(c)},onCheckedChange:m=>b(m),class:"scale-90"})}),he(2),t(ae);var ne=s(ae,2),_e=r(ne);gt(_e,{variant:"outline",size:"sm",class:"sig-meta uppercase tracking-[0.08em] px-2 py-[3px] h-auto hover:text-[var(--sig-text)] hover:border-[var(--sig-border-strong)]",onclick:a=>Q(a),children:(a,n)=>{he();var m=Ee();_(()=>f(m,e(P))),l(a,m)},$$slots:{default:!0}});var Re=s(_e,2);gt(Re,{variant:"outline",size:"sm",class:"sig-meta uppercase tracking-[0.08em] px-2 py-[3px] h-auto hover:text-[var(--sig-text)] hover:border-[var(--sig-border-strong)]",onclick:a=>w(a),children:(a,n)=>{he();var m=Ee();_(()=>f(m,e($))),l(a,m)},$$slots:{default:!0}}),t(ne);var ze=s(ne,2),Ze=r(ze);ke(Ze,()=>wr,(a,n)=>{n(a,{get open(){return e(M)},set open(m){x(M,m,!0)},children:(m,z)=>{var W=pa(),Je=Z(W);{const lt=(je,De)=>{gt(je,ir(()=>De?.().props,{variant:"outline",size:"sm",class:"sig-meta uppercase tracking-[0.08em] px-2 py-[3px] h-auto hover:text-[var(--sig-text)] hover:border-[var(--sig-border-strong)]",children:(Le,ct)=>{he();var Ke=Ee("Feed actions");l(Le,Ke)},$$slots:{default:!0}}))};ke(Je,()=>_r,(je,De)=>{De(je,{child:lt,$$slots:{child:!0}})})}var Ot=s(Je,2);ke(Ot,()=>yr,(lt,je)=>{je(lt,{align:"end",side:"bottom",class:"w-[170px] p-1 bg-[var(--sig-surface-raised)] border-[var(--sig-border-strong)] rounded-lg",children:(De,dt)=>{var Le=ma(),ct=r(Le);gt(ct,{variant:"outline",size:"sm",class:"w-full justify-start sig-eyebrow tracking-[0.08em] px-2 py-1 h-auto hover:text-[var(--sig-text)] hover:border-[var(--sig-border-strong)]",onclick:ye=>Q(ye),children:(ye,Nt)=>{he();var Xe=Ee();_(()=>f(Xe,e(P))),l(ye,Xe)},$$slots:{default:!0}});var Ke=s(ct,2);gt(Ke,{variant:"outline",size:"sm",class:"w-full justify-start sig-eyebrow tracking-[0.08em] px-2 py-1 h-auto hover:text-[var(--sig-text)] hover:border-[var(--sig-border-strong)]",onclick:ye=>w(ye),children:(ye,Nt)=>{he();var Xe=Ee();_(()=>f(Xe,e($))),l(ye,Xe)},$$slots:{default:!0}}),t(Le),l(De,Le)},$$slots:{default:!0}})}),l(m,W)},$$slots:{default:!0}})}),t(ze),t(Be),t(ge);var Ye=s(ge,2),yt=r(Ye);Oe(yt,19,()=>S.feed,(a,n)=>a.timestamp+"-"+n,(a,n)=>{const m=E(()=>k[e(n).category]??"var(--sig-text-muted)"),z=E(()=>u[e(n).level]??"#6b6b76"),W=E(()=>e(n).message.length>72),Je=E(()=>T(e(n).data)),Ot=E(()=>p(e(n))),lt=E(()=>Y(e(n))),je=E(()=>te(e(n)));var De=Pa(),dt=r(De),Le=r(dt),ct=r(Le,!0);t(Le);var Ke=s(Le,2),ye=s(Ke,2),Nt=r(ye,!0);t(ye),t(dt);var Xe=s(dt,2);{var Kt=qe=>{var vt=ya(),et=Z(vt),ut=r(et),At=r(ut,!0);t(ut);var wt=s(ut,2),It=r(wt,!0);t(wt),t(et);var ie=s(et,2),ue=r(ie,!0);t(ie);var we=s(ie,2);Oe(we,21,()=>e(lt),pt,(oe,le)=>{var $e=ha(),ft=r($e),or=r(ft,!0);t(ft);var Ht=s(ft,2),sr=r(Ht,!0);t(Ht),t($e),_(()=>{f(or,e(le).label),f(sr,e(le).value)}),l(oe,$e)}),t(we);var kt=s(we,2);{var St=oe=>{var le=xa(),$e=r(le);t(le),_(()=>f($e,`Data keys: ${e(Je)??""}`)),l(oe,le)};I(kt,oe=>{e(Je)&&oe(St)})}var Ct=s(kt,2);{var tr=oe=>{var le=ba(),$e=r(le);t(le),_(()=>f($e,`${e(n).error.name??""}: ${e(n).error.message??""}`)),l(oe,le)};I(Ct,oe=>{e(n).error&&oe(tr)})}var rr=s(Ct,2);{var ar=oe=>{var le=_a(),$e=s(r(le),2),ft=r($e,!0);t($e),t(le),_(()=>f(ft,e(je))),l(oe,le)};I(rr,oe=>{e(je)&&oe(ar)})}_(oe=>{f(At,e(Ot)),f(It,oe),f(ue,e(n).message)},[()=>j(e(n).timestamp)]),l(qe,vt)},er=qe=>{var vt=Ca(),et=Z(vt);{var ut=ie=>{var ue=wa(),we=r(ue),kt=r(we,!0);t(we);var St=s(we,2),Ct=r(St,!0);t(St),t(ue),_(()=>{f(kt,e(n).message),f(Ct,e(n).message)}),l(ie,ue)},At=ie=>{var ue=ka(),we=r(ue,!0);t(ue),_(()=>f(we,e(n).message)),l(ie,ue)};I(et,ie=>{e(W)?ie(ut):ie(At,-1)})}var wt=s(et,2);{var It=ie=>{var ue=Sa(),we=r(ue);t(ue),_(()=>f(we,`${e(n).duration??""}ms`)),l(ie,ue)};I(wt,ie=>{e(n).duration&&ie(It)})}l(qe,vt)};I(Xe,qe=>{e(N)?qe(Kt):qe(er,-1)})}t(De),_(qe=>{f(ct,qe),Bt(Ke,`background-color: ${e(z)??""}`),Bt(ye,`color: ${e(m)??""}`),f(Nt,e(n).category)},[()=>R(e(n).timestamp)]),l(a,De)});var Lt=s(yt,2);{var nt=a=>{var n=$a();l(a,n)};I(Lt,a=>{S.feed.length===0&&a(nt)})}t(Ye),lr(Ye,a=>x(d,a),()=>e(d)),t(re),t(_t),t(U);var it=s(U,2);la(it,{}),_(()=>{Qe=Fe(Ie,1,"inline-block w-2 h-2 rounded-full",null,Qe,{"bg-[#4ade80]":S.connected,"bg-[#f87171]":!S.connected,"animate-pulse":S.connected}),f(ot,S.connected?"LIVE":"DISCONNECTED"),Fe(re,1,`w-full shrink-0 border-t lg:border-t-0 border-[var(--sig-border)] flex flex-col bg-[var(--sig-bg)] min-h-[220px] max-h-[40vh] lg:max-h-none ${e(ee)}`,"svelte-1kgvdra"),f(xe,`${S.feed.length??""} events`),be=Fe(se,1,"sig-meta",null,be,{"text-[#4ade80]":e(c)&&e(C),"text-[var(--sig-text-muted)]":!e(c)||!e(C)}),f(Me,e(c)&&e(C)?"following":"paused")}),$t("scroll",Ye,B),l(g,Ne),rt()}export{Ra as default};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{p as re,s as Ee,c as Ut,f as j,a as Re,n as Be,b as s,d as se,r as De,j as r,w as vt,x as $t,y as N,z as d,i as t,t as e,h as L,l as a,ad as ke,af as Se,ag as je,O as we,v as b,k as nt,u as I,o as V,m as v,P as Le,g as Oe,A as Bt,D as o,G as ce,N as Ce,aj as ie,B as Ne,e as qt,q as ze}from"./Bh3nIh1p.js";import{B as ue}from"./38c9eNlN.js";import{I as We,ap as ge,aq as pe,ar as xe,B as He,f as Ge,n as qe,E as Je}from"./SO1qThqK.js";import{a as Ke,C as Ve}from"./DfP1YA_a.js";import{C as Ye,a as Ze}from"./C-sB2hkF.js";import{C as Qe,a as Ue,b as Xe}from"./2MfvoDg1.js";import{P as ta}from"./Bfse3fCo.js";import{T as ea}from"./CjrslgAi.js";import{P as aa,a as ra,b as sa}from"./Tp-mbLmg.js";import{Z as ia}from"./Dc84ZbIq.js";import{R as na}from"./DgqgJ0gT.js";import{C as oa}from"./CMmNZXyh.js";function la(wt,c){re(c,!0);let p=De(c,["$$slots","$$events","$$legacy"]);const T=[["path",{d:"M14 17H5"}],["path",{d:"M19 7h-9"}],["circle",{cx:"17",cy:"17",r:"3"}],["circle",{cx:"7",cy:"7",r:"3"}]];We(wt,Ee({name:"settings-2"},()=>p,{get iconNode(){return T},children:($,x)=>{var rt=Ut(),C=j(rt);Re(C,()=>c.children??Be),s($,rt)},$$slots:{default:!0}})),se()}var da=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),va=v("<!> <!>",1),ca=v('<span class="sig-label text-[var(--sig-text)]">win rate: <span class="font-bold"> </span></span>'),ua=v("<!> <!>",1),ga=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),pa=v("<!> <!>",1),xa=v("<!> <!>",1),fa=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 ma(wt,c){re(c,!0);const p=I(()=>{switch(c.healthStatus){case"healthy":return"default";case"degraded":case"cold_start":return"secondary";case"unhealthy":return"destructive";default:return"outline"}});let T=V(!1);var $=fa(),x=r($);ue(x,{get variant(){return t(p)},class:"text-[9px] shrink-0",children:(M,Z)=>{vt();var A=$t();N(()=>d(A,c.healthStatus)),s(M,A)},$$slots:{default:!0}});var rt=e(x,2);L(rt,()=>xe,(M,Z)=>{Z(M,{children:(A,mt)=>{var q=va(),Q=j(q);L(Q,()=>ge,(g,n)=>{n(g,{class:"flex items-center gap-2 min-w-[120px]",children:(u,w)=>{var h=da(),y=e(j(h),2),P=r(y),R=e(P,2);a(y);var H=e(y,2),X=r(H,!0);a(H),N(z=>{ke(P,`width: ${c.alpha*100}%`),ke(R,`width: ${(1-c.alpha)*100}%`),d(X,z)},[()=>c.alpha.toFixed(2)]),s(u,h)},$$slots:{default:!0}})});var m=e(Q,2);L(m,()=>pe,(g,n)=>{n(g,{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:(u,w)=>{vt();var h=$t("Baseline weight in scoring. Shifts toward predictor as it proves itself.");s(u,h)},$$slots:{default:!0}})}),s(A,q)},$$slots:{default:!0}})});var C=e(rt,2);L(C,()=>xe,(M,Z)=>{Z(M,{children:(A,mt)=>{var q=ua(),Q=j(q);L(Q,()=>ge,(g,n)=>{n(g,{children:(u,w)=>{var h=ca(),y=e(r(h)),P=r(y);a(y),a(h),N(R=>d(P,`${R??""}%`),[()=>Math.round(c.winRate*100)]),s(u,h)},$$slots:{default:!0}})});var m=e(Q,2);L(m,()=>pe,(g,n)=>{n(g,{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:(u,w)=>{vt();var h=$t("Sessions where predictor ranked better than heuristic baseline.");s(u,h)},$$slots:{default:!0}})}),s(A,q)},$$slots:{default:!0}})});var Y=e(C,4);L(Y,()=>sa,(M,Z)=>{Z(M,{get open(){return t(T)},set open(A){b(T,A,!0)},children:(A,mt)=>{var q=pa(),Q=j(q);L(Q,()=>aa,(g,n)=>{n(g,{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:(u,w)=>{la(u,{class:"w-3.5 h-3.5"})},$$slots:{default:!0}})});var m=e(Q,2);L(m,()=>ra,(g,n)=>{n(g,{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:(u,w)=>{var h=ga(),y=e(j(h),2),P=r(y),R=e(r(P),2);Se(R),a(P),vt(2),a(y);var H=e(y,2),X=r(H),z=e(r(X),2);Se(z),a(X),vt(2),a(H);var at=e(H,2),ct=r(at),ot=e(r(ct),2),St=r(ot);a(ot),a(ct),vt(2),a(at);var pt=e(at,2),xt=r(pt),B=r(xt);a(xt),a(pt),N(f=>{je(R,c.trainEpochs),je(z,c.trainLimit),d(St,`${c.trainInterval??""} sessions`),d(B,`${f??""} training pairs available`)},[()=>c.trainingPairs.toLocaleString()]),we("input",R,f=>c.onEpochsChange(Number(f.currentTarget.value))),we("input",z,f=>c.onLimitChange(Number(f.currentTarget.value))),s(u,h)},$$slots:{default:!0}})}),s(A,q)},$$slots:{default:!0}})});var O=e(Y,2);{let M=I(()=>c.training||!c.sidecarAlive);He(O,{variant:"default",size:"sm",class:"sig-label gap-1.5",get onclick(){return c.onTrain},get disabled(){return t(M)},children:(Z,A)=>{var mt=xa(),q=j(mt);ia(q,{class:"w-3.5 h-3.5"});var Q=e(q,2);{var m=n=>{var u=$t("training...");s(n,u)},g=n=>{var u=$t("train now");s(n,u)};nt(Q,n=>{c.training?n(m):n(g,-1)})}s(Z,mt)},$$slots:{default:!0}})}var st=e(O,2),Pt=r(st);{let M=I(()=>c.loading?"animate-spin":"");na(Pt,{get class(){return`w-3.5 h-3.5 ${t(M)??""}`}})}a(st),a($),N(()=>st.disabled=c.loading),we("click",st,function(...M){c.onRefresh?.apply(this,M)}),s(wt,$),se()}Le(["input","click"]);var _a=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>'),ha=v("<!> <!>",1),ba=v('<div class="sig-label text-[var(--sig-text)] truncate pl-2 border-l border-[var(--sig-border)]"> </div>'),ya=v('<div class="sig-label text-[var(--sig-text-muted)] pl-2 italic">no ranking data yet</div>'),$a=v('<div class="flex justify-between sig-label"><span class="text-[var(--sig-text-muted)]"> </span> <span class="text-[var(--sig-text)]"> </span></div>'),wa=v("<!> <!>",1),Pa=v('<div class="flex justify-between sig-label"><span class="text-[var(--sig-text-muted)]"> </span> <span class="text-[var(--sig-text)]"> </span></div>'),ka=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(wt,c){re(c,!0);const p=Oe(c,"offline",3,!1),T=I(()=>Math.round(c.ndcg*100)),$=I(()=>c.side==="baseline"?"Heuristic Baseline":"Predictor Model"),x=I(()=>`How well this system ranks memories. NDCG@10 = ${c.ndcg.toFixed(3)}`);var rt=ka(),C=r(rt),Y=r(C),O=r(Y,!0);a(Y);var st=e(Y,2);{var Pt=m=>{ue(m,{variant:"destructive",class:"text-[8px] px-1.5 py-0",children:(g,n)=>{vt();var u=$t("OFFLINE");s(g,u)},$$slots:{default:!0}})};nt(st,m=>{p()&&m(Pt)})}a(C);var M=e(C,2);L(M,()=>xe,(m,g)=>{g(m,{children:(n,u)=>{var w=ha(),h=j(w);L(h,()=>ge,(P,R)=>{R(P,{class:"text-left",children:(H,X)=>{var z=_a(),at=r(z),ct=r(at);a(at),vt(2),a(z),N(()=>d(ct,`${t(T)??""}%`)),s(H,z)},$$slots:{default:!0}})});var y=e(h,2);L(y,()=>pe,(P,R)=>{R(P,{class:"bg-[var(--sig-surface-raised)] border border-[var(--sig-border)] text-[var(--sig-text)] px-2 py-1 rounded text-xs",children:(H,X)=>{vt();var z=$t();N(()=>d(z,t(x))),s(H,z)},$$slots:{default:!0}})}),s(n,w)},$$slots:{default:!0}})});var Z=e(M,2),A=e(r(Z),2);{var mt=m=>{var g=Ut(),n=j(g);Bt(n,17,()=>c.topPicks.slice(0,3),u=>u.id,(u,w)=>{var h=ba(),y=r(h);a(h),N(P=>{o(h,"title",t(w).content),d(y,`${P??""}${t(w).content.length>60?"...":""}`)},[()=>t(w).content.slice(0,60)]),s(u,h)}),s(m,g)},q=m=>{var g=ya();s(m,g)};nt(A,m=>{c.topPicks.length>0?m(mt):m(q,-1)})}a(Z);var Q=e(Z,2);Bt(Q,21,()=>c.stats,m=>m.label,(m,g)=>{var n=Ut(),u=j(n);{var w=y=>{var P=Ut(),R=j(P);L(R,()=>xe,(H,X)=>{X(H,{children:(z,at)=>{var ct=wa(),ot=j(ct);L(ot,()=>ge,(pt,xt)=>{xt(pt,{class:"w-full text-left",children:(B,f)=>{var S=$a(),k=r(S),G=r(k,!0);a(k);var lt=e(k,2),ft=r(lt,!0);a(lt),a(S),N(()=>{d(G,t(g).label),d(ft,t(g).value)}),s(B,S)},$$slots:{default:!0}})});var St=e(ot,2);L(St,()=>pe,(pt,xt)=>{xt(pt,{class:"bg-[var(--sig-surface-raised)] border border-[var(--sig-border)] text-[var(--sig-text)] px-2 py-1 rounded text-xs",children:(B,f)=>{vt();var S=$t();N(()=>d(S,t(g).tooltip)),s(B,S)},$$slots:{default:!0}})}),s(z,ct)},$$slots:{default:!0}})}),s(y,P)},h=y=>{var P=Pa(),R=r(P),H=r(R,!0);a(R);var X=e(R,2),z=r(X,!0);a(X),a(P),N(()=>{d(H,t(g).label),d(z,t(g).value)}),s(y,P)};nt(u,y=>{t(g).tooltip?y(w):y(h,-1)})}s(m,n)}),a(Q),a(rt),N(()=>d(O,t($))),s(wt,rt),se()}var Na=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>'),Ta=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),Sa=ie('<circle r="3"></circle>'),ja=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),Ca=ie('<rect fill="transparent"></rect><!>',1),Ma=v('<div class="sig-meta text-[var(--sig-text-muted)] mt-0.5"> </div>'),Fa=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>'),Ia=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 Aa(wt,c){re(c,!0);const p={top:12,right:12,bottom:20,left:32},T=1200,$=200,x=T-p.left-p.right,rt=$-p.top-p.bottom,C=I(()=>[...c.comparisons].reverse());function Y(n){return t(C).length<=1?p.left+x/2:p.left+n/(t(C).length-1)*x}function O(n){return p.top+(1-n)*rt}function st(n){return t(C).map((u,w)=>`${Y(w).toFixed(1)},${O(n(u)).toFixed(1)}`).join(" ")}const Pt=I(()=>st(n=>n.baselineNdcg)),M=I(()=>st(n=>n.predictorNdcg)),Z=[.25,.5,.75];let A=V(null);function mt(n){const u=new Date(n);return Number.isNaN(u.getTime())?n:u.toLocaleString(void 0,{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})}var q=Ut(),Q=j(q);{var m=n=>{var u=Na();s(n,u)},g=n=>{var u=Ia(),w=j(u);o(w,"viewBox","0 0 1200 200");var h=r(w);Bt(h,17,()=>Z,ce,(B,f)=>{var S=Ta(),k=j(S),G=e(k),lt=r(G,!0);a(G),N((ft,ut,yt,gt)=>{o(k,"x1",p.left),o(k,"y1",ft),o(k,"x2",T-p.right),o(k,"y2",ut),o(G,"x",p.left-6),o(G,"y",yt),d(lt,gt)},[()=>O(t(f)),()=>O(t(f)),()=>O(t(f))+4,()=>t(f).toFixed(2)]),s(B,S)});var y=e(h),P=e(y),R=e(P),H=e(R),X=e(H);Bt(X,17,()=>t(C),ce,(B,f,S)=>{var k=Sa();o(k,"cy",$-6),N(G=>{o(k,"cx",G),o(k,"fill",t(f).predictorWon?"var(--sig-success)":"var(--sig-danger)"),o(k,"opacity",t(f).predictorWon?.8:.5)},[()=>Y(S)]),s(B,k)});var z=e(X);Bt(z,17,()=>t(C),ce,(B,f,S)=>{var k=Ca(),G=j(k);o(G,"y",0),o(G,"height",$);var lt=e(G);{var ft=ut=>{var yt=ja(),gt=j(yt),jt=e(gt),Jt=e(jt);N((Dt,i,l,W,F,U)=>{o(gt,"x1",Dt),o(gt,"y1",p.top),o(gt,"x2",i),o(gt,"y2",$-p.bottom),o(jt,"cx",l),o(jt,"cy",W),o(Jt,"cx",F),o(Jt,"cy",U)},[()=>Y(S),()=>Y(S),()=>Y(S),()=>O(t(f).baselineNdcg),()=>Y(S),()=>O(t(f).predictorNdcg)]),s(ut,yt)};nt(lt,ut=>{t(A)===S&&ut(ft)})}N((ut,yt)=>{o(G,"x",ut),o(G,"width",yt)},[()=>Y(S)-Math.max(x/t(C).length,16)/2,()=>Math.max(x/t(C).length,16)]),Ce("mouseenter",G,()=>b(A,S,!0)),Ce("mouseleave",G,()=>b(A,null)),s(B,k)});var at=e(z);o(at,"y1",10),o(at,"y2",10);var ct=e(at);o(ct,"y",14);var ot=e(ct);o(ot,"y1",10),o(ot,"y2",10);var St=e(ot);o(St,"y",14),a(w);var pt=e(w);{var xt=B=>{const f=I(()=>t(C)[t(A)]);var S=Fa(),k=r(S),G=r(k,!0);a(k);var lt=e(k,2),ft=r(lt),ut=e(r(ft),2),yt=r(ut,!0);a(ut),a(ft);var gt=e(ft,2),jt=e(r(gt),2),Jt=r(jt,!0);a(jt),a(gt);var Dt=e(gt,2);let i;var l=r(Dt);a(Dt),a(lt);var W=e(lt,2);{var F=U=>{var J=Ma(),_=r(J,!0);a(J),N(()=>d(_,t(f).project)),s(U,J)};nt(W,U=>{t(f).project&&U(F)})}a(S),N((U,J,_,tt)=>{d(G,U),d(yt,J),d(Jt,_),i=Ne(Dt,1,"sig-label",null,i,{"text-[var(--sig-success)]":t(f).margin>0,"text-[var(--sig-danger)]":t(f).margin<0}),d(l,`${t(f).margin>0?"+":""}${tt??""}`)},[()=>mt(t(f).createdAt),()=>t(f).baselineNdcg.toFixed(3),()=>t(f).predictorNdcg.toFixed(3),()=>t(f).margin.toFixed(3)]),s(B,S)};nt(pt,B=>{t(A)!==null&&t(C)[t(A)]&&B(xt)})}N((B,f)=>{o(y,"x",p.left-6),o(y,"y",B),o(P,"x",p.left-6),o(P,"y",f),o(R,"points",t(Pt)),o(H,"points",t(M)),o(at,"x1",T-p.right-160),o(at,"x2",T-p.right-146),o(ct,"x",T-p.right-142),o(ot,"x1",T-p.right-80),o(ot,"x2",T-p.right-66),o(St,"x",T-p.right-62)},[()=>O(1)+4,()=>O(0)+4]),s(n,u)};nt(Q,n=>{t(C).length===0?n(m):n(g,-1)})}s(wt,q),se()}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,s as Ee,c as Ut,f as j,a as Re,n as Be,b as s,d as se,r as De,j as r,w as vt,x as $t,y as N,z as d,i as t,t as e,h as L,l as a,ad as ke,af as Se,ag as je,O as we,v as b,k as nt,u as I,o as V,m as v,P as Le,g as Oe,A as Bt,D as o,G as ce,N as Ce,aj as ie,B as Ne,e as qt,q as ze}from"./Bh3nIh1p.js";import{B as ue}from"./3zVBfrdZ.js";import{I as We,ap as ge,aq as pe,ar as xe,B as He,f as Ge,n as qe,E as Je}from"./Cn9W5J_c.js";import{a as Ke,C as Ve}from"./CGOrOrWU.js";import{C as Ye,a as Ze}from"./CXYsM7jF.js";import{C as Qe,a as Ue,b as Xe}from"./2MfvoDg1.js";import{P as ta}from"./Bfse3fCo.js";import{T as ea}from"./CjrslgAi.js";import{P as aa,a as ra,b as sa}from"./CkKq6V9e.js";import{Z as ia}from"./DmznbP6q.js";import{R as na}from"./DN6yGQLc.js";import{C as oa}from"./DXF7ZgZf.js";function la(wt,c){re(c,!0);let p=De(c,["$$slots","$$events","$$legacy"]);const T=[["path",{d:"M14 17H5"}],["path",{d:"M19 7h-9"}],["circle",{cx:"17",cy:"17",r:"3"}],["circle",{cx:"7",cy:"7",r:"3"}]];We(wt,Ee({name:"settings-2"},()=>p,{get iconNode(){return T},children:($,x)=>{var rt=Ut(),C=j(rt);Re(C,()=>c.children??Be),s($,rt)},$$slots:{default:!0}})),se()}var da=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),va=v("<!> <!>",1),ca=v('<span class="sig-label text-[var(--sig-text)]">win rate: <span class="font-bold"> </span></span>'),ua=v("<!> <!>",1),ga=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),pa=v("<!> <!>",1),xa=v("<!> <!>",1),fa=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 ma(wt,c){re(c,!0);const p=I(()=>{switch(c.healthStatus){case"healthy":return"default";case"degraded":case"cold_start":return"secondary";case"unhealthy":return"destructive";default:return"outline"}});let T=V(!1);var $=fa(),x=r($);ue(x,{get variant(){return t(p)},class:"text-[9px] shrink-0",children:(M,Z)=>{vt();var A=$t();N(()=>d(A,c.healthStatus)),s(M,A)},$$slots:{default:!0}});var rt=e(x,2);L(rt,()=>xe,(M,Z)=>{Z(M,{children:(A,mt)=>{var q=va(),Q=j(q);L(Q,()=>ge,(g,n)=>{n(g,{class:"flex items-center gap-2 min-w-[120px]",children:(u,w)=>{var h=da(),y=e(j(h),2),P=r(y),R=e(P,2);a(y);var H=e(y,2),X=r(H,!0);a(H),N(z=>{ke(P,`width: ${c.alpha*100}%`),ke(R,`width: ${(1-c.alpha)*100}%`),d(X,z)},[()=>c.alpha.toFixed(2)]),s(u,h)},$$slots:{default:!0}})});var m=e(Q,2);L(m,()=>pe,(g,n)=>{n(g,{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:(u,w)=>{vt();var h=$t("Baseline weight in scoring. Shifts toward predictor as it proves itself.");s(u,h)},$$slots:{default:!0}})}),s(A,q)},$$slots:{default:!0}})});var C=e(rt,2);L(C,()=>xe,(M,Z)=>{Z(M,{children:(A,mt)=>{var q=ua(),Q=j(q);L(Q,()=>ge,(g,n)=>{n(g,{children:(u,w)=>{var h=ca(),y=e(r(h)),P=r(y);a(y),a(h),N(R=>d(P,`${R??""}%`),[()=>Math.round(c.winRate*100)]),s(u,h)},$$slots:{default:!0}})});var m=e(Q,2);L(m,()=>pe,(g,n)=>{n(g,{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:(u,w)=>{vt();var h=$t("Sessions where predictor ranked better than heuristic baseline.");s(u,h)},$$slots:{default:!0}})}),s(A,q)},$$slots:{default:!0}})});var Y=e(C,4);L(Y,()=>sa,(M,Z)=>{Z(M,{get open(){return t(T)},set open(A){b(T,A,!0)},children:(A,mt)=>{var q=pa(),Q=j(q);L(Q,()=>aa,(g,n)=>{n(g,{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:(u,w)=>{la(u,{class:"w-3.5 h-3.5"})},$$slots:{default:!0}})});var m=e(Q,2);L(m,()=>ra,(g,n)=>{n(g,{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:(u,w)=>{var h=ga(),y=e(j(h),2),P=r(y),R=e(r(P),2);Se(R),a(P),vt(2),a(y);var H=e(y,2),X=r(H),z=e(r(X),2);Se(z),a(X),vt(2),a(H);var at=e(H,2),ct=r(at),ot=e(r(ct),2),St=r(ot);a(ot),a(ct),vt(2),a(at);var pt=e(at,2),xt=r(pt),B=r(xt);a(xt),a(pt),N(f=>{je(R,c.trainEpochs),je(z,c.trainLimit),d(St,`${c.trainInterval??""} sessions`),d(B,`${f??""} training pairs available`)},[()=>c.trainingPairs.toLocaleString()]),we("input",R,f=>c.onEpochsChange(Number(f.currentTarget.value))),we("input",z,f=>c.onLimitChange(Number(f.currentTarget.value))),s(u,h)},$$slots:{default:!0}})}),s(A,q)},$$slots:{default:!0}})});var O=e(Y,2);{let M=I(()=>c.training||!c.sidecarAlive);He(O,{variant:"default",size:"sm",class:"sig-label gap-1.5",get onclick(){return c.onTrain},get disabled(){return t(M)},children:(Z,A)=>{var mt=xa(),q=j(mt);ia(q,{class:"w-3.5 h-3.5"});var Q=e(q,2);{var m=n=>{var u=$t("training...");s(n,u)},g=n=>{var u=$t("train now");s(n,u)};nt(Q,n=>{c.training?n(m):n(g,-1)})}s(Z,mt)},$$slots:{default:!0}})}var st=e(O,2),Pt=r(st);{let M=I(()=>c.loading?"animate-spin":"");na(Pt,{get class(){return`w-3.5 h-3.5 ${t(M)??""}`}})}a(st),a($),N(()=>st.disabled=c.loading),we("click",st,function(...M){c.onRefresh?.apply(this,M)}),s(wt,$),se()}Le(["input","click"]);var _a=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>'),ha=v("<!> <!>",1),ba=v('<div class="sig-label text-[var(--sig-text)] truncate pl-2 border-l border-[var(--sig-border)]"> </div>'),ya=v('<div class="sig-label text-[var(--sig-text-muted)] pl-2 italic">no ranking data yet</div>'),$a=v('<div class="flex justify-between sig-label"><span class="text-[var(--sig-text-muted)]"> </span> <span class="text-[var(--sig-text)]"> </span></div>'),wa=v("<!> <!>",1),Pa=v('<div class="flex justify-between sig-label"><span class="text-[var(--sig-text-muted)]"> </span> <span class="text-[var(--sig-text)]"> </span></div>'),ka=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(wt,c){re(c,!0);const p=Oe(c,"offline",3,!1),T=I(()=>Math.round(c.ndcg*100)),$=I(()=>c.side==="baseline"?"Heuristic Baseline":"Predictor Model"),x=I(()=>`How well this system ranks memories. NDCG@10 = ${c.ndcg.toFixed(3)}`);var rt=ka(),C=r(rt),Y=r(C),O=r(Y,!0);a(Y);var st=e(Y,2);{var Pt=m=>{ue(m,{variant:"destructive",class:"text-[8px] px-1.5 py-0",children:(g,n)=>{vt();var u=$t("OFFLINE");s(g,u)},$$slots:{default:!0}})};nt(st,m=>{p()&&m(Pt)})}a(C);var M=e(C,2);L(M,()=>xe,(m,g)=>{g(m,{children:(n,u)=>{var w=ha(),h=j(w);L(h,()=>ge,(P,R)=>{R(P,{class:"text-left",children:(H,X)=>{var z=_a(),at=r(z),ct=r(at);a(at),vt(2),a(z),N(()=>d(ct,`${t(T)??""}%`)),s(H,z)},$$slots:{default:!0}})});var y=e(h,2);L(y,()=>pe,(P,R)=>{R(P,{class:"bg-[var(--sig-surface-raised)] border border-[var(--sig-border)] text-[var(--sig-text)] px-2 py-1 rounded text-xs",children:(H,X)=>{vt();var z=$t();N(()=>d(z,t(x))),s(H,z)},$$slots:{default:!0}})}),s(n,w)},$$slots:{default:!0}})});var Z=e(M,2),A=e(r(Z),2);{var mt=m=>{var g=Ut(),n=j(g);Bt(n,17,()=>c.topPicks.slice(0,3),u=>u.id,(u,w)=>{var h=ba(),y=r(h);a(h),N(P=>{o(h,"title",t(w).content),d(y,`${P??""}${t(w).content.length>60?"...":""}`)},[()=>t(w).content.slice(0,60)]),s(u,h)}),s(m,g)},q=m=>{var g=ya();s(m,g)};nt(A,m=>{c.topPicks.length>0?m(mt):m(q,-1)})}a(Z);var Q=e(Z,2);Bt(Q,21,()=>c.stats,m=>m.label,(m,g)=>{var n=Ut(),u=j(n);{var w=y=>{var P=Ut(),R=j(P);L(R,()=>xe,(H,X)=>{X(H,{children:(z,at)=>{var ct=wa(),ot=j(ct);L(ot,()=>ge,(pt,xt)=>{xt(pt,{class:"w-full text-left",children:(B,f)=>{var S=$a(),k=r(S),G=r(k,!0);a(k);var lt=e(k,2),ft=r(lt,!0);a(lt),a(S),N(()=>{d(G,t(g).label),d(ft,t(g).value)}),s(B,S)},$$slots:{default:!0}})});var St=e(ot,2);L(St,()=>pe,(pt,xt)=>{xt(pt,{class:"bg-[var(--sig-surface-raised)] border border-[var(--sig-border)] text-[var(--sig-text)] px-2 py-1 rounded text-xs",children:(B,f)=>{vt();var S=$t();N(()=>d(S,t(g).tooltip)),s(B,S)},$$slots:{default:!0}})}),s(z,ct)},$$slots:{default:!0}})}),s(y,P)},h=y=>{var P=Pa(),R=r(P),H=r(R,!0);a(R);var X=e(R,2),z=r(X,!0);a(X),a(P),N(()=>{d(H,t(g).label),d(z,t(g).value)}),s(y,P)};nt(u,y=>{t(g).tooltip?y(w):y(h,-1)})}s(m,n)}),a(Q),a(rt),N(()=>d(O,t($))),s(wt,rt),se()}var Na=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>'),Ta=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),Sa=ie('<circle r="3"></circle>'),ja=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),Ca=ie('<rect fill="transparent"></rect><!>',1),Ma=v('<div class="sig-meta text-[var(--sig-text-muted)] mt-0.5"> </div>'),Fa=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>'),Ia=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 Aa(wt,c){re(c,!0);const p={top:12,right:12,bottom:20,left:32},T=1200,$=200,x=T-p.left-p.right,rt=$-p.top-p.bottom,C=I(()=>[...c.comparisons].reverse());function Y(n){return t(C).length<=1?p.left+x/2:p.left+n/(t(C).length-1)*x}function O(n){return p.top+(1-n)*rt}function st(n){return t(C).map((u,w)=>`${Y(w).toFixed(1)},${O(n(u)).toFixed(1)}`).join(" ")}const Pt=I(()=>st(n=>n.baselineNdcg)),M=I(()=>st(n=>n.predictorNdcg)),Z=[.25,.5,.75];let A=V(null);function mt(n){const u=new Date(n);return Number.isNaN(u.getTime())?n:u.toLocaleString(void 0,{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})}var q=Ut(),Q=j(q);{var m=n=>{var u=Na();s(n,u)},g=n=>{var u=Ia(),w=j(u);o(w,"viewBox","0 0 1200 200");var h=r(w);Bt(h,17,()=>Z,ce,(B,f)=>{var S=Ta(),k=j(S),G=e(k),lt=r(G,!0);a(G),N((ft,ut,yt,gt)=>{o(k,"x1",p.left),o(k,"y1",ft),o(k,"x2",T-p.right),o(k,"y2",ut),o(G,"x",p.left-6),o(G,"y",yt),d(lt,gt)},[()=>O(t(f)),()=>O(t(f)),()=>O(t(f))+4,()=>t(f).toFixed(2)]),s(B,S)});var y=e(h),P=e(y),R=e(P),H=e(R),X=e(H);Bt(X,17,()=>t(C),ce,(B,f,S)=>{var k=Sa();o(k,"cy",$-6),N(G=>{o(k,"cx",G),o(k,"fill",t(f).predictorWon?"var(--sig-success)":"var(--sig-danger)"),o(k,"opacity",t(f).predictorWon?.8:.5)},[()=>Y(S)]),s(B,k)});var z=e(X);Bt(z,17,()=>t(C),ce,(B,f,S)=>{var k=Ca(),G=j(k);o(G,"y",0),o(G,"height",$);var lt=e(G);{var ft=ut=>{var yt=ja(),gt=j(yt),jt=e(gt),Jt=e(jt);N((Dt,i,l,W,F,U)=>{o(gt,"x1",Dt),o(gt,"y1",p.top),o(gt,"x2",i),o(gt,"y2",$-p.bottom),o(jt,"cx",l),o(jt,"cy",W),o(Jt,"cx",F),o(Jt,"cy",U)},[()=>Y(S),()=>Y(S),()=>Y(S),()=>O(t(f).baselineNdcg),()=>Y(S),()=>O(t(f).predictorNdcg)]),s(ut,yt)};nt(lt,ut=>{t(A)===S&&ut(ft)})}N((ut,yt)=>{o(G,"x",ut),o(G,"width",yt)},[()=>Y(S)-Math.max(x/t(C).length,16)/2,()=>Math.max(x/t(C).length,16)]),Ce("mouseenter",G,()=>b(A,S,!0)),Ce("mouseleave",G,()=>b(A,null)),s(B,k)});var at=e(z);o(at,"y1",10),o(at,"y2",10);var ct=e(at);o(ct,"y",14);var ot=e(ct);o(ot,"y1",10),o(ot,"y2",10);var St=e(ot);o(St,"y",14),a(w);var pt=e(w);{var xt=B=>{const f=I(()=>t(C)[t(A)]);var S=Fa(),k=r(S),G=r(k,!0);a(k);var lt=e(k,2),ft=r(lt),ut=e(r(ft),2),yt=r(ut,!0);a(ut),a(ft);var gt=e(ft,2),jt=e(r(gt),2),Jt=r(jt,!0);a(jt),a(gt);var Dt=e(gt,2);let i;var l=r(Dt);a(Dt),a(lt);var W=e(lt,2);{var F=U=>{var J=Ma(),_=r(J,!0);a(J),N(()=>d(_,t(f).project)),s(U,J)};nt(W,U=>{t(f).project&&U(F)})}a(S),N((U,J,_,tt)=>{d(G,U),d(yt,J),d(Jt,_),i=Ne(Dt,1,"sig-label",null,i,{"text-[var(--sig-success)]":t(f).margin>0,"text-[var(--sig-danger)]":t(f).margin<0}),d(l,`${t(f).margin>0?"+":""}${tt??""}`)},[()=>mt(t(f).createdAt),()=>t(f).baselineNdcg.toFixed(3),()=>t(f).predictorNdcg.toFixed(3),()=>t(f).margin.toFixed(3)]),s(B,S)};nt(pt,B=>{t(A)!==null&&t(C)[t(A)]&&B(xt)})}N((B,f)=>{o(y,"x",p.left-6),o(y,"y",B),o(P,"x",p.left-6),o(P,"y",f),o(R,"points",t(Pt)),o(H,"points",t(M)),o(at,"x1",T-p.right-160),o(at,"x2",T-p.right-146),o(ct,"x",T-p.right-142),o(ot,"x1",T-p.right-80),o(ot,"x2",T-p.right-66),o(St,"x",T-p.right-62)},[()=>O(1)+4,()=>O(0)+4]),s(n,u)};nt(Q,n=>{t(C).length===0?n(m):n(g,-1)})}s(wt,q),se()}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>'),qa=v("<!> details <!>",1),Ja=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>'),Ka=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 pr(wt,c){re(c,!0);const p="";let T=V(null),$=V(null),x=V(qt([])),rt=V(qt([])),C=V(!0),Y=V(!1),O=V(null),st=V(null),Pt=V(0),M=V(qt([])),Z=V(!1);const A="signet-predictor-train-config";function mt(){try{const i=localStorage.getItem(A);if(i)return JSON.parse(i)}catch{}return{epochs:3,limit:5e3}}function q(i,l){localStorage.setItem(A,JSON.stringify({epochs:i,limit:l}))}const Q=mt();let m=V(qt(Q.epochs)),g=V(qt(Q.limit)),n=10,u=V(qt([])),w=V(qt([]));const h=I(()=>t(T)!==null&&!t(T).enabled),y=I(()=>t($)!==null&&!t($).coldStartExited&&t($).sidecarAlive),P=I(()=>t($)!==null&&!t($).sidecarAlive&&t(T)!==null&&t(T).enabled),R=10,H=I(()=>Math.min(1,t(x).length/R)),X=I(()=>t(x).length===0?0:t(x).filter(l=>l.predictorWon).length/t(x).length),z=I(()=>t(x).length===0?0:t(x).reduce((i,l)=>i+l.predictorNdcg,0)/t(x).length),at=I(()=>t(x).length===0?0:t(x).reduce((i,l)=>i+l.baselineNdcg,0)/t(x).length),ct=I(()=>t(x).length===0?0:t(x).reduce((i,l)=>i+l.scorerConfidence,0)/t(x).length),ot=I(()=>[{label:"sessions evaluated",value:`${t(x).length}`},{label:"avg confidence",value:t(ct).toFixed(2)}]),St=I(()=>[{label:"win rate",value:`${Math.round(t(X)*100)}%`,tooltip:"Sessions where predictor ranked better than heuristic baseline."},{label:"training pairs",value:t(Pt).toLocaleString(),tooltip:"Memory-relevance examples the model has learned from."},{label:"model",value:t($)?`v${t($).modelVersion} ${t($).lastTrainedAt?`· ${G(t($).lastTrainedAt)}`:""}`:"-"}]);let pt=V(!1),xt=V(!1);async function B(){if(!t(pt)){b(pt,!0),b(C,t(T)===null);try{const[i,l,W,F,U,J]=await Promise.allSettled([fetch(`${p}/api/predictor/status`),fetch(`${p}/api/diagnostics/predictor`),fetch(`${p}/api/predictor/comparisons?limit=50`),fetch(`${p}/api/predictor/training?limit=10`),fetch(`${p}/api/analytics/errors`),fetch(`${p}/api/predictor/training-pairs-count`)]);if(i.status==="fulfilled"&&i.value.ok&&b(T,await i.value.json(),!0),l.status==="fulfilled"&&l.value.ok&&b($,await l.value.json(),!0),W.status==="fulfilled"&&W.value.ok){const _=await W.value.json();b(x,_.items??[],!0)}if(F.status==="fulfilled"&&F.value.ok){const _=await F.value.json();b(rt,_.items??[],!0)}if(U.status==="fulfilled"&&U.value.ok){const tt=(await U.value.json()).errors??[];b(M,tt.filter(Kt=>Kt.stage==="predictor"),!0)}if(J.status==="fulfilled"&&J.value.ok){const _=await J.value.json();b(Pt,_.count??0,!0)}}catch{}t(T)===null&&b(xt,!0),b(C,!1),b(pt,!1),f().catch(()=>{})}}async function f(){try{if(t(x).length===0)return;const i=t(x)[0],l=i.predictorTopIds??[],W=i.baselineTopIds??[],F=[...new Set([...l.slice(0,5),...W.slice(0,5)])];if(F.length===0)return;const U=await Promise.allSettled(F.map(_=>fetch(`${p}/api/memory/${_}`).then(tt=>tt.ok?tt.json():null))),J=new Map;for(let _=0;_<F.length;_++){const tt=U[_];tt.status==="fulfilled"&&tt.value!==null&&J.set(F[_],tt.value.content??"")}b(u,l.slice(0,5).filter(_=>J.has(_)).map(_=>({id:_,content:J.get(_)??""})),!0),b(w,W.slice(0,5).filter(_=>J.has(_)).map(_=>({id:_,content:J.get(_)??""})),!0)}catch{b(u,[],!0),b(w,[],!0)}}async function S(){b(Y,!0),b(O,null),b(st,null);try{const i=await fetch(`${p}/api/predictor/train`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({epochs:t(m),limit:t(g)})}),l=await i.json();i.ok?(b(O,l,!0),await B()):b(st,l.error??`HTTP ${i.status}`,!0)}catch(i){b(st,String(i),!0)}b(Y,!1)}function k(i){const l=new Date(i);return Number.isNaN(l.getTime())?i:l.toLocaleString(void 0,{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})}function G(i){const l=Date.now()-new Date(i).getTime();if(Number.isNaN(l))return i;const W=Math.floor(l/6e4);if(W<1)return"just now";if(W<60)return`${W}m ago`;const F=Math.floor(W/60);return F<24?`${F}h ago`:`${Math.floor(F/24)}d ago`}ze(()=>{B();const i=setInterval(B,15e3);return()=>clearInterval(i)});var lt=er(),ft=r(lt);ta(ft,{title:"Predictor",children:(i,l)=>{ea(i,{group:"engine",get tabs(){return Je},get activeTab(){return qe.activeTab},onselect:(W,F)=>Ge(F)})}});var ut=e(ft,2),yt=r(ut);{var gt=i=>{var l=Ea();s(i,l)},jt=i=>{var l=Ra();s(i,l)},Jt=i=>{var l=Oa(),W=r(l);L(W,()=>Ve,(F,U)=>{U(F,{class:"max-w-md",children:(J,_)=>{var tt=La(),Kt=j(tt);L(Kt,()=>Ye,(Vt,Xt)=>{Xt(Vt,{children:(te,fe)=>{var D=Ut(),K=j(D);L(K,()=>Ze,(et,it)=>{it(et,{class:"flex items-center gap-2 text-sm",children:(kt,Lt)=>{vt();var Ct=Ba(),Ot=e(j(Ct));ue(Ot,{variant:"outline",children:(Mt,Yt)=>{vt();var Zt=$t("disabled");s(Mt,Zt)},$$slots:{default:!0}}),s(kt,Ct)},$$slots:{default:!0}})}),s(te,D)},$$slots:{default:!0}})});var ne=e(Kt,2);L(ne,()=>Ke,(Vt,Xt)=>{Xt(Vt,{children:(te,fe)=>{var D=Da();s(te,D)},$$slots:{default:!0}})}),s(J,tt)},$$slots:{default:!0}})}),a(l),s(i,l)},Dt=i=>{var l=tr(),W=j(l);{let D=I(()=>t($)?.status??"unknown"),K=I(()=>t($)?.alpha??1),et=I(()=>t($)?.sidecarAlive??!1);ma(W,{get healthStatus(){return t(D)},get alpha(){return t(K)},get winRate(){return t(X)},get sidecarAlive(){return t(et)},get training(){return t(Y)},get loading(){return t(C)},get trainingPairs(){return t(Pt)},get trainEpochs(){return t(m)},get trainLimit(){return t(g)},trainInterval:n,onTrain:S,onRefresh:B,onEpochsChange:it=>{b(m,it,!0),q(it,t(g))},onLimitChange:it=>{b(g,it,!0),q(t(m),it)}})}var F=e(W,2),U=r(F);{var J=D=>{var K=za(),et=j(K);Pe(et,{side:"baseline",get ndcg(){return t(at)},get topPicks(){return t(w)},get stats(){return t(ot)}});var it=e(et,2),kt=e(r(it),4),Lt=r(kt),Ct=r(Lt),Ot=r(Ct);a(Ct);var Mt=e(Ct,2),Yt=r(Mt);a(Mt),a(Lt);var Zt=e(Lt,2),Ft=r(Zt);a(Zt),a(kt),vt(2),a(it),N(zt=>{d(Ot,`${t(x).length??""} / 10 sessions`),d(Yt,`${zt??""}%`),ke(Ft,`width: ${t(H)*100}%`)},[()=>Math.round(t(H)*100)]),s(D,K)},_=D=>{var K=Wa(),et=j(K);Pe(et,{side:"baseline",get ndcg(){return t(at)},get topPicks(){return t(w)},get stats(){return t(ot)}});var it=e(et,2);Pe(it,{side:"predictor",get ndcg(){return t(z)},get topPicks(){return t(u)},get stats(){return t(St)},get offline(){return t(P)}}),s(D,K)};nt(U,D=>{t(y)?D(J):D(_,-1)})}a(F);var tt=e(F,2),Kt=r(tt);Aa(Kt,{get comparisons(){return t(x)}}),a(tt);var ne=e(tt,2),Vt=r(ne);{var Xt=D=>{var K=Ha(),et=r(K);a(K),N((it,kt)=>d(et,`trained v${t(O).step??""} -- ${t(O).samples_used??""} samples, loss ${it??""}, ${kt??""}s`),[()=>t(O).loss.toFixed(4),()=>(t(O).duration_ms/1e3).toFixed(1)]),s(D,K)},te=D=>{var K=Ga(),et=r(K,!0);a(K),N(()=>d(et,t(st))),s(D,K)};nt(Vt,D=>{t(O)?D(Xt):t(st)&&D(te,1)})}var fe=e(Vt,2);L(fe,()=>Xe,(D,K)=>{K(D,{get open(){return t(Z)},set open(et){b(Z,et,!0)},children:(et,it)=>{var kt=Xa(),Lt=j(kt);L(Lt,()=>Qe,(Ot,Mt)=>{Mt(Ot,{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 Ft=qa(),zt=j(Ft);{let Wt=I(()=>t(Z)?"0deg":"-90deg");oa(zt,{class:"w-3 h-3 transition-transform duration-200",get style(){return`transform: rotate(${t(Wt)??""})`}})}var me=e(zt,2);{var oe=Wt=>{ue(Wt,{variant:"destructive",class:"text-[8px] px-1 py-0 ml-1",children:(_e,Te)=>{vt();var dt=$t();N(()=>d(dt,t(M).length)),s(_e,dt)},$$slots:{default:!0}})};nt(me,Wt=>{t(M).length>0&&Wt(oe)})}s(Yt,Ft)},$$slots:{default:!0}})});var Ct=e(Lt,2);L(Ct,()=>Ue,(Ot,Mt)=>{Mt(Ot,{children:(Yt,Zt)=>{var Ft=Ua(),zt=r(Ft);{var me=dt=>{var _t=Ka(),It=e(r(_t),2),Ht=e(r(It));Bt(Ht,21,()=>t(x).slice(0,15),ht=>ht.sessionKey,(ht,E)=>{var bt=Ja(),Nt=r(bt),At=r(Nt);let Et;var Qt=e(At);a(Nt);var Tt=e(Nt),ee=r(Tt,!0);a(Tt);var Gt=e(Tt),he=r(Gt,!0);a(Gt);var Rt=e(Gt);let le;var de=r(Rt);a(Rt);var ae=e(Rt),be=r(ae,!0);a(ae);var ve=e(ae),ye=r(ve,!0);a(ve),a(bt),N(($e,Me,Fe,Ie,Ae)=>{Et=Ne(At,1,"w-2 h-2 inline-block rounded-full mr-1",null,Et,{"bg-[var(--sig-success)]":t(E).predictorWon,"bg-[var(--sig-danger)]":!t(E).predictorWon}),d(Qt,` ${$e??""}`),d(ee,Me),d(he,Fe),le=Ne(Rt,1,"text-right py-1 px-2",null,le,{"text-[var(--sig-success)]":t(E).margin>0,"text-[var(--sig-danger)]":t(E).margin<0}),d(de,`${t(E).margin>0?"+":""}${Ie??""}`),d(be,t(E).project??"-"),d(ye,Ae)},[()=>t(E).sessionKey.slice(0,8),()=>t(E).predictorNdcg.toFixed(3),()=>t(E).baselineNdcg.toFixed(3),()=>t(E).margin.toFixed(3),()=>k(t(E).createdAt)]),s(ht,bt)}),a(Ht),a(It),a(_t),s(dt,_t)};nt(zt,dt=>{t(x).length>0&&dt(me)})}var oe=e(zt,2);{var Wt=dt=>{var _t=Ya(),It=e(r(_t),2),Ht=e(r(It));Bt(Ht,21,()=>t(rt),ht=>ht.id,(ht,E)=>{var bt=Va(),Nt=r(bt),At=r(Nt);a(Nt);var Et=e(Nt),Qt=r(Et,!0);a(Et);var Tt=e(Et),ee=r(Tt,!0);a(Tt);var Gt=e(Tt),he=r(Gt);a(Gt);var Rt=e(Gt),le=r(Rt,!0);a(Rt);var de=e(Rt),ae=r(de,!0);a(de),a(bt),N((be,ve,ye,$e)=>{d(At,`v${t(E).modelVersion??""}`),d(Qt,be),d(ee,t(E).sampleCount),d(he,`${ve??""}s`),d(le,ye),d(ae,$e)},[()=>t(E).loss.toFixed(4),()=>(t(E).durationMs/1e3).toFixed(1),()=>t(E).canaryNdcg!==null?t(E).canaryNdcg.toFixed(3):"-",()=>k(t(E).createdAt)]),s(ht,bt)}),a(Ht),a(It),a(_t),s(dt,_t)};nt(oe,dt=>{t(rt).length>0&&dt(Wt)})}var _e=e(oe,2);{var Te=dt=>{var _t=Qa(),It=e(r(_t),2);Bt(It,21,()=>t(M).slice(0,10),ce,(Ht,ht)=>{var E=Za(),bt=r(E),Nt=r(bt,!0);a(bt);var At=e(bt,2),Et=r(At,!0);a(At);var Qt=e(At,2),Tt=r(Qt,!0);a(Qt),a(E),N(ee=>{d(Nt,ee),d(Et,t(ht).code),d(Tt,t(ht).message)},[()=>k(t(ht).timestamp)]),s(Ht,E)}),a(It),a(_t),s(dt,_t)};nt(_e,dt=>{t(M).length>0&&dt(Te)})}a(Ft),s(Yt,Ft)},$$slots:{default:!0}})}),s(et,kt)},$$slots:{default:!0}})}),a(ne),s(i,l)};nt(yt,i=>{t(C)&&!t(T)&&!t(xt)?i(gt):t(xt)&&!t(T)?i(jt,1):t(h)?i(Jt,2):i(Dt,-1)})}a(ut),a(lt),s(wt,lt),se()}export{pr as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{p as n,s as d,c,f as l,a as i,n as m,b as u,d as f,r as h}from"./Bh3nIh1p.js";import{I as $}from"./
|
|
1
|
+
import{p as n,s as d,c,f as l,a as i,n as m,b as u,d as f,r as h}from"./Bh3nIh1p.js";import{I as $}from"./Cn9W5J_c.js";function P(e,s){n(s,!0);let o=h(s,["$$slots","$$events","$$legacy"]);const t=[["path",{d:"M5 12h14"}],["path",{d:"M12 5v14"}]];$(e,d({name:"plus"},()=>o,{get iconNode(){return t},children:(r,v)=>{var a=c(),p=l(a);i(p,()=>s.children??m),u(r,a)},$$slots:{default:!0}})),f()}export{P};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{p as n,g as r,I as u,E as c,F as b,J as v,b as f,d as x,r as m,m as g}from"./Bh3nIh1p.js";import{c as p}from"./
|
|
1
|
+
import{p as n,g as r,I as u,E as c,F as b,J as v,b as f,d as x,r as m,m as g}from"./Bh3nIh1p.js";import{c as p}from"./Cn9W5J_c.js";var h=g("<textarea></textarea>");function y(i,a){n(a,!0);let s=r(a,"ref",15,null),o=r(a,"value",15),d=r(a,"data-slot",3,"textarea"),l=m(a,["$$slots","$$events","$$legacy","ref","value","class","data-slot"]);var e=h();u(e),c(e,t=>({"data-slot":d(),class:t,...l}),[()=>p("border-input placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 flex field-sizing-content min-h-16 w-full rounded-md border bg-transparent px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",a.class)]),b(e,t=>s(t),()=>s()),v(e,o),f(i,e),x()}export{y as T};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{p as qt,o as b,e as Dt,q as Ft,v as a,Q as Vt,i as e,j as n,t as l,h as D,f as F,w as ie,x as G,y as w,z as c,b as i,A as be,c as he,G as ye,l as o,k as J,B as ve,O as Ht,u as we,d as Gt,R as tt,m as f,P as Jt}from"./Bh3nIh1p.js";import{f as It,n as Kt,E as Ut,B as Be,A as rt}from"./
|
|
1
|
+
import{p as qt,o as b,e as Dt,q as Ft,v as a,Q as Vt,i as e,j as n,t as l,h as D,f as F,w as ie,x as G,y as w,z as c,b as i,A as be,c as he,G as ye,l as o,k as J,B as ve,O as Ht,u as we,d as Gt,R as tt,m as f,P as Jt}from"./Bh3nIh1p.js";import{f as It,n as Kt,E as Ut,B as Be,A as rt}from"./Cn9W5J_c.js";import{C as Xt}from"./DP4CvwXd.js";import{S as Qt}from"./CHRUdggZ.js";import{S as at,a as st,b as $e,c as nt}from"./D6cd2usj.js";import{P as Wt}from"./Bfse3fCo.js";import{T as Yt}from"./CjrslgAi.js";var Zt=f("<!> <!>",1),er=f("<!> <!>",1),tr=f("<!> <!>",1),rr=f("<!> <!>",1),ar=f('<span class="sig-eyebrow truncate max-w-[220px]"> </span>'),sr=f('<div class="py-[var(--space-xl)] text-center text-[var(--sig-text-muted)] font-[family-name:var(--font-display)] text-[length:var(--font-size-base)]">Loading logs...</div>'),nr=f('<div class="py-[var(--space-xl)] text-center text-[var(--sig-danger)] font-[family-name:var(--font-display)] text-[length:var(--font-size-base)]"> </div>'),or=f('<div class="py-[var(--space-xl)] text-center text-[var(--sig-text-muted)] font-[family-name:var(--font-display)] text-[length:var(--font-size-base)]">No logs found</div>'),lr=f('<span class="text-[var(--sig-text-muted)]"> </span>'),ir=f('<div class="mt-1 text-[11px] text-[var(--sig-text-muted)] whitespace-pre-wrap break-words"> </div>'),vr=f('<button type="button"><div class="flex flex-wrap items-baseline gap-[var(--space-xs)]"><span class="text-[var(--sig-text-muted)] shrink-0"> </span> <span> </span> <span> </span> <span class="text-[var(--sig-text-bright)] break-all"> </span> <!></div> <!></button>'),cr=f('<div class="font-[family-name:var(--font-mono)] text-[length:var(--font-size-sm)] leading-relaxed"><!></div>'),dr=f('<div class="text-[var(--sig-text-muted)]">Duration</div> <div class="text-[var(--sig-text-bright)]"> </div>',1),ur=f('<details class="mb-1 border border-[var(--sig-border)] bg-[var(--sig-surface)] rounded-lg"><summary class="cursor-pointer px-2 py-1 text-[10px] text-[var(--sig-text-muted)] hover:text-[var(--sig-text)] select-none"><span class="font-semibold text-[var(--sig-text)]"> </span> <span class="ml-1 opacity-60"> </span> <span class="ml-1 opacity-40"> </span></summary> <pre class="m-0 px-2 py-1 text-[10px] leading-relaxed whitespace-pre-wrap break-words text-[var(--sig-text)]"> </pre></details>'),gr=f('<div class="mb-1"><div class="text-[10px] text-[var(--sig-text-muted)] font-semibold mb-0.5"> </div> <pre class="m-0 p-2 text-[10px] leading-relaxed whitespace-pre-wrap break-words border border-[var(--sig-border)] rounded-lg bg-[var(--sig-surface)] text-[var(--sig-text)]"> </pre></div>'),fr=f('<div class="mb-[var(--space-sm)]"><div class="text-[var(--sig-text-muted)] text-[length:var(--font-size-xs)] uppercase tracking-[0.08em] mb-1">Readable output</div> <!></div>'),mr=f('<div class="grid grid-cols-[80px_1fr] gap-y-1 gap-x-2 mb-[var(--space-sm)]"><div class="text-[var(--sig-text-muted)]">Time</div> <div class="text-[var(--sig-text-bright)] break-all"> </div> <div class="text-[var(--sig-text-muted)]">Level</div> <div> </div> <div class="text-[var(--sig-text-muted)]">Category</div> <div> </div> <div class="text-[var(--sig-text-muted)]">Message</div> <div class="text-[var(--sig-text-bright)] break-all"> </div> <!></div> <!> <div class="rounded-lg border border-[var(--sig-border)] bg-[var(--sig-surface)] overflow-hidden"><div class="flex items-center justify-between gap-2 px-2 py-1 border-b border-[var(--sig-border)]"><div class="sig-eyebrow tracking-[0.08em]">Log details</div> <!></div> <pre class="m-0 p-2 text-[10px] leading-relaxed whitespace-pre-wrap break-all text-[var(--sig-text-muted)]"> </pre></div>',1),pr=f('<div class="text-[var(--sig-text-muted)]">Select a log entry to inspect details.</div>'),xr=f('<div class="flex flex-col flex-1 min-h-0 overflow-hidden"><!> <div class="flex flex-col flex-1 min-h-0 p-[var(--space-sm)] lg:p-[var(--space-md)]"><div class="flex-1 min-h-0 grid grid-cols-1 gap-[var(--space-md)] lg:grid-cols-[minmax(0,1.55fr)_minmax(0,1fr)]"><section class="min-h-0 flex flex-col rounded-lg border border-[var(--sig-border-strong)] bg-[var(--sig-surface-raised)] overflow-hidden"><div class="flex flex-wrap items-center gap-[var(--space-sm)] px-[var(--space-md)] py-[var(--space-sm)] border-b border-[var(--sig-border)] shrink-0"><!> <!> <label class="flex items-center gap-1.5 sig-label text-[var(--sig-text)] cursor-pointer"><!> Auto-scroll</label> <div class="ml-auto flex items-center gap-[var(--space-sm)] min-w-0"><!> <span><!></span> <!> <!></div></div> <!></section> <section class="log-details-window min-h-0 overflow-auto rounded-lg border border-[var(--sig-border-strong)] p-[var(--space-md)] font-[family-name:var(--font-mono)] text-[length:var(--font-size-sm)] svelte-q4aevr"><!></section></div></div></div>');function Sr(ot,lt){qt(lt,!0);const it=2e3,vt=3e4,ze={debug:0,info:1,warn:2,error:3};let m=b(Dt([])),Le=b(!1),ue=b(""),se=b(!1),W=b(!1),I=b(!1),Y=b(""),E=null,K=b(!0),Z=0,B=null,ee=b(""),te=b(""),M=b(!1),ge=b(!1),Ne=b(!1),ne=b(null),U=b(null),fe=b(!1),oe=null;const ct=24,dt=["daemon","api","memory","sync","git","watcher","embedding","embedding-tracker","harness","system","hooks","pipeline","skills","secrets","auth","session-tracker","summary-worker","document-worker","maintenance","scheduler","retention","llm"],ut=["debug","info","warn","error"];function Se(t){switch(t){case"error":return"log-level--error";case"warn":return"log-level--warn";case"debug":return"log-level--debug";default:return"log-level--info"}}function Oe(t){switch(t.toLowerCase()){case"watcher":return"log-category--watcher";case"daemon":return"log-category--daemon";case"pipeline":return"log-category--pipeline";case"system":return"log-category--system";case"embeding-tracker":case"embedding-tracker":return"log-category--embedding-tracker";case"document-worker":return"log-category--document-worker";case"maintenance":return"log-category--maintenance";case"git":return"log-category--git";case"schedular":case"scheduler":return"log-category--scheduler";case"retention":return"log-category--retention";default:return"log-category--default"}}function ce(t,r){return`${t.timestamp}-${t.level}-${t.category}-${r}`}function gt(){return e(m).length===0||!e(U)?!0:e(U)===ce(e(m)[e(m).length-1],e(m).length-1)}function Me(){if(e(m).length===0){a(U,null);return}a(U,ce(e(m)[e(m).length-1],e(m).length-1),!0)}function ft(){if(!e(U))return e(m).at(-1)??null;for(let t=0;t<e(m).length;t+=1)if(ce(e(m)[t],t)===e(U))return e(m)[t];return e(m).at(-1)??null}const L=we(ft);function je(t="smooth"){e(ne)&&e(ne).scrollTo({top:e(ne).scrollHeight,behavior:t})}function ke(t="auto"){oe===null&&tt().then(()=>{oe===null&&(oe=requestAnimationFrame(()=>{oe=null,e(M)&&je(t)}))})}function mt(t){return t?t.scrollTop+t.clientHeight>=t.scrollHeight-ct:!0}async function me(){a(Le,!0),a(ue,"");try{const t=new URLSearchParams({limit:"200"});e(ee)&&t.set("level",e(ee)),e(te)&&t.set("category",e(te));const s=await(await fetch(`/api/logs?${t}`)).json();a(m,s.logs||[],!0),Me(),e(Ne)?e(M)&&ke("auto"):(a(Ne,!0),tt().then(()=>je("auto")))}catch{a(ue,"Failed to fetch logs")}finally{a(Le,!1)}}function qe(){e(K)&&(B!==null&&(clearTimeout(B),B=null),E&&E.close(),a(I,!0),Z===0&&(a(W,!1),a(Y,"")),E=new EventSource("/api/logs/stream"),E.onmessage=t=>{try{const r=JSON.parse(t.data);if(r.type==="connected"){Z=0,a(W,!1),a(I,!1),a(se,!0),a(Y,"");return}e(I)&&(a(I,!1),a(se,!0));const s=typeof r.level=="string"?ze[r.level]:void 0,g=ze[e(ee)];if(e(ee)&&(s??-1)<(g??-1)||e(te)&&r.category!==e(te))return;const p=gt();a(m,[...e(m).slice(-499),r],!0),p&&Me(),e(M)&&ke("auto")}catch{}},E.onerror=()=>{if(!e(K)||(a(se,!1),a(I,!1),E?.close(),E=null,B!==null))return;const t=Math.min(it*2**Math.min(Z,10),vt);Z=Math.min(Z+1,10),a(W,!0),a(Y,`Stream lost — reconnecting in ${t/1e3}s`),B=setTimeout(()=>{B=null,qe()},t)})}function pt(){a(K,!1),a(se,!1),a(I,!1),a(W,!1),a(Y,""),Z=0,B!==null&&(clearTimeout(B),B=null),E&&(E.close(),E=null)}function De(){a(K,!0),Z=0,a(W,!1),a(Y,""),qe()}function xt(){if(e(K)){pt();return}De()}function _t(t){return t.split("T")[1]?.slice(0,8)||""}function bt(t){try{return new Date(t).toLocaleString()}catch{return t}}function Fe(t){return JSON.stringify(t,null,2)}function j(t){return typeof t=="string"&&t.length>0?t:null}function ht(t){return Array.isArray(t)?t.filter(r=>typeof r=="string"&&r.length>0):[]}function Ve(t){const r=t.data;if(!r)return[];const s=[],g=j(r.inject)??j(r.injectPreview);g&&s.push({label:"Inject",content:g});const p=j(r.prompt)??j(r.promptPreview);p&&s.push({label:"Prompt",content:p});const A=j(r.summaryPrompt)??j(r.summaryPromptPreview);A&&s.push({label:"Summary Prompt",content:A});const S=j(r.summary)??j(r.summaryPreview);S&&s.push({label:"Summary",content:S});const $=j(r.transcript)??j(r.transcriptPreview);$&&s.push({label:"Transcript",content:$});const v=ht(r.factsPreview);if(v.length>0){const d=v.map(k=>`- ${k}`).join(`
|
|
2
2
|
`);s.push({label:"Facts",content:d})}return s}function He(t){const r=Ve(t);if(r.length===0)return"";const s=r.map(g=>g.content).join(`
|
|
3
3
|
|
|
4
4
|
`).trim();return s.length<=220?s:`${s.slice(0,220)}...`}async function yt(){if(e(L))try{await navigator.clipboard.writeText(Fe(e(L))),a(fe,!0),setTimeout(()=>{a(fe,!1)},1200)}catch{a(fe,!1)}}Ft(()=>(me(),De(),()=>{a(K,!1),oe!==null&&cancelAnimationFrame(oe),B!==null&&clearTimeout(B),E&&E.close()})),Vt(()=>{const t=e(ne);if(!t)return;const r=()=>{const s=mt(t);if(e(M)&&!s){a(M,!1),a(ge,!0);return}!e(M)&&e(ge)&&s&&(a(M,!0),a(ge,!1))};return t.addEventListener("scroll",r,{passive:!0}),r(),()=>{t.removeEventListener("scroll",r)}});var Pe=xr(),Ge=n(Pe);Wt(Ge,{title:"Logs",children:(t,r)=>{Yt(t,{group:"engine",get tabs(){return Ut},get activeTab(){return Kt.activeTab},onselect:(s,g)=>It(g)})}});var Je=l(Ge,2),Ie=n(Je),Te=n(Ie),Ce=n(Te),Ke=n(Ce);D(Ke,()=>nt,(t,r)=>{r(t,{type:"single",get value(){return e(ee)},onValueChange:s=>{a(ee,s??"",!0),me()},children:(s,g)=>{var p=er(),A=F(p);D(A,()=>at,($,v)=>{v($,{class:"font-[family-name:var(--font-mono)] text-[length:var(--font-size-sm)] bg-[var(--sig-surface-raised)] border-[var(--sig-border-strong)] text-[var(--sig-text-bright)] rounded-lg h-auto py-1 px-2 min-w-[100px]",children:(d,k)=>{ie();var h=G();w(()=>c(h,e(ee)||"All levels")),i(d,h)},$$slots:{default:!0}})});var S=l(A,2);D(S,()=>st,($,v)=>{v($,{class:"bg-[var(--sig-surface-raised)] border-[var(--sig-border-strong)] rounded-lg",children:(d,k)=>{var h=Zt(),u=F(h);D(u,()=>$e,(x,y)=>{y(x,{value:"",label:"All levels"})});var X=l(u,2);be(X,17,()=>ut,ye,(x,y)=>{var R=he(),V=F(R);D(V,()=>$e,(q,Q)=>{Q(q,{get value(){return e(y)},get label(){return e(y)}})}),i(x,R)}),i(d,h)},$$slots:{default:!0}})}),i(s,p)},$$slots:{default:!0}})});var Ue=l(Ke,2);D(Ue,()=>nt,(t,r)=>{r(t,{type:"single",get value(){return e(te)},onValueChange:s=>{a(te,s??"",!0),me()},children:(s,g)=>{var p=rr(),A=F(p);D(A,()=>at,($,v)=>{v($,{class:"font-[family-name:var(--font-mono)] text-[length:var(--font-size-sm)] bg-[var(--sig-surface-raised)] border-[var(--sig-border-strong)] text-[var(--sig-text-bright)] rounded-lg h-auto py-1 px-2 min-w-[100px]",children:(d,k)=>{ie();var h=G();w(()=>c(h,e(te)||"All categories")),i(d,h)},$$slots:{default:!0}})});var S=l(A,2);D(S,()=>st,($,v)=>{v($,{class:"bg-[var(--sig-surface-raised)] border-[var(--sig-border-strong)] rounded-lg",children:(d,k)=>{var h=tr(),u=F(h);D(u,()=>$e,(x,y)=>{y(x,{value:"",label:"All categories"})});var X=l(u,2);be(X,17,()=>dt,ye,(x,y)=>{var R=he(),V=F(R);D(V,()=>$e,(q,Q)=>{Q(q,{get value(){return e(y)},get label(){return e(y)}})}),i(x,R)}),i(d,h)},$$slots:{default:!0}})}),i(s,p)},$$slots:{default:!0}})});var Ee=l(Ue,2),wt=n(Ee);Xt(wt,{get checked(){return e(M)},onCheckedChange:t=>{a(M,t===!0),a(ge,!1),e(M)&&ke("auto")},class:"rounded-lg"}),ie(),o(Ee);var Xe=l(Ee,2),Qe=n(Xe);{var $t=t=>{var r=ar(),s=n(r,!0);o(r),w(()=>c(s,e(Y))),i(t,r)};J(Qe,t=>{e(Y)&&t($t)})}var pe=l(Qe,2),Lt=n(pe);{var St=t=>{var r=G("● Live");i(t,r)},kt=t=>{var r=G("↺ Reconnecting");i(t,r)},Pt=t=>{var r=G("◌ Connecting");i(t,r)},Tt=t=>{var r=G("● Offline");i(t,r)};J(Lt,t=>{e(se)?t(St):e(W)?t(kt,1):e(I)?t(Pt,2):t(Tt,-1)})}o(pe);var We=l(pe,2);{let t=we(()=>e(K)?"Disconnect stream":"Reconnect stream");Be(We,{variant:"outline",size:"sm",class:"sig-label px-2 py-1 h-auto hover:border-[var(--sig-border-strong)] hover:text-[var(--sig-text-bright)]",onclick:xt,get title(){return e(t)},children:(r,s)=>{ie();var g=G();w(()=>c(g,e(K)?"Disconnect":"Reconnect")),i(r,g)},$$slots:{default:!0}})}var Ct=l(We,2);Be(Ct,{variant:"outline",size:"sm",class:"sig-label px-2 py-1 h-auto hover:border-[var(--sig-border-strong)] hover:text-[var(--sig-text-bright)]",onclick:me,title:"Reload logs",children:(t,r)=>{ie();var s=G();w(()=>c(s,rt.Refresh)),i(t,s)},$$slots:{default:!0}}),o(Xe),o(Ce);var Et=l(Ce,2);Qt(Et,{class:"min-h-0 flex-1",get viewportRef(){return e(ne)},set viewportRef(t){a(ne,t,!0)},children:(t,r)=>{var s=cr(),g=n(s);{var p=v=>{var d=sr();i(v,d)},A=v=>{var d=nr(),k=n(d,!0);o(d),w(()=>c(k,e(ue))),i(v,d)},S=v=>{var d=or();i(v,d)},$=v=>{var d=he(),k=F(d);be(k,17,()=>e(m),ye,(h,u,X)=>{var x=vr(),y=n(x),R=n(y),V=n(R,!0);o(R);var q=l(R,2),Q=n(q,!0);o(q);var le=l(q,2),P=n(le);o(le);var T=l(le,2),z=n(T,!0);o(T);var re=l(T,2);{var H=N=>{var _=lr(),C=n(_);o(_),w(()=>c(C,`(${e(u).duration??""}ms)`)),i(N,_)};J(re,N=>{e(u).duration!==void 0&&N(H)})}o(y);var xe=l(y,2);{var Ae=N=>{var _=ir(),C=n(_,!0);o(_),w(O=>c(C,O),[()=>He(e(u))]),i(N,_)},Re=we(()=>He(e(u)));J(xe,N=>{e(Re)&&N(Ae)})}o(x),w((N,_,C,O,ae)=>{ve(x,1,N,"svelte-q4aevr"),c(V,_),ve(q,1,C,"svelte-q4aevr"),c(Q,O),ve(le,1,ae,"svelte-q4aevr"),c(P,`[${e(u).category??""}]`),c(z,e(u).message)},[()=>`log-row ${Se(e(u).level)} w-full text-left px-[var(--space-md)] py-1.5 border-b border-[var(--sig-border)] hover:bg-[var(--sig-surface)] cursor-pointer ${e(U)===ce(e(u),X)?"bg-[var(--sig-surface)] border-[var(--sig-border-strong)]":""}`,()=>_t(e(u).timestamp),()=>`font-semibold shrink-0 min-w-[40px] ${Se(e(u).level)}`,()=>e(u).level.toUpperCase(),()=>`log-category ${Oe(e(u).category)} shrink-0`]),Ht("click",x,()=>{a(U,ce(e(u),X),!0)}),i(h,x)}),i(v,d)};J(g,v=>{e(Le)?v(p):e(ue)?v(A,1):e(m).length===0?v(S,2):v($,-1)})}o(s),i(t,s)},$$slots:{default:!0}}),o(Te);var Ye=l(Te,2),At=n(Ye);{var Rt=t=>{const r=we(()=>Ve(e(L)));var s=mr(),g=F(s),p=l(n(g),2),A=n(p,!0);o(p);var S=l(p,4),$=n(S,!0);o(S);var v=l(S,4),d=n(v,!0);o(v);var k=l(v,4),h=n(k,!0);o(k);var u=l(k,2);{var X=P=>{var T=dr(),z=l(F(T),2),re=n(z);o(z),w(()=>c(re,`${e(L).duration??""}ms`)),i(P,T)};J(u,P=>{e(L).duration!==void 0&&P(X)})}o(g);var x=l(g,2);{var y=P=>{var T=fr(),z=l(n(T),2);be(z,17,()=>e(r),ye,(re,H)=>{var xe=he(),Ae=F(xe);{var Re=_=>{var C=ur(),O=n(C),ae=n(O),_e=n(ae,!0);o(ae);var de=l(ae,2),zt=n(de);o(de);var Ze=l(de,2),Nt=n(Ze);o(Ze),o(O);var et=l(O,2),Ot=n(et,!0);o(et),o(C),w((Mt,jt)=>{c(_e,e(H).label),c(zt,`(${Mt??""} chars)`),c(Nt,`${jt??""}...`),c(Ot,e(H).content)},[()=>e(H).content.length.toLocaleString(),()=>e(H).content.slice(0,100).replace(/\n/g," ")]),i(_,C)},N=_=>{var C=gr(),O=n(C),ae=n(O,!0);o(O);var _e=l(O,2),de=n(_e,!0);o(_e),o(C),w(()=>{c(ae,e(H).label),c(de,e(H).content)}),i(_,C)};J(Ae,_=>{e(H).content.length>500?_(Re):_(N,-1)})}i(re,xe)}),o(T),i(P,T)};J(x,P=>{e(r).length>0&&P(y)})}var R=l(x,2),V=n(R),q=l(n(V),2);Be(q,{variant:"outline",size:"sm",class:"sig-eyebrow px-2 py-1 h-auto hover:border-[var(--sig-border-strong)] hover:text-[var(--sig-text-bright)]",onclick:yt,children:(P,T)=>{ie();var z=G();w(()=>c(z,e(fe)?"Copied":rt.CopyJson)),i(P,z)},$$slots:{default:!0}}),o(V);var Q=l(V,2),le=n(Q,!0);o(Q),o(R),w((P,T,z,re)=>{c(A,P),ve(S,1,T,"svelte-q4aevr"),c($,e(L).level),ve(v,1,z,"svelte-q4aevr"),c(d,e(L).category),c(h,e(L).message),c(le,re)},[()=>bt(e(L).timestamp),()=>`uppercase ${Se(e(L).level)}`,()=>`log-category ${Oe(e(L).category)}`,()=>Fe(e(L))]),i(t,s)},Bt=t=>{var r=pr();i(t,r)};J(At,t=>{e(L)?t(Rt):t(Bt,-1)})}o(Ye),o(Ie),o(Je),o(Pe),w(()=>ve(pe,1,`sig-label font-medium ${e(se)?"text-[var(--sig-success)] [animation:pulse_2s_infinite]":e(W)||e(I)?"text-[var(--sig-accent)] [animation:pulse_2s_infinite]":"text-[var(--sig-danger)]"}`,"svelte-q4aevr")),i(ot,Pe),Gt()}Jt(["click"]);export{Sr as default};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{p as Ae,o as k,e as xe,q as Ge,j as n,t as d,k as O,i as r,l as a,b as i,d as Oe,v as g,f as be,w as H,x as m,y as h,z as _,A as he,B as $e,m as x,u as Y,h as oe,s as qe,D as Le}from"./Bh3nIh1p.js";import{B as Ve}from"./
|
|
1
|
+
import{p as Ae,o as k,e as xe,q as Ge,j as n,t as d,k as O,i as r,l as a,b as i,d as Oe,v as g,f as be,w as H,x as m,y as h,z as _,A as he,B as $e,m as x,u as Y,h as oe,s as qe,D as Le}from"./Bh3nIh1p.js";import{B as Ve}from"./3zVBfrdZ.js";import{f as Je,n as Ke,E as Qe,g as Ue,a as We,B as q,r as Xe,t as p,b as Ye,s as Ze,d as er}from"./Cn9W5J_c.js";import{P as rr,a as sr,b as tr}from"./CkKq6V9e.js";import{P as ar}from"./Bfse3fCo.js";import{T as nr}from"./CjrslgAi.js";var ir=x('<div class="flex flex-1 items-center justify-center sig-label">Loading connectors...</div>'),or=x(`<div class="flex items-center gap-3 px-3 py-2.5
|
|
2
2
|
border border-[var(--sig-border)]
|
|
3
3
|
bg-[var(--sig-surface-raised)]"><span></span> <div class="flex flex-col gap-0.5 min-w-0 flex-1"><span class="text-[12px] font-medium text-[var(--sig-text-bright)]
|
|
4
4
|
font-[family-name:var(--font-display)] tracking-[0.04em]"> </span> <span class="sig-eyebrow truncate"> </span></div> <div class="flex flex-col items-end gap-0.5 shrink-0"><span> </span> <span class="sig-eyebrow"><!></span></div></div>`),lr=x(`<div class="flex items-center justify-center py-8
|