@shahmilsaari/memory-core 1.0.20 → 1.0.25

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.
@@ -0,0 +1,2 @@
1
+ var Wi=Object.defineProperty;var bl=e=>{throw TypeError(e)};var Ui=(e,t,s)=>t in e?Wi(e,t,{enumerable:!0,configurable:!0,writable:!0,value:s}):e[t]=s;var at=(e,t,s)=>Ui(e,typeof t!="symbol"?t+"":t,s),Vr=(e,t,s)=>t.has(e)||bl("Cannot "+s);var o=(e,t,s)=>(Vr(e,t,"read from private field"),s?s.call(e):t.get(e)),L=(e,t,s)=>t.has(e)?bl("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,s),F=(e,t,s,n)=>(Vr(e,t,"write to private field"),n?n.call(e,s):t.set(e,s),s),G=(e,t,s)=>(Vr(e,t,"access private method"),s);(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const l of document.querySelectorAll('link[rel="modulepreload"]'))n(l);new MutationObserver(l=>{for(const a of l)if(a.type==="childList")for(const c of a.addedNodes)c.tagName==="LINK"&&c.rel==="modulepreload"&&n(c)}).observe(document,{childList:!0,subtree:!0});function s(l){const a={};return l.integrity&&(a.integrity=l.integrity),l.referrerPolicy&&(a.referrerPolicy=l.referrerPolicy),l.crossOrigin==="use-credentials"?a.credentials="include":l.crossOrigin==="anonymous"?a.credentials="omit":a.credentials="same-origin",a}function n(l){if(l.ep)return;l.ep=!0;const a=s(l);fetch(l.href,a)}})();const qi=!1;var an=Array.isArray,zi=Array.prototype.indexOf,Ss=Array.prototype.includes,Sr=Array.from,Ki=Object.defineProperty,Bs=Object.getOwnPropertyDescriptor,Fl=Object.getOwnPropertyDescriptors,Yi=Object.prototype,Gi=Array.prototype,on=Object.getPrototypeOf,gl=Object.isExtensible;const Ji=()=>{};function Qi(e){return e()}function zr(e){for(var t=0;t<e.length;t++)e[t]()}function Pl(){var e,t,s=new Promise((n,l)=>{e=n,t=l});return{promise:s,resolve:e,reject:t}}const xe=2,Ms=4,Zs=8,$l=1<<24,mt=16,ft=32,Yt=64,Kr=128,Ye=512,oe=1024,me=2048,vt=4096,Ae=8192,Ge=16384,_s=32768,ml=1<<25,As=65536,Yr=1<<17,Xi=1<<18,Rs=1<<19,jl=1<<20,gt=1<<25,us=65536,wr=1<<21,Us=1<<22,zt=1<<23,os=Symbol("$state"),Lt=new class extends Error{constructor(){super(...arguments);at(this,"name","StaleReactionError");at(this,"message","The reaction that called `getAbortSignal()` was re-run or destroyed")}};function Zi(){throw new Error("https://svelte.dev/e/async_derived_orphan")}function eo(e,t,s){throw new Error("https://svelte.dev/e/each_key_duplicate")}function to(e){throw new Error("https://svelte.dev/e/effect_in_teardown")}function so(){throw new Error("https://svelte.dev/e/effect_in_unowned_derived")}function ro(e){throw new Error("https://svelte.dev/e/effect_orphan")}function no(){throw new Error("https://svelte.dev/e/effect_update_depth_exceeded")}function lo(){throw new Error("https://svelte.dev/e/state_descriptors_fixed")}function ao(){throw new Error("https://svelte.dev/e/state_prototype_fixed")}function io(){throw new Error("https://svelte.dev/e/state_unsafe_mutation")}function oo(){throw new Error("https://svelte.dev/e/svelte_boundary_reset_onerror")}const co=1,fo=2,Bl=4,vo=8,uo=16,po=1,ho=2,_e=Symbol(),Vl="http://www.w3.org/1999/xhtml";function _o(){console.warn("https://svelte.dev/e/derived_inert")}function bo(){console.warn("https://svelte.dev/e/select_multiple_invalid_value")}function go(){console.warn("https://svelte.dev/e/svelte_boundary_reset_noop")}function Hl(e){return e===this.v}function mo(e,t){return e!=e?t==t:e!==t||e!==null&&typeof e=="object"||typeof e=="function"}function Wl(e){return!mo(e,this.v)}let Mr=!1,wo=!1;function yo(){Mr=!0}let ce=null;function Cs(e){ce=e}function Ul(e,t=!1,s){ce={p:ce,i:!1,c:null,e:null,s:e,x:null,r:P,l:Mr&&!t?{s:null,u:null,$:[]}:null}}function ql(e){var t=ce,s=t.e;if(s!==null){t.e=null;for(var n of s)ua(n)}return t.i=!0,ce=t.p,{}}function er(){return!Mr||ce!==null&&ce.l===null}let ts=[];function zl(){var e=ts;ts=[],zr(e)}function Kt(e){if(ts.length===0&&!Vs){var t=ts;queueMicrotask(()=>{t===ts&&zl()})}ts.push(e)}function ko(){for(;ts.length>0;)zl()}function Kl(e){var t=P;if(t===null)return j.f|=zt,e;if(!(t.f&_s)&&!(t.f&Ms))throw e;qt(e,t)}function qt(e,t){for(;t!==null;){if(t.f&Kr){if(!(t.f&_s))throw e;try{t.b.error(e);return}catch(s){e=s}}t=t.parent}throw e}const xo=-7169;function se(e,t){e.f=e.f&xo|t}function cn(e){e.f&Ye||e.deps===null?se(e,oe):se(e,vt)}function Yl(e){if(e!==null)for(const t of e)!(t.f&xe)||!(t.f&us)||(t.f^=us,Yl(t.deps))}function Gl(e,t,s){e.f&me?t.add(e):e.f&vt&&s.add(e),Yl(e.deps),se(e,oe)}const Zt=new Set;let A=null,ge=null,Gr=null,Vs=!1,Hr=!1,ms=null,dr=null;var wl=0;let Eo=1;var ws,ys,rs,Dt,ht,Ks,Ie,Ys,Wt,Nt,_t,ks,xs,ns,fe,pr,Jl,hr,Jr,_r,So;const kr=class kr{constructor(){L(this,fe);at(this,"id",Eo++);at(this,"current",new Map);at(this,"previous",new Map);L(this,ws,new Set);L(this,ys,new Set);L(this,rs,new Set);L(this,Dt,new Map);L(this,ht,new Map);L(this,Ks,null);L(this,Ie,[]);L(this,Ys,[]);L(this,Wt,new Set);L(this,Nt,new Set);L(this,_t,new Map);L(this,ks,new Set);at(this,"is_fork",!1);L(this,xs,!1);L(this,ns,new Set)}skip_effect(t){o(this,_t).has(t)||o(this,_t).set(t,{d:[],m:[]}),o(this,ks).delete(t)}unskip_effect(t,s=n=>this.schedule(n)){var n=o(this,_t).get(t);if(n){o(this,_t).delete(t);for(var l of n.d)se(l,me),s(l);for(l of n.m)se(l,vt),s(l)}o(this,ks).add(t)}capture(t,s,n=!1){t.v!==_e&&!this.previous.has(t)&&this.previous.set(t,t.v),t.f&zt||(this.current.set(t,[s,n]),ge==null||ge.set(t,s)),this.is_fork||(t.v=s)}activate(){A=this}deactivate(){A=null,ge=null}flush(){try{Hr=!0,A=this,G(this,fe,hr).call(this)}finally{wl=0,Gr=null,ms=null,dr=null,Hr=!1,A=null,ge=null,cs.clear()}}discard(){for(const t of o(this,ys))t(this);o(this,ys).clear(),o(this,rs).clear(),Zt.delete(this)}register_created_effect(t){o(this,Ys).push(t)}increment(t,s){let n=o(this,Dt).get(s)??0;if(o(this,Dt).set(s,n+1),t){let l=o(this,ht).get(s)??0;o(this,ht).set(s,l+1)}}decrement(t,s,n){let l=o(this,Dt).get(s)??0;if(l===1?o(this,Dt).delete(s):o(this,Dt).set(s,l-1),t){let a=o(this,ht).get(s)??0;a===1?o(this,ht).delete(s):o(this,ht).set(s,a-1)}o(this,xs)||n||(F(this,xs,!0),Kt(()=>{F(this,xs,!1),this.flush()}))}transfer_effects(t,s){for(const n of t)o(this,Wt).add(n);for(const n of s)o(this,Nt).add(n);t.clear(),s.clear()}oncommit(t){o(this,ws).add(t)}ondiscard(t){o(this,ys).add(t)}on_fork_commit(t){o(this,rs).add(t)}run_fork_commit_callbacks(){for(const t of o(this,rs))t(this);o(this,rs).clear()}settled(){return(o(this,Ks)??F(this,Ks,Pl())).promise}static ensure(){if(A===null){const t=A=new kr;Hr||(Zt.add(A),Vs||Kt(()=>{A===t&&t.flush()}))}return A}apply(){{ge=null;return}}schedule(t){var l;if(Gr=t,(l=t.b)!=null&&l.is_pending&&t.f&(Ms|Zs|$l)&&!(t.f&_s)){t.b.defer_effect(t);return}for(var s=t;s.parent!==null;){s=s.parent;var n=s.f;if(ms!==null&&s===P&&(j===null||!(j.f&xe)))return;if(n&(Yt|ft)){if(!(n&oe))return;s.f^=oe}}o(this,Ie).push(s)}};ws=new WeakMap,ys=new WeakMap,rs=new WeakMap,Dt=new WeakMap,ht=new WeakMap,Ks=new WeakMap,Ie=new WeakMap,Ys=new WeakMap,Wt=new WeakMap,Nt=new WeakMap,_t=new WeakMap,ks=new WeakMap,xs=new WeakMap,ns=new WeakMap,fe=new WeakSet,pr=function(){return this.is_fork||o(this,ht).size>0},Jl=function(){for(const n of o(this,ns))for(const l of o(n,ht).keys()){for(var t=!1,s=l;s.parent!==null;){if(o(this,_t).has(s)){t=!0;break}s=s.parent}if(!t)return!0}return!1},hr=function(){var v,f;if(wl++>1e3&&(Zt.delete(this),Ao()),!G(this,fe,pr).call(this)){for(const u of o(this,Wt))o(this,Nt).delete(u),se(u,me),this.schedule(u);for(const u of o(this,Nt))se(u,vt),this.schedule(u)}const t=o(this,Ie);F(this,Ie,[]),this.apply();var s=ms=[],n=[],l=dr=[];for(const u of t)try{G(this,fe,Jr).call(this,u,s,n)}catch(_){throw Zl(u),_}if(A=null,l.length>0){var a=kr.ensure();for(const u of l)a.schedule(u)}if(ms=null,dr=null,G(this,fe,pr).call(this)||G(this,fe,Jl).call(this)){G(this,fe,_r).call(this,n),G(this,fe,_r).call(this,s);for(const[u,_]of o(this,_t))Xl(u,_)}else{o(this,Dt).size===0&&Zt.delete(this),o(this,Wt).clear(),o(this,Nt).clear();for(const u of o(this,ws))u(this);o(this,ws).clear(),yl(n),yl(s),(v=o(this,Ks))==null||v.resolve()}var c=A;if(o(this,Ie).length>0){const u=c??(c=this);o(u,Ie).push(...o(this,Ie).filter(_=>!o(u,Ie).includes(_)))}c!==null&&(Zt.add(c),G(f=c,fe,hr).call(f))},Jr=function(t,s,n){t.f^=oe;for(var l=t.first;l!==null;){var a=l.f,c=(a&(ft|Yt))!==0,v=c&&(a&oe)!==0,f=v||(a&Ae)!==0||o(this,_t).has(l);if(!f&&l.fn!==null){c?l.f^=oe:a&Ms?s.push(l):Ls(l)&&(a&mt&&o(this,Nt).add(l),hs(l));var u=l.first;if(u!==null){l=u;continue}}for(;l!==null;){var _=l.next;if(_!==null){l=_;break}l=l.parent}}},_r=function(t){for(var s=0;s<t.length;s+=1)Gl(t[s],o(this,Wt),o(this,Nt))},So=function(){var _,S,m;for(const k of Zt){var t=k.id<this.id,s=[];for(const[w,[T,b]]of this.current){if(k.current.has(w)){var n=k.current.get(w)[0];if(t&&T!==n)k.current.set(w,[T,b]);else continue}s.push(w)}var l=[...k.current.keys()].filter(w=>!this.current.has(w));if(l.length===0)t&&k.discard();else if(s.length>0){if(t)for(const w of o(this,ks))k.unskip_effect(w,T=>{var b;T.f&(mt|Us)?k.schedule(T):G(b=k,fe,_r).call(b,[T])});k.activate();var a=new Set,c=new Map;for(var v of s)Ql(v,l,a,c);c=new Map;var f=[...k.current.keys()].filter(w=>this.current.has(w)?this.current.get(w)[0]!==w:!0);for(const w of o(this,Ys))!(w.f&(Ge|Ae|Yr))&&fn(w,f,c)&&(w.f&(Us|mt)?(se(w,me),k.schedule(w)):o(k,Wt).add(w));if(o(k,Ie).length>0){k.apply();for(var u of o(k,Ie))G(_=k,fe,Jr).call(_,u,[],[]);F(k,Ie,[])}k.deactivate()}}for(const k of Zt)o(k,ns).has(this)&&(o(k,ns).delete(this),o(k,ns).size===0&&!G(S=k,fe,pr).call(S)&&(k.activate(),G(m=k,fe,hr).call(m)))};let ds=kr;function Mo(e){var t=Vs;Vs=!0;try{for(var s;;){if(ko(),A===null)return s;A.flush()}}finally{Vs=t}}function Ao(){try{no()}catch(e){qt(e,Gr)}}let it=null;function yl(e){var t=e.length;if(t!==0){for(var s=0;s<t;){var n=e[s++];if(!(n.f&(Ge|Ae))&&Ls(n)&&(it=new Set,hs(n),n.deps===null&&n.first===null&&n.nodes===null&&n.teardown===null&&n.ac===null&&pa(n),(it==null?void 0:it.size)>0)){cs.clear();for(const l of it){if(l.f&(Ge|Ae))continue;const a=[l];let c=l.parent;for(;c!==null;)it.has(c)&&(it.delete(c),a.push(c)),c=c.parent;for(let v=a.length-1;v>=0;v--){const f=a[v];f.f&(Ge|Ae)||hs(f)}}it.clear()}}it=null}}function Ql(e,t,s,n){if(!s.has(e)&&(s.add(e),e.reactions!==null))for(const l of e.reactions){const a=l.f;a&xe?Ql(l,t,s,n):a&(Us|mt)&&!(a&me)&&fn(l,t,n)&&(se(l,me),vn(l))}}function fn(e,t,s){const n=s.get(e);if(n!==void 0)return n;if(e.deps!==null)for(const l of e.deps){if(Ss.call(t,l))return!0;if(l.f&xe&&fn(l,t,s))return s.set(l,!0),!0}return s.set(e,!1),!1}function vn(e){A.schedule(e)}function Xl(e,t){if(!(e.f&ft&&e.f&oe)){e.f&me?t.d.push(e):e.f&vt&&t.m.push(e),se(e,oe);for(var s=e.first;s!==null;)Xl(s,t),s=s.next}}function Zl(e){se(e,oe);for(var t=e.first;t!==null;)Zl(t),t=t.next}function Co(e){let t=0,s=ps(0),n;return()=>{pn()&&(r(s),Cr(()=>(t===0&&(n=y(()=>e(()=>Hs(s)))),t+=1,()=>{Kt(()=>{t-=1,t===0&&(n==null||n(),n=void 0,Hs(s))})})))}}var To=As|Rs;function Oo(e,t,s,n){new Ro(e,t,s,n)}var Ue,ln,qe,ls,Te,ze,Me,Fe,It,as,Ut,Es,Gs,Js,Ft,xr,re,Lo,Do,No,Qr,br,gr,Xr,Zr;class Ro{constructor(t,s,n,l){L(this,re);at(this,"parent");at(this,"is_pending",!1);at(this,"transform_error");L(this,Ue);L(this,ln,null);L(this,qe);L(this,ls);L(this,Te);L(this,ze,null);L(this,Me,null);L(this,Fe,null);L(this,It,null);L(this,as,0);L(this,Ut,0);L(this,Es,!1);L(this,Gs,new Set);L(this,Js,new Set);L(this,Ft,null);L(this,xr,Co(()=>(F(this,Ft,ps(o(this,as))),()=>{F(this,Ft,null)})));var a;F(this,Ue,t),F(this,qe,s),F(this,ls,c=>{var v=P;v.b=this,v.f|=Kr,n(c)}),this.parent=P.b,this.transform_error=l??((a=this.parent)==null?void 0:a.transform_error)??(c=>c),F(this,Te,_n(()=>{G(this,re,Qr).call(this)},To))}defer_effect(t){Gl(t,o(this,Gs),o(this,Js))}is_rendered(){return!this.is_pending&&(!this.parent||this.parent.is_rendered())}has_pending_snippet(){return!!o(this,qe).pending}update_pending_count(t,s){G(this,re,Xr).call(this,t,s),F(this,as,o(this,as)+t),!(!o(this,Ft)||o(this,Es))&&(F(this,Es,!0),Kt(()=>{F(this,Es,!1),o(this,Ft)&&Ts(o(this,Ft),o(this,as))}))}get_effect_pending(){return o(this,xr).call(this),r(o(this,Ft))}error(t){if(!o(this,qe).onerror&&!o(this,qe).failed)throw t;A!=null&&A.is_fork?(o(this,ze)&&A.skip_effect(o(this,ze)),o(this,Me)&&A.skip_effect(o(this,Me)),o(this,Fe)&&A.skip_effect(o(this,Fe)),A.on_fork_commit(()=>{G(this,re,Zr).call(this,t)})):G(this,re,Zr).call(this,t)}}Ue=new WeakMap,ln=new WeakMap,qe=new WeakMap,ls=new WeakMap,Te=new WeakMap,ze=new WeakMap,Me=new WeakMap,Fe=new WeakMap,It=new WeakMap,as=new WeakMap,Ut=new WeakMap,Es=new WeakMap,Gs=new WeakMap,Js=new WeakMap,Ft=new WeakMap,xr=new WeakMap,re=new WeakSet,Lo=function(){try{F(this,ze,Ke(()=>o(this,ls).call(this,o(this,Ue))))}catch(t){this.error(t)}},Do=function(t){const s=o(this,qe).failed;s&&F(this,Fe,Ke(()=>{s(o(this,Ue),()=>t,()=>()=>{})}))},No=function(){const t=o(this,qe).pending;t&&(this.is_pending=!0,F(this,Me,Ke(()=>t(o(this,Ue)))),Kt(()=>{var s=F(this,It,document.createDocumentFragment()),n=Pt();s.append(n),F(this,ze,G(this,re,gr).call(this,()=>Ke(()=>o(this,ls).call(this,n)))),o(this,Ut)===0&&(o(this,Ue).before(s),F(this,It,null),fs(o(this,Me),()=>{F(this,Me,null)}),G(this,re,br).call(this,A))}))},Qr=function(){try{if(this.is_pending=this.has_pending_snippet(),F(this,Ut,0),F(this,as,0),F(this,ze,Ke(()=>{o(this,ls).call(this,o(this,Ue))})),o(this,Ut)>0){var t=F(this,It,document.createDocumentFragment());mn(o(this,ze),t);const s=o(this,qe).pending;F(this,Me,Ke(()=>s(o(this,Ue))))}else G(this,re,br).call(this,A)}catch(s){this.error(s)}},br=function(t){this.is_pending=!1,t.transfer_effects(o(this,Gs),o(this,Js))},gr=function(t){var s=P,n=j,l=ce;Xe(o(this,Te)),Qe(o(this,Te)),Cs(o(this,Te).ctx);try{return ds.ensure(),t()}catch(a){return Kl(a),null}finally{Xe(s),Qe(n),Cs(l)}},Xr=function(t,s){var n;if(!this.has_pending_snippet()){this.parent&&G(n=this.parent,re,Xr).call(n,t,s);return}F(this,Ut,o(this,Ut)+t),o(this,Ut)===0&&(G(this,re,br).call(this,s),o(this,Me)&&fs(o(this,Me),()=>{F(this,Me,null)}),o(this,It)&&(o(this,Ue).before(o(this,It)),F(this,It,null)))},Zr=function(t){o(this,ze)&&(Re(o(this,ze)),F(this,ze,null)),o(this,Me)&&(Re(o(this,Me)),F(this,Me,null)),o(this,Fe)&&(Re(o(this,Fe)),F(this,Fe,null));var s=o(this,qe).onerror;let n=o(this,qe).failed;var l=!1,a=!1;const c=()=>{if(l){go();return}l=!0,a&&oo(),o(this,Fe)!==null&&fs(o(this,Fe),()=>{F(this,Fe,null)}),G(this,re,gr).call(this,()=>{G(this,re,Qr).call(this)})},v=f=>{try{a=!0,s==null||s(f,c),a=!1}catch(u){qt(u,o(this,Te)&&o(this,Te).parent)}n&&F(this,Fe,G(this,re,gr).call(this,()=>{try{return Ke(()=>{var u=P;u.b=this,u.f|=Kr,n(o(this,Ue),()=>f,()=>c)})}catch(u){return qt(u,o(this,Te).parent),null}}))};Kt(()=>{var f;try{f=this.transform_error(t)}catch(u){qt(u,o(this,Te)&&o(this,Te).parent);return}f!==null&&typeof f=="object"&&typeof f.then=="function"?f.then(v,u=>qt(u,o(this,Te)&&o(this,Te).parent)):v(f)})};function Io(e,t,s,n){const l=er()?un:ta;var a=e.filter(m=>!m.settled);if(s.length===0&&a.length===0){n(t.map(l));return}var c=P,v=Fo(),f=a.length===1?a[0].promise:a.length>1?Promise.all(a.map(m=>m.promise)):null;function u(m){v();try{n(m)}catch(k){c.f&Ge||qt(k,c)}yr()}if(s.length===0){f.then(()=>u(t.map(l)));return}var _=ea();function S(){Promise.all(s.map(m=>Po(m))).then(m=>u([...t.map(l),...m])).catch(m=>qt(m,c)).finally(()=>_())}f?f.then(()=>{v(),S(),yr()}):S()}function Fo(){var e=P,t=j,s=ce,n=A;return function(a=!0){Xe(e),Qe(t),Cs(s),a&&!(e.f&Ge)&&(n==null||n.activate(),n==null||n.apply())}}function yr(e=!0){Xe(null),Qe(null),Cs(null),e&&(A==null||A.deactivate())}function ea(){var e=P,t=e.b,s=A,n=t.is_rendered();return t.update_pending_count(1,s),s.increment(n,e),(l=!1)=>{t.update_pending_count(-1,s),s.decrement(n,e,l)}}function un(e){var t=xe|me;return P!==null&&(P.f|=Rs),{ctx:ce,deps:null,effects:null,equals:Hl,f:t,fn:e,reactions:null,rv:0,v:_e,wv:0,parent:P,ac:null}}function Po(e,t,s){let n=P;n===null&&Zi();var l=void 0,a=ps(_e),c=!j,v=new Map;return Qo(()=>{var k;var f=P,u=Pl();l=u.promise;try{Promise.resolve(e()).then(u.resolve,u.reject).finally(yr)}catch(w){u.reject(w),yr()}var _=A;if(c){if(f.f&_s)var S=ea();if(n.b.is_rendered())(k=v.get(_))==null||k.reject(Lt),v.delete(_);else{for(const w of v.values())w.reject(Lt);v.clear()}v.set(_,u)}const m=(w,T=void 0)=>{if(S){var b=T===Lt;S(b)}if(!(T===Lt||f.f&Ge)){if(_.activate(),T)a.f|=zt,Ts(a,T);else{a.f&zt&&(a.f^=zt),Ts(a,w);for(const[C,h]of v){if(v.delete(C),C===_)break;h.reject(Lt)}}_.deactivate()}};u.promise.then(m,w=>m(null,w||"unknown"))}),hn(()=>{for(const f of v.values())f.reject(Lt)}),new Promise(f=>{function u(_){function S(){_===l?f(a):u(l)}_.then(S,S)}u(l)})}function ta(e){const t=un(e);return t.equals=Wl,t}function $o(e){var t=e.effects;if(t!==null){e.effects=null;for(var s=0;s<t.length;s+=1)Re(t[s])}}function dn(e){var t,s=P,n=e.parent;if(!Gt&&n!==null&&n.f&(Ge|Ae))return _o(),e.v;Xe(n);try{e.f&=~us,$o(e),t=wa(e)}finally{Xe(s)}return t}function sa(e){var t=dn(e);if(!e.equals(t)&&(e.wv=ga(),(!(A!=null&&A.is_fork)||e.deps===null)&&(A!==null?A.capture(e,t,!0):e.v=t,e.deps===null))){se(e,oe);return}Gt||(ge!==null?(pn()||A!=null&&A.is_fork)&&ge.set(e,t):cn(e))}function jo(e){var t,s;if(e.effects!==null)for(const n of e.effects)(n.teardown||n.ac)&&((t=n.teardown)==null||t.call(n),(s=n.ac)==null||s.abort(Lt),n.teardown=Ji,n.ac=null,qs(n,0),bn(n))}function ra(e){if(e.effects!==null)for(const t of e.effects)t.teardown&&hs(t)}let en=new Set;const cs=new Map;let na=!1;function ps(e,t){var s={f:0,v:e,reactions:null,equals:Hl,rv:0,wv:0};return s}function Vt(e,t){const s=ps(e);return ec(s),s}function N(e,t=!1,s=!0){var l;const n=ps(e);return t||(n.equals=Wl),Mr&&s&&ce!==null&&ce.l!==null&&((l=ce.l).s??(l.s=[])).push(n),n}function es(e,t){return x(e,y(()=>r(e))),t}function x(e,t,s=!1){j!==null&&(!ct||j.f&Yr)&&er()&&j.f&(xe|mt|Us|Yr)&&(Je===null||!Ss.call(Je,e))&&io();let n=s?$s(t):t;return Ts(e,n,dr)}function Ts(e,t,s=null){if(!e.equals(t)){cs.set(e,Gt?t:e.v);var n=ds.ensure();if(n.capture(e,t),e.f&xe){const l=e;e.f&me&&dn(l),ge===null&&cn(l)}e.wv=ga(),la(e,me,s),er()&&P!==null&&P.f&oe&&!(P.f&(ft|Yt))&&(We===null?tc([e]):We.push(e)),!n.is_fork&&en.size>0&&!na&&Bo()}return t}function Bo(){na=!1;for(const e of en)e.f&oe&&se(e,vt),Ls(e)&&hs(e);en.clear()}function Hs(e){x(e,e.v+1)}function la(e,t,s){var n=e.reactions;if(n!==null)for(var l=er(),a=n.length,c=0;c<a;c++){var v=n[c],f=v.f;if(!(!l&&v===P)){var u=(f&me)===0;if(u&&se(v,t),f&xe){var _=v;ge==null||ge.delete(_),f&us||(f&Ye&&(P===null||!(P.f&wr))&&(v.f|=us),la(_,vt,s))}else if(u){var S=v;f&mt&&it!==null&&it.add(S),s!==null?s.push(S):vn(S)}}}}function $s(e){if(typeof e!="object"||e===null||os in e)return e;const t=on(e);if(t!==Yi&&t!==Gi)return e;var s=new Map,n=an(e),l=Vt(0),a=vs,c=v=>{if(vs===a)return v();var f=j,u=vs;Qe(null),Ml(a);var _=v();return Qe(f),Ml(u),_};return n&&s.set("length",Vt(e.length)),new Proxy(e,{defineProperty(v,f,u){(!("value"in u)||u.configurable===!1||u.enumerable===!1||u.writable===!1)&&lo();var _=s.get(f);return _===void 0?c(()=>{var S=Vt(u.value);return s.set(f,S),S}):x(_,u.value,!0),!0},deleteProperty(v,f){var u=s.get(f);if(u===void 0){if(f in v){const _=c(()=>Vt(_e));s.set(f,_),Hs(l)}}else x(u,_e),Hs(l);return!0},get(v,f,u){var k;if(f===os)return e;var _=s.get(f),S=f in v;if(_===void 0&&(!S||(k=Bs(v,f))!=null&&k.writable)&&(_=c(()=>{var w=$s(S?v[f]:_e),T=Vt(w);return T}),s.set(f,_)),_!==void 0){var m=r(_);return m===_e?void 0:m}return Reflect.get(v,f,u)},getOwnPropertyDescriptor(v,f){var u=Reflect.getOwnPropertyDescriptor(v,f);if(u&&"value"in u){var _=s.get(f);_&&(u.value=r(_))}else if(u===void 0){var S=s.get(f),m=S==null?void 0:S.v;if(S!==void 0&&m!==_e)return{enumerable:!0,configurable:!0,value:m,writable:!0}}return u},has(v,f){var m;if(f===os)return!0;var u=s.get(f),_=u!==void 0&&u.v!==_e||Reflect.has(v,f);if(u!==void 0||P!==null&&(!_||(m=Bs(v,f))!=null&&m.writable)){u===void 0&&(u=c(()=>{var k=_?$s(v[f]):_e,w=Vt(k);return w}),s.set(f,u));var S=r(u);if(S===_e)return!1}return _},set(v,f,u,_){var B;var S=s.get(f),m=f in v;if(n&&f==="length")for(var k=u;k<S.v;k+=1){var w=s.get(k+"");w!==void 0?x(w,_e):k in v&&(w=c(()=>Vt(_e)),s.set(k+"",w))}if(S===void 0)(!m||(B=Bs(v,f))!=null&&B.writable)&&(S=c(()=>Vt(void 0)),x(S,$s(u)),s.set(f,S));else{m=S.v!==_e;var T=c(()=>$s(u));x(S,T)}var b=Reflect.getOwnPropertyDescriptor(v,f);if(b!=null&&b.set&&b.set.call(_,u),!m){if(n&&typeof f=="string"){var C=s.get("length"),h=Number(f);Number.isInteger(h)&&h>=C.v&&x(C,h+1)}Hs(l)}return!0},ownKeys(v){r(l);var f=Reflect.ownKeys(v).filter(S=>{var m=s.get(S);return m===void 0||m.v!==_e});for(var[u,_]of s)_.v!==_e&&!(u in v)&&f.push(u);return f},setPrototypeOf(){ao()}})}function kl(e){try{if(e!==null&&typeof e=="object"&&os in e)return e[os]}catch{}return e}function Vo(e,t){return Object.is(kl(e),kl(t))}var tn,aa,ia,oa;function Ho(){if(tn===void 0){tn=window,aa=/Firefox/.test(navigator.userAgent);var e=Element.prototype,t=Node.prototype,s=Text.prototype;ia=Bs(t,"firstChild").get,oa=Bs(t,"nextSibling").get,gl(e)&&(e.__click=void 0,e.__className=void 0,e.__attributes=null,e.__style=void 0,e.__e=void 0),gl(s)&&(s.__t=void 0)}}function Pt(e=""){return document.createTextNode(e)}function Os(e){return ia.call(e)}function tr(e){return oa.call(e)}function p(e,t){return Os(e)}function He(e,t=!1){{var s=Os(e);return s instanceof Comment&&s.data===""?tr(s):s}}function d(e,t=1,s=!1){let n=e;for(;t--;)n=tr(n);return n}function Wo(e){e.textContent=""}function ca(){return!1}function Uo(e,t,s){return document.createElementNS(Vl,e,void 0)}let xl=!1;function qo(){xl||(xl=!0,document.addEventListener("reset",e=>{Promise.resolve().then(()=>{var t;if(!e.defaultPrevented)for(const s of e.target.elements)(t=s.__on_r)==null||t.call(s)})},{capture:!0}))}function Ar(e){var t=j,s=P;Qe(null),Xe(null);try{return e()}finally{Qe(t),Xe(s)}}function fa(e,t,s,n=s){e.addEventListener(t,()=>Ar(s));const l=e.__on_r;l?e.__on_r=()=>{l(),n(!0)}:e.__on_r=()=>n(!0),qo()}function va(e){P===null&&(j===null&&ro(),so()),Gt&&to()}function zo(e,t){var s=t.last;s===null?t.last=t.first=e:(s.next=e,e.prev=s,t.last=e)}function wt(e,t){var s=P;s!==null&&s.f&Ae&&(e|=Ae);var n={ctx:ce,deps:null,nodes:null,f:e|me|Ye,first:null,fn:t,last:null,next:null,parent:s,b:s&&s.b,prev:null,teardown:null,wv:0,ac:null};A==null||A.register_created_effect(n);var l=n;if(e&Ms)ms!==null?ms.push(n):ds.ensure().schedule(n);else if(t!==null){try{hs(n)}catch(c){throw Re(n),c}l.deps===null&&l.teardown===null&&l.nodes===null&&l.first===l.last&&!(l.f&Rs)&&(l=l.first,e&mt&&e&As&&l!==null&&(l.f|=As))}if(l!==null&&(l.parent=s,s!==null&&zo(l,s),j!==null&&j.f&xe&&!(e&Yt))){var a=j;(a.effects??(a.effects=[])).push(l)}return n}function pn(){return j!==null&&!ct}function hn(e){const t=wt(Zs,null);return se(t,oe),t.teardown=e,t}function El(e){va();var t=P.f,s=!j&&(t&ft)!==0&&(t&_s)===0;if(s){var n=ce;(n.e??(n.e=[])).push(e)}else return ua(e)}function ua(e){return wt(Ms|jl,e)}function Ko(e){return va(),wt(Zs|jl,e)}function Yo(e){ds.ensure();const t=wt(Yt|Rs,e);return(s={})=>new Promise(n=>{s.outro?fs(t,()=>{Re(t),n(void 0)}):(Re(t),n(void 0))})}function Go(e){return wt(Ms,e)}function ke(e,t){var s=ce,n={effect:null,ran:!1,deps:e};s.l.$.push(n),n.effect=Cr(()=>{if(e(),!n.ran){n.ran=!0;var l=P;try{Xe(l.parent),y(t)}finally{Xe(l)}}})}function Jo(){var e=ce;Cr(()=>{for(var t of e.l.$){t.deps();var s=t.effect;s.f&oe&&s.deps!==null&&se(s,vt),Ls(s)&&hs(s),t.ran=!1}})}function Qo(e){return wt(Us|Rs,e)}function Cr(e,t=0){return wt(Zs|t,e)}function q(e,t=[],s=[],n=[]){Io(n,t,s,l=>{wt(Zs,()=>e(...l.map(r)))})}function _n(e,t=0){var s=wt(mt|t,e);return s}function Ke(e){return wt(ft|Rs,e)}function da(e){var t=e.teardown;if(t!==null){const s=Gt,n=j;Sl(!0),Qe(null);try{t.call(null)}finally{Sl(s),Qe(n)}}}function bn(e,t=!1){var s=e.first;for(e.first=e.last=null;s!==null;){const l=s.ac;l!==null&&Ar(()=>{l.abort(Lt)});var n=s.next;s.f&Yt?s.parent=null:Re(s,t),s=n}}function Xo(e){for(var t=e.first;t!==null;){var s=t.next;t.f&ft||Re(t),t=s}}function Re(e,t=!0){var s=!1;(t||e.f&Xi)&&e.nodes!==null&&e.nodes.end!==null&&(Zo(e.nodes.start,e.nodes.end),s=!0),se(e,ml),bn(e,t&&!s),qs(e,0);var n=e.nodes&&e.nodes.t;if(n!==null)for(const a of n)a.stop();da(e),e.f^=ml,e.f|=Ge;var l=e.parent;l!==null&&l.first!==null&&pa(e),e.next=e.prev=e.teardown=e.ctx=e.deps=e.fn=e.nodes=e.ac=e.b=null}function Zo(e,t){for(;e!==null;){var s=e===t?null:tr(e);e.remove(),e=s}}function pa(e){var t=e.parent,s=e.prev,n=e.next;s!==null&&(s.next=n),n!==null&&(n.prev=s),t!==null&&(t.first===e&&(t.first=n),t.last===e&&(t.last=s))}function fs(e,t,s=!0){var n=[];ha(e,n,!0);var l=()=>{s&&Re(e),t&&t()},a=n.length;if(a>0){var c=()=>--a||l();for(var v of n)v.out(c)}else l()}function ha(e,t,s){if(!(e.f&Ae)){e.f^=Ae;var n=e.nodes&&e.nodes.t;if(n!==null)for(const v of n)(v.is_global||s)&&t.push(v);for(var l=e.first;l!==null;){var a=l.next;if(!(l.f&Yt)){var c=(l.f&As)!==0||(l.f&ft)!==0&&(e.f&mt)!==0;ha(l,t,c?s:!1)}l=a}}}function gn(e){_a(e,!0)}function _a(e,t){if(e.f&Ae){e.f^=Ae,e.f&oe||(se(e,me),ds.ensure().schedule(e));for(var s=e.first;s!==null;){var n=s.next,l=(s.f&As)!==0||(s.f&ft)!==0;_a(s,l?t:!1),s=n}var a=e.nodes&&e.nodes.t;if(a!==null)for(const c of a)(c.is_global||t)&&c.in()}}function mn(e,t){if(e.nodes)for(var s=e.nodes.start,n=e.nodes.end;s!==null;){var l=s===n?null:tr(s);t.append(s),s=l}}let mr=!1,Gt=!1;function Sl(e){Gt=e}let j=null,ct=!1;function Qe(e){j=e}let P=null;function Xe(e){P=e}let Je=null;function ec(e){j!==null&&(Je===null?Je=[e]:Je.push(e))}let Oe=null,Ne=0,We=null;function tc(e){We=e}let ba=1,ss=0,vs=ss;function Ml(e){vs=e}function ga(){return++ba}function Ls(e){var t=e.f;if(t&me)return!0;if(t&xe&&(e.f&=~us),t&vt){for(var s=e.deps,n=s.length,l=0;l<n;l++){var a=s[l];if(Ls(a)&&sa(a),a.wv>e.wv)return!0}t&Ye&&ge===null&&se(e,oe)}return!1}function ma(e,t,s=!0){var n=e.reactions;if(n!==null&&!(Je!==null&&Ss.call(Je,e)))for(var l=0;l<n.length;l++){var a=n[l];a.f&xe?ma(a,t,!1):t===a&&(s?se(a,me):a.f&oe&&se(a,vt),vn(a))}}function wa(e){var T;var t=Oe,s=Ne,n=We,l=j,a=Je,c=ce,v=ct,f=vs,u=e.f;Oe=null,Ne=0,We=null,j=u&(ft|Yt)?null:e,Je=null,Cs(e.ctx),ct=!1,vs=++ss,e.ac!==null&&(Ar(()=>{e.ac.abort(Lt)}),e.ac=null);try{e.f|=wr;var _=e.fn,S=_();e.f|=_s;var m=e.deps,k=A==null?void 0:A.is_fork;if(Oe!==null){var w;if(k||qs(e,Ne),m!==null&&Ne>0)for(m.length=Ne+Oe.length,w=0;w<Oe.length;w++)m[Ne+w]=Oe[w];else e.deps=m=Oe;if(pn()&&e.f&Ye)for(w=Ne;w<m.length;w++)((T=m[w]).reactions??(T.reactions=[])).push(e)}else!k&&m!==null&&Ne<m.length&&(qs(e,Ne),m.length=Ne);if(er()&&We!==null&&!ct&&m!==null&&!(e.f&(xe|vt|me)))for(w=0;w<We.length;w++)ma(We[w],e);if(l!==null&&l!==e){if(ss++,l.deps!==null)for(let b=0;b<s;b+=1)l.deps[b].rv=ss;if(t!==null)for(const b of t)b.rv=ss;We!==null&&(n===null?n=We:n.push(...We))}return e.f&zt&&(e.f^=zt),S}catch(b){return Kl(b)}finally{e.f^=wr,Oe=t,Ne=s,We=n,j=l,Je=a,Cs(c),ct=v,vs=f}}function sc(e,t){let s=t.reactions;if(s!==null){var n=zi.call(s,e);if(n!==-1){var l=s.length-1;l===0?s=t.reactions=null:(s[n]=s[l],s.pop())}}if(s===null&&t.f&xe&&(Oe===null||!Ss.call(Oe,t))){var a=t;a.f&Ye&&(a.f^=Ye,a.f&=~us),a.v!==_e&&cn(a),jo(a),qs(a,0)}}function qs(e,t){var s=e.deps;if(s!==null)for(var n=t;n<s.length;n++)sc(e,s[n])}function hs(e){var t=e.f;if(!(t&Ge)){se(e,oe);var s=P,n=mr;P=e,mr=!0;try{t&(mt|$l)?Xo(e):bn(e),da(e);var l=wa(e);e.teardown=typeof l=="function"?l:null,e.wv=ba;var a;qi&&wo&&e.f&me&&e.deps}finally{mr=n,P=s}}}async function rc(){await Promise.resolve(),Mo()}function r(e){var t=e.f,s=(t&xe)!==0;if(j!==null&&!ct){var n=P!==null&&(P.f&Ge)!==0;if(!n&&(Je===null||!Ss.call(Je,e))){var l=j.deps;if(j.f&wr)e.rv<ss&&(e.rv=ss,Oe===null&&l!==null&&l[Ne]===e?Ne++:Oe===null?Oe=[e]:Oe.push(e));else{(j.deps??(j.deps=[])).push(e);var a=e.reactions;a===null?e.reactions=[j]:Ss.call(a,j)||a.push(j)}}}if(Gt&&cs.has(e))return cs.get(e);if(s){var c=e;if(Gt){var v=c.v;return(!(c.f&oe)&&c.reactions!==null||ka(c))&&(v=dn(c)),cs.set(c,v),v}var f=(c.f&Ye)===0&&!ct&&j!==null&&(mr||(j.f&Ye)!==0),u=(c.f&_s)===0;Ls(c)&&(f&&(c.f|=Ye),sa(c)),f&&!u&&(ra(c),ya(c))}if(ge!=null&&ge.has(e))return ge.get(e);if(e.f&zt)throw e.v;return e.v}function ya(e){if(e.f|=Ye,e.deps!==null)for(const t of e.deps)(t.reactions??(t.reactions=[])).push(e),t.f&xe&&!(t.f&Ye)&&(ra(t),ya(t))}function ka(e){if(e.v===_e)return!0;if(e.deps===null)return!1;for(const t of e.deps)if(cs.has(t)||t.f&xe&&ka(t))return!0;return!1}function y(e){var t=ct;try{return ct=!0,e()}finally{ct=t}}function nc(e){if(!(typeof e!="object"||!e||e instanceof EventTarget)){if(os in e)sn(e);else if(!Array.isArray(e))for(let t in e){const s=e[t];typeof s=="object"&&s&&os in s&&sn(s)}}}function sn(e,t=new Set){if(typeof e=="object"&&e!==null&&!(e instanceof EventTarget)&&!t.has(e)){t.add(e),e instanceof Date&&e.getTime();for(let n in e)try{sn(e[n],t)}catch{}const s=on(e);if(s!==Object.prototype&&s!==Array.prototype&&s!==Map.prototype&&s!==Set.prototype&&s!==Date.prototype){const n=Fl(s);for(let l in n){const a=n[l].get;if(a)try{a.call(e)}catch{}}}}}const lc=["touchstart","touchmove"];function ac(e){return lc.includes(e)}const ir=Symbol("events"),ic=new Set,Al=new Set;function oc(e,t,s,n={}){function l(a){if(n.capture||rn.call(t,a),!a.cancelBubble)return Ar(()=>s==null?void 0:s.call(this,a))}return e.startsWith("pointer")||e.startsWith("touch")||e==="wheel"?Kt(()=>{t.addEventListener(e,l,n)}):t.addEventListener(e,l,n),l}function Z(e,t,s,n,l){var a={capture:n,passive:l},c=oc(e,t,s,a);(t===document.body||t===window||t===document||t instanceof HTMLMediaElement)&&hn(()=>{t.removeEventListener(e,c,a)})}let Cl=null;function rn(e){var b,C;var t=this,s=t.ownerDocument,n=e.type,l=((b=e.composedPath)==null?void 0:b.call(e))||[],a=l[0]||e.target;Cl=e;var c=0,v=Cl===e&&e[ir];if(v){var f=l.indexOf(v);if(f!==-1&&(t===document||t===window)){e[ir]=t;return}var u=l.indexOf(t);if(u===-1)return;f<=u&&(c=f)}if(a=l[c]||e.target,a!==t){Ki(e,"currentTarget",{configurable:!0,get(){return a||s}});var _=j,S=P;Qe(null),Xe(null);try{for(var m,k=[];a!==null;){var w=a.assignedSlot||a.parentNode||a.host||null;try{var T=(C=a[ir])==null?void 0:C[n];T!=null&&(!a.disabled||e.target===a)&&T.call(a,e)}catch(h){m?k.push(h):m=h}if(e.cancelBubble||w===t||w===null)break;a=w}if(m){for(let h of k)queueMicrotask(()=>{throw h});throw m}}finally{e[ir]=t,delete e.currentTarget,Qe(_),Xe(S)}}}var Nl;const Wr=((Nl=globalThis==null?void 0:globalThis.window)==null?void 0:Nl.trustedTypes)&&globalThis.window.trustedTypes.createPolicy("svelte-trusted-html",{createHTML:e=>e});function cc(e){return(Wr==null?void 0:Wr.createHTML(e))??e}function xa(e){var t=Uo("template");return t.innerHTML=cc(e.replaceAll("<!>","<!---->")),t.content}function zs(e,t){var s=P;s.nodes===null&&(s.nodes={start:e,end:t,a:null,t:null})}function J(e,t){var s=(t&po)!==0,n=(t&ho)!==0,l,a=!e.startsWith("<!>");return()=>{l===void 0&&(l=xa(a?e:"<!>"+e),s||(l=Os(l)));var c=n||aa?document.importNode(l,!0):l.cloneNode(!0);if(s){var v=Os(c),f=c.lastChild;zs(v,f)}else zs(c,c);return c}}function fc(e,t,s="svg"){var n=!e.startsWith("<!>"),l=`<${s}>${n?e:"<!>"+e}</${s}>`,a;return()=>{if(!a){var c=xa(l),v=Os(c);a=Os(v)}var f=a.cloneNode(!0);return zs(f,f),f}}function Tr(e,t){return fc(e,t,"svg")}function pt(e=""){{var t=Pt(e+"");return zs(t,t),t}}function or(){var e=document.createDocumentFragment(),t=document.createComment(""),s=Pt();return e.append(t,s),zs(t,s),e}function O(e,t){e!==null&&e.before(t)}function M(e,t){var s=t==null?"":typeof t=="object"?`${t}`:t;s!==(e.__t??(e.__t=e.nodeValue))&&(e.__t=s,e.nodeValue=`${s}`)}function vc(e,t){return uc(e,t)}const cr=new Map;function uc(e,{target:t,anchor:s,props:n={},events:l,context:a,intro:c=!0,transformError:v}){Ho();var f=void 0,u=Yo(()=>{var _=s??t.appendChild(Pt());Oo(_,{pending:()=>{}},k=>{Ul({});var w=ce;a&&(w.c=a),l&&(n.$$events=l),f=e(k,n)||{},ql()},v);var S=new Set,m=k=>{for(var w=0;w<k.length;w++){var T=k[w];if(!S.has(T)){S.add(T);var b=ac(T);for(const B of[t,document]){var C=cr.get(B);C===void 0&&(C=new Map,cr.set(B,C));var h=C.get(T);h===void 0?(B.addEventListener(T,rn,{passive:b}),C.set(T,1)):C.set(T,h+1)}}}};return m(Sr(ic)),Al.add(m),()=>{var b;for(var k of S)for(const C of[t,document]){var w=cr.get(C),T=w.get(k);--T==0?(C.removeEventListener(k,rn),w.delete(k),w.size===0&&cr.delete(C)):w.set(k,T)}Al.delete(m),_!==s&&((b=_.parentNode)==null||b.removeChild(_))}});return dc.set(f,u),f}let dc=new WeakMap;var ot,bt,Pe,is,Qs,Xs,Er;class pc{constructor(t,s=!0){at(this,"anchor");L(this,ot,new Map);L(this,bt,new Map);L(this,Pe,new Map);L(this,is,new Set);L(this,Qs,!0);L(this,Xs,t=>{if(o(this,ot).has(t)){var s=o(this,ot).get(t),n=o(this,bt).get(s);if(n)gn(n),o(this,is).delete(s);else{var l=o(this,Pe).get(s);l&&(o(this,bt).set(s,l.effect),o(this,Pe).delete(s),l.fragment.lastChild.remove(),this.anchor.before(l.fragment),n=l.effect)}for(const[a,c]of o(this,ot)){if(o(this,ot).delete(a),a===t)break;const v=o(this,Pe).get(c);v&&(Re(v.effect),o(this,Pe).delete(c))}for(const[a,c]of o(this,bt)){if(a===s||o(this,is).has(a))continue;const v=()=>{if(Array.from(o(this,ot).values()).includes(a)){var u=document.createDocumentFragment();mn(c,u),u.append(Pt()),o(this,Pe).set(a,{effect:c,fragment:u})}else Re(c);o(this,is).delete(a),o(this,bt).delete(a)};o(this,Qs)||!n?(o(this,is).add(a),fs(c,v,!1)):v()}}});L(this,Er,t=>{o(this,ot).delete(t);const s=Array.from(o(this,ot).values());for(const[n,l]of o(this,Pe))s.includes(n)||(Re(l.effect),o(this,Pe).delete(n))});this.anchor=t,F(this,Qs,s)}ensure(t,s){var n=A,l=ca();if(s&&!o(this,bt).has(t)&&!o(this,Pe).has(t))if(l){var a=document.createDocumentFragment(),c=Pt();a.append(c),o(this,Pe).set(t,{effect:Ke(()=>s(c)),fragment:a})}else o(this,bt).set(t,Ke(()=>s(this.anchor)));if(o(this,ot).set(n,t),l){for(const[v,f]of o(this,bt))v===t?n.unskip_effect(f):n.skip_effect(f);for(const[v,f]of o(this,Pe))v===t?n.unskip_effect(f.effect):n.skip_effect(f.effect);n.oncommit(o(this,Xs)),n.ondiscard(o(this,Er))}else o(this,Xs).call(this,n)}}ot=new WeakMap,bt=new WeakMap,Pe=new WeakMap,is=new WeakMap,Qs=new WeakMap,Xs=new WeakMap,Er=new WeakMap;function ee(e,t,s=!1){var n=new pc(e),l=s?As:0;function a(c,v){n.ensure(c,v)}_n(()=>{var c=!1;t((v,f=0)=>{c=!0,a(f,v)}),c||a(-1,null)},l)}function hc(e,t,s){for(var n=[],l=t.length,a,c=t.length,v=0;v<l;v++){let S=t[v];fs(S,()=>{if(a){if(a.pending.delete(S),a.done.add(S),a.pending.size===0){var m=e.outrogroups;nn(e,Sr(a.done)),m.delete(a),m.size===0&&(e.outrogroups=null)}}else c-=1},!1)}if(c===0){var f=n.length===0&&s!==null;if(f){var u=s,_=u.parentNode;Wo(_),_.append(u),e.items.clear()}nn(e,t,!f)}else a={pending:new Set(t),done:new Set},(e.outrogroups??(e.outrogroups=new Set)).add(a)}function nn(e,t,s=!0){var n;if(e.pending.size>0){n=new Set;for(const c of e.pending.values())for(const v of c)n.add(e.items.get(v).e)}for(var l=0;l<t.length;l++){var a=t[l];if(n!=null&&n.has(a)){a.f|=gt;const c=document.createDocumentFragment();mn(a,c)}else Re(t[l],s)}}var Tl;function fr(e,t,s,n,l,a=null){var c=e,v=new Map,f=(t&Bl)!==0;if(f){var u=e;c=u.appendChild(Pt())}var _=null,S=ta(()=>{var B=s();return an(B)?B:B==null?[]:Sr(B)}),m,k=new Map,w=!0;function T(B){h.effect.f&Ge||(h.pending.delete(B),h.fallback=_,_c(h,m,c,t,n),_!==null&&(m.length===0?_.f&gt?(_.f^=gt,js(_,null,c)):gn(_):fs(_,()=>{_=null})))}function b(B){h.pending.delete(B)}var C=_n(()=>{m=r(S);for(var B=m.length,de=new Set,Ee=A,Ze=ca(),ve=0;ve<B;ve+=1){var be=m[ve],U=n(be,ve),z=w?null:v.get(U);z?(z.v&&Ts(z.v,be),z.i&&Ts(z.i,ve),Ze&&Ee.unskip_effect(z.e)):(z=bc(v,w?c:Tl??(Tl=Pt()),be,U,ve,l,t,s),w||(z.e.f|=gt),v.set(U,z)),de.add(U)}if(B===0&&a&&!_&&(w?_=Ke(()=>a(c)):(_=Ke(()=>a(Tl??(Tl=Pt()))),_.f|=gt)),B>de.size&&eo(),!w)if(k.set(Ee,de),Ze){for(const[et,$e]of v)de.has(et)||Ee.skip_effect($e.e);Ee.oncommit(T),Ee.ondiscard(b)}else T(Ee);r(S)}),h={effect:C,items:v,pending:k,outrogroups:null,fallback:_};w=!1}function Ps(e){for(;e!==null&&!(e.f&ft);)e=e.next;return e}function _c(e,t,s,n,l){var z,et,$e,$t,yt,Ds,kt,Le,Jt;var a=(n&vo)!==0,c=t.length,v=e.items,f=Ps(e.effect.first),u,_=null,S,m=[],k=[],w,T,b,C;if(a)for(C=0;C<c;C+=1)w=t[C],T=l(w,C),b=v.get(T).e,b.f&gt||((et=(z=b.nodes)==null?void 0:z.a)==null||et.measure(),(S??(S=new Set)).add(b));for(C=0;C<c;C+=1){if(w=t[C],T=l(w,C),b=v.get(T).e,e.outrogroups!==null)for(const pe of e.outrogroups)pe.pending.delete(b),pe.done.delete(b);if(b.f&Ae&&(gn(b),a&&(($t=($e=b.nodes)==null?void 0:$e.a)==null||$t.unfix(),(S??(S=new Set)).delete(b))),b.f&gt)if(b.f^=gt,b===f)js(b,null,s);else{var h=_?_.next:f;b===e.effect.last&&(e.effect.last=b.prev),b.prev&&(b.prev.next=b.next),b.next&&(b.next.prev=b.prev),Ht(e,_,b),Ht(e,b,h),js(b,h,s),_=b,m=[],k=[],f=Ps(_.next);continue}if(b!==f){if(u!==void 0&&u.has(b)){if(m.length<k.length){var B=k[0],de;_=B.prev;var Ee=m[0],Ze=m[m.length-1];for(de=0;de<m.length;de+=1)js(m[de],B,s);for(de=0;de<k.length;de+=1)u.delete(k[de]);Ht(e,Ee.prev,Ze.next),Ht(e,_,Ee),Ht(e,Ze,B),f=B,_=Ze,C-=1,m=[],k=[]}else u.delete(b),js(b,f,s),Ht(e,b.prev,b.next),Ht(e,b,_===null?e.effect.first:_.next),Ht(e,_,b),_=b;continue}for(m=[],k=[];f!==null&&f!==b;)(u??(u=new Set)).add(f),k.push(f),f=Ps(f.next);if(f===null)continue}b.f&gt||m.push(b),_=b,f=Ps(b.next)}if(e.outrogroups!==null){for(const pe of e.outrogroups)pe.pending.size===0&&(nn(e,Sr(pe.done)),(yt=e.outrogroups)==null||yt.delete(pe));e.outrogroups.size===0&&(e.outrogroups=null)}if(f!==null||u!==void 0){var ve=[];if(u!==void 0)for(b of u)b.f&Ae||ve.push(b);for(;f!==null;)!(f.f&Ae)&&f!==e.fallback&&ve.push(f),f=Ps(f.next);var be=ve.length;if(be>0){var U=n&Bl&&c===0?s:null;if(a){for(C=0;C<be;C+=1)(kt=(Ds=ve[C].nodes)==null?void 0:Ds.a)==null||kt.measure();for(C=0;C<be;C+=1)(Jt=(Le=ve[C].nodes)==null?void 0:Le.a)==null||Jt.fix()}hc(e,ve,U)}}a&&Kt(()=>{var pe,tt;if(S!==void 0)for(b of S)(tt=(pe=b.nodes)==null?void 0:pe.a)==null||tt.apply()})}function bc(e,t,s,n,l,a,c,v){var f=c&co?c&uo?ps(s):N(s,!1,!1):null,u=c&fo?ps(l):null;return{v:f,i:u,e:Ke(()=>(a(t,f??s,u??l,v),()=>{e.delete(n)}))}}function js(e,t,s){if(e.nodes)for(var n=e.nodes.start,l=e.nodes.end,a=t&&!(t.f&gt)?t.nodes.start:s;n!==null;){var c=tr(n);if(a.before(n),n===l)return;n=c}}function Ht(e,t,s){t===null?e.effect.first=s:t.next=s,s===null?e.effect.last=t:s.prev=t}const Ol=[...`
2
+ \r\f \v\uFEFF`];function gc(e,t,s){var n=e==null?"":""+e;if(t&&(n=n?n+" "+t:t),s){for(var l of Object.keys(s))if(s[l])n=n?n+" "+l:l;else if(n.length)for(var a=l.length,c=0;(c=n.indexOf(l,c))>=0;){var v=c+a;(c===0||Ol.includes(n[c-1]))&&(v===n.length||Ol.includes(n[v]))?n=(c===0?"":n.substring(0,c))+n.substring(v+1):c=v}}return n===""?null:n}function mc(e,t){return e==null?null:String(e)}function ie(e,t,s,n,l,a){var c=e.__className;if(c!==s||c===void 0){var v=gc(s,n,a);v==null?e.removeAttribute("class"):t?e.className=v:e.setAttribute("class",v),e.__className=s}else if(a&&l!==a)for(var f in a){var u=!!a[f];(l==null||u!==!!l[f])&&e.classList.toggle(f,u)}return a}function wc(e,t,s,n){var l=e.__style;if(l!==t){var a=mc(t);a==null?e.removeAttribute("style"):e.style.cssText=a,e.__style=t}return n}function Ea(e,t,s=!1){if(e.multiple){if(t==null)return;if(!an(t))return bo();for(var n of e.options)n.selected=t.includes(Ws(n));return}for(n of e.options){var l=Ws(n);if(Vo(l,t)){n.selected=!0;return}}(!s||t!==void 0)&&(e.selectedIndex=-1)}function yc(e){var t=new MutationObserver(()=>{Ea(e,e.__value)});t.observe(e,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["value"]}),hn(()=>{t.disconnect()})}function vr(e,t,s=t){var n=new WeakSet,l=!0;fa(e,"change",a=>{var c=a?"[selected]":":checked",v;if(e.multiple)v=[].map.call(e.querySelectorAll(c),Ws);else{var f=e.querySelector(c)??e.querySelector("option:not([disabled])");v=f&&Ws(f)}s(v),e.__value=v,A!==null&&n.add(A)}),Go(()=>{var a=t();if(e===document.activeElement){var c=A;if(n.has(c))return}if(Ea(e,a,l),l&&a===void 0){var v=e.querySelector(":checked");v!==null&&(a=Ws(v),s(a))}e.__value=a,l=!1}),yc(e)}function Ws(e){return"__value"in e?e.__value:e.value}const kc=Symbol("is custom element"),xc=Symbol("is html");function ur(e,t,s,n){var l=Ec(e);l[t]!==(l[t]=s)&&(s==null?e.removeAttribute(t):typeof s!="string"&&Sc(e).includes(t)?e[t]=s:e.setAttribute(t,s))}function Ec(e){return e.__attributes??(e.__attributes={[kc]:e.nodeName.includes("-"),[xc]:e.namespaceURI===Vl})}var Rl=new Map;function Sc(e){var t=e.getAttribute("is")||e.nodeName,s=Rl.get(t);if(s)return s;Rl.set(t,s=[]);for(var n,l=e,a=Element.prototype;a!==l;){n=Fl(l);for(var c in n)n[c].set&&s.push(c);l=on(l)}return s}function gs(e,t,s=t){var n=new WeakSet;fa(e,"input",async l=>{var a=l?e.defaultValue:e.value;if(a=Ur(e)?qr(a):a,s(a),A!==null&&n.add(A),await rc(),a!==(a=t())){var c=e.selectionStart,v=e.selectionEnd,f=e.value.length;if(e.value=a??"",v!==null){var u=e.value.length;c===v&&v===f&&u>f?(e.selectionStart=u,e.selectionEnd=u):(e.selectionStart=c,e.selectionEnd=Math.min(v,u))}}}),y(t)==null&&e.value&&(s(Ur(e)?qr(e.value):e.value),A!==null&&n.add(A)),Cr(()=>{var l=t();if(e===document.activeElement){var a=A;if(n.has(a))return}Ur(e)&&l===qr(e.value)||e.type==="date"&&!l&&!e.value||l!==e.value&&(e.value=l??"")})}function Ur(e){var t=e.type;return t==="number"||t==="range"}function qr(e){return e===""?null:+e}function Ll(e){return function(...t){var s=t[0];s.target===this&&(e==null||e.apply(this,t))}}function Mc(e){return function(...t){var s=t[0];return s.stopPropagation(),e==null?void 0:e.apply(this,t)}}function Ac(e){return function(...t){var s=t[0];return s.preventDefault(),e==null?void 0:e.apply(this,t)}}function Cc(e=!1){const t=ce,s=t.l.u;if(!s)return;let n=()=>nc(t.s);if(e){let l=0,a={};const c=un(()=>{let v=!1;const f=t.s;for(const u in f)f[u]!==a[u]&&(a[u]=f[u],v=!0);return v&&l++,l});n=()=>r(c)}s.b.length&&Ko(()=>{Dl(t,n),zr(s.b)}),El(()=>{const l=y(()=>s.m.map(Qi));return()=>{for(const a of l)typeof a=="function"&&a()}}),s.a.length&&El(()=>{Dl(t,n),zr(s.a)})}function Dl(e,t){if(e.l.s)for(const s of e.l.s)r(s);t()}const Tc="5";var Il;typeof window<"u"&&((Il=window.__svelte??(window.__svelte={})).v??(Il.v=new Set)).add(Tc);yo();var Oc=Tr('<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" class="svelte-d3ct2b"><circle cx="12" cy="12" r="5" class="svelte-d3ct2b"></circle><line x1="12" y1="1" x2="12" y2="3" class="svelte-d3ct2b"></line><line x1="12" y1="21" x2="12" y2="23" class="svelte-d3ct2b"></line><line x1="4.22" y1="4.22" x2="5.64" y2="5.64" class="svelte-d3ct2b"></line><line x1="18.36" y1="18.36" x2="19.78" y2="19.78" class="svelte-d3ct2b"></line><line x1="1" y1="12" x2="3" y2="12" class="svelte-d3ct2b"></line><line x1="21" y1="12" x2="23" y2="12" class="svelte-d3ct2b"></line><line x1="4.22" y1="19.78" x2="5.64" y2="18.36" class="svelte-d3ct2b"></line><line x1="18.36" y1="5.64" x2="19.78" y2="4.22" class="svelte-d3ct2b"></line></svg>'),Rc=Tr('<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" class="svelte-d3ct2b"><path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z" class="svelte-d3ct2b"></path></svg>'),Lc=J('<div><i></i> <span class="svelte-d3ct2b"> </span></div>'),Dc=J('<span class="health-error svelte-d3ct2b"> </span>'),Nc=J('<span class="health-error svelte-d3ct2b"> </span>'),Ic=J('<span class="dropdown-badge svelte-d3ct2b"> </span>'),Fc=J('<div class="dropdown svelte-d3ct2b"><button><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" class="svelte-d3ct2b"><circle cx="12" cy="12" r="3" class="svelte-d3ct2b"></circle><path d="M12 1v4M12 19v4M4.22 4.22l2.83 2.83M16.95 16.95l2.83 2.83M1 12h4M19 12h4" class="svelte-d3ct2b"></path></svg> Core Engine</button> <button><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" class="svelte-d3ct2b"><circle cx="12" cy="12" r="4" class="svelte-d3ct2b"></circle><path d="M4 12H2M22 12h-2M12 4V2M12 22v-2" class="svelte-d3ct2b"></path><path d="m6.34 6.34-1.41-1.42M19.07 19.07l-1.41-1.41" class="svelte-d3ct2b"></path></svg> Commit Hook <!></button></div>'),Pc=Tr('<svg width="16" height="16" viewBox="0 0 24 24" fill="currentColor" class="svelte-d3ct2b"><polygon points="5 3 19 12 5 21 5 3" class="svelte-d3ct2b"></polygon></svg>'),$c=Tr('<svg width="16" height="16" viewBox="0 0 24 24" fill="currentColor" class="svelte-d3ct2b"><rect x="6" y="4" width="4" height="16" class="svelte-d3ct2b"></rect><rect x="14" y="4" width="4" height="16" class="svelte-d3ct2b"></rect></svg>'),jc=J('<div class="log-row log-row-warn svelte-d3ct2b"><span class="log-time svelte-d3ct2b">--:--:--</span> <span class="log-label label-warn svelte-d3ct2b">ARCH</span> <span class="log-msg svelte-d3ct2b">Custom architecture — no profile rules loaded. Add rules: memory-core remember "..." --type rule</span></div> <div class="log-row svelte-d3ct2b"><span class="log-time svelte-d3ct2b">--:--:--</span> <span class="log-label label-sys svelte-d3ct2b">SYS</span> <span class="log-msg svelte-d3ct2b">Or load a profile when ready: memory-core seed --arch clean-architecture</span></div>',1),Bc=J('<div class="log-row log-row-warn svelte-d3ct2b"><span class="log-time svelte-d3ct2b">--:--:--</span> <span class="log-label label-warn svelte-d3ct2b">WARN</span> <span class="log-msg svelte-d3ct2b">No architecture rules configured in .memory-core.json — nothing to watch.</span></div> <div class="log-row svelte-d3ct2b"><span class="log-time svelte-d3ct2b">--:--:--</span> <span class="log-label label-sys svelte-d3ct2b">SYS</span> <span class="log-msg svelte-d3ct2b">Awaiting manual rule configuration...</span></div>',1),Vc=J('<div class="log-row svelte-d3ct2b"><span class="log-time svelte-d3ct2b">--:--:--</span> <span class="log-label label-sys svelte-d3ct2b">SYS</span> <span class="log-msg svelte-d3ct2b">Initialization sequence started for memory-core...</span></div> <div class="log-row svelte-d3ct2b"><span class="log-time svelte-d3ct2b">--:--:--</span> <span class="log-label label-ok svelte-d3ct2b">DB</span> <span class="log-msg svelte-d3ct2b">Waiting for PostgreSQL connection...</span></div> <!> <div class="log-row svelte-d3ct2b"><span class="log-time svelte-d3ct2b"></span> <span class="log-label svelte-d3ct2b"></span> <span class="log-msg cursor-blink svelte-d3ct2b">_</span></div>',1),Hc=J('· <em class="svelte-d3ct2b"> </em>',1),Wc=J('<br class="svelte-d3ct2b"/><span class="detail-fix svelte-d3ct2b"> </span>',1),Uc=J('<div class="log-detail svelte-d3ct2b"><span class="detail-index svelte-d3ct2b"> </span> <span class="detail-body svelte-d3ct2b"><strong class="svelte-d3ct2b"> </strong> <!> <!> <!></span></div>'),qc=J('<div><span class="log-time svelte-d3ct2b"> </span> <span> </span> <span class="log-msg svelte-d3ct2b"><!></span> <button class="copy-btn svelte-d3ct2b" title="Copy">⎘</button></div> <!>',1),zc=J('<div class="log-row svelte-d3ct2b"><span class="log-time svelte-d3ct2b">--:--:--</span> <span class="log-label label-ok svelte-d3ct2b">[OK]</span> <span class="log-msg svelte-d3ct2b">No commit hook violations in the last 24 hours.</span></div> <div class="log-row svelte-d3ct2b"><span class="log-time svelte-d3ct2b"></span> <span class="log-label svelte-d3ct2b"></span> <span class="log-msg cursor-blink svelte-d3ct2b">_</span></div>',1),Kc=J('<br class="svelte-d3ct2b"/><span class="detail-fix svelte-d3ct2b"> </span>',1),Yc=J('<div class="log-detail svelte-d3ct2b"><span class="detail-index svelte-d3ct2b"></span> <span class="detail-body svelte-d3ct2b"><!> <!></span></div>'),Gc=J('<div class="log-row log-row-fail svelte-d3ct2b"><span class="log-time svelte-d3ct2b"> </span> <span class="log-label label-hook svelte-d3ct2b"> </span> <span class="log-msg svelte-d3ct2b"><strong class="svelte-d3ct2b"> </strong> <!></span></div> <!>',1),Jc=J('<div class="section-header svelte-d3ct2b"><span class="section-title svelte-d3ct2b">Commit Hook</span> <span class="section-meta svelte-d3ct2b"> </span></div> <!>',1),Qc=J('<span class="rule-reason svelte-d3ct2b"> </span>'),Xc=J('<div class="rule-row svelte-d3ct2b"><span class="rule-badge svelte-d3ct2b"> </span> <span class="rule-scope svelte-d3ct2b"> </span> <span class="rule-content svelte-d3ct2b"> </span> <!> <button class="del-btn svelte-d3ct2b">✕</button></div>'),Zc=J('Custom architecture — no profile rules loaded. Add rules from the terminal: <code class="svelte-d3ct2b">memory-core remember "..." --type rule</code>',1),ef=J('<div class="log-row svelte-d3ct2b"><span class="log-msg svelte-d3ct2b" style="color: var(--outline)"><!></span></div>'),tf=J('<div class="section-header svelte-d3ct2b"><span class="section-title svelte-d3ct2b">Rule Engine</span> <span class="section-meta svelte-d3ct2b"> </span></div> <div class="rules-toolbar svelte-d3ct2b"><select class="rules-select svelte-d3ct2b"><option class="svelte-d3ct2b">All types</option><option class="svelte-d3ct2b">Rules</option><option class="svelte-d3ct2b">Decisions</option><option class="svelte-d3ct2b">Patterns</option><option class="svelte-d3ct2b">Ignores</option></select> <input class="rules-search svelte-d3ct2b" placeholder="Search rules..."/></div> <div class="rule-form-wrap svelte-d3ct2b"><form class="rule-form svelte-d3ct2b"><div class="rule-form-row svelte-d3ct2b"><select class="rules-select svelte-d3ct2b"><option class="svelte-d3ct2b">Rule</option><option class="svelte-d3ct2b">Decision</option><option class="svelte-d3ct2b">Pattern</option><option class="svelte-d3ct2b">Ignore</option></select> <select class="rules-select svelte-d3ct2b"><option class="svelte-d3ct2b">Project</option><option class="svelte-d3ct2b">Global</option></select> <input class="rules-input svelte-d3ct2b" placeholder="Reason"/> <input class="rules-input svelte-d3ct2b" placeholder="Tags"/></div> <div class="rule-form-row svelte-d3ct2b"><textarea rows="2" class="rules-textarea svelte-d3ct2b" placeholder="Rule or decision content..."></textarea> <button class="add-btn svelte-d3ct2b"> </button></div></form></div> <div class="rule-list svelte-d3ct2b"></div>',1),sf=J("<div> </div>"),rf=J('<div class="modal-backdrop svelte-d3ct2b" role="presentation"><div class="modal svelte-d3ct2b"><div class="modal-header svelte-d3ct2b"><span class="modal-title svelte-d3ct2b">Settings</span> <button class="modal-close svelte-d3ct2b">✕</button></div> <section class="modal-section svelte-d3ct2b"><div class="modal-section-title svelte-d3ct2b">AI Model</div> <div class="modal-row svelte-d3ct2b"><label class="modal-label svelte-d3ct2b" for="model-provider">Provider</label> <select id="model-provider" class="modal-input svelte-d3ct2b"><option class="svelte-d3ct2b">Ollama (local)</option><option class="svelte-d3ct2b">OpenAI</option><option class="svelte-d3ct2b">Anthropic</option><option class="svelte-d3ct2b">MiniMax</option><option class="svelte-d3ct2b">OpenAI-compatible</option></select></div> <div class="modal-row svelte-d3ct2b"><label class="modal-label svelte-d3ct2b" for="model-name">Model</label> <input id="model-name" class="modal-input svelte-d3ct2b" placeholder="e.g. llama3.2, gpt-4o, claude-sonnet-4-6"/></div> <div class="modal-row svelte-d3ct2b"><div class="svelte-d3ct2b"></div> <div class="modal-row-actions svelte-d3ct2b"><button class="modal-btn modal-btn-primary svelte-d3ct2b"> </button> <button class="modal-btn svelte-d3ct2b">Refresh Config</button></div></div> <!></section> <section class="modal-section svelte-d3ct2b"><div class="modal-section-title svelte-d3ct2b">Current Status</div> <div class="modal-status-row svelte-d3ct2b"><span class="modal-status-label svelte-d3ct2b">Provider</span><span class="modal-status-val svelte-d3ct2b"> </span></div> <div class="modal-status-row svelte-d3ct2b"><span class="modal-status-label svelte-d3ct2b">Model</span><span class="modal-status-val svelte-d3ct2b"> </span></div> <div class="modal-status-row svelte-d3ct2b"><span class="modal-status-label svelte-d3ct2b">Embedding</span><span class="modal-status-val svelte-d3ct2b"> </span></div> <div class="modal-status-row svelte-d3ct2b"><span class="modal-status-label svelte-d3ct2b">AI calls this session</span><span class="modal-status-val svelte-d3ct2b"> </span></div> <div class="modal-status-row svelte-d3ct2b"><span class="modal-status-label svelte-d3ct2b">Total tokens</span><span class="modal-status-val svelte-d3ct2b"> </span></div> <div class="modal-status-row svelte-d3ct2b"><span class="modal-status-label svelte-d3ct2b">Input / Output</span><span class="modal-status-val svelte-d3ct2b"> </span></div></section></div></div>'),nf=J('<div><header class="topbar svelte-d3ct2b"><div class="topbar-brand svelte-d3ct2b"><span class="brand-name svelte-d3ct2b">memory-core</span> <nav class="topbar-nav svelte-d3ct2b"><button>Dashboard</button> <button>Live Feed</button> <button>Metrics</button></nav></div> <div class="topbar-search svelte-d3ct2b"><span class="search-icon svelte-d3ct2b">⌕</span> <input class="search-input svelte-d3ct2b" placeholder="Search system logs, traces, and metrics..." type="text"/></div> <div class="topbar-actions svelte-d3ct2b"><button class="icon-btn svelte-d3ct2b" title="Notifications"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" class="svelte-d3ct2b"><path d="M18 8A6 6 0 0 0 6 8c0 7-3 9-3 9h18s-3-2-3-9" class="svelte-d3ct2b"></path><path d="M13.73 21a2 2 0 0 1-3.46 0" class="svelte-d3ct2b"></path></svg></button> <button><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" class="svelte-d3ct2b"><rect x="2" y="3" width="20" height="14" rx="2" class="svelte-d3ct2b"></rect><path d="m7 21 5-5 5 5" class="svelte-d3ct2b"></path><path d="m7 8 3 3-3 3" class="svelte-d3ct2b"></path><path d="M13 14h4" class="svelte-d3ct2b"></path></svg></button> <button class="icon-btn svelte-d3ct2b" title="Settings"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" class="svelte-d3ct2b"><circle cx="12" cy="12" r="3" class="svelte-d3ct2b"></circle><path d="M19.07 4.93a10 10 0 0 1 0 14.14M4.93 4.93a10 10 0 0 0 0 14.14" class="svelte-d3ct2b"></path><path d="M12 2v2M12 20v2M2 12h2M20 12h2" class="svelte-d3ct2b"></path></svg></button> <button class="icon-btn svelte-d3ct2b"><!></button> <div class="avatar svelte-d3ct2b" title="System Administrator">S</div></div></header> <div class="body svelte-d3ct2b"><aside class="sidebar svelte-d3ct2b"><div class="sidebar-logo svelte-d3ct2b"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" class="svelte-d3ct2b"><circle cx="12" cy="12" r="3" class="svelte-d3ct2b"></circle><path d="M12 1v4M12 19v4M4.22 4.22l2.83 2.83M16.95 16.95l2.83 2.83M1 12h4M19 12h4M4.22 19.78l2.83-2.83M16.95 7.05l2.83-2.83" class="svelte-d3ct2b"></path></svg></div> <nav class="sidebar-nav svelte-d3ct2b"><button class="side-btn side-btn-active svelte-d3ct2b" title="Live Feed"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" class="svelte-d3ct2b"><rect x="2" y="3" width="20" height="14" rx="2" class="svelte-d3ct2b"></rect><path d="m7 21 5-5 5 5" class="svelte-d3ct2b"></path><path d="m7 8 3 3-3 3" class="svelte-d3ct2b"></path><path d="M13 14h4" class="svelte-d3ct2b"></path></svg></button></nav> <div></div></aside> <main class="content svelte-d3ct2b"><div class="health-bar svelte-d3ct2b"><span class="health-label svelte-d3ct2b">System Health:</span> <div class="health-badge health-green svelte-d3ct2b"><i class="dot dot-green svelte-d3ct2b"></i> <span class="svelte-d3ct2b"> </span></div> <div><i></i> <span class="svelte-d3ct2b"> </span></div> <div class="health-badge health-blue svelte-d3ct2b"><i class="dot dot-blue svelte-d3ct2b"></i> <span class="svelte-d3ct2b"> </span></div> <!> <!> <!></div> <div class="filter-bar svelte-d3ct2b"><div class="filter-left svelte-d3ct2b"><div class="chip chip-primary svelte-d3ct2b"><span class="svelte-d3ct2b">LEVEL: ALL</span> <button class="chip-close svelte-d3ct2b" title="Clear cache">✕</button></div> <div class="service-dropdown-wrap svelte-d3ct2b"><button class="chip chip-outline svelte-d3ct2b"><span class="svelte-d3ct2b"> </span> <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><polyline points="6 9 12 15 18 9" class="svelte-d3ct2b"></polyline></svg></button> <!></div> <div class="divider-v svelte-d3ct2b"></div> <div class="metrics-strip svelte-d3ct2b"><div class="metric-item svelte-d3ct2b"><span class="metric-label svelte-d3ct2b">VIOLATIONS</span> <span> </span></div> <div class="metric-item svelte-d3ct2b"><span class="metric-label svelte-d3ct2b">FILES</span> <span class="metric-value svelte-d3ct2b"> </span></div> <div class="metric-item svelte-d3ct2b"><span class="metric-label svelte-d3ct2b">RULES</span> <span class="metric-value svelte-d3ct2b"> </span></div></div></div> <div class="filter-right svelte-d3ct2b"><div class="live-badge svelte-d3ct2b"><i></i> <span class="svelte-d3ct2b"> </span></div> <button><!></button> <button class="icon-btn svelte-d3ct2b" title="Download snapshot"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" class="svelte-d3ct2b"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4" class="svelte-d3ct2b"></path><polyline points="7 10 12 15 17 10" class="svelte-d3ct2b"></polyline><line x1="12" y1="15" x2="12" y2="3" class="svelte-d3ct2b"></line></svg></button></div></div> <div class="feed-area svelte-d3ct2b"><!></div> <footer class="metrics-footer svelte-d3ct2b"><div class="footer-left svelte-d3ct2b"><div class="footer-metric svelte-d3ct2b"><span class="footer-label svelte-d3ct2b">Checks</span> <span class="footer-val svelte-d3ct2b"> </span> <span class="footer-unit svelte-d3ct2b">AI CALLS</span></div> <div class="footer-metric svelte-d3ct2b"><span class="footer-label svelte-d3ct2b">Tokens</span> <span class="footer-val svelte-d3ct2b"> </span> <span class="footer-unit svelte-d3ct2b"> </span></div> <div class="footer-metric svelte-d3ct2b"><span class="footer-label svelte-d3ct2b">Error Rate</span> <span class="footer-val footer-val-error svelte-d3ct2b"> </span></div> <div class="footer-metric svelte-d3ct2b"><span class="footer-label svelte-d3ct2b">Bypasses</span> <span> </span></div></div> <div class="footer-right svelte-d3ct2b"><div class="footer-actions svelte-d3ct2b"><button class="action-btn svelte-d3ct2b" title="Sync rules to all AI agent files"> </button> <button class="action-btn svelte-d3ct2b" title="Run full scan on all tracked files"> </button> <button class="action-btn action-btn-warn svelte-d3ct2b" title="Tune noisy rules"> </button></div> <div class="storage-bar-wrap svelte-d3ct2b"><div class="storage-bar svelte-d3ct2b"><div class="storage-fill svelte-d3ct2b"></div></div> <span class="footer-label svelte-d3ct2b"> </span></div></div></footer></main></div> <!></div>');function lf(e,t){Ul(t,!1);const s=N(),n=N(),l=N(),a=N(),c=N(),v=N(),f=N(),u=N(),_=N(),S=N(),m=N(),k=N(),w=N(),T=N(),b=N(),C=N();let h=N({config:null,stats:{rules:{},files:{},topRules:[],topFiles:[]},files:[],memories:[]}),B=N([]),de=N(!1),Ee=N("all"),Ze=N(""),ve=N(!1),be=N(""),U=N({type:"rule",scope:"project",content:"",reason:"",tags:"dashboard"}),z=N("live-feed"),et=N("live-feed"),$e=N(!1),$t=N("core-engine"),yt=N(!1),Ds=N(""),kt=N(!1),Le=N({provider:"",model:""}),Jt=N(!1),pe=N(""),tt=N("");const Sa=24*60*60*1e3;function sr(i){r(yt)||x(B,[{...i,id:crypto.randomUUID()},...r(B)].slice(0,80))}function wn(i){return i.type==="saved"?{type:"saved",timestamp:i.timestamp,file:i.file}:i.type==="clean"?{type:"clean",timestamp:i.timestamp,file:i.file}:i.type==="skipped"?{type:"skipped",timestamp:i.timestamp,file:i.file,reason:i.reason}:i.type==="violations"?{type:"violations",timestamp:i.timestamp,file:i.file,violations:i.violations}:i.type==="log"?{type:"log",timestamp:i.timestamp,file:i.file,message:i.message}:i.type==="error"?{type:"error",timestamp:i.timestamp,message:i.message}:i.type==="ready"?{type:"system",timestamp:i.timestamp,message:`Watching ${i.path} | ${i.rules} rules | ${i.model}`}:{type:"system",timestamp:i.timestamp,message:"Watch stopped"}}function rr(i){const g=r(h).files??[],R=g.findIndex(K=>K.file===i.file),D=g.slice();return R===-1?D.push(i):D[R]=i,D.sort((K,te)=>te.lastSeen.localeCompare(K.lastSeen))}function Ma(i){const g=r(h).watcher??{enabled:!0,running:!1,path:void 0,model:void 0,rules:void 0,lastEventAt:void 0,error:void 0};let R=r(h).files,D={...g,lastEventAt:i.timestamp,enabled:!0};i.type==="ready"&&(D={...D,running:!0,error:void 0,path:i.path,model:i.model,rules:i.rules}),i.type==="saved"&&(R=rr({file:i.file,status:"checking",lastSeen:i.timestamp,violations:[]})),i.type==="clean"&&(R=rr({file:i.file,status:"clean",lastSeen:i.timestamp,violations:[]})),i.type==="skipped"&&(R=rr({file:i.file,status:"skipped",lastSeen:i.timestamp,violations:[],message:i.reason})),i.type==="violations"&&(R=rr({file:i.file,status:"violations",lastSeen:i.timestamp,violations:i.violations})),i.type==="error"&&(D={...D,running:!1,error:i.message}),i.type==="stopped"&&(D={...D,running:!1});const K=[i,...r(h).events??[]].slice(0,100);x(h,{...r(h),files:R,events:K,watcher:D})}function Or(i=[]){x(B,i.map(wn).map(g=>({...g,id:crypto.randomUUID()})).reverse().slice(0,80))}function yn(i){return new Intl.DateTimeFormat(void 0,{hour:"2-digit",minute:"2-digit",second:"2-digit"}).format(new Date(i))}function kn(i,g){const R=i.file||g;return i.line?`${R}:${i.line}`:R}function Aa(i){return i.type==="saved"?"SAVE":i.type==="clean"?"OK":i.type==="skipped"?"SKIP":i.type==="violations"?"FAIL":i.type==="log"?"CHCK":i.type==="error"?"WARN":"SYS"}function Ca(i){return i.type==="clean"?"label-ok":i.type==="violations"||i.type==="error"?"label-warn":i.type==="log"?"label-chck":i.type==="system"?"label-sys":"label-info"}async function Ns(){const i=await fetch(`/api/snapshot?t=${Date.now()}`,{cache:"no-store"});x(h,await i.json()),Or(r(h).events)}async function Ta(){x(be,"");try{const i=await fetch("/api/refresh",{method:"POST",headers:{"content-type":"application/json"},cache:"no-store"});if(!i.ok)throw new Error((await i.json()).error??"Refresh failed");const g=await i.json();g.snapshot?(x(h,g.snapshot),Or(r(h).events)):await Ns()}catch(i){x(be,i.message)}}function Oa(){try{localStorage.clear(),sessionStorage.clear()}finally{location.reload()}}async function Ra(){if(!(!r(Le).provider&&!r(Le).model)){x(Jt,!0),x(pe,"");try{const i=await fetch("/api/config/model",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(r(Le))});if(!i.ok)throw new Error((await i.json()).error??"Save failed");x(pe,"✓ Model updated — takes effect immediately"),await Ns()}catch(i){x(pe,`✗ ${i.message}`)}finally{x(Jt,!1)}}}async function Rr(i){x(tt,i);try{await fetch(`/api/actions/${i}`,{method:"POST"}),sr({type:"system",timestamp:new Date().toISOString(),message:`Action started: memory-core ${i==="check-all"?"check --all":i}`})}catch{}finally{x(tt,"")}}function xn(){const i=location.protocol==="https:"?"wss:":"ws:",g=new WebSocket(`${i}//${location.host}/ws`);g.addEventListener("open",()=>{x(de,!0),sr({type:"system",timestamp:new Date().toISOString(),message:"Dashboard connected"})}),g.addEventListener("close",()=>{x(de,!1),sr({type:"error",timestamp:new Date().toISOString(),message:"Dashboard disconnected"}),setTimeout(xn,1500)}),g.addEventListener("message",R=>{const D=JSON.parse(R.data);if(D.type==="snapshot"){x(h,D.snapshot),r(B).length===0&&Or(r(h).events);return}if(D.type==="stats"){x(h,{...r(h),stats:D.stats});return}D.type==="watch"&&(Ma(D.event),sr(wn(D.event)))})}async function La(){if(r(U).content.trim()){x(ve,!0),x(be,"");try{const i=await fetch("/api/memories",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(r(U))});if(!i.ok)throw new Error((await i.json()).error??"Save failed");x(U,{type:"rule",scope:"project",content:"",reason:"",tags:"dashboard"}),await Ns()}catch(i){x(be,i.message)}finally{x(ve,!1)}}}async function Da(i){x(be,"");const g=await fetch(`/api/memories/${i}`,{method:"DELETE"});if(!g.ok){x(be,(await g.json()).error??"Delete failed");return}await Ns()}function En(i){x($t,i),x($e,!1),i==="commit-hook"?x(z,"commit-hook"):x(z,"live-feed")}function Na(){x(z,r(z)==="commit-hook"?"live-feed":"commit-hook"),x($t,r(z)==="commit-hook"?"commit-hook":"core-engine")}function Ia(i){r($e)&&(i.target.closest(".service-dropdown-wrap")||x($e,!1))}let bs=N(localStorage.getItem("mc-theme")==="dark"||!localStorage.getItem("mc-theme")&&window.matchMedia("(prefers-color-scheme: dark)").matches);function Fa(){x(bs,!r(bs)),localStorage.setItem("mc-theme",r(bs)?"dark":"light")}Ns().catch(i=>{x(be,i.message)}),xn(),ke(()=>(r(h),r(Ee),r(Ze)),()=>{x(s,r(h).memories.filter(i=>{const g=r(Ee)==="all"||i.type===r(Ee),R=`${i.type} ${i.scope} ${i.content} ${i.reason??""} ${i.tags.join(" ")}`.toLowerCase();return g&&R.includes(r(Ze).toLowerCase())}))}),ke(()=>r(h),()=>{x(n,r(h).files.reduce((i,g)=>i+g.violations.length,0))}),ke(()=>r(h),()=>{x(l,r(h).files.filter(i=>i.status==="clean").length)}),ke(()=>r(h),()=>{x(a,Object.values(r(h).stats.rules).reduce((i,g)=>i+g,0))}),ke(()=>r(h),()=>{x(c,r(h).stats.recentViolations??[])}),ke(()=>r(c),()=>{x(v,r(c).filter(i=>{if(!(i.source==="hook"||i.source==="ci"))return!1;const g=Date.parse(i.timestamp);return Number.isNaN(g)?!1:Date.now()-g<=Sa}))}),ke(()=>r(n),()=>{x(f,r(n))}),ke(()=>r(h),()=>{x(u,r(h).files.filter(i=>i.status!=="checking").length)}),ke(()=>r(h),()=>{x(_,r(h).memories.filter(i=>["rule","pattern","decision"].includes(i.type)).length)}),ke(()=>r(h),()=>{var i;x(S,((i=r(h).memoryCount)==null?void 0:i.total)??r(h).memories.length)}),ke(()=>(r(de),r(h)),()=>{var i,g;x(m,r(de)?((i=r(h).watcher)==null?void 0:i.enabled)===!1?{live:!1,label:"Watch off"}:(g=r(h).watcher)!=null&&g.running?{live:!0,label:"Watcher live"}:{live:!1,label:"Watcher idle"}:{live:!1,label:"Disconnected"})}),ke(()=>r(h),()=>{var i;x(k,((i=r(h).runtime)==null?void 0:i.postgres.connected)??!1)}),ke(()=>r(h),()=>{var i;x(w,((i=r(h).runtime)==null?void 0:i.model.ollamaReachable)??!1)}),ke(()=>r(h),()=>{var i,g;x(T,(((i=r(h).runtime)==null?void 0:i.model.checkModelResolved)??((g=r(h).runtime)==null?void 0:g.model.chatModel)??"unknown").toUpperCase())}),ke(()=>r(h),()=>{var i,g;x(b,((i=r(h).runtime)==null?void 0:i.project.backendArchitecture)==="custom"||((g=r(h).runtime)==null?void 0:g.project.frontendFramework)==="custom")}),ke(()=>r(h),()=>{x(C,(()=>{var D,K;const i=(D=r(h).runtime)==null?void 0:D.project.backendArchitecture,g=(K=r(h).runtime)==null?void 0:K.project.frontendFramework,R=[i?i==="custom"?"Custom":i:null,g?g==="custom"?"Custom":g:null].filter(Boolean);return R.length>0?R.join(" / "):null})())}),Jo(),Cc();var Lr=nf();Z("click",tn,Ia);let Sn;var Mn=p(Lr),An=p(Mn),Pa=d(p(An),2),Dr=p(Pa);let Cn;var Nr=d(Dr,2);let Tn;var On=d(Nr,2);let Rn;var Ln=d(An,2),$a=d(p(Ln),2),ja=d(Ln,2),nr=d(p(ja),2);let Dn;var Nn=d(nr,2),Ir=d(Nn,2),Ba=p(Ir);{var Va=i=>{var g=Oc();O(i,g)},Ha=i=>{var g=Rc();O(i,g)};ee(Ba,i=>{r(bs)?i(Va):i(Ha,-1)})}var In=d(Mn,2),Fn=p(In),Pn=d(p(Fn),4);let $n;var Wa=d(Fn,2),jn=p(Wa),Bn=d(p(jn),2),Ua=d(p(Bn),2),qa=p(Ua),Fr=d(Bn,2);let Vn;var Hn=p(Fr);let Wn;var za=d(Hn,2),Ka=p(za),Un=d(Fr,2),Ya=d(p(Un),2),Ga=p(Ya),qn=d(Un,2);{var Ja=i=>{var g=Lc();let R;var D=p(g);let K;var te=d(D,2),ne=p(te);q(Y=>{R=ie(g,1,"health-badge svelte-d3ct2b",null,R,{"health-warn":r(b),"health-green":!r(b)}),K=ie(D,1,"dot svelte-d3ct2b",null,K,{"dot-warn":r(b),"dot-green":!r(b)}),M(ne,`ARCH: ${Y??""}${r(b)?" — ADD RULES":""}`)},[()=>(r(C),y(()=>r(C).toUpperCase()))]),O(i,g)};ee(qn,i=>{r(C)&&i(Ja)})}var zn=d(qn,2);{var Qa=i=>{var g=Dc(),R=p(g);q(()=>M(R,(r(h),y(()=>r(h).dbError)))),O(i,g)};ee(zn,i=>{r(h),y(()=>r(h).dbError)&&i(Qa)})}var Xa=d(zn,2);{var Za=i=>{var g=Nc(),R=p(g);q(()=>M(R,r(be))),O(i,g)};ee(Xa,i=>{r(be)&&i(Za)})}var Kn=d(jn,2),Yn=p(Kn),Gn=p(Yn),ei=d(p(Gn),2),Jn=d(Gn,2),Pr=p(Jn),Qn=p(Pr),ti=p(Qn),si=d(Qn,2);let Xn;var ri=d(Pr,2);{var ni=i=>{var g=Fc(),R=p(g);let D;var K=d(R,2);let te;var ne=d(p(K),2);{var Y=Q=>{var E=Ic(),le=p(E);q(()=>M(le,(r(v),y(()=>r(v).length)))),O(Q,E)};ee(ne,Q=>{r(v),y(()=>r(v).length>0)&&Q(Y)})}q(()=>{D=ie(R,1,"dropdown-item svelte-d3ct2b",null,D,{"dropdown-item-active":r($t)==="core-engine"}),te=ie(K,1,"dropdown-item svelte-d3ct2b",null,te,{"dropdown-item-active":r($t)==="commit-hook"})}),Z("click",R,()=>En("core-engine")),Z("click",K,()=>En("commit-hook")),O(i,g)};ee(ri,i=>{r($e)&&i(ni)})}var li=d(Jn,4),Zn=p(li),el=d(p(Zn),2);let tl;var ai=p(el),sl=d(Zn,2),ii=d(p(sl),2),oi=p(ii),ci=d(sl,2),fi=d(p(ci),2),vi=p(fi),ui=d(Yn,2),rl=p(ui),nl=p(rl);let ll;var di=d(nl,2),pi=p(di),Is=d(rl,2);let al;var hi=p(Is);{var _i=i=>{var g=Pc();O(i,g)},bi=i=>{var g=$c();O(i,g)};ee(hi,i=>{r(yt)?i(_i):i(bi,-1)})}var gi=d(Is,2),il=d(Kn,2),mi=p(il);{var wi=i=>{var g=or(),R=He(g);{var D=te=>{var ne=Vc(),Y=d(He(ne),4);{var Q=le=>{var he=jc();O(le,he)},E=le=>{var he=Bc();O(le,he)};ee(Y,le=>{r(b)?le(Q):le(E,-1)})}O(te,ne)},K=te=>{var ne=or(),Y=He(ne);fr(Y,1,()=>(r(B),y(()=>[...r(B)].reverse())),Q=>Q.id,(Q,E)=>{var le=qc(),he=He(le);let H;var st=p(he),xt=p(st),je=d(st,2),Et=p(je),Ce=d(je,2),St=p(Ce);{var Mt=$=>{var V=pt();q(()=>M(V,(r(E),y(()=>r(E).message)))),O($,V)},At=$=>{var V=pt();q(()=>M(V,`saved: ${r(E),y(()=>r(E).file)??""}`)),O($,V)},Ct=$=>{var V=pt();q(()=>M(V,`${r(E),y(()=>r(E).file)??""} — no violations`)),O($,V)},Tt=$=>{var V=pt();q(()=>M(V,`${r(E),y(()=>r(E).file)??""} — skipped: ${r(E),y(()=>r(E).reason)??""}`)),O($,V)},Ot=$=>{var V=pt();q(()=>M(V,`${r(E),y(()=>r(E).file)??""} — ${r(E),y(()=>r(E).message)??""}`)),O($,V)},jt=$=>{var V=pt();q(()=>M(V,`${r(E),y(()=>r(E).violations.length)??""} violation${r(E),y(()=>r(E).violations.length===1?"":"s")??""} in ${r(E),y(()=>r(E).file)??""}`)),O($,V)};ee(St,$=>{r(E),y(()=>r(E).type==="system"||r(E).type==="error")?$(Mt):(r(E),y(()=>r(E).type==="saved")?$(At,1):(r(E),y(()=>r(E).type==="clean")?$(Ct,2):(r(E),y(()=>r(E).type==="skipped")?$(Tt,3):(r(E),y(()=>r(E).type==="log")?$(Ot,4):$(jt,-1)))))})}var Qt=d(Ce,2),we=d(he,2);{var Be=$=>{var V=or(),Rt=He(V);fr(Rt,3,()=>(r(E),y(()=>r(E).violations)),(W,I)=>`${r(E).id}-${I}`,(W,I,ye)=>{var Se=Uc(),rt=p(Se),ut=p(rt),Ve=d(rt,2),nt=p(Ve),Fs=p(nt),Xt=d(nt,2);{var X=De=>{var Bt=Hc(),jr=d(He(Bt)),Br=p(jr);q(()=>M(Br,(r(I),y(()=>r(I).rule)))),O(De,Bt)};ee(Xt,De=>{r(I),y(()=>r(I).rule)&&De(X)})}var ue=d(Xt,2);{var dt=De=>{var Bt=pt();q(()=>M(Bt,`— ${r(I),y(()=>r(I).issue)??""}`)),O(De,Bt)};ee(ue,De=>{r(I),y(()=>r(I).issue)&&De(dt)})}var ae=d(ue,2);{var lt=De=>{var Bt=Wc(),jr=d(He(Bt)),Br=p(jr);q(()=>M(Br,`→ ${r(I),y(()=>r(I).suggestion)??""}`)),O(De,Bt)};ee(ae,De=>{r(I),y(()=>r(I).suggestion)&&De(lt)})}q(De=>{M(ut,`[${r(ye)+1}]`),M(Fs,De)},[()=>(r(I),r(E),y(()=>kn(r(I),r(E).file)))]),O(W,Se)}),O($,V)};ee(we,$=>{r(E),y(()=>r(E).type==="violations")&&$(Be)})}q(($,V,Rt)=>{H=ie(he,1,"log-row svelte-d3ct2b",null,H,{"log-row-warn":r(E).type==="error","log-row-ok":r(E).type==="clean","log-row-fail":r(E).type==="violations"}),M(xt,$),ie(je,1,`log-label ${V??""}`,"svelte-d3ct2b"),M(Et,`[${Rt??""}]`)},[()=>(r(E),y(()=>yn(r(E).timestamp))),()=>(r(E),y(()=>Ca(r(E)))),()=>(r(E),y(()=>Aa(r(E))))]),Z("click",Qt,()=>{var V;const $=r(E).type==="system"||r(E).type==="error"?r(E).message:r(E).type==="saved"?`saved: ${r(E).file}`:r(E).file;(V=navigator.clipboard)==null||V.writeText($)}),O(Q,le)}),O(te,ne)};ee(R,te=>{r(B),y(()=>r(B).length===0)?te(D):te(K,-1)})}O(i,g)},yi=i=>{var g=Jc(),R=He(g),D=d(p(R),2),K=p(D),te=d(R,2);{var ne=Q=>{var E=zc();O(Q,E)},Y=Q=>{var E=or(),le=He(E);fr(le,3,()=>(r(v),y(()=>r(v).slice(0,20))),(he,H)=>`${he.timestamp}-${H}`,(he,H)=>{var st=Gc(),xt=He(st),je=p(xt),Et=p(je),Ce=d(je,2),St=p(Ce),Mt=d(Ce,2),At=p(Mt),Ct=p(At),Tt=d(At,2);{var Ot=we=>{var Be=pt();q($=>M(Be,`— ${$??""}`),[()=>(r(H),y(()=>kn(r(H),r(H).file)))]),O(we,Be)};ee(Tt,we=>{r(H),y(()=>r(H).file)&&we(Ot)})}var jt=d(xt,2);{var Qt=we=>{var Be=Yc(),$=d(p(Be),2),V=p($);{var Rt=ye=>{var Se=pt();q(()=>M(Se,(r(H),y(()=>r(H).issue)))),O(ye,Se)};ee(V,ye=>{r(H),y(()=>r(H).issue)&&ye(Rt)})}var W=d(V,2);{var I=ye=>{var Se=Kc(),rt=d(He(Se)),ut=p(rt);q(()=>M(ut,`→ ${r(H),y(()=>r(H).suggestion)??""}`)),O(ye,Se)};ee(W,ye=>{r(H),y(()=>r(H).suggestion)&&ye(I)})}O(we,Be)};ee(jt,we=>{r(H),y(()=>r(H).issue||r(H).suggestion)&&we(Qt)})}q(we=>{M(Et,we),M(St,`[${r(H),y(()=>r(H).source==="ci"?"CI":"HOOK")??""}]`),M(Ct,(r(H),y(()=>r(H).rule)))},[()=>(r(H),y(()=>yn(r(H).timestamp)))]),O(he,st)}),O(Q,E)};ee(te,Q=>{r(v),y(()=>r(v).length===0)?Q(ne):Q(Y,-1)})}q(()=>M(K,`${r(v),y(()=>r(v).length)??""} violation${r(v),y(()=>r(v).length===1?"":"s")??""} in last 24h`)),O(i,g)},ki=i=>{var g=tf(),R=He(g),D=d(p(R),2),K=p(D),te=d(R,2),ne=p(te),Y=p(ne);Y.value=Y.__value="all";var Q=d(Y);Q.value=Q.__value="rule";var E=d(Q);E.value=E.__value="decision";var le=d(E);le.value=le.__value="pattern";var he=d(le);he.value=he.__value="ignore";var H=d(ne,2),st=d(te,2),xt=p(st),je=p(xt),Et=p(je),Ce=p(Et);Ce.value=Ce.__value="rule";var St=d(Ce);St.value=St.__value="decision";var Mt=d(St);Mt.value=Mt.__value="pattern";var At=d(Mt);At.value=At.__value="ignore";var Ct=d(Et,2),Tt=p(Ct);Tt.value=Tt.__value="project";var Ot=d(Tt);Ot.value=Ot.__value="global";var jt=d(Ct,2),Qt=d(jt,2),we=d(je,2),Be=p(we),$=d(Be,2),V=p($),Rt=d(st,2);fr(Rt,5,()=>r(s),W=>W.id,(W,I)=>{var ye=Xc(),Se=p(ye),rt=p(Se),ut=d(Se,2),Ve=p(ut),nt=d(ut,2),Fs=p(nt),Xt=d(nt,2);{var X=dt=>{var ae=Qc(),lt=p(ae);q(()=>M(lt,(r(I),y(()=>r(I).reason)))),O(dt,ae)};ee(Xt,dt=>{r(I),y(()=>r(I).reason)&&dt(X)})}var ue=d(Xt,2);q(()=>{M(rt,(r(I),y(()=>r(I).type))),M(Ve,(r(I),y(()=>r(I).scope))),M(Fs,(r(I),y(()=>r(I).content)))}),Z("click",ue,()=>Da(r(I).id)),O(W,ye)},W=>{var I=ef(),ye=p(I),Se=p(ye);{var rt=Ve=>{var nt=Zc();O(Ve,nt)},ut=Ve=>{var nt=pt("No rules match the current filters.");O(Ve,nt)};ee(Se,Ve=>{r(b)&&r(_)===0?Ve(rt):Ve(ut,-1)})}O(W,I)}),q(W=>{M(K,`${r(_)??""} rules active`),$.disabled=W,M(V,r(ve)?"Saving…":"+ Add Rule")},[()=>(r(ve),r(U),y(()=>r(ve)||!r(U).content.trim()))]),vr(ne,()=>r(Ee),W=>x(Ee,W)),gs(H,()=>r(Ze),W=>x(Ze,W)),vr(Et,()=>r(U).type,W=>es(U,r(U).type=W)),vr(Ct,()=>r(U).scope,W=>es(U,r(U).scope=W)),gs(jt,()=>r(U).reason,W=>es(U,r(U).reason=W)),gs(Qt,()=>r(U).tags,W=>es(U,r(U).tags=W)),gs(Be,()=>r(U).content,W=>es(U,r(U).content=W)),Z("submit",xt,Ac(La)),O(i,g)};ee(mi,i=>{r(z)==="live-feed"?i(wi):r(z)==="commit-hook"?i(yi,1):r(z)==="rules"&&i(ki,2)})}var xi=d(il,2),ol=p(xi),cl=p(ol),Ei=d(p(cl),2),Si=p(Ei),fl=d(cl,2),vl=d(p(fl),2),Mi=p(vl),Ai=d(vl,2),Ci=p(Ai),ul=d(fl,2),Ti=d(p(ul),2),Oi=p(Ti),Ri=d(ul,2),dl=d(p(Ri),2);let pl;var Li=p(dl),Di=d(ol,2),hl=p(Di),lr=p(hl),Ni=p(lr),ar=d(lr,2),Ii=p(ar),$r=d(ar,2),Fi=p($r),Pi=d(hl,2),_l=p(Pi),$i=p(_l),ji=d(_l,2),Bi=p(ji),Vi=d(In,2);{var Hi=i=>{var g=rf(),R=p(g),D=p(R),K=d(p(D),2),te=d(D,2),ne=d(p(te),2),Y=d(p(ne),2),Q=p(Y);Q.value=Q.__value="ollama";var E=d(Q);E.value=E.__value="openai";var le=d(E);le.value=le.__value="anthropic";var he=d(le);he.value=he.__value="minimax";var H=d(he);H.value=H.__value="openai-compatible";var st=d(ne,2),xt=d(p(st),2),je=d(st,2),Et=d(p(je),2),Ce=p(Et),St=p(Ce),Mt=d(Ce,2),At=d(je,2);{var Ct=X=>{var ue=sf();let dt;var ae=p(ue);q(lt=>{dt=ie(ue,1,"modal-msg svelte-d3ct2b",null,dt,lt),M(ae,r(pe))},[()=>({"modal-msg-ok":r(pe).startsWith("✓"),"modal-msg-err":r(pe).startsWith("✗")})]),O(X,ue)};ee(At,X=>{r(pe)&&X(Ct)})}var Tt=d(te,2),Ot=d(p(Tt),2),jt=d(p(Ot)),Qt=p(jt),we=d(Ot,2),Be=d(p(we)),$=p(Be),V=d(we,2),Rt=d(p(V)),W=p(Rt),I=d(V,2),ye=d(p(I)),Se=p(ye),rt=d(I,2),ut=d(p(rt)),Ve=p(ut),nt=d(rt,2),Fs=d(p(nt)),Xt=p(Fs);q((X,ue,dt)=>{Ce.disabled=r(Jt),M(St,r(Jt)?"Saving…":"Apply"),M(Qt,(r(h),y(()=>{var ae;return((ae=r(h).runtime)==null?void 0:ae.model.provider)??"—"}))),M($,(r(h),y(()=>{var ae,lt;return((ae=r(h).runtime)==null?void 0:ae.model.checkModelResolved)??((lt=r(h).runtime)==null?void 0:lt.model.chatModel)??"—"}))),M(W,(r(h),y(()=>{var ae,lt;return((ae=r(h).runtime)==null?void 0:ae.model.embeddingModelResolved)??((lt=r(h).runtime)==null?void 0:lt.model.embeddingModel)??"—"}))),M(Se,(r(h),y(()=>{var ae;return((ae=r(h).stats.tokens)==null?void 0:ae.calls)??0}))),M(Ve,`${X??""} ${r(h),y(()=>{var ae;return((ae=r(h).runtime)==null?void 0:ae.model.provider)==="ollama"?"(local — free)":""})??""}`),M(Xt,`${ue??""} in / ${dt??""} out`)},[()=>(r(h),y(()=>{var X,ue;return((ue=(X=r(h).stats.tokens)==null?void 0:X.totalTokens)==null?void 0:ue.toLocaleString())??"0"})),()=>(r(h),y(()=>{var X,ue;return((ue=(X=r(h).stats.tokens)==null?void 0:X.inputTokens)==null?void 0:ue.toLocaleString())??"0"})),()=>(r(h),y(()=>{var X,ue;return((ue=(X=r(h).stats.tokens)==null?void 0:X.outputTokens)==null?void 0:ue.toLocaleString())??"0"}))]),Z("click",K,()=>x(kt,!1)),vr(Y,()=>r(Le).provider,X=>es(Le,r(Le).provider=X)),gs(xt,()=>r(Le).model,X=>es(Le,r(Le).model=X)),Z("click",Ce,Ra),Z("click",Mt,Ta),Z("click",g,Ll(()=>x(kt,!1))),Z("keydown",g,Ll(X=>{X.key==="Escape"&&x(kt,!1)})),O(i,g)};ee(Vi,i=>{r(kt)&&i(Hi)})}q((i,g,R,D,K,te)=>{var ne;Sn=ie(Lr,1,"shell svelte-d3ct2b",null,Sn,{dark:r(bs)}),Cn=ie(Dr,1,"tab-btn svelte-d3ct2b",null,Cn,{"tab-active":r(et)==="dashboard"}),Tn=ie(Nr,1,"tab-btn svelte-d3ct2b",null,Tn,{"tab-active":r(et)==="live-feed"}),Rn=ie(On,1,"tab-btn svelte-d3ct2b",null,Rn,{"tab-active":r(et)==="metrics"}),Dn=ie(nr,1,"icon-btn svelte-d3ct2b",null,Dn,{"icon-btn-active":r(z)==="commit-hook"}),ur(nr,"title",r(z)==="commit-hook"?"Switch to Live Feed":"Switch to Commit Hook"),ur(Ir,"title",r(bs)?"Switch to light mode":"Switch to dark mode"),$n=ie(Pn,1,"sidebar-footer-dot svelte-d3ct2b",null,$n,{"dot-live":r(m).live}),ur(Pn,"title",(r(m),y(()=>r(m).label))),M(qa,`CORE ${r(m),y(()=>r(m).live?"LIVE":"IDLE")??""}`),Vn=ie(Fr,1,"health-badge svelte-d3ct2b",null,Vn,{"health-green":r(k),"health-warn":!r(k)}),Wn=ie(Hn,1,"dot svelte-d3ct2b",null,Wn,{"dot-green":r(k),"dot-warn":!r(k)}),M(Ka,`DB ${r(k)?"CONNECTED":"DISCONNECTED"}`),M(Ga,`OLLAMA READY: ${r(T)??""}`),M(ti,`SERVICE: ${r($t)==="commit-hook"?"COMMIT HOOK":"CORE-ENGINE"}`),Xn=ie(si,0,"chevron svelte-d3ct2b",null,Xn,{"chevron-open":r($e)}),tl=ie(el,1,"metric-value svelte-d3ct2b",null,tl,{"metric-value-warn":r(f)>0}),M(ai,r(f)),M(oi,i),M(vi,g),ll=ie(nl,1,"dot dot-green svelte-d3ct2b",null,ll,{"dot-pulse":r(m).live}),M(pi,R),al=ie(Is,1,"icon-btn svelte-d3ct2b",null,al,{"icon-btn-active":r(yt)}),ur(Is,"title",r(yt)?"Resume":"Pause"),M(Si,(r(h),y(()=>{var Y;return((Y=r(h).stats.tokens)==null?void 0:Y.calls)??0}))),M(Mi,D),M(Ci,(r(h),y(()=>{var Y;return((Y=r(h).runtime)==null?void 0:Y.model.provider)==="ollama"?"LOCAL (FREE)":"USED"}))),M(Oi,K),pl=ie(dl,1,"footer-val svelte-d3ct2b",null,pl,{"footer-val-error":(((ne=r(h).stats.bypasses)==null?void 0:ne.withoutReason)??0)>0}),M(Li,`${r(h),y(()=>{var Y;return((Y=r(h).stats.bypasses)==null?void 0:Y.withoutReason)??0})??""} unrecorded`),lr.disabled=r(tt)==="sync",M(Ni,`${r(tt)==="sync"?"…":"⟳"} Sync Agents`),ar.disabled=r(tt)==="check-all",M(Ii,`${r(tt)==="check-all"?"…":"⊛"} Check All`),$r.disabled=r(tt)==="tune",M(Fi,`${r(tt)==="tune"?"…":"⚙"} Tune Rules`),wc($i,`width: ${te??""}%`),M(Bi,`Storage: ${r(S)??""} memories`)},[()=>(r(u),y(()=>r(u).toLocaleString())),()=>(r(_),y(()=>r(_).toLocaleString())),()=>(r(m),y(()=>r(m).live?"LIVE STREAMING":r(m).label.toUpperCase())),()=>(r(h),y(()=>{var i;return(i=r(h).stats.tokens)!=null&&i.totalTokens?(r(h).stats.tokens.totalTokens/1e3).toFixed(1)+"K":"—"})),()=>(r(f),r(u),y(()=>r(f)===0?"0.00%":(r(f)/Math.max(1,r(u))*100).toFixed(2)+"%")),()=>(r(S),y(()=>Math.min(100,r(S)/Math.max(1,r(S)+100)*100+20)))]),Z("click",Dr,()=>{x(et,"dashboard"),x(z,"live-feed")}),Z("click",Nr,()=>{x(et,"live-feed"),x(z,"live-feed")}),Z("click",On,()=>{x(et,"metrics"),x(z,"rules")}),gs($a,()=>r(Ds),i=>x(Ds,i)),Z("click",nr,Na),Z("click",Nn,()=>{var i,g;x(kt,!r(kt)),x(Le,{provider:((i=r(h).runtime)==null?void 0:i.model.provider)??"",model:((g=r(h).runtime)==null?void 0:g.model.chatModel)??""}),x(pe,"")}),Z("click",Ir,Fa),Z("click",ei,Oa),Z("click",Pr,Mc(()=>x($e,!r($e)))),Z("click",Is,()=>x(yt,!r(yt))),Z("click",gi,()=>{const i=new Blob([JSON.stringify(r(h),null,2)],{type:"application/json"}),g=document.createElement("a");g.href=URL.createObjectURL(i),g.download="memory-core-snapshot.json",g.click()}),Z("click",lr,()=>Rr("sync")),Z("click",ar,()=>Rr("check-all")),Z("click",$r,()=>Rr("tune")),O(e,Lr),ql()}vc(lf,{target:document.getElementById("app")});
@@ -1 +1 @@
1
- :root{color-scheme:light;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;background:#f5f7f8;color:#172026;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased}body{margin:0;min-width:320px;min-height:100vh}button,input,select,textarea{font:inherit}button{border:0}:root{--primary: #0040e0;--primary-dim: #2e5bff;--primary-container: #efefff;--on-primary: #ffffff;--surface: #f8f9fb;--surface-low: #f3f4f6;--surface-mid: #edeef0;--surface-high: #e7e8ea;--surface-highest: #e1e2e4;--on-surface: #191c1e;--on-surface-var: #434656;--outline: #747688;--outline-var: #c4c5d9;--error: #ba1a1a;--error-bg: #ffdad6;--tertiary: #993100;--green: #10b981;--green-bg: rgba(16,185,129,.1);--green-border: rgba(16,185,129,.3);--mono: "JetBrains Mono", "SFMono-Regular", Consolas, monospace;--sans: "Hanken Grotesk", Inter, ui-sans-serif, system-ui, sans-serif}body{margin:0;background:var(--surface);color:var(--on-surface);font-family:var(--sans);font-size:14px;overflow:hidden;height:100vh}*{box-sizing:border-box}::-webkit-scrollbar{width:5px;height:5px}::-webkit-scrollbar-track{background:var(--surface-low)}::-webkit-scrollbar-thumb{background:var(--outline-var);border-radius:4px}.shell.svelte-d3ct2b{display:flex;flex-direction:column;height:100vh;overflow:hidden}.topbar.svelte-d3ct2b{display:flex;align-items:center;gap:16px;height:64px;padding:0 24px;background:var(--surface);border-bottom:1px solid var(--outline-var);flex-shrink:0;z-index:30}.topbar-brand.svelte-d3ct2b{display:flex;align-items:center;gap:24px;flex-shrink:0}.brand-name.svelte-d3ct2b{font-size:18px;font-weight:700;color:var(--on-surface);font-family:var(--sans);letter-spacing:-.02em}.topbar-nav.svelte-d3ct2b{display:flex;gap:2px}.tab-btn.svelte-d3ct2b{padding:6px 12px;background:transparent;border:none;border-bottom:2px solid transparent;color:var(--on-surface-var);font-family:var(--mono);font-size:11px;font-weight:600;letter-spacing:.04em;cursor:pointer;text-transform:uppercase;transition:color .15s,border-color .15s}.tab-btn.svelte-d3ct2b:hover{color:var(--primary)}.tab-active.svelte-d3ct2b{color:var(--primary)!important;border-bottom-color:var(--primary);font-weight:700}.topbar-search.svelte-d3ct2b{flex:1;max-width:480px;margin:0 auto;position:relative}.search-icon.svelte-d3ct2b{position:absolute;left:12px;top:50%;transform:translateY(-50%);color:var(--on-surface-var);font-size:18px;pointer-events:none;line-height:1}.search-input.svelte-d3ct2b{width:100%;height:36px;padding:0 12px 0 36px;background:var(--surface-mid);border:1px solid var(--outline-var);border-radius:8px;color:var(--on-surface);font-family:var(--sans);font-size:13px;outline:none;transition:border-color .15s}.search-input.svelte-d3ct2b:focus{border-color:var(--primary-dim)}.topbar-actions.svelte-d3ct2b{display:flex;align-items:center;gap:4px;flex-shrink:0}.icon-btn.svelte-d3ct2b{width:34px;height:34px;display:flex;align-items:center;justify-content:center;background:transparent;border:none;border-radius:8px;color:var(--on-surface-var);cursor:pointer;transition:background .15s,color .15s}.icon-btn.svelte-d3ct2b:hover{background:var(--surface-low);color:var(--primary)}.icon-btn-active.svelte-d3ct2b{color:var(--primary)!important;background:var(--primary-container)!important}.avatar.svelte-d3ct2b{width:32px;height:32px;border-radius:50%;background:var(--primary-dim);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:13px;margin-left:8px;border:1px solid var(--outline-var);flex-shrink:0;cursor:default}.body.svelte-d3ct2b{display:flex;flex:1;min-height:0;overflow:hidden}.sidebar.svelte-d3ct2b{width:64px;flex-shrink:0;display:flex;flex-direction:column;align-items:center;padding:16px 0;background:#fff;border-right:1px solid var(--outline-var);z-index:20}.sidebar-logo.svelte-d3ct2b{width:40px;height:40px;background:var(--primary-dim);border-radius:4px;display:flex;align-items:center;justify-content:center;color:#fff;margin-bottom:24px}.sidebar-nav.svelte-d3ct2b{display:flex;flex-direction:column;gap:8px}.side-btn.svelte-d3ct2b{width:36px;height:36px;display:flex;align-items:center;justify-content:center;background:transparent;border:none;border-right:2px solid transparent;color:var(--on-surface-var);cursor:pointer;transition:color .15s;margin-right:-1px}.side-btn.svelte-d3ct2b:hover{color:var(--primary)}.side-btn-active.svelte-d3ct2b{color:var(--primary)!important;background:#0040e014;border-right-color:var(--primary)}.sidebar-footer-dot.svelte-d3ct2b{margin-top:auto;width:8px;height:8px;border-radius:50%;background:var(--outline)}.dot-live.svelte-d3ct2b{background:var(--green)!important;box-shadow:0 0 6px var(--green)}.content.svelte-d3ct2b{flex:1;min-width:0;display:flex;flex-direction:column;overflow:hidden;background:var(--surface)}.health-bar.svelte-d3ct2b{display:flex;align-items:center;gap:8px;padding:6px 24px;border-bottom:1px solid var(--outline-var);background:#fff;flex-shrink:0;flex-wrap:wrap}.health-label.svelte-d3ct2b{font-family:var(--mono);font-size:10px;font-weight:700;color:var(--outline);text-transform:uppercase;letter-spacing:.06em;margin-right:4px}.health-badge.svelte-d3ct2b{display:flex;align-items:center;gap:4px;padding:2px 8px;border-radius:4px;font-family:var(--mono);font-size:10px;font-weight:700}.health-green.svelte-d3ct2b{background:var(--green-bg);color:var(--green);border:1px solid var(--green-border)}.health-blue.svelte-d3ct2b{background:#0040e014;color:var(--primary);border:1px solid rgba(0,64,224,.2)}.health-warn.svelte-d3ct2b{background:#ba1a1a14;color:var(--error);border:1px solid rgba(186,26,26,.25)}.health-error.svelte-d3ct2b{font-family:var(--mono);font-size:10px;color:var(--error);font-weight:700}.dot.svelte-d3ct2b{width:6px;height:6px;border-radius:50%;flex-shrink:0}.dot-green.svelte-d3ct2b{background:var(--green)}.dot-blue.svelte-d3ct2b{background:var(--primary)}.dot-warn.svelte-d3ct2b{background:var(--error)}.dot-pulse.svelte-d3ct2b{animation:svelte-d3ct2b-pulse 1.4s ease-in-out infinite}@keyframes svelte-d3ct2b-pulse{0%,to{opacity:1}50%{opacity:.35}}.filter-bar.svelte-d3ct2b{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 24px;background:var(--surface-low);border-bottom:1px solid var(--outline-var);flex-shrink:0}.filter-left.svelte-d3ct2b,.filter-right.svelte-d3ct2b{display:flex;align-items:center;gap:8px}.chip.svelte-d3ct2b{display:flex;align-items:center;gap:4px;padding:4px 10px;border-radius:8px;font-family:var(--mono);font-size:11px;font-weight:600;cursor:pointer;white-space:nowrap;border:none}.chip-primary.svelte-d3ct2b{background:var(--primary-dim);color:#fff}.chip-close.svelte-d3ct2b{background:transparent;border:none;color:#fffc;cursor:pointer;padding:0;font-size:10px;line-height:1}.chip-outline.svelte-d3ct2b{background:var(--surface);color:var(--on-surface-var);border:1px solid var(--outline-var);transition:border-color .15s}.chip-outline.svelte-d3ct2b:hover{border-color:var(--primary-dim)}.chevron.svelte-d3ct2b{transition:transform .2s}.chevron-open.svelte-d3ct2b{transform:rotate(180deg)}.service-dropdown-wrap.svelte-d3ct2b{position:relative}.dropdown.svelte-d3ct2b{position:absolute;top:calc(100% + 4px);left:0;min-width:180px;background:#fff;border:1px solid var(--outline-var);border-radius:8px;box-shadow:0 8px 24px #0000001f;z-index:100;overflow:hidden;animation:svelte-d3ct2b-dropIn .12s ease}@keyframes svelte-d3ct2b-dropIn{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.dropdown-item.svelte-d3ct2b{display:flex;align-items:center;gap:8px;width:100%;padding:10px 14px;background:transparent;border:none;color:var(--on-surface-var);font-family:var(--sans);font-size:13px;font-weight:500;cursor:pointer;transition:background .12s;text-align:left}.dropdown-item.svelte-d3ct2b:hover{background:var(--surface-low)}.dropdown-item-active.svelte-d3ct2b{color:var(--primary);background:var(--primary-container)}.dropdown-item-active.svelte-d3ct2b:hover{background:var(--primary-container)}.dropdown-badge.svelte-d3ct2b{margin-left:auto;background:var(--error);color:#fff;border-radius:999px;padding:1px 6px;font-size:10px;font-weight:700}.divider-v.svelte-d3ct2b{width:1px;height:28px;background:var(--outline-var);margin:0 4px}.metrics-strip.svelte-d3ct2b{display:flex;align-items:center;gap:24px}.metric-item.svelte-d3ct2b{display:flex;flex-direction:column;align-items:center}.metric-label.svelte-d3ct2b{font-family:var(--mono);font-size:9px;font-weight:700;color:var(--outline);text-transform:uppercase;letter-spacing:.05em;line-height:1}.metric-value.svelte-d3ct2b{font-family:var(--mono);font-size:14px;font-weight:700;color:var(--on-surface);line-height:1.4}.metric-value-warn.svelte-d3ct2b{color:var(--error)}.live-badge.svelte-d3ct2b{display:flex;align-items:center;gap:6px;padding:4px 10px;border:1px solid var(--outline-var);border-radius:8px;background:#fff;font-family:var(--mono);font-size:11px;font-weight:600;color:var(--on-surface);white-space:nowrap}.feed-area.svelte-d3ct2b{flex:1;min-height:0;overflow-y:auto;padding:12px 24px;background:#fff;font-family:var(--mono);font-size:12px}.log-row.svelte-d3ct2b{display:flex;align-items:baseline;gap:12px;padding:3px 8px;border-radius:4px;transition:background .1s;min-height:22px}.log-row.svelte-d3ct2b:hover{background:var(--surface-low)}.log-row-warn.svelte-d3ct2b{background:#ba1a1a0a}.log-row-fail.svelte-d3ct2b{background:#9931000a}.log-time.svelte-d3ct2b{width:80px;flex-shrink:0;color:var(--outline)}.log-label.svelte-d3ct2b{width:56px;flex-shrink:0;font-weight:700}.label-sys.svelte-d3ct2b{color:var(--primary)}.label-ok.svelte-d3ct2b{color:var(--green)}.label-warn.svelte-d3ct2b{color:var(--tertiary)}.label-info.svelte-d3ct2b{color:var(--on-surface-var)}.label-hook.svelte-d3ct2b{color:var(--error)}.label-chck.svelte-d3ct2b{color:var(--outline)}.log-msg.svelte-d3ct2b{flex:1;min-width:0;color:var(--on-surface-var);word-break:break-all;line-height:1.5}.log-msg.svelte-d3ct2b strong:where(.svelte-d3ct2b){color:var(--on-surface);font-weight:600}.copy-btn.svelte-d3ct2b{opacity:0;background:transparent;border:none;color:var(--outline);cursor:pointer;font-size:14px;padding:0 4px;transition:opacity .15s,color .15s;flex-shrink:0}.log-row.svelte-d3ct2b:hover .copy-btn:where(.svelte-d3ct2b){opacity:1}.copy-btn.svelte-d3ct2b:hover{color:var(--primary)}.log-detail.svelte-d3ct2b{display:flex;gap:8px;padding:3px 8px 3px 148px;font-size:11px;border-left:2px solid rgba(153,49,0,.3);margin-left:8px;margin-bottom:2px}.detail-index.svelte-d3ct2b{color:var(--outline);flex-shrink:0;width:24px}.detail-body.svelte-d3ct2b{color:var(--on-surface-var);flex:1;min-width:0;line-height:1.5}.detail-fix.svelte-d3ct2b{color:var(--primary)}.cursor-blink.svelte-d3ct2b{animation:svelte-d3ct2b-blink 1s step-start infinite}@keyframes svelte-d3ct2b-blink{0%,to{opacity:1}50%{opacity:0}}.section-header.svelte-d3ct2b{display:flex;align-items:baseline;gap:12px;padding:8px 8px 10px;border-bottom:1px solid var(--outline-var);margin-bottom:8px}.section-title.svelte-d3ct2b{font-family:var(--sans);font-size:14px;font-weight:700;color:var(--on-surface)}.section-meta.svelte-d3ct2b{font-size:11px;color:var(--outline);font-family:var(--mono)}.rules-toolbar.svelte-d3ct2b{display:flex;gap:8px;padding:8px;margin-bottom:4px}.rules-select.svelte-d3ct2b,.rules-input.svelte-d3ct2b,.rules-textarea.svelte-d3ct2b{padding:6px 10px;background:var(--surface-low);border:1px solid var(--outline-var);border-radius:6px;color:var(--on-surface);font-family:var(--sans);font-size:13px;outline:none;transition:border-color .15s}.rules-select.svelte-d3ct2b:focus,.rules-input.svelte-d3ct2b:focus,.rules-textarea.svelte-d3ct2b:focus{border-color:var(--primary-dim)}.rules-textarea.svelte-d3ct2b{resize:vertical;flex:1;min-width:0}.rule-form-wrap.svelte-d3ct2b{padding:0 8px 8px;border-bottom:1px solid var(--outline-var);margin-bottom:8px}.rule-form.svelte-d3ct2b{display:flex;flex-direction:column;gap:8px}.rule-form-row.svelte-d3ct2b{display:flex;gap:8px;align-items:flex-start}.add-btn.svelte-d3ct2b{padding:8px 16px;background:var(--primary);color:#fff;border:none;border-radius:6px;font-family:var(--mono);font-size:12px;font-weight:700;cursor:pointer;white-space:nowrap;transition:background .15s;align-self:flex-end}.add-btn.svelte-d3ct2b:hover:not(:disabled){background:var(--primary-dim)}.add-btn.svelte-d3ct2b:disabled{opacity:.5;cursor:not-allowed}.rule-list.svelte-d3ct2b{display:flex;flex-direction:column;gap:4px;overflow-y:auto;max-height:400px;padding:0 8px}.rule-row.svelte-d3ct2b{display:flex;align-items:center;gap:10px;padding:8px 10px;border:1px solid var(--outline-var);border-radius:6px;background:var(--surface-low);font-size:12px;min-width:0;transition:background .1s}.rule-row.svelte-d3ct2b:hover{background:var(--surface-mid)}.rule-badge.svelte-d3ct2b{padding:2px 7px;background:var(--primary-container);color:var(--primary);border-radius:4px;font-family:var(--mono);font-size:10px;font-weight:700;text-transform:uppercase;flex-shrink:0}.rule-scope.svelte-d3ct2b{color:var(--outline);font-family:var(--mono);font-size:10px;font-weight:600;flex-shrink:0}.rule-content.svelte-d3ct2b{flex:1;min-width:0;color:var(--on-surface);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rule-reason.svelte-d3ct2b{color:var(--on-surface-var);font-size:11px;flex-shrink:0;max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.del-btn.svelte-d3ct2b{background:transparent;border:none;color:var(--outline);cursor:pointer;font-size:12px;padding:2px 6px;border-radius:4px;flex-shrink:0;transition:background .1s,color .1s}.del-btn.svelte-d3ct2b:hover{background:var(--error-bg);color:var(--error)}.metrics-footer.svelte-d3ct2b{display:flex;align-items:center;justify-content:space-between;height:48px;padding:0 24px;border-top:1px solid var(--outline-var);background:var(--surface);flex-shrink:0}.footer-left.svelte-d3ct2b,.footer-right.svelte-d3ct2b{display:flex;align-items:center;gap:24px}.footer-metric.svelte-d3ct2b{display:flex;align-items:center;gap:6px}.footer-label.svelte-d3ct2b{font-family:var(--mono);font-size:10px;font-weight:700;color:var(--outline);text-transform:uppercase;letter-spacing:.04em}.footer-val.svelte-d3ct2b{font-family:var(--mono);font-size:14px;font-weight:700;color:var(--on-surface)}.footer-val-error.svelte-d3ct2b{color:var(--error)}.footer-unit.svelte-d3ct2b{font-family:var(--mono);font-size:9px;color:var(--outline);text-transform:uppercase}.storage-bar-wrap.svelte-d3ct2b{display:flex;align-items:center;gap:8px}.storage-bar.svelte-d3ct2b{width:96px;height:6px;background:var(--surface-mid);border-radius:999px;overflow:hidden}.storage-fill.svelte-d3ct2b{height:100%;background:var(--primary-dim);border-radius:999px;transition:width .6s ease}.cli-btn.svelte-d3ct2b{display:flex;align-items:center;gap:6px;padding:5px 12px;background:var(--surface-high);border:none;border-radius:4px;color:var(--on-surface);font-family:var(--mono);font-size:11px;font-weight:700;cursor:pointer;transition:background .15s}.cli-btn.svelte-d3ct2b:hover{background:var(--outline-var)}.dark.svelte-d3ct2b{--primary: #b8c3ff;--primary-dim: #4d6dff;--primary-container: #1a2340;--on-primary: #ffffff;--surface: #111318;--surface-low: #0c0e12;--surface-mid: #1e2024;--surface-high: #282a2e;--surface-highest: #37393e;--on-surface: #e2e2e8;--on-surface-var: #c4c5d9;--outline: #747688;--outline-var: #3a3c4a;--error: #ffb4ab;--error-bg: rgba(147,0,10,.22);--tertiary: #ffb59b;--green: #03f59b;--green-bg: rgba(3,245,155,.1);--green-border: rgba(3,245,155,.28)}.dark.svelte-d3ct2b body{background:var(--surface)}.dark.svelte-d3ct2b .topbar:where(.svelte-d3ct2b){background:#1a1c20;border-bottom-color:var(--outline-var)}.dark.svelte-d3ct2b .sidebar:where(.svelte-d3ct2b){background:#0c0e12;border-right-color:var(--outline-var)}.dark.svelte-d3ct2b .health-bar:where(.svelte-d3ct2b){background:#1a1c20;border-bottom-color:var(--outline-var)}.dark.svelte-d3ct2b .filter-bar:where(.svelte-d3ct2b){background:#111318;border-bottom-color:var(--outline-var)}.dark.svelte-d3ct2b .feed-area:where(.svelte-d3ct2b){background:#0c0e12}.dark.svelte-d3ct2b .metrics-footer:where(.svelte-d3ct2b){background:#111318;border-top-color:var(--outline-var)}.dark.svelte-d3ct2b .search-input:where(.svelte-d3ct2b){background:#1e2024;border-color:var(--outline-var);color:var(--on-surface)}.dark.svelte-d3ct2b .dropdown:where(.svelte-d3ct2b){background:#1e2024;border-color:var(--outline-var);box-shadow:0 8px 24px #00000073}.dark.svelte-d3ct2b .dropdown-item:where(.svelte-d3ct2b):hover{background:#282a2e}.dark.svelte-d3ct2b .dropdown-item-active:where(.svelte-d3ct2b){background:var(--primary-container);color:var(--primary)}.dark.svelte-d3ct2b .chip-outline:where(.svelte-d3ct2b){background:#1e2024}.dark.svelte-d3ct2b .live-badge:where(.svelte-d3ct2b){background:#1e2024}.dark.svelte-d3ct2b .rule-row:where(.svelte-d3ct2b){background:#1e2024;border-color:var(--outline-var)}.dark.svelte-d3ct2b .rule-row:where(.svelte-d3ct2b):hover{background:#282a2e}.dark.svelte-d3ct2b .rules-select:where(.svelte-d3ct2b),.dark.svelte-d3ct2b .rules-input:where(.svelte-d3ct2b),.dark.svelte-d3ct2b .rules-textarea:where(.svelte-d3ct2b){background:#1e2024;border-color:var(--outline-var);color:var(--on-surface)}.dark.svelte-d3ct2b .log-row:where(.svelte-d3ct2b):hover{background:#1e2024}.dark.svelte-d3ct2b .log-row-warn:where(.svelte-d3ct2b){background:#ffb4ab0d}.dark.svelte-d3ct2b .log-row-fail:where(.svelte-d3ct2b){background:#ffba200a}.dark.svelte-d3ct2b .section-header:where(.svelte-d3ct2b){border-bottom-color:var(--outline-var)}.dark.svelte-d3ct2b .storage-bar:where(.svelte-d3ct2b){background:#282a2e}@media (max-width: 768px){.sidebar.svelte-d3ct2b,.topbar-nav.svelte-d3ct2b,.metrics-strip.svelte-d3ct2b{display:none}.filter-bar.svelte-d3ct2b,.feed-area.svelte-d3ct2b{padding:8px 12px}.metrics-footer.svelte-d3ct2b{padding:0 12px;gap:12px}.footer-metric.svelte-d3ct2b:nth-child(n+2){display:none}}
1
+ :root{color-scheme:light;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;background:#f5f7f8;color:#172026;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased}body{margin:0;min-width:320px;min-height:100vh}button,input,select,textarea{font:inherit}button{border:0}:root{--primary: #0040e0;--primary-dim: #2e5bff;--primary-container: #efefff;--on-primary: #ffffff;--surface: #f8f9fb;--surface-low: #f3f4f6;--surface-mid: #edeef0;--surface-high: #e7e8ea;--surface-highest: #e1e2e4;--on-surface: #191c1e;--on-surface-var: #434656;--outline: #747688;--outline-var: #c4c5d9;--error: #ba1a1a;--error-bg: #ffdad6;--tertiary: #993100;--green: #10b981;--green-bg: rgba(16,185,129,.1);--green-border: rgba(16,185,129,.3);--mono: "JetBrains Mono", "SFMono-Regular", Consolas, monospace;--sans: "Hanken Grotesk", Inter, ui-sans-serif, system-ui, sans-serif}body{margin:0;background:var(--surface);color:var(--on-surface);font-family:var(--sans);font-size:14px;overflow:hidden;height:100vh}*{box-sizing:border-box}::-webkit-scrollbar{width:5px;height:5px}::-webkit-scrollbar-track{background:var(--surface-low)}::-webkit-scrollbar-thumb{background:var(--outline-var);border-radius:4px}.shell.svelte-d3ct2b{display:flex;flex-direction:column;height:100vh;overflow:hidden}.topbar.svelte-d3ct2b{display:flex;align-items:center;gap:16px;height:64px;padding:0 24px;background:var(--surface);border-bottom:1px solid var(--outline-var);flex-shrink:0;z-index:30}.topbar-brand.svelte-d3ct2b{display:flex;align-items:center;gap:24px;flex-shrink:0}.brand-name.svelte-d3ct2b{font-size:18px;font-weight:700;color:var(--on-surface);font-family:var(--sans);letter-spacing:-.02em}.topbar-nav.svelte-d3ct2b{display:flex;gap:2px}.tab-btn.svelte-d3ct2b{padding:6px 12px;background:transparent;border:none;border-bottom:2px solid transparent;color:var(--on-surface-var);font-family:var(--mono);font-size:11px;font-weight:600;letter-spacing:.04em;cursor:pointer;text-transform:uppercase;transition:color .15s,border-color .15s}.tab-btn.svelte-d3ct2b:hover{color:var(--primary)}.tab-active.svelte-d3ct2b{color:var(--primary)!important;border-bottom-color:var(--primary);font-weight:700}.topbar-search.svelte-d3ct2b{flex:1;max-width:480px;margin:0 auto;position:relative}.search-icon.svelte-d3ct2b{position:absolute;left:12px;top:50%;transform:translateY(-50%);color:var(--on-surface-var);font-size:18px;pointer-events:none;line-height:1}.search-input.svelte-d3ct2b{width:100%;height:36px;padding:0 12px 0 36px;background:var(--surface-mid);border:1px solid var(--outline-var);border-radius:8px;color:var(--on-surface);font-family:var(--sans);font-size:13px;outline:none;transition:border-color .15s}.search-input.svelte-d3ct2b:focus{border-color:var(--primary-dim)}.topbar-actions.svelte-d3ct2b{display:flex;align-items:center;gap:4px;flex-shrink:0}.icon-btn.svelte-d3ct2b{width:34px;height:34px;display:flex;align-items:center;justify-content:center;background:transparent;border:none;border-radius:8px;color:var(--on-surface-var);cursor:pointer;transition:background .15s,color .15s}.icon-btn.svelte-d3ct2b:hover{background:var(--surface-low);color:var(--primary)}.icon-btn-active.svelte-d3ct2b{color:var(--primary)!important;background:var(--primary-container)!important}.avatar.svelte-d3ct2b{width:32px;height:32px;border-radius:50%;background:var(--primary-dim);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:13px;margin-left:8px;border:1px solid var(--outline-var);flex-shrink:0;cursor:default}.body.svelte-d3ct2b{display:flex;flex:1;min-height:0;overflow:hidden}.sidebar.svelte-d3ct2b{width:64px;flex-shrink:0;display:flex;flex-direction:column;align-items:center;padding:16px 0;background:#fff;border-right:1px solid var(--outline-var);z-index:20}.sidebar-logo.svelte-d3ct2b{width:40px;height:40px;background:var(--primary-dim);border-radius:4px;display:flex;align-items:center;justify-content:center;color:#fff;margin-bottom:24px}.sidebar-nav.svelte-d3ct2b{display:flex;flex-direction:column;gap:8px}.side-btn.svelte-d3ct2b{width:36px;height:36px;display:flex;align-items:center;justify-content:center;background:transparent;border:none;border-right:2px solid transparent;color:var(--on-surface-var);cursor:pointer;transition:color .15s;margin-right:-1px}.side-btn.svelte-d3ct2b:hover{color:var(--primary)}.side-btn-active.svelte-d3ct2b{color:var(--primary)!important;background:#0040e014;border-right-color:var(--primary)}.sidebar-footer-dot.svelte-d3ct2b{margin-top:auto;width:8px;height:8px;border-radius:50%;background:var(--outline)}.dot-live.svelte-d3ct2b{background:var(--green)!important;box-shadow:0 0 6px var(--green)}.content.svelte-d3ct2b{flex:1;min-width:0;display:flex;flex-direction:column;overflow:hidden;background:var(--surface)}.health-bar.svelte-d3ct2b{display:flex;align-items:center;gap:8px;padding:6px 24px;border-bottom:1px solid var(--outline-var);background:#fff;flex-shrink:0;flex-wrap:wrap}.health-label.svelte-d3ct2b{font-family:var(--mono);font-size:10px;font-weight:700;color:var(--outline);text-transform:uppercase;letter-spacing:.06em;margin-right:4px}.health-badge.svelte-d3ct2b{display:flex;align-items:center;gap:4px;padding:2px 8px;border-radius:4px;font-family:var(--mono);font-size:10px;font-weight:700}.health-green.svelte-d3ct2b{background:var(--green-bg);color:var(--green);border:1px solid var(--green-border)}.health-blue.svelte-d3ct2b{background:#0040e014;color:var(--primary);border:1px solid rgba(0,64,224,.2)}.health-warn.svelte-d3ct2b{background:#ba1a1a14;color:var(--error);border:1px solid rgba(186,26,26,.25)}.health-error.svelte-d3ct2b{font-family:var(--mono);font-size:10px;color:var(--error);font-weight:700}.dot.svelte-d3ct2b{width:6px;height:6px;border-radius:50%;flex-shrink:0}.dot-green.svelte-d3ct2b{background:var(--green)}.dot-blue.svelte-d3ct2b{background:var(--primary)}.dot-warn.svelte-d3ct2b{background:var(--error)}.dot-pulse.svelte-d3ct2b{animation:svelte-d3ct2b-pulse 1.4s ease-in-out infinite}@keyframes svelte-d3ct2b-pulse{0%,to{opacity:1}50%{opacity:.35}}.filter-bar.svelte-d3ct2b{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 24px;background:var(--surface-low);border-bottom:1px solid var(--outline-var);flex-shrink:0}.filter-left.svelte-d3ct2b,.filter-right.svelte-d3ct2b{display:flex;align-items:center;gap:8px}.chip.svelte-d3ct2b{display:flex;align-items:center;gap:4px;padding:4px 10px;border-radius:8px;font-family:var(--mono);font-size:11px;font-weight:600;cursor:pointer;white-space:nowrap;border:none}.chip-primary.svelte-d3ct2b{background:var(--primary-dim);color:#fff}.chip-close.svelte-d3ct2b{background:transparent;border:none;color:#fffc;cursor:pointer;padding:0;font-size:10px;line-height:1}.chip-outline.svelte-d3ct2b{background:var(--surface);color:var(--on-surface-var);border:1px solid var(--outline-var);transition:border-color .15s}.chip-outline.svelte-d3ct2b:hover{border-color:var(--primary-dim)}.chevron.svelte-d3ct2b{transition:transform .2s}.chevron-open.svelte-d3ct2b{transform:rotate(180deg)}.service-dropdown-wrap.svelte-d3ct2b{position:relative}.dropdown.svelte-d3ct2b{position:absolute;top:calc(100% + 4px);left:0;min-width:180px;background:#fff;border:1px solid var(--outline-var);border-radius:8px;box-shadow:0 8px 24px #0000001f;z-index:100;overflow:hidden;animation:svelte-d3ct2b-dropIn .12s ease}@keyframes svelte-d3ct2b-dropIn{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.dropdown-item.svelte-d3ct2b{display:flex;align-items:center;gap:8px;width:100%;padding:10px 14px;background:transparent;border:none;color:var(--on-surface-var);font-family:var(--sans);font-size:13px;font-weight:500;cursor:pointer;transition:background .12s;text-align:left}.dropdown-item.svelte-d3ct2b:hover{background:var(--surface-low)}.dropdown-item-active.svelte-d3ct2b{color:var(--primary);background:var(--primary-container)}.dropdown-item-active.svelte-d3ct2b:hover{background:var(--primary-container)}.dropdown-badge.svelte-d3ct2b{margin-left:auto;background:var(--error);color:#fff;border-radius:999px;padding:1px 6px;font-size:10px;font-weight:700}.divider-v.svelte-d3ct2b{width:1px;height:28px;background:var(--outline-var);margin:0 4px}.metrics-strip.svelte-d3ct2b{display:flex;align-items:center;gap:24px}.metric-item.svelte-d3ct2b{display:flex;flex-direction:column;align-items:center}.metric-label.svelte-d3ct2b{font-family:var(--mono);font-size:9px;font-weight:700;color:var(--outline);text-transform:uppercase;letter-spacing:.05em;line-height:1}.metric-value.svelte-d3ct2b{font-family:var(--mono);font-size:14px;font-weight:700;color:var(--on-surface);line-height:1.4}.metric-value-warn.svelte-d3ct2b{color:var(--error)}.live-badge.svelte-d3ct2b{display:flex;align-items:center;gap:6px;padding:4px 10px;border:1px solid var(--outline-var);border-radius:8px;background:#fff;font-family:var(--mono);font-size:11px;font-weight:600;color:var(--on-surface);white-space:nowrap}.feed-area.svelte-d3ct2b{flex:1;min-height:0;overflow-y:auto;padding:12px 24px;background:#fff;font-family:var(--mono);font-size:12px}.log-row.svelte-d3ct2b{display:flex;align-items:baseline;gap:12px;padding:3px 8px;border-radius:4px;transition:background .1s;min-height:22px}.log-row.svelte-d3ct2b:hover{background:var(--surface-low)}.log-row-warn.svelte-d3ct2b{background:#ba1a1a0a}.log-row-fail.svelte-d3ct2b{background:#9931000a}.log-time.svelte-d3ct2b{width:80px;flex-shrink:0;color:var(--outline)}.log-label.svelte-d3ct2b{width:56px;flex-shrink:0;font-weight:700}.label-sys.svelte-d3ct2b{color:var(--primary)}.label-ok.svelte-d3ct2b{color:var(--green)}.label-warn.svelte-d3ct2b{color:var(--tertiary)}.label-info.svelte-d3ct2b{color:var(--on-surface-var)}.label-hook.svelte-d3ct2b{color:var(--error)}.label-chck.svelte-d3ct2b{color:var(--outline)}.log-msg.svelte-d3ct2b{flex:1;min-width:0;color:var(--on-surface-var);word-break:break-all;line-height:1.5}.log-msg.svelte-d3ct2b strong:where(.svelte-d3ct2b){color:var(--on-surface);font-weight:600}.copy-btn.svelte-d3ct2b{opacity:0;background:transparent;border:none;color:var(--outline);cursor:pointer;font-size:14px;padding:0 4px;transition:opacity .15s,color .15s;flex-shrink:0}.log-row.svelte-d3ct2b:hover .copy-btn:where(.svelte-d3ct2b){opacity:1}.copy-btn.svelte-d3ct2b:hover{color:var(--primary)}.log-detail.svelte-d3ct2b{display:flex;gap:8px;padding:3px 8px 3px 148px;font-size:11px;border-left:2px solid rgba(153,49,0,.3);margin-left:8px;margin-bottom:2px}.detail-index.svelte-d3ct2b{color:var(--outline);flex-shrink:0;width:24px}.detail-body.svelte-d3ct2b{color:var(--on-surface-var);flex:1;min-width:0;line-height:1.5}.detail-fix.svelte-d3ct2b{color:var(--primary)}.cursor-blink.svelte-d3ct2b{animation:svelte-d3ct2b-blink 1s step-start infinite}@keyframes svelte-d3ct2b-blink{0%,to{opacity:1}50%{opacity:0}}.section-header.svelte-d3ct2b{display:flex;align-items:baseline;gap:12px;padding:8px 8px 10px;border-bottom:1px solid var(--outline-var);margin-bottom:8px}.section-title.svelte-d3ct2b{font-family:var(--sans);font-size:14px;font-weight:700;color:var(--on-surface)}.section-meta.svelte-d3ct2b{font-size:11px;color:var(--outline);font-family:var(--mono)}.rules-toolbar.svelte-d3ct2b{display:flex;gap:8px;padding:8px;margin-bottom:4px}.rules-select.svelte-d3ct2b,.rules-input.svelte-d3ct2b,.rules-textarea.svelte-d3ct2b{padding:6px 10px;background:var(--surface-low);border:1px solid var(--outline-var);border-radius:6px;color:var(--on-surface);font-family:var(--sans);font-size:13px;outline:none;transition:border-color .15s}.rules-select.svelte-d3ct2b:focus,.rules-input.svelte-d3ct2b:focus,.rules-textarea.svelte-d3ct2b:focus{border-color:var(--primary-dim)}.rules-textarea.svelte-d3ct2b{resize:vertical;flex:1;min-width:0}.rule-form-wrap.svelte-d3ct2b{padding:0 8px 8px;border-bottom:1px solid var(--outline-var);margin-bottom:8px}.rule-form.svelte-d3ct2b{display:flex;flex-direction:column;gap:8px}.rule-form-row.svelte-d3ct2b{display:flex;gap:8px;align-items:flex-start}.add-btn.svelte-d3ct2b{padding:8px 16px;background:var(--primary);color:#fff;border:none;border-radius:6px;font-family:var(--mono);font-size:12px;font-weight:700;cursor:pointer;white-space:nowrap;transition:background .15s;align-self:flex-end}.add-btn.svelte-d3ct2b:hover:not(:disabled){background:var(--primary-dim)}.add-btn.svelte-d3ct2b:disabled{opacity:.5;cursor:not-allowed}.rule-list.svelte-d3ct2b{display:flex;flex-direction:column;gap:4px;overflow-y:auto;max-height:400px;padding:0 8px}.rule-row.svelte-d3ct2b{display:flex;align-items:center;gap:10px;padding:8px 10px;border:1px solid var(--outline-var);border-radius:6px;background:var(--surface-low);font-size:12px;min-width:0;transition:background .1s}.rule-row.svelte-d3ct2b:hover{background:var(--surface-mid)}.rule-badge.svelte-d3ct2b{padding:2px 7px;background:var(--primary-container);color:var(--primary);border-radius:4px;font-family:var(--mono);font-size:10px;font-weight:700;text-transform:uppercase;flex-shrink:0}.rule-scope.svelte-d3ct2b{color:var(--outline);font-family:var(--mono);font-size:10px;font-weight:600;flex-shrink:0}.rule-content.svelte-d3ct2b{flex:1;min-width:0;color:var(--on-surface);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rule-reason.svelte-d3ct2b{color:var(--on-surface-var);font-size:11px;flex-shrink:0;max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.del-btn.svelte-d3ct2b{background:transparent;border:none;color:var(--outline);cursor:pointer;font-size:12px;padding:2px 6px;border-radius:4px;flex-shrink:0;transition:background .1s,color .1s}.del-btn.svelte-d3ct2b:hover{background:var(--error-bg);color:var(--error)}.metrics-footer.svelte-d3ct2b{display:flex;align-items:center;justify-content:space-between;height:48px;padding:0 24px;border-top:1px solid var(--outline-var);background:var(--surface);flex-shrink:0}.footer-left.svelte-d3ct2b,.footer-right.svelte-d3ct2b{display:flex;align-items:center;gap:24px}.footer-metric.svelte-d3ct2b{display:flex;align-items:center;gap:6px}.footer-label.svelte-d3ct2b{font-family:var(--mono);font-size:10px;font-weight:700;color:var(--outline);text-transform:uppercase;letter-spacing:.04em}.footer-val.svelte-d3ct2b{font-family:var(--mono);font-size:14px;font-weight:700;color:var(--on-surface)}.footer-val-error.svelte-d3ct2b{color:var(--error)}.footer-unit.svelte-d3ct2b{font-family:var(--mono);font-size:9px;color:var(--outline);text-transform:uppercase}.storage-bar-wrap.svelte-d3ct2b{display:flex;align-items:center;gap:8px}.storage-bar.svelte-d3ct2b{width:96px;height:6px;background:var(--surface-mid);border-radius:999px;overflow:hidden}.storage-fill.svelte-d3ct2b{height:100%;background:var(--primary-dim);border-radius:999px;transition:width .6s ease}.cli-btn.svelte-d3ct2b{display:flex;align-items:center;gap:6px;padding:5px 12px;background:var(--surface-high);border:none;border-radius:4px;color:var(--on-surface);font-family:var(--mono);font-size:11px;font-weight:700;cursor:pointer;transition:background .15s}.cli-btn.svelte-d3ct2b:hover{background:var(--outline-var)}.dark.svelte-d3ct2b{--primary: #b8c3ff;--primary-dim: #4d6dff;--primary-container: #1a2340;--on-primary: #ffffff;--surface: #111318;--surface-low: #0c0e12;--surface-mid: #1e2024;--surface-high: #282a2e;--surface-highest: #37393e;--on-surface: #e2e2e8;--on-surface-var: #c4c5d9;--outline: #747688;--outline-var: #3a3c4a;--error: #ffb4ab;--error-bg: rgba(147,0,10,.22);--tertiary: #ffb59b;--green: #03f59b;--green-bg: rgba(3,245,155,.1);--green-border: rgba(3,245,155,.28)}.dark.svelte-d3ct2b body{background:var(--surface)}.dark.svelte-d3ct2b .topbar:where(.svelte-d3ct2b){background:#1a1c20;border-bottom-color:var(--outline-var)}.dark.svelte-d3ct2b .sidebar:where(.svelte-d3ct2b){background:#0c0e12;border-right-color:var(--outline-var)}.dark.svelte-d3ct2b .health-bar:where(.svelte-d3ct2b){background:#1a1c20;border-bottom-color:var(--outline-var)}.dark.svelte-d3ct2b .filter-bar:where(.svelte-d3ct2b){background:#111318;border-bottom-color:var(--outline-var)}.dark.svelte-d3ct2b .feed-area:where(.svelte-d3ct2b){background:#0c0e12}.dark.svelte-d3ct2b .metrics-footer:where(.svelte-d3ct2b){background:#111318;border-top-color:var(--outline-var)}.dark.svelte-d3ct2b .search-input:where(.svelte-d3ct2b){background:#1e2024;border-color:var(--outline-var);color:var(--on-surface)}.dark.svelte-d3ct2b .dropdown:where(.svelte-d3ct2b){background:#1e2024;border-color:var(--outline-var);box-shadow:0 8px 24px #00000073}.dark.svelte-d3ct2b .dropdown-item:where(.svelte-d3ct2b):hover{background:#282a2e}.dark.svelte-d3ct2b .dropdown-item-active:where(.svelte-d3ct2b){background:var(--primary-container);color:var(--primary)}.dark.svelte-d3ct2b .chip-outline:where(.svelte-d3ct2b){background:#1e2024}.dark.svelte-d3ct2b .live-badge:where(.svelte-d3ct2b){background:#1e2024}.dark.svelte-d3ct2b .rule-row:where(.svelte-d3ct2b){background:#1e2024;border-color:var(--outline-var)}.dark.svelte-d3ct2b .rule-row:where(.svelte-d3ct2b):hover{background:#282a2e}.dark.svelte-d3ct2b .rules-select:where(.svelte-d3ct2b),.dark.svelte-d3ct2b .rules-input:where(.svelte-d3ct2b),.dark.svelte-d3ct2b .rules-textarea:where(.svelte-d3ct2b){background:#1e2024;border-color:var(--outline-var);color:var(--on-surface)}.dark.svelte-d3ct2b .log-row:where(.svelte-d3ct2b):hover{background:#1e2024}.dark.svelte-d3ct2b .log-row-warn:where(.svelte-d3ct2b){background:#ffb4ab0d}.dark.svelte-d3ct2b .log-row-fail:where(.svelte-d3ct2b){background:#ffba200a}.dark.svelte-d3ct2b .section-header:where(.svelte-d3ct2b){border-bottom-color:var(--outline-var)}.dark.svelte-d3ct2b .storage-bar:where(.svelte-d3ct2b){background:#282a2e}@media (max-width: 768px){.sidebar.svelte-d3ct2b,.topbar-nav.svelte-d3ct2b,.metrics-strip.svelte-d3ct2b{display:none}.filter-bar.svelte-d3ct2b,.feed-area.svelte-d3ct2b{padding:8px 12px}.metrics-footer.svelte-d3ct2b{padding:0 12px;gap:12px}.footer-metric.svelte-d3ct2b:nth-child(n+2){display:none}}.footer-actions.svelte-d3ct2b{display:flex;gap:6px;align-items:center;margin-right:12px}.action-btn.svelte-d3ct2b{font-size:11px;font-family:var(--mono);padding:4px 10px;border-radius:6px;border:1px solid var(--outline-var);background:var(--surface-low);color:var(--on-surface-var);cursor:pointer;transition:background .15s,border-color .15s}.action-btn.svelte-d3ct2b:hover:not(:disabled){background:var(--primary-container);border-color:var(--primary);color:var(--primary)}.action-btn.svelte-d3ct2b:disabled{opacity:.5;cursor:not-allowed}.action-btn-warn.svelte-d3ct2b:hover:not(:disabled){background:#fff3e0;border-color:#f59e0b;color:#b45309}.modal-backdrop.svelte-d3ct2b{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;display:flex;align-items:center;justify-content:center;z-index:200}.modal.svelte-d3ct2b{background:var(--surface);border:1px solid var(--outline-var);border-radius:12px;width:480px;max-width:calc(100vw - 32px);box-shadow:0 8px 32px #0000002e;overflow:hidden}.modal-header.svelte-d3ct2b{display:flex;align-items:center;justify-content:space-between;padding:16px 20px 12px;border-bottom:1px solid var(--outline-var)}.modal-title.svelte-d3ct2b{font-size:14px;font-weight:600;color:var(--on-surface)}.modal-close.svelte-d3ct2b{background:none;border:none;cursor:pointer;color:var(--outline);font-size:16px;line-height:1}.modal-section.svelte-d3ct2b{padding:16px 20px;border-bottom:1px solid var(--outline-var)}.modal-section.svelte-d3ct2b:last-child{border-bottom:none}.modal-section-title.svelte-d3ct2b{font-size:11px;font-weight:600;letter-spacing:.06em;color:var(--outline);text-transform:uppercase;margin-bottom:12px}.modal-row.svelte-d3ct2b{display:grid;grid-template-columns:100px 1fr;gap:8px;align-items:center;margin-bottom:10px}.modal-label.svelte-d3ct2b{font-size:12px;color:var(--on-surface-var)}.modal-input.svelte-d3ct2b{font-size:12px;font-family:var(--mono);padding:6px 10px;border:1px solid var(--outline-var);border-radius:6px;background:var(--surface-low);color:var(--on-surface);outline:none;width:100%}.modal-input.svelte-d3ct2b:focus{border-color:var(--primary)}.modal-row-actions.svelte-d3ct2b{display:flex;gap:8px}.modal-btn.svelte-d3ct2b{font-size:12px;padding:6px 14px;border:1px solid var(--outline-var);border-radius:6px;background:var(--surface-low);color:var(--on-surface-var);cursor:pointer}.modal-btn.svelte-d3ct2b:hover:not(:disabled){background:var(--surface-mid)}.modal-btn.svelte-d3ct2b:disabled{opacity:.5;cursor:not-allowed}.modal-btn-primary.svelte-d3ct2b{background:var(--primary);color:#fff;border-color:var(--primary)}.modal-btn-primary.svelte-d3ct2b:hover:not(:disabled){background:var(--primary-dim)}.modal-msg.svelte-d3ct2b{font-size:12px;margin-top:8px;padding:6px 10px;border-radius:6px}.modal-msg-ok.svelte-d3ct2b{background:var(--green-bg);color:var(--green);border:1px solid var(--green-border)}.modal-msg-err.svelte-d3ct2b{background:var(--error-bg);color:var(--error);border:1px solid var(--error)}.modal-status-row.svelte-d3ct2b{display:flex;justify-content:space-between;padding:4px 0;border-bottom:1px solid var(--surface-mid)}.modal-status-row.svelte-d3ct2b:last-child{border-bottom:none}.modal-status-label.svelte-d3ct2b{font-size:11px;color:var(--outline)}.modal-status-val.svelte-d3ct2b{font-size:11px;font-family:var(--mono);color:var(--on-surface)}.dark .modal.svelte-d3ct2b{background:var(--surface);border-color:var(--outline-var)}
@@ -7,8 +7,8 @@
7
7
  <link rel="preconnect" href="https://fonts.googleapis.com">
8
8
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
9
9
  <link href="https://fonts.googleapis.com/css2?family=Hanken+Grotesk:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;700&display=swap" rel="stylesheet">
10
- <script type="module" crossorigin src="/assets/index-BRqvIBnm.js"></script>
11
- <link rel="stylesheet" crossorigin href="/assets/index-DXXHB1Ik.css">
10
+ <script type="module" crossorigin src="/assets/index-B7gd4JQc.js"></script>
11
+ <link rel="stylesheet" crossorigin href="/assets/index-CHgjllWU.css">
12
12
  </head>
13
13
  <body>
14
14
  <div id="app"></div>
@@ -12,11 +12,11 @@ import {
12
12
  saveMemory,
13
13
  startWatch,
14
14
  updateMemory
15
- } from "./chunk-UZDALJVQ.js";
15
+ } from "./chunk-35ZWQFTO.js";
16
16
 
17
17
  // src/dashboard-server.ts
18
18
  import { createHash } from "crypto";
19
- import { createReadStream, existsSync, readFileSync, watch } from "fs";
19
+ import { createReadStream, existsSync, readFileSync, watch, writeFileSync } from "fs";
20
20
  import { createServer } from "http";
21
21
  import { basename, dirname, extname, join, normalize, relative, resolve } from "path";
22
22
  import { fileURLToPath } from "url";
@@ -85,7 +85,7 @@ function resolveDeclaredArchitectures(config, detectedFramework) {
85
85
  const declaredArchitectures = [...new Set([
86
86
  backendArchitecture,
87
87
  frontendFramework
88
- ].filter((value) => Boolean(value)))];
88
+ ].filter((value) => Boolean(value) && value !== "custom"))];
89
89
  if (declaredArchitectures.length > 0) {
90
90
  return { backendArchitecture, frontendFramework, declaredArchitectures };
91
91
  }
