feat: live memory materialization — nodes spawn in 3D graph in real-time

When memories are created, promoted, deleted, or dreamed via MCP tools,
the 3D graph now shows spectacular live animations:

- Rainbow particle burst + elastic scale-up on MemoryCreated
- Ripple wave cascading to nearby nodes
- Green pulse + node growth on MemoryPromoted
- Implosion + dissolution on MemoryDeleted
- Edge growth animation on ConnectionDiscovered
- Purple cascade on DreamStarted/DreamProgress/DreamCompleted
- FIFO eviction at 50 live nodes to guard performance

Also: graph center defaults to most-connected node, legacy HTML
redirects to SvelteKit dashboard, CSS height chain fix in layout.

Testing: 150 unit tests (vitest), 11 e2e tests (Playwright with
MCP Streamable HTTP client), 22 proof screenshots.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Sam Valladares 2026-03-03 14:04:31 -06:00
parent 816b577f69
commit 9bdcc69ce3
76 changed files with 5915 additions and 332 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1 @@
import{l as o,a as r}from"../chunks/gFolWfSi.js";export{o as load_css,r as start};

View file

@ -0,0 +1,2 @@
)€import{l as o,a as r}from"../chunks/gFolWfSi.js";export{o as load_css,r as start};


View file

@ -1 +0,0 @@
import{l as o,a as r}from"../chunks/C9fAJV5Y.js";export{o as load_css,r as start};

View file

@ -1,2 +0,0 @@
)€import{l as o,a as r}from"../chunks/C9fAJV5Y.js";export{o as load_css,r as start};


View file

@ -1 +0,0 @@
f`Œ”.o­ÙtÏ2%E[r¯W@~ Š”¿¿•w€<јÂo]õ­ã8©´Ôšl÷snm=Ý _G^ëõúž¸VÔ?,knœ_÷Ìh<C38C>w•Ñ¢¶ÞÈ=²"þ^…Áüzd>ÖH… S 6 <09> ¤@Dá¥'q´üœ¸¹þHD—~Cß/ƒ7Åú$+ßþfc‹š¿^ž?Xäß8Ê0ÔƒË×é‡ò|û°-òJSâoUVÊ<56>ãô0vCDɪ§.¡ª¦aV/TÌž{e¡¾ÁEqù ߀µšïìô<C3AC>áO¹Ñ¬Ñ<C2AC>9ñû!¨äb¥<62>K<EFBFBD><>Äü<04>B.CŒ$ñ ˜!ƒ+ð?œ7¢„H  €|·â™*Ì }_<>|Hƒ±W†£ÁJé…Ðgl<67>rP)FJ%7,q¨ænX

View file

@ -1 +1 @@
import"../chunks/Bzak7iHL.js";import{i as h}from"../chunks/_Va07L2l.js";import{p as g,f as d,t as l,a as v,d as _,e as s,r as o}from"../chunks/C9Z4nxhR.js";import{s as p}from"../chunks/DP9qWekZ.js";import{a as x,f as $}from"../chunks/DPfxVJHQ.js";import{s as k,p as m}from"../chunks/C9fAJV5Y.js";const b={get error(){return m.error},get status(){return m.status}};k.updated.check;const i=b;var E=$("<h1> </h1> <p> </p>",1);function B(f,n){g(n,!1),h();var t=E(),r=d(t),c=s(r,!0);o(r);var a=_(r,2),u=s(a,!0);o(a),l(()=>{var e;p(c,i.status),p(u,(e=i.error)==null?void 0:e.message)}),x(f,t),v()}export{B as component};
import"../chunks/Bzak7iHL.js";import{i as h}from"../chunks/_Va07L2l.js";import{p as g,f as d,t as l,a as v,d as _,e as s,r as o}from"../chunks/C9Z4nxhR.js";import{s as p}from"../chunks/DP9qWekZ.js";import{a as x,f as $}from"../chunks/DPfxVJHQ.js";import{s as k,p as m}from"../chunks/gFolWfSi.js";const b={get error(){return m.error},get status(){return m.status}};k.updated.check;const i=b;var E=$("<h1> </h1> <p> </p>",1);function B(f,n){g(n,!1),h();var t=E(),r=d(t),c=s(r,!0);o(r);var a=_(r,2),u=s(a,!0);o(a),l(()=>{var e;p(c,i.status),p(u,(e=i.error)==null?void 0:e.message)}),x(f,t),v()}export{B as component};

View file

@ -1 +1 @@
import"../chunks/Bzak7iHL.js";import{i as p}from"../chunks/_Va07L2l.js";import{o as r}from"../chunks/CkyfbJUz.js";import{p as t,a}from"../chunks/C9Z4nxhR.js";import{g as m}from"../chunks/C9fAJV5Y.js";function g(i,o){t(o,!1),r(()=>m("/graph",{replaceState:!0})),p(),a()}export{g as component};
import"../chunks/Bzak7iHL.js";import{i as p}from"../chunks/_Va07L2l.js";import{o as r}from"../chunks/CkyfbJUz.js";import{p as t,a}from"../chunks/C9Z4nxhR.js";import{g as m}from"../chunks/gFolWfSi.js";function g(i,o){t(o,!1),r(()=>m("/graph",{replaceState:!0})),p(),a()}export{g as component};

View file

@ -0,0 +1 @@
$ ei[<5B>àÒ†û$3³Ùù¡Y×x[$Qà+ÿùÝÆpyžRÑŠ¼w×D¥éê~Ø^¥äg¼µÖù²¸¹Ohß5=¾Ò§ÄiR†<52>±l•ÕŽìEImßI±þÁé|ãÇ”œŽ~x­*X®{<7B>¸k.ªë¨ï} kþˆßyFAþ€A¸"}t/·žCý¹ŒüGäO€üð?eŠyÈ¿G