mirror of
https://github.com/samvallad33/vestige.git
synced 2026-07-26 23:51:02 +02:00
Turn all 17 sparse organs from text-on-black voids into full-bleed, moving, bioluminescent WebGPU fields. Each cell maps to a real backend fact; verified live on the real brain with a decoded fill% + motion + zero-error probe. Foundation: one reusable LivingFieldPass (src/lib/observatory/field/) does splat -> separable-blur (render passes) -> membrane base coat -> HDR cells with orbital drift and a CPU pick-mirror. Each organ writes a ~20-line data->cells mapper (cell-layout.ts: layoutGalaxy / layoutRings / FIELD_HUE). Organs brought alive (fill% before -> after, all zero WebGPU errors): stats 0.8->80.9, observatory 10.8->81.4, graph 12.3->82.4, memories ->78.4, blackbox 18.2->83.3, contradictions 1.6->69.6, dreams 0.3->64.5, settings 2.7->76.4, reasoning 2.7->39.2, patterns 7.1->45.6, activation 10->64.9, feed ->89, explore ->83.3, intentions ->66.6, importance ->73.7, memory-prs ->74.4, schedule ->37.1. Backend surfaces: add api.memoryChangelog() + ChangelogResponse; surface suppress/unsuppress on the memories field (shift/alt-click -> scar). Tests: palace-launch-gate now asserts fillPct>30 + isAnimating (not just non-black), with a longer settle for reasoning's deep_reference and a raised timeout for the curated tour. all-routes-smoke treats settings as the WebGPU field it now is. Gates green: check 0/0, build ok, palace-launch-gate 22/22 + tour, all-routes-smoke 20/20. Protected work untouched: MemoryCinema, graph/cinema, observatory scene shaders, node-renderer, palace-map. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
86 lines
36 KiB
JavaScript
86 lines
36 KiB
JavaScript
import"../chunks/Bzak7iHL.js";import{s as M,w as at,d as Ue,b as oe,e as Ye,o as st,c as wt,g as ut}from"../chunks/DAau0uzT.js";import{aS as rt,aH as ve,a as b,X as s,c as a,r as t,Y as P,f as w,p as Xe,af as ce,g as e,b as Qe,d as le,e as $t,s as k,u as Y,aT as it}from"../chunks/CGq8RnJq.js";import{i as G,b as Mt}from"../chunks/Ccqjq5DS.js";import{e as Ne,s as Ce,i as Re,r as Ct}from"../chunks/DqfV0sZu.js";import{s as ot}from"../chunks/BbCqB9Us.js";import{s as re}from"../chunks/uCQU803Y.js";import{b as Tt}from"../chunks/DGM4cicq.js";import{a as pe,s as We}from"../chunks/DV6OI5iy.js";import{p as St}from"../chunks/CbBCXwzm.js";import{o as At,g as lt}from"../chunks/DJDK-KWF.js";import{b as ke}from"../chunks/DY7cP31Q.js";import{s as mt,e as ft,c as ht,d as gt,w as dt,u as Et,a as Dt,f as Nt}from"../chunks/Ch9vNiEl.js";import{i as jt}from"../chunks/BfiOPhbz.js";import{s as bt}from"../chunks/HFGAk8XQ.js";import{E as It}from"../chunks/CcUbQ_Wl.js";import{a as qe}from"../chunks/D35IQVqe.js";import{I as Le}from"../chunks/CKbQrCJw.js";var Ft=w('<div class="flex items-center gap-2 rounded-full border border-[#A33FFF]/40 bg-[#A33FFF]/10 px-3 py-1.5 text-xs shadow-[0_0_12px_rgba(163,63,255,0.15)]" title="Memories currently under top-down suppression (Anderson 2025 SIF)"><div class="relative flex h-2 w-2 items-center justify-center"><span class="absolute inline-flex h-full w-full animate-ping rounded-full bg-[#A33FFF] opacity-75"></span> <span class="relative inline-flex h-2 w-2 rounded-full bg-[#A33FFF]"></span></div> <span class="font-medium text-[#E4C8FF]"> </span></div>');function Lt(d){const l=()=>pe(mt,"$suppressedCount",v),[v,o]=We();var h=rt(),$=ve(h);{var _=R=>{var S=Ft(),C=s(a(S),2),x=a(C);t(C),t(S),P(()=>M(x,`Actively forgetting ${l()??""} ${l()===1?"memory":"memories"}`)),b(R,S)};G($,R=>{l()>0&&R(_)})}b(d,h),o()}const Ze=4,Rt=5500,Ot=1500;function Vt(){const{subscribe:d,update:l}=at([]);let v=1,o=0;const h=new Map,$=new Map,_=new Map;function R(i,u){_.set(i,Date.now());const p=setTimeout(()=>{h.delete(i),_.delete(i),C(i)},u);h.set(i,p)}function S(i){const u=v++,p=Date.now(),g={id:u,createdAt:p,...i};l(n=>{const c=[g,...n];if(c.length>Ze){for(const y of c.slice(Ze)){const B=h.get(y.id);B&&clearTimeout(B),h.delete(y.id),$.delete(y.id),_.delete(y.id)}return c.slice(0,Ze)}return c}),R(u,i.dwellMs)}function C(i){const u=h.get(i);u&&(clearTimeout(u),h.delete(i)),$.delete(i),_.delete(i),l(p=>p.filter(g=>g.id!==i))}function x(i,u){const p=h.get(i);if(!p)return;clearTimeout(p),h.delete(i);const g=_.get(i)??Date.now(),n=Date.now()-g,c=Math.max(200,u-n);$.set(i,{remaining:c})}function f(i){const u=$.get(i);u&&($.delete(i),R(i,u.remaining))}function N(){for(const i of h.values())clearTimeout(i);h.clear(),$.clear(),_.clear(),l(()=>[])}function H(i){const u=It[i.type]??"#818CF8",p=i.data;switch(i.type){case"DreamCompleted":{const g=Number(p.memories_replayed??0),n=Number(p.connections_found??0),c=Number(p.insights_generated??0),y=Number(p.duration_ms??0),B=[];return B.push(`Replayed ${g} ${g===1?"memory":"memories"}`),n>0&&B.push(`${n} new connection${n===1?"":"s"}`),c>0&&B.push(`${c} insight${c===1?"":"s"}`),{type:i.type,title:"Dream consolidated",body:`${B.join(" · ")} in ${(y/1e3).toFixed(1)}s`,color:u,dwellMs:7e3}}case"ConsolidationCompleted":{const g=Number(p.nodes_processed??0),n=Number(p.decay_applied??0),c=Number(p.embeddings_generated??0),y=Number(p.duration_ms??0),B=[];return n>0&&B.push(`${n} decayed`),c>0&&B.push(`${c} embedded`),{type:i.type,title:"Consolidation swept",body:`${g} node${g===1?"":"s"}${B.length?" · "+B.join(" · "):""} in ${(y/1e3).toFixed(1)}s`,color:u,dwellMs:6e3}}case"ConnectionDiscovered":{const g=Date.now();if(g-o<Ot)return null;o=g;const n=String(p.connection_type??"link"),c=Number(p.weight??0);return{type:i.type,title:"Bridge discovered",body:`${n} · weight ${c.toFixed(2)}`,color:u,dwellMs:4500}}case"MemoryPromoted":{const g=Number(p.new_retention??0);return{type:i.type,title:"Memory promoted",body:`retention ${(g*100).toFixed(0)}%`,color:u,dwellMs:4500}}case"MemoryDemoted":{const g=Number(p.new_retention??0);return{type:i.type,title:"Memory demoted",body:`retention ${(g*100).toFixed(0)}%`,color:u,dwellMs:4500}}case"MemorySuppressed":{const g=Number(p.suppression_count??0),n=Number(p.estimated_cascade??0);return{type:i.type,title:"Forgetting",body:n>0?`suppression #${g} · Rac1 cascade ~${n} neighbors`:`suppression #${g}`,color:u,dwellMs:5500}}case"MemoryUnsuppressed":{const g=Number(p.remaining_count??0);return{type:i.type,title:"Recovered",body:g>0?`${g} suppression${g===1?"":"s"} remain`:"fully unsuppressed",color:u,dwellMs:5e3}}case"Rac1CascadeSwept":{const g=Number(p.seeds??0),n=Number(p.neighbors_affected??0);return{type:i.type,title:"Rac1 cascade",body:`${g} seed${g===1?"":"s"} · ${n} dendritic spine${n===1?"":"s"} pruned`,color:u,dwellMs:6e3}}case"MemoryDeleted":return{type:i.type,title:"Memory deleted",body:String(p.id??"").slice(0,8),color:u,dwellMs:4e3};case"HookVerdictRecorded":{const g=String(p.verdict??"NOTE"),n=String(p.reason??"Sanhedrin receipt updated");return{type:i.type,title:`Sanhedrin ${g}`,body:n,color:u,dwellMs:g==="VETO"?8e3:Rt}}case"Heartbeat":case"SearchPerformed":case"RetentionDecayed":case"ActivationSpread":case"ImportanceScored":case"MemoryCreated":case"MemoryUpdated":case"DreamStarted":case"DreamProgress":case"ConsolidationStarted":case"Connected":return null;default:return null}}let O=null;return ft.subscribe(i=>{if(i.length===0)return;const u=[];for(const p of i){if(p===O)break;u.push(p)}if(u.length!==0){O=i[0];for(let p=u.length-1;p>=0;p--){const g=H(u[p]);g&&S(g)}}}),{subscribe:d,dismiss:C,clear:N,pauseDwell:x,resumeDwell:f,push:S}}const De=Vt();var Bt=w('<button type="button" class="toast-item svelte-pry2ep"><div class="toast-accent svelte-pry2ep" aria-hidden="true"></div> <div class="toast-body svelte-pry2ep"><div class="toast-head svelte-pry2ep"><span class="toast-icon svelte-pry2ep" aria-hidden="true"> </span> <span class="toast-title svelte-pry2ep"> </span></div> <div class="toast-sub svelte-pry2ep"> </div></div> <div class="toast-progress svelte-pry2ep" aria-hidden="true"><div class="toast-progress-fill svelte-pry2ep"></div></div></button>'),Pt=w('<div class="toast-layer svelte-pry2ep" aria-live="polite" aria-atomic="false"></div>');function Ht(d,l){Xe(l,!1);const v=()=>pe(De,"$toasts",o),[o,h]=We(),$={DreamCompleted:"✦",ConsolidationCompleted:"◉",ConnectionDiscovered:"⟷",MemoryPromoted:"↑",MemoryDemoted:"↓",MemorySuppressed:"◬",MemoryUnsuppressed:"◉",Rac1CascadeSwept:"✺",MemoryDeleted:"✕",HookVerdictRecorded:"⚑"};function _(x){return $[x]??"◆"}function R(x){De.dismiss(x.id)}function S(x,f){(x.key==="Enter"||x.key===" ")&&(x.preventDefault(),De.dismiss(f.id))}jt();var C=Pt();Ne(C,5,v,x=>x.id,(x,f)=>{var N=Bt(),H=s(a(N),2),O=a(H),i=a(O),u=a(i,!0);t(i);var p=s(i,2),g=a(p,!0);t(p),t(O);var n=s(O,2),c=a(n,!0);t(n),t(H),ce(2),t(N),P(y=>{Ce(N,"aria-label",`${e(f).title??""}: ${e(f).body??""}. Click to dismiss.`),bt(N,`--toast-color: ${e(f).color??""}; --toast-dwell: ${e(f).dwellMs??""}ms;`),M(u,y),M(g,e(f).title),M(c,e(f).body)},[()=>_(e(f).type)]),oe("click",N,()=>R(e(f))),oe("keydown",N,y=>S(y,e(f))),Ye("mouseenter",N,()=>De.pauseDwell(e(f).id,e(f).dwellMs)),Ye("mouseleave",N,()=>De.resumeDwell(e(f).id)),Ye("focus",N,()=>De.pauseDwell(e(f).id,e(f).dwellMs)),Ye("blur",N,()=>De.resumeDwell(e(f).id)),b(x,N)}),t(C),b(d,C),Qe(),h()}Ue(["click","keydown"]);function Oe(d){const l=d.data;if(!l||typeof l!="object")return null;const v=l.timestamp??l.at??l.occurred_at;if(v==null)return null;if(typeof v=="number")return Number.isFinite(v)?v>1e12?v:v*1e3:null;if(typeof v!="string")return null;const o=Date.parse(v);return Number.isFinite(o)?o:null}const et=10,xt=3e4,zt=et*xt;function Kt(d,l){const v=l-zt,o=new Array(et).fill(0);for(const $ of d){if($.type==="Heartbeat")continue;const _=Oe($);if(_===null||_<v||_>l)continue;const R=Math.min(et-1,Math.floor((_-v)/xt));o[R]+=1}const h=Math.max(1,...o);return o.map($=>({count:$,ratio:$/h}))}function qt(d,l){const v=l-864e5;for(const o of d){if(o.type!=="DreamCompleted")continue;return(Oe(o)??l)>=v?o:null}return null}function Wt(d){if(!d||!d.data)return null;const l=d.data,v=typeof l.insights_generated=="number"?l.insights_generated:typeof l.insightsGenerated=="number"?l.insightsGenerated:null;return v!==null&&Number.isFinite(v)?v:null}function Gt(d,l){let v=null,o=null;for(const R of d)if(!v&&R.type==="DreamStarted"&&(v=R),!o&&R.type==="DreamCompleted"&&(o=R),v&&o)break;if(!v)return!1;const h=Oe(v)??l,$=l-300*1e3;return h<$?!1:o?(Oe(o)??l)<h:!0}function Yt(d){const l=Math.max(0,d),v=Math.floor(l/1e3);if(v<60)return`${v}s ago`;const o=Math.floor(v/60);if(o<60)return`${o}m ago`;const h=Math.floor(o/60);return h<24?`${h}h ago`:`${Math.floor(h/24)}d ago`}function Ut(d,l,v=1e4){const o=l-v;for(const h of d){if(h.type!=="MemorySuppressed")continue;return(Oe(h)??l)>=o}return!1}var Xt=w('<span class="font-semibold tabular-nums text-decay svelte-1kk3799"> </span> <span class="text-muted svelte-1kk3799">at risk</span>',1),Qt=w('<span class="text-muted tabular-nums svelte-1kk3799">0</span> <span class="text-muted svelte-1kk3799">at risk</span>',1),Zt=w('<span class="text-muted/60 svelte-1kk3799">—</span> <span class="text-muted svelte-1kk3799">at risk</span>',1),Jt=w('<span></span> <span> </span> <span class="text-muted svelte-1kk3799">intentions</span>',1),ea=w('<span class="text-muted/60 svelte-1kk3799">— intentions</span>'),ta=w('<span class="text-muted/60 svelte-1kk3799">·</span> <span class="text-text/80 tabular-nums svelte-1kk3799"> </span> <span class="text-muted svelte-1kk3799">insights</span>',1),aa=w('<span class="text-dream/80 svelte-1kk3799">✦</span> <span class="text-muted svelte-1kk3799">Last dream:</span> <span class="text-text/80 svelte-1kk3799"> </span> <!>',1),sa=w('<span class="text-muted svelte-1kk3799">No recent dream</span>'),ra=w('<div class="w-[3px] rounded-sm bg-synapse/70 svelte-1kk3799"></div>'),na=w('<span class="text-warning svelte-1kk3799">telemetry unavailable</span>'),ia=w('<span class="text-muted/60 svelte-1kk3799">·</span> <span class="tabular-nums text-warning svelte-1kk3799"> </span> <span class="text-muted svelte-1kk3799">fail-open</span>',1),oa=w('<span class="tabular-nums text-decay svelte-1kk3799"> </span> <span class="text-muted svelte-1kk3799">vetoes</span> <span class="text-muted/60 svelte-1kk3799">·</span> <span class="tabular-nums text-synapse-glow svelte-1kk3799"> </span> <span class="text-muted svelte-1kk3799">appeals</span> <!>',1),la=w('<div class="strip-divider svelte-1kk3799" aria-hidden="true"></div> <div class="strip-item svelte-1kk3799" title="A Dream cycle is currently in progress"><span class="relative inline-flex h-2 w-2 items-center justify-center svelte-1kk3799"><span class="absolute inline-flex h-full w-full animate-ping rounded-full bg-dream opacity-75 svelte-1kk3799"></span> <span class="relative inline-flex h-2 w-2 rounded-full bg-dream svelte-1kk3799"></span></span> <span class="font-semibold tracking-wider text-dream-glow svelte-1kk3799">DREAMING...</span></div>',1),da=w('<div class="strip-item hidden md:inline-flex svelte-1kk3799" title="A memory was just suppressed (Sanhedrin veto)"><span class="inline-flex h-2 w-2 animate-pulse rounded-full bg-decay shadow-[0_0_10px_rgba(239,68,68,0.7)] svelte-1kk3799"></span> <span class="font-medium text-decay svelte-1kk3799">Veto triggered</span></div>'),ca=w('<div aria-label="Ambient cognitive vitals"><div class="strip-item svelte-1kk3799" title="Total memories and average retention strength"><span class="relative inline-flex h-2 w-2 items-center justify-center svelte-1kk3799"><span></span> <span></span></span> <span class="text-text/80 tabular-nums svelte-1kk3799"> </span> <span class="text-muted svelte-1kk3799">memories</span> <span class="text-muted/60 svelte-1kk3799">·</span> <span> </span> <span class="text-muted svelte-1kk3799">avg retention</span></div> <div class="strip-divider svelte-1kk3799" aria-hidden="true"></div> <div class="strip-item svelte-1kk3799" title="Memories with retention below 30%"><!></div> <div class="strip-divider hidden md:block svelte-1kk3799" aria-hidden="true"></div> <div class="strip-item hidden md:inline-flex svelte-1kk3799" title="Active intentions (prospective memory)"><!></div> <div class="strip-divider hidden md:block svelte-1kk3799" aria-hidden="true"></div> <div class="strip-item hidden md:inline-flex svelte-1kk3799" title="Most recent Dream cycle completion"><!></div> <div class="strip-divider hidden md:block svelte-1kk3799" aria-hidden="true"></div> <div class="strip-item hidden md:inline-flex svelte-1kk3799" title="Event throughput over the last 5 minutes (events per 30s)"><span class="text-muted svelte-1kk3799">activity</span> <div class="flex h-4 items-end gap-[2px] svelte-1kk3799" aria-hidden="true"></div></div> <div class="strip-divider hidden lg:block svelte-1kk3799" aria-hidden="true"></div> <div class="strip-item hidden lg:inline-flex svelte-1kk3799" title="Sanhedrin receipts, appeals, and fail-open events over the last 7 days"><span class="text-muted svelte-1kk3799">Sanhedrin 7d</span> <!></div> <!> <div class="flex-1 svelte-1kk3799"></div> <!></div>');function va(d,l){Xe(l,!0);const v=()=>pe(gt,"$avgRetention",$),o=()=>pe(ft,"$eventFeed",$),h=()=>pe(ht,"$memoryCount",$),[$,_]=We(),R=Y(()=>Math.round((v()??0)*100)),S=Y(()=>(v()??0)>=.5);let C=le(null);async function x(){try{const r=await qe.retentionDistribution();if(Array.isArray(r.endangered)&&r.endangered.length>0){k(C,r.endangered.length,!0);return}const m=r.distribution??[];let A=0;for(const z of m){const U=/^(\d+)/.exec(z.range);if(!U)continue;const se=Number.parseInt(U[1],10);Number.isFinite(se)&&se<30&&(A+=z.count??0)}k(C,A,!0)}catch{k(C,null)}}let f=le(null);async function N(){var r;try{const m=await qe.intentions("active");k(f,m.total??((r=m.intentions)==null?void 0:r.length)??0,!0)}catch{k(f,null)}}let H=le($t(Date.now()));const O=Y(()=>{const r=o(),m=qt(r,e(H)),A=m?Oe(m)??e(H):null,z=A!==null?e(H)-A:null;return{isDreaming:Gt(r,e(H)),recent:m,recentMsAgo:z,insights:Wt(m)}}),i=Y(()=>Kt(o(),e(H)));let u=le(null),p=le(!1);async function g(){try{k(u,await qe.sanhedrin.telemetry(7),!0),k(p,!1)}catch{k(u,null),k(p,!0)}}const n=Y(()=>Ut(o(),e(H)));st(()=>{x(),N(),g();const r=setInterval(()=>{k(H,Date.now(),!0)},1e3),m=setInterval(()=>{x(),N(),g()},6e4);return()=>{clearInterval(r),clearInterval(m)}});var c=ca();let y;var B=a(c),_e=a(B),je=a(_e);let Te;var Be=s(je,2);let I;t(_e);var F=s(_e,2),T=a(F,!0);t(F);var te=s(F,6);let X;var Z=a(te);t(te),ce(2),t(B);var j=s(B,4),V=a(j);{var q=r=>{var m=Xt(),A=ve(m),z=a(A,!0);t(A),ce(2),P(()=>M(z,e(C))),b(r,m)},ae=r=>{var m=Qt();ce(2),b(r,m)},xe=r=>{var m=Zt();ce(2),b(r,m)};G(V,r=>{e(C)!==null&&e(C)>0?r(q):e(C)===0?r(ae,1):r(xe,!1)})}t(j);var L=s(j,4),Q=a(L);{var de=r=>{var m=Jt(),A=ve(m);let z;var U=s(A,2);let se;var ne=a(U,!0);t(U),ce(2),P(()=>{z=re(A,1,"inline-flex h-2 w-2 rounded-full svelte-1kk3799",null,z,{"bg-node-pattern":e(f)>5,"animate-ping-slow":e(f)>5,"bg-muted":e(f)<=5}),se=re(U,1,"tabular-nums svelte-1kk3799",null,se,{"text-node-pattern":e(f)>5,"text-text":e(f)>0&&e(f)<=5,"text-muted":e(f)===0}),M(ne,e(f))}),b(r,m)},ue=r=>{var m=ea();b(r,m)};G(Q,r=>{e(f)!==null?r(de):r(ue,!1)})}t(L);var me=s(L,4),fe=a(me);{var Se=r=>{var m=aa(),A=s(ve(m),4),z=a(A,!0);t(A);var U=s(A,2);{var se=ne=>{var Ie=ta(),E=s(ve(Ie),2),D=a(E,!0);t(E),ce(2),P(()=>M(D,e(O).insights)),b(ne,Ie)};G(U,ne=>{e(O).insights!==null&&ne(se)})}P(ne=>M(z,ne),[()=>Yt(e(O).recentMsAgo)]),b(r,m)},he=r=>{var m=sa();b(r,m)};G(fe,r=>{e(O).recent&&e(O).recentMsAgo!==null?r(Se):r(he,!1)})}t(me);var ge=s(me,4),Ee=s(a(ge),2);Ne(Ee,21,()=>e(i),Re,(r,m)=>{var A=ra();P(z=>bt(A,`height: ${z??""}%; opacity: ${e(m).count===0?.18:.5+e(m).ratio*.5};`),[()=>Math.max(10,e(m).ratio*100)]),b(r,A)}),t(Ee),t(ge);var ye=s(ge,4),Pe=s(a(ye),2);{var He=r=>{var m=na();b(r,m)},ze=r=>{var m=oa(),A=ve(m),z=a(A,!0);t(A);var U=s(A,6),se=a(U,!0);t(U);var ne=s(U,4);{var Ie=E=>{var D=ia(),ie=s(ve(D),2),ee=a(ie,!0);t(ie),ce(2),P(()=>M(ee,e(u).failOpen)),b(E,D)};G(ne,E=>{var D;(D=e(u))!=null&&D.failOpen&&E(Ie)})}P(()=>{var E,D,ie;M(z,((D=(E=e(u))==null?void 0:E.byVerdict)==null?void 0:D.VETO)??"—"),M(se,((ie=e(u))==null?void 0:ie.appeals)??"—")}),b(r,m)};G(Pe,r=>{e(p)?r(He):r(ze,!1)})}t(ye);var K=s(ye,2);{var J=r=>{var m=la();ce(2),b(r,m)};G(K,r=>{e(O).isDreaming&&r(J)})}var W=s(K,4);{var be=r=>{var m=da();b(r,m)};G(W,r=>{e(n)&&r(be)})}t(c),P(()=>{y=re(c,1,"ambient-strip relative flex h-9 w-full items-center gap-0 overflow-hidden border-b border-synapse/15 bg-black/40 px-3 text-[11px] text-dim backdrop-blur-md svelte-1kk3799",null,y,{"ambient-flash":e(n)}),Te=re(je,1,"absolute inline-flex h-full w-full animate-ping rounded-full opacity-75 svelte-1kk3799",null,Te,{"bg-recall":e(S),"bg-warning":!e(S)}),I=re(Be,1,"relative inline-flex h-2 w-2 rounded-full svelte-1kk3799",null,I,{"bg-recall":e(S),"bg-warning":!e(S)}),M(T,h()),X=re(te,1,"svelte-1kk3799",null,X,{"text-recall":e(S),"text-warning":!e(S)}),M(Z,`${e(R)??""}%`)}),b(d,c),Qe(),_()}var pa=w("<span> </span>"),ua=w('<li class="svelte-1j425e6"> </li>'),ma=w('<button type="button" class="svelte-1j425e6"> </button> <button type="button" class="svelte-1j425e6"> </button> <button type="button" class="svelte-1j425e6"> </button>',1),fa=w('<p class="svelte-1j425e6">Appeal recorded.</p>'),ha=w('<p class="svelte-1j425e6">No appealable veto in this receipt.</p>'),ga=w('<div class="receipt svelte-1j425e6" role="region" aria-label="Sanhedrin veto receipt"><div class="receipt-grid svelte-1j425e6"><div><div class="field-label svelte-1j425e6">Claim</div> <p class="svelte-1j425e6"> </p></div> <div><div class="field-label svelte-1j425e6">Verdict</div> <p class="svelte-1j425e6"> </p></div> <div><div class="field-label svelte-1j425e6">Precedent</div> <ul class="svelte-1j425e6"></ul></div> <div><div class="field-label svelte-1j425e6">Fix</div> <p class="svelte-1j425e6"> </p></div></div> <div class="appeal-row svelte-1j425e6"><span class="svelte-1j425e6">Appeal</span> <!></div></div>'),ba=w('<section aria-live="polite"><button type="button" class="verdict-summary svelte-1j425e6"><span class="label svelte-1j425e6">Sanhedrin</span> <span class="levels svelte-1j425e6" aria-label="Verdict levels"></span> <span class="sr-only svelte-1j425e6"> </span> <span class="summary-text svelte-1j425e6"><!></span> <span class="when svelte-1j425e6"> </span></button> <!></section>');function xa(d,l){Xe(l,!0);const v=["PASS","NOTE","CAUTION","VETO","APPEALED"];let o=le(null),h=le(""),$=le(!1),_=le(null),R=le(null),S=Y(()=>{var n;return((n=e(o))==null?void 0:n.verdictBar)??(e(h)?"CAUTION":"NOTE")}),C=Y(()=>{var n,c;return((n=e(o))==null?void 0:n.claims.find(y=>y.decision==="veto"))??((c=e(o))==null?void 0:c.claims.find(y=>y.decision==="appealed"))??null}),x=Y(()=>{var n;return e(C)??((n=e(o))==null?void 0:n.claims[0])??null}),f=Y(()=>!!e(o)||!!e(h));st(()=>{N();const n=window.setInterval(N,4e3);return()=>window.clearInterval(n)});async function N(){var n;try{const c=await qe.sanhedrin.latest();k(o,c.receipt,!0),k(h,""),((n=c.receipt)==null?void 0:n.verdictBar)==="VETO"&&c.receipt.id!==e(R)&&(k($,!0),k(R,c.receipt.id,!0))}catch(c){k(h,c instanceof Error?c.message:String(c),!0)}}async function H(n){var c;if(!(!e(C)||((c=e(o))==null?void 0:c.verdictBar)!=="VETO")){k(_,n,!0);try{const y=await qe.sanhedrin.appeal(n,void 0,e(C).id,e(o).id);k(o,y.receipt,!0),k($,!0),k(h,"")}catch(y){k(h,y instanceof Error?y.message:String(y),!0)}finally{k(_,null)}}}function O(n){if(!n)return"";const c=new Date(n);return Number.isNaN(c.getTime())?"":c.toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"})}function i(n){var c;return(c=n==null?void 0:n.precedent)!=null&&c.length?n.precedent.map(y=>y.summary??y.command??"Precedent recorded.").slice(0,3):["No precedent attached."]}var u=rt(),p=ve(u);{var g=n=>{var c=ba(),y=a(c),B=s(a(y),2);Ne(B,21,()=>v,Re,(j,V)=>{var q=pa();let ae;var xe=a(q,!0);t(q),P(()=>{Ce(q,"aria-current",e(V)===e(S)?"true":void 0),ae=re(q,1,"svelte-1j425e6",null,ae,{active:e(V)===e(S)}),M(xe,e(V))}),b(j,q)}),t(B);var _e=s(B,2),je=a(_e);t(_e);var Te=s(_e,2),Be=a(Te);{var I=j=>{var V=it();P(()=>M(V,e(h))),b(j,V)},F=j=>{var V=it();P(()=>M(V,e(o).summary)),b(j,V)};G(Be,j=>{e(h)?j(I):e(o)&&j(F,1)})}t(Te);var T=s(Te,2),te=a(T,!0);t(T),t(y);var X=s(y,2);{var Z=j=>{var V=ga(),q=a(V),ae=a(q),xe=s(a(ae),2),L=a(xe,!0);t(xe),t(ae);var Q=s(ae,2),de=s(a(Q),2),ue=a(de);t(de),t(Q);var me=s(Q,2),fe=s(a(me),2);Ne(fe,21,()=>i(e(x)),Re,(K,J)=>{var W=ua(),be=a(W,!0);t(W),P(()=>M(be,e(J))),b(K,W)}),t(fe),t(me);var Se=s(me,2),he=s(a(Se),2),ge=a(he,!0);t(he),t(Se),t(q);var Ee=s(q,2),ye=s(a(Ee),2);{var Pe=K=>{var J=ma(),W=ve(J),be=a(W,!0);t(W);var r=s(W,2),m=a(r,!0);t(r);var A=s(r,2),z=a(A,!0);t(A),P((U,se,ne)=>{W.disabled=U,M(be,e(_)==="stale"?"Saving":"Stale"),r.disabled=se,M(m,e(_)==="wrong"?"Saving":"Wrong"),A.disabled=ne,M(z,e(_)==="too_strict"?"Saving":"Too strict")},[()=>!!e(_),()=>!!e(_),()=>!!e(_)]),oe("click",W,()=>H("stale")),oe("click",r,()=>H("wrong")),oe("click",A,()=>H("too_strict")),b(K,J)},He=K=>{var J=fa();b(K,J)},ze=K=>{var J=ha();b(K,J)};G(ye,K=>{e(C)&&e(o).verdictBar==="VETO"?K(Pe):e(o).verdictBar==="APPEALED"?K(He,1):K(ze,!1)})}t(Ee),t(V),P(()=>{var K,J,W,be;M(L,((K=e(x))==null?void 0:K.text)??e(o).draftPreview),M(ue,`${((J=e(x))==null?void 0:J.decision)??e(o).overall??""} · ${((W=e(x))==null?void 0:W.evidence_state)??e(S)??""}`),M(ge,((be=e(x))==null?void 0:be.fix)||"No change required.")}),b(j,V)};G(X,j=>{e($)&&e(o)&&j(Z)})}t(c),P((j,V)=>{re(c,1,j,"svelte-1j425e6"),Ce(y,"aria-expanded",e($)),M(je,`Current verdict: ${e(S)??""}`),M(te,V)},[()=>`verdict-bar tone-${e(S).toLowerCase()}`,()=>{var j;return O((j=e(o))==null?void 0:j.createdAt)}]),oe("click",y,()=>k($,!e($))),b(n,c)};G(p,n=>{e(f)&&n(g)})}b(d,u),Qe()}Ue(["click"]);const _t="vestige.theme",ct="vestige-theme-light",Ve=at("dark"),tt=at(!0),vt=wt([Ve,tt],([d,l])=>d==="auto"?l?"dark":"light":d);function _a(d){return d==="dark"||d==="light"||d==="auto"}function ya(d){if(_a(d)){Ve.set(d);try{localStorage.setItem(_t,d)}catch{}}}function Je(){const d=ut(Ve);ya(d==="dark"?"light":d==="light"?"auto":"dark")}function ka(){if(document.getElementById(ct))return;const d=document.createElement("style");d.id=ct,d.textContent=`
|
|
/* Vestige light-mode overrides — injected by theme.ts.
|
|
* Activated by [data-theme='light'] on <html>.
|
|
* Tokens mirror the real names used in app.css so the cascade stays clean. */
|
|
[data-theme='light'] {
|
|
/* Core surface palette (slate scale) */
|
|
--color-void: #f8fafc; /* slate-50 — page background */
|
|
--color-abyss: #f1f5f9; /* slate-100 */
|
|
--color-deep: #e2e8f0; /* slate-200 */
|
|
--color-surface: #f1f5f9; /* slate-100 */
|
|
--color-elevated: #e2e8f0; /* slate-200 */
|
|
--color-subtle: #cbd5e1; /* slate-300 */
|
|
--color-muted: #94a3b8; /* slate-400 */
|
|
--color-dim: #475569; /* slate-600 */
|
|
--color-text: #0f172a; /* slate-900 */
|
|
--color-bright: #020617; /* slate-950 */
|
|
}
|
|
|
|
/* Baseline body/html wiring — app.css sets these against the dark
|
|
* tokens; we just let the variables do the work. Reassert for clarity. */
|
|
[data-theme='light'] html,
|
|
html[data-theme='light'] {
|
|
background: var(--color-void);
|
|
color: var(--color-text);
|
|
}
|
|
|
|
/* Glass surfaces — recompose on a light canvas. The original alphas
|
|
* are tuned for dark; invert-and-tint for light so panels still read
|
|
* as elevated instead of vanishing. */
|
|
[data-theme='light'] .glass {
|
|
background: rgba(255, 255, 255, 0.65);
|
|
border: 1px solid rgba(99, 102, 241, 0.12);
|
|
box-shadow:
|
|
inset 0 1px 0 0 rgba(255, 255, 255, 0.6),
|
|
0 4px 24px rgba(15, 23, 42, 0.08);
|
|
}
|
|
[data-theme='light'] .glass-subtle {
|
|
background: rgba(255, 255, 255, 0.55);
|
|
border: 1px solid rgba(99, 102, 241, 0.1);
|
|
box-shadow:
|
|
inset 0 1px 0 0 rgba(255, 255, 255, 0.5),
|
|
0 2px 12px rgba(15, 23, 42, 0.06);
|
|
}
|
|
[data-theme='light'] .glass-sidebar {
|
|
background: rgba(248, 250, 252, 0.82);
|
|
border-right: 1px solid rgba(99, 102, 241, 0.14);
|
|
box-shadow:
|
|
inset -1px 0 0 0 rgba(255, 255, 255, 0.4),
|
|
4px 0 24px rgba(15, 23, 42, 0.08);
|
|
}
|
|
[data-theme='light'] .glass-panel {
|
|
background: rgba(255, 255, 255, 0.75);
|
|
border: 1px solid rgba(99, 102, 241, 0.14);
|
|
box-shadow:
|
|
inset 0 1px 0 0 rgba(255, 255, 255, 0.5),
|
|
0 8px 32px rgba(15, 23, 42, 0.1);
|
|
}
|
|
|
|
/* Halve glow intensity — neon accents stay recognizable without
|
|
* washing out on slate-50. */
|
|
[data-theme='light'] .glow-synapse {
|
|
box-shadow: 0 0 10px rgba(99, 102, 241, 0.15), 0 0 30px rgba(99, 102, 241, 0.05);
|
|
}
|
|
[data-theme='light'] .glow-dream {
|
|
box-shadow: 0 0 10px rgba(168, 85, 247, 0.15), 0 0 30px rgba(168, 85, 247, 0.05);
|
|
}
|
|
[data-theme='light'] .glow-memory {
|
|
box-shadow: 0 0 10px rgba(59, 130, 246, 0.15), 0 0 30px rgba(59, 130, 246, 0.05);
|
|
}
|
|
|
|
/* Ambient orbs are gorgeous on black and blinding on white. Tame them. */
|
|
[data-theme='light'] .ambient-orb {
|
|
opacity: 0.18;
|
|
filter: blur(100px);
|
|
}
|
|
|
|
/* Scrollbar recolor for the lighter surface. */
|
|
[data-theme='light'] ::-webkit-scrollbar-thumb {
|
|
background: #cbd5e1;
|
|
}
|
|
[data-theme='light'] ::-webkit-scrollbar-thumb:hover {
|
|
background: #94a3b8;
|
|
}
|
|
`,document.head.appendChild(d)}function pt(d){document.documentElement.dataset.theme=d}let we=null,Ae=null,$e=null,Me=null;function wa(){we&&Ae&&we.removeEventListener("change",Ae),Me==null||Me(),$e==null||$e(),we=null,Ae=null,Me=null,$e=null,ka();let d="dark";try{const l=localStorage.getItem(_t);(l==="dark"||l==="light"||l==="auto")&&(d=l)}catch{}return Ve.set(d),we=window.matchMedia("(prefers-color-scheme: dark)"),tt.set(we.matches),Ae=l=>tt.set(l.matches),we.addEventListener("change",Ae),pt(ut(vt)),Me=vt.subscribe(pt),$e=Ve.subscribe(()=>{}),()=>{we&&Ae&&we.removeEventListener("change",Ae),we=null,Ae=null,Me==null||Me(),$e==null||$e(),Me=null,$e=null}}var $a=w('<button type="button" class="theme-toggle svelte-1cmi4dh"><span class="icon-wrap svelte-1cmi4dh"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path></svg> <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="12" cy="12" r="4"></circle><path d="M12 2v2M12 20v2M4.93 4.93l1.41 1.41M17.66 17.66l1.41 1.41M2 12h2M20 12h2M4.93 19.07l1.41-1.41M17.66 6.34l1.41-1.41"></path></svg> <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="12" cy="12" r="8"></circle><path d="M12 4 A8 8 0 0 0 12 20 Z" fill="currentColor" stroke="none"></path><path d="M12 2v1.5M12 20.5V22M3.5 12H2M22 12h-1.5"></path></svg></span></button>');function Ma(d){const l=()=>pe(Ve,"$theme",v),[v,o]=We(),h={dark:"Dark",light:"Light",auto:"Auto (system)"},$={dark:"light",light:"auto",auto:"dark"};let _=Y(l),R=Y(()=>$[e(_)]),S=Y(()=>`Toggle theme: ${h[e(_)]} (click for ${h[e(R)]})`);var C=$a(),x=a(C),f=a(x);let N;var H=s(f,2);let O;var i=s(H,2);let u;t(x),t(C),P(()=>{Ce(C,"aria-label",e(S)),Ce(C,"title",e(S)),Ce(C,"data-mode",e(_)),N=re(f,0,"icon svelte-1cmi4dh",null,N,{active:e(_)==="dark"}),O=re(H,0,"icon svelte-1cmi4dh",null,O,{active:e(_)==="light"}),u=re(i,0,"icon svelte-1cmi4dh",null,u,{active:e(_)==="auto"})}),oe("click",C,function(...p){Je==null||Je.apply(this,p)}),b(d,C),o()}Ue(["click"]);var Ca=w('<a><span class="nav-icon w-5 flex justify-center transition-transform duration-200 group-hover:scale-110 svelte-12qhfyh"><!></span> <span class="hidden lg:block"> </span> <span class="hidden lg:block ml-auto text-[10px] text-muted/50 font-mono"> </span></a>'),Ta=w('<div title="MCP server uptime"> </div>'),Sa=w('<div class="hidden lg:block pt-1"><!></div>'),Aa=w('<a><!> <span class="text-[9px]"> </span></a>'),Ea=w('<div class="ambient-orb ambient-orb-1" aria-hidden="true"></div> <div class="ambient-orb ambient-orb-2" aria-hidden="true"></div> <div class="ambient-orb ambient-orb-3" aria-hidden="true"></div> <div class="flex flex-col md:flex-row h-screen overflow-hidden bg-void relative z-[1]"><nav class="hidden md:flex w-16 lg:w-56 flex-shrink-0 glass-sidebar flex-col"><a class="logo-link flex items-center gap-3 px-4 py-5 border-b border-synapse/10 svelte-12qhfyh"><div class="logo-mark w-8 h-8 rounded-lg bg-gradient-to-br from-dream to-synapse flex items-center justify-center text-bright shadow-lg shadow-synapse/20 svelte-12qhfyh"><!></div> <span class="hidden lg:block text-sm font-semibold text-bright tracking-[0.18em]">VESTIGE</span></a> <div class="flex-1 min-h-0 overflow-y-auto py-3 flex flex-col gap-1 px-2"></div> <div class="px-2 pb-2"><button class="w-full flex items-center gap-2 px-3 py-2 rounded-lg text-xs text-muted hover:text-dim hover:bg-white/[0.03] transition border border-subtle/15"><!> <span class="hidden lg:block">Command</span> <span class="hidden lg:block ml-auto text-[10px] font-mono bg-white/[0.04] px-1.5 py-0.5 rounded">⌘K</span></button></div> <div class="px-3 py-4 border-t border-synapse/10 space-y-2"><div class="flex items-center gap-2 text-xs"><div></div> <span class="hidden lg:block text-dim"> </span> <div class="ml-auto"><!></div></div> <div class="hidden lg:block text-xs text-muted space-y-0.5"><div> </div> <div> </div> <!></div> <!></div></nav> <main class="flex-1 flex flex-col min-h-0 pb-16 md:pb-0"><!> <!> <div class="flex-1 min-h-0 overflow-y-auto"><!></div></main> <nav class="md:hidden fixed bottom-0 inset-x-0 glass border-t border-synapse/10 z-40 safe-bottom svelte-12qhfyh"><div class="flex items-center justify-around px-2 py-1"><!> <button class="flex flex-col items-center gap-0.5 px-3 py-2 rounded-lg text-muted min-w-[3.5rem]"><span class="text-lg">⋯</span> <span class="text-[9px]">More</span></button></div></nav></div> <!>',1),Da=w('<button class="w-full flex items-center gap-3 px-4 py-2.5 text-sm text-dim hover:text-text hover:bg-white/[0.04] transition"><span class="w-5 flex justify-center"><!></span> <span> </span> <span class="ml-auto text-[10px] text-muted/50 font-mono hidden md:block"> </span></button>'),Na=w('<div class="px-4 py-6 text-center text-sm text-muted">No matches</div>'),ja=w('<div class="fixed inset-0 z-50 flex items-start justify-center pt-[10vh] md:pt-[15vh] px-4 bg-void/60 backdrop-blur-sm"><div class="w-full max-w-lg glass-panel rounded-xl shadow-2xl shadow-synapse/10 overflow-hidden"><div class="flex items-center gap-3 px-4 py-3 border-b border-synapse/10"><span class="text-synapse"><!></span> <input type="text" placeholder="Navigate to..." class="flex-1 bg-transparent text-text text-sm placeholder:text-muted focus:outline-none"/> <span class="text-[10px] text-muted font-mono bg-white/[0.04] px-1.5 py-0.5 rounded">esc</span></div> <div class="max-h-72 overflow-y-auto py-1"><!> <!></div></div></div>'),Ia=w("<!> <!>",1);function Ja(d,l){Xe(l,!0);const v=()=>pe(St,"$page",S),o=()=>pe(Dt,"$isConnected",S),h=()=>pe(ht,"$memoryCount",S),$=()=>pe(gt,"$avgRetention",S),_=()=>pe(Et,"$uptimeSeconds",S),R=()=>pe(mt,"$suppressedCount",S),[S,C]=We();let x=le(!1),f=le(""),N=le(void 0),H=Y(()=>v().url.pathname.startsWith(ke)?v().url.pathname.slice(ke.length)||"/":v().url.pathname),O=Y(()=>e(H)==="/waitlist"||e(H).startsWith("/waitlist/")),i=Y(()=>!e(O));st(()=>{e(O)||dt.connect();const I=wa();function F(T){if(e(O)||e(i))return;if((T.metaKey||T.ctrlKey)&&T.key==="k"){T.preventDefault(),k(x,!e(x)),k(f,""),e(x)&&requestAnimationFrame(()=>{var Z;return(Z=e(N))==null?void 0:Z.focus()});return}if(T.key==="Escape"&&e(x)){k(x,!1);return}if(T.target instanceof HTMLInputElement||T.target instanceof HTMLTextAreaElement)return;if(T.key==="/"){T.preventDefault();const Z=document.querySelector('input[type="text"]');Z==null||Z.focus();return}const X={g:"/graph",m:"/memories",t:"/timeline",f:"/feed",e:"/explore",i:"/intentions",s:"/stats",r:"/reasoning",a:"/activation",d:"/dreams",c:"/schedule",p:"/importance",u:"/duplicates",x:"/contradictions",n:"/patterns"}[T.key.toLowerCase()];X&&!T.metaKey&&!T.ctrlKey&&!T.altKey&&(T.preventDefault(),lt(`${ke}${X}`))}return window.addEventListener("keydown",F),()=>{dt.disconnect(),window.removeEventListener("keydown",F),I()}}),At(I=>{if(!(!document.startViewTransition||window.matchMedia("(prefers-reduced-motion: reduce)").matches))return new Promise(F=>{document.startViewTransition(async()=>{F(),await I.complete})})});const u=[{href:"/observatory",label:"Observatory",icon:"sparkle",shortcut:"O"},{href:"/blackbox",label:"Black Box",icon:"blackbox",shortcut:"B"},{href:"/memory-prs",label:"Memory PRs",icon:"memorypr",shortcut:"Q"},{href:"/graph",label:"Graph",icon:"graph",shortcut:"G"},{href:"/reasoning",label:"Reasoning",icon:"reasoning",shortcut:"R"},{href:"/memories",label:"Memories",icon:"memories",shortcut:"M"},{href:"/timeline",label:"Timeline",icon:"timeline",shortcut:"T"},{href:"/feed",label:"Feed",icon:"feed",shortcut:"F"},{href:"/explore",label:"Explore",icon:"explore",shortcut:"E"},{href:"/activation",label:"Activation",icon:"activation",shortcut:"A"},{href:"/dreams",label:"Dreams",icon:"dreams",shortcut:"D"},{href:"/schedule",label:"Schedule",icon:"schedule",shortcut:"C"},{href:"/importance",label:"Importance",icon:"importance",shortcut:"P"},{href:"/duplicates",label:"Duplicates",icon:"duplicates",shortcut:"U"},{href:"/contradictions",label:"Contradictions",icon:"contradictions",shortcut:"X"},{href:"/patterns",label:"Patterns",icon:"patterns",shortcut:"N"},{href:"/intentions",label:"Intentions",icon:"intentions",shortcut:"I"},{href:"/stats",label:"Stats",icon:"stats",shortcut:"S"},{href:"/settings",label:"Settings",icon:"settings",shortcut:","}],p=u.slice(0,5);function g(I,F){const T=F.startsWith(ke)?F.slice(ke.length)||"/":F;return I==="/graph"?T==="/"||T==="/graph":T.startsWith(I)}let n=Y(()=>e(f)?u.filter(I=>I.label.toLowerCase().includes(e(f).toLowerCase())):u);function c(I){k(x,!1),k(f,""),lt(`${ke}${I}`)}var y=Ia(),B=ve(y);{var _e=I=>{var F=rt(),T=ve(F);ot(T,()=>l.children),b(I,F)},je=I=>{var F=Ea(),T=s(ve(F),6),te=a(T),X=a(te),Z=a(X),j=a(Z);Le(j,{name:"logo",size:18,strokeWidth:1.8}),t(Z),ce(2),t(X);var V=s(X,2);Ne(V,21,()=>u,Re,(E,D)=>{const ie=Y(()=>g(e(D).href,v().url.pathname));var ee=Ca(),Fe=a(ee),Ge=a(Fe);Le(Ge,{get name(){return e(D).icon},size:18}),t(Fe);var Ke=s(Fe,2),yt=a(Ke,!0);t(Ke);var nt=s(Ke,2),kt=a(nt,!0);t(nt),t(ee),P(()=>{Ce(ee,"href",`${ke??""}${e(D).href??""}`),re(ee,1,`nav-link group flex items-center gap-3 px-3 py-2.5 rounded-lg transition-all duration-200 text-sm
|
|
${e(ie)?"bg-synapse/15 text-synapse-glow border border-synapse/30 shadow-[0_0_12px_rgba(99,102,241,0.15)] nav-active-border":"text-dim hover:text-text hover:bg-white/[0.03] border border-transparent"}`,"svelte-12qhfyh"),M(yt,e(D).label),M(kt,e(D).shortcut)}),b(E,ee)}),t(V);var q=s(V,2),ae=a(q),xe=a(ae);Le(xe,{name:"command",size:14}),ce(4),t(ae),t(q);var L=s(q,2),Q=a(L),de=a(Q),ue=s(de,2),me=a(ue,!0);t(ue);var fe=s(ue,2),Se=a(fe);Ma(Se),t(fe),t(Q);var he=s(Q,2),ge=a(he),Ee=a(ge);t(ge);var ye=s(ge,2),Pe=a(ye);t(ye);var He=s(ye,2);{var ze=E=>{var D=Ta(),ie=a(D);t(D),P(ee=>M(ie,`up ${ee??""}`),[()=>Nt(_())]),b(E,D)};G(He,E=>{_()>0&&E(ze)})}t(he);var K=s(he,2);{var J=E=>{var D=Sa(),ie=a(D);Lt(ie),t(D),b(E,D)};G(K,E=>{R()>0&&E(J)})}t(L),t(te);var W=s(te,2),be=a(W);va(be,{});var r=s(be,2);xa(r,{});var m=s(r,2),A=a(m);ot(A,()=>l.children),t(m),t(W);var z=s(W,2),U=a(z),se=a(U);Ne(se,17,()=>p,Re,(E,D)=>{const ie=Y(()=>g(e(D).href,v().url.pathname));var ee=Aa(),Fe=a(ee);Le(Fe,{get name(){return e(D).icon},size:20});var Ge=s(Fe,2),Ke=a(Ge,!0);t(Ge),t(ee),P(()=>{Ce(ee,"href",`${ke??""}${e(D).href??""}`),re(ee,1,`flex flex-col items-center gap-0.5 px-3 py-2 rounded-lg transition-all min-w-[3.5rem]
|
|
${e(ie)?"text-synapse-glow":"text-muted"}`),M(Ke,e(D).label)}),b(E,ee)});var ne=s(se,2);t(U),t(z),t(T);var Ie=s(T,2);Ht(Ie,{}),P(E=>{Ce(X,"href",`${ke??""}/graph`),re(de,1,`w-2 h-2 rounded-full ${o()?"bg-recall animate-pulse-glow":"bg-decay"}`),M(me,o()?"Connected":"Offline"),M(Ee,`${h()??""} memories`),M(Pe,`${E??""}% retention`)},[()=>($()*100).toFixed(0)]),oe("click",ae,()=>{k(x,!0),k(f,""),requestAnimationFrame(()=>{var E;return(E=e(N))==null?void 0:E.focus()})}),oe("click",ne,()=>{k(x,!0),k(f,""),requestAnimationFrame(()=>{var E;return(E=e(N))==null?void 0:E.focus()})}),b(I,F)};G(B,I=>{e(O)||e(i)?I(_e):I(je,!1)})}var Te=s(B,2);{var Be=I=>{var F=ja(),T=a(F),te=a(T),X=a(te),Z=a(X);Le(Z,{name:"search",size:16}),t(X);var j=s(X,2);Ct(j),Mt(j,L=>k(N,L),()=>e(N)),ce(2),t(te);var V=s(te,2),q=a(V);Ne(q,17,()=>e(n),Re,(L,Q)=>{var de=Da(),ue=a(de),me=a(ue);Le(me,{get name(){return e(Q).icon},size:17}),t(ue);var fe=s(ue,2),Se=a(fe,!0);t(fe);var he=s(fe,2),ge=a(he,!0);t(he),t(de),P(()=>{M(Se,e(Q).label),M(ge,e(Q).shortcut)}),oe("click",de,()=>c(e(Q).href)),b(L,de)});var ae=s(q,2);{var xe=L=>{var Q=Na();b(L,Q)};G(ae,L=>{e(n).length===0&&L(xe)})}t(V),t(T),t(F),oe("keydown",F,L=>{L.key==="Escape"&&k(x,!1)}),oe("click",F,L=>{L.target===L.currentTarget&&k(x,!1)}),oe("keydown",j,L=>{L.key==="Enter"&&e(n).length>0&&c(e(n)[0].href)}),Tt(j,()=>e(f),L=>k(f,L)),b(I,F)};G(Te,I=>{e(x)&&!e(O)&&!e(i)&&I(Be)})}b(d,y),Qe(),C()}Ue(["click","keydown"]);export{Ja as component};
|