@@ -179,9 +179,20 @@ function buildStatsPayload() {
179
179
  files,
180
180
  topRules: topEntries(rules),
181
181
  topFiles: topEntries(files),
182
- recentViolations: stats.recentViolations ?? []
182
+ recentViolations: stats.recentViolations ?? [],
183
+ tokens: stats.tokens ?? { calls: 0, inputTokens: 0, outputTokens: 0, totalTokens: 0 },
184
+ bypasses: stats.bypasses ?? { total: 0, withReason: 0, withoutReason: 0 }
183
185
  };
184
186
  }
187
+ function broadcastStats() {
188
+ const payload = JSON.stringify({ type: "stats", stats: buildStatsPayload(), timestamp: (/* @__PURE__ */ new Date()).toISOString() });
189
+ for (const client of clients) {
190
+ try {
191
+ client.write(payload);
192
+ } catch {
193
+ }
194
+ }
195
+ }
185
196
  function redactDatabaseUrl(url) {
186
197
  if (!url) return "(not set)";
187
198
  return url.replace(/:\/\/([^:@/]+)(?::[^@/]+)?@/, "://$1:***@");
@@ -528,6 +539,53 @@ async function handleApi(req, res, url) {
528
539
  scheduleSnapshotBroadcast({ delayMs: 0, forceBaseRefresh: true });
529
540
  return;
530
541
  }
542
+ if (req.method === "POST" && url.pathname === "/api/config/model") {
543
+ const body = await readBody(req);
544
+ const provider = typeof body.provider === "string" && body.provider.trim() ? body.provider.trim() : null;
545
+ const model = typeof body.model === "string" && body.model.trim() ? body.model.trim() : null;
546
+ if (!provider && !model) {
547
+ sendJson(res, 400, { error: "provider or model is required" });
548
+ return;
549
+ }
550
+ const envPath = join(projectRoot, ".memory-core.env");
551
+ const existing = existsSync(envPath) ? readFileSync(envPath, "utf-8") : "";
552
+ let lines = existing.split("\n").filter((l) => l.trim());
553
+ if (provider) {
554
+ lines = lines.filter((l) => !l.startsWith("CHAT_PROVIDER="));
555
+ lines.push(`CHAT_PROVIDER=${provider}`);
556
+ }
557
+ if (model) {
558
+ lines = lines.filter((l) => !l.startsWith("CHAT_MODEL=") && !l.startsWith("OLLAMA_CHAT_MODEL="));
559
+ lines.push(`CHAT_MODEL=${model}`);
560
+ }
561
+ writeFileSync(envPath, lines.join("\n") + "\n", "utf-8");
562
+ reloadRuntimeEnv();
563
+ invalidateSnapshotBase();
564
+ scheduleSnapshotBroadcast({ delayMs: 0, forceBaseRefresh: true });
565
+ sendJson(res, 200, { ok: true });
566
+ return;
567
+ }
568
+ if (req.method === "POST" && url.pathname === "/api/actions/sync") {
569
+ const { spawn } = await import("child_process");
570
+ const proc = spawn("memory-core", ["sync", "--no-confirm"], { cwd: projectRoot, detached: true, stdio: "ignore" });
571
+ proc.unref();
572
+ sendJson(res, 200, { ok: true, message: "Sync started" });
573
+ return;
574
+ }
575
+ if (req.method === "POST" && url.pathname === "/api/actions/check-all") {
576
+ const { spawn } = await import("child_process");
577
+ const proc = spawn("memory-core", ["check", "--all"], { cwd: projectRoot, detached: true, stdio: "ignore" });
578
+ proc.unref();
579
+ sendJson(res, 200, { ok: true, message: "Full scan started" });
580
+ return;
581
+ }
582
+ if (req.method === "POST" && url.pathname === "/api/actions/tune") {
583
+ const { spawn } = await import("child_process");
584
+ const proc = spawn("memory-core", ["tune"], { cwd: projectRoot, detached: true, stdio: "ignore" });
585
+ proc.unref();
586
+ sendJson(res, 200, { ok: true, message: "Tune started" });
587
+ return;
588
+ }
531
589
  sendJson(res, 404, { error: "Not found" });
532
590
  } catch (err) {
533
591
  sendJson(res, 500, { error: err.message });
@@ -731,13 +789,18 @@ function startConfigWatch() {
731
789
  const reload = (filePath) => {
732
790
  if (timer) clearTimeout(timer);
733
791
  timer = setTimeout(async () => {
792
+ const fileName = filePath.split("/").pop() ?? "";
793
+ if (fileName === ".memory-core-stats.json") {
794
+ broadcastStats();
795
+ return;
796
+ }
734
797
  reloadRuntimeEnv();
735
798
  await closePool();
736
799
  invalidateSnapshotBase();
737
800
  recentEvents.push({
738
801
  type: "error",
739
802
  timestamp: (/* @__PURE__ */ new Date()).toISOString(),
740
- message: `Configuration reloaded from ${filePath.split("/").pop()}`
803
+ message: `Configuration reloaded from ${fileName}`
741
804
  });
742
805
  if (recentEvents.length > 100) recentEvents.shift();
743
806
  scheduleSnapshotBroadcast({ forceBaseRefresh: true });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@shahmilsaari/memory-core",
3
- "version": "1.0.20",
3
+ "version": "1.0.25",
4
4
  "description": "Universal AI memory core — generate AI context files from architecture profiles with RAG support",
5
5
  "homepage": "https://memory-core.shahmilsaari.my/",
6
6
  "type": "module",