vestige/apps/dashboard/build/_app/immutable/nodes/19.BYwd4oWS.js
Sam Valladares f7530af3db
release: v2.2.1 — Windows embeddings fix + backfill safety + first-run guide (#105)
* patch(backfill-safety): VESTIGE_BACKFILL_AUTOFIRE gate (default OFF) + bounded promote_memory_backfill

Off-by-default env gate around step-8.5 auto-fire in run_consolidation (decouples
backfill from consolidation cadence). New promote_memory_backfill caps stability at
MIN(stability*1.5, stability+365.0) (the bound retroactive_backfill.rs:300 already
computes but discarded); both backfill entry points use it. Fixes the false 'capped'
comment. Cloud-sync excluded at build (--no-default-features). Pending upstream PR to
samvallad33/vestige. omega-backfill-safety-v2.2.0 off tag v2.2.0 (3bcd4667).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* release: v2.2.1 — Windows embeddings fix + backfill safety + first-run guide

Board-clearing patch release.

Fixes:
- #101 Windows embeddings: release.yml already restores vector-search on the
  x86_64-pc-windows-msvc target (merged in #102); this release rebuilds the
  Windows binary so users actually get working embeddings.
- #103 Retroactive Salience Backfill safety (from community PR #104, adjusted):
  * promote_memory_backfill bounds the stability multiply to
    MIN(stability*1.5, stability+365.0) on both auto-fire and manual paths.
  * VESTIGE_BACKFILL_AUTOFIRE gate — default ON (preserves the shipped/documented
    v2.2.0 behavior), disable with 0/false/off/no. Env value is trimmed.
  * Corrected the false "capped" comment and the promote_memory_backfill doc.
  * Added 3 tests: +365 cap binds, *1.5 multiply below crossover, gate parsing.

Docs:
- #83 First-Run: new docs/GETTING-STARTED.md + README pointer.
- Consolidated roadmap issues #82,#84-#92 into docs/ROADMAP.md (Tracked Issues).
- Documented VESTIGE_BACKFILL_AUTOFIRE in docs/CONFIGURATION.md.
- CHANGELOG v2.2.1 entry.

Version bumped to 2.2.1 across all manifests + Cargo.lock + dashboard build.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Peter Lauzon <inbijiburu@protonmail.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-02 12:02:42 -05:00

2 lines
14 KiB
JavaScript

import"../chunks/Bzak7iHL.js";import{o as ft}from"../chunks/TZu9D97Z.js";import{p as _t,t as $,a as n,b as bt,g as i,j as c,e as t,h as d,s as C,a9 as kt,i as p,f as Fe,r as e,n as m,m as Ie,u as F}from"../chunks/wpu9U-D0.js";import{d as yt,a as I,s as f}from"../chunks/D8mhvFt8.js";import{i as _}from"../chunks/DKve45Wd.js";import{e as fe,s as V,i as _e}from"../chunks/60_R_Vbt.js";import{a as R,r as A}from"../chunks/P1-U_Xsj.js";import{s as Y}from"../chunks/EqHb-9AZ.js";import{a as ht,s as be}from"../chunks/ByYB047u.js";import{a as O}from"../chunks/CZfHMhLI.js";import{a as wt,b as $t,i as St,w as Ct}from"../chunks/BhIgFntf.js";import{f as Dt}from"../chunks/CqMQEF-F.js";import{P as Rt}from"../chunks/BHDZZvku.js";import{I as P}from"../chunks/D7A-gG4Z.js";var At=c('<span><span></span> <span class="svelte-15kgmsr"> </span></span> <button class="refresh-btn svelte-15kgmsr"><!> <span class="svelte-15kgmsr">Refresh</span></button>',1),Pt=c('<span class="w-3 h-3 border border-warning/50 border-t-warning rounded-full animate-spin svelte-15kgmsr"></span> Running...',1),Gt=c('<div class="svelte-15kgmsr"><div class="text-lg text-text font-semibold tabular-nums svelte-15kgmsr"> </div> <div class="text-[10px] text-muted svelte-15kgmsr">Processed</div></div>'),jt=c('<div class="svelte-15kgmsr"><div class="text-lg text-decay font-semibold tabular-nums svelte-15kgmsr"> </div> <div class="text-[10px] text-muted svelte-15kgmsr">Decayed</div></div>'),zt=c('<div class="svelte-15kgmsr"><div class="text-lg text-synapse-glow font-semibold tabular-nums svelte-15kgmsr"> </div> <div class="text-[10px] text-muted svelte-15kgmsr">Embedded</div></div>'),Mt=c('<div class="bg-white/[0.02] p-3 rounded-lg border border-synapse/10 svelte-15kgmsr"><div class="grid grid-cols-3 gap-3 text-center svelte-15kgmsr"><!> <!> <!></div></div>'),Tt=c('<span class="w-3 h-3 border border-dream/50 border-t-dream rounded-full animate-spin svelte-15kgmsr"></span> Dreaming...',1),Et=c('<div class="text-xs text-dim bg-dream/5 border border-dream/10 rounded-lg p-2 svelte-15kgmsr"> </div>'),Ft=c('<div class="text-xs text-bright font-medium svelte-15kgmsr">Insights Discovered:</div> <!>',1),It=c('<div class="text-xs text-dim svelte-15kgmsr">Connections found: <span class="text-dream-glow svelte-15kgmsr"> </span></div>'),Ot=c('<div class="text-xs text-dim svelte-15kgmsr">Memories replayed: <span class="text-text svelte-15kgmsr"> </span></div>'),Nt=c('<div class="bg-white/[0.02] p-3 rounded-lg border border-synapse/10 space-y-2 svelte-15kgmsr"><!> <!> <!></div>'),Bt=c('<div class="flex-1 flex flex-col items-center gap-1 svelte-15kgmsr"><div class="text-[9px] text-muted svelte-15kgmsr"> </div> <div class="w-full rounded-t transition-all duration-500 svelte-15kgmsr"></div> <div class="text-[9px] text-muted svelte-15kgmsr"></div></div>'),Kt=c('<div class="flex items-end gap-1 h-32 svelte-15kgmsr"></div>'),Wt=c('<section class="space-y-4 svelte-15kgmsr"><h2 class="text-sm text-bright font-semibold flex items-center gap-2 svelte-15kgmsr"><!> Retention Distribution</h2> <div class="p-4 glass rounded-xl svelte-15kgmsr"><!></div></section>'),qt=c('<div class="flex items-center gap-2 py-1 svelte-15kgmsr"><kbd class="px-1.5 py-0.5 bg-white/[0.04] rounded text-[10px] font-mono text-muted min-w-[2rem] text-center svelte-15kgmsr"> </kbd> <span class="text-dim svelte-15kgmsr"> </span></div>'),Ht=c(`<div class="p-6 max-w-4xl mx-auto space-y-8 enter svelte-15kgmsr"><!> <div class="grid grid-cols-2 md:grid-cols-4 gap-3 svelte-15kgmsr"><div class="p-4 glass rounded-xl text-center lift svelte-15kgmsr"><div class="text-2xl text-bright font-bold tabular-nums svelte-15kgmsr"> </div> <div class="text-xs text-dim mt-1 svelte-15kgmsr">Memories</div></div> <div class="p-4 glass rounded-xl text-center lift svelte-15kgmsr"><div class="text-2xl font-bold tabular-nums svelte-15kgmsr"> </div> <div class="text-xs text-dim mt-1 svelte-15kgmsr">Avg Retention</div></div> <div class="p-4 glass rounded-xl text-center lift svelte-15kgmsr"><div class="text-2xl text-bright font-bold flex items-center justify-center gap-2 svelte-15kgmsr"><span></span> <span class="text-sm svelte-15kgmsr"> </span></div> <div class="text-xs text-dim mt-1 svelte-15kgmsr">WebSocket</div></div> <div class="p-4 glass rounded-xl text-center lift svelte-15kgmsr"><div class="text-2xl text-synapse-glow font-bold svelte-15kgmsr">v2.1</div> <div class="text-xs text-dim mt-1 svelte-15kgmsr">Vestige</div></div></div> <section class="space-y-4 svelte-15kgmsr"><h2 class="text-sm text-bright font-semibold flex items-center gap-2 svelte-15kgmsr"><!> Cognitive Operations</h2> <div class="p-4 glass rounded-xl space-y-3 lift svelte-15kgmsr"><div class="flex items-center justify-between svelte-15kgmsr"><div class="svelte-15kgmsr"><div class="text-sm text-text font-medium svelte-15kgmsr">Pulse Toast Preview</div> <div class="text-xs text-dim svelte-15kgmsr">Fire a synthetic event sequence — useful for UI demos</div></div> <button class="px-4 py-2 bg-synapse/20 border border-synapse/40 text-synapse-glow text-sm rounded-xl hover:bg-synapse/30 transition flex items-center gap-2 svelte-15kgmsr"><!> Preview Pulse</button></div></div> <div class="p-4 glass rounded-xl space-y-3 lift svelte-15kgmsr"><div class="flex items-center justify-between svelte-15kgmsr"><div class="svelte-15kgmsr"><div class="text-sm text-text font-medium svelte-15kgmsr">Birth Ritual Preview</div> <div class="text-xs text-dim svelte-15kgmsr">Inject a synthetic memory — switch to Graph to watch the orb fly in</div></div> <button class="px-4 py-2 bg-dream/20 border border-dream/40 text-dream-glow text-sm rounded-xl hover:bg-dream/30 transition flex items-center gap-2 svelte-15kgmsr"><!> Trigger Birth</button></div></div> <div class="p-4 glass rounded-xl space-y-3 lift svelte-15kgmsr"><div class="flex items-center justify-between svelte-15kgmsr"><div class="svelte-15kgmsr"><div class="text-sm text-text font-medium svelte-15kgmsr">FSRS-6 Consolidation</div> <div class="text-xs text-dim svelte-15kgmsr">Apply spaced-repetition decay, regenerate embeddings, run maintenance</div></div> <button class="px-4 py-2 bg-warning/20 border border-warning/40 text-warning text-sm rounded-xl hover:bg-warning/30 transition disabled:opacity-50 flex items-center gap-2 svelte-15kgmsr"><!></button></div> <!></div> <div class="p-4 glass rounded-xl space-y-3 lift svelte-15kgmsr"><div class="flex items-center justify-between svelte-15kgmsr"><div class="svelte-15kgmsr"><div class="text-sm text-text font-medium svelte-15kgmsr">Memory Dream Cycle</div> <div class="text-xs text-dim svelte-15kgmsr">Replay memories, discover hidden connections, synthesize insights</div></div> <button><!></button></div> <!></div></section> <!> <section class="space-y-4 svelte-15kgmsr"><h2 class="text-sm text-bright font-semibold flex items-center gap-2 svelte-15kgmsr"><!> Keyboard Shortcuts</h2> <div class="p-4 glass-subtle rounded-xl svelte-15kgmsr"><div class="grid grid-cols-2 gap-2 text-xs svelte-15kgmsr"></div></div></section> <section class="space-y-4 svelte-15kgmsr"><h2 class="text-sm text-bright font-semibold flex items-center gap-2 svelte-15kgmsr"><!> About</h2> <div class="p-4 glass rounded-xl space-y-3 lift svelte-15kgmsr"><div class="flex items-center gap-4 svelte-15kgmsr"><div class="logo-tile w-12 h-12 rounded-xl bg-gradient-to-br from-dream to-synapse flex items-center justify-center text-bright shadow-lg shadow-synapse/20 svelte-15kgmsr"><!></div> <div class="svelte-15kgmsr"><div class="text-sm text-bright font-semibold svelte-15kgmsr">Vestige v2.1 "Nuclear Dashboard"</div> <div class="text-xs text-dim svelte-15kgmsr">Your AI's long-term memory system</div></div></div> <div class="grid grid-cols-2 gap-2 text-xs text-dim pt-2 border-t border-synapse/10 svelte-15kgmsr"><div class="svelte-15kgmsr">29 cognitive modules</div> <div class="svelte-15kgmsr">FSRS-6 spaced repetition</div> <div class="svelte-15kgmsr">Nomic Embed v1.5 (256d)</div> <div class="svelte-15kgmsr">Jina Reranker v1 Turbo</div> <div class="svelte-15kgmsr">USearch HNSW (20x FAISS)</div> <div class="svelte-15kgmsr">Local-first, zero cloud</div></div> <div class="text-[10px] text-muted pt-1 svelte-15kgmsr">Built with Rust + Axum + SvelteKit 2 + Svelte 5 + Three.js + Tailwind CSS 4</div></div></section></div>`);function ds(Oe,Ne){_t(Ne,!0);const b=()=>be(St,"$isConnected",Q),Be=()=>be($t,"$memoryCount",Q),L=()=>be(wt,"$avgRetention",Q),[Q,Ke]=ht(),ke=["fact","concept","pattern","decision","person","place"];let X=C(0);function We(){const s=ke[i(X)%ke.length];kt(X),Ct.injectEvent({type:"MemoryCreated",data:{id:`demo-birth-${Date.now()}`,content:`Demo memory #${i(X)}${s}`,node_type:s,tags:["demo","v2.3-birth-ritual"],retention:.9}})}let N=C(!1),j=C(!1),S=C(null),h=C(null),qe=C(null),G=C(null),ye=C(!0),He=C(null);ft(()=>{B()});async function B(){p(ye,!0);try{const[s,r,a]=await Promise.all([O.stats().catch(()=>null),O.health().catch(()=>null),O.retentionDistribution().catch(()=>null)]);p(qe,s,!0),p(He,r,!0),p(G,a,!0)}finally{p(ye,!1)}}async function Je(){p(N,!0),p(S,null);try{p(S,await O.consolidate(),!0),await B()}catch{}finally{p(N,!1)}}async function Ue(){p(j,!0),p(h,null);try{p(h,await O.dream(),!0),await B()}catch{}finally{p(j,!1)}}var Z=Ht(),he=t(Z);Rt(he,{icon:"settings",title:"Settings & System",subtitle:"Tune the cognitive engine, watch the system breathe, and run the rituals that keep memory alive.",accent:"synapse",children:(s,r)=>{var a=At(),x=Fe(a);let k;var u=t(x);let w;var D=d(u,2),y=t(D,!0);e(D),e(x);var l=d(x,2),v=t(l);P(v,{name:"activation",size:13}),m(2),e(l),$(()=>{k=V(x,1,"conn-pill svelte-15kgmsr",null,k,{idle:!b()}),w=V(u,1,"conn-dot w-2 h-2 rounded-full svelte-15kgmsr",null,w,{"ping-host":b(),breathe:!b()}),Y(u,`color:${b()?"var(--color-recall)":"var(--color-decay)"};background:${b()?"var(--color-recall)":"var(--color-decay)"}`),f(y,b()?"Connected":"Offline")}),I("click",l,B),n(s,a)},$$slots:{default:!0}});var ee=d(he,2),K=t(ee),we=t(K),Ve=t(we,!0);e(we),m(2),e(K),R(K,(s,r)=>{var a;return(a=A)==null?void 0:a(s,r)},()=>({delay:0}));var W=d(K,2),te=t(W),Ye=t(te);e(te),m(2),e(W),R(W,(s,r)=>{var a;return(a=A)==null?void 0:a(s,r)},()=>({delay:60}));var q=d(W,2),$e=t(q),se=t($e);let Se;var Ce=d(se,2),Le=t(Ce,!0);e(Ce),e($e),m(2),e(q),R(q,(s,r)=>{var a;return(a=A)==null?void 0:a(s,r)},()=>({delay:120}));var Qe=d(q,2);R(Qe,(s,r)=>{var a;return(a=A)==null?void 0:a(s,r)},()=>({delay:180})),e(ee);var H=d(ee,2),re=t(H),Xe=t(re);P(Xe,{name:"dreams",size:16,class:"text-dream"}),m(),e(re);var ae=d(re,2),De=t(ae),ie=d(t(De),2),Ze=t(ie);P(Ze,{name:"sparkle",size:14}),m(),e(ie),e(De),e(ae);var de=d(ae,2),Re=t(de),le=d(t(Re),2),et=t(le);P(et,{name:"memories",size:14}),m(),e(le),e(Re),e(de);var ve=d(de,2),oe=t(ve),J=d(t(oe),2),tt=t(J);{var st=s=>{var r=Pt();m(),n(s,r)},rt=s=>{var r=Ie("Consolidate");n(s,r)};_(tt,s=>{i(N)?s(st):s(rt,!1)})}e(J),e(oe);var at=d(oe,2);{var it=s=>{var r=Mt(),a=t(r),x=t(a);{var k=l=>{var v=Gt(),o=t(v),g=t(o,!0);e(o),m(2),e(v),$(()=>f(g,i(S).nodesProcessed)),n(l,v)};_(x,l=>{i(S).nodesProcessed!==void 0&&l(k)})}var u=d(x,2);{var w=l=>{var v=jt(),o=t(v),g=t(o,!0);e(o),m(2),e(v),$(()=>f(g,i(S).decayApplied)),n(l,v)};_(u,l=>{i(S).decayApplied!==void 0&&l(w)})}var D=d(u,2);{var y=l=>{var v=zt(),o=t(v),g=t(o,!0);e(o),m(2),e(v),$(()=>f(g,i(S).embeddingsGenerated)),n(l,v)};_(D,l=>{i(S).embeddingsGenerated!==void 0&&l(y)})}e(a),e(r),n(s,r)};_(at,s=>{i(S)&&s(it)})}e(ve);var Ae=d(ve,2),ne=t(Ae),z=d(t(ne),2),dt=t(z);{var lt=s=>{var r=Tt();m(),n(s,r)},vt=s=>{var r=Ie("Dream");n(s,r)};_(dt,s=>{i(j)?s(lt):s(vt,!1)})}e(z),e(ne);var ot=d(ne,2);{var nt=s=>{var r=Nt(),a=t(r);{var x=l=>{var v=Ft(),o=d(Fe(v),2);fe(o,17,()=>i(h).insights,_e,(g,M)=>{var T=Et(),xe=t(T,!0);e(T),$(E=>f(xe,E),[()=>typeof i(M)=="string"?i(M):JSON.stringify(i(M))]),n(g,T)}),n(l,v)},k=F(()=>i(h).insights&&Array.isArray(i(h).insights));_(a,l=>{i(k)&&l(x)})}var u=d(a,2);{var w=l=>{var v=It(),o=d(t(v)),g=t(o,!0);e(o),e(v),$(()=>f(g,i(h).connections_found)),n(l,v)};_(u,l=>{i(h).connections_found!==void 0&&l(w)})}var D=d(u,2);{var y=l=>{var v=Ot(),o=d(t(v)),g=t(o,!0);e(o),e(v),$(()=>f(g,i(h).memories_replayed)),n(l,v)};_(D,l=>{i(h).memories_replayed!==void 0&&l(y)})}e(r),n(s,r)};_(ot,s=>{i(h)&&s(nt)})}e(Ae),e(H),R(H,(s,r)=>{var a;return(a=A)==null?void 0:a(s,r)},()=>({delay:60}));var Pe=d(H,2);{var mt=s=>{var r=Wt(),a=t(r),x=t(a);P(x,{name:"importance",size:16,class:"text-recall"}),m(),e(a);var k=d(a,2),u=t(k);{var w=y=>{var l=Kt();fe(l,21,()=>i(G).distribution,_e,(v,o,g)=>{const M=F(()=>Math.max(...i(G).distribution.map(pe=>pe.count),1)),T=F(()=>i(o).count/i(M)*100),xe=F(()=>g<2?"#ef4444":g<4?"#f59e0b":g<7?"#6366f1":"#10b981");var E=Bt(),ue=t(E),ut=t(ue,!0);e(ue);var Ee=d(ue,2),pt=d(Ee,2);pt.textContent=`${g*10}%`,e(E),$(pe=>{f(ut,i(o).count),Y(Ee,`height: ${pe??""}%; background: ${i(xe)??""}; opacity: 0.7`)},[()=>Math.max(i(T),2)]),n(v,E)}),e(l),n(y,l)},D=F(()=>i(G).distribution&&Array.isArray(i(G).distribution));_(u,y=>{i(D)&&y(w)})}e(k),e(r),R(r,(y,l)=>{var v;return(v=A)==null?void 0:v(y,l)},()=>({delay:120})),n(s,r)};_(Pe,s=>{i(G)&&s(mt)})}var U=d(Pe,2),me=t(U),ct=t(me);P(ct,{name:"command",size:16,class:"text-synapse"}),m(),e(me);var Ge=d(me,2),je=t(Ge);fe(je,20,()=>[{key:"⌘ K",desc:"Command palette"},{key:"/",desc:"Focus search"},{key:"G",desc:"Go to Graph"},{key:"M",desc:"Go to Memories"},{key:"T",desc:"Go to Timeline"},{key:"F",desc:"Go to Feed"},{key:"E",desc:"Go to Explore"},{key:"S",desc:"Go to Stats"}],_e,(s,r)=>{var a=qt(),x=t(a),k=t(x,!0);e(x);var u=d(x,2),w=t(u,!0);e(u),e(a),$(()=>{f(k,r.key),f(w,r.desc)}),n(s,a)}),e(je),e(Ge),e(U),R(U,(s,r)=>{var a;return(a=A)==null?void 0:a(s,r)},()=>({delay:160}));var ce=d(U,2),ge=t(ce),gt=t(ge);P(gt,{name:"logo",size:16,class:"text-memory"}),m(),e(ge);var ze=d(ge,2),Me=t(ze),Te=t(Me),xt=t(Te);P(xt,{name:"logo",size:20,strokeWidth:1.8}),e(Te),m(2),e(Me),m(4),e(ze),e(ce),R(ce,(s,r)=>{var a;return(a=A)==null?void 0:a(s,r)},()=>({delay:200})),e(Z),$(s=>{f(Ve,Be()),Y(te,`color: ${L()>.7?"#10b981":L()>.4?"#f59e0b":"#ef4444"}`),f(Ye,`${s??""}%`),Se=V(se,1,"w-2.5 h-2.5 rounded-full svelte-15kgmsr",null,Se,{"ping-host":b(),breathe:!b()}),Y(se,`color:${b()?"var(--color-recall)":"var(--color-decay)"};background:${b()?"var(--color-recall)":"var(--color-decay)"}`),f(Le,b()?"Online":"Offline"),J.disabled=i(N),z.disabled=i(j),V(z,1,`px-4 py-2 bg-dream/20 border border-dream/40 text-dream-glow text-sm rounded-xl hover:bg-dream/30 transition disabled:opacity-50 flex items-center gap-2
${i(j)?"glow-dream animate-pulse-glow":""}`,"svelte-15kgmsr")},[()=>(L()*100).toFixed(1)]),I("click",ie,function(...s){var r;(r=Dt)==null||r.apply(this,s)}),I("click",le,We),I("click",J,Je),I("click",z,Ue),n(Oe,Z),bt(),Ke()}yt(["click"]);export{ds as component};